• Страница 1 из 1
  • 1
Модератор форума: [east_side]_trane, drifter-dron, valych, admin  
Форум » Pawno » Уроки » [FAQ] Двигатель, фары, бензин. (*icon-0*)
[FAQ] Двигатель, фары, бензин.
Serega_ShiniwolfДата: Среда, 02.02.2011, 12:34:28 | Сообщение # 1

Группа: Пользователи
Сообщений: 45
FAQ по созданию завода двигателя, управления фарами, учета бензина.

Здравствуйте, в этой теме я хотел бы рассказать, как сделать завод двигателя, управление фарами и учет бензина, в зависимости от того заведен двигатель или нет. Возможно, что то подобное уже обсуждалось, но моя тема рассчитана конкретно под мод Godfather, хотя легко можно приспособить и к другому моду.

Подготавливаемся.

Для начала нам нужно убедиться, что версия нашего сервера 0.3c, иначе все бесполезно.
Если с версией все в порядке, приступаем непосредственно к реализации.
Открываем наш мод в pawno, для начала нам нужно создать несколько вспомогательных функций, если их еще нет в моде.

Во-первых нам нужна функция, которая определяет по ID транспорта, велосипед это или нет. Если такой функции нет, создаем ее.
В начале мода прописываем forward IsAVelik(carid);
Затем в любом месте, главное до использования этой функции, описываем ее.

Code
public IsAVelik(carid)  
{  
     new model = GetVehicleModel(carid);  
     if(model==509||model==481||model==510)  
     {  
      return 1;  
     }  
     return 0;  
}

Аналогично можно сделать проверку для водного транспорта и воздушного.
После этого нам нужно сделать функцию, которая будет определять состояние двигателя автомобиля (заведен или нет).
Для этого опять в начале мода прописываем forward Checkengine(carid);
Дальше так же описываем функцию.
Code
public CheckEngine(carid)  
{  
       new engine, lights, alarm, doors, bonnet, boot, objective;  
       GetVehicleParamsEx(carid, engine, lights, alarm, doors, bonnet, boot, objective);  
        if(engine){  
         return 1;  
        }  
     else { return 0; }  
}

На этом подготовка закончена, приступаем к основной части.

Реализовываем.

В самом начале public OnGameModeInit() прописываем ManualVehicleEngineAndLights();
Данная функция делает выключенными двигатель и фары, когда игрок садится в машину.
Но тут есть небольшая проблема, двигатель и фары действительно выключены, но если получить параметры автомобиля, то результаты будут такие, как будто двигатель и фары включены. Поэтому в том же паблике после того как объявлены автомобили мода, добавляем следующий цикл:

Code
for(new i = 0 ; i<99 ; i ++)  
     {  
       if(!IsAVelik(i)) {  
       SetVehicleParamsEx(i,false,false,false,false,false,false,false);  
       }  
       else {  
       SetVehicleParamsEx(i,true,false,false,false,false,false,false); }  

     }

Вместо 99, пишем количество машин в моде. Данный цикл устанавливает выключенными двигатель и фары у всего транспорта в моде, кроме велосипедов. Аналогично можно проверять водный транспорт и воздушный. Кстати, если в моде у вас есть команда, которая респавнит все машины, то этот же цикл нужно добавить в тело этой команды.

Далее делаем так, что бензин не заканчивается если двигатель выключен.
Ищем public CheckGas() и первая часть этой функции должны выглядеть так:

