[Ayuda]Como poner restricciуn si muero.
#1

Buenas, quisiera saber como le pongo una restricciуn a "public Comprobar(playerid)" para que cuando alguien muera no le enviй el mensaje de que usa cheat, ya que voy a cambiar el mensaje por banear.
Lo que ocurre es que cuando alguien muere, se le quitan las armas con "ClearGuns" que lo coloque en "OnPlayerDeath" en vez de "ResetPlayerWeapons" porque con el "ResetPlayerWeapons" envнa el mensaje 100% seguro.

PD: El timer para "Comprobar" es de 10 segundos, lo cual provoca que con el "Clearguns" aveces cuando muero me manda el mensaje, y aveces no.


Код:
forward Comprobar_Cheat(playerid);
public Comprobar_Cheat(playerid)
{
        if(IsPlayerConnected(playerid))
        {
                for (new W = 0; W < 13; W++)
                {
                    GetPlayerWeaponData(playerid, W, temp_arm[W][0], temp_arm[W][1]);
                        if(temp_arm[W][0] != pGun[playerid][W])
                        {
                                GetPlayerName(playerid, w_nombre, sizeof(w_nombre));
                                format(w_str, sizeof(w_str), "**[AVISO]: - Revisб a %s(%i), posible cheat. - **", w_nombre, playerid);
                                for(new i = 0; i < GetMaxPlayers(); i++)
                                {
                                        if(IsPlayerAdmin(i) && IsPlayerConnected(i))
                                        {
                                            SendClientMessage(i, COLOR_RED, w_str);
                                        }
                                }
                        }
                }
        }
        return 1;
}
Код:
public ClearGuns(playerid)
{
    for(new slot = 0; slot < 13; slot++)
    {
    	Armas[playerid][slot] = 0;
     	Municion[playerid][slot] = 0;
    }
        EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun0] = 0;
        EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun1] = 0;
	EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun2] = 0;
	EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun3] = 0;
	EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun4] = 0;
	EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun5] = 0;
	EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun6] = 0;
	EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun7] = 0;
	EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun8] = 0;
	EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun9] = 0;
	EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun10] = 0;
	EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun11] = 0;
	EntregarArma(playerid, 0, 1); PlayerInfo[playerid][pGun12] = 0;
        return 1;
}
Soy novato en esto, les agradecerнa mucho si tienen una mejor soluciуn.
Reply
#2

No me enterй de lo que quieres, їpodrнas especificar?
Reply
#3

Lo que pasa es que tengo este anticheat pero cuando morнa me detectaba que tenia cheat, el problema era que el ResetPlayerWeapons lo provocaba, entonces lo cambie por el "ClearGuns" (lo puese arriba) y ahora solo lo detecta aveces.
Reply
#4

їHas probado poner directamente lo de ClearGuns en OnPlayerDeath?

Otra opciуn es crear una variable;

Arriba del gm pones "new var[MAX_PLAYERS];" (por ejemplo)
Aсade en "OnPlayerDeath" var[playerid] = 1;

Comprobar_cheat lo pones asн:

pawn Код:
forward Comprobar_Cheat(playerid);
public Comprobar_Cheat(playerid)
{
        if(IsPlayerConnected(playerid) && var[playerid] != 1)
        {
                var[playerid] = 0;
                for (new W = 0; W < 13; W++)
                {
                    GetPlayerWeaponData(playerid, W, temp_arm[W][0], temp_arm[W][1]);
                        if(temp_arm[W][0] != pGun[playerid][W])
                        {
                                GetPlayerName(playerid, w_nombre, sizeof(w_nombre));
                                format(w_str, sizeof(w_str), "**[AVISO]: - Revisб a %s(%i), posible cheat. - **", w_nombre, playerid);
                                for(new i = 0; i < GetMaxPlayers(); i++)
                                {
                                        if(IsPlayerAdmin(i) && IsPlayerConnected(i))
                                        {
                                            SendClientMessage(i, COLOR_RED, w_str);
                                        }
                                }
                        }
                }
        }
        return 1;
}
Prueba.
Reply
#5

Si, he puesto el "ClearGuns" directamente, pero como digo, al morir aveces detecta y aveces no.
He colocado la variable, pero ocurre lo siguiente:
1.-Funciona, al tener un arma legal y luego morir, ya no dice que uso cheat.
2.-Pero, si muero y luego saco un arma con cheat no lo detecta, parece como si al morir se desactivase el anticheat.

PD: creo que si se puede hacer algo para que 1 o 2 segundos despuйs de morir se le asigne "var[playerid] = 0" funcionaria bien.
Reply
#6

Oka, borra el "var[playerid] = 0;" de Comprobar_cheat y pon un timer en OnPlayerDeath ( despuйs de var[playerid] = 1; )

pawn Код:
// Esto en OnPlayerDeath como te dije
SetTimerEx("PararVar", 1000, 0, "id", playerid);

// Esto al final del GM
forward PararVar(playerid);
public PararVar(playerid)
{
        var[playerid] = 1;
        return 1;
}
Reply
#7

Mil Gracias, ahora si esta resuelto.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)