Mix Maker Fix Bug Exploit (Todos a Spec)
#1
Buenas gente, les dejo el fix del Mix Maker v10.0 del "Keys and value can't be null"(creo que es).
Bueno, esto es información totalmente educativa y sin fines malignos

Explicación
1- El jugador juan entra al servidor y selecciona el "Team Join Class Menú"(selección de models)
2- El jugador juan se queda en ese menú, por ende, jamás elige la clase de model que usará.
3- El administrador mengano esta listo para mandar el mix, por ende manda todos a spec
4- El jugador juan elige el model que antes jamás eligió, entonces el model queda en "" y hace crashear el servidor.

Bueno, ahora que sabemos como funciona, vamos a la solución.

En nuestro Mix Maker v10.0 buscaremos la siguiente función

Mix maker default
Código PHP:
public ExtraStuff_Handler(idMenuitem) {
  if (item == MENU_EXIT) {
    if (is_user_connected(id))
      OpenMixMenu(id)

    return PLUGIN_HANDLED
  
}

  new iData[6]
  new iName[64]
  new Access
  
new Callback

  menu_item_getinfo
(MenuitemAccessiData5iName63Callback)

  new Key str_to_num(iData)

  switch (Key) {
  case 1:
    {
      set_hudmessage(646464, -1.00.2110.25.00.010.1)
      show_hudmessage(0"Todos para Spec")

      for (new 1<= MaxPlayersi++) {
        if (is_user_connected(i)) //Bien acá esta el error. Explicare cual es.
        {
          set_pev(ipev_deadflagDEAD_DEAD)
          cs_set_user_team(iCS_TEAM_SPECTATOR)

          BlockClCorpse[i] = true
        
}
      }

      if (is_user_connected(id))
        Extras(id)
    }

  case 2:
    {
      if (is_user_connected(id))
        KickMenu(id)
    }

  case 3:
    {
      if (is_user_connected(id))
        BanMenu(id)
    }

  }
  menu_destroy(Menu)
  return PLUGIN_HANDLED


Bueno, como ven en el for que manda todos a spec, chequea is_user_connected pero jamás chequea si esta vivo el player.
Ahora el exploit como explique antes jamás elige el model por lo tanto jamás esta vivo!!.
Entonces, vuelve a mandarlo spec porque no chequea si esta vivo o no. Ahí esta la falla de programación. Si chequea que esta vivo, lo manda a spec, si no, va a seguir en el mismo menú de clases y cuando quiera conectarse, se conectara normal..

Mix maker fix
Código PHP:
public ExtraStuff_Handler(id,Menu,item

 if(
item == MENU_EXIT)
 {
 if(
is_user_connected(id))
 
OpenMixMenu(id)
 
 return 
PLUGIN_HANDLED
 
}
 
 new 
iData[6]
 new 
iName[64]
 new 
Access
 
new Callback
 
 menu_item_getinfo
(Menu,item,Access,iData,5,iName,63,Callback)
 
 new 
Key str_to_num(iData)
 
 switch(
Key)
 { 
 case 
:
 {
 
set_hudmessage(64,64,64,-1.0,0.21,1,0.2,5.0,0.01,0.1)
 
show_hudmessage(0,"Todos para Spec")
 
 for(new 
1;<= MaxPlayers;i++)
 {
 if(
is_user_alive(i)) //si esta conectado y vivo!!! lo manda a spec. 
 

 
set_pev(i,pev_deadflag,DEAD_DEAD)
 
cs_set_user_team(i,CS_TEAM_SPECTATOR)
 
 
 
BlockClCorpse[i] = true
 
}
 }
 
 if(
is_user_connected(id))
 
Extras(id)
 }
 
 case 
:
 {
 if(
is_user_connected(id))
 
KickMenu(id)
 }
 
 case 
:
 {
 if(
is_user_connected(id))
 
BanMenu(id)
 }
 
 }
 
menu_destroy(Menu)
 return 
PLUGIN_HANDLED

Bueno, esto fue lo que estuvimos probando, así que espero que lo metan en su mix maker e intenten hacer de esta información algo bueno para que dejen de matar el cs. Ahora sí, los amooo <3.
Responder
#2
Clave amiguero!
Responder
#3
No hace falta usar is_user_connected & is_user_alive.

Con el chequeo de alive únicamente sirve
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#4
Te indente el código con un beautifier online porque me hace doler los ojos verlo como estaba. No quedo perfecto pero mejor que antes está
[Imagen: paypalqr.png]
Responder
#5
(03/06/2020, 08:10 AM)Neeeeeeeeeel.- escribió: Te indente el código con un beautifier online porque me hace doler los ojos verlo como estaba. No quedo perfecto pero mejor que antes está

Beautifier salva! Jajajaja
Buen aporte, gracias!!
(12/03/2014, 08:11 PM)roccoxx escribió: jajajajajajajajajajajajajajajaajajajajajaajajajajajajajajajajajajajajajajajajajajajajajajajjajajjajajajajaja

todo eso elevado a la quinta potencia.
Responder
#6
(03/06/2020, 12:57 PM)acetatomil escribió: Beautifier salva! Jajajaja
Buen aporte, gracias!!
Indentar correctamente y in IDE que te ayude es lo que realmente salva!
[Imagen: paypalqr.png]
Responder
#7
(03/06/2020, 01:08 PM)Neeeeeeeeeel.- escribió: Indentar correctamente y in IDE que te ayude es lo que realmente salva!

Exactamente! Dividir y leer con buena expresión a simple vista cada bloque de código!! Más que estética, orden y progreso.
(12/03/2014, 08:11 PM)roccoxx escribió: jajajajajajajajajajajajajajajaajajajajajaajajajajajajajajajajajajajajajajajajajajajajajajajjajajjajajajajaja

todo eso elevado a la quinta potencia.
Responder
#8
(03/06/2020, 08:01 AM)RauliTop escribió: No hace falta usar is_user_connected & is_user_alive.

Con el chequeo de alive únicamente sirve

Cada vez que usas for con get_maxplayers(); es necesario si o si (al menos que quieras obtener el player) usar is_user_connected. Porque si no, si tengo 32 slots y solamente tengo 10 conectados, los otros 22 serian null. Y me devolveria todo "0". Para evitar eso, directamente obtengo los "10" conectados y listo

(03/06/2020, 08:10 AM)Neeeeeeeeeel.- escribió: Te indente el código con un beautifier online porque me hace doler los ojos verlo como estaba. No quedo perfecto pero mejor que antes está

No estaba así pero cuando edite el tema, se puso todo así Triste
Responder
#9
(03/06/2020, 04:17 PM)Niper.-. escribió: Cada vez que usas for con get_maxplayers(); es necesario si o si (al menos que quieras obtener el player) usar is_user_connected. Porque si no, si tengo 32 slots y solamente tengo 10 conectados, los otros 22 serian null. Y me devolveria todo "0". Para evitar eso, directamente obtengo los "10" conectados y listo


No estaba así pero cuando edite el tema, se puso todo así Triste
si usas alive no es necesario el connected, haz la prueba

alive ya chequea si está conectado, por lo tanto, devuelve false en aquellos que no están conectados ni vivos
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#10
Que grande!
Responder
#11
En algunos casos, el jugador puede estar muerto y en un equipo?

Código PHP:
for(new 1;<= MaxPlayers;i++)
{
 if(
is_user_connected(i) && (<= get_user_team(i) <= 2))
 { 
 
set_pev(i,pev_deadflag,DEAD_DEAD);
 
cs_set_user_team(i,CS_TEAM_SPECTATOR);
 }


Siempre me aseguro de estar en un equipo válido antes que nada.
Responder
#12
Alguno me hace el favor de compilarlo ? estoy teniendo unos cuantos problemas..
Responder
#13
(30/06/2020, 10:08 PM)Gstrigl escribió: Alguno me hace el favor de compilarlo ? estoy teniendo unos cuantos problemas..

Y si pasas los problemas? no sé solo digo...

Aquí nadie te puede pasar un binario...
No contesto mensajes de soporte. Pregunta en los foros.
Si buscas algún trabajo privado (Pago), envíame un MP.
Responder
#14
y algo asi tambien funcionaria?
Código PHP:
public allToSpect()
{
    for(new 
id 1;id <= MaxPlayers;id++)
    {
        if (
is_user_connected(id))
        {
            if(
is_user_alive(id))
            
user_kill(id);
            
            
cs_set_user_team(idCS_TEAM_SPECTATOR);
            
BlockClCorpse[id] = true
        
}
    }
    return 
PLUGIN_HANDLED;

Responder
#15
(01/07/2020, 10:33 AM)alexiways escribió: y algo asi tambien funcionaria?
Código PHP:
public allToSpect()
{
 for(new 
id 1;id <= MaxPlayers;id++)
 {
 if (
is_user_connected(id))
 {
 if(
is_user_alive(id))
 
user_kill(id);
 
 
cs_set_user_team(idCS_TEAM_SPECTATOR);
 
BlockClCorpse[id] = true
 
}
 }
 return 
PLUGIN_HANDLED;


Código PHP:
public allToSpect()
{
 for(new 
id 1;id <= MaxPlayers;id++)
 {
 if (
is_user_connected(id) && is_user_alive(id))
 {
 
user_kill(id);
 
 
cs_set_user_team(idCS_TEAM_SPECTATOR);
 
BlockClCorpse[id] = true
 
}
 }
 return 
PLUGIN_HANDLED

Así te ahorras una línea. Nothingdohere
Corazón I dream of someday being able to have your near. Corazón
[Imagen: 76561199006140497.png]
Responder
#16
(01/07/2020, 10:49 AM)andres_1041 escribió:
Código PHP:
public allToSpect()
{
 for(new 
id 1;id <= MaxPlayers;id++)
 {
 if (
is_user_connected(id) && is_user_alive(id))
 {
 
user_kill(id);
 
 
cs_set_user_team(idCS_TEAM_SPECTATOR);
 
BlockClCorpse[id] = true
 
}
 }
 return 
PLUGIN_HANDLED

Así te ahorras una línea. Nothingdohere
Eso no hace ninguna diferencia en tiempo de ejecución, la cantidad de lineas da igual lo importante son las instrucciones que se ejecutan en la CPU. Algo inteligente sería sacar is_user_connected, ya que esta implicito en is_user_alive
[Imagen: paypalqr.png]
Responder
#17
(01/07/2020, 10:49 AM)andres_1041 escribió: Así te ahorras una línea. Nothingdohere
se la ahorra y el code es otro

en el anterior si estaba vivo lo mataba pero también lo mandaba a espectador si estaba vivo o muerto, en el tuyo debe estar vivo para que lo mate y pase a espectador.
[Imagen: 76561198283253977.png]
(05/07/2018, 11:09 PM)meTaLiCroSS escribió: Esa es la diferencia, por eso no cualquier mandril puede programar
->>
(24/09/2020, 11:10 PM)☆ LaZy escribió: Te comiste un parentesis e.e
Código PHP:
while (g_damagedealt[attacker] >= (ammodamage  / (g_happytime 1))  && g_level[attacker] < MAX_NIVEL)) 

(04/05/2020, 01:26 PM)Ipolito escribió: Te ayudaria pero hablas en modo simio/uga uga y no entiendo nada de lo que decis


(16/05/2014, 08:22 AM)mongito100 escribió: Esto debería ir en tutoriales para q después un moderador/neeeeeel lo ponga en el tacho
(08/04/2020, 05:10 PM)asgasgasgasgasg escribió: bola de estupidos con retrasomental hijos de la gran puta por que putas ayudan a todo mundo y no a mi pedi un midnight dakness para zp y nadie me lo hizo malditos basuras bastardos tontos estupidos virgenes de mierda no van a conseguri nada tontos mierdaaaaaaaaaaaaaaaaaaaaaaaaaa
(26/07/2020, 12:37 AM)Hypnotize escribió: [Imagen: xdxd.png]


(26/07/2020, 07:21 PM)Ricardo01 escribió: Que problema tenés conmigo LA CONCHA DE TU MADRE.... La re mil que te parió te crees porque tenés "47" de recuperación eres todo anda hacerte coger seguramente le pagaste a alguien para que te dé reputación porque eres una basura de persona... Jamás vi una persona tan basura eh ignorante como vos...

(26/07/2020, 08:12 PM)Ricardo01 escribió: SOS pelotuda o te haces me tenés en cosas que nada que ver.... Man no tenes vida? Que estás tan aldp2 que haces todo esto? Busca una novia oh anda a pajearte un rato. Debes ser un gordo con lente que tiene poster de anime de culo virgen de mierda..

(26/07/2020, 08:25 PM)Ricardo01 escribió: Y que tiene? Lo ví me gustó y lo puse aparte? Que problema tenés conmigo si yo no te hice nada.. yo tiro post no es obligación que me ayudes... Nose que carajo te pasa conmigo. De la nada me empezaste a bardear y etc. Si tenés problema con tu familia o tu vida. agarratela con ellos no con gente que no conoces..

(26/07/2020, 11:18 PM)Ricardo01 escribió: Buena te crees porque sabes programar se crees superior pelotudo de mierda. Yo voy a crear todas las cuentas que quieras la concha de tu madre gordo virgen. Anda a mirar porno de anime. Yo te voy a insultar todo lo que quiera pelotudo... Te crees superior y crees que tenés derecho a molestar a otras personas que ni conoces... Aparte que me importa si sabes programa nadie te pide ayuda acá. Son millones no eres el único..




Responder
#18
Código PHP:
                    case :
                    {
                        
server_cmd("sv_restart 1");

                        
set_task(2.5"mandarTodosSpec"id);
                        
    
                        if(
is_user_connected(id))
                        
Extras(id)
                    }

public 
mandarTodosSpec(id)
{
    
set_hudmessage(64,64,64,-1.0,0.21,1,0.2,5.0,0.01,0.1)
    
show_hudmessage(0,"Todos para Spec")
    for(new 
1;<= MaxPlayers;i++)
    {
        if(
is_user_alive(i))
        {
            
set_pev(i,pev_deadflag,DEAD_DEAD)
            
cs_set_user_team(i,CS_TEAM_SPECTATOR)
            
            
            
BlockClCorpse[i] = true
            
        
}    
    }


(01/07/2020, 10:49 AM)andres_1041 escribió:
Código PHP:
public allToSpect()
{
 for(new 
id 1;id <= MaxPlayers;id++)
 {
 if (
is_user_connected(id) && is_user_alive(id))
 {
 
user_kill(id);
 
 
cs_set_user_team(idCS_TEAM_SPECTATOR);
 
BlockClCorpse[id] = true
 
}
 }
 return 
PLUGIN_HANDLED

Así te ahorras una línea. Nothingdohere

Te voy a poder seguir aplicando el exploit con ese metodo.

(12/06/2020, 02:11 PM)^SmileY escribió: En algunos casos, el jugador puede estar muerto y en un equipo?

Código PHP:
for(new 1;<= MaxPlayers;i++)
{
 if(
is_user_connected(i) && (<= get_user_team(i) <= 2))
 { 
 
set_pev(i,pev_deadflag,DEAD_DEAD);
 
cs_set_user_team(i,CS_TEAM_SPECTATOR);
 }


Siempre me aseguro de estar en un equipo válido antes que nada.

Lo mismo que andres.
Responder
#19
Gracias loco! funciona! dejo de caerse el servidor!
_____________________________________________________________________________
(05/08/2020, 06:47 PM)acetatomil escribió: Vos también sos trolazo por responder, y también me incluyo y el que lo lea también. Bue.

_____________________________________________________________________________
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)