[Ajuda] Empresas nгo salvam.
#1

Bom galera mudei o salvamento das empresas do meu gm agora cada empresa tem seu bloco de notas so que comeco a dar um bug tipo quando player compra a empresa e reloga ou quando dou restart no server a empresa fica a venda queria ajuda de voces pra salvar elas certim.
pawn Код:
enum sbInfo
{
    sbOwned,
    sbOwner[64],
    sbMessage[128],
    sbExtortion[MAX_PLAYER_NAME],
    Float:sbEntranceX,
    Float:sbEntranceY,
    Float:sbEntranceZ,
    sbLevelNeeded,
    sbBuyPrice,
    sbEntranceCost,
    sbTill,
    sbLocked,
};
enum bInfo
{
    bOwned,
    bOwner[64],
    bMessage[128],
    bExtortion[MAX_PLAYER_NAME],
    Float:bEntranceX,
    Float:bEntranceY,
    Float:bEntranceZ,
    Float:bExitX,
    Float:bExitY,
    Float:bExitZ,
    bLevelNeeded,
    bBuyPrice,
    bEntranceCost,
    bTill,
    bLocked,
    bInterior,
};
public LoadBizz()
{
    new file[64];
    for(new idx = 0; idx < sizeof(BizzInfo) ; idx++)
    {
        format(file, sizeof(file),"Configs/Empint/%d.ini", idx);
        BizzInfo[idx][bOwned] = dini_Int(file,"Owned");
        strmid(BizzInfo[idx][bOwner], dini_Get(file,"Owner"), 0, strlen(dini_Get(file,"Owner")), 255);
        strmid(BizzInfo[idx][bMessage], dini_Get(file,"Message"), 0, strlen(dini_Get(file,"Message")), 255);
        strmid(BizzInfo[idx][bExtortion], dini_Get(file,"ExtortionBy"), 0, strlen(dini_Get(file,"ExtortionBy")), 255);
        BizzInfo[idx][bEntranceX] = dini_Float(file,"Entrance_X");
        BizzInfo[idx][bEntranceY] = dini_Float(file,"Entrance_Y");
        BizzInfo[idx][bEntranceZ] = dini_Float(file,"Entrance_Z");
        BizzInfo[idx][bExitX] = dini_Float(file,"Exit_X");
        BizzInfo[idx][bExitY] = dini_Float(file,"Exit_Y");
        BizzInfo[idx][bExitZ] = dini_Float(file,"Exit_Z");
        BizzInfo[idx][bLevelNeeded] = dini_Int(file,"LevelNeeded");
        BizzInfo[idx][bBuyPrice] = dini_Int(file,"Price");
        BizzInfo[idx][bEntranceCost] = dini_Int(file,"EntranceCost");
        BizzInfo[idx][bTill] = dini_Int(file,"Till");
        BizzInfo[idx][bLocked] = dini_Int(file,"Locked");
        BizzInfo[idx][bInterior] = dini_Int(file,"Interior");
    }
    print("[SCRIPT]: Empresas Com interiores carregadas com sucesso!");
    return 1;
}
public LoadSBizz()
{
    new file[64];
    for(new idx = 0; idx < sizeof(SBizzInfo) ; idx++)
    {
        format(file, sizeof(file),"Configs/EmpSemint/%d.ini", idx);

        SBizzInfo[idx][sbOwned] = dini_Int(file,"Owned");
        strmid(SBizzInfo[idx][sbOwner], dini_Get(file,"Owner"), 0, strlen(dini_Get(file,"Owner")), 255);
        strmid(SBizzInfo[idx][sbMessage], dini_Get(file,"Message"), 0, strlen(dini_Get(file,"Message")), 255);
        strmid(SBizzInfo[idx][sbExtortion], dini_Get(file,"ExtortionBy"), 0, strlen(dini_Get(file,"ExtortionBy")), 255);
        SBizzInfo[idx][sbEntranceX] = dini_Float(file,"Entrance_X");
        SBizzInfo[idx][sbEntranceY] = dini_Float(file,"Entrance_Y");
        SBizzInfo[idx][sbEntranceZ] = dini_Float(file,"Entrance_Z");
        SBizzInfo[idx][sbLevelNeeded] = dini_Int(file,"LevelNeeded");
        SBizzInfo[idx][sbBuyPrice] = dini_Int(file,"Price");
        SBizzInfo[idx][sbEntranceCost] = dini_Int(file,"EntranceCost");
        SBizzInfo[idx][sbTill] = dini_Int(file,"Till");
        SBizzInfo[idx][sbLocked] = dini_Int(file,"Locked");
    }
    print("[SCRIPT]: Empresas Sem interiores carregadas com sucesso!");
    return 1;
}
public OnPropUpdate()
{
    new idx;
    new file[64];
    new update;
    new File: file2;
    while (idx < sizeof(HouseInfo))
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "%f,%f,%f,%f,%f,%f,%d,%d,%d,%d,%d,%d,%s,%s,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
        HouseInfo[idx][hEntrancex],
        HouseInfo[idx][hEntrancey],
        HouseInfo[idx][hEntrancez],
        HouseInfo[idx][hExitx],
        HouseInfo[idx][hExity],
        HouseInfo[idx][hExitz],
        HouseInfo[idx][hHealthx],
        HouseInfo[idx][hHealthy],
        HouseInfo[idx][hHealthz],
        HouseInfo[idx][hArmorrx],
        HouseInfo[idx][hArmorry],
        HouseInfo[idx][hArmorrz],
        HouseInfo[idx][hOwner],
        HouseInfo[idx][hDiscription],
        HouseInfo[idx][hValue],
        HouseInfo[idx][hHel],
        HouseInfo[idx][hArm],
        HouseInfo[idx][hInt],
        HouseInfo[idx][hLock],
        HouseInfo[idx][hOwned],
        HouseInfo[idx][hRooms],
        HouseInfo[idx][hRent],
        HouseInfo[idx][hRentabil],
        HouseInfo[idx][hTakings],
        HouseInfo[idx][hVec],
        HouseInfo[idx][hVcol1],
        HouseInfo[idx][hVcol2],
        HouseInfo[idx][hDate],
        HouseInfo[idx][hLevel],
        HouseInfo[idx][hWorld]);
        HouseInfo[idx][hWorld] = idx;
        if(idx == 0)
        {
            file2 = fopen("Configs/property.cfg", io_write);
        }
        else
        {
            file2 = fopen("Configs/property.cfg", io_append);
        }
        fwrite(file2, coordsstring);
        idx++;
        fclose(file2);
    }
    idx = 0;
    if(update == 2)
    {
        format(file, sizeof(file),"Configs/Empint/%d.ini",idx);
        if(!dini_Exists(file))
        {
            dini_Create(file);
        }
        dini_IntSet(file,"Owned",BizzInfo[idx][bOwned]);
        dini_Set(file,"Owner",BizzInfo[idx][bOwner]);
        dini_Set(file,"Message",BizzInfo[idx][bMessage]);
        dini_Set(file,"ExtortionBy",BizzInfo[idx][bExtortion]);
        dini_FloatSet(file,"Entrance_X",BizzInfo[idx][bEntranceX]);
        dini_FloatSet(file,"Entrance_Y",BizzInfo[idx][bEntranceY]);
        dini_FloatSet(file,"Entrance_Z",BizzInfo[idx][bEntranceZ]);
        dini_FloatSet(file,"Exit_X",BizzInfo[idx][bExitX]);
        dini_FloatSet(file,"Exit_Y",BizzInfo[idx][bExitY]);
        dini_FloatSet(file,"Exit_Z",BizzInfo[idx][bExitZ]);
        dini_IntSet(file,"LevelNeeded",BizzInfo[idx][bLevelNeeded]);
        dini_IntSet(file,"Price",BizzInfo[idx][bBuyPrice]);
        dini_IntSet(file,"EntranceCost",BizzInfo[idx][bEntranceCost]);
        dini_IntSet(file,"Till",BizzInfo[idx][bTill]);
        dini_IntSet(file,"Locked",BizzInfo[idx][bLocked]);
        dini_IntSet(file,"Interior",BizzInfo[idx][bInterior]);
    }
    else if(update == 3)
    {
        format(file, sizeof(file),"Configs/EmpSemint/%d.ini",idx);
        if(!dini_Exists(file))
        {
            dini_Create(file);
        }
        dini_IntSet(file,"Owned",SBizzInfo[idx][sbOwned]);
        dini_Set(file,"Owner",SBizzInfo[idx][sbOwner]);
        dini_Set(file,"Message",SBizzInfo[idx][sbMessage]);
        dini_Set(file,"ExtortionBy",SBizzInfo[idx][sbExtortion]);
        dini_FloatSet(file,"Entrance_X",SBizzInfo[idx][sbEntranceX]);
        dini_FloatSet(file,"Entrance_Y",SBizzInfo[idx][sbEntranceY]);
        dini_FloatSet(file,"Entrance_Z",SBizzInfo[idx][sbEntranceZ]);
        dini_IntSet(file,"LevelNeeded",SBizzInfo[idx][sbLevelNeeded]);
        dini_IntSet(file,"Price",SBizzInfo[idx][sbBuyPrice]);
        dini_IntSet(file,"EntranceCost",SBizzInfo[idx][sbEntranceCost]);
        dini_IntSet(file,"Till",SBizzInfo[idx][sbTill]);
        dini_IntSet(file,"Locked",SBizzInfo[idx][sbLocked]);
    }
    return 1;
}
OBS: nao ta faltando OnPropUpdate(); eu conferi tao em todas publics de salvamento certo, acho que pode ser algum erro ae.
Reply
#2

