Биляш
Умник
Приветствую. Вашему вниманию представляю обновленную и удобную команду /spec (/spectator, /recon, /atv).
К new'ам вставляете...
Spectate - Игрок за которым будем наблюдать.
specmenu - Менюшка действий над игроком, которая будет появлятся в правой стороне.
Toogle - Заморозка игрока (Freeze/UnFreeze).
Если у вас есть команда /re, то её заменяете, если нету то в public OnPlayerCommandText вставляете
В public OnPlayerSelectedMenuRow вставляете
Это действия меню.
Примечание: Найдите строку PlayerInfo[spechp][p HP] = 100; и замените её на PlayerInfo[spechp]
У вас должен быть stock StartSpectate и stock StopSpectate, если есть, то замените его, если нету то в public OnVehicleDamageStatusUpdate вставте
Вот и всё. Пользуйтесь.
Если кому, что не понятно, то задавайте свои вопросы в этой теме либо в ЛС.
Дополняйте, спрашивайте, комментируйте, оценивайте тему - для меня это очень важно.
Постепенно буду обновлять тему. Также буду следить за обстановкой в теме. Спасибо за внимание!!
Автор: Биляш
Версия: -
Мод: Делалось под RLS.
Тест: на RLS.
Время работы: -
Описание: Удобная команда наблюдения для админов. При включении, появляется с правой стороны меню действий над игроком.
Изначально для команды бралась тема >> /recon (Автор: CRAZy_Str - Полные авторские права принадлежат ему).
Тему создал потому, что многие просят скинуть им такой /recon как у меня...
Версия: -
Мод: Делалось под RLS.
Тест: на RLS.
Время работы: -
Описание: Удобная команда наблюдения для админов. При включении, появляется с правой стороны меню действий над игроком.
Изначально для команды бралась тема >> /recon (Автор: CRAZy_Str - Полные авторские права принадлежат ему).
Тему создал потому, что многие просят скинуть им такой /recon как у меня...
К new'ам вставляете...
PHP:
new Spectate[MAX_PLAYERS];
new Menu:specmenu;
new Toogle[MAX_PLAYERS];
specmenu - Менюшка действий над игроком, которая будет появлятся в правой стороне.
Toogle - Заморозка игрока (Freeze/UnFreeze).
Если у вас есть команда /re, то её заменяете, если нету то в public OnPlayerCommandText вставляете
PHP:
if(strcmp(cmd, "/spec", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new specid;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "» {00a8ff}Используйте команду: {FFFFFF} /spec [PlayerID]");
specid = ReturnUser(tmp);
if(specid == playerid) return SendClientMessage(playerid, COLOR_GREY, "[ERROR] - Вы указали свой PlayerID, наблюдение за самим собой не возможно");
if(PlayerInfo[specid][pAdmin] >= 6) return SendClientMessage(playerid,COLOR_GREY,"[ERROR] - Вы не можете наблюдать за администрацией сервера");
if (PlayerInfo[playerid][pAdmin] >= 1)
{
if(IsPlayerConnected(specid))
{
if(GetPlayerState(specid) == PLAYER_STATE_SPECTATING && gSpectateID[specid] != INVALID_PLAYER_ID)
{
GetPlayerName(gSpectateID[specid], sendername, sizeof(sendername));
format(string, sizeof(string), "[Adm] Этот игрок наблюдает за {00a8ff}%s{ffffff} [PlayerID: {00a8ff}%d{ffffff}]", sendername,gSpectateID[specid]);
SendClientMessage(playerid, COLOR_BLUE, string);
return 1;
}
if(GetPlayerState(specid) != 1 && GetPlayerState(specid) != 2 && GetPlayerState(specid) != 3) return SendClientMessage(playerid, COLOR_GREY, " Ea?ie ia anooiee a ea?o!");
StartSpectate(playerid, specid);
Spectate[playerid] = specid;
ShowMenuForPlayer(specmenu,playerid);
}
}
}
return 1;
}
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);
}
}
}
Примечание: Найдите строку PlayerInfo[spechp][p HP] = 100; и замените её на PlayerInfo[spechp]
PHP:
= 100;[/B] так как форум распознает это как начало кода [B][ P H P ][/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);
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;
}
Примечание для модераторов: ув.Модераторы, в правилах раздела сказано вставлять префикс [C.M.D], но увы, у меня его нету, по этому мне пришлось в названии темы дорисовать его. Просьба, по возможности мне его вставить.
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Если вам понравилась моя работа или же не понравилась, то просьба поставить оценку на сколько вам понравилась моя работа.
Чтобы поставить оценку, над темой нажмите на кнопку "Оценка этой темы" и выбирите балл от 1-го (Ужасно) до 5-ти (Отлично).
Чтобы поставить оценку, над темой нажмите на кнопку "Оценка этой темы" и выбирите балл от 1-го (Ужасно) до 5-ти (Отлично).
Дополняйте, спрашивайте, комментируйте, оценивайте тему - для меня это очень важно.
Постепенно буду обновлять тему. Также буду следить за обстановкой в теме. Спасибо за внимание!!
Последнее редактирование:
