03/06/2020, 01:16 AM (Última modificación: 01/07/2020, 05:36 PM por Niper.-.. Edited 4 times in total.)
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(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
switch (Key) { case 1: { 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 i = 1; i <= MaxPlayers; i++) { if (is_user_connected(i)) //Bien acá esta el error. Explicare cual es. { 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 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
switch(Key) { case 1 : { 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 i = 1;i <= 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 2 : { if(is_user_connected(id)) KickMenu(id) }
case 3 : { 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.
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.
(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á
(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í
(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í
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.
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
01/07/2020, 01:14 PM (Última modificación: 01/07/2020, 01:16 PM por Hypnotize. Edited 1 time in total.)
(01/07/2020, 10:49 AM)andres_1041 escribió: Así te ahorras una línea.
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.
(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
(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ó:
(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..