SA-MP Forums Archive
[Ayuda]Como poner restricciуn si muero. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Ayuda]Como poner restricciуn si muero. (/showthread.php?tid=472846)



[Ayuda]Como poner restricciуn si muero. - marconol - 31.10.2013

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.


Re: [Ayuda]Como poner restricciуn si muero. - byNer0x - 31.10.2013

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


Respuesta: [Ayuda]Como poner restricciуn si muero. - marconol - 31.10.2013

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.


Respuesta: [Ayuda]Como poner restricciуn si muero. - byNer0x - 31.10.2013

ї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.


Respuesta: [Ayuda]Como poner restricciуn si muero. - marconol - 31.10.2013

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.


Respuesta: [Ayuda]Como poner restricciуn si muero. - byNer0x - 01.11.2013

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;
}



Respuesta: [Ayuda]Como poner restricciуn si muero. - marconol - 01.11.2013

Mil Gracias, ahora si esta resuelto.