[AJUDA] Salvamentos
#1

Olб, criei o tуpico pra pedir ajuda sobre 2 coisas.
1Є Salvar informaзхes do player. Bom, tenho 2 stocks, uma pra salvar e outra pra carregar os dados dos players. Entгo ao logar eu ponho a funзгo de carregar e ao desconectar ponho a funзгo pra salvar. Sу que sу salva quando o player dб /q,ou seja, se desconecta por vontade prуpria, e aн tem alguns casos que nгo salva, queria saber se tem outra public onde pode por pra salvar tambйm (jб pus em OnGameModeExit e nгo dб), se nгo vou ter que usar SetTimer como sugeriu o Gustavo.

2Є Nгo to conseguindo salvar ID do carro, to fazendo um comando onde abre uma lista de carros pro player comprar, e queria fazer com que fosse subindo o ID de 1 em diante, tipo, eu compro um carro, ele salva como ID 1, ai outro player compra outro, salva como ID 2, etc. Tentei salvar usando GetPlayerVehicleID mas nгo deu.
Bom й isso, quem me ajudar, eu agradeзo e dou +rep =D
Reply
#2

Bom, comigo nunca aconteceu isso de sу salvar se der /q, mas tenta usar isso:

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    switch(reason)
    {
        case 0, 1, 2: SalvarPlayer(playerid);
    }
    return true;
}
Jб a segunda faz assim:
pawn Код:
INI_WriteInt("ID",InfoCasa[c][pCasaID]);
INI_Save();
INI_Close();
InfoCasa[c][pCasaID] ++;
Logico que isso foi apenas um exemplo usando SII, pode ver que nem abri o arquivo ...
й sу um pequeno exemplo para vocк ver como faz para o "ID" nгo ser o mesmo...
Reply
#3

vlw ai sobre o salvamento, vo tenta dps pq agora to pelo cel e sobre salvar id do carro eu nao entendi mt bem, poderia dar um exemplo de carro em dini por favor? +Rep, obg
Reply
#4

Um exemplo sobre o ID:

pawn Код:
#define MAX_CARROS 100

#define PASTA_CAR "/Carros/%d.ini"

enum carInfo
{
    cID,
    cSeila
};
new InfoCar[MAX_CARROS][carInfo];

stock CreateNewCar()//EXEMPLO rs
{
    new str[44];
    for(new c; c < MAX_CARROS; ++c)
    {
        format(str,sizeof(str), PASTA_CAR, InfoCar[c][cID]);
        if(!dini_Exist(str))
        {
            dini_Create(str);
            dini_IntSet(str,"ID",InfoCar[c][cID]);//Aqui irб setar o ID do carro no arquivo
            InfoCar[c][cID] ++;//aqui farб aumentar + 1 no ID para o prуximo carro, para nгo haver + de 1 carro com o mesmo ID
        }
    }
    return true;
}
Reply
#5

Quote:
Originally Posted by AFerreira
Посмотреть сообщение
Um exemplo sobre o ID:

pawn Код:
#define MAX_CARROS 100

#define PASTA_CAR "/Carros/%d.ini"

enum carInfo
{
    cID,
    cSeila
};
new InfoCar[MAX_CARROS][carInfo];

stock CreateNewCar()//EXEMPLO rs
{
    new str[44];
    for(new c; c < MAX_CARROS; ++c)
    {
        format(str,sizeof(str), PASTA_CAR, InfoCar[c][cID]);
        if(!dini_Exist(str))
        {
            dini_Create(str);
            dini_IntSet(str,"ID",InfoCar[c][cID]);//Aqui irб setar o ID do carro no arquivo
            InfoCar[c][cID] ++;//aqui farб aumentar + 1 no ID para o prуximo carro, para nгo haver + de 1 carro com o mesmo ID
        }
    }
    return true;
}
Vlw ae! Nгo seria para todos carros, mas peguei a ideia do InfoCar[c][cID] ++; e montei meu code, vou testar depois, vlwzгo hein? Mt obg msm ! E o rep jб tб dado.
Reply
#6

Quote:
Originally Posted by AFerreira
Посмотреть сообщение
Bom, comigo nunca aconteceu isso de sу salvar se der /q, mas tenta usar isso:

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    switch(reason)
    {
        case 0, 1, 2: SalvarPlayer(playerid);
    }
    return true;
}
Em alguns (praticamente todos) servers isso nгo funciona.. por exemplo se vc der um GMX.. o server nгo salva os dados do player. ja testei.

uma alternativa й criar um Timer para salvar os dados na conta. corrijam -me se estiver errado. ^^

@humildadeforever
e, bom, usando dini, vc terб uma perca significativa de velocidade, embora ele seja bem facio de usar.
mas fica a criterio, principalmente se no caso ele vai ser chamado poucas vezes, entгo nгo tem muita diferenзa ^^ ..
Reply
#7

Quote:
Originally Posted by steeldark
Посмотреть сообщение


Em alguns (praticamente todos) servers isso nгo funciona.. por exemplo se vc der um GMX.. o server nгo salva os dados do player. ja testei.

uma alternativa й criar um Timer para salvar os dados na conta. corrijam -me se estiver errado. ^^

@humildadeforever
e, bom, usando dini, vc terб uma perca significativa de velocidade, embora ele seja bem facio de usar.
mas fica a criterio, principalmente se no caso ele vai ser chamado poucas vezes, entгo nгo tem muita diferenзa ^^ ..
Sim funciona.
Caso nгo funcione quando der GMX, crie uma public alternativa.
pawn Код:
if(!strcmp(cmdtext, "/gmx", true)) {
 ///todo o seu codigo
   GameModeExitEx();
}
forward GameModeExitEx();
public GameModeExitEx() {
     for(new i = 0; i < MAX_PLAYERS; ++i) {
            salvarconta(i);
     }
     GameModExit();
}
Reply
#8

Quote:
Originally Posted by Ricop522
Посмотреть сообщение
Sim funciona.
Caso nгo funcione quando der GMX, crie uma public alternativa.
pawn Код:
if(!strcmp(cmdtext, "/gmx", true)) {
 ///todo o seu codigo
   GameModeExitEx();
}
forward GameModeExitEx();
public GameModeExitEx() {
     for(new i = 0; i < MAX_PLAYERS; ++i) {
            salvarconta(i);
     }
     GameModExit();
}
Vlw por corrigir Ricop.. ^^ vou testar da forma que postou.. obrigado.

Reply
#9

Me ajudem por favor? Й que assim, atй tб salvando o ID certinho agora, porйm, tб acontecendo assim, o player compra 1 carro, e quando compra outro ele substitui no arquivo, nгo adiciona.
Por exemplo, tб assim:
Modelo: 411
ID: 0
Ai eu compro outro e o arquivo fica:
Modelo: 543
ID: 1
Em vez de ficar:
Modelo: 411
ID: 0
Modelo: 543
ID: 1
Code:
pawn Код:
new carid = GetPlayerVehicleID(playerid);
if(!dini_Exists(CarroSave(playerid))) { dini_Create(CarroSave(playerid)); }
CarroInfo[carid][cModelo] = GetVehicleModel(carid);
dini_IntSet(CarroSave(playerid),"Modelo",CarroInfo[carid][cModelo]);
dini_IntSet(CarroSave(playerid),"ID",CarroInfo[carid][cID]);
for(new c; c < MAX_VEHICLES; ++c)
{
   CarroInfo[c][cID] ++;
}
Aproveitando aqui, mais uma coisa, como que faz pra salvar ali o numero que tб o CarroInfo[c][cID] ?
Porque tipo, tб indo direitinho, mas quando dar gmx ou sei lб, vai resetar o que foi somado, voltando a ser 0. Aн por exemplo:
Compro 1 carro, vem outro player compra outro, aн vai fica no 2 o CarroInfo. Mas ai quando der GMX, vai resetar e quando outro player comprar vai salvar como 0, o prуximo como 1, depois 2 atй dar GMX de novo e voltar a 0.
Queria saber como salvar, e quando salvar o prуximo carro, ser o ID salvado e depois continuar.
Reply
#10

Pode postar todo seu Sistema de Salvamento?? Se puder eu ajeito agora =D
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)