Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

/spec - Режим наблюдения

Статус
В этой теме нельзя размещать новые ответы.

Биляш

Умник
Приветствую. Вашему вниманию представляю обновленную и удобную команду /spec (/spectator, /recon, /atv).
Автор: Биляш
Версия: -
Мод: Делалось под RLS.
Тест: на RLS.
Время работы: -
Описание: Удобная команда наблюдения для админов. При включении, появляется с правой стороны меню действий над игроком.
Изначально для команды бралась тема >> /recon (Автор: CRAZy_Str - Полные авторские права принадлежат ему).
Тему создал потому, что многие просят скинуть им такой /recon как у меня...

К new'ам вставляете...
PHP:
new Spectate[MAX_PLAYERS];
new Menu:specmenu;
new Toogle[MAX_PLAYERS];
Spectate - Игрок за которым будем наблюдать.
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;
  }
В public OnPlayerSelectedMenuRow вставляете
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);
У вас должен быть stock StartSpectate и stock StopSpectate, если есть, то замените его, если нету то в public OnVehicleDamageStatusUpdate вставте
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-ти (Отлично).

Дополняйте, спрашивайте, комментируйте, оценивайте тему - для меня это очень важно.
Постепенно буду обновлять тему. Также буду следить за обстановкой в теме. Спасибо за внимание!!
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу