05:15
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Alcoholik  
[Tutorial] Ограничитель скорости
·Ronnie·Дата: Четверг, 13.05.2010, 04:43 | Сообщение # 1
Группа: Продвинутые
Сообщений: 47
Награды: 1
Город: Москва
Репутация: 129
Замечания: 0%
Статус:
Смысл такой: игрок пишет команду (/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
xSLiMxДата: Четверг, 13.05.2010, 07:37 | Сообщение # 2
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2163
Награды: 34
Город: Ростов - на - Дону
Репутация: 1429
Замечания: 80%
Статус:
·Ronnie·, чисто за старания +. А терь сделай так, чтобы скорость держалась пока не вырубишь. Или это и так есть)?

Quote (·Ronnie·)
Код был найден где-то на форуме sa-mp.com и доработан мной.

Похоже на Круиз Контроль кого то там

[RGS]JAGUARДата: Четверг, 13.05.2010, 07:56 | Сообщение # 3
Советчик
Группа: Продвинутые
Сообщений: 1154
Награды: 25
Город: FloatX,FloatY,FloatZ
Репутация: 291
Замечания: 40%
Статус:
xSLiMx, +1 Ну так скрипт нармальный + поставлю crazy


[/url]
Новая ICQ: 593922
RockmanДата: Четверг, 13.05.2010, 08:28 | Сообщение # 4
Постоялец
Группа: Продвинутые
Сообщений: 428
Награды: 4
Город: Нижний Новгород
Репутация: 474
Замечания: 0%
Статус:
·Ronnie·, молодец, хорошая работа хоть и не твоя.
·Ronnie·Дата: Четверг, 13.05.2010, 11:43 | Сообщение # 5
Группа: Продвинутые
Сообщений: 47
Награды: 1
Город: Москва
Репутация: 129
Замечания: 0%
Статус:
Quote (xSLiMx)
А терь сделай так, чтобы скорость держалась пока не вырубишь. Или это и так есть)?

Не понял тебя. Скорость ограничивается пока игрок не выключит ограничитель или не выйдет из машины.

Rockman, [RGS]JAGUAR, спасибо.


Сообщение отредактировал ·Ronnie· - Четверг, 13.05.2010, 11:46
ИвентДата: Четверг, 13.05.2010, 12:16 | Сообщение # 6
Местный
Группа: I'm V.I.P.
Сообщений: 610
Награды: 65
Город: ?
Замечания: 100%
Статус:
Думаю для RP серверов сойдет, лови + ;)


Банец.
CAXAPOKДата: Четверг, 13.05.2010, 16:49 | Сообщение # 7
Уверенный в себе
Группа: I'm V.I.P.
Сообщений: 203
Награды: 2
Город: Дзержинск
Репутация: 28
Замечания: 100%
Статус:
Еба кул Реально пашет + поставил!!!!
NevadДата: Четверг, 13.05.2010, 17:56 | Сообщение # 8
Новенький
Группа: Пользователи
Сообщений: 12
Награды: 1
Город: Томск
Репутация: 0
Замечания: 20%
Статус:
Хороший скрипт, хорошо все описано, себе поставил, молодец
Grigorio_SaNДата: Среда, 08.12.2010, 09:37 | Сообщение # 9
Уверенный в себе
Группа: Продвинутые
Сообщений: 208
Награды: 2
Город: Жодино
Репутация: -7
Замечания: 0%
Статус:
а для поезда этот ограничитель работает? или как его изменить чтобы поезд ехал только на одной скорости?
TURBO2Дата: Среда, 08.12.2010, 14:47 | Сообщение # 10
Уверенный в себе
Группа: Продвинутые
Сообщений: 244
Награды: 1
Город: Peter
Репутация: 223
Замечания: 40%
Статус:
спс пригодиться crazy


skype: nitrolatos
SuburbanДата: Среда, 08.12.2010, 15:07 | Сообщение # 11
Уверенный в себе
Группа: Пользователи
Сообщений: 163
Награды: 0
Город: Санкт-Петербург
Репутация: 0
Замечания: 0%
Статус:
Всё поставил, захожу в игру, разгоняю машину, пишу команду, он мне в ответ что ограничитель включён, но почему то скорость не держит. В чём может быть проблемка?
DiZiДата: Среда, 08.12.2010, 16:24 | Сообщение # 12
Местный
Группа: Продвинутые
Сообщений: 669
Награды: 2
Город: новокузнецк
Репутация: 158
Замечания: 40%
Статус:
Suburban,
Quote (Suburban)
В чём может быть проблемка