Code
public CheckGas()  
{  
new string[256];  
new vehicle = GetPlayerVehicleID(i);  
for(new i=0;i<MAX_PLAYERS;i++)  
{  
if(IsPlayerConnected(i))  
{  

if(GetPlayerState(i) == PLAYER_STATE_DRIVER && !IsAVelik(vehicle) && CheckEngine(vehicle))  
{  

if(Gas[vehicle] >= 1)  
{

Тут важно учесть, что строка с переменой new vehicle = GetPlayerVehicleID(i);, должна быть указана один раз и в том месте где это указано в моем коде. После этого ищем public OnPlayerKeyStateChange

И в самое начало прописываем new vid = GetPlayerVehicleID(playerid); и после объявления переменных добавляем

Code
if (newkeys == 4 && IsPlayerInVehicle(playerid,vid) && !IsAVelik(vid))  
     {  
          
            new engine,lights,alarm,doors,bonnet,boot,objective;  
            GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);  
            if(engine){SetVehicleParamsEx(vid,false,lights,alarm,doors,bonnet,boot,objective);  
            format(string, sizeof(string), "* %s заглушил двигатель.",name);  
           ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);  
      }  
            else if(!engine){SetVehicleParamsEx(vid,true,true,alarm,doors,bonnet,boot,objective);  
            format(string, sizeof(string), "* %s завел двигатель.",name);  
           ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);  
      }  
                          
     }  
     if (newkeys == 1 && IsPlayerInVehicle(playerid,GetPlayerVehicleID(playerid)) && !IsAVelik(vid))  
     {  
          
      new engine,lights,alarm,doors,bonnet,boot,objective;  
      GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);  
            if(lights){SetVehicleParamsEx(vid,engine,false,alarm,doors,bonnet,boot,objective);}  
            else if(!lights){SetVehicleParamsEx(vid,engine,true,alarm,doors,bonnet,boot,objective);}  
         
     }

Таким образом мы реализовали завод и заглушение двигателя на клавишу "Огонь" ( у меня ЛКМ и ALT ) и управление фарами на клавишу "Вторичный огонь" ( у меня CTRL ) причем фары включаются, как днем так и ночью ...
На этом урок закончен) :) :) :)


[color=red][i][b]Мои Разроботки![/b][/i][/color]
[b][i][FS] Just Click Admin 3 %100
[GM] Original Gangster Life v.2.7.9 %100
[GM] Game World v.1.0.0 %32[/i][/b]
 
СообщениеFAQ по созданию завода двигателя, управления фарами, учета бензина.

Здравствуйте, в этой теме я хотел бы рассказать, как сделать завод двигателя, управление фарами и учет бензина, в зависимости от того заведен двигатель или нет. Возможно, что то подобное уже обсуждалось, но моя тема рассчитана конкретно под мод Godfather, хотя легко можно приспособить и к другому моду.

Подготавливаемся.

Для начала нам нужно убедиться, что версия нашего сервера 0.3c, иначе все бесполезно.
Если с версией все в порядке, приступаем непосредственно к реализации.
Открываем наш мод в pawno, для начала нам нужно создать несколько вспомогательных функций, если их еще нет в моде.

Во-первых нам нужна функция, которая определяет по ID транспорта, велосипед это или нет. Если такой функции нет, создаем ее.
В начале мода прописываем forward IsAVelik(carid);
Затем в любом месте, главное до использования этой функции, описываем ее.

Code
public IsAVelik(carid)  
{  
     new model = GetVehicleModel(carid);  
     if(model==509||model==481||model==510)  
     {  
      return 1;  
     }  
     return 0;  
}

Аналогично можно сделать проверку для водного транспорта и воздушного.
После этого нам нужно сделать функцию, которая будет определять состояние двигателя автомобиля (заведен или нет).
Для этого опять в начале мода прописываем forward Checkengine(carid);
Дальше так же описываем функцию.
Code
public CheckEngine(carid)  
{  
       new engine, lights, alarm, doors, bonnet, boot, objective;  
       GetVehicleParamsEx(carid, engine, lights, alarm, doors, bonnet, boot, objective);  
        if(engine){  
         return 1;  
        }  
     else { return 0; }  
}

На этом подготовка закончена, приступаем к основной части.

Реализовываем.

В самом начале public OnGameModeInit() прописываем ManualVehicleEngineAndLights();
Данная функция делает выключенными двигатель и фары, когда игрок садится в машину.
Но тут есть небольшая проблема, двигатель и фары действительно выключены, но если получить параметры автомобиля, то результаты будут такие, как будто двигатель и фары включены. Поэтому в том же паблике после того как объявлены автомобили мода, добавляем следующий цикл:

Code
for(new i = 0 ; i<99 ; i ++)  
     {  
       if(!IsAVelik(i)) {  
       SetVehicleParamsEx(i,false,false,false,false,false,false,false);  
       }  
       else {  
       SetVehicleParamsEx(i,true,false,false,false,false,false,false); }  

     }

Вместо 99, пишем количество машин в моде. Данный цикл устанавливает выключенными двигатель и фары у всего транспорта в моде, кроме велосипедов. Аналогично можно проверять водный транспорт и воздушный. Кстати, если в моде у вас есть команда, которая респавнит все машины, то этот же цикл нужно добавить в тело этой команды.

Далее делаем так, что бензин не заканчивается если двигатель выключен.
Ищем public CheckGas() и первая часть этой функции должны выглядеть так:

Code
public CheckGas()  
{  
new string[256];  
new vehicle = GetPlayerVehicleID(i);  
for(new i=0;i<MAX_PLAYERS;i++)  
{  
if(IsPlayerConnected(i))  
{  

if(GetPlayerState(i) == PLAYER_STATE_DRIVER && !IsAVelik(vehicle) && CheckEngine(vehicle))  
{  

if(Gas[vehicle] >= 1)  
{

Тут важно учесть, что строка с переменой new vehicle = GetPlayerVehicleID(i);, должна быть указана один раз и в том месте где это указано в моем коде. После этого ищем public OnPlayerKeyStateChange

И в самое начало прописываем new vid = GetPlayerVehicleID(playerid); и после объявления переменных добавляем

Code
if (newkeys == 4 && IsPlayerInVehicle(playerid,vid) && !IsAVelik(vid))  
     {  
          
            new engine,lights,alarm,doors,bonnet,boot,objective;  
            GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);  
            if(engine){SetVehicleParamsEx(vid,false,lights,alarm,doors,bonnet,boot,objective);  
            format(string, sizeof(string), "* %s заглушил двигатель.",name);  
           ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);  
      }  
            else if(!engine){SetVehicleParamsEx(vid,true,true,alarm,doors,bonnet,boot,objective);  
            format(string, sizeof(string), "* %s завел двигатель.",name);  
           ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);  
      }  
                          
     }  
     if (newkeys == 1 && IsPlayerInVehicle(playerid,GetPlayerVehicleID(playerid)) && !IsAVelik(vid))  
     {  
          
      new engine,lights,alarm,doors,bonnet,boot,objective;  
      GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);  
            if(lights){SetVehicleParamsEx(vid,engine,false,alarm,doors,bonnet,boot,objective);}  
            else if(!lights){SetVehicleParamsEx(vid,engine,true,alarm,doors,bonnet,boot,objective);}  
         
     }

Таким образом мы реализовали завод и заглушение двигателя на клавишу "Огонь" ( у меня ЛКМ и ALT ) и управление фарами на клавишу "Вторичный огонь" ( у меня CTRL ) причем фары включаются, как днем так и ночью ...
На этом урок закончен) :) :) :)

Автор - Serega_Shiniwolf
Дата добавления - 02.02.2011 в 12:34:28
DeinikДата: Воскресенье, 20.03.2011, 09:59:15 | Сообщение # 2

Группа: Пользователи
Сообщений: 16
а хде заправки?
 
Сообщениеа хде заправки?

Автор - Deinik
Дата добавления - 20.03.2011 в 09:59:15
adminДата: Воскресенье, 20.03.2011, 12:32:04 | Сообщение # 3

Группа: Администраторы
Сообщений: 3869
Deinik, ну помойму как стандартно заправки стоят поставь и посмотри:)


zm-jail.ru

Разработка сайта samp-pawno.ru


 
СообщениеDeinik, ну помойму как стандартно заправки стоят поставь и посмотри:)

Автор - admin
Дата добавления - 20.03.2011 в 12:32:04
Artur-1990Дата: Воскресенье, 03.04.2011, 00:23:58 | Сообщение # 4

Группа: Пользователи
Сообщений: 34
класс спасибо
 
Сообщениекласс спасибо

Автор - Artur-1990
Дата добавления - 03.04.2011 в 00:23:58
[east_side]_traneДата: Вторник, 12.04.2011, 20:33:30 | Сообщение # 5

Группа: Пользователи
Сообщений: 443
ммм) пригодилось спс

Pawn скриптер
Мои услуги по оптимизации
 
Сообщениеммм) пригодилось спс

Автор - [east_side]_trane
Дата добавления - 12.04.2011 в 20:33:30
PPДата: Четверг, 11.08.2011, 12:05:08 | Сообщение # 6

Группа: Пользователи
Сообщений: 25
Code
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(6) : error 010: invalid function or declaration
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(198) : warning 217: loose indentation
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(198) : error 017: undefined symbol "string"
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(198) : error 017: undefined symbol "string"
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(198) : error 029: invalid expression, assumed zero
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(198) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664     Copyright (c) 1997-2006, ITB CompuPhase

5 Errors.


Code
строки:

6: forvard CheckGas();
198:            format(string, sizeof(string), "* %s заглушил двигатель.",name);


Что делать?
 
Сообщение
Code
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(6) : error 010: invalid function or declaration
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(198) : warning 217: loose indentation
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(198) : error 017: undefined symbol "string"
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(198) : error 017: undefined symbol "string"
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(198) : error 029: invalid expression, assumed zero
C:\Users\Дамир\Desktop\Работы\BlackRose.pwn(198) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664     Copyright (c) 1997-2006, ITB CompuPhase

5 Errors.


Code
строки:

6: forvard CheckGas();
198:            format(string, sizeof(string), "* %s заглушил двигатель.",name);


Что делать?

Автор - PP
Дата добавления - 11.08.2011 в 12:05:08
loninДата: Четверг, 11.08.2011, 20:17:06 | Сообщение # 7

Группа: Пользователи
Сообщений: 1
Quote (PP)
строки: 6: forvard CheckGas(); 198:            format(string, sizeof(string), "* %s заглушил двигатель.",name);

У вас слово "forvard" написано не верно! Нужно вот так "forward"
 
Сообщение
Quote (PP)
строки: 6: forvard CheckGas(); 198:            format(string, sizeof(string), "* %s заглушил двигатель.",name);

У вас слово "forvard" написано не верно! Нужно вот так "forward"

Автор - lonin
Дата добавления - 11.08.2011 в 20:17:06
EroGevДата: Суббота, 17.02.2018, 10:18:56 | Сообщение # 8

Группа: Пользователи
Сообщений: 2
Скажите пожалуйста,
как менять кнопка для завод двигателя?
 
СообщениеСкажите пожалуйста,
как менять кнопка для завод двигателя?

Автор - EroGev
Дата добавления - 17.02.2018 в 10:18:56
Форум » Pawno » Уроки » [FAQ] Двигатель, фары, бензин. (*icon-0*)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка страницы, займет меньше минуты...
Загрузка...

Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
Система телефонов поломалась
Не в себе
фильм скалайн
Трансформеры 3
форсаж 6
Ищу [FS]Для админок на сервер
нужны координаты карты для отметки зон...
Помогите найти мод
pawno урок автоматические ворота
обращение к скриптерам.
Вопросы по скриптингу
Ваши ошибки при компиляции GM/FS

Вопросы по скриптингу

(1081)

Считаем до 1000

(274)

Ваши ошибки при компиляция gm

(260)

Набор в команду

(80)

Ваши ошибки при компиляции GM/FS

(71)

вопроосы по скриптингу от 22.04.2013

(64)

Баннеробмен

(64)

несколько команд на samp 0.3 c

(64)

Оценки сайта samp-pawno.ru

(55)

Заказ хостинга

(51)

Набор в команду(форум)

(45)

Урок №61 по созданию системы авто для GodFather

(45)

admin

(3869)

[east_side]_trane

(443)

TWiX

(316)

valych

(501)

drifter-dron

(477)

danik_rok

(317)

Dimka_71rus

(360)

Drifter96

(300)

MaNb9K

(220)

[MTA]MaPeR5518

(181)

Dima_Tkach

(107)

Nik_Ull

(184)

system32xzxz

(Четверг 09:25:24)

torbin169

(Суббота 23:09:29)

kuchuk_00

(Суббота 17:10:14)

artem_boyko_3

(Суббота 15:57:37)

greggelbak

(Среда 18:29:37)

vladisvlavs

(Среда 13:51:57)

add02102002

(Понедельник 22:37:15)

Диман221

(Понедельник 18:12:45)

almas051004

(Воскресенье 11:05:32)

megasuccessms

(Суббота 14:15:36)

nawe

(Пятница 22:25:23)

swoysb

(Пятница 14:55:29)

Вверх
07:04:59
ОбновитьСмайлыУправление мини-чатом
ЧАТ-PAWNO
2010-2024

vkontakte :samp-pawno.ru: