Вот выкладываю урок по созданию ограничителя скорости
И так мы начинаем
В начало мода добавляем
Code: Select all
#define MAX_SPEEDO 0.6 // Максимально допустимая скорость.
#define SLOW_FACTOR 0.9 // На сколько будет сбавляться скорость при превышении порога.
forward Timer();
new Limiter[MAX_PLAYERS];
new limtimer;
В public OnPlayerConnect добавляем
Code: Select all
Limiter[playerid] = 0;
В public OnPlayerCommandText добавляем
Code: Select all
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 добавляем
Code: Select all
if(newstate == PLAYER_STATE_ONFOOT)
{
Ниже добавляем
Code: Select all
KillTimer(limtimer);
Limiter[playerid] = 0;
Создаем новый паблик в конец мода
Code: Select all
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);
}
}
}
На этом наш урок закончен
Всем спасибо за внимание
Автор урока: KaspeR