Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

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

Editar localização inicial dos personagens


PsyLoove
 Compartilhar

Pergunta

Boa tarde, tudo bem? Estou estudando a source do XWYD e gostaria de editar a localização inicial dos personagens (Campo de Treinamento - Armia).

 

Verifiquei que possui este código:

 

Citar

bool HookImpl::enterGameSetPosition(const int32_t client, uint16_t* posX, uint16_t* posY)
{
    if (client < NULL || client > MAX_USER)
        return false;

    auto mob = GetMobFromIndex(client);
    auto player = GetMobFromIndex(client);

    auto userData = &Global::userData[client];

    Func::LoadGuild(client);
    Func::upGuild(client);

    userData->Ingame.timerAltar = -1;
    userData->Ingame.LastClicked = -1;
    userData->Ingame.PointStore = 0;

    auto setPosition = [&mob, posX, posY](uint16_t x, uint16_t y) {
        *posX = x, *posY = y;
        mob->LastPosX = x; mob->PosX = x;
        mob->LastPosY = y; mob->PosY = y;
    };

    if (mob->Mob.CurrentStatus.Level > 399 && mob->Mob.CurrentStatus.Level < 405 && Func::GetPlayerClass(client) <= God)
    {
        mob->Mob.BaseStatus.Level = 399;
        mob->Mob.CurrentStatus.Level = 399;
        mob->Mob.Exp = 4005000000;
        SendEtc(client);
    }

    return false;

 

Esse código é referente a essa função mesmo? Se sim, o que preciso alterar para definar X e Y a minha escolha.

 

Grato.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Eu não sei bem, mas pelo que entendi, chame usando

 

setPosition(2100, 2100); pra iniciar em 2100, 2100, por exemplo.

 

O que parece que manda ali é o ponteiro posX e posY. Nâo sei como é o hook, por isso não sei dizer porque tem que alterar o mob->Pos[X|Y] também.

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
14 horas atrás, Shepher disse:

Eu não sei bem, mas pelo que entendi, chame usando

 

setPosition(2100, 2100); pra iniciar em 2100, 2100, por exemplo.

 

O que parece que manda ali é o ponteiro posX e posY. Nâo sei como é o hook, por isso não sei dizer porque tem que alterar o mob->Pos[X|Y] também.

 

 

Quanto tempo em Shepher kkk, prazer revê-lo. Obrigado pela ajuda.

 

@EDIT

 

*não consegui chamar usando SetPosition 😞

 

Esse é o Hook:

 

Citar

__declspec(naked) void HookPatch::NKD_ProcessDBMessage_EnterGame()
{
    __asm
    {
        MOV ECX, DWORD PTR SS : [EBP - 0x104C] // Pacote
            LEA EAX, WORD PTR SS : [ECX + 0xE] // Y
            PUSH EAX
            LEA EDX, WORD PTR SS : [ECX + 0xC] // X
            PUSH EDX
            PUSH DWORD PTR SS : [EBP - 0xC] // ClientId
            CALL HookImpl::enterGameSetPosition
            TEST AL, AL
            JE lblContinueNormal
            PUSH 0x4A64F5
            RETN

        lblContinueNormal :
        MOV EDX, DWORD PTR SS : [EBP - 0xC]
            IMUL EDX, EDX, 0x6BC
            PUSH 0x4A64AA
            RETN
    }
}

 

Editado por PsyLoove
Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

 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.