27/01/2023 17:33
Se você quer que o jogador pressione a KEY_YES se ele estiver fora da empresa entrar, e se estiver dentro da empresa e sair, esse é o codigo correto:
GetPlayerPos retorna true(1) se funcionar, então ele iria executar os 2 ifs pois ambos estão retornando true (1)
Utilize IsPlayerInRangeOfPoint se quiser verificar se o jogador está perto de uma posição.
Veja como utilizar essas funções corretamente:
https://www.open.mp/docs/scripting/funct...tPlayerPos
https://www.open.mp/docs/scripting/funct...ngeOfPoint
Código PHP:
hook OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_YES)
{
for(new i; i < NumEmp; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 1.5, StrInfoEmp[i][EmpLocX], StrInfoEmp[i][EmpLocY], StrInfoEmp[i][EmpLocZ]))
{
SetPlayerPos(playerid, StrInfoEmp[i][EmpIntX], StrInfoEmp[i][EmpIntY], StrInfoEmp[i][EmpIntZ]);
SetPlayerInterior(playerid, StrInfoEmp[i][EmpInt]);
SetPlayerVirtualWorld(playerid, StrInfoEmp[i][EmpID]);
}
else if(IsPlayerInRangeOfPoint(playerid, 1.5, StrInfoEmp[i][EmpIntX], StrInfoEmp[i][EmpIntY], StrInfoEmp[i][EmpIntZ]) && GetPlayerInterior(playerid) == StrInfoEmp[i][EmpInt] && GetPlayerVirtualWorld(playerid) == StrInfoEmp[i][EmpID])//se o player estiver na a 1.5m de distancia da saida e estiver no interior e mundo virtual da empresa ele irá sair
{
SetPlayerPos(playerid, StrInfoEmp[i][EmpLocX], StrInfoEmp[i][EmpLocY], StrInfoEmp[i][EmpLocZ]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
}
//codigo antigo para comparar
/*if(GetPlayerPos(playerid, StrInfoEmp[i][EmpLocX], StrInfoEmp[i][EmpLocY], StrInfoEmp[i][EmpLocZ]))
{
SetPlayerPos(playerid, StrInfoEmp[i][EmpIntX], StrInfoEmp[i][EmpIntY], StrInfoEmp[i][EmpIntZ]);
SetPlayerInterior(playerid, StrInfoEmp[i][EmpInt]);
SetPlayerVirtualWorld(playerid, StrInfoEmp[i][EmpID]);
}
else if(GetPlayerPos(playerid, StrInfoEmp[i][EmpIntX], StrInfoEmp[i][EmpIntY], StrInfoEmp[i][EmpIntZ]))
{
SetPlayerPos(playerid, StrInfoEmp[i][EmpLocX], StrInfoEmp[i][EmpLocY], StrInfoEmp[i][EmpLocZ]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
}*/
}
}
return 1;
}
GetPlayerPos retorna true(1) se funcionar, então ele iria executar os 2 ifs pois ambos estão retornando true (1)
Utilize IsPlayerInRangeOfPoint se quiser verificar se o jogador está perto de uma posição.
Veja como utilizar essas funções corretamente:
https://www.open.mp/docs/scripting/funct...tPlayerPos
https://www.open.mp/docs/scripting/funct...ngeOfPoint