Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: MakePreviewCharSet Source (Main 1.05.50)  (Visto 3263 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline Nemesis Posteado: December 06, 2017, 02:26:05 PM | Modificado: December 06, 2017, 02:43:14 PM by Nemesis

  • C++ Coder
  • 0 puntos por ventas
  • *
  • *
  • Rank: Heroe
  • Posts: 170
  • Gracias recibida: 6497
  • ar
Bueno hola gente, les cuento que estoy trabajando con Season 4 Episode 2 Korea, main.exe versión: 1.05.50 (1.05X+) para ser precisos, y bueno ya tengo desarrolladas una serie de cosas importantes para mi próximo proyecto: Server <-> Cliente, (que estaré aportando dentro de muy poco aquí en el foro), pero por el momento, quería dejarles esta pequeña función, cabe destacar que no se trata de la función decompilada completa propiamente dicha, como debería ser, sino mas bien que es una pequeña Emulación utilizando punteros, pero funciona al: 100% para agregar Alas Custom.

El Resultado en el Juego es algo como esto:


Claro que, para que las Alas funcionen correctamente es necesario arreglar 2 funciones en sus GameServers, suponiendo que utilicen algún derivado de la Decompilacion de DeathWay 1.00.18, SCF o bien algún derivado de la Decompilacion de HermeX 1.00.87, los nombres de estas funciones son: "JGPGetCharList"
después del: else // -> case DB 3 ubicada en el archivo: DSProtocol.cpp, y "gObjMakePreviewCharSet" ubicada en el archivo: user.cpp

Preview.cpp Class File:
Code: [Select]
#include "StdAfx.h"

cPreview gPreview;

cPreview::cPreview()
{
// -> Constructor
}

cPreview::~cPreview()
{
// -> Destructor
}

void cPreview::MakeCharSet(int aIndex,BYTE *CharSet,int Struct,int Mode)
{
pMakePreviewCharSet(aIndex,CharSet,Struct,Mode);
// ----
BYTE CustomWings = CharSet[16]>>2;
// ----
if(CustomWings)
{
switch(CustomWings)
{
// -> Arieth Mu 4th Level Wings
case HeavenWings:
{
*(WORD*)(1148*aIndex+*(DWORD*)oPreviewStruct+0x1C0) = ObjectId(12,240);
break;
}
case DemonicWings:
{
*(WORD*)(1148*aIndex+*(DWORD*)oPreviewStruct+0x1C0) = ObjectId(12,241);
break;
}
case BlossomWings:
{
*(WORD*)(1148*aIndex+*(DWORD*)oPreviewStruct+0x1C0) = ObjectId(12,242);
break;
}
case ThunderWings:
{
*(WORD*)(1148*aIndex+*(DWORD*)oPreviewStruct+0x1C0) = ObjectId(12,243);
break;
}
case RavenWings:
{
*(WORD*)(1148*aIndex+*(DWORD*)oPreviewStruct+0x1C0) = ObjectId(12,244);
break;
}
case EternalWings:
{
*(WORD*)(1148*aIndex+*(DWORD*)oPreviewStruct+0x1C0) = ObjectId(12,245);
break;
}
}
}
}

void cPreview::Load()
{
gToolKit.SetOp((LPVOID)oMakePreviewCharSet_Call01,this->MakeCharSet,ASM::CALL);
gToolKit.SetOp((LPVOID)oMakePreviewCharSet_Call02,this->MakeCharSet,ASM::CALL);
gToolKit.SetOp((LPVOID)oMakePreviewCharSet_Call03,this->MakeCharSet,ASM::CALL);
gToolKit.SetOp((LPVOID)oMakePreviewCharSet_Call04,this->MakeCharSet,ASM::CALL);
gToolKit.SetOp((LPVOID)oMakePreviewCharSet_Call05,this->MakeCharSet,ASM::CALL);
gToolKit.SetOp((LPVOID)oMakePreviewCharSet_Call06,this->MakeCharSet,ASM::CALL);
gToolKit.SetOp((LPVOID)oMakePreviewCharSet_Call07,this->MakeCharSet,ASM::CALL);
}

Preview.h Class File:
Code: [Select]
#ifndef __PREVIEW_H__
#define __PREVIEW_H__

class cPreview
{
public:
cPreview();
virtual ~cPreview();
// ----
void Load();
// ----
static void MakeCharSet(int aIndex,BYTE *CharSet,int Struct,int Mode);
};

extern cPreview gPreview;

#endif // __PREVIEW_H__

Defines.h File:
Code: [Select]
#define MODELS_ARRAY					828
#define ItemId(x,y) ((x*512)+y)
#define ObjectId(x,y) ((x*512)+y+MODELS_ARRAY)

Import.h File:
Code: [Select]
#ifndef __IMPORT_H__
#define __IMPORT_H__

// -> Struct
#define oPreviewStruct 0x079CD0E8

// -> Preview
#define oMakePreviewCharSet_Call01 0x0046BF25
#define oMakePreviewCharSet_Call02 0x00603183
#define oMakePreviewCharSet_Call03 0x00609265
#define oMakePreviewCharSet_Call04 0x00609D0A
#define oMakePreviewCharSet_Call05 0x0060A2F0
#define oMakePreviewCharSet_Call06 0x0062DFEC
#define oMakePreviewCharSet_Call07 0x00631037
#define pMakePreviewCharSet ((void(__cdecl*)(int aIndex,BYTE *CharSet,int Struct,int Mode))0x004F9532)

#endif // __IMPORT_H__

Enums.h File:
Code: [Select]
enum eWingsId
{
HeavenWings = 1,
DemonicWings = 2,
BlossomWings = 3,
ThunderWings = 4,
RavenWings = 5,
EternalWings = 6,
};

PD: Si a alguien le hace falta algo mas, hagamelo saber y con mucho gusto le proporciono lo restante (clase ToolKit).

Créditos:
Webzen
AriethMu
Nemesis

Gracias:


Online ZabiinoOo #1 Posteado: December 06, 2017, 05:20:11 PM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Administrador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 7.270
  • Gracias recibida: 125152
  • pe
Se ve buenazo la verdad dicho proyecto hermano segui asi bro y esperamos ver mas info del season4 un abrazo :D




Prohibido pedir soporte via MP
Leer las reglas de cada seccion
we trust god

Offline herjuni #2 Posteado: July 17, 2018, 07:59:07 PM

  • C++ Coder
  • -1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 225
  • Gracias recibida: 1979
  • bo

Offline ConejoMalo #3 Posteado: October 15, 2019, 12:19:46 AM

  • +1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 781
  • Gracias recibida: 7675
  • ar
hola me gustaria montar el server que subiste me pasarias los files y el cliente por favor?

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

Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
8 Replies
4658 Views
Last post January 02, 2022, 09:49:27 AM
by massironimatias
1 Replies
2402 Views
Last post February 24, 2018, 02:27:14 PM
by Ryuno
68 Replies
16111 Views
Last post April 23, 2020, 12:38:11 AM
by pkdomal
6 Replies
4154 Views
Last post May 14, 2022, 01:14:30 PM
by wiljipa
0 Replies
586 Views
Last post May 06, 2019, 05:28:27 PM
by martinx09