Аня 0 Опубликовано 3 января, 2019 Объясню в крациях в чём проблема. Есть команда /recon - следить за игроком с - 1 лвла администратора. И 1 лвл администратора может следить за ст.администраторами, но при это в коде вставила что нельзя, но я как понимаю мод не воспринимает его. Почему? можно ли как то запретить админу следить за админами вообще? if(strcmp(cmd, "/re", true) == 0||strcmp(cmd, "/recon", true) == 0) { if(IsPlayerConnected(playerid)) { if(AdminLog[playerid] != 1) return SendClientMessage(playerid,COLOR_FADE1,ADMINLOG); if(PlayerInfo[giveplayerid][pAdmin] >= 12)return SendClientMessage(playerid, COLOR_GREY, "Вы не можете следить за администратором высокого уровня!"); if(IsPlayerConnected(playerid)) if (PlayerInfo[playerid][pAdmin] >= 1||PlayerInfo[playerid][pModerators] >= 1) tmp = adminspec_strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "Используйте: /re(con) [playerid]"); return true; } specplayerid = strval(tmp); if(!IsPlayerConnected(specplayerid)) { SendClientMessage(playerid, COLOR_RED,OFFLINE); return true; } if(IsPlayerInAnyVehicle(specplayerid)) { SetPlayerInterior(playerid,GetPlayerInterior(specplayerid)); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specplayerid)); TogglePlayerSpectating(playerid, 1); PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specplayerid)); gSpectateID[playerid] = specplayerid; gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE; } else { SetPlayerInterior(playerid,GetPlayerInterior(specplayerid)); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specplayerid)); TogglePlayerSpectating(playerid, 1); PlayerSpectatePlayer(playerid, specplayerid); gSpectateID[playerid] = specplayerid; gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER; } new ping = GetPlayerPing(specplayerid); new Float:health; new Float:armour; GetPlayerHealth(specplayerid, health); new name[24]; GetPlayerName(specplayerid,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,specplayerid,health,armour,ping); GameTextForPlayer(playerid,string,10000,3); } return 1; } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
#Storm 29 Опубликовано 3 января, 2019 (изменено) Вроде бы должно быть так : if(PlayerInfo[targetid][pAdmin] >= 12)return SendClientMessage(playerid, COLOR_GREY, "Вы не можете следить за администратором высокого уровня!"); И почему у Вас проверка на админа стоит почти в конце? Изменено 3 января, 2019 пользователем Swile Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Аня 0 Опубликовано 3 января, 2019 Изменила выдаётся ошибка типа "откуда targetid" взялсяТак же поставила проверку на администратора выше. if(strcmp(cmd, "/re", true) == 0||strcmp(cmd, "/recon", true) == 0) { if(IsPlayerConnected(playerid)) { if (PlayerInfo[playerid][pAdmin] >= 1||PlayerInfo[playerid][pModerators] >= 1) if(AdminLog[playerid] != 1) return SendClientMessage(playerid,COLOR_FADE1,ADMINLOG); if(PlayerInfo[targetid][pAdmin] >= 12)return SendClientMessage(playerid, COLOR_GREY, "Вы не можете следить за администратором Высокого Уровня!"); if(IsPlayerConnected(playerid)) tmp = adminspec_strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /re(con) [playerid]"); return true; } specplayerid = strval(tmp); if(!IsPlayerConnected(specplayerid)) { SendClientMessage(playerid, COLOR_RED,OFFLINE); return true; } if(IsPlayerInAnyVehicle(specplayerid)) { SetPlayerInterior(playerid,GetPlayerInterior(specplayerid)); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specplayerid)); TogglePlayerSpectating(playerid, 1); PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specplayerid)); gSpectateID[playerid] = specplayerid; gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE; } else { SetPlayerInterior(playerid,GetPlayerInterior(specplayerid)); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specplayerid)); TogglePlayerSpectating(playerid, 1); PlayerSpectatePlayer(playerid, specplayerid); gSpectateID[playerid] = specplayerid; gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER; } new ping = GetPlayerPing(specplayerid); new Float:health; new Float:armour; GetPlayerHealth(specplayerid, health); new name[24]; GetPlayerName(specplayerid,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,specplayerid,health,armour,ping); GameTextForPlayer(playerid,string,10000,3); } return 1; } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Web 414 Опубликовано 3 января, 2019 (изменено) if(PlayerInfo[giveplayerid][pAdmin] >= 12) return SendClientMessage(playerid, COLOR_GREY, "Вы не можете следить за администратором высокого уровня!"); можно следить за всеми кроме 12 уровня администрирования if (PlayerInfo[playerid][pAdmin] >= 1||PlayerInfo[playerid][pModerators] >= 1) эта уже непосредственно обозначает доступ к самой команде предлагаю заменить if(PlayerInfo[giveplayerid][pAdmin] >= 12) return SendClientMessage(playerid, COLOR_GREY, "Вы не можете следить за администратором высокого уровня!"); на if(PlayerInfo[giveplayerid][pAdmin] >= 1 || PlayerInfo[playerid][pModerators] >= 1) return SendClientMessage(playerid, COLOR_GREY, "Вы не можете следить за администрацией"); Изменено 3 января, 2019 пользователем Wеb 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
failed 14 Опубликовано 3 января, 2019 if(strcmp(cmd, "/tv", true) == 0) { if(IsPlayerConnected(playerid)) { if (PlayerInfo[playerid][pAdministrator] >= 1) tmp = adminspec_strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /tv [playerid]"); return true; } specplayerid = strval(tmp); if(!IsPlayerConnected(specplayerid)) { SendClientMessage(playerid, COLOR_RED,OFFLINE); return true; } if(IsPlayerInAnyVehicle(specplayerid)) { SetPlayerInterior(playerid,GetPlayerInterior(specplayerid)); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specplayerid)); TogglePlayerSpectating(playerid, 1); PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specplayerid)); gSpectateID[playerid] = specplayerid; gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE; } else { SetPlayerInterior(playerid,GetPlayerInterior(specplayerid)); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specplayerid)); TogglePlayerSpectating(playerid, 1); PlayerSpectatePlayer(playerid, specplayerid); gSpectateID[playerid] = specplayerid; gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER; } new ping = GetPlayerPing(specplayerid); new Float:health; new Float:armour; GetPlayerHealth(specplayerid, health); new name[24]; GetPlayerName(specplayerid,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,specplayerid,health,armour,ping); GameTextForPlayer(playerid,string,10000,3); } return 1; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Web 414 Опубликовано 3 января, 2019 (изменено) , Я все раписал. Зачем ты скинул аналогичную команду, в которой еще и придется править переменные? Да и GetPlayerPing наверняка понадобится функция. Зачем лезть советовать и помогатаь, не зная самых основ. Изменено 3 января, 2019 пользователем Wеb Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты