[PROBLEM] SetPlayerPos
#1

For some reason my players fall through the floor when they spawn, and sometimes they don't, which annoys me ALLOT.

Here's my code:

pawn Код:
new Float:CivilianRandomSpawns[3][3] = {
{1481.0154, -1770.7731, 18.7958},
{2446.4629, 2376.1675, 12.1635},
{-1494.1964, 920.0549, 7.1875}
};
new Float:PoliceRandomSpawns[3][3] = {
{2295.2734, 2468.7920, 10.8203},
{-1620.3188, 690.2934, 7.1875},
{1550.9331, -1675.5458, 15.6261}
};

public OnPlayerSpawn(playerid)
{
           SetPlayerRandomSpawn(playerid);
           return 1;
}
function SetPlayerRandomSpawn(playerid)
{
    if(PlayerLogged[playerid] && PlayerInfo[playerid][pHouse])// Player is logged in & owns a house
    {
        SetPlayerInterior(playerid, HouseInfo[PlayerInfo[playerid][pHouse]][hIntID]);
        SetPlayerPos(playerid, HouseInfo[PlayerInfo[playerid][pHouse]][hIntX], HouseInfo[PlayerInfo[playerid][pHouse]][hIntY], HouseInfo[PlayerInfo[playerid][pHouse]][hIntZ]);
        SetPlayerVirtualWorld(playerid, HouseInfo[PlayerInfo[playerid][pHouse]][hIntWorld]);
        return 1;
    }
    if(PlayerTeam[playerid] == TEAM_POLICE)
    {
        SetPlayerInterior(playerid, 0);
        new rand = random(sizeof(PoliceRandomSpawns));
        SetPlayerPos(playerid, PoliceRandomSpawns[rand][0], PoliceRandomSpawns[rand][1], PoliceRandomSpawns[rand][2]);
    }
    if(PlayerTeam[playerid] == TEAM_CIVILIAN || PlayerTeam[playerid] == TEAM_CRIMINAL)
    {
        SetPlayerInterior(playerid, 0);
        new rand = random(sizeof(CivilianRandomSpawns));
        SetPlayerPos(playerid, CivilianRandomSpawns[rand][0], CivilianRandomSpawns[rand][1], CivilianRandomSpawns[rand][2]);
    }
    return 1;
}
Can anyone try to figure this out? I also tried SetPlayerPosFindZ() but if i use this then i can't set the player's interior/world anymore. Anyone... this is frustrating...
Reply
#2

You should use elseif, cause what if someone owns a house and is part of police.
Reply
#3

That's why i placed 'return 1;' there. If he's police he'll spawn in the house also.
But that's not what bothers me. My players fall through the floor!
Reply
#4

Your not making sense
Reply
#5

It's probably because the interior hasn't loaded fully. Try freezing the player and putting a 1 second timer in to unfreeze the player.
Reply
#6

or set their Z Cord +2 Example. "XXX.XXX+2);
Reply
#7

Quote:
Originally Posted by Antonio [G-RP]
Посмотреть сообщение
It's probably because the interior hasn't loaded fully. Try freezing the player and putting a 1 second timer in to unfreeze the player.
I recommend you this one.
I used it too.

Quote:
Originally Posted by -Rebel Son-
Посмотреть сообщение
or set their Z Cord +2 Example. "XXX.XXX+2);
This'll probaly work as well but I don't like the way it works. Like when you enter the house it's like a slap.
So use the first option





Quote:
Originally Posted by Steven82
Посмотреть сообщение
Your not making sense
Are you?....
Reply
#8

I tried
pawn Код:
#define SetPlayerPosEx(%0,%1,%2,%3) SetPlayerPos(%0,%1,%2,%3); TogglePlayerControllable(%0,0); SetTimerEx("TogglePlayerControllable",1000,false,"ii",%0,1)
But it has a flaw:
- It sets the player's position
- It freezes the player
- It DOESN'T unfreeze the player!!!!!
Reply
#9

Quote:
Originally Posted by viKKmaN
Посмотреть сообщение
I tried
pawn Код:
#define SetPlayerPosEx(%0,%1,%2,%3) SetPlayerPos(%0,%1,%2,%3); TogglePlayerControllable(%0,0); SetTimerEx("TogglePlayerControllable",1000,false,"ii",%0,1)
But it has a flaw:
- It sets the player's position
- It freezes the player
- It DOESN'T unfreeze the player!!!!!
SetTimer called public function, not native.

Try:
pawn Код:
#define SetPlayerPosEx(%0,%1,%2,%3) SetPlayerPos(%0,%1,%2,%3); TogglePlayerControllable(%0,0); SetTimerEx("UnFreeze",1000,false,"i",%0)

forward UnFreeze(playerid);
public UnFreeze(playerid)
{
     TogglePlayerControllable(playerid, true);
}
Reply
#10

They still fall through the texture... and they seem to be spawning at coords 0.0 0.0 0.0 under the floor...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)