Путешествовал по разным серверам, увидел довольно хорошую систему аренды транспорта и решил сделать похожую.
В этой теме я расскажу, как можно создать не большую систему аренды транспорта (Любого, которого вы создадите вместо 462 [скутер], но при этом координаты тоже изменяйте.)
Приступим.
К new`ам добавляем это:
new arendacar[13]; // [13] - кол-во транспорта, считая с 0.
Создаем в enum pInfo новое значение:
pArendaCar,
Теперь нужно чтобы наше значение сохранялось, для этого нажимаем сочетание клавиш CTRL+F и ищем эти строки(проще говоря, сис-му сохранения аккаунтов):
ini_setInteger(File," ini_getInteger(File,"
и дописываем в конец каждой это:
ini_setInteger(File,"pArendaCar",PINFO[playerid][pArendaCar]); ini_getInteger(File,"pArendaCar",PINFO[playerid][pArendaCar]);
Теперь создаем case в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
case 137:
{
if(!response) return 1;
PINFO[playerid][pCash] -= 5000; // pCash - значение денег, заменять на свое.
PINFO[playerid][pArendaCar] = 1; // данная функция нужна для проверки
GameTextForPlayer(playerid, "~w~-5000", 3000, 4); // создает текст на экране
ApplyAnimation(playerid, "INT_SHOP", "shop_pay", 4.1, 0, 0, 0, 0,0,1); // создает анимацию передачи денег
return SendClientMessage(playerid,COLOR_WHITE,"{73B461}[Информация] {FFFFFF}Вы взяли скутер в аренду на 1 час.");
}
Затем ищем в своем моде сис-му, в которой выдается уровень игроку, деньги и т.п, и добавляем это (можно добавить и в public OnPlayerSpawn(playerid)):
PINFO[playerid][pArendaCar] = 0;
Теперь в public OnPlayerStateChange(playerid, newstate, oldstate) добавляем это (проверка):
if(newcar >= arendacar[0] && newcar <= arendacar[12])
{
if(PINFO[playerid][pArendaCar] == 1) { }
else { SCM(playerid, COLOR_WHITE, "{B22222}[Информация] {FFFFFF}Арендуйте скутер у стоящего рядом человека!"); RemovePlayerFromVehicleAC(playerid); // выкидываем игрока из т/с (заменить на свое)
}
}
Теперь ищем свою систему PayDay и добавляем это:
PINFO[i][pArendaCar] = 0; // обнуляет значение после PD (чтобы арендовать скутер снова.)
Теперь создаем сам транспорт для аренды (можно найти через CTRL+F и вписать = AddStaticVehicle):
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Аренда Вокзал ЛС~~~~~~~~~~~~~~~~~~~~~~~~~~
arendacar[0] = AddStaticVehicle(462, 1138.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[1] = AddStaticVehicle(462, 1137.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[2] = AddStaticVehicle(462, 1136.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[3] = AddStaticVehicle(462, 1135.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[4] = AddStaticVehicle(462, 1134.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[5] = AddStaticVehicle(462, 1133.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[6] = AddStaticVehicle(462, 1132.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[7] = AddStaticVehicle(462, 1131.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[8] = AddStaticVehicle(462, 1130.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[9] = AddStaticVehicle(462, 1129.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[10] = AddStaticVehicle(462, 1128.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[11] = AddStaticVehicle(462, 1127.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
arendacar[12] = AddStaticVehicle(462, 1126.07, -1754.38, 13.58, 0.0000, 1, 1); // (id,x,y,z,r,цвет_1,цвет_2);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Теперь в public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) создаем это:
if(newkeys == KEY_YES)//Актер для аренды транспорта на спавне
{
if(IsPlayerInRangeOfPoint(playerid,3,1138.8461,-1750.8062,13.5703))
{
SPD(playerid,137,DIALOG_STYLE_MSGBOX,"{FF6F00}Аренда скутера","{FFFFFF}Информация:\n\n- Стоимость аренды скутера: 5.000$\n- Аренда на 1 час\n\n- Вы согласны?","Согласен","Отмена");
}
}
Теперь в public OnGameModeInit() добавляем это:
Create3DTextLabel("{FFFFFF}Чтобы арендовать транспорт\n нажмите {73B461}[Y]",COLOR_WHITE,1138.8461,-1750.8062,13.5703,7.0,0,1);
Ну и остался последний штрих. В public OnGameModeInit() добавляем:
CreateActor(189, 1138.8461,-1750.8062,13.5703,3.7617);
Давайте разберемся,что означает каждый параметр.
CreateActor - это сама функция спавна актера. 189 - это id скина актера. 1138.8461,-1750.8062,13.5703,3.7617 - это координаты актера, то есть X,Y,Z,R (вроде обозначается буквой R - это угол поворота).
Вот и всё. Вся наша система аренды, с помощью которой можно арендовать абсолютно любой транспорт. Можно еще чтобы при каждой аренде, деньги за аренду, а именно 5000$, начислялись в банк Мэрии, так будет более РПшней
Автор: Я.
P.s Делал по своему принципу (на счет pArendaCar), так что "Ко-Ко-Ко" мне тут не нужно. Идите лесом.
PINFO - PlayerInfo
Если у кого-нибудь возникнут какие-либо вопросы/проблемы, пишите всё под этот пост. Помогу.
Скриншоты(как всегда):
На скриншотах показан некоторый маппинг, я о заборах, если нужно, я отредактирую тему и добавлю маппинг.




Вход
Регистрация
Помощь














