• Страница 1 из 1
  • 1
Автомобиль для администратора
Дмитрий Дата: Пятница, 10.10.2014, 22:43 | Сообщение # 1 | Сообщить о нерабочей теме


Аватар для Дмитрий

Доброго времени суток всем просматривающим.
Быть может это можно назвать не мануалом, а готовой командой, но все же я хотел бы оставить это здесь.

Автор кода: 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!
  • Страница 1 из 1
  • 1
Поиск: