Ucitavanje objekata iz scriptfiles pri pokretanju servera

Započeo bogisa99
pre 4 meseca
196
pregleda
5
postova
bogisa99
Wheel Man
pre 4 meseca
Naslov problema*: Ucitavanje objekata iz scriptfiles pri pokretanju servera

Opis problema*: Pravim neki sistem za dodavanje namestaja u kuce, objekti se uopste ne kreiraju pri porketanju servera i funkcija UcitajHouseItem uopste ne vraca DEBUG kao da se uopste ne poziva

Pokušaj rešavanja*: Sve zivo

Deo programskog koda*: stock SacuvajHouseItem(houseid, idxd)
{
    new hiFile;

    format(hiFile, sizeof(hiFile), "HouseItems/%d/%d.ini", houseid,  idxd); // putanja fajla
    new INI:File = INI_Open(hiFile);

    INI_WriteInt(File, "ItemID", HouseItemInfo);
    INI_WriteInt(File, "ObjID", HouseItemInfo);
    INI_WriteInt(File, "Model", HouseItemInfo);
    INI_WriteFloat(File, "PosX", HouseItemInfo);
    INI_WriteFloat(File, "PosY", HouseItemInfo);
    INI_WriteFloat(File, "PosZ", HouseItemInfo);
    INI_WriteFloat(File, "RotX", HouseItemInfo);
    INI_WriteFloat(File, "RotY", HouseItemInfo);
    INI_WriteFloat(File, "RotZ", HouseItemInfo);
    INI_WriteInt(File, "Int", HouseItemInfo);
    INI_WriteInt(File, "VW", HouseItemInfo);
    INI_Close(File);
    return 1;
}

public UcitajHouseItem(extraid, const name[], const value[])
{
    new houseid = extraid / 1000;
    new objid = extraid % 1000;

    INI_Int("ItemID", HouseItemInfo);
    INI_Int("ObjID", HouseItemInfo);
    INI_Int("Model", HouseItemInfo);
    INI_Float("PosX", HouseItemInfo);
    INI_Float("PosY", HouseItemInfo);
    INI_Float("PosZ", HouseItemInfo);
    INI_Float("RotX", HouseItemInfo);
    INI_Float("RotY", HouseItemInfo);
    INI_Float("RotZ", HouseItemInfo);
    INI_Int("Int", HouseItemInfo);
    INI_Int("VW", HouseItemInfo);

    HouseItemInfo = CreateDynamicObject(
        HouseItemInfo,
        HouseItemInfo,
        HouseItemInfo,
        HouseItemInfo,
        HouseItemInfo,
        HouseItemInfo,
        HouseItemInfo,
        HouseItemInfo,
        HouseItemInfo
    );

    return 1;
}

for(new id = 1; id < MAX_HOUSE; id++)
    {
        new hFile;
        format(hFile, sizeof(hFile), KUCE_PATH, id);

        if(fexist(hFile))
        {
            INI_ParseFile(hFile, "UcitajKuce", .bExtra = true, .extra = id);
            UpdateHouseLabel(id);

          for(new o = 0; o < MAX_HOUSE_OBJECTS; o++)
            {
                new itemFile;
                format(itemFile, sizeof(itemFile), "HouseItems/%d/%d.ini", id, o);
                printf("TRAZIM: %s", itemFile);

                if(fexist(itemFile))
                {
                    if(!INI_ParseFile(itemFile, "UcitajHouseItem", .bExtra = true, .extra = id*1000 + o))
                    {
                        printf(" INI_ParseFile nije uspeo za: %s", itemFile);
                    }
                    else
                    {
                        printf(" INI_ParseFile ok za: %s", itemFile);
                    }
                }
            }
           
        }
    }

Debug informacije: TRAZIM: HouseItems/3/1.ini
[02:49:34] INI_ParseFile ok za: HouseItems/3/1.ini
[02:49:34] TRAZIM: HouseItems/3/2.ini
[02:49:34] INI_ParseFile ok za: HouseItems/3/2.ini
[02:49:34] TRAZIM: HouseItems/3/3.ini
[02:49:34] INI_ParseFile ok za: HouseItems/3/3.ini

