Смысл такой: игрок пишет команду (/limiter) и когда он будет ехать в машине скорость не будет превышать определённый порог. Очень полезно для RP серверов, т.к. соблюдать разрешённую скорость вручную не удобно. В начало мода добавляем:
Code
#define MAX_SPEEDO 0.6 // Максимально допустимая скорость. #define SLOW_FACTOR 0.9 // На сколько будет сбавляться скорость при превышении порога. forward Timer(); new Limiter[MAX_PLAYERS]; new limtimer;
В public OnPlayerConnect добавляем:
Code
Limiter[playerid] = 0;
В public OnPlayerCommandText добавляем:
Code
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
if(newstate == PLAYER_STATE_ONFOOT) {
Ниже добавляем:
Code
KillTimer(limtimer); Limiter[playerid] = 0;
В конец мода добавляем:
Code
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); } } }
Вот и всё. Код был найден где-то на форуме sa-mp.com и доработан мной.
Сообщение отредактировал ·Ronnie· - Четверг, 13.05.2010, 19:02
Всё поставил, захожу в игру, разгоняю машину, пишу команду, он мне в ответ что ограничитель включён, но почему то скорость не держит. В чём может быть проблемка?