Может в том что это не "круиз-контроль"? он будет ограничивать скорость когда игрок жмет газ

Quote (Suburban)
но почему то скорость не держит

По этому поводу вот мой(не совершенный) но все же рабочий
Code

new kruiz[MAX_PLAYERS];

в public OnPlayerConnect(playerid)

Code
kruiz[playerid] = 0;

public OnPlayerCommandText(playerid, cmdtext[])

Code
if(strcmp(cmd, "/kk", true) == 0)
   {
       if(IsPlayerConnected(playerid))
       {
           GetPlayerName(playerid, sendername, sizeof(sendername));
           if(kruiz[playerid] == 0)
           {
               kruiz[playerid] = 1;
               SendClientMessage(playerid,COLOR_RED,"Вы включили круиз контроль, что бы вsключить введите /kkoff");
               format(string, sizeof(string), "* %s Нажимает кнопку и включает круиз контроль", sendername);
      ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
     }
     else
     {
         SendClientMessage(playerid,COLOR_GREY,"Круиз контроль уже антивирован");
               return 1;
     }
    }
    return 1;
   }
   if(strcmp(cmd, "/kkoff", true) == 0)
   {
       if(IsPlayerConnected(playerid))
       {
           GetPlayerName(playerid, sendername, sizeof(sendername));
           if(kruiz[playerid] == 1)
           {
               kruiz[playerid] = 0;
               SendClientMessage(playerid,COLOR_RED,"Вы выключили круиз контроль, что бы включить введите /kk");
               format(string, sizeof(string), "* %s Нажимает кнопку и выключает круиз контроль", sendername);
      ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
     }
     else
     {
         SendClientMessage(playerid,COLOR_GREY,"Круиз контроль выключен");
               return 1;
     }
    }
    return 1;
   }

в низ мода

Code
forward CarControl();
public CarControl()
{
   for(new i = 0; i < MAX_PLAYERS; i++)
   {
       if(kruiz[i] == 1)
    {
     if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
     {
         if(GetPlayerSpeed(i) <=  75)
      {
          new Float:x,Float:y,Float:z;
          GetVehicleVelocity(GetPlayerVehicleID(i),x,y,z);
       SetVehicleVelocity(GetPlayerVehicleID(i),x*1.5,y*1.5,z);
      }
     }
    }
   }
   return 1;
}

в public OnGameModeInit()

Code
SetTimer("CarControl",1000,1);



======= Мои проекты =======
[GM]Zombie Mod [Разработка][7%]
=======================


=====Мои работы=====
[FS] Auto Menu
[FS] AdminPanel






Сообщение отредактировал golden103 - Среда, 08.12.2010, 16:25
SuburbanДата: Среда, 08.12.2010, 18:25 | Сообщение # 13
Уверенный в себе
Группа: Пользователи
Сообщений: 163
Награды: 0
Город: Санкт-Петербург
Репутация: 0
Замечания: 0%
Статус:
golden103, error 017: undefined symbol "GetPlayerSpeed"

Как это исправить?

DiZiДата: Среда, 08.12.2010, 19:27 | Сообщение # 14
Местный
Группа: Продвинутые
Сообщений: 669
Награды: 2
Город: новокузнецк
Репутация: 158
Замечания: 40%
Статус:
Suburban, добавь куда нибуть

Code
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)) * 220.0 /*253.3*/;
     return floatround(ST[3]);
}



======= Мои проекты =======
[GM]Zombie Mod [Разработка][7%]
=======================


=====Мои работы=====
[FS] Auto Menu
[FS] AdminPanel




Grigorio_SaNДата: Среда, 08.12.2010, 20:08 | Сообщение # 15
Уверенный в себе
Группа: Продвинутые
Сообщений: 208
Награды: 2
Город: Жодино
Репутация: -7
Замечания: 0%
Статус:
golden103
а как сделать чтобы при вводе команды скорость никак не была большей, чем мы её зафиксировали?

  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua