Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Source Custom Cape Animation  (Visto 17420 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline takumi12 #40 Posteado: February 26, 2020, 11:25:40 AM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Php Coder
  • +11 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 1.310
  • Gracias recibida: 39646
  • mx
Hola alguien me puede decir dónde van esos archivos o como instalarlos uso muemu s6 gracias

va en la source, puedes agregarlos desde el src, y si no tienes conocimientos puedes pagar quien te los agregue, solo que los compartidos aquí no estan completos, hay error en el refresh.


Las offset no se crea, ni se destruye, solo se transforma

Gracias:


Offline marvin540 #41 Posteado: February 26, 2020, 11:46:46 AM

  • 0 puntos por ventas
  • *
  • Rank: Sup. destacado
  • Posts: 108
  • Gracias recibida: 538
  • pe
Gracias hermano por sacarme la duda


Offline Daniel@ #42 Posteado: March 03, 2020, 03:04:09 PM | Modificado: March 03, 2020, 09:33:28 PM by Daniel@

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 2786
  • ve
tengo este mismo problema , saben como lo pudieron solucionar tengo el codigo asi

NOTA: ya lo resolví.




Code: [Select]
pLoadImage("Custom\\darklordwing4de.tga", iDLRedwing02, GL_LINEAR, GL_REPEAT, 1, 0);
pLoadImage("Custom\\darklordwing4dd.tga", iDLRedwing03, GL_LINEAR, GL_REPEAT, 1, 0);

Code: [Select]
case ITEM2(12,220):
case ITEM2(12,215):
Object->WingsSlot = ITEM2(12,215);
//
SetDword((0x0057491A + 1), iDLRedwing02);
SetDword((0x0057491F + 1), iDLRedwing02);
//
SetDword((0x00574F2E + 1), iDLRedwing03);
SetDword((0x00574F33 + 1), iDLRedwing03);
//
SetDword((0x00574FFC + 1), iDLRedwing03);
SetDword((0x00575001 + 1), iDLRedwing03);
//-
break;

Gracias:


Offline ConejoMalo #43 Posteado: March 03, 2020, 07:41:48 PM

  • +1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 781
  • Gracias recibida: 7675
  • ar
tengo este mismo problema , saben como lo pudieron solucionar tengo el codigo asi




Code: [Select]
pLoadImage("Custom\\darklordwing4de.tga", iDLRedwing02, GL_LINEAR, GL_REPEAT, 1, 0);
pLoadImage("Custom\\darklordwing4dd.tga", iDLRedwing03, GL_LINEAR, GL_REPEAT, 1, 0);

Code: [Select]
case ITEM2(12,220):


ponele 0 sino te funciona asi ponele cero  1, 0);  pero no panfas 1,0 o -1  proba con 1 primero y si sigue igual ese uno cambialo por 0
case ITEM2(12,215):
Object->WingsSlot = ITEM2(12,215);
//
SetDword((0x0057491A + 1), iDLRedwing02);
SetDword((0x0057491F + 1), iDLRedwing02);
//
SetDword((0x00574F2E + 1), iDLRedwing03);
SetDword((0x00574F33 + 1), iDLRedwing03);
//
SetDword((0x00574FFC + 1), iDLRedwing03);
SetDword((0x00575001 + 1), iDLRedwing03);
//-
break;

Servicios de  Reparacion de bug Files Muemu, desde source y agregados Custom, soporte de configuracion.

Offline Daniel@ #44 Posteado: March 05, 2020, 02:31:29 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 2786
  • ve
me funciona bien ya resolvi todos los problemas
uso main 1.04D  lucha


Offline Kapocha33 #45 Posteado: March 05, 2020, 06:40:26 PM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • 3D Maker
  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 735
  • Gracias recibida: 80739
  • ar
Para lo del refresh..


Consultas al Discord: Kapocha33

Offline trkgncmg #46 Posteado: March 05, 2020, 07:29:18 PM | Modificado: March 05, 2020, 07:32:14 PM by trkgncmg

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 44
  • Gracias recibida: 688
here offset 1.04D,  Use for fix refresh of @kapocha post above



Offline Daniel@ #47 Posteado: March 07, 2020, 08:56:30 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 2786
  • ve
 lucha lucha

despues de 1 dia pude recodificar usando ollydbg para añadir soporte ala capa de rf estilo normal item 12,49 y estilo evo item 12,50



Offline bimaloha #48 Posteado: March 08, 2020, 03:45:49 AM | Modificado: March 08, 2020, 07:48:48 AM by bimaloha

  • 0 puntos por ventas
  • *
  • Rank: Sup. destacado
  • Posts: 117
  • Gracias recibida: 3846
  • vn
everything is ok except for effect :D



Offline cri0 #49 Posteado: March 16, 2020, 11:45:38 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 39
  • Gracias recibida: 592
  • br

Offline NasLy #50 Posteado: March 16, 2020, 04:00:53 PM

  • Colaborador
  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 441
  • Gracias recibida: 12118
  • ar
Nunca es tarde para ser lo que podias haber sido.

Offline Daniel@ #51 Posteado: March 16, 2020, 05:59:44 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 2786
  • ve

Offline Pyke #52 Posteado: March 21, 2020, 05:21:12 PM

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 209
  • Gracias recibida: 13920
  • pl
Someone have offsets for S8?


Online binhchivn #53 Posteado: March 29, 2020, 07:03:51 AM | Modificado: March 29, 2020, 02:45:33 PM by binhchivn

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 45
  • Gracias recibida: 260
  • vn

Offline takumi12 #54 Posteado: March 30, 2020, 07:21:34 PM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Php Coder
  • +11 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 1.310
  • Gracias recibida: 39646
  • mx
tengo una pregunta bien cabrona, que diferencia existe entre estas 2 funciones ya que creo que mi problema se genera en estas acciones.
Code: [Select]
// esta es la que trae la source y la tengo agregada debería funcionar correctamente pero no me deja correrla marca error, a fuerzas
//me pide hacer #include de otro archivo
//declaración en util.h

DWORD SetOp(const DWORD dwEnterFunction, const LPVOID dwJMPAddress, const BYTE cmd);
DWORD SetRange(const DWORD dwAddress, const USHORT wCount, const BYTE btValue);

SetRange(0x00574667,20,ASM::NOP);
SetOp(0x00574667,CapeD,ASM::JMP);


// esta es la que me deja ejecutar
//declaración en TMemory.h
DWORD SetOp(const LPVOID dwEnterFunction, const LPVOID dwJMPAddress, BYTE cmd);
DWORD SetRange(const LPVOID dwAddress, const USHORT wCount, const BYTE btValue);


SetRange((LPVOID)0x00574667,20,ASM::NOP);
SetOp((LPVOID)0x00574667,(LPVOID)CapeD,ASM::JMP);


ya que no me genera el refresh aparte de generarme otros errores, he intenatdo diferentes formas de dar una solución pero llegue a dejar aun lado esta parte de proyecto al no encontrar una solución favorable. alguno que pueda despejarme de dudas?


Las offset no se crea, ni se destruye, solo se transforma

Offline NasLy #55 Posteado: March 30, 2020, 11:28:36 PM

  • Colaborador
  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 441
  • Gracias recibida: 12118
  • ar
tengo una pregunta bien cabrona, que diferencia existe entre estas 2 funciones ya que creo que mi problema se genera en estas acciones.
Code: [Select]
// esta es la que trae la source y la tengo agregada debería funcionar correctamente pero no me deja correrla marca error, a fuerzas
//me pide hacer #include de otro archivo
//declaración en util.h

DWORD SetOp(const DWORD dwEnterFunction, const LPVOID dwJMPAddress, const BYTE cmd);
DWORD SetRange(const DWORD dwAddress, const USHORT wCount, const BYTE btValue);

SetRange(0x00574667,20,ASM::NOP);
SetOp(0x00574667,CapeD,ASM::JMP);


// esta es la que me deja ejecutar
//declaración en TMemory.h
DWORD SetOp(const LPVOID dwEnterFunction, const LPVOID dwJMPAddress, BYTE cmd);
DWORD SetRange(const LPVOID dwAddress, const USHORT wCount, const BYTE btValue);


SetRange((LPVOID)0x00574667,20,ASM::NOP);
SetOp((LPVOID)0x00574667,(LPVOID)CapeD,ASM::JMP);


ya que no me genera el refresh aparte de generarme otros errores, he intenatdo diferentes formas de dar una solución pero llegue a dejar aun lado esta parte de proyecto al no encontrar una solución favorable. alguno que pueda despejarme de dudas?

Me paso algo igual, no se si te servira pero yo hice esto.

No soy Coder, pero yo para hacerlo andar tuve que agregarle unas funcionas(No se si esa es la palabra) al Util.
SetRange y SetOp, ya que no los tenia.

Util.h
DWORD SetOp(const DWORD dwEnterFunction, const LPVOID dwJMPAddress, const BYTE cmd);
DWORD SetRange(const DWORD dwAddress, const USHORT wCount, const BYTE btValue);

Util.cpp
DWORD SetOp(const DWORD dwEnterFunction, const LPVOID dwJMPAddress, const BYTE cmd)
{
    BYTE btBuf[5];
    DWORD dwShift    = (ULONG_PTR)dwJMPAddress - (ULONG_PTR)dwEnterFunction - 5;
   
    btBuf[0]        = cmd;
    memcpy( (LPVOID) & btBuf[1], (LPVOID) & dwShift, sizeof(ULONG_PTR));
   
    return WriteMemory((PVOID)dwEnterFunction, (LPVOID) btBuf, sizeof(btBuf));
};

DWORD SetRange(const DWORD dwAddress, const USHORT wCount, const BYTE btValue)
{
   BYTE * lpBuf   = new BYTE[wCount];
   
   memset(lpBuf, btValue, wCount);
   
   return WriteMemory( (PVOID)dwAddress, (LPVOID) lpBuf, wCount);
}

Nunca es tarde para ser lo que podias haber sido.

Gracias:


Offline NasLy #56 Posteado: March 30, 2020, 11:30:35 PM

  • Colaborador
  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 441
  • Gracias recibida: 12118
  • ar
De mi parte no declare el "TMemory.h"

Corrio perfecto.
Pero igual tiene errores la source

Nunca es tarde para ser lo que podias haber sido.

Offline lahn #57 Posteado: March 31, 2020, 12:49:04 PM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 11
  • Gracias recibida: 2
  • br
solo requiere fix del bug que dice kapocha. es facil arreglar dicho bug


Como?
Minha capa pega de boa, Basta eu tira ela e coloca de novo que ela corta pela metade.
Qual o procedimento?


Offline takumi12 #58 Posteado: April 07, 2020, 12:11:12 AM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Php Coder
  • +11 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 1.310
  • Gracias recibida: 39646
  • mx
Code: [Select]
#include "stdafx.h"
#include "Cape.h"
#include "Defines.h"
#include "Object.h"
#include "Interface.h"
#include "Util.h"
#include "Item.h"



CCapeAnimation gCapeAnimation;

CCapeAnimation::CCapeAnimation()
{

}
CCapeAnimation::~CCapeAnimation()
{

}

DWORD CapeRegister;
DWORD CapeEffectPointer;
DWORD CapeEffectBuff;

void CCapeAnimation::DrawViewPort(DWORD ObjectPointer, DWORD ObjectModel, DWORD a3)
{
lpViewObj Object = &*(ObjectPreview*)(ObjectPointer);

switch(Object->WingsSlot)
{
case ITEM2(12,40):

Object->WingsSlot = ITEM2(12,40);
//-
SetDword((0x0057491A + 1), 0x7758);
SetDword((0x0057491F + 1), 0x7758);
//
SetDword((0x00574F2E + 1), 0x7759);
SetDword((0x00574F33 + 1), 0x7759);
//
SetDword((0x00574FFC + 1), 0x7759);
SetDword((0x00575001 + 1), 0x7759);
//-
break;
case ITEM2(12,49):

Object->WingsSlot = ITEM2(12,49); //capa rage fighter

SetDword((0x0057491A + 1), 0x07EE0);
SetDword((0x0057491F + 1), 0x07EE0);

break;
case ITEM2(12,50): //capa 2da rage fighter

Object->WingsSlot = ITEM2(12,50);
//-
SetDword((0x0057491A + 1), 0x07EE2);
SetDword((0x0057491F + 1), 0x07EE2);
//
SetDword((0x00574F2E + 1), 0x07EE1);
SetDword((0x00574F33 + 1), 0x07EE1);
//
SetDword((0x00574FFC + 1), 0x07EE1);
SetDword((0x00575001 + 1), 0x07EE1);
//-
break;

case ITEM2(12,220):
Object->WingsSlot = ITEM2(12,220);
//
SetDword((0x0057491A + 1), iCapeDeath1);
SetDword((0x0057491F + 1), iCapeDeath1);
//
SetDword((0x00574F2E + 1), iCapeDeath2);
SetDword((0x00574F33 + 1), iCapeDeath2);
//
SetDword((0x00574FFC + 1), iCapeDeath2);
SetDword((0x00575001 + 1), iCapeDeath2);
//-
break;
case ITEM2(12,418):
Object->WingsSlot = ITEM2(12,418);
SetDword((0x0057491A + 1), 0x78A5);
SetDword((0x0057491F + 1), 0x78A5);
//
SetDword((0x00574F2E + 1), 0x78A6);
SetDword((0x00574F33 + 1), 0x78A6);
//
SetDword((0x00574FFC + 1), 0x78A6);
SetDword((0x00575001 + 1), 0x78A6);
break;
case ITEM2(12,420):

Object->WingsSlot = ITEM2(12,420);
SetDword((0x0057491A + 1), 0x78A7);
SetDword((0x0057491F + 1), 0x78A7);
break;
}

pDrawViewPort(ObjectPointer, ObjectModel,  a3);
}


//--- carga tiras de las capas
__declspec(naked) void CapeA() // 0x7759 //-> 03 Main
{
static DWORD Address1 = 0x00574F29;
static DWORD Address2 = 0x005750C5;

_asm{
Mov CapeEffectBuff, ecx
MOV EAX,DWORD PTR SS:[EBP+0x8]
MOVSX ECX,WORD PTR DS:[EAX+0x208]
Mov CapeEffectPointer,ecx
Mov ecx, CapeEffectBuff
}
if(CapeEffectPointer == ITEM2(12,40) || CapeEffectPointer == ITEM2(12,50) || CapeEffectPointer == ITEM2(12,418))
{
_asm{Jmp Address1}
}
else
{
_asm{Jmp Address2}
}
}

//---- carga de la capa
__declspec(naked) void CapeB() //7758
{
static DWORD Address1 = 0x00574915;
static DWORD Address2 = 0x00574A6A;

_asm{
mov CapeEffectBuff, ecx
MOV EAX,DWORD PTR SS:[EBP+0x8]
MOVSX ECX,WORD PTR DS:[EAX+0x208]
mov CapeEffectPointer,ecx
mov ecx, CapeEffectBuff
}
if(CapeEffectPointer == ITEM2(12,40) //2da capa dl
|| CapeEffectPointer == ITEM2(12,49) //-- 1ra capa rf
|| CapeEffectPointer == ITEM2(12,50) //-- 2da capa rf
|| CapeEffectPointer == ITEM2(12,418)
|| CapeEffectPointer == ITEM2(12,420))
{
_asm{Jmp Address1}
}
else
{
_asm{Jmp Address2}
}
}

