SA-MP Forums Archive
OnPlayerSpawn (if, else if) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: OnPlayerSpawn (if, else if) (/showthread.php?tid=617096)



OnPlayerSpawn (if, else if) - Uberanwar - 15.09.2016

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?


Re: OnPlayerSpawn (if, else if) - K0P - 15.09.2016

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


Re: OnPlayerSpawn (if, else if) - Uberanwar - 15.09.2016

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..


Re: OnPlayerSpawn (if, else if) - Marricio - 15.09.2016

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");
}



Re: OnPlayerSpawn (if, else if) - Uberanwar - 15.09.2016

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.


Re: OnPlayerSpawn (if, else if) - Marricio - 15.09.2016

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?


Re: OnPlayerSpawn (if, else if) - Rdx - 16.09.2016

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

Use return to stop the rest of callback.


Re: OnPlayerSpawn (if, else if) - JaKe Elite - 16.09.2016

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*/