Roma_Belov | Дата: Понедельник, 08.06.2015, 00:33 | Сообщение # 1 |
Рядовой
Группа: Администраторы
Сообщений: 12
Статус: 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
Тут всё придельно просто, если человек поставил мигалки - они снимаются.
|
|
| |