16.08.2015, 17:26
Well YSF supposedly has a ShowPlayerForPlayer and a HidePlayerForPlayer function though I personally have never tested it but it seems to be there. It should work something like this:
(http://pastebin.com/R5H0bKED)
This is set up as an include, use IsPlayerVisible to check if the player is visible & SetPlayerVisible to toggle their visibility, ex:
pawn Код:
#include <a_samp>
#include <YSF>
new static bool: Visible[MAX_PLAYERS] = true;
public OnPlayerConnect(playerid)
{
Visible[playerid] = true;
CallLocalFunction("HOOK_OnPlayerConnect", "i", playerid);
return 1;
}
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect HOOK_OnPlayerConnect
forward HOOK_OnPlayerConnect(playerid);
stock IsPlayerVisible(playerid)
{
if(Visible[playerid] == true)
return 1;
return 0;
}
stock SetPlayerVisible(playerid, bool: visible_)
{
if(visible_)
{
if(Visible[playerid])
{
SyncPlayerVisible(playerid); // player is already visible, so sync it just in case
return 1;
}
else
{
Visible[playerid] = true;
SyncPlayerVisible(playerid);
}
}
else
{
Visible_[playerid] = false;
SyncPlayerVisable(playerid);
return 1;
}
}
static stock SyncPlayerVisible(playerid)
{
if(IsPlayerConnected(playerid))
{
if(Visible[playerid])
{
for(new i; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
ShowPlayerForPlayer(i, playerid);
}
}
else
{
for(new i; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
ShowPlayerForPlayer(i, playerid);
}
}
}
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
if(Visible[playerid])
{
ShowPlayerForPlayer(forplayerid, playerid);
}
else HidePlayerForPlayer(forplayerid, playerid);
CallLocalFunction("HOOK_OnPlayerStreamIn", "ii", playerid, forplayerid);
return 1;
}
#if defined _ALS_OnPlayerStreamIn
#undef OnPlayerStreamIn
#else
#define _ALS_OnPlayerStreamIn
#endif
#define OnPlayerStreamIn HOOK_OnPlayerStreamIn
forward HOOK_OnPlayerStreamIn(playerid, forplayerid);
This is set up as an include, use IsPlayerVisible to check if the player is visible & SetPlayerVisible to toggle their visibility, ex:
pawn Код:
CMD:v(playerid, params[])
{
if(IsPlayerVisible(playerid))
{
SetPlayerVisible(playerid, false);
}
else SetPlayerVisible(playerid, true);
return 1;
}