[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
#2

Hahaha pense que solo a mi me pasaba, buena solucion, la usare hasta que fixeen la funcion!

Saludos.
Reply
#3

es un bug o colocan mal el Kick ?.

claro esta ke lo deben colocar debajo del mensaje al Kick.

EDIT:

es un bug, lo vi en wiki y lo testee, no me habia pasado xD.
pero es mejor la formula ke esta en wiki ----> https://sampwiki.blast.hk/wiki/Kick

pawn Код:
native KickEx(playerid, message[])
pawn Код:
forward KickPublic(playerid);
public KickPublic(playerid) return Kick(playerid);
stock KickEx(playerid, message[]) {
    SendClientMessage(playerid, -1, message);
    SetTimerEx("KickPublic", 1000, false, "d", playerid); }
EJEMPLO:
pawn Код:
#include <a_samp>
COMMAND:test(playerid, params[])
{
    KickEx(playerid, " Fuiste Kikeado!.");
    return 1;
}
Reply
#4

їLo ideaste tъ?
Reply
#5

Quote:
Originally Posted by [DOG]irinel1996
Посмотреть сообщение
їLo ideaste tъ?
Quote:
Originally Posted by CrossOv3r
y la verdad lo habнa leнdo por allн en la secciуn de ingles
Lo leeн, hace 1 semana en el foro de ingles, no recuerdo donde, ni el nombre de la persona, pero me parecнo interesante compartirlo.

PD: Ademas estaba en mi mуvil pequeсo cuando lo leeн, fue muy raro, ya ni recuerdo la seccion...
PD2: En el foro de ingles, solo daban la "Solucion" al principio, no entendia cual era el BUG, asi que lo aclaro aca
Reply
#6

Los de samp arreglan 1 y hacen 10...
Reply
#7

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Los de samp arreglan 1 y hacen 10...
TrueStory.

Saludos.
Reply
#8

ЎCon razуn! No le encontraba vueltas a mi cуdigo. їPasa lo mismo con el ban?
Reply
#9

OFF:

Quote:
Originally Posted by bytytus
Посмотреть сообщение
es un bug o colocan mal el Kick ?.

claro esta ke lo deben colocar debajo del mensaje al Kick.




On:

Me parece buena la idea aunque le colocaria 1 segundo seria un poco mejor creo yo

PD: al igual que xSDx Pense que solo a mi me pasaba
Reply
#10

Quote:
Originally Posted by jwalker
Посмотреть сообщение
ЎCon razуn! No le encontraba vueltas a mi cуdigo. їPasa lo mismo con el ban?
Solo el kick.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)