01.12.2010, 20:30
(
Последний раз редактировалось blackwave; 22.01.2011 в 17:30.
)
Para que serve?
Serve para limitar a velocidade do players do server
CREDITOS:
Blackwave (eu)
OBS: So copiei a stock de um tutorial em inglкs, de um velocimetro. O resto, eu que fiz.
==================================================
Antes de comeзar, coloque no topo:
Agora, coloque no seu OnGameModeInit ou OnFilterScriptInit (GM e FS respectivamente), esse Text3D:
No OnPlayerCommandText:
E, no OnPlayerUpdate:
Dps de todas as callbacks (publics), coloque isto:
IMPORTANTE:
Nгo se esqueзa de adicionar a stock:
FIM
Serve para limitar a velocidade do players do server
CREDITOS:
Blackwave (eu)
OBS: So copiei a stock de um tutorial em inglкs, de um velocimetro. O resto, eu que fiz.
==================================================
Antes de comeзar, coloque no topo:
pawn Код:
new bool:speed_limit_is_actived = false;
#define AMARELO 0xFFFF00FF
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
pawn Код:
public OnFilterScriptInit()
{
Create3DTextLabel("RADAR!", AMARELO, 2046.52, 1302.56, 18.83, 100, 0); // 3D label do radar
// 2046.52, 1302.56, 18.83 == coordenadas | 100 a distancia de que pode ser visto | 0 = Virtual world
return 1;
}
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(speedon,7,cmdtext); // Ativar o comando de limite de speed
dcmd(speedoff,8,cmdtext); // Desativar o comando de limite de speed
return 0;
}
pawn Код:
public OnPlayerUpdate(playerid)
{
if(IsPlayerInAnyVehicle(playerid)) // Se o jogador estiver em um veiculo qualquer
{
if(IsPlayerInRangeOfPoint(playerid, 50, 2046.52, 1302.56, 18.83)) // Se estiver hб 50m do radar
{
if(speed_limit_is_actived == true) // Se o limite de velocidade estiver ativo
{
new str[128]; // String
new v; v = GetPlayerVehicleID(playerid); // String v, que define o veiculo que o player estб
new sp; sp = GetPlayerSpeed(playerid); // Obtem a velocidade do carro do player
//format(str,sizeof(str),"KM/H: %d", sp); // Formata a string com a velocidade obtida (opcinal)
if(sp >= 50) // SP = Speed. Se a velocidade for igual ou maior a 50. "Pode ser mudada"
{
GameTextForPlayer(playerid, "~g~Limite maximo antigido ~r~@", 1000, 5); // Retorna isso
RemovePlayerFromVehicle(playerid); // E isso(remove jogador do carro)
}
}
}
return 1;
}
return 1;
}
pawn Код:
dcmd_speedon(playerid,params[])
{
if(speed_limit_is_actived == true) return SendClientMessage(playerid, AMARELO, "Limite ja ativado");
else
{
speed_limit_is_actived = true; // Ativado
SoundForAll(1133);
return SendClientMessageToAll(AMARELO, "@ Limite de velocidade setado para 50km/h");
}
}
dcmd_speedoff(playerid,params[])
{
if(speed_limit_is_actived == false) return SendClientMessage(playerid, AMARELO, "Limite jб desativado. Ative-o antes");
else
{
speed_limit_is_actived == false; // Desativado
SoundForAll(1133);
return SendClientMessageToAll(AMARELO, "@ Limite de velocidade desativado!");
}
}
}
Nгo se esqueзa de adicionar a stock:
pawn Код:
stock GetPlayerSpeed(playerid)
{
new Float:ST[4];
if(IsPlayerInAnyVehicle(playerid))
GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 100.3;
return floatround(ST[3]);
}