21.02.2013, 17:13
Como resolver el bug del Kick(), de la 0.3x
Bueno este tutorial es muy simple, y la verdad lo habнa leнdo por allн en la secciуn de ingles, mi deseo mбs que nada es explicar en que consta el bug, y como resolverlo; aunque de verdad es muy facil.
їEn que consiste el bug?
Bueno hay un bug en la 0.3x con la funcion Kick(playerid);, el bug hace que las funciones envнadas al jugador al kickearlo (Ya sea una razon, mensaje), no llegue al jugador. Es decir, al jugador se le verнa la pantalla algo como esto.
Bueno, ahi es muy expresivo mi ejemplo, creo. Esto es importante, yo al menos no tenia idea de este bug, y tuve problemas en mi servidor con algunos molestos usuarios.
їComo resolverlo?
La verdad, es facilнsimo, lo que debemos hacer es:
Crear un timer, que retrase la patada(kick), del jugador para que este reciba el mensaje que queremos, u otro funciуn.
Ejemplo:
Bueno, mбs que claro, primero creamos una variable alojada en el mundo de MAX_PLAYERS, para poder utilizarla en un jugador especнfico. Luego de eso apreciamos el stock, que es un simple Timer almacenado en nuestra variable previa.
Ahora solo debemos definir la funcion "KickRetra"
Como se aprecia, la funcion es simple.. si el jugador esta conectado recibirб un kick. Esto soluciona el bug explicado anteriormente..
No quiero explicar mucho mбs, es lo necesario para el tutorial. Espero, que lo sepan apreciar, gracias.
Bueno este tutorial es muy simple, y la verdad lo habнa leнdo por allн en la secciуn de ingles, mi deseo mбs que nada es explicar en que consta el bug, y como resolverlo; aunque de verdad es muy facil.
їEn que consiste el bug?
Bueno hay un bug en la 0.3x con la funcion Kick(playerid);, el bug hace que las funciones envнadas al jugador al kickearlo (Ya sea una razon, mensaje), no llegue al jugador. Es decir, al jugador se le verнa la pantalla algo como esto.
Код:
Chat normal: Hola bla bla bla Chat Normal: Si muy bien bla bla bla, --- Usted ha sido kickeado razon: razon // ESTO NO LLEGA AL CLIENTE Server Closed The Connection
їComo resolverlo?
La verdad, es facilнsimo, lo que debemos hacer es:
Crear un timer, que retrase la patada(kick), del jugador para que este reciba el mensaje que queremos, u otro funciуn.
Ejemplo:
pawn Код:
new ckick[MAX_PLAYERS];
stock KickRetrasado(playerid) {
KillTimer(ckick[playerid]);
ckick[playerid] = SetTimerEx("KickRetra", 1, false, "i", playerid);
return 1;
}
Ahora solo debemos definir la funcion "KickRetra"
pawn Код:
forward KickRetra(playerid);
public KickRetra(playerid) {
if (!IsPlayerConnected(playerid)) return 1;
Kick(playerid);
return 1;
}
No quiero explicar mucho mбs, es lo necesario para el tutorial. Espero, que lo sepan apreciar, gracias.