 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
[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 Ну так скрипт нармальный + поставлю
[/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%
Статус: 
| спс пригодиться
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) 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 а как сделать чтобы при вводе команды скорость никак не была большей, чем мы её зафиксировали?
|
| |
|
|
|
 |
|
 | |
| |
|