iStrange
Компетентный
Вот такую менюшку мы получим:
Код делался под мод Skrillax-Rp
Ко всем new:
Ко всем enum:
В stock Menu()
В public OnPlayerSelectedMenuRow
В самый низ мода:
Код делался под мод Skrillax-Rp
Ко всем new:
PHP:
new Menu:AdmSpectate;
new Spectate[MAX_PLAYERS];
new Text:recon[MAX_PLAYERS];
new gSpectateID[MAX_PLAYERS];
new gSpectateType[MAX_PLAYERS];
PHP:
enum pSpec
{
sName[MAX_PLAYER_NAME],
sIp[16],
Float:scarhealth,
Float:shealths,
Float:sarmour,
Float:svhealth,
sping,
};
new Spectagin[MAX_PLAYERS][pSpec];
PHP:
AdmSpectate = CreateMenu("Recon", 1, 0.0, 140.0, 90.0);
AddMenuItem(AdmSpectate,0,"NEXT PLAYER");
AddMenuItem(AdmSpectate,0,"BACK PLAYER");
AddMenuItem(AdmSpectate,0,"UPDATE");
AddMenuItem(AdmSpectate,0,"SLAP");
AddMenuItem(AdmSpectate,0,"STATS");
AddMenuItem(AdmSpectate,0,"WEAPON");
AddMenuItem(AdmSpectate,0,"FREEZE");
AddMenuItem(AdmSpectate,0,"UNFREEZE");
AddMenuItem(AdmSpectate,0,"GMTEST");
AddMenuItem(AdmSpectate,0,"GETIP");
AddMenuItem(AdmSpectate,0,"REOFF");
В самый низ мода (Комманда на CMD):
PHP:
CMD:re(playerid,params[])
{
new giveplayerid, tmp[50];
giveplayerid = ReturnUser(tmp);
if(PlayerInfo[playerid][pAdminkaloxarp] == 0) return true;
if(sscanf(params,"d",giveplayerid)) return SendClientMessage(playerid, COLOR_GRAD1, "Введите: /re [ID]");
if(!IsPlayerConnected(giveplayerid) || gPlayerLogged[giveplayerid] == 0) return SendClientMessage(playerid, COLOR_GREY,"Игрок не авторизирован / зарегистрирован");
if(Spectate[playerid] == INVALID_PLAYER_ID)
{
GetPlayerPos(playerid, SpectPosFloat[playerid][0], SpectPosFloat[playerid][1], SpectPosFloat[playerid][2]);
GetPlayerFacingAngle(playerid, SpectPosFloat[playerid][3]);
SpectPos[playerid][0] = GetPlayerInterior(playerid);
SpectPos[playerid][1] = GetPlayerVirtualWorld(playerid);
}
Spectate[playerid] = giveplayerid;
TogglePlayerSpectating(playerid, 1);
if(IsPlayerInAnyVehicle(Spectate[playerid]))
{
SetPlayerInterior(playerid,GetPlayerInterior(Spectate[playerid]));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(Spectate[playerid]));
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(Spectate[playerid]), 1);
}
else
{
SetPlayerInterior(playerid,GetPlayerInterior(Spectate[playerid]));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(Spectate[playerid]));
PlayerSpectatePlayer(playerid, Spectate[playerid], 1);
}
Spectagin[playerid][sping] = GetPlayerPing(Spectate[playerid]);
GetPlayerArmour(Spectate[playerid],Spectagin[playerid][sarmour]);
GetPlayerHealth(Spectate[playerid],Spectagin[playerid][shealths]);
GetPlayerName(Spectate[playerid], Spectagin[playerid][sName], MAX_PLAYER_NAME);
GetPlayerIp(Spectate[playerid], Spectagin[playerid][sIp], 16);
Spectagin[playerid][svhealth] = 0.0;
TextDrawShowForPlayer(playerid, recon[playerid]);
ShowMenuForPlayer(AdmSpectate, playerid);
return true;
}
PHP:
else if (strcmp(cmd, "/re", true) == 0)
{
if(PlayerInfo[playerid][pAdminkaloxarp] == 0) return true;
tmp = strcharsplit(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /re [id]");
giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid) || gPlayerLogged[giveplayerid] == 0) return SendClientMessage(playerid, COLOR_GREY,"Игрок не авторизирован / зарегистрирован");
if(Spectate[playerid] == INVALID_PLAYER_ID)
{
GetPlayerPos(playerid, SpectPosFloat[playerid][0], SpectPosFloat[playerid][1], SpectPosFloat[playerid][2]);
GetPlayerFacingAngle(playerid, SpectPosFloat[playerid][3]);
SpectPos[playerid][0] = GetPlayerInterior(playerid);
SpectPos[playerid][1] = GetPlayerVirtualWorld(playerid);
}
Spectate[playerid] = giveplayerid;
TogglePlayerSpectating(playerid, 1);
if(IsPlayerInAnyVehicle(Spectate[playerid]))
{
SetPlayerInterior(playerid,GetPlayerInterior(Spectate[playerid]));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(Spectate[playerid]));
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(Spectate[playerid]), 1);
}
else
{
SetPlayerInterior(playerid,GetPlayerInterior(Spectate[playerid]));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(Spectate[playerid]));
PlayerSpectatePlayer(playerid, Spectate[playerid], 1);
}
Spectagin[playerid][sping] = GetPlayerPing(Spectate[playerid]);
GetPlayerArmour(Spectate[playerid],Spectagin[playerid][sarmour]);
GetPlayerHealth(Spectate[playerid],Spectagin[playerid][shealths]);
GetPlayerName(Spectate[playerid], Spectagin[playerid][sName], MAX_PLAYER_NAME);
GetPlayerIp(Spectate[playerid], Spectagin[playerid][sIp], 16);
Spectagin[playerid][svhealth] = 0.0;
TextDrawShowForPlayer(playerid, recon[playerid]);
ShowMenuForPlayer(AdmSpectate, playerid);
reconp[playerid]++;
return true;
}
В public OnPlayerSelectedMenuRow
PHP:
if(Current == AdmSpectate)
{
switch(row)
{
case 0:
{
ShowMenuForPlayer(AdmSpectate, playerid);
new mess[15];
format(mess, sizeof(mess), "/re %i",Spectate[playerid]+1);
CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);
if(IsPlayerInAnyVehicle(Spectate[playerid])) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(Spectate[playerid]), 1);
else PlayerSpectatePlayer(playerid, Spectate[playerid], 1);
SetPlayerInterior(playerid,GetPlayerInterior(Spectate[playerid]));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(Spectate[playerid]));
ShowMenuForPlayer(AdmSpectate, playerid);
}
case 1:
{
ShowMenuForPlayer(AdmSpectate, playerid);
new mess[15];
format(mess, sizeof(mess), "/re %i",Spectate[playerid]-1);
CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);
if(IsPlayerInAnyVehicle(Spectate[playerid])) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(Spectate[playerid]), 1);
else PlayerSpectatePlayer(playerid, Spectate[playerid], 1);
SetPlayerInterior(playerid,GetPlayerInterior(Spectate[playerid]));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(Spectate[playerid]));
ShowMenuForPlayer(AdmSpectate, playerid);
}
case 2:
{
if(IsPlayerInAnyVehicle(Spectate[playerid])) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(Spectate[playerid]), 1);
else PlayerSpectatePlayer(playerid, Spectate[playerid], 1);
SetPlayerInterior(playerid,GetPlayerInterior(Spectate[playerid]));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(Spectate[playerid]));
ShowMenuForPlayer(AdmSpectate, playerid);
return true;
}
case 3:
{
new mess[15];
format(mess, sizeof(mess), "/slap %i",Spectate[playerid]);
CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);
ShowMenuForPlayer(AdmSpectate, playerid);
}
case 4: ShowStats(playerid, Spectate[playerid]), ShowMenuForPlayer(AdmSpectate, playerid);
case 5:
{
ShowMenuForPlayer(AdmSpectate, playerid);
new mess[15];
format(mess, sizeof(mess), "/iwep %i",Spectate[playerid]);
CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);
}
case 6:
{
new mess[15];
format(mess, sizeof(mess), "/freeze %i",Spectate[playerid]);
CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);
ShowMenuForPlayer(AdmSpectate, playerid);
return true;
}
case 7:
{
new mess[15];
format(mess, sizeof(mess), "/unfreeze %i",Spectate[playerid]);
CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);
ShowMenuForPlayer(AdmSpectate, playerid);
return true;
}
case 8:
{
new mess[15];
format(mess, sizeof(mess), "/gm %i",Spectate[playerid]);
CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);
ShowMenuForPlayer(AdmSpectate, playerid);
return true;
}
case 9:
{
new mess[15];
format(mess, sizeof(mess), "/getip %i",Spectate[playerid]);
CallLocalFunction("OnPlayerCommandText", "is", playerid, mess);
ShowMenuForPlayer(AdmSpectate, playerid);
return true;
}
case 10:
{
TogglePlayerSpectating(playerid, 0);
SetCameraBehindPlayer(playerid);
PlayerSpec[PlayerSpectateID[playerid]] = INVALID_PLAYER_ID;
SetPlayerHealthAC(playerid, 100);
PlayerSpectateID[playerid] = INVALID_PLAYER_ID;
GameTextForPlayer(playerid, "~W~RECON ~R~OFF", 5000, 4);
StopSpectate(playerid);
HideMenuForPlayer(AdmSpectate, playerid);
}
}
return true;
}
PHP:
stock StopSpectate(playerid)
{
SetTimerEx("SpectOff",100,false,"i",playerid);
TogglePlayerSpectating(playerid, false);
gSpectateID[playerid] = INVALID_PLAYER_ID;
gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
return true;
}
publics: SpectOff(playerid) return SpawnPlayer(playerid);
Последнее редактирование:
