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

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

Editar localização inicial dos personagens


PsyLoove
 Compartilhar

Posts Recomendados

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.

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

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.

 

 

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

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

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.