• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Pawn] Problema con sistema de casa
#1
Video 
tengo un problema con mi sistema de casas por ejemplo compro la casa ID 0 y la ID 1 bueno entro a la ID 1 y cuando sale de la ID 1 salgo en la ID 2 no se si es un servidor TDM

CMD:entrar(jugador, params[])
{
para (new i = 0; i < MAX_PROPERTY; i++) //- Sistema de casas
{
if(IsPlayerInRangeOfPoint(playerid, 1.0, INFO_PROPERTY[i][p_POS_EXT][0], INFO_PROPERTY[i][p_POS_EXT][1], INFO_PROPERTY[i][p_POS_EXT][2]))
{
    if(INFO_PROPERTY[i][p_CLOSED] == 0)
    {
¡¡if(INFO_PROPERTY[i][p_BOUGHT] == 1 && !strcmp(PlayerName(playerid), INFO_PROPERTY[i][p_OWNER]))
{
SetPlayerPosEx(playerid, INFO_PROPERTY[i][p_POS_INT][0], INFO_PROPERTY[i][p_POS_INT][1], INFO_PROPERTY[i][p_POS_INT][2], 0.0, INFO_PROPERTY[i][p_INTERIOR], i+10);
TEMPORAL_PLAYER[playerid][t_AT_HOME] = i;
    SetCameraBehindPlayer(jugador);
    TogglePlayerControlable(reproductor, falso);
GameTextForPlayer(jugador, "~g~Cargando~n~ ~w~~h~~h~Objetos", 3000, 1);
TEMPORAL_PLAYER[playerid][t_TIMER][2] = SetTimerEx("RemoverObjectos", 3000, false, "i", playerid);
regreso 1;
}
otra cosa
{
    ShowPlayerMessage(jugador, "~y~No eres el dueño de esta propiedad", 3);
}
}
otra cosa
{
    ShowPlayerMessage(jugador, "~r~Cerrado", 3);
}
regreso 1;
}
}
regreso 1;
}


CMD:salir(jugador, params[])
{

para (new i = 0; i < MAX_PROPERTY; i++) //- Sistema de casas

{

if(IsPlayerInRangeOfPoint(playerid, 1.0, INFO_PROPERTY[i][p_POS_INT][0], INFO_PROPERTY[i][p_POS_INT][1], INFO_PROPERTY[i][p_POS_INT][2]))

{

SetPlayerPosEx(playerid, INFO_PROPERTY[i][p_POS_EXT][0], INFO_PROPERTY[i][p_POS_EXT][1], INFO_PROPERTY[i][p_POS_EXT][2], 0.0, 0, 0);

TEMPORAL_PLAYER[playerid][t_AT_HOME] = -1;

    SetCameraBehindPlayer(jugador);

    TogglePlayerControlable(reproductor, falso);

GameTextForPlayer(jugador, "~g~Cargando~n~ ~w~~h~~h~Objetos", 3000, 1);

TEMPORAL_PLAYER[playerid][t_TIMER][2] = SetTimerEx("RemoverObjectos", 3000, false, "i", playerid);

regreso 1;

}

}

regreso 1;
}



no se que hacer
  Reply
#2
me equivoque era, tengo un problema con mi sistema de casas por ejemplo compro la casa ID 0 y la ID 1 bueno entro a la ID 1 y cuando salgo de la ID 1 salgo en la ID 0 no se si es porque mi es servidor TD¿M?
  Reply
#3
Isso provavelmente acontece porque as coisas tem os mesmos interiores, e quando você vai sair da casa, você está em uma posição que é a mesma das outras casa, "interior", o que eu faço para resolver essa questão é setar o virtual world para o id da casa.

PHP Code:
CMD:entrar(jugadorparams[])
{
para (new 0MAX_PROPERTYi++) //- Sistema de casas
{
if(
IsPlayerInRangeOfPoint(playerid1.0INFO_PROPERTY[i][p_POS_EXT][0], INFO_PROPERTY[i][p_POS_EXT][1], INFO_PROPERTY[i][p_POS_EXT][2]))
{
    if(
INFO_PROPERTY[i][p_CLOSED] == 0)
    {
¡¡if(INFO_PROPERTY[i][p_BOUGHT] == && !strcmp(PlayerName(playerid), INFO_PROPERTY[i][p_OWNER]))
{
SetPlayerPosEx(playeridINFO_PROPERTY[i][p_POS_INT][0], INFO_PROPERTY[i][p_POS_INT][1], INFO_PROPERTY[i][p_POS_INT][2], 0.0INFO_PROPERTY[i][p_INTERIOR], i+10);
SetPlayerVirtualWorld(playeridi); // seta o virtual world para o id da casa
TEMPORAL_PLAYER[playerid][t_AT_HOME] = i;
    
SetCameraBehindPlayer(jugador);
    
TogglePlayerControlable(reproductorfalso);
GameTextForPlayer(jugador"~g~Cargando~n~ ~w~~h~~h~Objetos"30001);
TEMPORAL_PLAYER[playerid][t_TIMER][2] = SetTimerEx("RemoverObjectos"3000false"i"playerid);
regreso 1;
}
otra cosa
{
    
ShowPlayerMessage(jugador"~y~No eres el dueño de esta propiedad"3);
}
}
otra cosa
{
    
ShowPlayerMessage(jugador"~r~Cerrado"3);
}
regreso 1;
}
}
regreso 1;
}

CMD:salir(jugadorparams[])
{

para (new 0MAX_PROPERTYi++) //- Sistema de casas

{

if(
IsPlayerInRangeOfPoint(playerid1.0INFO_PROPERTY[i][p_POS_INT][0], INFO_PROPERTY[i][p_POS_INT][1], INFO_PROPERTY[i][p_POS_INT][2]))

{
new 
GetPlayerVirtualWorld(playerid); // pega o id do virtualworld que em teoria é o id da casa
SetPlayerPosEx(playeridINFO_PROPERTY[j][p_POS_EXT][0], INFO_PROPERTY[j][p_POS_EXT][1], INFO_PROPERTY[j][p_POS_EXT][2], 0.000);

TEMPORAL_PLAYER[playerid][t_AT_HOME] = -1;

    
SetCameraBehindPlayer(jugador);

    
TogglePlayerControlable(reproductorfalso);

GameTextForPlayer(jugador"~g~Cargando~n~ ~w~~h~~h~Objetos"30001);

TEMPORAL_PLAYER[playerid][t_TIMER][2] = SetTimerEx("RemoverObjectos"3000false"i"playerid);

regreso 1;

}

}

regreso 1;


tem várias outras maneiras de corrigir isso, mas essa foi a que eu fiz, da para fazer por variáveis armazenada diretamente no player também, espero que consiga compreender minha solução ;)
  Reply


Forum Jump: