Spec Problem
#1

Recently I have noticed that when I spectate a player above Virtual World 1, the spectate position and the camera view is always in the default loading or connecting mode. It doesn't change where the Spectating Player is.

pawn Код:
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    new x = 0;
    while(x!=MAX_PLAYERS)
    {
    if( IsPlayerConnected(x) && GetPlayerState(x) == PLAYER_STATE_SPECTATING &&
    AccInfo[x][SpecID] == playerid && AccInfo[x][SpecType] == ADMIN_SPEC_TYPE_PLAYER)
    {
    SetPlayerInterior(x,newinteriorid);
    }
    x++;
    }
}
I have try to change and add..
Код:
SetPlayerInterior(x,newinteriorid);
to

Код:
                SetPlayerInterior(i,GetPlayerInterior(playerid));
                SetPlayerVirtualWorld(i,GetPlayerVirtualWorld(playerid));
But it seems nothing change at all.

Also there is no Parameter for VirtualWorld.
Reply
#2

Try this:
pawn Код:
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(AccInfo[i][SpecID] == playerid)
            {
                if(AccInfo[i][SpecType] == ADMIN_SPEC_TYPE_PLAYER)
                {
                    if(i != playerid)
                    {
                        SetPlayerInterior(i, newinteriorid);
                        SetPlayerVirtualWorld(i, GetPlayerVirtualWorld(playerid));
                        PlayerSpectatePlayer(i, playerid, SPECTATE_MODE_NORMAL);
                    }
                }
            }
        }
    }
    return 1;
}
NOTE: Untested
Reply
#3

Quote:
Originally Posted by clarencecuzz
Посмотреть сообщение
Try this:
pawn Код:
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(AccInfo[i][SpecID] == playerid)
            {
                if(AccInfo[i][SpecType] == ADMIN_SPEC_TYPE_PLAYER)
                {
                    if(i != playerid)
                    {
                        SetPlayerInterior(i, newinteriorid);
                        SetPlayerVirtualWorld(i, GetPlayerVirtualWorld(playerid));
                        PlayerSpectatePlayer(i, playerid, SPECTATE_MODE_NORMAL);
                    }
                }
            }
        }
    }
    return 1;
}
NOTE: Untested
Thanks man but nothing change. Anyway should I define PlayerVirtualWorld in my Spec command??

pawn Код:
dcmd_spec(playerid,params[])
{
    if(AccInfo[playerid][Level] >= 1 || IsPlayerAdmin(playerid) || AccInfo[playerid][pVip] >= 1)
    {
        if(AccInfo[playerid][pGps] != -1)
        return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}>> First Disable the Gps System! (/gps off)");

        if(!strlen(params) || !IsNumeric(params)) return
        SendClientMessage(playerid, 0xFFFFFFFF, "{FFFF00}Usage: /spec [PlayerID]") &&
        SendClientMessage(playerid, 0xFFFFFFFF, "{FF9900}Function: Will spec a specified Player");

        new specplayerid = ReturnUser(params);
        if(AccInfo[specplayerid][Level] == ServerInfo[MaxAdminLevel] && AccInfo[playerid][Level] != ServerInfo[MaxAdminLevel])
        return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}>> You cannot use this command on this admin");

        if(IsPlayerConnected(specplayerid) && specplayerid != INVALID_PLAYER_ID)
        {
            if(specplayerid == playerid)
            return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}>> You cannot spectate Yourself");

            if(GetPlayerState(specplayerid) == PLAYER_STATE_SPECTATING && AccInfo[specplayerid][SpecID] != INVALID_PLAYER_ID)
            return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}>> Player spectating someone else");

            if(GetPlayerState(specplayerid) != 1 && GetPlayerState(specplayerid) != 2 && GetPlayerState(specplayerid) != 3)
            return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}>> Player not Spawned");

            if((AccInfo[specplayerid][Level] != ServerInfo[MaxAdminLevel]) || (AccInfo[specplayerid][Level] == ServerInfo[MaxAdminLevel] && AccInfo[playerid][Level] == ServerInfo[MaxAdminLevel]))
            {
                new string[128];
                format(string, sizeof(string), "[Spec] %s (ID:%d) is testing %s (ID:%d)", PlayerName2(playerid), playerid, PlayerName2(specplayerid), specplayerid);
                for(new i;i < MAX_PLAYERS; i++) if(AccInfo[i][Level] >= 1) SendClientMessage(i, grey, string);
                GetPlayerPos(playerid,Pos[playerid][0],Pos[playerid][1],Pos[playerid][2]);
                GetPlayerFacingAngle(playerid,Pos[playerid][3]);
                SendCommandToAdmins(playerid,"LSpec");
                SendClientMessage(playerid,blue,"Spectating On");
                return StartSpectate(playerid, specplayerid);
            }
            else return SendClientMessage(playerid, 0xFFFFFFFF,"{FF0000}>> You cannot spectate the highest level admin");
        }
        else return ErrorMessages(playerid, 2);
    }
    else return ErrorMessages(playerid, 1);
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)