O problema estб no OnPropUpdate .



Em Pawn, o valor 0 й atribuнdo аs variбveis nгo-inicializadas.



Entгo, apenas escrever isto :


pawn Код:
new update;

Faria as expressхes das construзхes if que contкm os cуdigos de salvamento das empresas serem sempre falsas:


pawn Код:
update == 2

pawn Код:
update == 3

Consertei a funзгo :


pawn Код:
public OnPropUpdate()
{
    new idx;
    new file[64];
    new File: file2;
    while(idx < sizeof(HouseInfo))
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "%f,%f,%f,%f,%f,%f,%d,%d,%d,%d,%d,%d,%s,%s,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
        HouseInfo[idx][hEntrancex],
        HouseInfo[idx][hEntrancey],
        HouseInfo[idx][hEntrancez],
        HouseInfo[idx][hExitx],
        HouseInfo[idx][hExity],
        HouseInfo[idx][hExitz],
        HouseInfo[idx][hHealthx],
        HouseInfo[idx][hHealthy],
        HouseInfo[idx][hHealthz],
        HouseInfo[idx][hArmorrx],
        HouseInfo[idx][hArmorry],
        HouseInfo[idx][hArmorrz],
        HouseInfo[idx][hOwner],
        HouseInfo[idx][hDiscription],
        HouseInfo[idx][hValue],
        HouseInfo[idx][hHel],
        HouseInfo[idx][hArm],
        HouseInfo[idx][hInt],
        HouseInfo[idx][hLock],
        HouseInfo[idx][hOwned],
        HouseInfo[idx][hRooms],
        HouseInfo[idx][hRent],
        HouseInfo[idx][hRentabil],
        HouseInfo[idx][hTakings],
        HouseInfo[idx][hVec],
        HouseInfo[idx][hVcol1],
        HouseInfo[idx][hVcol2],
        HouseInfo[idx][hDate],
        HouseInfo[idx][hLevel],
        HouseInfo[idx][hWorld]);
        HouseInfo[idx][hWorld] = idx;
        if(idx == 0)
        {
            file2 = fopen("Configs/property.cfg", io_write);
        }
        else
        {
            file2 = fopen("Configs/property.cfg", io_append);
        }
        fwrite(file2, coordsstring);
        fclose(file2);
        idx++;
    }
    idx = 0;
    while(idx < sizeof(BizzInfo))
    {
        format(file, sizeof(file),"Configs/Empint/%d.ini",idx);
        if(!dini_Exists(file))
        {
            dini_Create(file);
        }
        dini_IntSet(file,"Owned",BizzInfo[idx][bOwned]);
        dini_Set(file,"Owner",BizzInfo[idx][bOwner]);
        dini_Set(file,"Message",BizzInfo[idx][bMessage]);
        dini_Set(file,"ExtortionBy",BizzInfo[idx][bExtortion]);
        dini_FloatSet(file,"Entrance_X",BizzInfo[idx][bEntranceX]);
        dini_FloatSet(file,"Entrance_Y",BizzInfo[idx][bEntranceY]);
        dini_FloatSet(file,"Entrance_Z",BizzInfo[idx][bEntranceZ]);
        dini_FloatSet(file,"Exit_X",BizzInfo[idx][bExitX]);
        dini_FloatSet(file,"Exit_Y",BizzInfo[idx][bExitY]);
        dini_FloatSet(file,"Exit_Z",BizzInfo[idx][bExitZ]);
        dini_IntSet(file,"LevelNeeded",BizzInfo[idx][bLevelNeeded]);
        dini_IntSet(file,"Price",BizzInfo[idx][bBuyPrice]);
        dini_IntSet(file,"EntranceCost",BizzInfo[idx][bEntranceCost]);
        dini_IntSet(file,"Till",BizzInfo[idx][bTill]);
        dini_IntSet(file,"Locked",BizzInfo[idx][bLocked]);
        dini_IntSet(file,"Interior",BizzInfo[idx][bInterior]);
        idx++;
    }
    idx = 0;
    while(idx < sizeof(SBizzInfo))
    {
        format(file, sizeof(file),"Configs/EmpSemint/%d.ini",idx);
        if(!dini_Exists(file))
        {
            dini_Create(file);
        }
        dini_IntSet(file,"Owned",SBizzInfo[idx][sbOwned]);
        dini_Set(file,"Owner",SBizzInfo[idx][sbOwner]);
        dini_Set(file,"Message",SBizzInfo[idx][sbMessage]);
        dini_Set(file,"ExtortionBy",SBizzInfo[idx][sbExtortion]);
        dini_FloatSet(file,"Entrance_X",SBizzInfo[idx][sbEntranceX]);
        dini_FloatSet(file,"Entrance_Y",SBizzInfo[idx][sbEntranceY]);
        dini_FloatSet(file,"Entrance_Z",SBizzInfo[idx][sbEntranceZ]);
        dini_IntSet(file,"LevelNeeded",SBizzInfo[idx][sbLevelNeeded]);
        dini_IntSet(file,"Price",SBizzInfo[idx][sbBuyPrice]);
        dini_IntSet(file,"EntranceCost",SBizzInfo[idx][sbEntranceCost]);
        dini_IntSet(file,"Till",SBizzInfo[idx][sbTill]);
        dini_IntSet(file,"Locked",SBizzInfo[idx][sbLocked]);
        idx++;
    }
    return 1;
}


