Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Fix Agility 97d +  (Visto 556 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline zodiacddos Posteado: January 27, 2021, 12:35:58 AM

  • +1 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 189
  • Gracias recibida: 6834
  • ph
Struct :

Code:

Citar
struct PMSG_CHARINFOMAIN
{
   PBMSG_HEAD h;
   BYTE Code;
   BYTE Class;
   WORD Dexterity;
   WORD AttackSpeed;
   WORD MagicSpeed;
};

Functions.cpp :

Citar
#include "StdAfx.h"

Functions func;

BOOL Functions :: gObjSetCharacterEx (LPBYTE lpdata, int aIndex)
{
   BOOL return = gObjSetCharacter (lpdata, aIndex);

   if (return == TRUE)
   {
      PMSG_CHARINFOMAIN Result;

      Result.hc = 0xC1;
      Result.h.size = sizeof (Result);
      Result.h.head = 0xFE;
      Result.Code = 0x07;
      Result.Class = gObj [aIndex] .Class;
      Result.Dexterity = (WORD) (gObj [aIndex] .Dexterity);
      Result.AttackSpeed ​​= (WORD) (gObj [aIndex] .m_AttackSpeed);
      Result.MagicSpeed ​​= (WORD) (gObj [aIndex] .m_MagicSpeed);

      DataSend (aIndex, (LPBYTE) (& Result), Result.h.size);
   }
   
   return return;
}

void Functions :: gObjCalCharacterEx (int aIndex)
{
   gObjCalCharacter (aIndex);

   PMSG_CHARINFOMAIN Result;

   Result.hc = 0xC1;
   Result.h.size = sizeof (Result);
   Result.h.head = 0xFE;
   Result.Code = 0x07;
   Result.Class = gObj [aIndex] .Class;
   Result.Dexterity = (WORD) (gObj [aIndex] .Dexterity);
   Result.AttackSpeed ​​= (WORD) (gObj [aIndex] .m_AttackSpeed);
   Result.MagicSpeed ​​= (WORD) (gObj [aIndex] .m_MagicSpeed);

   DataSend (aIndex, (LPBYTE) (& Result), Result.h.size);

Functions.h :

Citar
#pragma once

class Functions
{
public:
   static BOOL gObjSetCharacterEx (LPBYTE lpdata, int aIndex);
   static void gObjCalCharacterEx (int aIndex);
};

extern Functions func;

Defines :

Citar
#define gObjSetCharacter ((bool (*) (LPBYTE lpdata, int aIndex)) 0x0045C370)
#define gObjCalCharacter ((void (*) (int aIndex)) 0x00451DE0)

Hooks :
Citar
func.HookThis ((DWORD) & Functions :: gObjSetCharacterEx, 0x004026CB);
func.HookThis ((DWORD) & Functions :: gObjCalCharacterEx, 0x004015AF);

For the customer:

Struct :
Citar
struct PMSG_CHARINFOMAIN
{
   PBMSG_HEAD h;
   BYTE Code;
   BYTE Class;
   WORD Dexterity;
   WORD AttackSpeed;
   WORD MagicSpeed;
};

Naked.h :
Citar
#pragma once

DWORD nProtocolCoreBack = 0x4384FB;
LPBYTE nProtocolCoreData = nullptr;

void __declspec (naked) nProtocolCore ()
{
   __asm ​​MOV nProtocolCoreData, EBP;

   ProtocolCore (nProtocolCoreData);

   __asm ​​MOV EDX, DWORD PTR DS: [0x8311134];
   __asm ​​JMP nProtocolCoreBack;
}

Protocol.cpp :
Citar
#include "StdAfx.h"

BYTE PlayerClass = 0;
WORD PlayerDexterity = 0;
WORD PlayerASpeed ​​= 0;
WORD PlayerMSpeed ​​= 0;

void ProtocolCore (LPBYTE aRecv)
{
   if (aRecv
  • == 0xC1 || aRecv
  • == 0xC3)

   {
      switch (aRecv [2])
      {
      case 0xF3:
         {
            switch (aRecv [3])
            {
            case 0x03:
               {
                  ApplyDexterityFix ();
               }
               break;
            }
         }
         break;
      case 0xFE:
         {
            switch (aRecv [3])
            {
            case 0x07:
               {
                  PMSG_CHARINFOMAIN * Info = (PMSG_CHARINFOMAIN *) (aRecv);

                  PlayerClass = Info-> Class;
                  PlayerDexterity = Info-> Dexterity;
                  PlayerASpeed ​​= Info-> AttackSpeed;
                  PlayerMSpeed ​​= Info-> MagicSpeed;

                  ApplyDexterityFix ();
               }
               break;
            }
         }
         break;
      }
   }
}

void ApplyDexterityFix ()
{
   switch (PlayerClass)
   {
   case 0:
      {
         if (PlayerMSpeed> = 455 && PlayerMSpeed ​​<= 479)
         {
            * eMainSpeedFrame2 = 0.0024700f;
         }
         else if (PlayerMSpeed> = 605 && PlayerMSpeed ​​<= 636)
         {
            * eMainSpeedFrame2 = 0.0019000f;
         }
         else if (PlayerMSpeed> = 637 && PlayerMSpeed ​​<= 668)
         {
            * eMainSpeedFrame2 = 0.0018000f;
         }
         else if (PlayerMSpeed> = 669 && PlayerMSpeed ​​<= 688)
         {
            * eMainSpeedFrame2 = 0.0017000f;
         }
         else if (PlayerMSpeed> = 855 && PlayerMSpeed ​​<= 1040)
         {
            * eMainSpeedFrame2 = 0.0016300f;
         }
         else if (PlayerMSpeed> = 1041 && PlayerMSpeed ​​<= 1104)
         {
            * eMainSpeedFrame2 = 0.0015500f;
         }
         else if (PlayerMSpeed> = 1301 && PlayerMSpeed ​​<= 1500)
         {
            * eMainSpeedFrame2 = 0.0017500f;
         else if (PlayerMSpeed> = 1501 && PlayerMSpeed ​​<= 1524)
         {
            * eMainSpeedFrame2 = 0.0015000f;
         }
         else if (PlayerMSpeed> = 1525 && PlayerMSpeed ​​<= 1800)
         {
            * eMainSpeedFrame2 = 0.0014500f;
         }
         else if (PlayerMSpeed> = 1801 && PlayerMSpeed ​​<= 1999)
         {
            * eMainSpeedFrame2 = 0.0013000f;
         }
         else if (PlayerMSpeed> = 2000 && PlayerMSpeed ​​<= 2167)
         {
            * eMainSpeedFrame2 = 0.0012500f;
         }
         else if (PlayerMSpeed> = 2168 && PlayerMSpeed ​​<= 2354)
         {
            * eMainSpeedFrame2 = 0.0011500f;
         }
         else if (PlayerMSpeed>
         {
            * eMainSpeedFrame2 = 0.0009000f;
         }
         else if (PlayerMSpeed> = 3011)
         {
            * eMainSpeedFrame2 = 0.0008100f;

         }
         else
         {
            * eMainSpeedFrame2 = 0.0020000f;
         }
      }
      break;
   case 1:
      {
         * eMainSpeedFrame1 = 0.0040000f;
         * eMainSpeedFrame2 = 0.0020000f;
      }
      break;
   case 2:
      {
         if (PlayerASpeed> = 509 && PlayerASpeed ​​<= 549)
         {
            * eMainSpeedFrame1 = 0.0026000f;
         }
         else if (PlayerASpeed> = 550 && PlayerASpeed ​​<= 750)
         {
            * eMainSpeedFrame1 = 0.0017000f;
         }
         else
         {
            * eMainSpeedFrame1 = 0.0040000f;
         }
      }
      break;
   case 3:
      {
         if (PlayerMSpeed> = 455 && PlayerMSpeed ​​<= 479)
         {
            * eMainSpeedFrame2 = 0.0024700f;
         }
         else if (PlayerMSpeed> = 605 && PlayerMSpeed ​​<= 636)
         {
            * eMainSpeedFrame2 = 0.0019000f;
         }
         else if (PlayerMSpeed> = 637 && PlayerMSpeed ​​<= 668)
         {
            * eMainSpeedFrame2 = 0.0018000f;
         }
         else if (PlayerMSpeed> = 669 && PlayerMSpeed ​​<= 688)
         {
            * eMainSpeedFrame2 = 0.
         }
         else if (PlayerMSpeed> = 855 && PlayerMSpeed ​​<= 1040)
         {
            * eMainSpeedFrame2 = 0.0016300f;
         }
         else if (PlayerMSpeed> = 1041 && PlayerMSpeed ​​<= 1104)
         {
            * eMainSpeedFrame2 = 0.0015500f;
         }
         else if (PlayerMSpeed> = 1301 && PlayerMSpeed ​​<= 1500)
         {
            * eMainSpeedFrame2 = 0.0017500f;
         }
         else if (PlayerMSpeed> = 1501 && PlayerMSpeed ​​<= 1524)
         {
            * eMainSpeedFrame2 = 0.0015000f;
         }
         else if (PlayerMSpeed> = 1525 && PlayerMSpeed ​​<= 1800)
         {
            * eMainSpeedFrame2 = 0.0014500f;
         }
         else if (PlayerMSpeed> = 1801 && PlayerMSpeed ​​<= 1999)
         {
            * eMainSpeedFrame2 = 0.0013000f;
         }
         else if (PlayerMSpeed> = 2000 && PlayerMSpeed ​​<= 2167)
         {
            * eMainSpeedFrame2 = 0.0012500f;
         }
         else if (PlayerMSpeed> = 2168 && PlayerMSpeed ​​<= 2354)
         {
            * eMainSpeedFrame2 = 0.0011500f;
         }
         else if (PlayerMSpeed> = 2855 && PlayerMSpeed ​​<= 3011)
         {
            * eMainSpeedFrame2 = 0.0009000f;
         }
         else if (PlayerMSpeed> = 3011)
         {
            * eMainSpeedFrame2 = 0.0008100f;
         }
         else
         {
            * eMainSpeedFrame2 = 0.
         }
      }
      break;
   }
}


Protocol.h :

Citar
#include "StdAfx.h"

BYTE PlayerClass = 0;
WORD PlayerDexterity = 0;
WORD PlayerASpeed ​​= 0;
WORD PlayerMSpeed ​​= 0;

void ProtocolCore (LPBYTE aRecv)
{
   if (aRecv
  • == 0xC1 || aRecv
  • == 0xC3)

   {
      switch (aRecv [2])
      {
      case 0xF3:
         {
            switch (aRecv [3])
            {
            case 0x03:
               {
                  ApplyDexterityFix ();
               }
               break;
            }
         }
         break;
      case 0xFE:
         {
            switch (aRecv [3])
            {
            case 0x07:
               {
                  PMSG_CHARINFOMAIN * Info = (PMSG_CHARINFOMAIN *) (aRecv);

                  PlayerClass = Info-> Class;
                  PlayerDexterity = Info-> Dexterity;
                  PlayerASpeed ​​= Info-> AttackSpeed;
                  PlayerMSpeed ​​= Info-> MagicSpeed;

                  ApplyDexterityFix ();
               }
               break;
            }
         }
         break;
      }
   }
}

void ApplyDexterityFix ()
{
   switch (PlayerClass)
   {
   case 0:
      {
         if (PlayerMSpeed> = 455 && PlayerMSpeed ​​<= 479)
         {
            * eMainSpeedFrame2 = 0.0024700f;
         }
         else if (PlayerMSpeed> = 605 && PlayerMSpeed ​​<= 636)
         {
            * eMainSpeedFrame2 = 0.0019000f;
         }
         else if (PlayerMSpeed> = 637 && PlayerMSpeed ​​<= 668)
         {
            * eMainSpeedFrame2 = 0.0018000f;
         }
         else if (PlayerMSpeed> = 669 && PlayerMSpeed ​​<= 688)
         {
            * eMainSpeedFrame2 = 0.0017000f;
         }
         else if (PlayerMSpeed> = 855 && PlayerMSpeed ​​<= 1040)
         {
            * eMainSpeedFrame2 = 0.0016300f;
         }
         else if (PlayerMSpeed> = 1041 && PlayerMSpeed ​​<= 1104)
         {
            * eMainSpeedFrame2 = 0.0015500f;
         }
         else if (PlayerMSpeed> = 1301 && PlayerMSpeed ​​<= 1500)
         {
            * eMainSpeedFrame2 = 0.0017500f;
         else if (PlayerMSpeed> = 1501 && PlayerMSpeed ​​<= 1524)
         {
            * eMainSpeedFrame2 = 0.0015000f;
         }
         else if (PlayerMSpeed> = 1525 && PlayerMSpeed ​​<= 1800)
         {
            * eMainSpeedFrame2 = 0.0014500f;
         }
         else if (PlayerMSpeed> = 1801 && PlayerMSpeed ​​<= 1999)
         {
            * eMainSpeedFrame2 = 0.0013000f;
         }
         else if (PlayerMSpeed> = 2000 && PlayerMSpeed ​​<= 2167)
         {
            * eMainSpeedFrame2 = 0.0012500f;
         }
         else if (PlayerMSpeed> = 2168 && PlayerMSpeed ​​<= 2354)
         {
            * eMainSpeedFrame2 = 0.0011500f;
         }
         else if (PlayerMSpeed>
         {
            * eMainSpeedFrame2 = 0.0009000f;
         }
         else if (PlayerMSpeed> = 3011)
         {
            * eMainSpeedFrame2 = 0.0008100f;

         }
         else
         {
            * eMainSpeedFrame2 = 0.0020000f;
         }
      }
      break;
   case 1:
      {
         * eMainSpeedFrame1 = 0.0040000f;
         * eMainSpeedFrame2 = 0.0020000f;
      }
      break;
   case 2:
      {
         if (PlayerASpeed> = 509 && PlayerASpeed ​​<= 549)
         {
            * eMainSpeedFrame1 = 0.0026000f;
         }
         else if (PlayerASpeed> = 550 && PlayerASpeed ​​<= 750)
         {
            * eMainSpeedFrame1 = 0.0017000f;
         }
         else
         {
            * eMainSpeedFrame1 = 0.0040000f;
         }
      }
      break;
   case 3:
      {
         if (PlayerMSpeed> = 455 && PlayerMSpeed ​​<= 479)
         {
            * eMainSpeedFrame2 = 0.0024700f;
         }
         else if (PlayerMSpeed> = 605 && PlayerMSpeed ​​<= 636)
         {
            * eMainSpeedFrame2 = 0.0019000f;
         }
         else if (PlayerMSpeed> = 637 && PlayerMSpeed ​​<= 668)
         {
            * eMainSpeedFrame2 = 0.0018000f;
         }
         else if (PlayerMSpeed> = 669 && PlayerMSpeed ​​<= 688)
         {
            * eMainSpeedFrame2 = 0.
         }
         else if (PlayerMSpeed> = 855 && PlayerMSpeed ​​<= 1040)
         {
            * eMainSpeedFrame2 = 0.0016300f;
         }
         else if (PlayerMSpeed> = 1041 && PlayerMSpeed ​​<= 1104)
         {
            * eMainSpeedFrame2 = 0.0015500f;
         }
         else if (PlayerMSpeed> = 1301 && PlayerMSpeed ​​<= 1500)
         {
            * eMainSpeedFrame2 = 0.0017500f;
         }
         else if (PlayerMSpeed> = 1501 && PlayerMSpeed ​​<= 1524)
         {
            * eMainSpeedFrame2 = 0.0015000f;
         }
         else if (PlayerMSpeed> = 1525 && PlayerMSpeed ​​<= 1800)
         {
            * eMainSpeedFrame2 = 0.0014500f;
         }
         else if (PlayerMSpeed> = 1801 && PlayerMSpeed ​​<= 1999)
         {
            * eMainSpeedFrame2 = 0.0013000f;
         }
         else if (PlayerMSpeed> = 2000 && PlayerMSpeed ​​<= 2167)
         {
            * eMainSpeedFrame2 = 0.0012500f;
         }
         else if (PlayerMSpeed> = 2168 && PlayerMSpeed ​​<= 2354)
         {
            * eMainSpeedFrame2 = 0.0011500f;
         }
         else if (PlayerMSpeed> = 2855 && PlayerMSpeed ​​<= 3011)
         {
            * eMainSpeedFrame2 = 0.0009000f;
         }
         else if (PlayerMSpeed> = 3011)
         {
            * eMainSpeedFrame2 = 0.0008100f;
         }
         else
         {
            * eMainSpeedFrame2 = 0.
         }
      }
      break;
   }
}

Protocol.h :

Code: [Select]
#pragma once 

void ProtocolCore (LPBYTE aRecv);
void ApplyDexterityFix ();

Defines :

Citar
#define eMainSpeedFrame1 (float *) (0x54D4BC)
#define eMainSpeedFrame2 (float *) (0x54D8CC)


Hooks :

Citar
HookOffset ((DWORD) & nProtocolCore, 0x4384F5,0xE9);










Gracias:


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
2 Replies
909 Views
Last post July 03, 2018, 04:18:13 PM
by slipknot
2 Replies
564 Views
Last post October 19, 2020, 08:39:30 AM
by lunaticodeveloper
23 Replies
5806 Views
Last post October 08, 2022, 04:10:04 PM
by usersa
1 Replies
717 Views
Last post August 02, 2021, 04:11:44 PM
by T-LEGENDARY