[Tutorial] Simple - Fix del bug Kick() 0.3.x
#1

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.

Код:
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
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:
pawn Код:
new ckick[MAX_PLAYERS];

stock KickRetrasado(playerid) {
    KillTimer(ckick[playerid]);
    ckick[playerid] = SetTimerEx("KickRetra", 1, false, "i", playerid);
    return 1;
}
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"
pawn Код:
forward KickRetra(playerid);
public KickRetra(playerid) {
    if (!IsPlayerConnected(playerid)) return 1;
    Kick(playerid);
    return 1;
}
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.
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)