Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Source of fix for Fire SLash skill being affected by Twisting SLash (Main 1.04E)  (Visto 1356 veces)

0 Miembros and 1 Guest are viewing this topic.

Online NghienMU Posteado: January 31, 2024, 11:28:56 PM | Modificado: January 31, 2024, 11:36:01 PM by NghienMU

  • 0 puntos por ventas
  • *
  • Rank: Experto
  • Posts: 168
  • Gracias recibida: 40
  • vn
Most current Main mu from 0.97 to S6 have this bug. This is source to fix this bug on main 1.04e. To fix on other mains you need to change the corresponding offsets of that main. Hopefully someone can supplement other mains.

IncreaseEffects.cpp:

Code: [Select]
#include "stdafx.h"
#include "IncreaseEffects.h"
#include "Util.h"

cIncreaseEffects IncreaseEffects;

cIncreaseEffects::cIncreaseEffects()
{
for (int i = 0; i < MAX_JOINTS; i++)
{
this->Joints[i].Live = 0;
}

this->Hook();
}

cIncreaseEffects::~cIncreaseEffects()
{

}

DWORD cIncreaseEffects::GetAddressJoints()
{
return (DWORD)&IncreaseEffects.Joints;
}

void cIncreaseEffects::Hook()
{
DWORD AddressJoints = this->GetAddressJoints();

SetDword(0x005F308B + 2, AddressJoints);
SetDword(0x006F80FF + 2, AddressJoints);
SetDword(0x0072D1E2 + 2, AddressJoints);
SetDword(0x00735E8E + 2, AddressJoints);
SetDword(0x00735F3A + 2, AddressJoints);
SetDword(0x00735F9A + 2, AddressJoints);
SetDword(0x00747D2A + 2, AddressJoints);
SetDword(0x00747D91 + 2, AddressJoints);

SetDword(0x00747D18 + 3, MAX_JOINTS);
SetDword(0x0072D1CC + 3, MAX_JOINTS);
SetDword(0x00735F88 + 3, MAX_JOINTS);
SetDword(0x00735F28 + 3, MAX_JOINTS);
SetDword(0x00735E78 + 3, MAX_JOINTS);
SetDword(0x005F3079 + 3, MAX_JOINTS);
}


IncreaseEffects.h:

Code: [Select]
#pragma once
#include "Object.h"

#define MAX_JOINTS 5000

struct JOINT
{
bool Live;
};

enum
{
RENDER_TYPE_NONE = 0,
RENDER_TYPE_ALPHA_BLEND,
RENDER_TYPE_ALPHA_TEST,
RENDER_TYPE_ALPHA_BLEND_MINUS,
RENDER_TYPE_ALPHA_BLEND_OTHER,
};

class cIncreaseEffects
{
public:
cIncreaseEffects();
~cIncreaseEffects();

void Hook();
DWORD GetAddressJoints();
JOINT Joints[MAX_JOINTS];

private:

};

extern cIncreaseEffects IncreaseEffects;


Video bug:

Gracias:


Offline lkt22 #1 Posteado: February 01, 2024, 12:02:39 AM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 144
  • Gracias recibida: 66
  • br

Offline redf0x #2 Posteado: February 01, 2024, 03:52:58 AM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 133
  • Gracias recibida: 1482
  • vn
i have fix on gs side work for all muemu :D
mydiscord redf0x4705

http://muredteam.com/
redf0x#4705 My discord

Gracias:


Offline Van_Bom #3 Posteado: May 19, 2024, 10:21:18 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 47
  • Gracias recibida: 12
  • vn
That fix don't work, don't use it  ( to Viet Nam cái mã nguồn trên up là bị thiếu và lỗi tùm lum anh em sài cách fix sau đây dễ và ngon hơn )
in source main of EMU

STEP 1: in file Protocol.cpp  go to void GCCharacterInfoRecv(PMSG_CHARACTER_INFO_RECV* lpMsg) // OK
we see
   switch(((*(BYTE*)(*(DWORD*)(MAIN_CHARACTER_STRUCT)+0x0B)) & 7))
   {
      case 0:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DWMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 1:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DKMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
      case 2:
         SetByte(0x00556C38,((gProtect.m_MainInfo.FEMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 3:// Neu day la MG da duoc Fix lai trong ham void User::Refresh()   User.cpp
         break;
      case 4:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DLMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 5:
         SetByte(0x00556C38,((gProtect.m_MainInfo.SUMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 6:
         SetByte(0x00556C38,((gProtect.m_MainInfo.RFMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
   }
we delete it or change to
   /*switch(((*(BYTE*)(*(DWORD*)(MAIN_CHARACTER_STRUCT)+0x0B)) & 7))
   {
      case 0:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DWMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 1:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DKMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
      case 2:
         SetByte(0x00556C38,((gProtect.m_MainInfo.FEMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 3:// Neu day la MG da duoc Fix lai trong ham void User::Refresh()   User.cpp
         break;
      case 4:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DLMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 5:
         SetByte(0x00556C38,((gProtect.m_MainInfo.SUMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 6:
         SetByte(0x00556C38,((gProtect.m_MainInfo.RFMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
   }*/

STEP 2: go to User.cpp we see void User::Refresh()
we see
   if (gObjUser.GetActiveSkill() == 261 || gObjUser.GetActiveSkill() == 552 || gObjUser.GetActiveSkill() == 555)
   {
         //lpPlayer->AttackSpeed = (WORD)10;
         //lpPlayer->MagicSpeed = (WORD)10;
      //SetOp((LPVOID)0x007801AC, (LPVOID)lpPlayer->AttackSpeed, ASM::CALL);
      SetDouble(&pFrameSpeed1, 0.0004000);
      SetDouble(&pFrameSpeed2, 0.0002000);
   }
   else
   {
      SetDouble(&pFrameSpeed1, 0.0040000);
      SetDouble(&pFrameSpeed2, 0.0020000);
            
   }
/////////  we add code herre ////////////

and we add
   switch(((*(BYTE*)(*(DWORD*)(MAIN_CHARACTER_STRUCT)+0x0B)) & 7))
   {
      case 0:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DWMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 1:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DKMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
      case 2:
         SetByte(0x00556C38,((gProtect.m_MainInfo.FEMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 3:
         if (gObjUser.GetActiveSkill() == 55)// 55 chem lua 56 la vay kiem run
         {
            SetByte(0x00556C38,((gProtect.m_MainInfo.MGMaxAttackSpeed>=0xFFFF)?0x11:0x0F));
         }
         else
         {
            SetByte(0x00556C38,((gProtect.m_MainInfo.MGMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         }
         break;
      case 4:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DLMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 5:
         SetByte(0x00556C38,((gProtect.m_MainInfo.SUMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 6:
         SetByte(0x00556C38,((gProtect.m_MainInfo.RFMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
   }

Gracias:


Offline nhantac #4 Posteado: May 20, 2024, 02:45:29 AM

  • 0 puntos por ventas
  • *
  • Rank: Usuario activo
  • Posts: 60
  • Gracias recibida: 67
  • vn
That fix don't work, don't use it  ( to Viet Nam cái mã nguồn trên up là bị thiếu và lỗi tùm lum anh em sài cách fix sau đây dễ và ngon hơn )
in source main of EMU

STEP 1: in file Protocol.cpp  go to void GCCharacterInfoRecv(PMSG_CHARACTER_INFO_RECV* lpMsg) // OK
we see
   switch(((*(BYTE*)(*(DWORD*)(MAIN_CHARACTER_STRUCT)+0x0B)) & 7))
   {
      case 0:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DWMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 1:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DKMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
      case 2:
         SetByte(0x00556C38,((gProtect.m_MainInfo.FEMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 3:// Neu day la MG da duoc Fix lai trong ham void User::Refresh()   User.cpp
         break;
      case 4:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DLMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 5:
         SetByte(0x00556C38,((gProtect.m_MainInfo.SUMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 6:
         SetByte(0x00556C38,((gProtect.m_MainInfo.RFMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
   }
we delete it or change to
   /*switch(((*(BYTE*)(*(DWORD*)(MAIN_CHARACTER_STRUCT)+0x0B)) & 7))
   {
      case 0:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DWMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 1:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DKMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
      case 2:
         SetByte(0x00556C38,((gProtect.m_MainInfo.FEMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 3:// Neu day la MG da duoc Fix lai trong ham void User::Refresh()   User.cpp
         break;
      case 4:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DLMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 5:
         SetByte(0x00556C38,((gProtect.m_MainInfo.SUMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 6:
         SetByte(0x00556C38,((gProtect.m_MainInfo.RFMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
   }*/

STEP 2: go to User.cpp we see void User::Refresh()
we see
   if (gObjUser.GetActiveSkill() == 261 || gObjUser.GetActiveSkill() == 552 || gObjUser.GetActiveSkill() == 555)
   {
         //lpPlayer->AttackSpeed = (WORD)10;
         //lpPlayer->MagicSpeed = (WORD)10;
      //SetOp((LPVOID)0x007801AC, (LPVOID)lpPlayer->AttackSpeed, ASM::CALL);
      SetDouble(&pFrameSpeed1, 0.0004000);
      SetDouble(&pFrameSpeed2, 0.0002000);
   }
   else
   {
      SetDouble(&pFrameSpeed1, 0.0040000);
      SetDouble(&pFrameSpeed2, 0.0020000);
            
   }
/////////  we add code herre ////////////

and we add
   switch(((*(BYTE*)(*(DWORD*)(MAIN_CHARACTER_STRUCT)+0x0B)) & 7))
   {
      case 0:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DWMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 1:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DKMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
      case 2:
         SetByte(0x00556C38,((gProtect.m_MainInfo.FEMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 3:
         if (gObjUser.GetActiveSkill() == 55)// 55 chem lua 56 la vay kiem run
         {
            SetByte(0x00556C38,((gProtect.m_MainInfo.MGMaxAttackSpeed>=0xFFFF)?0x11:0x0F));
         }
         else
         {
            SetByte(0x00556C38,((gProtect.m_MainInfo.MGMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         }
         break;
      case 4:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DLMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 5:
         SetByte(0x00556C38,((gProtect.m_MainInfo.SUMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 6:
         SetByte(0x00556C38,((gProtect.m_MainInfo.RFMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
   }
chưa test nhưng cám ơn người a e.

Gracias:


Offline Van_Bom #5 Posteado: May 20, 2024, 09:48:44 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 47
  • Gracias recibida: 12
  • vn

Offline lkt22 #6 Posteado: May 20, 2024, 11:08:30 PM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 144
  • Gracias recibida: 66
  • br
user with Luis EMU SS6 Update 15

@Van_Bom can u make a video showing it ?
or would it be too much to ask ? ty anyways


Offline Van_Bom #7 Posteado: May 21, 2024, 12:43:33 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 47
  • Gracias recibida: 12
  • vn

@Van_Bom can u make a video showing it ?
or would it be too much to ask ? ty anyways
[/quote]

this is bug and fix in video you can see that


Offline lkt22 #8 Posteado: May 21, 2024, 01:41:54 AM | Modificado: May 21, 2024, 02:16:04 AM by lkt22

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 144
  • Gracias recibida: 66
  • br

Offline Van_Bom #9 Posteado: May 21, 2024, 01:44:24 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 47
  • Gracias recibida: 12
  • vn
STEP 1: in file Protocol.cpp  go to void GCCharacterInfoRecv(PMSG_CHARACTER_INFO_RECV* lpMsg) // OK
we see
   switch(((*(BYTE*)(*(DWORD*)(MAIN_CHARACTER_STRUCT)+0x0B)) & 7))
   {
      case 0:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DWMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 1:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DKMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
      case 2:
         SetByte(0x00556C38,((gProtect.m_MainInfo.FEMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 3:// Neu day la MG da duoc Fix lai trong ham void User::Refresh()   User.cpp
         break;
      case 4:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DLMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 5:
         SetByte(0x00556C38,((gProtect.m_MainInfo.SUMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 6:
         SetByte(0x00556C38,((gProtect.m_MainInfo.RFMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
   }
we delete it or change to
   /*switch(((*(BYTE*)(*(DWORD*)(MAIN_CHARACTER_STRUCT)+0x0B)) & 7))
   {
      case 0:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DWMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 1:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DKMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
      case 2:
         SetByte(0x00556C38,((gProtect.m_MainInfo.FEMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 3:// Neu day la MG da duoc Fix lai trong ham void User::Refresh()   User.cpp
         break;
      case 4:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DLMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 5:
         SetByte(0x00556C38,((gProtect.m_MainInfo.SUMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 6:
         SetByte(0x00556C38,((gProtect.m_MainInfo.RFMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
   }*/

STEP 2: go to User.cpp we see void User::Refresh()
we see
   if (gObjUser.GetActiveSkill() == 261 || gObjUser.GetActiveSkill() == 552 || gObjUser.GetActiveSkill() == 555)
   {
         //lpPlayer->AttackSpeed = (WORD)10;
         //lpPlayer->MagicSpeed = (WORD)10;
      //SetOp((LPVOID)0x007801AC, (LPVOID)lpPlayer->AttackSpeed, ASM::CALL);
      SetDouble(&pFrameSpeed1, 0.0004000);
      SetDouble(&pFrameSpeed2, 0.0002000);
   }
   else
   {
      SetDouble(&pFrameSpeed1, 0.0040000);
      SetDouble(&pFrameSpeed2, 0.0020000);
           
   }
/////////  we add code herre ////////////

and we add
   switch(((*(BYTE*)(*(DWORD*)(MAIN_CHARACTER_STRUCT)+0x0B)) & 7))
   {
      case 0:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DWMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 1:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DKMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
      case 2:
         SetByte(0x00556C38,((gProtect.m_MainInfo.FEMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 3:
         if (gObjUser.GetActiveSkill() == 55)// 55 chem lua 56 la vay kiem run
         {
            SetByte(0x00556C38,((gProtect.m_MainInfo.MGMaxAttackSpeed>=0xFFFF)?0x11:0x0F));
         }
         else
         {
            SetByte(0x00556C38,((gProtect.m_MainInfo.MGMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         }
         break;
      case 4:
         SetByte(0x00556C38,((gProtect.m_MainInfo.DLMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 5:
         SetByte(0x00556C38,((gProtect.m_MainInfo.SUMaxAttackSpeed>=0xFFFF)?0x02:0x0F));
         break;
      case 6:
         SetByte(0x00556C38,((gProtect.m_MainInfo.RFMaxAttackSpeed>=0xFFFF)?0x0F:0x0F));
         break;
   }

you can test with Louis EMU SS6 Update 15


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
8 Replies
2794 Views
Last post October 03, 2018, 08:26:26 AM
by Cloud
4 Replies
2791 Views
Last post August 21, 2022, 07:21:15 PM
by visionmu
9 Replies
1634 Views
Last post June 24, 2021, 02:34:52 PM
by JavixFer
1 Replies
2366 Views
Last post November 12, 2022, 08:31:27 PM
by c4nhsatcodong
12 Replies
1811 Views
Last post May 21, 2023, 11:36:40 PM
by sanlp