[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Урок по созданию ограничителя скорости
Дата: 06.01.2011, Четверг, 13:09:41 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 225
Репутация: 255+
Сейчас я научу вас ставить ограничитель скорости . Отлично подходит для РП серверов . /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;
Дата: 06.01.2011, Четверг, 16:57:04 | Сообщение # $NUMBER
Группа: Модераторы
Сообщений: 1045
Репутация: 1112+
Mender, Сам писал?
Дата: 06.01.2011, Четверг, 17:12:50 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 667
Репутация: 1425+
Ryder_Wilson, Таких уроков куча, можно было стырить.
Дата: 06.01.2011, Четверг, 17:37:45 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 225
Репутация: 255+
Ето не я писал =) Я давно на сайте увидел засунул себе в мод а щас с мода вырезал
Дата: 07.01.2011, Пятница, 01:13:38 | Сообщение # $NUMBER
Группа: Удаленные
Сообщений:
Репутация: +
Вот! Мужик респект! Хоть у кого-то хватает смелости, если урок писал не он, признатся что писал не он.
Дата: 15.01.2011, Суббота, 09:46:25 | Сообщение # $NUMBER
Группа: Пользователи
Сообщений: 223
Репутация: 98+
спасибо за урок smile
  • Страница 1 из 1
  • 1
Поиск: