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); Дальше так же описываем функцию.
На этом подготовка закончена, приступаем к основной части.
Реализовываем.
В самом начале 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)) {
Тут важно учесть, что строка с переменой new vehicle = GetPlayerVehicleID(i);, должна быть указана один раз и в том месте где это указано в моем коде. После этого ищем public OnPlayerKeyStateChange
И в самое начало прописываем new vid = GetPlayerVehicleID(playerid); и после объявления переменных добавляем
Code
if (newkeys == 4 && IsPlayerInVehicle(playerid,vid) && !IsAVelik(vid)) {
} 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]
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