Сообщение от
DeimoS
Код нужно смотреть
CMD:
PHP код:
CMD:recon(playerid, params[])
{
IsAdminEx(1);
extract params -> new targetid; else
return SendClientMessage(playerid, COLOR_WHITE, "Введите: /re(con) [id]");
if(0 == IsPlayerConnected(targetid))
return SendErrorMessage(playerid, PlayerIsNotOnline);
if(IsPlayerLogged(targetid) == PLAYER_OFFLINE)
return SendErrorMessage(playerid, PlayerIsNotLogged);
if(pTemp[targetid][p_spectation_id] != INVALID_PLAYER_ID)
return SendErrorMessage(playerid, "Администратор в режиме наблюдения");
if(GetPlayerState(targetid) != 1 && GetPlayerState(targetid) != 2 && GetPlayerState(targetid) != 3)
return SendClientMessage(playerid, COLOR_RED, "error 0132");
if(pTemp[playerid][p_spectation_id] == INVALID_PLAYER_ID)
{
new Float:pos_x, Float:pos_y, Float:pos_z, Float:pos_a;
GetPlayerPos(playerid, pos_x, pos_y, pos_z);
GetPlayerFacingAngle(playerid, pos_a);
SetPVarInt(playerid, "SpecInt", GetPlayerInterior(playerid));
SetPVarInt(playerid, "SpecVw", GetPlayerVirtualWorld(playerid));
SetPVarFloat(playerid, "SpecX", pos_x);
SetPVarFloat(playerid, "SpecY", pos_y);
SetPVarFloat(playerid, "SpecZ", pos_z);
SetPVarFloat(playerid, "SpecA", pos_a);
SetPlayerReconTextDraw(playerid, true);
for(new i; i < sizeof(gSpectating_TD); i++)
TextDrawShowForPlayer(playerid, gSpectating_TD[i]);
ShowMenuForPlayer(Admin, playerid);
}
else KillTimer(pTemp[playerid][p_spectation_timer]);
SetPlayerInterior(playerid, GetPlayerInterior(targetid));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(targetid));
TogglePlayerSpectating(playerid, true);
new veh_id = GetPlayerVehicleID(targetid);
if(veh_id > 0)
PlayerSpectateVehicle(playerid, veh_id);
else
PlayerSpectatePlayer(playerid, targetid);
pTemp[playerid][p_spectation_id] = targetid;
pTemp[playerid][p_spectation_timer] = SetTimerEx("@UpdatePlayerSpectating", 500, false, "dd", playerid, targetid);
return 1;
}
Ну и паблик обновления
PHP код:
@UpdatePlayerSpectating(playerid, targetid);
@UpdatePlayerSpectating(playerid, targetid)
{
if(0 == IsPlayerConnected(playerid))
return 1;
if(0 == IsPlayerConnected(targetid))
{
HideMenuForPlayer(Admin, playerid);
SetPlayerReconTextDraw(playerid, false);
pTemp[playerid][p_spectation_id] = INVALID_PLAYER_ID;
return GameTextForPlayer(playerid, "~w~RECON ~r~ OFF~n~ ~r~PLAYER DISCONNECT", 5000, 3);
}
if(pTemp[playerid][p_spectation_id] == INVALID_PLAYER_ID)
return 1;
new
string[300];
format(string, sizeof(string), "%s [ %d ]", GetName(targetid), targetid);
PlayerTextDrawSetString(playerid, gSpectating_PTD[playerid][0], string);
new Float:player_health;
GetPlayerHealth(targetid, player_health);
format(string, sizeof(string), "HP: %0.1f", player_health);
PlayerTextDrawSetString(playerid, gSpectating_PTD[playerid][1], string);
new Float:player_armour;
GetPlayerArmour(targetid, player_armour);
format(string, sizeof(string), "ARM: %0.1f", player_armour);
PlayerTextDrawSetString(playerid, gSpectating_PTD[playerid][2], string);
format(string, sizeof(string), "PING: %d", GetPlayerPing(targetid));
PlayerTextDrawSetString(playerid, gSpectating_PTD[playerid][3], string);
format(string, sizeof(string), "IP: %s", GetIP(targetid));
PlayerTextDrawSetString(playerid, gSpectating_PTD[playerid][7], string);
format(string, sizeof(string), "Reg.IP: %s", pInfo[targetid][pIpReg]);
PlayerTextDrawSetString(playerid, gSpectating_PTD[playerid][8], string);
format(string, sizeof(string), "Speed: %d", GetPlayerSpeed(targetid));
PlayerTextDrawSetString(playerid, gSpectating_PTD[playerid][9], string);
if(IsPlayerInAnyVehicle(targetid))
{
new
veh_id = GetPlayerVehicleID(targetid),
Float:vehicle_health;
GetVehicleHealth(veh_id, vehicle_health);
format(string, sizeof(string), "HP: %0.1f", vehicle_health);
PlayerTextDrawSetString(playerid, gSpectating_PTD[playerid][4], string);
format(string, sizeof(string), "Fuel: %0.1fL", VehicleInfo[veh_id][vFuel]);
PlayerTextDrawSetString(playerid, gSpectating_PTD[playerid][5], string);
format(string, sizeof(string), "Engine: %s", VehicleInfo[veh_id][vEngine] ? ("ON"):("OFF"));
PlayerTextDrawSetString(playerid, gSpectating_PTD[playerid][6], string);
}
return (pTemp[playerid][p_spectation_timer] = SetTimerEx("@UpdatePlayerSpectating", 500, false, "dd", playerid, targetid));
}