[Help]Problema con Labels/Casas
#1

Bueno, la cuestiуn es que ando armando un Hotel para un servidor y el tema es que tengo un problema. Las funciones del hotel funcionan todas a la perfecciуn mi problema es con los Labels/Pickups los cuales son creados en la ultima habitaciуn (ID en la consola me indica que todos fueron creados pero al ingresar al servidor de pruebas noto que no es asн. їCuбl es mi error?
pawn Код:
// mбs arriba
new Text3D:Alquiler3DText[MAX_ALQUILER];
//despuйs la funciуn
function UpdateTextDrawAlquiler(alquilerid)
{
    new string[256];
    if(AlquilerInfo[alquilerid][aEstadoAlquiler] == 0)
    {
        Delete3DTextLabel(Alquiler3DText[alquilerid]);
        DestroyPickup(AlquilerPickup[alquilerid]);
        format(string, sizeof(string), "{00FF7B}Propiedad en alquiler\nValor: %d$\nID: %d\nUtilice /alquilar",AlquilerInfo[alquilerid][aPrecioRenta],AlquilerInfo[alquilerid][aAlquilerID],AlquilerInfo[alquilerid][aAlquilerID]);
        Alquiler3DText[alquilerid] = Create3DTextLabel(string,COLOR_GREEN, AlquilerInfo[alquilerid][aEntradaX], AlquilerInfo[alquilerid][aEntradaY], AlquilerInfo[alquilerid][aEntradaZ],40.0,0,0);
        printf("%s", string);
        AlquilerPickup[alquilerid] = CreatePickup(1273, 1, AlquilerInfo[alquilerid][aEntradaX], AlquilerInfo[alquilerid][aEntradaY], AlquilerInfo[alquilerid][aEntradaZ],-1);
    }
    else
    {
        DestroyPickup(AlquilerPickup[alquilerid]);
        AlquilerPickup[alquilerid] = CreatePickup(1239, 1, AlquilerInfo[alquilerid][aEntradaX], AlquilerInfo[alquilerid][aEntradaY], AlquilerInfo[alquilerid][aEntradaZ],-1);
        if(AlquilerInfo[alquilerid][aEstadoAlquiler] > 0)
        {
            Delete3DTextLabel(Alquiler3DText[alquilerid]);
            format(string, sizeof(string), "{F2FF00}Propiedad alquilada \n Propietario: %s \nID: %d",AlquilerInfo[alquilerid][aPropietario],AlquilerInfo[alquilerid][aAlquilerID]);
            Alquiler3DText[alquilerid] = Create3DTextLabel(string,COLOR_GREEN, AlquilerInfo[alquilerid][aEntradaX], AlquilerInfo[alquilerid][aEntradaY], AlquilerInfo[alquilerid][aEntradaZ],40.0,0,0);
            printf("%s", string);
        }
    }
    return 1;
}
їCuбl es la soluciуn y cual es mi error? la verdad que ya me cansй de intentar sin poder solucionarlo cuando todo lo demбs ya estб listo.
Reply
#2

pawn Код:
function UpdateTextDrawAlquiler(playerid) {
    new string[256];
    if(AlquilerInfo[playerid][aEstadoAlquiler] == 0) {
        Delete3DTextLabel(Alquiler3DText[playerid]);
        DestroyPickup(AlquilerPickup[playerid]);
        format(string, sizeof(string), "{00FF7B}Propiedad en alquiler\nValor: %d$\nID: %d\nUtilice /alquilar",AlquilerInfo[alquilerid][aPrecioRenta],AlquilerInfo[playerid][aAlquilerID],AlquilerInfo[playerid][aAlquilerID]);
        Alquiler3DText[playerid] = Create3DTextLabel(string,COLOR_GREEN, AlquilerInfo[playerid][aEntradaX], AlquilerInfo[playerid][aEntradaY], AlquilerInfo[playerid][aEntradaZ],40.0,0,0);
        AlquilerPickup[playerid] = CreatePickup(1273, 1, AlquilerInfo[playerid][aEntradaX], AlquilerInfo[playerid][aEntradaY], AlquilerInfo[playerid][aEntradaZ],-1);
        printf("%s", string);
    }
    else
    {
        Delete3DTextLabel(Alquiler3DText[playerid]);
        DestroyPickup(AlquilerPickup[playerid]);
        AlquilerPickup[playerid] = CreatePickup(1239, 1, AlquilerInfo[playerid][aEntradaX], AlquilerInfo[playerid][aEntradaY], AlquilerInfo[playerid][aEntradaZ],-1);
        format(string, sizeof(string), "{F2FF00}Propiedad alquilada \n Propietario: %s \nID: %d",AlquilerInfo[playerid][aPropietario],AlquilerInfo[playerid][aAlquilerID]);
        Alquiler3DText[playerid] = Create3DTextLabel(string,COLOR_GREEN, AlquilerInfo[playerid][aEntradaX], AlquilerInfo[playerid][aEntradaY], AlquilerInfo[playerid][aEntradaZ],40.0,0,0);
        printf("%s", string);
    }
    return 1;
}
te recomiendo usar la variable AlquilerInfo[playerid][aEstadoAlquiler] con bool (negativo y positivo)
Reply
#3

Bititus lo que me pasaste no tiene setnido porque la variable AlquilerInfo no estб asignada a jugadores sino a las habitraciones de los departamentos. Osea la informaciуn que es sacada del .cfg en scriptfiles
Reply
#4

Quote:
Originally Posted by JustBored
Посмотреть сообщение
Bititus lo que me pasaste no tiene setnido porque la variable AlquilerInfo no estб asignada a jugadores sino a las habitraciones de los departamentos. Osea la informaciуn que es sacada del .cfg en scriptfiles
¬¬ , me base en lo ke pasaste, pense ke alquilerid era el id del jugador.
en tonce ke es lo ke obtiene el alquilerid ?

por ke el problema esta hay.
Reply
#5

A ver te paso los enums y el define
pawn Код:
enum aInfo
{
    aEstadoAlquiler,
    aCerradura,
    Float:aEntradaX,
    Float:aEntradaY,
    Float:aEntradaZ,
    Float:aSalidaX,
    Float:aSalidaY,
    Float:aSalidaZ,
    aPropietario[24],
    aAlquilerID,
    aPrecioRenta,
    aInt,
    aWorld
};
new AlquilerInfo[MAX_ALQUILER][aInfo];
pawn Код:
#define MAX_ALQUILER 8
Yo baso las variables en el enum ese. Despuйs utilizo el MAX_ALQUILER para definir todo lo que serнan enums bucles y eso por eso el enum se basa en el MAX_ALQUILER que serнan 8. Espero haberte pasado la informaciуn correcta.
Reply
#6

pawn Код:
// mбs arriba
new Text3D:Alquiler3DText[MAX_ALQUILER];

public OnGameModeInit()
{
    for( new alquilerid; alquilerid < MAX_ALQUILER; alquilerid++)
    {
    Alquiler3DText[alquilerid] = Create3DTextLabel("nada" ,COLOR_GREEN, AlquilerInfo[alquilerid][aEntradaX], AlquilerInfo[alquilerid][aEntradaY], AlquilerInfo[alquilerid][aEntradaZ],40.0,0,0);
    AlquilerPickup[alquilerid] = CreatePickup(1273, 1, AlquilerInfo[alquilerid][aEntradaX], AlquilerInfo[alquilerid][aEntradaY], AlquilerInfo[alquilerid][aEntradaZ],-1);
    UpdateTextDrawAlquiler(alquilerid);
    }

}

//despuйs la funciуn
function UpdateTextDrawAlquiler(alquilerid)
{
    new string[256];
    if(AlquilerInfo[alquilerid][aEstadoAlquiler] == 0)
    {
        format(string, sizeof(string), "{00FF7B}Propiedad en alquiler\nValor: %d$\nID: %d\nUtilice /alquilar",AlquilerInfo[alquilerid][aPrecioRenta],AlquilerInfo[alquilerid][aAlquilerID],AlquilerInfo[alquilerid][aAlquilerID]);
        Update3DTextLabelText(Alquiler3DText[alquilerid],COLOR_GREEN,string);
    }
    else
    {
        if(AlquilerInfo[alquilerid][aEstadoAlquiler] > 0)
        {
            format(string, sizeof(string), "{F2FF00}Propiedad alquilada \n Propietario: %s \nID: %d",AlquilerInfo[alquilerid][aPropietario],AlquilerInfo[alquilerid][aAlquilerID]);
            Update3DTextLabelText(Alquiler3DText[alquilerid],COLOR_GREEN,string);
            DestroyPickup(AlquilerPickup[alquilerid]);
            AlquilerPickup[alquilerid] = CreatePickup(1239, 1, AlquilerInfo[alquilerid][aEntradaX], AlquilerInfo[alquilerid][aEntradaY], AlquilerInfo[alquilerid][aEntradaZ],-1);
        }
    }
    return 1;
}
solo debes usar UpdateTextDrawAlquiler(alquilerid) cada ves que quieres cambiarle el valor.
Reply
#7

no sirve :C no entiendo el porquй. Sуlo se creo un solo pickup.
Reply
#8

creo ke el problema es ke no le estas dando posicion. a las variable

AlquilerInfo[playerid][aEntradaX], AlquilerInfo[playerid][aEntradaY], AlquilerInfo[playerid][aEntradaZ]

pawn Код:
#include <a_samp>

#define MAX_HOTELES (8)
new bool:HotelesRenta[MAX_HOTELES]=false;
new Text3D:HotelesRentaText[MAX_HOTELES];
new HotelesRentaPichup[MAX_HOTELES];
new Float:HotelesPos[MAX_HOTELES][3];

public OnFilterScriptInit() {
    for(new hotelesid=0; hotelesid<MAX_HOTELES; hotelesid++) {
        DestroyPickup(HotelesRentaPichup[hotelesid]);
        Delete3DTextLabel(HotelesRentaText[hotelesid]);
        //---> ACA DEBERIA IR L OKE CARGA LAS VARIABLES CON LAS POSICIONES
        HotelesRentaText[hotelesid] = Create3DTextLabel("_",-1,HotelesPos[0][hotelesid], HotelesPos[1][hotelesid], HotelesPos[2][hotelesid],40.0,-1,-1);
        CargarHoteles(hotelesid);
    }
    return 1;
}

stock CargarHoteles(hotelid) {
    if(HotelesRenta[hotelid] == false) {
        Update3DTextLabelText(HotelesRentaText[hotelid],-1,"Hotel Desocupado!");
        HotelesRentaPichup[hotelesid] = CreatePickup(1273, 1, HotelesPos[0][hotelesid], HotelesPos[1][hotelesid], HotelesPos[2][hotelesid],-1);
    }
    else if(HotelesRenta[hotelid] == true) {
        Update3DTextLabelText(HotelesRentaText[hotelid],-1,"Hotel Ocupado!");
        DestroyPickup(HotelesRentaPichup[hotelid]);
    }
    return 1;
}
Reply
#9

Coso, ahн masomenos lo arreglй. El tema es que si no uso un bucle carga sуlo la primera habitaciуn. Si uso un bucle carga solo el ultimo no entiendo porquй :SS
Reply
#10

Quizas el error estб en cuando CREAS esos hoteles. O los creas manualmente por el archivo cfg?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)