__declspec(naked) void CapeE() //main allow
{
static DWORD Address1 = 0x005760C2;
static DWORD Address2 = 0x00576014;

_asm{
Mov CapeEffectBuff, ecx
MOV EAX,DWORD PTR SS:[EBP+0x8]
MOVSX ECX,WORD PTR DS:[EAX+0x208]
Mov CapeEffectPointer,Ecx
Mov Ecx, CapeEffectBuff
}
if(CapeEffectPointer == ITEM2(12,40) //-- capa 2 dl
|| CapeEffectPointer == ITEM2(12,130) //-- mini capa
|| CapeEffectPointer == ITEM2(13,30) //-- capa 1 dl
|| CapeEffectPointer == ITEM2(12,418)
|| CapeEffectPointer == ITEM2(12,420))
{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}

__declspec(naked) void CapeD() //allow play
{
static DWORD Address1 = 0x00574683;
static DWORD Address2 = 0x0057468F;
_asm{
Mov CapeEffectBuff, Ecx
MOV DWORD PTR SS:[EBP-0x2D8],4
MOV EAX,DWORD PTR SS:[EBP+0x8]
MOVSX ECX,WORD PTR DS:[EAX+0x208]
mov CapeEffectPointer,ecx
mov ecx, CapeEffectBuff
}
if(CapeEffectPointer == ITEM2(12,40)
|| CapeEffectPointer == ITEM2(12,49)
|| CapeEffectPointer == ITEM2(12,50)
|| CapeEffectPointer == ITEM2(12,418)
|| CapeEffectPointer == ITEM2(12,420)
)
{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}

}

__declspec(naked) void HideCape()
{
static DWORD Address1 = 0x005FAD7D;
static DWORD Address2 = 0x005FAE90;
_asm
{
Mov Ecx, dword ptr ss : [ebp +0x10]
Mov Dword ptr ss : [ebp +0x10], Ecx
Mov CapeEffectPointer, Ecx
}

if (CapeEffectPointer == ITEM2(12,40)
|| CapeEffectPointer == ITEM2(12,49)
|| CapeEffectPointer == ITEM2(12,50)
|| CapeEffectPointer == ITEM2(12,418)
|| CapeEffectPointer == ITEM2(12,420))
{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}


__declspec(naked) void AllowMGCape() //?
{
static DWORD Address1 = 0x00574D4C;
static DWORD Address2 = 0x00574DAC;
_asm
{
Mov CapeEffectBuff,Ecx
Mov Eax,Dword Ptr Ss : [Ebp + 0x8]
MOVZX ECX,BYTE Ptr Ds : [Eax + 0x13]
Mov CapeEffectPointer,Ecx
Mov Ecx, CapeEffectBuff
}
if (CapeEffectPointer == 3)
{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}


void __declspec(naked) CapeInventoryPos()
{
DWORD dwItem;
_asm
{
Mov Ecx,DWORD PTR SS:[EBP+0x8]
Mov dwItem,Ecx
CMP dwItem,ITEM2(12,40)
Je Exit
CMP dwItem,ITEM2(12,418)
Je Exit
CMP dwItem,ITEM2(12,420)
Je Exit
Exit:
Mov Ecx,0x005CAFD2
Jmp Ecx
}
}


void DrawObjectDropOnViewport(int a1)
{
pObjOnViewport(a1);

switch(*(DWORD *)(a1 + 48))
      {
case ITEM2(13,64):
*(float *)(a1 + 264) = 0.0f;
            *(float *)(a1 + 96) = 0.2f;
*(float *)(a1 + 272) = 70.0f;
break;
}
}

void RefreshCapeUnEquip(ObjectItem * lpItem)
{

switch(lpItem->ItemID)
{
case ITEM2(12,418):
case ITEM2(12,420):
pRefreshViewport(oUserPreviewStruct, oUserPreviewStruct + 776, 0);
break;
}

pRefreshCape1(lpItem);
}

void RefreshCapeUnEquip1(ObjectItem * lpItem)
{
switch(lpItem->ItemID)
{
case ITEM(12,418):
case ITEM(12,420)://Control Cloak
pRefreshViewport(oUserPreviewStruct, oUserPreviewStruct + 776, 0);
break;
}
pRefreshCape1(lpItem);
}

void RefreshCapeUnEquip2(ObjectItem * lpItem)
{
switch(lpItem->ItemID)
{
case ITEM(12,418):
case ITEM(12,420)://Control Cloak
pRefreshViewport(oUserPreviewStruct, oUserPreviewStruct + 776, 0);
break;
}
pRefreshCape2(lpItem);
}


__declspec(naked) void RemoveDarklordHair()
{
static DWORD Address1 = 0x00574755;
static DWORD Address2 = 0x005748FF;

_asm
{
Mov Eax, Dword Ptr Ss : [Ebp + 0x8]
Movzx Edx, Byte Ptr Ds : [Eax + 0x13]
And Edx, 0x7
Cmp Edx, 0x4
Jne EXIT
Push 0xC0000205
Jmp Address1
EXIT:
Jmp Address2
}
}

void CCapeAnimation::Load()
{
SetCompleteHook(0xFF,0x0040487D, &this->DrawViewPort);
SetCompleteHook(0xFF,0x0048E56C, &this->DrawViewPort);
SetCompleteHook(0xFF,0x0057D4FF, &this->DrawViewPort);
SetCompleteHook(0xFF,0x0057D513, &this->DrawViewPort);
//-
SetCompleteHook(0xE9, 0x00572346, 0x00572370); //Apply

SetCompleteHook(0xE9, 0x0057464E, 0x00574667); //Apply

SetCompleteHook(0xE9, 0x00574750, &RemoveDarklordHair);
//-
SetRange(0x00574667,20,ASM::NOP);
SetOp(0x00574667,(LPVOID)CapeD,ASM::JMP);
//-
SetRange(0x00574F13,10,ASM::NOP);
SetOp(0x00574F13,(LPVOID)CapeA,ASM::JMP);
//-
SetRange(0x005748FF,10,ASM::NOP);
SetOp(0x005748FF,(LPVOID)CapeB,ASM::JMP);
//-
SetRange(0x00576058,10,ASM::NOP);
SetOp(0x00576058,(LPVOID)CapeE,ASM::JMP);
//-
SetRange(0x005FAD70,7,ASM::NOP);
SetOp(0x005FAD70,(LPVOID)HideCape,ASM::JMP);
//-
SetRange(0x00574D3D,13,ASM::NOP);
SetOp(0x00574D3D,(LPVOID)AllowMGCape,ASM::JMP);
//--
SetCompleteHook(0xE8,0x00833BE7,&RefreshCapeUnEquip1);
SetCompleteHook(0xE8,0x007DD304,&RefreshCapeUnEquip2);
SetCompleteHook(0xE8,0x00833B08,&RefreshCapeUnEquip2);
//-
SetRange(0x005CAFCB,7,ASM::NOP);
SetOp(0x005CAFCB,(LPVOID)CapeInventoryPos,ASM::JMP);
}

para los que andan probando, ahí esta las offset de la capa del RF la 1 y la 2, anexo código semi corregido, y digo semi corregido porque aun no genera el refresh, intenté de muchas manera pero no funciona del todo se bugguea xD


Las offset no se crea, ni se destruye, solo se transforma

Offline cri0 #59 Posteado: April 14, 2020, 12:12:29 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 39
  • Gracias recibida: 592
  • br
Code: [Select]
#include "stdafx.h"
#include "Cape.h"
#include "Defines.h"
#include "Object.h"
#include "Interface.h"
#include "Util.h"
#include "Item.h"



CCapeAnimation gCapeAnimation;

CCapeAnimation::CCapeAnimation()
{

}
CCapeAnimation::~CCapeAnimation()
{

}

DWORD CapeRegister;
DWORD CapeEffectPointer;
DWORD CapeEffectBuff;

void CCapeAnimation::DrawViewPort(DWORD ObjectPointer, DWORD ObjectModel, DWORD a3)
{
lpViewObj Object = &*(ObjectPreview*)(ObjectPointer);

switch(Object->WingsSlot)
{
case ITEM2(12,40):

Object->WingsSlot = ITEM2(12,40);
//-
SetDword((0x0057491A + 1), 0x7758);
SetDword((0x0057491F + 1), 0x7758);
//
SetDword((0x00574F2E + 1), 0x7759);
SetDword((0x00574F33 + 1), 0x7759);
//
SetDword((0x00574FFC + 1), 0x7759);
SetDword((0x00575001 + 1), 0x7759);
//-
break;
case ITEM2(12,49):

Object->WingsSlot = ITEM2(12,49); //capa rage fighter

SetDword((0x0057491A + 1), 0x07EE0);
SetDword((0x0057491F + 1), 0x07EE0);

break;
case ITEM2(12,50): //capa 2da rage fighter

Object->WingsSlot = ITEM2(12,50);
//-
SetDword((0x0057491A + 1), 0x07EE2);
SetDword((0x0057491F + 1), 0x07EE2);
//
SetDword((0x00574F2E + 1), 0x07EE1);
SetDword((0x00574F33 + 1), 0x07EE1);
//
SetDword((0x00574FFC + 1), 0x07EE1);
SetDword((0x00575001 + 1), 0x07EE1);
//-
break;

case ITEM2(12,220):
Object->WingsSlot = ITEM2(12,220);
//
SetDword((0x0057491A + 1), iCapeDeath1);
SetDword((0x0057491F + 1), iCapeDeath1);
//
SetDword((0x00574F2E + 1), iCapeDeath2);
SetDword((0x00574F33 + 1), iCapeDeath2);
//
SetDword((0x00574FFC + 1), iCapeDeath2);
SetDword((0x00575001 + 1), iCapeDeath2);
//-
break;
case ITEM2(12,418):
Object->WingsSlot = ITEM2(12,418);
SetDword((0x0057491A + 1), 0x78A5);
SetDword((0x0057491F + 1), 0x78A5);
//
SetDword((0x00574F2E + 1), 0x78A6);
SetDword((0x00574F33 + 1), 0x78A6);
//
SetDword((0x00574FFC + 1), 0x78A6);
SetDword((0x00575001 + 1), 0x78A6);
break;
case ITEM2(12,420):

Object->WingsSlot = ITEM2(12,420);
SetDword((0x0057491A + 1), 0x78A7);
SetDword((0x0057491F + 1), 0x78A7);
break;
}

pDrawViewPort(ObjectPointer, ObjectModel,  a3);
}


//--- carga tiras de las capas
__declspec(naked) void CapeA() // 0x7759 //-> 03 Main
{
static DWORD Address1 = 0x00574F29;
static DWORD Address2 = 0x005750C5;

_asm{
Mov CapeEffectBuff, ecx
MOV EAX,DWORD PTR SS:[EBP+0x8]
MOVSX ECX,WORD PTR DS:[EAX+0x208]
Mov CapeEffectPointer,ecx
Mov ecx, CapeEffectBuff
}
if(CapeEffectPointer == ITEM2(12,40) || CapeEffectPointer == ITEM2(12,50) || CapeEffectPointer == ITEM2(12,418))
{
_asm{Jmp Address1}
}
else
{
_asm{Jmp Address2}
}
}

//---- carga de la capa
__declspec(naked) void CapeB() //7758
{
static DWORD Address1 = 0x00574915;
static DWORD Address2 = 0x00574A6A;

_asm{
mov CapeEffectBuff, ecx
MOV EAX,DWORD PTR SS:[EBP+0x8]
MOVSX ECX,WORD PTR DS:[EAX+0x208]
mov CapeEffectPointer,ecx
mov ecx, CapeEffectBuff
}
if(CapeEffectPointer == ITEM2(12,40) //2da capa dl
|| CapeEffectPointer == ITEM2(12,49) //-- 1ra capa rf
|| CapeEffectPointer == ITEM2(12,50) //-- 2da capa rf
|| CapeEffectPointer == ITEM2(12,418)
|| CapeEffectPointer == ITEM2(12,420))
{
_asm{Jmp Address1}
}
else
{
_asm{Jmp Address2}
}
}

__declspec(naked) void CapeE() //main allow
{
static DWORD Address1 = 0x005760C2;
static DWORD Address2 = 0x00576014;

_asm{
Mov CapeEffectBuff, ecx
MOV EAX,DWORD PTR SS:[EBP+0x8]
MOVSX ECX,WORD PTR DS:[EAX+0x208]
Mov CapeEffectPointer,Ecx
Mov Ecx, CapeEffectBuff
}
if(CapeEffectPointer == ITEM2(12,40) //-- capa 2 dl
|| CapeEffectPointer == ITEM2(12,130) //-- mini capa
|| CapeEffectPointer == ITEM2(13,30) //-- capa 1 dl
|| CapeEffectPointer == ITEM2(12,418)
|| CapeEffectPointer == ITEM2(12,420))
{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}

__declspec(naked) void CapeD() //allow play
{
static DWORD Address1 = 0x00574683;
static DWORD Address2 = 0x0057468F;
_asm{
Mov CapeEffectBuff, Ecx
MOV DWORD PTR SS:[EBP-0x2D8],4
MOV EAX,DWORD PTR SS:[EBP+0x8]
MOVSX ECX,WORD PTR DS:[EAX+0x208]
mov CapeEffectPointer,ecx
mov ecx, CapeEffectBuff
}
if(CapeEffectPointer == ITEM2(12,40)
|| CapeEffectPointer == ITEM2(12,49)
|| CapeEffectPointer == ITEM2(12,50)
|| CapeEffectPointer == ITEM2(12,418)
|| CapeEffectPointer == ITEM2(12,420)
)
{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}

}

__declspec(naked) void HideCape()
{
static DWORD Address1 = 0x005FAD7D;
static DWORD Address2 = 0x005FAE90;
_asm
{
Mov Ecx, dword ptr ss : [ebp +0x10]
Mov Dword ptr ss : [ebp +0x10], Ecx
Mov CapeEffectPointer, Ecx
}

if (CapeEffectPointer == ITEM2(12,40)
|| CapeEffectPointer == ITEM2(12,49)
|| CapeEffectPointer == ITEM2(12,50)
|| CapeEffectPointer == ITEM2(12,418)
|| CapeEffectPointer == ITEM2(12,420))
{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}


__declspec(naked) void AllowMGCape() //?
{
static DWORD Address1 = 0x00574D4C;
static DWORD Address2 = 0x00574DAC;
_asm
{
Mov CapeEffectBuff,Ecx
Mov Eax,Dword Ptr Ss : [Ebp + 0x8]
MOVZX ECX,BYTE Ptr Ds : [Eax + 0x13]
Mov CapeEffectPointer,Ecx
Mov Ecx, CapeEffectBuff
}
if (CapeEffectPointer == 3)
{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}


void __declspec(naked) CapeInventoryPos()
{
DWORD dwItem;
_asm
{
Mov Ecx,DWORD PTR SS:[EBP+0x8]
Mov dwItem,Ecx
CMP dwItem,ITEM2(12,40)
Je Exit
CMP dwItem,ITEM2(12,418)
Je Exit
CMP dwItem,ITEM2(12,420)
Je Exit
Exit:
Mov Ecx,0x005CAFD2
Jmp Ecx
}
}


void DrawObjectDropOnViewport(int a1)
{
pObjOnViewport(a1);

switch(*(DWORD *)(a1 + 48))
      {
case ITEM2(13,64):
*(float *)(a1 + 264) = 0.0f;
            *(float *)(a1 + 96) = 0.2f;
*(float *)(a1 + 272) = 70.0f;
break;
}
}

void RefreshCapeUnEquip(ObjectItem * lpItem)
{

switch(lpItem->ItemID)
{
case ITEM2(12,418):
case ITEM2(12,420):
pRefreshViewport(oUserPreviewStruct, oUserPreviewStruct + 776, 0);
break;
}

pRefreshCape1(lpItem);
}

void RefreshCapeUnEquip1(ObjectItem * lpItem)
{
switch(lpItem->ItemID)
{
case ITEM(12,418):
case ITEM(12,420)://Control Cloak
pRefreshViewport(oUserPreviewStruct, oUserPreviewStruct + 776, 0);
break;
}
pRefreshCape1(lpItem);
}

void RefreshCapeUnEquip2(ObjectItem * lpItem)
{
switch(lpItem->ItemID)
{
case ITEM(12,418):
case ITEM(12,420)://Control Cloak
pRefreshViewport(oUserPreviewStruct, oUserPreviewStruct + 776, 0);
break;
}
pRefreshCape2(lpItem);
}


__declspec(naked) void RemoveDarklordHair()
{
static DWORD Address1 = 0x00574755;
static DWORD Address2 = 0x005748FF;

_asm
{
Mov Eax, Dword Ptr Ss : [Ebp + 0x8]
Movzx Edx, Byte Ptr Ds : [Eax + 0x13]
And Edx, 0x7
Cmp Edx, 0x4
Jne EXIT
Push 0xC0000205
Jmp Address1
EXIT:
Jmp Address2
}
}

void CCapeAnimation::Load()
{
SetCompleteHook(0xFF,0x0040487D, &this->DrawViewPort);
SetCompleteHook(0xFF,0x0048E56C, &this->DrawViewPort);
SetCompleteHook(0xFF,0x0057D4FF, &this->DrawViewPort);
SetCompleteHook(0xFF,0x0057D513, &this->DrawViewPort);
//-
SetCompleteHook(0xE9, 0x00572346, 0x00572370); //Apply

SetCompleteHook(0xE9, 0x0057464E, 0x00574667); //Apply

SetCompleteHook(0xE9, 0x00574750, &RemoveDarklordHair);
//-
SetRange(0x00574667,20,ASM::NOP);
SetOp(0x00574667,(LPVOID)CapeD,ASM::JMP);
//-
SetRange(0x00574F13,10,ASM::NOP);
SetOp(0x00574F13,(LPVOID)CapeA,ASM::JMP);
//-
SetRange(0x005748FF,10,ASM::NOP);
SetOp(0x005748FF,(LPVOID)CapeB,ASM::JMP);
//-
SetRange(0x00576058,10,ASM::NOP);
SetOp(0x00576058,(LPVOID)CapeE,ASM::JMP);
//-
SetRange(0x005FAD70,7,ASM::NOP);
SetOp(0x005FAD70,(LPVOID)HideCape,ASM::JMP);
//-
SetRange(0x00574D3D,13,ASM::NOP);
SetOp(0x00574D3D,(LPVOID)AllowMGCape,ASM::JMP);
//--
SetCompleteHook(0xE8,0x00833BE7,&RefreshCapeUnEquip1);
SetCompleteHook(0xE8,0x007DD304,&RefreshCapeUnEquip2);
SetCompleteHook(0xE8,0x00833B08,&RefreshCapeUnEquip2);
//-
SetRange(0x005CAFCB,7,ASM::NOP);
SetOp(0x005CAFCB,(LPVOID)CapeInventoryPos,ASM::JMP);
}

para los que andan probando, ahí esta las offset de la capa del RF la 1 y la 2, anexo código semi corregido, y digo semi corregido porque aun no genera el refresh, intenté de muchas manera pero no funciona del todo se bugguea xD

Share Interface.cpp ?


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
7 Replies
9809 Views
Last post August 05, 2021, 12:50:39 AM
by gici
33 Replies
13442 Views
Last post November 26, 2019, 10:41:00 AM
by samsunggon
64 Replies
10734 Views
Last post March 03, 2021, 01:31:38 PM
by tutu100
14 Replies
2695 Views
Last post October 31, 2020, 09:21:31 AM
by GameNet
2 Replies
1304 Views
Last post November 23, 2023, 10:34:10 PM
by xXSiniestroXx