Сейчас я научу вас ставить ограничитель скорости . Отлично подходит для РП серверов . /limiter включить /offlimiter выключить . В начало мода добавляем:
Quote
#define MAX_SPEEDO 0.4 // Максимально допустимая скорость.
#define SLOW_FACTOR 0.6 // На сколько будет сбавляться скорость при превышении порога.
forward Timer();
new Limiter[MAX_PLAYERS];
new limtimer;
В public onplayerconnect добавляем:
Quote
Limiter[playerid] = 0;
Потом добавляем паблик:
Quote
public Timer()
{
new Float:x,Float:y,Float:z,veh;
for(new i; i<MAX_PLAYERS; i++)
{
veh=GetPlayerVehicleID(i);
GetVehicleVelocity(veh,x,y,z);
if((x > MAX_SPEEDO || x < -MAX_SPEEDO) || (y > MAX_SPEEDO || y < -MAX_SPEEDO))
{
SetVehicleVelocity(veh,x*SLOW_FACTOR,y*SLOW_FACTOR,z);
}
}
}
Теперь создаем команду. В public OnPlayerCommandText добавляем:
Quote
if (strcmp("/limiter", cmdtext, true) == 0)
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(Limiter[playerid] == 0)
{
SendClientMessage(playerid,0xAA3333AA,"Ограничитель скорости включен.");
SendClientMessage(playerid,0xAA3333AA,"Что бы выключить используйте /offlimiter.");
limtimer = SetTimer("Timer",1000,1);
Limiter[playerid] = 1;
}
else
{
SendClientMessage(playerid ,COL OR_G REY, "Огр анич ител ь скорости уже включен.");
}
return 1;
}
SendClientMessage(playerid, COLOR_GRAD2, " Вы не в машине!");
return 1;
}
}
if (strcmp("/offlimiter", cmdtext, true) == 0)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(Limiter[playerid] == 1)
{
KillTimer(limtimer);
SendClientMessage(playerid,0xAA3333AA,"Ограничитель скорости выключен.");
Limiter[playerid] = 0;
return 1;
}
else
{
SendClientMessage(playerid,COL OR_G REY, "Огр анич ител ь скорости не включен.");
return 1;
}
}
SendClientMessage(playerid, COLOR_GRAD2, "Вы не в машине!");
return 1;
}
Ищем в public OnPlayerStateChange такую строчку:
Quote
if(newstate == PLAYER_STATE_ONFOOT)
{
Ниже ее добавляем:
Quote
KillTimer(limtimer);
Limiter[playerid] = 0;