Espero ter ajudado .
Reply
#3

Quote:
Originally Posted by rjjj
Посмотреть сообщение
O problema estб no OnPropUpdate .



Em Pawn, o valor 0 й atribuнdo аs variбveis nгo-inicializadas.



Entгo, apenas escrever isto :


pawn Код:
new update;

Faria as expressхes das construзхes if que contкm os cуdigos de salvamento das empresas serem sempre falsas:


pawn Код:
update == 2

pawn Код:
update == 3

Consertei a funзгo :


pawn Код:
public OnPropUpdate()
{
    new idx;
    new file[64];
    new File: file2;
    while(idx < sizeof(HouseInfo))
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "%f,%f,%f,%f,%f,%f,%d,%d,%d,%d,%d,%d,%s,%s,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
        HouseInfo[idx][hEntrancex],
        HouseInfo[idx][hEntrancey],
        HouseInfo[idx][hEntrancez],
        HouseInfo[idx][hExitx],
        HouseInfo[idx][hExity],
        HouseInfo[idx][hExitz],
        HouseInfo[idx][hHealthx],
        HouseInfo[idx][hHealthy],
        HouseInfo[idx][hHealthz],
        HouseInfo[idx][hArmorrx],
        HouseInfo[idx][hArmorry],
        HouseInfo[idx][hArmorrz],
        HouseInfo[idx][hOwner],
        HouseInfo[idx][hDiscription],
        HouseInfo[idx][hValue],
        HouseInfo[idx][hHel],
        HouseInfo[idx][hArm],
        HouseInfo[idx][hInt],
        HouseInfo[idx][hLock],
        HouseInfo[idx][hOwned],
        HouseInfo[idx][hRooms],
        HouseInfo[idx][hRent],
        HouseInfo[idx][hRentabil],
        HouseInfo[idx][hTakings],
        HouseInfo[idx][hVec],
        HouseInfo[idx][hVcol1],
        HouseInfo[idx][hVcol2],
        HouseInfo[idx][hDate],
        HouseInfo[idx][hLevel],
        HouseInfo[idx][hWorld]);
        HouseInfo[idx][hWorld] = idx;
        if(idx == 0)
        {
            file2 = fopen("Configs/property.cfg", io_write);
        }
        else
        {
            file2 = fopen("Configs/property.cfg", io_append);
        }
        fwrite(file2, coordsstring);
        fclose(file2);
        idx++;
    }
    idx = 0;
    while(idx < sizeof(BizzInfo))
    {
        format(file, sizeof(file),"Configs/Empint/%d.ini",idx);
        if(!dini_Exists(file))
        {
            dini_Create(file);
        }
        dini_IntSet(file,"Owned",BizzInfo[idx][bOwned]);
        dini_Set(file,"Owner",BizzInfo[idx][bOwner]);
        dini_Set(file,"Message",BizzInfo[idx][bMessage]);
        dini_Set(file,"ExtortionBy",BizzInfo[idx][bExtortion]);
        dini_FloatSet(file,"Entrance_X",BizzInfo[idx][bEntranceX]);
        dini_FloatSet(file,"Entrance_Y",BizzInfo[idx][bEntranceY]);
        dini_FloatSet(file,"Entrance_Z",BizzInfo[idx][bEntranceZ]);
        dini_FloatSet(file,"Exit_X",BizzInfo[idx][bExitX]);
        dini_FloatSet(file,"Exit_Y",BizzInfo[idx][bExitY]);
        dini_FloatSet(file,"Exit_Z",BizzInfo[idx][bExitZ]);
        dini_IntSet(file,"LevelNeeded",BizzInfo[idx][bLevelNeeded]);
        dini_IntSet(file,"Price",BizzInfo[idx][bBuyPrice]);
        dini_IntSet(file,"EntranceCost",BizzInfo[idx][bEntranceCost]);
        dini_IntSet(file,"Till",BizzInfo[idx][bTill]);
        dini_IntSet(file,"Locked",BizzInfo[idx][bLocked]);
        dini_IntSet(file,"Interior",BizzInfo[idx][bInterior]);
        idx++;
    }
    idx = 0;
    while(idx < sizeof(SBizzInfo))
    {
        format(file, sizeof(file),"Configs/EmpSemint/%d.ini",idx);
        if(!dini_Exists(file))
        {
            dini_Create(file);
        }
        dini_IntSet(file,"Owned",SBizzInfo[idx][sbOwned]);
        dini_Set(file,"Owner",SBizzInfo[idx][sbOwner]);
        dini_Set(file,"Message",SBizzInfo[idx][sbMessage]);
        dini_Set(file,"ExtortionBy",SBizzInfo[idx][sbExtortion]);
        dini_FloatSet(file,"Entrance_X",SBizzInfo[idx][sbEntranceX]);
        dini_FloatSet(file,"Entrance_Y",SBizzInfo[idx][sbEntranceY]);
        dini_FloatSet(file,"Entrance_Z",SBizzInfo[idx][sbEntranceZ]);
        dini_IntSet(file,"LevelNeeded",SBizzInfo[idx][sbLevelNeeded]);
        dini_IntSet(file,"Price",SBizzInfo[idx][sbBuyPrice]);
        dini_IntSet(file,"EntranceCost",SBizzInfo[idx][sbEntranceCost]);
        dini_IntSet(file,"Till",SBizzInfo[idx][sbTill]);
        dini_IntSet(file,"Locked",SBizzInfo[idx][sbLocked]);
        idx++;
    }
    return 1;
}


Espero ter ajudado .
vlw manim.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)