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

0 Miembros and 1 Guest are viewing this topic.

Offline Nemesis on: December 06, 2017, 03:26:05 PM

  • C++ Coder
  • *
  • *
  • Rank: Principiante
  • Posts: 23
  • Gracias recibida: 70
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
« Ultima edicion: December 06, 2017, 03:43:14 PM by Nemesis »

Gracias:


Offline ZabiinoOo #1 on: December 06, 2017, 06:20:11 PM

  • Administrador
  • *
  • Rank: Puto amo
  • Posts: 2664
  • Gracias recibida: 20305
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

 

Related Topics

  Subject / Started by Replies Last post
6 Replies
1017 Views
Last post April 25, 2017, 08:56:56 PM
by bertilio
6 Replies
602 Views
Last post October 31, 2017, 09:50:46 PM
by ZabiinoOo
5 Replies
210 Views
Last post September 19, 2017, 02:00:35 PM
by Tauro14
0 Replies
159 Views
Last post July 11, 2017, 10:33:35 AM
by Dann
0 Replies
28 Views
Last post November 02, 2017, 11:47:53 PM
by seedmaker