Дмитрий |
Дата: Пятница, 10.10.2014, 22:43 | Сообщение # 1 | Сообщить о нерабочей теме
|
Регистрация: | 03.12.2011
|
Страна: | Российская Федерация |
Репутация: |
14
|
Сообщений: | 1421 |
Награды: |
4
+
|
Статус: |
|
| Доброго времени суток всем просматривающим. Быть может это можно назвать не мануалом, а готовой командой, но все же я хотел бы оставить это здесь.
Автор кода: LAW
Предисловие. Зная моды, доступны каждому, хотелось бы отметить негативный момент - каждый из администраторов может создать немереное количество автомобилей командой /veh. Меня это всегда раздражало, ведь это есть даже на серверах с немалой репутацией.
И так, с помощью моего способа каждый администратор может создать исключительно 1 автомобиль. Также, администратор сможет установить тюнинг на созданное авто (кстати, по-этому считаю это мануалом).
1. Сперва, создадим команду. Она для YCMD: Код YCMD:veh(playerid, params[], help) { if(PlayerInfo[playerid][pAdmin] < 3) return true; if(sscanf(params, "iii", params[0], params[1], params[2])) { if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleID(playerid) == GetPVarInt(playerid, "AdminVeh")) return ShowPlayerDialog(playerid, TUNINGADMID, DIALOG_STYLE_LIST, " ", "OFF. Repair\n1. Rimshine\n2. Shadow\n3. Switch\n4. Dollar\n5. Hydraulics", "Да", "Нет"); if(!IsPlayerInAnyVehicle(playerid) && GetPVarInt(playerid, "AdminVeh")) return engine[GetPVarInt(playerid, "AdminVeh")] = false, DestroyVehicle(GetPVarInt(playerid, "AdminVeh")), DeletePVar(playerid, "AdminVeh"); SendClientMessage(playerid, -1, "Используйте: /veh [vehicleid] [colorid] [colorid]"), SendClientMessage(playerid, -1, "Подсказка: ID 487 - Maverick, ID 600 - Picador, ID 502 - Hotring A, ID 495 - Sandking, ID 519 - Shamal, ID 529 - Willard"); SendClientMessage(playerid, -1, "Подсказка: ID 522 - NRG-500"); return true; } if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleID(playerid) == GetPVarInt(playerid, "AdminVeh")) return ShowPlayerDialog(playerid, TUNINGADMID, DIALOG_STYLE_LIST, " ", "OFF. Repair\n1. Rimshine\n2. Shadow\n3. Switch\n4. Dollar\n5. Hydraulics", "Да", "Нет"); if(!IsPlayerInAnyVehicle(playerid) && GetPVarInt(playerid, "AdminVeh")) return engine[GetPVarInt(playerid, "AdminVeh")] = false, DestroyVehicle(GetPVarInt(playerid, "AdminVeh")), DeletePVar(playerid, "AdminVeh"); if(GetPVarInt(playerid, "AdminVeh")) return true; new Float:xl, Float:yl, Float:zl; GetPlayerPos(playerid, xl, yl, zl); SetPVarInt(playerid, "AdminVeh", CreateVehicle(params[0], xl, yl, zl, 90.0, params[1], params[2], 700)), Fuel[GetPVarInt(playerid, "AdminVeh")] = 90; return true; }
2. Затем, создадим возможность тюнинговать авто: Код public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case TUNINGADMID: { if(response) { if(listitem == 0) return RepairVehicle(playerid, GetPVarInt(playerid, "AdminVeh")); else if(listitem == 1) return AddVehicleComponent(GetPVarInt(playerid, "AdminVeh"), 1075); else if(listitem == 2) return AddVehicleComponent(GetPVarInt(playerid, "AdminVeh"), 1073); else if(listitem == 3) return AddVehicleComponent(GetPVarInt(playerid, "AdminVeh"), 1080); else if(listitem == 4) return AddVehicleComponent(GetPVarInt(playerid, "AdminVeh"), 1083); else if(listitem == 5) return AddVehicleComponent(GetPVarInt(playerid, "AdminVeh"), 1087); } } } return true; }
3. Уничтожаем авто при отключении от сервера: Код public OnPlayerDisconnect(playerid, reason) { if(GetPVarInt(playerid, "AdminVeh")) DestroyVehicle(GetPVarInt(playerid, "AdminVeh")); return true; }
OFF. Возможные ошибки при компиляции: Цитата 1. #define TUNINGADMID 123
2. Вместо 'Fuel' и 'engine' ставим свои переменные
3. Исправьте проверку на уровень администратора, если ошибка в 'pAdmin'
Спасибо за внимание.
From Russia With Love!
|
|
|
|