• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Problema con sistema de casa
#1
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 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)
    {
¡¡¡¡si(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;
}

CMD:crearcasa(jugador, params[])
{
nuevo tipo, precio, str[250];
if(sscanf(params, "dd", type, price)) volver SendClientMessage(playerid, -1, "Syntax: /crearcasa [tipo de casa] [price]");
¿si (tipo < 1 || tipo > 5) devolver SendClientMessage(playerid, -1, "Las casas est?n entre 1 y 5 espacios.");
  para (nuevo cid = 0; cid < MAX_PROPERTY; cid++)
{
¡si (!INFO_PROPERTY[cid][p_TIPO])
{
    GetPlayerPos(playerid, INFO_PROPERTY[cid][p_POS_EXT][0], INFO_PROPERTY[cid][p_POS_EXT][1], INFO_PROPERTY[cid][p_POS_EXT][2])
    INFO_PROPERTY[cid][p_TYPE] = tipo;
    INFO_PROPERTY[cid][p_BOUGHT] = 0;
    INFO_PROPERTY[cid][p_CERRADO] = 0;
switch(tipo)
{
    caso 1:
    {
INFO_PROPERTY[cid][p_POS_INT][0] = 446.7660;
INFO_PROPERTY[cid][p_POS_INT][1] = 507.1065;
INFO_PROPERTY[cid][p_POS_INT][2] = 1001.4206;
INFO_PROPERTY[cid][p_PRICE] = precio;
INFO_PROPERTY[cid][p_INTERIOR] = 12;
    }
    caso 2:
    {
INFO_PROPERTY[cid][p_POS_INT][0] = 2495.9719;
INFO_PROPERTY[cid][p_POS_INT][1] = -1693.5554;
INFO_PROPERTY[cid][p_POS_INT][2] = 1014.8061;
INFO_PROPERTY[cid][p_PRICE] = precio;
INFO_PROPERTY[cid][p_INTERIOR] = 3;
    }
    caso 3:
    {
INFO_PROPERTY[cid][p_POS_INT][0] = 2455.6968;
INFO_PROPERTY[cid][p_POS_INT][1] = -1698.3298;
INFO_PROPERTY[cid][p_POS_INT][2] = 1013.5068;
INFO_PROPERTY[cid][p_PRICE] = precio;
INFO_PROPERTY[cid][p_INTERIOR] = 2;
    }
    caso 4:
    {
INFO_PROPERTY[cid][p_POS_INT][0] = 2524.9165;
INFO_PROPERTY[cid][p_POS_INT][1] = -1679.4109;
INFO_PROPERTY[cid][p_POS_INT][2] = 1015.4873;
INFO_PROPERTY[cid][p_PRICE] = precio;
INFO_PROPERTY[cid][p_INTERIOR] = 1;
    }
    caso 5:
    {
INFO_PROPERTY[cid][p_POS_INT][0] = 2807.5103;
INFO_PROPERTY[cid][p_POS_INT][1] = -1174.0422;
INFO_PROPERTY[cid][p_POS_INT][2] = 1025.5898;
INFO_PROPERTY[cid][p_PRICE] = precio;
INFO_PROPERTY[cid][p_INTERIOR] = 8;
    }
}
    formato(str,sizeof(str),"{00A8FF}EN VENTA\n {FFFFFF}Precio:{00A8FF}%d\n {FFFFFF}ID casa:{00A8FF}%d\n {FFFFFF}Usa{00A8FF}/comprarcasa", precio, cid);
    INFO_PROPERTY[cid][p_LABEL] = Create3DTextLabel(str, -1, INFO_PROPERTY[cid][p_POS_EXT][0], INFO_PROPERTY[cid][p_POS_EXT][1], INFO_PROPERTY[cid][p_POS_EXT][2], 10.0, 0, 0);
CreateDynamicMapIcon(INFO_PROPERTY[cid][p_POS_EXT][0], INFO_PROPERTY[cid][p_POS_EXT][1], INFO_PROPERTY[cid][p_POS_EXT][2], 31, -1, 0, 0);
    ActualizarCasa(cid);
    cid = MAX_PROPERTY;
}
}
regreso 1;
}

no se que hacer porfa ayuda
  Reply
#2
Hi Nikolay,
I understand that your issue is when a player enters house ID 1 and then exits, they end up in a different house.

Simple solution:
Track the house ID the player enters and verify it when they exit to ensure they return to the correct location.

See a simple example below and i hope it helps you.


PHP Code:
CMD:enter(playerid)
{
    new houseID GetHouseID(playerid);

    if (houseID == -1
        return ShowError(playerid"You are not near any house!");

    if (PlayerInfo[playerid][pHouseID] != HouseInfo[houseID][hID])
    {
        return ShowError(playerid"You are not the owner of this house. Use /visit if the house is unlocked.");
    }

    SetPlayerInterior(playeridHouseInfo[houseID][hIntID]);
    SetPlayerPos(playeridHouseInfo[houseID][hIntX], HouseInfo[houseID][hIntY], HouseInfo[houseID][hIntZ]);
    SetPlayerVirtualWorld(playerid999 houseID);
    PlayerInfo[playerid][pInHouse] = houseID 1;

    SendClientMessage(playeridCOLOR_GREEN"SERVER: You have entered your house.");
    return 1;
}
CMD:exit(playerid)
{
    if (PlayerInfo[playerid][pInHouse] < 1
        return ShowError(playerid"You are not inside any interior!");

    new houseID PlayerInfo[playerid][pInHouse] - 1;

    if (houseID || houseID >= MAX_SERVER_HOUSES || HouseInfo[houseID][hIntID] != GetPlayerInterior(playerid)) return ShowError(playerid"House data is invalid or mismatched!");
    SetPlayerInterior(playerid0);
    SetPlayerPos(playeridHouseInfo[houseID][hExtX], HouseInfo[houseID][hExtY], HouseInfo[houseID][hExtZ]);
    SetPlayerVirtualWorld(playerid0);
    PlayerInfo[playerid][pInHouse] = 0;

    SendClientMessage(playeridCOLOR_GREEN"SERVER: You have exited the house.");
    return 1;

Currently building from 0
  Reply
#3
muchas gracias si me jalo jaja
  Reply


Forum Jump: