public OnPlayerUpdate(playerid)
{
if(gIsPlayerLoggedIn[playerid])
{
new string[126], zone[126];
GetPlayer2DZone(playerid, zone, MAX_ZONE_NAME);
format(string, sizeof(string), "%s", zone);
TextDrawSetString(Locationtext[playerid], string);
if(PlayerData[playerid][AdminLevel] < 3)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(GetPlayerSpeed(playerid, true) > 200)
{
format(string, sizeof(string), "{FFFFFF} %s (%d) esta manejando a %d kmh (speedhack).", GetPlayersName(playerid), playerid, GetPlayerSpeed(playerid, true));
SendAdministratorMessage(string);
}
}
if(GetPlayerSpeed(playerid, true) > 50)
{
format(string, sizeof(string), "{FFFFFF} %s (%d) esta corriendo a %d kmh (posible cheat de vuelo).", GetPlayersName(playerid), playerid, GetPlayerSpeed(playerid, true));
SendAdministratorMessage(string);
}
}
}
return 1;
}
Buenas, tengo el siguiente codigo que funciona a la perfeccion pero hay un pequeсo problema o bien dicho varios.
pawn Код:
Otra cosa tambien es si alguien va arriba de un coche y este va a mas de 50km/h es reconocido como cheat, їcomo se podria mejorar eso? Saludos y gracias |
static bool:Avisado[MAX_PLAYERS] = false;
static RenewTime[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
if(gIsPlayerLoggedIn[playerid])
{
new string[126], zone[126];
GetPlayer2DZone(playerid, zone, MAX_ZONE_NAME);
format(string, sizeof(string), "%s", zone);
TextDrawSetString(Locationtext[playerid], string);
if(Avisado[playerid] && gettime() > RenewTime[playerid])
{
Avisado[playerid] = false;
RenewTime[playerid] = 0;
}
if(PlayerData[playerid][AdminLevel] < 3)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(GetPlayerSpeed(playerid, true) > 200 && !Avisado[playerid])
{
format(string, sizeof(string), "{FFFFFF} %s (%d) esta manejando a %d kmh (speedhack).", GetPlayersName(playerid), playerid, GetPlayerSpeed(playerid, true));
SendAdministratorMessage(string);
Avisado[playerid] = true;
RenewTime[playerid] = gettime() + (60*5);
}
}
if(GetPlayerSpeed(playerid, true) > 50 && !Avisado[playerid] && GetPlayerSurfingVehicleID(playerid) == INVALID_VEHICLE_ID)
{
format(string, sizeof(string), "{FFFFFF} %s (%d) esta corriendo a %d kmh (posible cheat de vuelo).", GetPlayersName(playerid), playerid, GetPlayerSpeed(playerid, true));
SendAdministratorMessage(string);
Avisado[playerid] = true;
RenewTime[playerid] = gettime() + (60*5);
}
}
}
return 1;
}
SetTimer("TimerDeUnMinuto",60000,true);//En OnGameModeInit
forward TimerDeUnMinuto();
public TimerDeUnMinuto()
{
foreach(new i:Player)
{
if(PlayerData[i][AdminLevel] < 3)
{
if(IsPlayerInAnyVehicle(i))
{
if(GetPlayerSpeed(i, true) > 200)
{
format(string, sizeof(string), "{FFFFFF} %s (%d) esta manejando a %d kmh (speedhack).", GetPlayersName(i), i, GetPlayerSpeed(i, true));
SendAdministratorMessage(string);
}
}
else
{
if(GetPlayerSpeed(i, true) > 50)
{
format(string, sizeof(string), "{FFFFFF} %s (%d) esta corriendo a %d kmh (posible cheat de vuelo).", GetPlayersName(i), i, GetPlayerSpeed(i, true));
SendAdministratorMessage(string);
}
}
}
}
}
Juance, eso no funcionarнa muy bien. Solo verificaria si va a mas velocidad de lo normal, cada un minuto. їY si lo ocupa justo antes y justo despues de que el timer funcione?
JustBored, ahн es cuando debes ocupar static para no declarar una variable fuera. |
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)