
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
new spectext[255], spectext2[255];
format(spectext, 256, "~y~~p~Spectators:~w~");
spectext2 = " ";
for(new x = 0; x < GetMaxPlayers(); x++)
{
if(IsPlayerConnected(x))
{
if ((GetPlayerState(x) == PLAYER_STATE_SPECTATING) && (Player[x][gSpectateID] == i))
{
format(spectext2, 255, "%s~n~ - %s", spectext2, PNM(x));
format(spectext, 255, "%s%s", spectext, spectext2);
TextDrawSetString(Spectext[i], spectext);
TextDrawShowForPlayer(i, Spectext[i]);
}
else
{
TextDrawHideForPlayer(i, Spectext[i]);
}
}
}
|
format(spectext2, 255, "%s~n~ - %s", spectext2, PNM(x)); format(spectext, 255, "%s%s", spectext, spectext2); TextDrawSetString(Spectext[i], spectext); |
TextDrawSetString(RequestClass[playerid],string);
// Player List
strcat(RequestPlayerClass[playerid], "~g~Players:");
for(new i = 0; i < GetMaxPlayers(); i++){
if(IsPlayerConnected(i) && team[i] == team[playerid] && i != playerid){
format(string,128,"~n~~y~%s",GetName(i));
strcat(RequestPlayerClass[playerid],string);
}
}
//TextDrawUseBox(RequestClassPlayers[playerid],1);
//TextDrawBoxColor(RequestClassPlayers[playerid],0x000000A0);
TextDrawSetString(RequestClassPlayers[playerid],RequestPlayerClass[playerid]);
RequestPlayerClass[playerid] = "";
|
Originally Posted by crone
з.ы. у меня некоторые посты в каракули превращаются подскажите как решить эту тоже проблему)
|
|
Originally Posted by [JIeXa
]
не используйте НИКОГДА GetMaxPlayers(); |
//=========================[Spec]===================================
new specid;
new cmd[256],idx;
cmd = adminspec_strtok(cmdtext, idx);
if(strcmp(cmd, "/spec", true) == 0)
{
new tmp[256];
tmp = adminspec_strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, AAD_COLOR_GREY, "Используйте: /spec <ID игрока> .");
return 1;
}
specid = strval(tmp);
if(!IsPlayerConnected(specid))
{
SendClientMessage(playerid, AAD_COLOR_GREY, "Игрок не обнаружен.");
return 1;
}
else if(specid == playerid)
{
SendClientMessage(playerid, AAD_COLOR_GREY, "Вы не можете наблюдать за собой");
return 1;
}
else if(Player[specid][pTeam] != Player[playerid][pTeam] && Player[playerid][pTeam] != T_REF)
{
SendClientMessage(playerid, AAD_COLOR_GREY, "Вы можете наблюдать только за игроком своей команды");
return 1;
}
else if(Player[playerid][pPlaying] == true && Player[playerid][pTeam] != T_REF)
{
SendClientMessage(playerid, AAD_COLOR_GREY, "Вы можете только наблюдать если вы не в этом раунде");
return 1;
}
else if(GetPlayerState(specid) == PLAYER_STATE_SPECTATING && gSpectateID[specid] != INVALID_PLAYER_ID)
{
SendClientMessage(playerid, AAD_COLOR_GREY, "Игрок тоже наблюдает за кем-то");
return 1;
}
else if(GetPlayerState(specid) != 1 && GetPlayerState(specid) != 2 && GetPlayerState(specid) != 3)
{
SendClientMessage(playerid, AAD_COLOR_GREY, "Игрок не в игре");
return 1;
}
else if(game[playerid] == 1)
{
SendClientMessage(playerid, AAD_COLOR_GREY, "Игрок не находится в раунде!");
return 1;
}
StartSpectate(playerid, specid);
spectating[playerid] = 1;
new specname[STR];
new spectext[STR];
new Float:spechp;
GetPlayerName(specid, specname, sizeof(specname));
GetPlayerHealth(specid, spechp);
format(spectext,STR,"~w~%s",specname,spechp);
TextDrawSetString(spec, spectext);
TextDrawShowForPlayer(playerid,spec);
return 1;
}
//=========================[Specoff]===================================
if(strcmp(cmd, "/specoff", true) == 0)
{
if(Player[playerid][pPlaying] || !spectating[playerid]) return SendClientMessage(playerid, AAD_COLOR_GREY, " Ошибка");
StopSpectate(playerid);
spectating[playerid] = 0;
SpawnPlayer(playerid);
TextDrawHideForPlayer(playerid, spec);
return 1;
}
return SendClientMessage(playerid,0xC1C1FFAA,"***Неизвестная команда, используйте /help");
}
spec = TextDrawCreate(183.000000,371.000000,"Spectators:");
TextDrawAlignment(spec,0);
TextDrawBackgroundColor(spec,0x00000033);
TextDrawFont(spec,1);
TextDrawLetterSize(spec,1.000000,1.000000);
TextDrawColor(spec,0xffffffff);
TextDrawSetOutline(spec,1);
TextDrawSetProportional(spec,1);
TextDrawSetShadow(spec,2);
//====================[balance]====================
if(!strcmp(cmdtext,"/balance",true,8))
{
if(!IsPlayerAdmin(playerid) || Current != -1) return SendClientMessage(playerid, AAD_COLOR_GREY, "Вы должны быть администратором для использования данной команды!");
new PlayersPlaying;
for(new i = 0; i < MAX_PLAYERS; i ++)
{
if(IsPlayerConnected(i))
PlayersPlaying ++;
}
if(PlayersPlaying <= 1) return SendClientMessage(playerid, AAD_COLOR_GREY, "Ошибка в балансировке команд!");
new Divisor = floatround(PlayersPlaying / 2);
new Temp;
new bool:HomeFull = false;
for(new i = 0; i < MAX_PLAYERS; i ++)
{
if(IsPlayerConnected(i) && (Player[i][pTeam] == T_ATT || Player[i][pTeam] == T_DEF))
{
if(HomeFull == false)
{
Player[i][pTeam] = T_DEF;
mySetPlayerColor(i,COLOR_DEF);
GunSet[i] = 0;
SetSpawnInfo(i,99,DEFENDER_SKIN,0,0,0,0,0,0,0,0,0,0);
Temp ++;
if(Temp >= Divisor)
{
HomeFull = true;
}
}
else if(HomeFull == true)
{
Player[i][pTeam] = T_ATT;
mySetPlayerColor(i,COLOR_ATT);
GunSet[i] = 1;
SetSpawnInfo(i,99,ATTACKER_SKIN,0,0,0,0,0,0,0,0,0,0);
}
}
}
new string[60];
format(string, 60, " Команды сбалансированы администратором.");
SendClientMessageToAll(AAD_COLOR_GREEN, string);
return 1;
}