//DakosmuWide Imagenes Cliente
pLoadImage("Custom\\DakosmuWide\\Wide_1.tga", 87968, 0x2601, 0x2901, 1, 0);
pLoadImage("Custom\\DakosmuWide\\Wide_2.tga", 87969, 0x2601, 0x2901, 1, 0);
pLoadImage("Custom\\DakosmuWide\\Wide_3.tga", 61546, GL_LINEAR, GL_CLAMP, 1, 0);
pLoadImage("Custom\\DakosmuWide\\Wide_4.tga", 61547, GL_LINEAR, GL_CLAMP, 1, 0);
pLoadImage("Custom\\DakosmuWide\\Wide_5.tga", 31337, 9729, 10496, 1, 0);
//Dakosmu
CitarData\Custom\DakosmuWide
//WideScreen
DakosmuWide1.InitFrameOpenGL();
DakosmuInterfaceNew.Load();
//WideScreen
#include "stdafx.h"
#include "DakosmuBytes.h"
#include "../../Util/libjpeg/jpeglib.h"
#include "Util.h"
#include <Shlwapi.h>
#pragma comment(lib, "Shlwapi.lib")
#pragma comment(lib, "jpeg.lib")
#define pOpen ((FILE*(*)(const char *,const char*))0x009D0040)
#define pSeek ((int*(*)(FILE*,long,int))0x009D6A53)
#define pRead ((DWORD*(*)(void*,DWORD,DWORD,FILE*))0x009CFF5F)
void* DakosmuJpegBuffer;
DWORD DakosmuJpegBufferSize;
void DakosmuDec()
{
SetCompleteHook(0xE9, 0x004FC7AC, &DakosmuOpenJpegBuffer1);
SetCompleteHook(0xE9, 0x004FCB85, &DakosmuOpenJpegBuffer2);
SetCompleteHook(0xE9, 0x004FCCBA, &DakosmuOpenTga);
SetCompleteHook(0xE9, 0x0054C28C, &DakosmuOpenBmd);
SetCompleteHook(0xE9, 0x005D68FF, &DakosmuOpenAtt);
SetCompleteHook(0xE9, 0x005D6ECF, &DakosmuOpenMap);
SetCompleteHook(0xE9, 0x005F34A8, &DakosmuOpenObj);
SetCompleteHook(0xFF, 0x004FC6C7, &DakosmuOpenFile);
SetCompleteHook(0xFF, 0x004FCC3E, &DakosmuOpenFile);
SetCompleteHook(0xFF, 0x0054C21D, &DakosmuOpenFile);
SetCompleteHook(0xFF, 0x005D6826, &DakosmuOpenFile);
SetCompleteHook(0xFF, 0x005D6E64, &DakosmuOpenFile);
SetCompleteHook(0xFF, 0x005F3402, &DakosmuOpenFile);
}
FILE* DakosmuOpenFile(const char* path, const char* f)
{
char encpath[MAX_PATH] = { 0 };
wsprintf(encpath, "%s.enc", path);
if (PathFileExists(encpath) != 0)
{
return pOpen(encpath, f);
}
return pOpen(path, f);
}
int DakosmuCheckFile(FILE* hFile)
{
BYTE Buffer[0x18] = { 0 };
pSeek(hFile, 0, SEEK_SET);
pRead(Buffer, 1, sizeof(Buffer), hFile);
if (Buffer[0] != 'E' || Buffer[1] != 'N' || Buffer[2] != 'C')
{
return 0;
}
if (Buffer[3] == 1)
{
return 2;
}
return 1;
}
BOOL DakosmuDecryptFile(FILE* hFile, BYTE* Buffer, int Size, int Origin, int Offset)
{
if (DakosmuCheckFile(hFile) != 0)
{
pSeek(hFile, 0x18, SEEK_SET);
pRead(Buffer, 1, Size, hFile);
for (int n = 0; n < (Size - 0x18); n++)
{
Buffer[n] += (BYTE)(0xA0 ^ HIBYTE(n));
Buffer[n] ^= (BYTE)(0xAB ^ LOBYTE(n));
}
return 1;
}
pSeek(hFile, Offset, SEEK_SET);
pRead(Buffer, 1, Size, hFile);
return 0;
}
__declspec(naked) void DakosmuOpenJpegBuffer1()
{
static DWORD Address1 = 0x004FC7C2;
static DWORD Address2 = 0x004FC7C2;
static DWORD Address3 = 0x009CFF5F;
static DWORD Address4 = 0x009D6A53;
static DWORD Address5 = 0x009D6CF0;
static DWORD Address6 = 0x009D00C5;
_asm
{
Push 2
Push 0x18
Mov Ecx, Dword Ptr Ss : [Ebp - 0x2C4]
Push Ecx
Call[Address4]
Add Esp, 0x0C
Mov Ecx, Dword Ptr Ss : [Ebp - 0x2C4]
Push Ecx
Call[Address5]
Add Esp, 0x04
Mov DakosmuJpegBufferSize, Eax
Push 0
Push 0x18
Mov Ecx, Dword Ptr Ss : [Ebp - 0x2C4]
Push Ecx
Call[Address4]
Add Esp, 0x0C
Push DakosmuJpegBufferSize
Call[Address6]
Add Esp, 0x04
Push 0x18
Push 0
Mov DakosmuJpegBuffer, Eax
Push DakosmuJpegBufferSize
Push DakosmuJpegBuffer
Mov Ecx, Dword Ptr Ss : [Ebp - 0x2C4]
Push Ecx
Call[DakosmuDecryptFile]
Add Esp, 0x14
Test Eax, Eax
Je EXIT
Mov Edx, DakosmuJpegBufferSize
Sub Edx, 0x18
Push Edx
Mov Eax, DakosmuJpegBuffer
Add Eax, 0x18
Push Eax
Lea Ecx, Dword Ptr Ss : [Ebp - 0x2A4]
Push Ecx
Call[jpeg_mem_src]
Add Esp, 0x0C
Jmp Address1
EXIT :
Push DakosmuJpegBufferSize
Push DakosmuJpegBuffer
Lea Ecx, Dword Ptr Ss : [Ebp - 0x2A4]
Push Ecx
Call[jpeg_mem_src]
Add Esp, 0x0C
Jmp Address2
}
}
__declspec(naked) void DakosmuOpenJpegBuffer2()
{
static DWORD Address1 = 0x004FCB8C;
static DWORD Address2 = 0x009CF11A;
_asm
{
Push DakosmuJpegBuffer
Call[Address2]
Add Esp, 0x04
Mov DakosmuJpegBuffer, 0
Mov Byte Ptr Ss : [Ebp - 0x325] , 1
Jmp Address1
}
}
__declspec(naked) void DakosmuOpenTga()
{
static DWORD Address1 = 0x004FCCD0;
static DWORD Address2 = 0x004FCCD0;
_asm
{
Push 0
Push 0x18
Mov Edx, Dword Ptr Ss : [Ebp - 0x34]
Push Edx
Mov Eax, Dword Ptr Ss : [Ebp - 0x44]
Push Eax
Mov Ecx, Dword Ptr Ss : [Ebp - 0x3C]
Push Ecx
Call[DakosmuDecryptFile]
Add Esp, 0x14
Jmp Address1
}
}
__declspec(naked) void DakosmuOpenBmd()
{
static DWORD Address1 = 0x0054C2A2;
static DWORD Address2 = 0x0054C2A2;
_asm
{
Push 0
Push 0x18
Mov Edx, Dword Ptr Ss : [Ebp - 0x64]
Push Edx
Mov Eax, Dword Ptr Ss : [Ebp - 0x68]
Push Eax
Mov Ecx, Dword Ptr Ss : [Ebp - 0x18]
Push Ecx
Call[DakosmuDecryptFile]
Add Esp, 0x14
Jmp Address1
}
}
__declspec(naked) void DakosmuOpenAtt()
{
static DWORD Address1 = 0x005D6915;
static DWORD Address2 = 0x005D6915;
_asm
{
Push 0
Push 0x18
Mov Edx, Dword Ptr Ss : [Ebp - 0x14]
Push Edx
Mov Eax, Dword Ptr Ss : [Ebp - 0x0C]
Push Eax
Mov Ecx, Dword Ptr Ss : [Ebp - 0x8]
Push Ecx
Call[DakosmuDecryptFile]
Add Esp, 0x14
Test Eax, Eax
Je EXIT
Mov Edx, Dword Ptr Ss : [Ebp - 0x14]
Sub Edx, 0x18
Mov Dword Ptr Ss : [Ebp - 0x14] , Edx
Jmp Address1
EXIT :
Jmp Address2
}
}
__declspec(naked) void DakosmuOpenMap()
{
static DWORD Address1 = 0x005D6EE5;
static DWORD Address2 = 0x005D6EE5;
_asm
{
Push 0
Push 0x18
Mov Edx, Dword Ptr Ss : [Ebp - 0x14]
Push Edx
Mov Eax, Dword Ptr Ss : [Ebp - 0x0C]
Push Eax
Mov Ecx, Dword Ptr Ss : [Ebp - 0x8]
Push Ecx
Call[DakosmuDecryptFile]
Add Esp, 0x14
Test Eax, Eax
Je EXIT
Mov Edx, Dword Ptr Ss : [Ebp - 0x14]
Sub Edx, 0x18
Mov Dword Ptr Ss : [Ebp - 0x14] , Edx
Jmp Address1
EXIT :
Jmp Address2
}
}
__declspec(naked) void DakosmuOpenObj()
{
static DWORD Address1 = 0x005F34BE;
static DWORD Address2 = 0x005F34BE;
_asm
{
Push 0
Push 0x18
Mov Edx, Dword Ptr Ss : [Ebp - 0x18]
Push Edx
Mov Eax, Dword Ptr Ss : [Ebp - 0x10]
Push Eax
Mov Ecx, Dword Ptr Ss : [Ebp - 0x8]
Push Ecx
Call[DakosmuDecryptFile]
Add Esp, 0x14
Test Eax, Eax
Je EXIT
Mov Edx, Dword Ptr Ss : [Ebp - 0x18]
Sub Edx, 0x18
Mov Dword Ptr Ss : [Ebp - 0x18] , Edx
Jmp Address1
EXIT :
Jmp Address2
}
}
#pragma once
void DakosmuDec();
FILE *DakosmuOpenFile(const char *path, const char *f);
int DakosmuCheckFile(FILE *hFile);
BOOL DakosmuDecryptFile(FILE *hFile, BYTE *Buffer, int Size, int Origin, int Offset);
void DakosmuOpenJpegBuffer1();
void DakosmuOpenJpegBuffer2();
void DakosmuOpenTga();
void DakosmuOpenBmd();
void DakosmuOpenAtt();
void DakosmuOpenMap();
void DakosmuOpenObj();
#pragma once
//WideScreem
#define DakosmuCoorX *(DWORD *)(*(DWORD *)0x7BC4F04 + 0xAC)
#define DakosmuCoorY *(DWORD *)(*(DWORD *)0x7BC4F04 + 0xB0)
#define DakosmuSupremo ((void(__cdecl*)())0x00637A30)
#define DakosmuSetFont ((int(__thiscall*)(LPVOID This, int a2)) 0x420120)
#define DakosmuFontBold *(HGDIOBJ*)0x00E8C58C
#define DakosmuAlphaTest ((void(__cdecl*)(BYTE Mode)) 0x635FD0)
#define DakosmuBitmap ((void(__cdecl*)(int ImageID, float PosX, float PosY, float Width, float Height, float Arg6, float Arg7, float ScaleX, float ScaleY, bool ScaleSize, bool ScalePosition, float ScaleAlpha)) 0x00637C60)
#define DakosmuMouseOver ((bool(__cdecl*)(int a1, int a2, int a3, int a4)) 0x00790B10)
#define DakosmuBuffer33 ((signed int(__cdecl*)(int a1, int a2, int a3)) 0x006D6C20)
#define Dakosmu_7BC4F04 *(DWORD*)0x7BC4F04
#define Dakosmu_8128AC8 *(DWORD*)0x8128AC8
#define Dakosmu_8793384 *(BYTE*)0x8793384
#define Dakosmu_8793380 *(BYTE*)0x8793380
#define Dakosmu_8128ABC *(DWORD*)0x8128ABC
#define DakosmuSkillLine ((void(__thiscall*)(int a1, float a5, int a6, int a7, int a8, int a9)) 0x00772EA0)
#define DakosmuWidth *(GLsizei*)0x0E61E58
#define DakosmuHeight *(GLsizei*)0x0E61E5C
//WideScreem
#include "stdafx.h"
#include "Import.h"
#include "DakosmuWide.h"
#include "DakosmuS6.h"
#include "DakosmuBytes.h"
signed int sub_9CEBF0_2(double a1)
{
return (signed int)a1;
}
bool pCheckMouseOverMiddle(int x, int y, int w, int h)
{
int Addr = (pWinWidth / pWinHeightReal / 2) - 320;
return pCheckMouseOver(x + Addr, y, w, h);
}
void RenderBitmapMiddle(int ImageID, float PosX, float PosY, float Width, float Height, float Arg6, float Arg7, float ScaleX, float ScaleY, bool ScaleSize, bool ScalePosition, float ScaleAlpha)
{
int Addr = (pWinWidth / pWinHeightReal / 2) - 320;
RenderBitmap(ImageID, PosX + Addr, PosY, Width, Height, Arg6, Arg7, ScaleX, ScaleY, ScaleSize, ScalePosition, ScaleAlpha);
}
void RenderBitmapRight(int ImageID, float PosX, float PosY, float Width, float Height, float Arg6, float Arg7, float ScaleX, float ScaleY, bool ScaleSize, bool ScalePosition, float ScaleAlpha)
{
int Addr = pWinWidth / pWinHeightReal - 640;
RenderBitmap(ImageID, PosX + Addr, PosY, Width, Height, Arg6, Arg7, ScaleX, ScaleY, ScaleSize, ScalePosition, ScaleAlpha);
}
void CRenderImageMiddle(int a1, float a2, float a3, float a4, float a5)
{
int Addr = (pWinWidth / pWinHeightReal / 2) - 320;
pDrawGUI(a1, a2 + Addr, a3, a4, a5);
}
void CRenderImageRight(int a1, float a2, float a3, float a4, float a5)
{
int Addr = pWinWidth / pWinHeightReal - 640;
pDrawGUI(a1, a2 + Addr, a3, a4, a5);
}
void BarFormMiddle(float PosX, float PosY, float Width, float Height, float Arg5, int Arg6)
{
int Addr = (pWinWidth / pWinHeightReal / 2) - 320;
pDrawBarForm(PosX + Addr, PosY, Width, Height, Arg5, Arg6);
}
void BarFormRight(float PosX, float PosY, float Width, float Height, float Arg5, int Arg6)
{
int Addr = pWinWidth / pWinHeightReal - 640;
pDrawBarForm(PosX + Addr, PosY, Width, Height, Arg5, Arg6);
}
void pDrawButtonMiddle(DWORD ModelID, float X, float Y, float W, float H, float CurrentX, float CurrentY)
{
int Addr = (pWinWidth / pWinHeightReal / 2) - 320;
pDrawButton(ModelID, X + Addr, Y, W, H, CurrentX, CurrentY);
}
double sub_636450_2(float a1)
{
return (float)((double)(unsigned int)pWinHeight * a1 / 480.0);
}
Cita de: kayito en Feb 13, 2023, 11:55 PMbro consulta, una vez que esta todo hecho que hago? jajajjaINFORMACION
Estos files fueron adaptados en su totalidad para funcionar bajo un main 0.97.11 (97k) original, no es un downgrade.
Cualquier error de funcionalidad que encuentren pueden notificarlo.
IMAGENES / VIDEOS
Ver más Imagenes:Spoiler
[close]
VIDEOTUTORIAL SOBRE COMO INSTALAR:
CHANGELOG
Files:Spoiler
- Events
- Devil Square
- Blood Castle
- Invasions
- Death King
- Red Dragon
- Goldens
- Bonus Manager
- Experience Rate
- Item Drop Rate
- Common Item Drop Rate
- Exe Item Drop Rate
- Reset Amount
- Grand Reset Amount
- Item Management
- Item Drop
- Item Option
- Item Option Rate
- Item Value
- Item Stack
- Item Bag Management
- ItemBagManager (Item, Monsters)
- ItemBag Normal
- ItemBag Advanced
- Chaos Mix
- Chaos Weapon
- Wing 1
- Wing 2
- Devil Square Ticket
- Blood Castle Ticket
- Fruits
- Dinorant
- +10 ~ +11 Plus Level
- Character
- Damage PVP
- Damage PVM
- Reflect PVP
- Reflect PVM
- Damage x Class PVP
- Damage x Class PVM
- Damage Class x Class
- Stuck Rate
- Damage Multiplier
- Guardian Rate (Angel, Satan, Uniria, Dinorant)
- HP, MP, BP Recovery Rate
- Physic and Magic Damage Rate
- Attack Success Rate
- Attack Success Rate PVP
- Speed Rate
- Defense Rate
- Defense Success Rate
- Defense Success Rate PVP
- Skill
- Buffs Timers and Rates
- Skills Damage
[close]
Cliente:Spoiler
- GetMainInfo
- Launcher Block
- IpAddress, Port, Version, Serial
- Window Name, Screenshots Path
- Character Speed Settings
- Reconnect Time
- Rebuilded Window System (Fix Minimize and Window Mode)
- Resolutions from 640x480 to 1920x1080
- Camera 3D + Rotation FIX
- Multilanguage Text.bmd
- Reconnect System
- Stats and Numbers FIX (HP, MP, BP, Monster Damage)
- MiniMap With Zoom and Show/Hide with Tab
- Guild Logo View
- HealthBar (2 types)
- SkyDome (Like Skybox but rounded)
- And Some Important Fixes
[close]
UpdatesSpoiler
- Update 1
- Corregido problema con baul (era un error leve) -> [DataServer]
- Corregido problema con los stats y requisitos (ahora al repartir puntos por comando, actualiza en tiempo real) -> [GameServer y Main.dll]
- Corregido problema al minimizar (se bypasseó el pedazo de código que ocasionaba la desconexión al minimizar) -> [Main.dll].
- Update 2
- Corregido problema con baul al guardar items (era otro error leve de sincronización con el dataserver) -> [GameServer]
- Update 3
- Corregido problema al repartir todos los puntos, Points se mostraba en 0 y no quitaba los botones para sumar stats -> [Main.dll]
- Corregido problema al abrir Golden Archer no quitaba el minimapa -> [Main.dll]
- Corregido problema de items que se dropeaban con opciones que no correspondían (MuServer/Data/Item/ItemDrop.txt) -> [MuServer]
- Update 4
- Se redujo el tamaño del inventario al tamaño de la 97 original -> [Base de Datos][DataServer][GameServer]
- Se redujo el tamaño del baul al tamaño de la 97 original -> [Base de Datos][DataServer][GameServer]
- Update 5
- Se corrigió un error que no permitía juntar los kriss +0 -> [MuServer/Data/Quest/QuestObjective.txt]
- Se corrigió un error que bloqueaba el shop del NPC luego de hacer Reload Shop teniendo un Shop abierto -> [GameServer]
- Update 6
- Se añadió el sistema de Right Click Move hacia Warehouse, Trade y Chaos Mix -> [main.dll]
- Se corrigió un problema con el warehouse que te permitía extraer y superar el máximo de zen -> [GameServer.exe]
- Se añadió un switch para evitar que se puedan vender los items en los NPC al superar el máximo de zen -> [GameServer.exe][MuServer/GameServer/DATA/GameServerInfo-Common.dat]
- Se añadieron configuraciones para el costo de zen de cada mix en el chaos mix -> [GameServer.exe][MuServer/GameServer/DATA/GameServerInfo-ChaosMix.dat]
- Se añadió un sistema de sincronización para coordinar los rates del Chaos Mix con los del servidor -> [Main.dll][GameServer.exe][MuServer/GameServer/DATA/GameServerInfo-ChaosMix.dat]
- Update 7
- Se añadió el soporte al hardwareID para poder utilizarlo en MuServer/Data/Util/BlackList.dat -> [GameServer.exe]
- Update 8
- Se corrigió un error que al equipar o desequipar items, se visualizaban mal los stats -> [GameServer.exe]
- Se modificaron los mapas del cliente por los mapas originales junto con sus respectivos minimapas sincronizados al 100% -> [Cliente]
- Se añadió el Movelist funcional sincronizado con el move.txt del muserver -> [Main.dll][GameServer.exe]
- Se añadieron switchs para Minimap, Sky, Movelist y HealthBar -> [GetMainInfo.exe][Main.dll]
- Se corrigió un error que no previsualizaba correctamente al equiparse un Dinorant -> [GameServer.exe]
- Se corrigió un error que se veían unos cuadros negros del recorte del terreno al usar resoluciones superiores a 1280x1024 -> [Main.dll]
- Se corrigió y sincronizó todos los precios de compra de items por NPC en un 99% (Falta verificar las opciones excellent) -> [Main.dll][GameServer.exe]
- Se corrigió y sincronizó todos los precios de venta de items hacia un NPC en un 99% (Falta verificar las opciones excellent) -> [Main.dll][GameServer.exe]
- Se corrigió y sincronizó los costos de reparación de los items desde el inventario y desde el NPC -> [Main.dll][GameServer.exe]
- Se sincronizaron los stacks de items del main con el archivo ItemStack.txt del muserver -> [Main.dll][GameServer.exe]
- Se sincronizaron los precios de los items que se encuentren en ItemValue.txt en el muserver -> [Main.dll][GameServer.exe]
- Se corrigió el botón del zoom al clickear en el minimapa y ahora el personaje no camina al clickear ahí -> [Main.dll]
- Update 9
- Se corrigió un error en el ChaosMix que crasheaba el cliente -> [Cliente][GameServer.exe][main.dll]
- Update 10
- Se añadió un sistema de MapManager el cual permite manejar los mapas desde el GetMainInfo (Nombre, Movimiento, Acuático y Música) -> [Main.dll][GetMainInfo.exe]
- Se añadió un sistema de sincronización de los nombres de los subservers -> [Main.dll][ConnectServer.exe]
- Update 11:
- Corregido problema al resetear y quitar stats, no actualizaba los requisitos de los items -> [Main.dll]
- Corregido problema al dropear zen 0 -> [Main.dll][GameServer.exe]
- Corregido el problema del drop de zen 1 -> [GameServer.exe]
- Agregado caída de zen variable (antes dropeaba siempre una cantidad fija) -> [GameServer.exe]
- Agregado carpeta de sonido compatible (créditos: @Kapocha33) -> [Cliente]
- Corregido problema de reconnect con sistema de desconexión de cuenta online -> [GameServer.exe]
- Corregido el problema del chat de guild y el guild master -> [GameServer.exe]
- Debido a la falta de auto attack, se optó por añadir un autoclick derecho con la tecla F9 -> [Main.dll]
- Añadido centrado de Server List en el Select Server (créditos: @Kapocha33) -> [Main.dll]
- Update 12:
- Se corrigió el sistema de fruits [GameServer.exe][Main.dll]
- Update 13:
- Se corrigió un crasheo random al apuntar a un monster [Main.dll]
- Se corrigieron todos los sonidos del juego [Main.dll][Cliente/Data/Sound]
- Update 14:
- Se corrigió un crasheo que sucedía en un área específica de Stadium [Cliente][MuServer]
- Se corrigió los precios de compra, venta y reparación de items [Main.dll][GameServer.exe]
- Se añadió el sistema de juntar items con barra espaciadora [Main.dll]
[close]
DESCARGAS
Files + Cliente + Editor + Source:
This content is hidden and cannot be quoted.
DESCARGAS
"kayitoMuServer97" sin comillas!CitarMatias-: No se hizo subida a MEGA como acostumbra el foro, ni se puso clave del foro puesto que estos files estan en desarrollo, el link va directo a la carpeta de subida del desarrollador.
CREDITOS
xteam
muemu
kayito