OnPlayerSpawn (if, else if)
#1

Under OnPlayerSpawn

Код:
if(pInfo[playerid][PosX] == 0.0 && pInfo[playerid][PosY] == 0.0) // new player
{
	new position = random(sizeof(CivilianSpawn));
	SetPlayerPos(playerid, CivilianSpawn[position][0], CivilianSpawn[position][1], CivilianSpawn[position][2]+0.3);
	SetPlayerFacingAngle(playerid, CivilianSpawn[position][3]);
	SetPlayerInterior(playerid, 0);
	SetPlayerVirtualWorld(playerid, 0);
	SetCameraBehindPlayer(playerid);
}
else if(pInfo[playerid][PosX] != 0.0 && pInfo[playerid][PosY] != 0.0) // existing player
{
	SetPlayerPos(playerid, pInfo[playerid][PosX], pInfo[playerid][PosY], pInfo[playerid][PosZ]+1.5);
	SetPlayerFacingAngle(playerid, pInfo[playerid][PosAngle]);
	SetPlayerInterior(playerid, pInfo[playerid][Interior]);
	SetPlayerVirtualWorld(playerid, pInfo[playerid][VirtualWorld]);

	SendClientMessage(playerid, COLOR_GOV, "SERVER: {FFFFFF}Welcome to your last position.");

	if(pInfo[playerid][SkinID] == 0) return ShowModelSelectionMenu(playerid, skinlist, "Select Skin");
}
else if(IsBit(pFlag[playerid], pBIT_INJURED))
{
	....
}
else if(IsBit(pFlag[playerid], pBIT_HOSPITALIZED))
{
	....
}
else if(pInfo[playerid][Prison] >= 2)
{
	....
}
else if(IsBit(pFlag[playerid], pBIT_CAGED))
{
	....
}
I am having problems with the code above, when I get injured, it says Welcome to your last position, which is probably detecting me as "existing player" then executing the code.
The injured isn't supposed to work that way. What's wrong with the code?
Reply
#2

Try this:
Код:
if(pInfo[playerid][PosX] == 0.0 && pInfo[playerid][PosY] == 0.0) // new player
{
	new position = random(sizeof(CivilianSpawn));
	SetPlayerPos(playerid, CivilianSpawn[position][0], CivilianSpawn[position][1], CivilianSpawn[position][2]+0.3);
	SetPlayerFacingAngle(playerid, CivilianSpawn[position][3]);
	SetPlayerInterior(playerid, 0);
	SetPlayerVirtualWorld(playerid, 0);
	SetCameraBehindPlayer(playerid);
}
else if(pInfo[playerid][PosX] != 0.0 && pInfo[playerid][PosY] != 0.0) // existing player
{
	SetPlayerPos(playerid, pInfo[playerid][PosX], pInfo[playerid][PosY], pInfo[playerid][PosZ]+1.5);
	SetPlayerFacingAngle(playerid, pInfo[playerid][PosAngle]);
	SetPlayerInterior(playerid, pInfo[playerid][Interior]);
	SetPlayerVirtualWorld(playerid, pInfo[playerid][VirtualWorld]);

	SendClientMessage(playerid, COLOR_GOV, "SERVER: {FFFFFF}Welcome to your last position.");

	if(pInfo[playerid][SkinID] == 0) return ShowModelSelectionMenu(playerid, skinlist, "Select Skin");
}
if(IsBit(pFlag[playerid], pBIT_INJURED))
{
	....
}
else if(IsBit(pFlag[playerid], pBIT_HOSPITALIZED))
{
	....
}
else(IsBit(pFlag[playerid], pBIT_CAGED))
{
	....
}
if(pInfo[playerid][Prison] >= 2)
{
	....
}
EDIT: Updated above code a bit

If the above code doesn't work then change all "else if" statements into "if" statements
Reply
#3

Quote:
Originally Posted by K0P
Посмотреть сообщение
Try this:
Код:
if(pInfo[playerid][PosX] == 0.0 && pInfo[playerid][PosY] == 0.0) // new player
{
	new position = random(sizeof(CivilianSpawn));
	SetPlayerPos(playerid, CivilianSpawn[position][0], CivilianSpawn[position][1], CivilianSpawn[position][2]+0.3);
	SetPlayerFacingAngle(playerid, CivilianSpawn[position][3]);
	SetPlayerInterior(playerid, 0);
	SetPlayerVirtualWorld(playerid, 0);
	SetCameraBehindPlayer(playerid);
}
else if(pInfo[playerid][PosX] != 0.0 && pInfo[playerid][PosY] != 0.0) // existing player
{
	SetPlayerPos(playerid, pInfo[playerid][PosX], pInfo[playerid][PosY], pInfo[playerid][PosZ]+1.5);
	SetPlayerFacingAngle(playerid, pInfo[playerid][PosAngle]);
	SetPlayerInterior(playerid, pInfo[playerid][Interior]);
	SetPlayerVirtualWorld(playerid, pInfo[playerid][VirtualWorld]);

	SendClientMessage(playerid, COLOR_GOV, "SERVER: {FFFFFF}Welcome to your last position.");

	if(pInfo[playerid][SkinID] == 0) return ShowModelSelectionMenu(playerid, skinlist, "Select Skin");
}
if(IsBit(pFlag[playerid], pBIT_INJURED))
{
	....
}
else if(IsBit(pFlag[playerid], pBIT_HOSPITALIZED))
{
	....
}
else(IsBit(pFlag[playerid], pBIT_CAGED))
{
	....
}
if(pInfo[playerid][Prison] >= 2)
{
	....
}
EDIT: Updated above code a bit