Fotografija problema u igri: Vaš odgovor

Korišćene biblioteke (includes): Vaš odgovor

Dodatne informacije: Vaš odgovor
Paulinjo22
Rookie
pre 4 meseca
Po ovome bih rekao da ti pravi CreateDynamicObject pravi prazan objekat ili ga cak i nepravi jer je model 0?
Za printf probaj ovako nesto
printf(" cb UcitajHouseItem extraid=%d key=%s val=%s", extraid, name, value); odma ispod public i ovako bi ja nesto uradio

printf(" cb UcitajHouseItem extraid=%d key=%s val=%s", extraid, name, value);

    new houseid = extraid / 1000;
    new objid   = extraid % 1000;

    INI_Int  ("ItemID", HouseItemInfo);
    INI_Int  ("ObjID",  HouseItemInfo);
    INI_Int  ("Model",  HouseItemInfo);
    INI_Float("PosX",   HouseItemInfo);
    INI_Float("PosY",   HouseItemInfo);
    INI_Float("PosZ",   HouseItemInfo);
    INI_Float("RotX",   HouseItemInfo);
    INI_Float("RotY",   HouseItemInfo);
    INI_Float("RotZ",   HouseItemInfo);
    INI_Int  ("Int",    HouseItemInfo);
    INI_Int  ("VW",     HouseItemInfo);

    // sad krecemo sa kreiranjem ("VW") jer po nekoj logici tek sad treba da se kreira dok yini obradi
    if (!strcmp(name, "VW", true))
    {
        new model = HouseItemInfo;
        if (model <= 0)
        {
            printf(" house=%d obj=%d ima nevažeći model=%d (preskačem kreiranje).", houseid, objid, model);
            return 1;
        }

        HouseItemInfo = CreateDynamicObject(model,HouseItemInfo,
            HouseItemInfo,
            HouseItemInfo,
            HouseItemInfo,
            HouseItemInfo,
            HouseItemInfo,
            HouseItemInfo, // worldid
            HouseItemInfo // interiorid
        );

        printf(" Kreiran object id=%d (model=%d) za house=%d obj=%d VW=%d INT=%d.",
            HouseItemInfo,
            model, houseid, objid,
            HouseItemInfo,
            HouseItemInfo
        );
    }
    return 1;
}

Probaj ti sam da dodas vrednosti u scriptfiles model,kordinate i vidi sta se desava i posalji kompletan house jer ovako je samo nagadjanje
bogisa99
Wheel Man
pre 4 meseca
https://pastebin.com/8PRJy19G

posle dodavanja tvog printf

TRAZIM: HouseItems/3/1.ini
[10:27:02] cb UcitajHouseItem extraid=3001 key=ItemID val=1
[10:27:02] cb UcitajHouseItem extraid=3001 key=ObjID val=0
[10:27:02] cb UcitajHouseItem extraid=3001 key=Model val=1814
[10:27:02] cb UcitajHouseItem extraid=3001 key=PosX val=2282.885498
[10:27:02] cb UcitajHouseItem extraid=3001 key=PosY val=-1138.485717
[10:27:02] cb UcitajHouseItem extraid=3001 key=PosZ val=1049.888305
[10:27:02] cb UcitajHouseItem extraid=3001 key=RotX val=0.000000
[10:27:02] cb UcitajHouseItem extraid=3001 key=RotY val=0.000000
[10:27:02] cb UcitajHouseItem extraid=3001 key=RotZ val=0.000000
[10:27:02] cb UcitajHouseItem extraid=3001 key=Int val=11
[10:27:02] cb UcitajHouseItem extraid=3001 key=VW val=3
[10:27:02] INI_ParseFile ok za: HouseItems/3/1.ini
Paulinjo22
Rookie
pre 4 meseca
Po ovome moze da bude streamer plugin,wv i enterior probaj da budes u vw 3 i enterijeru 11 da bi video da li radi ili ne.
Jako losa stvar sto se objid ne upisuje u yini jer je to run time vrednost, i moguce da ga parsiras
bogisa99
Wheel Man
pre 4 meseca
Reseno

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava