Ir para conteúdo
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Gema Estelar não salva posição ao relogar


combatrw
 Compartilhar

Posts Recomendados

Pessoal, bom dia. A gema estelar não está salvando se o personagem relogar. Se eu marco e tento usar imediatamente funciona, vejam se podem ajudar: 

 

#pragma region Gema Estelar
    if (Vol == 12)
    {
        unsigned char map_att = GetAttribute(pMob[conn].TargetX, pMob[conn].TargetY);

        if ((pMob[conn].TargetX / 128) == 9 && (pMob[conn].TargetY / 128) == 1)
            goto CanSave;

        if ((pMob[conn].TargetX / 128) == 8 && (pMob[conn].TargetY / 128) == 2)
            goto CanSave;

        if (map_att & 4 && pMob[conn].MOB.CurrentScore.Level < 1000)
        {
            SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Use_That_Here]);
            SendItem(conn, m->SourType, m->SourPos, item);
            return;
        }

        int Arena = BASE_GetArena(pMob[conn].TargetX, pMob[conn].TargetY);
        int Village = BASE_GetVillage(pMob[conn].TargetX, pMob[conn].TargetY);

        if (Arena < MAX_GUILDZONE || Village < MAX_GUILDZONE)
        {
            SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Use_That_Here]);
            SendItem(conn, m->SourType, m->SourPos, item);
            return;
        }

        if (pMob[conn].TargetX >= 1302 && pMob[conn].TargetY >= 1391 && pMob[conn].TargetX <= 1483 && pMob[conn].TargetY <= 1523)
        {
            SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Use_That_Here]);
            SendItem(conn, m->SourType, m->SourPos, item);
            return;
        }

    CanSave:
        int sFace = pMob[conn].MOB.Equip[0].sIndex / 10;

        if (sFace == 0)
            SendEmotion(conn, 23, 0);

        else if (sFace == 1)
            SendEmotion(conn, 15, 0);

        else if (sFace == 2)
            SendEmotion(conn, 15, 0);

        else if (sFace == 3)
            SendEmotion(conn, 15, 0);


        pMob[conn].MOB.SPX = pMob[conn].TargetX;
        pMob[conn].MOB.SPY = pMob[conn].TargetY;

        /*
        snprintf(temp, sizeof(temp), "useitem,gema salva %d %d", pMob[conn].TargetX, pMob[conn].TargetY);
        ItemLog(pUser[conn].AccountName, pUser[conn].MacAddress, pUser[conn].IP, temp);*/

        if (amount > 1)
            BASE_SetItemAmount(item, amount - 1);

        else
            memset(item, 0, sizeof(STRUCT_ITEM));

        SendClientMessage(conn, g_pMessageStringTable[_NN_Set_Warp]);

        return;
    }
#pragma endregion

Ainda estou aprendendo C++

Link para o comentário
Compartilhar em outros sites

É necessário se cadastrar para acessar o conteúdo.

 

Aqui você está salvando a posição atual na estrutura MOB, porém, ela é salva quando desconecta?
Este deve ser o problema, o MOB.SPX pode ser somente leitura.
Após isto, coloca na estrutura do jogador ( não uso source, mas deve ser o mesmo que mudar algo no banco da conta, status ou qualquer outra coisa que não seja na estrutura do MOB ).

  • Curtir 5
Link para o comentário
Compartilhar em outros sites

Em 01/05/2025 em 19:10, 987987987 disse:
É necessário se cadastrar para acessar o conteúdo.

 

Aqui você está salvando a posição atual na estrutura MOB, porém, ela é salva quando desconecta?
Este deve ser o problema, o MOB.SPX pode ser somente leitura.
Após isto, coloca na estrutura do jogador ( não uso source, mas deve ser o mesmo que mudar algo no banco da conta, status ou qualquer outra coisa que não seja na estrutura do MOB ).

Não está salvando. Eu sei que esse trecho que postei se refere a mensagem que é enviada ao jogador, e pesquisando por MOB.SPX e MOB.SPY eu tenho alguns arquivos diferentes, não sei em qual deles verificar, sendo eles:

DBsrv>CFileDB.cpp
TMsrv>ProcessDBMessage.cpp
TMsrv>Server.cpp
TMsrv>_MSG_UseItem.cpp

Acredito que seja no CFileDB.cpp , mas vou pesquisar mais a fundo. Me dá uma opinião?

 

Link para o comentário
Compartilhar em outros sites

51 minutos atrás, combatrw disse:

Não está salvando. Eu sei que esse trecho que postei se refere a mensagem que é enviada ao jogador, e pesquisando por MOB.SPX e MOB.SPY eu tenho alguns arquivos diferentes, não sei em qual deles verificar, sendo eles:

DBsrv>CFileDB.cpp
TMsrv>ProcessDBMessage.cpp
TMsrv>Server.cpp
TMsrv>_MSG_UseItem.cpp

Acredito que seja no CFileDB.cpp , mas vou pesquisar mais a fundo. Me dá uma opinião?

 

 

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.