Приветствую Вас Гость
Воскресенье
07.09.2025
12:06

SAMPL - Новое поколение в индустрии SAMP

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
[Мануал] Полноценные мигалки /migalka.
Roma_BelovДата: Понедельник, 08.06.2015, 00:33 | Сообщение # 1
Рядовой
Группа: Администраторы
Сообщений: 12
Репутация: 20013
Статус: Offline
Сейчас я опишу как сделать полноценную систему мигалок для Pawno(сервера Samp).
Приступим.

4 - количество машин

Далее создаём команды для включения и выключения мигалок.
Команда включения:

Код
YCMD:fon(playerid, params[], help)
{
     new flashcar = GetPlayerVehicleID(playerid);
     if(PlayerInfo[playerid] [pLogin]== 0) return true;
     if(PlayerInfo[playerid] [pMember]!= 2)return SendClientMessage(playerid, COLOR_GREY, "Вы не агент FBI");
     if(GetPVarInt(playerid, "Status") != 0)return SendClientMessage(playerid, COLOR_GREY, "Вы уже уставливали мигалку, заберите её (( /foff ))");
     if(flashcar == fbicar[0])
     {
      if(infofbi[0] == 1) return SendClientMessage(playerid, COLOR_GREY, "На этом автомобиле уже стоит мигалка");
     infofbi[0] = 1;
     SetPVarInt(playerid, "Status", 1);
      SetPVarInt(playerid, "mig", CreateObject(18646,0,0,0,0,0,0,100.0));
      AttachObjectToVehicle(GetPVarInt(playerid, "mig"), GetPlayerVehicleID(playerid), -0.45, 0.225, 0.85, 0.0, 0.0, 0.0);
     }
     else if(flashcar == fbicar[1])
     {
     if(infofbi[1] == 1) return SendClientMessage(playerid, COLOR_GREY, "На этом автомобиле уже стоит мигалка");
     infofbi[1] = 1;
      SetPVarInt(playerid, "Status", 2);
      SetPVarInt(playerid, "mig", CreateObject(18646,0,0,0,0,0,0,100.0));
      AttachObjectToVehicle(GetPVarInt(playerid, "mig"), GetPlayerVehicleID(playerid), -0.45, 0.225, 0.85, 0.0, 0.0, 0.0);
     }
     else if(flashcar == fbicar[2])
     {
     if(infofbi[2] == 1) return SendClientMessage(playerid, COLOR_GREY, "На этом автомобиле уже стоит мигалка");
     infofbi[2] = 1;
     SetPVarInt(playerid, "Status", 3);
      SetPVarInt(playerid, "mig", CreateObject(18646,0,0,0,0,0,0,100.0));
      AttachObjectToVehicle(GetPVarInt(playerid, "mig"), GetPlayerVehicleID(playerid), -0.52, 0, 0.82, 0.0, 0.0, 0.0);
     }
     else if(flashcar == fbicar[3])
     {
     if(infofbi[3] == 1) return SendClientMessage(playerid, COLOR_GREY, "На этом автомобиле уже стоит мигалка");
     infofbi[3] = 1;
     SetPVarInt(playerid, "Status", 4);
      SetPVarInt(playerid, "mig", CreateObject(18646,0,0,0,0,0,0,100.0));
      AttachObjectToVehicle(GetPVarInt(playerid, "mig"), GetPlayerVehicleID(playerid), -0.52, 0, 0.82, 0.0, 0.0, 0.0);
     }
     else return SendClientMessage(playerid, COLOR_GREY, "Вы не в машине FBI");
     SendClientMessage(playerid, 0xFF0000AA, "Мигалка включена");
     return true;
}   

Источник: http://mmoru.com/board/showthread.php?t=407528
 



Изначально созданы проверки на принадлежность игрока к той или иной фракции.
Далее идёт проверка автомобиля в котором находится игрок, fbicar[0-1] - Sultan, fbicar[2-3] Elegy.
Ну а после в зависимости от типа авто задаются координаты мигалки.

Следующая команда выключения мигалки:

Код
YCMD:foff(playerid, params[], help)
{
     new flashcar = GetPlayerVehicleID(playerid);
     if(PlayerInfo[playerid] [pLogin]== 0) return true;
     if(PlayerInfo[playerid] [pMember]!= 2)return SendClientMessage(playerid, COLOR_GREY, "Вы не агент FBI");
     if(flashcar == fbicar[0])
     {
      if(infofbi[0] == 0) return SendClientMessage(playerid, COLOR_GREY, "На этом автомобиле нет мигалки");
     for (new i = 0; i < MAX_PLAYERS; i ++)
     {
         if (IsPlayerConnected(i) && GetPVarInt(i, "Status") == 1)
         {
               DestroyObject(GetPVarInt(i, "mig"));
               infofbi[GetPVarInt(i, "Status")-1] = 0;
              SetPVarInt(i, "Status", 0);
         }
        }
     }
     else if(flashcar == fbicar[1])
     {
      if(infofbi[1] == 0) return SendClientMessage(playerid, COLOR_GREY, "На этом автомобиле нет мигалки");
     for (new i = 0; i < MAX_PLAYERS; i ++)
     {
         if (IsPlayerConnected(i) && GetPVarInt(i, "Status") == 2)
         {
               DestroyObject(GetPVarInt(i, "mig"));
               infofbi[GetPVarInt(i, "Status")-1] = 0;
              SetPVarInt(i, "Status", 0);
         }
        }
     }
     else if(flashcar == fbicar[2])
     {
      if(infofbi[2] == 0) return SendClientMessage(playerid, COLOR_GREY, "На этом автомобиле нет мигалки");
     for (new i = 0; i < MAX_PLAYERS; i ++)
     {
         if (IsPlayerConnected(i) && GetPVarInt(i, "Status") == 3)
         {
               DestroyObject(GetPVarInt(i, "mig"));
               infofbi[GetPVarInt(i, "Status")-1] = 0;
              SetPVarInt(i, "Status", 0);
         }
        }
     }
      else if(flashcar == fbicar[3])
     {
      if(infofbi[3] == 0) return SendClientMessage(playerid, COLOR_GREY, "На этом автомобиле нет мигалки");
     for (new i = 0; i < MAX_PLAYERS; i ++)
     {
         if (IsPlayerConnected(i) && GetPVarInt(i, "Status") == 4)
         {
               DestroyObject(GetPVarInt(i, "mig"));
               infofbi[GetPVarInt(i, "Status")-1] = 0;
              SetPVarInt(i, "Status", 0);
         }
        }
     }
     else return SendClientMessage(playerid, COLOR_GREY, "Вы не в машине FBI");
     SendClientMessage(playerid, 0xFF0000AA, "Мигалка выключена");
     return true;
}   

Источник: http://mmoru.com/board/showthread.php?t=407528
 

ут ничего сложного.Изначально автомобиль проверяется на присутствие мигалки, при положительном результате путём цикла обнаруживается игрок, который эту миглаку поставил, и система снимает мигалку с автомобиля, а человеку, поставившему мигалку вновь выдаётся право ставить их на автомобиль.

Далее при унлогине игрока, поставившего мигалки, система должна снять их. 

Для этого в паблик OnPlayerDisconnect вставляем следующее условие:


Код
if(GetPVarInt(playerid, "Status") != 0)
      {
       DestroyObject(GetPVarInt(playerid, "mig"));
       infofbi[GetPVarInt(playerid, "Status")-1] = 0;
        }  

Источник: http://mmoru.com/board/showthread.php?t=407528
 

Тут всё придельно просто, если человек поставил мигалки - они снимаются.
 
  • Страница 1 из 1
  • 1
Поиск: