Биляш
Умник
AdmPanel (v0.5)
[Мануал] AdmPanel (v1.5)
Приветствую вас, ув.пользователи форума Pawno-Info. Вот решил сделать простенькую работу AdmPanel, тема подойдет для новичков. Все наверное знают, что на RLS моде, при клике никнейма любого игрока администратором, то можно выбрать действия над игроком. Так вот, я эти действия усовершенствовал.
- Режим наблюдения / Режим с помощью которого можно следить за игроком.
- Посадить игрока в Jail / Функция которая сажает игрока в Тюрьму LS на 60 минут.
- Тихое отсоединение / Скрытый кик. Игрок не узнает, что его кикнули.
- Телепортироватся к игроку / Функция с помощью которой можно телепортироватся к игроку.
- Телепортировать к себе / Функция с помощью которой можно телепортировать игрока к себе.
- Посмотреть статистику / Функция с помощью которой можно посмотреть статистику игрока.
- Тихая блокировка / Скрытый бан. Игрок не узнает, кто и за что, его забанил.
- Посадить игрока в Prison / Функция которая сажает игрока в ФортДеморган на 3 часа.
- Освободить из тюрьмы / Функция с помощью которой можно вызволить игрок из тюрьмы либо из Форт ДеМоргана.
- Уволить из организации / Функция которая увольняет игрока из организации.
- Обнулить инвентарь / Обнуляет оружие, материалы и наркотики игрока.
- Выдать все лицензии / Выдает все лицензии игроку.
- Выдать набор бомжа / Пригодится нубосервам, выдает 5кк на банковский счёт, 3кк на руки, 7 лвл и все лицензии.
Всё делал сам, единственное, что было взято, так это меню при включении режима наблюдения - /re (/atv) (Автор: CRAZY_Str)
Итак, начнём...
В public OnPlayerClickPlayer вставляете вот этот код, если на вашем моде паблик отсутствует, то просто создайте его и вставьте этот код
Теперь разберем.
if(PlayerInfo[playerid][pAdmin] >= 1) - Это проверка на админа. Тоисть, это значит, что действия над игроком через меню-таб может производить администратор 1 Админ уровня и выше.
new string[700] - Сам текст кода, в квадратных скобках указано количество символов, которые может содержать переменная.
Дальше идут сами пункты меню, их я разбирать не буду.
ShowPlayerDialog - Означает, что данное меню будет вызываться в диалоге.
1541 - Это ID диалога.
DIALOG_STYLE_LIST - Это стиль диалога. Всего их есть 4 стиля, если я не ошибаюсь.
Дальше - "Название", "1 кнопка", "2 кнопка".
К диалогам вставляете вот этот код
Case 1541 - Это вызванный ID диалога.
StartSpectate - При выборе первого пункта из меню, будет вызвана данная функция.
ShowMenuForPlayer - При вызове функции, будет ещё вызвано дополнительное меню
Delgun and ResetPlayerWeapons - Означает, что при выборе этого пункта, у игрока будет отобрано весь комплект оружия.
WantedPoints - Устанавливается уровень розыска игрока. В моем коде установлено, что при выборе данного пункта, у игрока уровень розыска будет равен - 0.
SetPlayerInterior - ID Интерьера в который будет телепортирован игрок, при выборе данного пункта.
SetPlayerPos - Означает по каким координатам игрок будет телепортирован при выборе этого пункта. Координаты в коде меняйте на свои.
PlayerInfo[ChosenPlayer[playerid]][pJailed] = 1; - В какую тюрьму будет садится игрок. В моде RLS: 1 - Тюрьма LS, 2 - Тюрьма SF, 3 - Тюрьма LV, 4 - Fort DeMorgan.
PlayerInfo[ChosenPlayer[playerid]][pJailTime] = 3600; - Время в секундах, на которое будет садится игрок.
Kick(ChosenPlayer[playerid]); - Кик игрока, который был выбран в ТАБ-меню. При том, если не поставить сообщение игроку, то этот кик будет считаться как тихий кик.
ShowStats(playerid,ChosenPlayer[playerid]); - Вызов статистики игрока, который был выбран в ТАБ-меню.
Если у вас на сервере устроено так, что лицензию на бизнес можно получить при покупке бизнеса, то в таком случае уберите строку PlayerInfo[ChosenPlayer[playerid]][pBizLic] = 1; либо поставьте значение на - 0 PlayerInfo[ChosenPlayer[playerid]][pBizLic] = 0; но, если поставите значение на 0, то когда игрок купит лицензию на бизнес, а вы ему ещё все лицензии выдадите, то лицензия у него пропадет.
PlayerInfo[ChosenPlayer[playerid]][pNaborBomja] = 1; - Нужно, чтобы администратор мог выдать набор бомжа всего один раз, а если быть точнее, то игрок может получить набор бомжа только 1 раз.
Думаю, остальное вам понятно. Если не понятно, то пишите в теме, что не понятно, я объясню.
Теперь, далее, к new'ам, вставляете...
В public OnPlayerSelectedMenuRow вставляете
Найдите строку PlayerInfo[spechp][p HP] = 100; и вставьте её без пробела, так PlayerInfo[spechp]
Где (" ", 1, 500.0, 150.0, 100.0 ); - " " название меню, писать не обязательно, остальное координаты нахождения меню.
Дальше создаете stock
И последний штрих, это сохранения набора бомжа.
В enum pInfo вставляете
В public OnPlayerConnect вставляете
В public OnPlayerRegister вставляете
В public OnPlayerUpdateRL вставляем
В public OnPlayerLogin добавляем
Вот и всё. Работа готова, пользуйтесь, кому нужна.
Пользуйтесь командой. Спасибо за внимание!! Кому, что не понятно, спрашивайте в теме, либо в мне в Личные сообщения. Если вы взяли команду, у вас возникают ошибки, то пишите в тему ошибки, которые возникают, а также пишите строки из мода в которых вибивают ошибки.
Дополняйте, спрашивайте, комментируйте, оценивайте тему - для меня это очень важно.
Постепенно буду обновлять тему. Повторюсь, что данная работа, больше всего подойдет для новичков.
Остальные мои работы, Вы можете просмотреть у меня в подписи. Спасибо за внимание!!
[Мануал] AdmPanel (v1.5)
Приветствую вас, ув.пользователи форума Pawno-Info. Вот решил сделать простенькую работу AdmPanel, тема подойдет для новичков. Все наверное знают, что на RLS моде, при клике никнейма любого игрока администратором, то можно выбрать действия над игроком. Так вот, я эти действия усовершенствовал.
Автор: Биляш
Версия: v1.5
Мод: Делалось под RLS.
Тест: На RLS. Client 0.3c (Но пойдет и на самую последнюю версию - 0.3e)
Время работы: Меньше чем 1 час.
Описание: Усовершенствованная Админ Панель по клик меню в ТАБ.
Версия: v1.5
Мод: Делалось под RLS.
Тест: На RLS. Client 0.3c (Но пойдет и на самую последнюю версию - 0.3e)
Время работы: Меньше чем 1 час.
Описание: Усовершенствованная Админ Панель по клик меню в ТАБ.
- Режим наблюдения / Режим с помощью которого можно следить за игроком.
- Посадить игрока в Jail / Функция которая сажает игрока в Тюрьму LS на 60 минут.
- Тихое отсоединение / Скрытый кик. Игрок не узнает, что его кикнули.
- Телепортироватся к игроку / Функция с помощью которой можно телепортироватся к игроку.
- Телепортировать к себе / Функция с помощью которой можно телепортировать игрока к себе.
- Посмотреть статистику / Функция с помощью которой можно посмотреть статистику игрока.
- Тихая блокировка / Скрытый бан. Игрок не узнает, кто и за что, его забанил.
- Посадить игрока в Prison / Функция которая сажает игрока в ФортДеморган на 3 часа.
- Освободить из тюрьмы / Функция с помощью которой можно вызволить игрок из тюрьмы либо из Форт ДеМоргана.
- Уволить из организации / Функция которая увольняет игрока из организации.
- Обнулить инвентарь / Обнуляет оружие, материалы и наркотики игрока.
- Выдать все лицензии / Выдает все лицензии игроку.
- Выдать набор бомжа / Пригодится нубосервам, выдает 5кк на банковский счёт, 3кк на руки, 7 лвл и все лицензии.
Всё делал сам, единственное, что было взято, так это меню при включении режима наблюдения - /re (/atv) (Автор: CRAZY_Str)
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Итак, начнём...
В public OnPlayerClickPlayer вставляете вот этот код, если на вашем моде паблик отсутствует, то просто создайте его и вставьте этот код
PHP:
{
if(PlayerInfo[playerid][pAdmin] >= 1)
{
new string[700];
format(string,sizeof(string),"[1] - Режим наблюдения (1)\n[2] - Посадить игрока в Jail на 60 минут (1)\n[3] - Тихое отсоеденение (1)\n[4] - Телепортироватся к игроку (1)\n[5] - Телепортировать игрока к себе (1)\n[6] - Посмотреть статистику игрока (1)\n[7] - Тихая блокировка (2)\n[8] - Посадить игрока в Prison на 3 часа (2)\n[9] - Освободить из Jail/Prison (2)\n[10] - Уволить игрока из организации (3)\n[11] - Обнулить инвентарь (4)\n[12] - Выдать все лицензии (5)\n[13] - Выдать набор бомжа (6)");
ShowPlayerDialog(playerid,1541,DIALOG_STYLE_LIST,"Админ панель [AdmPanel] v1.5",string,"Выбрать","Выйти");
ChosenPlayer[playerid] = clickedplayerid;
}
if(PlayerInfo[playerid][pAdmin] >= 1) - Это проверка на админа. Тоисть, это значит, что действия над игроком через меню-таб может производить администратор 1 Админ уровня и выше.
new string[700] - Сам текст кода, в квадратных скобках указано количество символов, которые может содержать переменная.
Дальше идут сами пункты меню, их я разбирать не буду.
ShowPlayerDialog - Означает, что данное меню будет вызываться в диалоге.
1541 - Это ID диалога.
DIALOG_STYLE_LIST - Это стиль диалога. Всего их есть 4 стиля, если я не ошибаюсь.
Дальше - "Название", "1 кнопка", "2 кнопка".
К диалогам вставляете вот этот код
PHP:
case 1541:
{
if(response)
{
new Float:PX,Float:PY,Float:PZ,Float:X,Float:Y,Float:Z,Float:Angle; GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle); GetPlayerPos(ChosenPlayer[playerid],PX,PY,PZ);
new ClickedPlayerName[MAX_PLAYER_NAME],pName[MAX_PLAYER_NAME]; GetPlayerName(ChosenPlayer[playerid],ClickedPlayerName,24); GetPlayerName(playerid,pName,24);
if(listitem == 0)
{
StartSpectate(playerid, ChosenPlayer[playerid]);
ShowMenuForPlayer(specmenu,playerid);
WatchingTV[playerid] = 1;
}
new Float:plocx,Float:plocy,Float:plocz;
new Float:xx,Float:yy,Float:zz;
GetPlayerPos(playerid, plocx, plocy, plocz);
GetPlayerPos(ChosenPlayer[playerid], xx, yy, zz);
if(listitem == 1)
{
format(string, sizeof(string), "[AdmCM] Вы посадили %s в тюрьму на 1 час", ClickedPlayerName);
SendClientMessage(playerid, COLOR_BLUE, string);
Delgun(ChosenPlayer[playerid]);
ResetPlayerWeapons(ChosenPlayer[playerid]);
WantedPoints[ChosenPlayer[playerid]] = 0;
SetPlayerInterior(ChosenPlayer[playerid], 6);
SetPlayerPos(ChosenPlayer[playerid],264.1425,77.4712,1001.0391);
SetPlayerFacingAngle(ChosenPlayer[playerid], 263.0160);
PlayerInfo[ChosenPlayer[playerid]][pJailed] = 1;
PlayerInfo[ChosenPlayer[playerid]][pJailTime] = 3600;
return 1;
}
if(listitem == 2)
{
format(string, sizeof(string), "[AdmCM] sKick - Игрок %s отсоеденен от сервера",ClickedPlayerName);
ABroadCast(COLOR_BLUE,string,1);
Kick(ChosenPlayer[playerid]);
}
if(listitem == 3)
{
SetPlayerPos(playerid,xx,yy+2, zz);
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(ChosenPlayer[playerid]));
SetPlayerInterior(playerid, GetPlayerInterior(ChosenPlayer[playerid]));
}
if(listitem == 4)
{
SetPlayerPos(ChosenPlayer[playerid],plocx,plocy+2, plocz);
SendClientMessage(ChosenPlayer[playerid], COLOR_GREY, "Вас телепортировал к себе администратор [НАЗВ. СЕРВЕРА]");
return 1;
}
if(listitem == 5)
{
ShowStats(playerid,ChosenPlayer[playerid]);
}
if(listitem == 6)
{
if (PlayerInfo[playerid][pAdmin] >= 2)
{
new banplay = ChosenPlayer[playerid];
format(string, sizeof(string), "[AdmCM] sBan - Игрок %s заблокирован на неопределенный срок",ClickedPlayerName);
ABroadCast(COLOR_BLUE,string,1);
PlayerInfo[banplay][pLocked] = 1;
Kick(banplay);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Функция доступна администраторам 2 ADM LEVEL и выше");
return 1;
}
}
if(listitem == 7)
{
if (PlayerInfo[playerid][pAdmin] >= 2)
{
format(string, sizeof(string), "[AdmCM] Вы посадили %s в ДеМорган на 3 часа", ClickedPlayerName);
SendClientMessage(playerid, COLOR_BLUE, string);
Delgun(ChosenPlayer[playerid]);
ResetPlayerWeapons(ChosenPlayer[playerid]);
WantedPoints[ChosenPlayer[playerid]] = 0;
SetPlayerInterior(ChosenPlayer[playerid], 0);
SetPlayerPos(ChosenPlayer[playerid],2671.7041,3446.3367,10.2910);
SetPlayerFacingAngle(ChosenPlayer[playerid], 192.1392);
PlayerInfo[ChosenPlayer[playerid]][pJailed] = 4;
PlayerInfo[ChosenPlayer[playerid]][pJailTime] = 10800;
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Функция доступна администраторам 2 ADM LEVEL и выше");
return 1;
}
}
if(listitem == 8)
{
if (PlayerInfo[playerid][pAdmin] >= 2)
{
format(string, sizeof(string), "[AdmCM] Вы освободили %s из Jail/Prison", ClickedPlayerName);
SendClientMessage(playerid, COLOR_BLUE, string);
SetPlayerInterior(ChosenPlayer[playerid], 0);
PlayerInfo[ChosenPlayer[playerid]][pJailTime] = 0;
PlayerInfo[ChosenPlayer[playerid]][pCheat] = 0;
PlayerInfo[ChosenPlayer[playerid]][pJailed] = 0;
SpawnPlayer(ChosenPlayer[playerid]);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Функция доступна администраторам 2 ADM LEVEL и выше");
return 1;
}
}
if(listitem == 10)
{
if (PlayerInfo[playerid][pAdmin] >= 4)
{
format(string, sizeof(string), "[AdmCM] Инвентарь игрока %s обнулен", ClickedPlayerName);
SendClientMessage(playerid, COLOR_BLUE, string);
PlayerInfo[ChosenPlayer[playerid]][pMats] = 0;
PlayerInfo[ChosenPlayer[playerid]][pDrugs] = 0;
Delgun(ChosenPlayer[playerid]);
ResetPlayerWeapons(ChosenPlayer[playerid]);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Функция доступна администраторам 3 ADM LEVEL и выше");
return 1;
}
}
if(listitem == 11)
{
if (PlayerInfo[playerid][pAdmin] >= 5)
{
format(string, sizeof(string), "[AdmCM] Вы выдали игроку %s комплект лицензий", ClickedPlayerName);
SendClientMessage(playerid, COLOR_BLUE, string);
PlayerInfo[ChosenPlayer[playerid]][pVodPrava] = 1;
PlayerInfo[ChosenPlayer[playerid]][pFlyLic] = 1;
PlayerInfo[ChosenPlayer[playerid]][pFishLic] = 1;
PlayerInfo[ChosenPlayer[playerid]][pBoatLic] = 1;
PlayerInfo[ChosenPlayer[playerid]][pGunLic] = 1;
PlayerInfo[ChosenPlayer[playerid]][pBizLic] = 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Функция доступна администраторам 3 ADM LEVEL и выше");
return 1;
}
}
if(listitem == 12)
{
if (PlayerInfo[playerid][pAdmin] >= 5)
{
if(PlayerInfo[playerid][pNaborBomja] == 1) return SendClientMessage(playerid, COLOR_GREY, "Игрок получал уже набор бомжа");
format(string, sizeof(string), "[AdmCM] Вы выдали игроку %s комплект лицензий", ClickedPlayerName);
SendClientMessage(playerid, COLOR_BLUE, string);
PlayerInfo[ChosenPlayer[playerid]][pVodPrava] = 1;
PlayerInfo[ChosenPlayer[playerid]][pFlyLic] = 1;
PlayerInfo[ChosenPlayer[playerid]][pFishLic] = 1;
PlayerInfo[ChosenPlayer[playerid]][pBoatLic] = 1;
PlayerInfo[ChosenPlayer[playerid]][pGunLic] = 1;
PlayerInfo[ChosenPlayer[playerid]][pBizLic] = 1;
PlayerInfo[ChosenPlayer[playerid]][pBank] += 5000000;
PlayerInfo[ChosenPlayer[playerid]][pCash] += 3000000;
PlayerInfo[ChosenPlayer[playerid]][pLevel] += 7;
PlayerInfo[ChosenPlayer[playerid]][pNaborBomja] = 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Функция доступна администраторам 3 ADM LEVEL и выше");
return 1;
}
}
if(listitem == 9)
{
if(PlayerInfo[playerid][pAdmin] >=3)
{
if (PlayerInfo[ChosenPlayer[playerid]][pMember] > 0)
{
format(string, sizeof(string), "Вы уволены из организации администратором %s", pName);
SendClientMessage(ChosenPlayer[playerid], COLOR_BLUE, string);
format(string, sizeof(string), "[AdmCM] Вы выгнали %s из организации", ClickedPlayerName);
SendClientMessage(playerid, COLOR_BLUE, string);
PlayerInfo[ChosenPlayer[playerid]][pMember] = 0;
PlayerInfo[ChosenPlayer[playerid]][pLeader] = 0;
PlayerInfo[ChosenPlayer[playerid]][pRank] = 0;
SetPlayerArmourAC(ChosenPlayer[playerid],0);
SpawnPlayer(ChosenPlayer[playerid]);
return 1;
}
}
}
}
else
{
return 1;
}
}
StartSpectate - При выборе первого пункта из меню, будет вызвана данная функция.
ShowMenuForPlayer - При вызове функции, будет ещё вызвано дополнительное меню
Delgun and ResetPlayerWeapons - Означает, что при выборе этого пункта, у игрока будет отобрано весь комплект оружия.
WantedPoints - Устанавливается уровень розыска игрока. В моем коде установлено, что при выборе данного пункта, у игрока уровень розыска будет равен - 0.
SetPlayerInterior - ID Интерьера в который будет телепортирован игрок, при выборе данного пункта.
SetPlayerPos - Означает по каким координатам игрок будет телепортирован при выборе этого пункта. Координаты в коде меняйте на свои.
PlayerInfo[ChosenPlayer[playerid]][pJailed] = 1; - В какую тюрьму будет садится игрок. В моде RLS: 1 - Тюрьма LS, 2 - Тюрьма SF, 3 - Тюрьма LV, 4 - Fort DeMorgan.
PlayerInfo[ChosenPlayer[playerid]][pJailTime] = 3600; - Время в секундах, на которое будет садится игрок.
Kick(ChosenPlayer[playerid]); - Кик игрока, который был выбран в ТАБ-меню. При том, если не поставить сообщение игроку, то этот кик будет считаться как тихий кик.
ShowStats(playerid,ChosenPlayer[playerid]); - Вызов статистики игрока, который был выбран в ТАБ-меню.
Если у вас на сервере устроено так, что лицензию на бизнес можно получить при покупке бизнеса, то в таком случае уберите строку PlayerInfo[ChosenPlayer[playerid]][pBizLic] = 1; либо поставьте значение на - 0 PlayerInfo[ChosenPlayer[playerid]][pBizLic] = 0; но, если поставите значение на 0, то когда игрок купит лицензию на бизнес, а вы ему ещё все лицензии выдадите, то лицензия у него пропадет.
PlayerInfo[ChosenPlayer[playerid]][pNaborBomja] = 1; - Нужно, чтобы администратор мог выдать набор бомжа всего один раз, а если быть точнее, то игрок может получить набор бомжа только 1 раз.
Думаю, остальное вам понятно. Если не понятно, то пишите в теме, что не понятно, я объясню.
Теперь, далее, к new'ам, вставляете...
PHP:
new Spectate[MAX_PLAYERS];
new Menu:specmenu;
new Toogle[MAX_PLAYERS];
PHP:
if(Current == specmenu)
{
new giveplayer[24],sendername[24],string[150];
GetPlayerName(Spectate[playerid], giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
switch(row)
{
case 0:
{
StartSpectate(playerid, Spectate[playerid]);
ShowMenuForPlayer(specmenu,playerid);
}
case 1:
{
new spechp = Spectate[playerid];
AnRepairVehicle(GetPlayerVehicleID(playerid));
Fuell[GetPlayerVehicleID(spechp)] = 100;
format(string, sizeof(string), "Игрок %s получил hp в кол-ве: 100 от администратора %s",giveplayer ,sendername);
ABroadCast(COLOR_GREY,string,1);
SetPlayerHealthAC(spechp, 100.0);
SetPlayerHealthAC(spechp, 100.0);
PlayerInfo[spechp][p HP] = 100;
ShowMenuForPlayer(specmenu,playerid);
}
case 2:
{
if(Toogle[Spectate[playerid]] == 0)
{
TogglePlayerControllable(Spectate[playerid], 0);
format(string, sizeof(string), "Игрок %s был заморожен администратором %s",giveplayer ,sendername);
ABroadCast(COLOR_GREY,string,1);
ShowMenuForPlayer(specmenu,playerid);
Toogle[Spectate[playerid]] = 1;
}
else
{
TogglePlayerControllable(Spectate[playerid], 1);
format(string, sizeof(string), "Игрок %s был разморожен администратором %s",giveplayer ,sendername);
ABroadCast(COLOR_GREY,string,1);
ShowMenuForPlayer(specmenu,playerid);
Toogle[Spectate[playerid]] = 0;
}
}
case 3:
{
format(string, sizeof(string), "GMtest проведен на игроке %s администратором %s",giveplayer, sendername);
ABroadCast(COLOR_GREY,string,1);
new Float:boomx, Float:boomy, Float:boomz;
GetPlayerPos(Spectate[playerid],boomx, boomy, boomz);
CreateExplosion(boomx, boomy , boomz, 5, 2);
ShowMenuForPlayer(specmenu,playerid);
}
case 4:
{
new Float:shealth;
new Float:slx, Float:sly, Float:slz;
GetPlayerHealth(Spectate[playerid], shealth);
SetPlayerHealth(Spectate[playerid], shealth-5);
GetPlayerPos(Spectate[playerid], slx, sly, slz);
SetPlayerPos(Spectate[playerid], slx, sly, slz+5);
PlayerPlaySound(Spectate[playerid], 1130, slx, sly, slz+5);
format(string, sizeof(string), "Игрок %s получил срач от администратора %s",giveplayer ,sendername);
ABroadCast(COLOR_GREY,string,1);
ShowMenuForPlayer(specmenu,playerid);
}
case 5:
{
new Float:slx, Float:sly, Float:slz;
GetPlayerName(Spectate[playerid], giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
SetPlayerHealth(Spectate[playerid], 130);
GetVehiclePos(GetPlayerVehicleID(Spectate[playerid]), slx, sly, slz);
SetVehiclePos(GetPlayerVehicleID(Spectate[playerid]), slx, sly, slz+100);
PlayerPlaySound(Spectate[playerid], 1130, slx, sly, slz+5);
format(string, sizeof(string), "Транспорт игрока %s проверен администратором %s",giveplayer ,sendername);
ABroadCast(COLOR_GREY,string,1);
ShowMenuForPlayer(specmenu,playerid);
}
case 6:
{
new playersip[150];
GetPlayerIp(Spectate[playerid],playersip,sizeof(playersip));
new bablonarykah = PlayerInfo[playerid][pCash];
new bablovbanke = PlayerInfo[playerid][pBank];
format(string,sizeof(string), "{ffffff} Nick - %s\n IP: %s\n Money: %d\n BankMoney: %d ",giveplayer,playersip,bablonarykah,bablovbanke);
ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"{bbbbbb}Информация о игроке",string,"Okay","");
ShowMenuForPlayer(specmenu,playerid);
}
case 7:
{
ShowStats(playerid,Spectate[playerid]);
ShowMenuForPlayer(specmenu,playerid);
}
case 8:
{
if (PlayerInfo[playerid][pAdmin] >= 2)
{
format(string, sizeof(string), "sKick - Игрок %s отсоеденен от сервера администратором %s",giveplayer ,sendername);
ABroadCast(COLOR_GREY,string,1);
Kick(Spectate[playerid]);
}
else
{
SendClientMessage(playerid, COLOR_YELLOW, "Функция доступна администраторам 2 ADM LEVEL и выше");
ShowMenuForPlayer(specmenu,playerid);
return 1;
}
}
case 9:
{
if (PlayerInfo[playerid][pAdmin] >= 3)
{
new banplayer = Spectate[playerid];
format(string, sizeof(string), "sBan - Игрок %s заблокирован на неопределенный срок администратором %s",giveplayer ,sendername);
ABroadCast(COLOR_GREY,string,1);
PlayerInfo[banplayer][pLocked] = 1;
Kick(banplayer);
}
else
{
SendClientMessage(playerid, COLOR_YELLOW, "Функция доступна администраторам 3 ADM LEVEL и выше");
ShowMenuForPlayer(specmenu,playerid);
return 1;
}
}
case 10:
{
StopSpectate(playerid);
Spectate[playerid] = 255;
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
}
}
}
PHP:
= 100; [/B]
Далее, в[B] public Menu()[/B] вставляете
[PHP]specmenu = CreateMenu(" ", 1, 500.0, 150.0, 100.0 );
AddMenuItem(specmenu,0,"Update");
AddMenuItem(specmenu,0,"HP = 100");
AddMenuItem(specmenu,0,"Freeze");
AddMenuItem(specmenu,0,"GMtest");
AddMenuItem(specmenu,0,"Slap");
AddMenuItem(specmenu,0,"VehSlap");
AddMenuItem(specmenu,0,"Info");
AddMenuItem(specmenu,0,"Stats");
AddMenuItem(specmenu,0,"sKick");
AddMenuItem(specmenu,0,"sBan");
AddMenuItem(specmenu,0,"Spec Off");
DisableMenuRow(specmenu, 0);
Дальше создаете stock
PHP:
stock StartSpectate(playerid, specid)
{
for(new x=0; x<GetMaxPlayers(); x++)
{
if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid)
{
AdvanceSpectate(x);
}
}
if(IsPlayerInAnyVehicle(specid))
{
SetPlayerInterior(playerid,GetPlayerInterior(specid));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specid));
gSpectateID[playerid] = specid;
gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE;
}
else
{
SetPlayerInterior(playerid,GetPlayerInterior(specid));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, specid);
gSpectateID[playerid] = specid;
gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;
}
new ping = GetPlayerPing(specid);
new Float:health;
new Float:armour;
GetPlayerHealth(specid, health);
new string[100], name[24];
GetPlayerName(specid,name,sizeof(name));
SetTimer("SpectatorOb", 1000, 0);
format(string,sizeof(string),"~n~~n~~n~~n~~n~~n~~n~~n~~n~~w~NICK: %s - ID: %d~n~HP: %.0f - AP: %.1f - PING: %d", name,specid,health,armour,ping);
GameTextForPlayer(playerid,string,10000,3);
return 1;
}
stock StopSpectate(playerid)
{
TogglePlayerSpectating(playerid, 0);
gSpectateID[playerid] = INVALID_PLAYER_ID;
gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
GameTextForPlayer(playerid,"~n~~n~~n~~n~~n~~n~~n~~n~~w~Spectator Mode Off",3000,3);
return 1;
}
В enum pInfo вставляете
PHP:
pNaborBomja,
PHP:
PlayerInfo[playerid][pNaborBomja] = 0;
PHP:
ini_setInteger(File,"NaborBomja",PlayerInfo[playerid][pNaborBomja]);
PHP:
ini_setInteger(File,"NaborBomja",PlayerInfo[playerid][pNaborBomja]);
PHP:
ini_getInteger(File,"NaborBomja",PlayerInfo[playerid][pNaborBomja]);
Примечание для модераторов: ув.Модераторы, в правилах раздела сказано вставлять префикс [Мануал], но увы, у меня его нету, по этому мне пришлось в названии темы дорисовать его. Просьба, исправить.
Пользуйтесь командой. Спасибо за внимание!! Кому, что не понятно, спрашивайте в теме, либо в мне в Личные сообщения. Если вы взяли команду, у вас возникают ошибки, то пишите в тему ошибки, которые возникают, а также пишите строки из мода в которых вибивают ошибки.
Если вам понравилась моя работа или же не понравилась, то просьба поставить оценку на сколько вам понравилась моя работа.
Чтобы поставить оценку, над темой нажмите на кнопку "Оценка этой темы" и выбирите балл от 1-го (Ужасно) до 5-ти (Отлично).
Чтобы поставить оценку, над темой нажмите на кнопку "Оценка этой темы" и выбирите балл от 1-го (Ужасно) до 5-ти (Отлично).
Дополняйте, спрашивайте, комментируйте, оценивайте тему - для меня это очень важно.
Постепенно буду обновлять тему. Повторюсь, что данная работа, больше всего подойдет для новичков.
Остальные мои работы, Вы можете просмотреть у меня в подписи. Спасибо за внимание!!
Последнее редактирование:
