PDA

Просмотр полной версии : [Вопрос] Наблюдение за игроком (/spec)



kala4iks
17.02.2017, 23:12
Добрый вечер при создании системы наблюдения за игроком столкнулся с такой проблемой.
Когда начинаю наблюдать за игроком то в статистике наблюдения пишет то мои данные потом игрока за которым наблюдаю потом опять мои и т.д и т.п.


CMD:spec(playerid, params[])
{
new Float:Pos[3];
if(Player[playerid][pAdmin] < 3 || AdminDuty[playerid] == 0)return NoRights;
if(sscanf(params,"r",params[0]))return send(playerid,0x33CCFFFF,"[КОМАНДЫ] {FFFFFF}/spec [id игрока]");
if(!IsPlayerConnected(params[0]))return Notonline;
if(Player[params[0]][pAdmin] > Player[playerid][pAdmin])return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}Вы не можете наблюдать за администратором старше вас.");
if(SERIU[playerid][sID] == INVALID_PLAYER_ID)
{
TogglePlayerSpectating(playerid,1);
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
SetPVarFloat(playerid,"SpecX",Pos[0]);
SetPVarFloat(playerid,"SpecY",Pos[1]);
SetPVarFloat(playerid,"SpecZ",Pos[2]);
SetPVarInt(playerid,"SpecVW",GetPlayerVirtualWorld(playerid));
SetPVarInt(playerid,"SpecInt",GetPlayerInterior(playerid));
SetPlayerInterior(playerid,GetPlayerInterior(params[0]));
}
StartSpec(playerid,params[0]);
SetPVarInt(playerid,"Spec",1);
for(new i; i < 8;i++) TextDrawShowForPlayer(playerid,specmenu[playerid][i]);
for(new i; i<= 1;i++) TextDrawShowForPlayer(playerid,spectext[playerid][i]);
SelectTextDraw(playerid,0x00FF00AA);
return 1;
}


stock StartSpec(playerid,i)
{
new string[256],Float:health,Float:armour,gunname[32];
SERIU[playerid][sID] = i;
GetPlayerHealth(i,health);
GetPlayerArmour(i,armour);
new expamount;
if(GetPVarInt(i, "pLevel") == 0) expamount = 3;
else expamount = GetPVarInt(i,"pLevel")*5;
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(i));
SetPlayerInterior(playerid,GetPlayerInterior(i));
GetWeaponName(GetPlayerWeapon(i),gunname,sizeof(gunname));
if(IsPlayerInAnyVehicle(i))PlayerSpectateVehicle(playerid,GetPlayerVehicleID(i));
else PlayerSpectatePlayer(playerid,i);
f(string,"%s [%d]~n~Level: %d [%d / %d]~n~warns: %i / 3~n~health: %.0f~n~armour: %.0f~n~$%i~n~Gun %s~n~speed: %i~n~Vehicle: hp~n~fps: %i ping %i",sendername(i),i,GetPVarInt(i, "pLevel"),GetPVarInt(i,"pExp"),expamount,Player[i][pWarns],health,armour,Player[i][pMoney],gunname,GetPlayerSpeed(i),GetPlayerFPS(i),GetPlayerPing(i));
TextDrawSetString(spectext[playerid][1],string);
spectime[playerid] = SetTimerEx("UpdSpec",1000,0,"dd",playerid,i);
return 1;
}
publics UpdSpec(playerid,params)
{
new string[256],Float:health,Float:armour,gunname[32];
SetPlayerInterior(playerid,GetPlayerInterior(params));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(params));
GetPlayerHealth(params,health);
GetPlayerArmour(params,armour);
new expamount;
if(GetPVarInt(params, "pLevel") == 0) expamount = 3;
else expamount = GetPVarInt(params,"pLevel")*5;
f(string,"%s [%d]~n~Level: %d [%d / %d]~n~warns: %i / 3~n~health: %.0f~n~armour: %.0f~n~$%i~n~Gun %s~n~speed: %i~n~Vehicle: hp~n~fps: %i ping %i",sendername(params),params,GetPVarInt(params, "pLevel"),GetPVarInt(params,"pExp"),expamount,Player[params][pWarns],health,armour,Player[params][pMoney],gunname,GetPlayerSpeed(params),GetPlayerFPS(params),GetPlayerPing(params));
TextDrawSetString(spectext[playerid][1], string);
spectime[playerid] = SetTimerEx("UpdSpec",1000,0,"dd",playerid,params);
return 1;
}

И еще после окончания спека теперь если игрок следил за игроком который был на улице с виртуальным миром 0 а я в наблюдение заходил с интерьера то когда выхожу у меня виртуальный мир становится такой который у игрока, и я падаю в низ.

kala4iks
18.02.2017, 12:43
Помогите пожалуйста.

Osetin
18.02.2017, 14:03
http://pro-pawn.ru/showthread.php?11975
В комментариях обсуждали ваш вопрос.