If the above code doesn't work then change all "else if" statements into "if" statements
Tested, still the same.
And I did with else if too, same problems.. Been fixing this for hours..
Reply
#4

First check if the player is injured, and in last instance set the player to the last position. If it still doesn't work, debug your pFlag value.

pawn Код:
if(IsBit(pFlag[playerid], pBIT_INJURED))
{
    ....
}
else if(IsBit(pFlag[playerid], pBIT_HOSPITALIZED))
{
    ....
}
else(IsBit(pFlag[playerid], pBIT_CAGED))
{
    ....
}
else if(pInfo[playerid][Prison] >= 2)
{
    ....
}
else if(pInfo[playerid][PosX] == 0.0 && pInfo[playerid][PosY] == 0.0) // new player
{
    new position = random(sizeof(CivilianSpawn));
    SetPlayerPos(playerid, CivilianSpawn[position][0], CivilianSpawn[position][1], CivilianSpawn[position][2]+0.3);
    SetPlayerFacingAngle(playerid, CivilianSpawn[position][3]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SetCameraBehindPlayer(playerid);
}
else if(pInfo[playerid][PosX] != 0.0 && pInfo[playerid][PosY] != 0.0) // existing player
{
    SetPlayerPos(playerid, pInfo[playerid][PosX], pInfo[playerid][PosY], pInfo[playerid][PosZ]+1.5);
    SetPlayerFacingAngle(playerid, pInfo[playerid][PosAngle]);
    SetPlayerInterior(playerid, pInfo[playerid][Interior]);
    SetPlayerVirtualWorld(playerid, pInfo[playerid][VirtualWorld]);

    SendClientMessage(playerid, COLOR_GOV, "SERVER: {FFFFFF}Welcome to your last position.");

    if(pInfo[playerid][SkinID] == 0) return ShowModelSelectionMenu(playerid, skinlist, "Select Skin");
}
Reply
#5

Quote:
Originally Posted by Marricio
Посмотреть сообщение
First check if the player is injured, and in last instance set the player to the last position. If it still doesn't work, debug your pFlag value.

pawn Код:
if(IsBit(pFlag[playerid], pBIT_INJURED))
{
    ....
}
else if(IsBit(pFlag[playerid], pBIT_HOSPITALIZED))
{
    ....
}
else(IsBit(pFlag[playerid], pBIT_CAGED))
{
    ....
}
else if(pInfo[playerid][Prison] >= 2)
{
    ....
}
else if(pInfo[playerid][PosX] == 0.0 && pInfo[playerid][PosY] == 0.0) // new player
{
    new position = random(sizeof(CivilianSpawn));
    SetPlayerPos(playerid, CivilianSpawn[position][0], CivilianSpawn[position][1], CivilianSpawn[position][2]+0.3);
    SetPlayerFacingAngle(playerid, CivilianSpawn[position][3]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SetCameraBehindPlayer(playerid);
}
else if(pInfo[playerid][PosX] != 0.0 && pInfo[playerid][PosY] != 0.0) // existing player
{
    SetPlayerPos(playerid, pInfo[playerid][PosX], pInfo[playerid][PosY], pInfo[playerid][PosZ]+1.5);
    SetPlayerFacingAngle(playerid, pInfo[playerid][PosAngle]);
    SetPlayerInterior(playerid, pInfo[playerid][Interior]);
    SetPlayerVirtualWorld(playerid, pInfo[playerid][VirtualWorld]);

    SendClientMessage(playerid, COLOR_GOV, "SERVER: {FFFFFF}Welcome to your last position.");

    if(pInfo[playerid][SkinID] == 0) return ShowModelSelectionMenu(playerid, skinlist, "Select Skin");
}
Still.
Reply
#6

Quote:
Originally Posted by Uberanwar
Посмотреть сообщение
Still.
Make yourself a favor and debug pFlag. You're probably not setting / loading it correctly. In which part of the script do you assign it?
Reply
#7

if(IsBit(pFlag[playerid], pBIT_INJURED))
{
code;
return 1;
}

Use return to stop the rest of callback.
Reply
#8

Check if player is whether injured or not on this line

PHP код:
else if(pInfo[playerid][PosX] != 0.0 && pInfo[playerid][PosY] != 0.0 && /*your injured checks here*/
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)