31.10.2011, 22:24
El timer por jugador estб muy al pedo, piensa que con 200 jugadores habrб 200 timers ejecutandose. Es mejor crear uno general en OnFilterScriptInit o OnGameModeInit con un bucle for para todos los jugadores, asн:
pawn Код:
for(new playerid,l=GetMaxPlayers();playerid<l;playerid++){
if(IsPlayerConnected(playerid)) // Comprobamos que estй conectado ese jugador.
{
for (new W = 0; W < 13; W++) // Hacemos un loop para cada slot de las armas.
{
GetPlayerWeaponData(playerid, W, temp_arm[W][0], temp_arm[W][1]); // Obtenemos las armas de cada slot.
if(temp_arm[W][0] != Armas[playerid][W]) // Comparamos el dato que obtuvimos con el que le dimos nosotros, si es diferente quiere decir que ese arma la sacу con algun hack/truco.
{
GetPlayerName(playerid, w_nombre, sizeof(w_nombre)); // Obtenemos el nombre del jugador.
format(w_str, sizeof(w_str), "**[AVISO]: - Revisб a %s(%i), posible cheat de armas ( /armas ). - **", w_nombre, playerid); // Hacemos el format para el string.
for(new i = 0; i < GetMaxPlayers(); i++) // Loop para todos los players
{
if(IsPlayerAdmin(i) && IsPlayerConnected(i)) // Comprobamos que sea admin y estй conectado.
{
SendClientMessage(i, COLOR_RED, w_str); // Le mandamos el mensaje.
}
}
}
if(temp_arm[W][1] > Municion[playerid][W]) // Esto es lo mismo, pero comprobamos las municiones del arma ( no explico abajo porque es lo mismo que arriba )
{
GetPlayerName(playerid, w_nombre, sizeof(w_nombre));
format(w_str, sizeof(w_str), "**[AVISO]: - Revisб a %s(%i), posible cheat de municion ( /armas ). - **", w_nombre, playerid);
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerAdmin(i) && IsPlayerConnected(i))
{
SendClientMessage(i, COLOR_RED, w_str);
}
}
}
}
}
return 1;
}