Noticias:

SMF - Just Installed!

Menú principal

SOURCE 1.04J WIZARD TEAM

Publicado por Dakosmu, Ago 24, 2024, 06:22 PM

Tema anterior - Siguiente tema

Dakosmu

SOURCE 1.04J WIZARD TEAM

Um presentinho pra voces






Source
You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
[/hide] post=10]
You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
[/hide] Emulator - ChangeLog
===============================================================================
= Geral
===============================================================================
Versão         Season 3 Episode 1
===============================================================================
= Recursos Básicos
===============================================================================
Sistema de Vips   
Sistema de Resets   
Sistema de Master Resets   
Sistema de Reconnect   
Party Reconnect   
Resolução Widescreen   
Fix bug agilidade   
Valores Ilimitados na Tela (sangue, mana, etc..)   
Experiência Tabelada   
Reset Table   
Barra de Vida de Monstros (F9 Ativa/Desativa)   
Duel Announce   
Notícias Automáticas   
Múltiplos Baús   
Máximo de monstros   20000
Gerenciamento de Mapa   
Gerenciamento de Game Masters   
Sistema de Mensagens   
===============================================================================
= Recursos do Jogo
===============================================================================
Frutas   
Pets   
Moeda:          PCPoint   
Shop in-game   PCPoint
Personagens do Jogo
Dark Wizard   
Dark Knight   
Fairy Elf   
Magic Gladiator   
Dark Lord   
===============================================================================
= Configurações de Conta
===============================================================================
Você pode definir um valor individual para cada nível de conta (VIP).
Experiência   
Bônus de experiência em eventos   
Bônus de experiência em quests   
Taxa de Sucesso de Jóias   
Taxa de drop de Itens   
Comandos   
Taxa de combinação na Chaos Machine   
Move   
Pontos ganhos   
Outras Configurações   
===============================================================================
= Items
===============================================================================
Suporte a Items Custom   
Limite de Items   até 256 por categoria
Limite de Level dos Items até +15
Sistema de Glow   
Suporte a novas jóias   
Suporte a Mapa custom   
Suporte a novos monstros   
Suporte a Custom Descriptions   
Suporte a novas Wings   
Suporte a novos Bows / CrossBows   
Smoke Item Effect
Suporte a Novos Fenrir Pet
===============================================================================
= Segurança
===============================================================================
Anti-flood   
Potion cooldown   
Combo cooldown   
Configurações Máximas de Velocidade de Personagem   
Configurações Máximas de Latência do Jogo   
Sistema de Logs   
===============================================================================
= Eventos
===============================================================================
Blood Castle   
Devil Square   
Chaos Castle   
Kalima   
Kanturu   
Illusion Temple   
Invasão Skeleton King   
Invasão Red Dragon   
Invasão Golden   
Invasão White Wizard   
Invasão New Year   
Invasão Rabbits   
Ribbon Event   
Halloween Event   
Crywolf   
Castle Siege   
Battle Soccer   
Loren Deep   
Custom Drop Event   
Sistema de Invasão Custom   
=================================================================
= Comandos Player
=================================================================
/move - Mover para um mapa
/guildwar - Desafiar uma Guild para War
/guildsoccer - Desafiar uma Guild para battle soccer
/request - Aceitar ou ignorar pedidos de party, trade, etc..
/post - Comunicação em chat global dentro do jogo.
/f - Adicionar pontos em força (sem relogar)
/a - Adicionar pontos em agilidade (sem relogar)
/v - Adicionar pontos em vitalidade (sem relogar)
/e - Adicionar pontos em energia (sem relogar)
/c - Adicionar pontos em comando (sem relogar)
/pk - Limpar o PK
/zen - Adquirir zen
/evo - Evoluir para 2º e 3º classe
/bau - Mudar de Baú
/reset - Resetar personagem (sem relogar)
/mreset - Dar Master reset
/limparinv - Limpar Inventário
/readd - Readicionar pontos
/rename - Mudar nome do Char
/dcfriend - Desconectar um amigo (Caso a conta fique logada)
/store - Abrir store por joias (Configurar comando em GameServerInfo - Custom.dat)
/offstore - Abrir Store Offline
/attack - Iniciar ataque automático
/offattack - Iniciar ataque automático offline
/gift - Ganhar um presente (Configurável em CustomGift.txt)
/marry - Pedir em casamento
/accept - Aceitar casamento
/divorce - Divorciar
/trackmarry - Ir até seu Marido/Noiva
/buyvip - Comprar vip (Configurar planos em CustomBuyVip.txt)
/pack <10-20-30> - Criar pack de joias
/unpack <10-20-30> - Desfazer pack de Joias
/pick - Pegar itens automaticamente (Configurar em CustomPick.txt)
/pickset -1 - Pegar itens automaticamente por categoria
/pickclear - Resetar configurações do /pick e /pickset
/classe - Para Mudar de Classe dentro do Jogo
/open - Abrir Baú
=================================================================
= COMANDOS GM / ADM
=================================================================
/gmmove - Mover um player (ou você mesmo)
/gmpost - Enviar mensagem global
/track - Ir até um player
/trace - Puxar um player até você
/disconnect - Desconectar um player
/firework - Soltar Fogos
/make - Criar um item no seu inventário
/drop - Dropa um item no chão
/skin - Mudar skin de um player (ou de você mesmo)
/setmoney - Dar zen a um player
/hide - Ficar invisível
/edit - Editar um player
/setpk <1~6> - Tonar um Player PK
/setvip - Adicionar Vip
/moveall - Mover todos os players
/moveguild - Mover uma guild
/makemob - Criar spot de monstros
/makeset - Criar um set
/banacc - Banir uma conta
/banchar - Banir um char
/banchat - Banir char de falar no chat
/unbanacc - Desbanir uma conta
/unbanchar - Desbanir um char
/unbanchat - Desbanir char de falar no chat
/bcstart - Iniciar Blood Castle
/dsstart - Iniciar Devil Square
/ccstart - Iniciar Chaos Castle
/setbuff - Adicionar Buff em um char
===============================================================================
= Equilíbrio PvP e PvM
===============================================================================
Configurações Gerais de Taxa de Dano PvP   
Configurações Gerais de Taxa de Dano PvM   
Configurações de Taxa de Dano em Duelo   
Configurações de Taxa de Dano em Evento   
Configurações de Taxa de Dano PvP por Classe   
Configurações de Taxa de Dano PvM por Classe   
Configurações de Dano por Classe Vs. Classe   
Configurações de Dano Físico por Classe   
Configurações de Dano Mágico por Classe   
Configurações de Multiplicador de Dano por Classe   
Configurações de Taxa de Sucesso de Ataque por Classe   
Configurações de Defesa por Classe   
Configurações de Taxa de Sucesso de Defesa por Classe   
Configurações do Guarda   
Configurações de dano do combo   
Configurações da Fórmula de Skills   
===============================================================================
= Sistemas Extras
===============================================================================
Chaos Mix Rate em tempo real   
Ativar/desativar barra de vida dos monstros com a tecla F9   
Câmera 3D (HOME Ativa, END Restaura)   
Auto Click Andar (F10 Ativa)   
Auto Click Attacar (F11 Ativa)   
Minimizer (F12)   
Tela de Horário dos eventos (tecla H)   
Abrir múltiplos jogos   
Ajustar configurações do jogo   
Plugin System
===============================================================================
= Recursos Exclusivos
===============================================================================
Change Ware -
[/code]




Atualizado

Credits:
# SSEMU - from emulator
# Matrix Plugins - from customs systems
Bon Dia

Dakosmu

NPCELF CUSTOM FOR FUN  cheesyy2

int __cdecl NPCELF(int a1)
{
   int result; // eax

   *(_WORD*)(a1 + 816) = ITEM_GET(12, 38);
   *(_WORD*)(a1 + 592) = ITEM_GET(7, 13);
   *(_WORD*)(a1 + 624) = ITEM_GET(8, 13);
   *(_WORD*)(a1 + 656) = ITEM_GET(9, 13);
   *(_WORD*)(a1 + 688) = ITEM_GET(10, 13);
   *(_WORD*)(a1 + 720) = ITEM_GET(11, 13);
   *(_WORD*)(a1 + 752) = ITEM_GET(4, 6);//FIRST SWORD +32
   //*(_WORD*)(a1 + 784) = ITEM_GET(4, 19);//SECOND SWORD
   *(_BYTE*)(a1 + 594) = 13;
   *(_BYTE*)(a1 + 595) = 1;
   *(_BYTE*)(a1 + 626) = 13;
   *(_BYTE*)(a1 + 627) = 1;
   *(_BYTE*)(a1 + 658) = 13;
   *(_BYTE*)(a1 + 659) = 1;
   *(_BYTE*)(a1 + 690) = 13;
   *(_BYTE*)(a1 + 691) = 1;
   *(_BYTE*)(a1 + 722) = 13;
   *(_BYTE*)(a1 + 723) = 1;
    *(_BYTE*)(a1 + 756) = 13;//FIRST SLOT WARPEON
   //*(_BYTE*)(a1 + 786) = 13;//second SLOT WARPEON
   //*(_BYTE*)(a1 + 757) = 1;//FIRST SLOT WARPEON
   *(_DWORD*)(a1 + 12) = 1065353216;
   *(_BYTE*)(a1 + 325) = 9;
   result = a1;
   *(float*)(a1 + 364) = *(float*)(a1 + 364) + 70.0;
   return result;
}

SetCompleteHook(0xE9, 0x52C17B, &NPCELF);



https://imgur.com/a/24MyuGj

Creditos
ladimir1
Bon Dia

Dakosmu

Hi my friends i create this full source code  base for change any set, item of monsters . This base have more funtion use you imagination :D i only create it for fun and use only for change npc set, sword and monset set, armor.. maybe too you cant change sound of monsters, dont test but give the offset for sound monster too. this code is for  1.04J


https://imgur.com/a/FEs4SOc

Create CustomMonsters.ccp

add

#include "stdafx.h"
#include "CustomMonsters.h"
#include "Util.h"
#include "Common.h"
#include "Offset.h"

Monster gMonster;


#define MonsterSound      ((void(__cdecl*)(int a1, DWORD* a2, float* a3, float* a4, int a5, DWORD* a6, float a7, __int16 a8, unsigned __int8 a9, char a10, int a11, DWORD* a12))0x006C4750)



void Monster::Load()
{
   SetCompleteHook(0xE8, 0x0052D982, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x0052D9C3, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x0052DA04, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x0052DA45, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x0052DA86, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x0052DAC7, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x0052DB08, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x0052DB49, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x0052DB8A, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x0052DBCB, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x0052DC10, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x0052DC55, &Monster::MonsterAttribute);
   SetCompleteHook(0xE8, 0x00531817, &Monster::MonsterAttribute);
}

void ShowMonster()
{

}

void Monster::MonsterAttribute(DWORD Object, signed int MonsterID)
{
   if (Object)
   {
      switch (MonsterID)
      {
      case 34://Cursed Wizard
         *(_WORD*)(Object + 816) = ITEM_GET(12, 37);
         *((_WORD*)Object + 296) = ITEM_GET(7, 22);
         *((_BYTE*)Object + 594) = 13;
         *(_BYTE*)(Object + 595) = 1;
         *((_WORD*)Object + 312) = ITEM_GET(8,22);
         *((_BYTE*)Object + 626) = 13;
         *(_BYTE*)(Object + 627) = 1;
         *((_WORD*)Object + 328) = ITEM_GET(9,22);
         *((_BYTE*)Object + 658) = 13;
         *(_BYTE*)(Object + 659) = 1;
         *((_WORD*)Object + 344) = ITEM_GET(10,22);
         *((_BYTE*)Object + 690) = 13;
         *(_BYTE*)(Object + 691) = 1;
         *((_WORD*)Object + 360) = ITEM_GET(11,22);
         *((_BYTE*)Object + 722) = 13;
         *(_BYTE*)(Object + 723) = 1;
         *((_WORD*)Object + 376) = ITEM_GET(5,13);
         *((_BYTE*)Object + 754) = 13;
         *((_WORD*)Object + 392) = ITEM_GET(6,15);
         *(_BYTE*)(Object + 786) = 13;
         break;
      case 58://Tantalos
      case 59://zaikan
         if (MonsterID == 58)
         {
           
            *((_WORD*)Object + 376) = ITEM_GET(0, 19);
            *((_BYTE*)Object + 754) = 13;
         }
         else
         {
           
            *((_DWORD*)Object + 1) = 1;
            *((_WORD*)Object + 376) = ITEM_GET(0, 19);
            *((_BYTE*)Object + 754) = 13;
         }
         break;
      case 229: //Marlon
         *(_WORD*)(Object + 816) = ITEM_GET(12, 36);
         *((_WORD*)Object + 296) = ITEM_GET(7, 17);
         *((_BYTE*)Object + 594) = 13;
         *(_BYTE*)(Object + 595) = 1;
         *((_WORD*)Object + 312) = ITEM_GET(8, 17);
         *((_BYTE*)Object + 626) = 13;
         *(_BYTE*)(Object + 627) = 1;
         *((_WORD*)Object + 328) = ITEM_GET(9, 17);
         *((_BYTE*)Object + 658) = 13;
         *(_BYTE*)(Object + 659) = 1;
         *((_WORD*)Object + 344) = ITEM_GET(10, 17);
         *((_BYTE*)Object + 690) = 13;
         *(_BYTE*)(Object + 691) = 1;
         *((_WORD*)Object + 360) = ITEM_GET(11, 17);
         *((_BYTE*)Object + 722) = 13;
         *(_BYTE*)(Object + 723) = 1;
         *((_WORD*)Object + 376) = ITEM_GET(0, 19);;
         *((_BYTE*)Object + 754) = 13;
         *((_WORD*)Object + 392) = ITEM_GET(0, 19);
         *(_BYTE*)(Object + 786) = 13;
         break;
      case 247: //CrossGuard
         *(_WORD*)(Object + 816) = ITEM_GET(12, 36);
         *((_WORD*)Object + 296) = ITEM_GET(7, 17);
         *((_BYTE*)Object + 594) = 13;
         *(_BYTE*)(Object + 595) = 1;
         *((_WORD*)Object + 312) = ITEM_GET(8, 17);
         *((_BYTE*)Object + 626) = 13;
         *(_BYTE*)(Object + 627) = 1;
         *((_WORD*)Object + 328) = ITEM_GET(9, 17);
         *((_BYTE*)Object + 658) = 13;
         *(_BYTE*)(Object + 659) = 1;
         *((_WORD*)Object + 344) = ITEM_GET(10, 17);
         *((_BYTE*)Object + 690) = 13;
         *(_BYTE*)(Object + 691) = 1;
         *((_WORD*)Object + 360) = ITEM_GET(11, 17);
         *((_BYTE*)Object + 722) = 13;
         *(_BYTE*)(Object + 723) = 1;
         *((_WORD*)Object + 376) = ITEM_GET(4, 18);
         *((_BYTE*)Object + 754) = 15;
         *((_BYTE*)Object + 755) = 1;
         break;
      case 249: //Guard
         *(_WORD*)(Object + 816) = ITEM_GET(12, 36);
         *((_WORD*)Object + 296) = ITEM_GET(7, 17);
         *((_BYTE*)Object + 594) = 13;
         *(_BYTE*)(Object + 595) = 1;
         *((_WORD*)Object + 312) = ITEM_GET(8, 17);
         *((_BYTE*)Object + 626) = 13;
         *(_BYTE*)(Object + 627) = 1;
         *((_WORD*)Object + 328) = ITEM_GET(9, 17);
         *((_BYTE*)Object + 658) = 13;
         *(_BYTE*)(Object + 659) = 1;
         *((_WORD*)Object + 344) = ITEM_GET(10, 17);
         *((_BYTE*)Object + 690) = 13;
         *(_BYTE*)(Object + 691) = 1;
         *((_WORD*)Object + 360) = ITEM_GET(11, 17);
         *((_BYTE*)Object + 722) = 13;
         *(_BYTE*)(Object + 723) = 1;
         *((_WORD*)Object + 376) = ITEM_GET(0, 16);
         *((_BYTE*)Object + 754) = 13;
         *((_WORD*)Object + 392) = ITEM_GET(0, 16);
         *(_BYTE*)(Object + 786) = 13;
         break;
      case 371://Leo the Helper
         *(_WORD*)(Object + 816) = ITEM_GET(12, 36);
         *((_WORD*)Object + 296) = ITEM_GET(7, 1);
         *((_BYTE*)Object + 594) = 13;
         *(_BYTE*)(Object + 595) = 1;
         *((_WORD*)Object + 312) = ITEM_GET(8, 1);
         *((_BYTE*)Object + 626) = 13;
         *(_BYTE*)(Object + 627) = 1;
         *((_WORD*)Object + 328) = ITEM_GET(9, 1);
         *((_BYTE*)Object + 658) = 13;
         *(_BYTE*)(Object + 659) = 1;
         *((_WORD*)Object + 344) = ITEM_GET(10, 1);
         *((_BYTE*)Object + 690) = 13;
         *(_BYTE*)(Object + 691) = 1;
         *((_WORD*)Object + 360) = ITEM_GET(11, 1);
         *((_BYTE*)Object + 722) = 13;
         *(_BYTE*)(Object + 723) = 1;
         *((_WORD*)Object + 376) = ITEM_GET(0, 22);
         *((_BYTE*)Object + 754) = 13;
         *((_WORD*)Object + 392) = ITEM_GET(0, 22);
         *(_BYTE*)(Object + 786) = 13;
         break;
      case 414://Leo the Helper
         *(_WORD*)(Object + 816) = ITEM_GET(12, 3);
         *((_WORD*)Object + 296) = ITEM_GET(7, 14);
         *((_BYTE*)Object + 594) = 13;
         *(_BYTE*)(Object + 595) = 1;
         *((_WORD*)Object + 312) = ITEM_GET(8, 14);
         *((_BYTE*)Object + 626) = 13;
         *(_BYTE*)(Object + 627) = 1;
         *((_WORD*)Object + 328) = ITEM_GET(9, 14);
         *((_BYTE*)Object + 658) = 13;
         *(_BYTE*)(Object + 659) = 1;
         *((_WORD*)Object + 344) = ITEM_GET(10, 14);
         *((_BYTE*)Object + 690) = 13;
         *(_BYTE*)(Object + 691) = 1;
         *((_WORD*)Object + 360) = ITEM_GET(11, 14);
         *((_BYTE*)Object + 722) = 13;
         *(_BYTE*)(Object + 723) = 1;
         *((_WORD*)Object + 376) = ITEM_GET(4, 22);
         *((_BYTE*)Object + 754) = 13;
         //*((_WORD*)Object + 392) = ITEM_GET(0, 22);
         //*(_BYTE*)(Object + 786) = 13;
         break;
      }
   }

   pSettingMonster(Object, MonsterID);
}

now create CustomMonsters.h

add

#ifndef MONSTER_H
#define MONSTER_H
#pragma once

class Monster
{
public:
   void Load();
   static void MonsterAttribute(DWORD a1, signed int a2);

};
extern Monster gMonster;

#endif

now go to main.ccp

add

#include "CustomMonsters.h"

gMonster.Load();


in offset.h add

#define _BYTE   BYTE
#define _WORD   WORD
#define _DWORD   DWORD
#define _FLOAT   FLOAT


Creditos
Bladimir1
Bon Dia

Dakosmu

finishedthe next custom create for fun ChangeChaosCastleUnit
With this custom you can change the weapons of elf, dw, dk, dl, mg in chaos castle event  :D

https://imgur.com/a/4bAKqgG

#define ClearChaosCastleHelper      ((int(__cdecl*)(int a1))0x492355)
#define GetAddFriendWindow      ((int(__thiscall*)(DWORD* This))0x47F7B0)
#define SendUIMessage      ((DWORD(__thiscall*)(DWORD* This, int a2, int a3, int a4))0x416706)
#define IsOpen      ((char(__stdcall*)(int a1))0x45E06F)
#define Close      ((DWORD(__thiscall*)(DWORD* This))0x47A9E1)
#define GetFriendMainWindow      ((int(__thiscall*)(int* This))0x45FFE0)
#define InChaosCastle      ((bool(__cdecl*)(int a1))0x4600A0)
#define GetBaseClass      ((int(__cdecl*)(char a1))0x004570B0)


int __cdecl ChangeChaosCastleUnit(int a1)//void    ChangeChaosCastleUnit ( CHARACTER* c )
{
   int result; // eax
   _DWORD* v2; // [esp+0h] [ebp-Ch]
   int v3; // [esp+8h] [ebp-4h]

   result = InChaosCastle(dword_77038C);
   if (result)
   {
      ClearChaosCastleHelper(a1);
      v3 = GetAddFriendWindow((_DWORD*)dword_7AFEE4C);
      if (v3)
         SendUIMessage((_DWORD*)dword_7AFEE4C, 4, v3, 0);
      if (IsOpen(1))
      {
         v2 = (_DWORD*)GetFriendMainWindow((int*)dword_7AFEE4C);
         Close(v2);
      }
      result = GetBaseClass(*(_BYTE*)(a1 + 524));
      switch (result)
      {
      case 1:
      case 3:
      case 4:
         *(_WORD*)(a1 + 752) = ITEM_GET(0, 16);
         result = a1;
         *(_BYTE*)(a1 + 754) = 13;
         *(_WORD*)(a1 + 784) = ITEM_GET(0, 16);
         *(_BYTE*)(a1 + 786) = 13;
         break;
      case 2://ELF
         result = a1;
         strcpy((char*)(a1 + 752), "?\n");
         break;
      case 0://DW
         *(_WORD*)(a1 + 752) = ITEM_GET(5, 7);;
         result = a1;
         *(_BYTE*)(a1 + 754) = 13;
         break;
      }
   }
   return result;
}

SetCompleteHook(0xE9, 0x4923C6, &ChangeChaosCastleUnit);


Creditos
Bladimir1
Bon Dia

Dakosmu

for last code
#define dword_7AFEE4C *(DWORD*)0x7AFEE4C

Creditos
Bladimir1
Bon Dia

Dakosmu

HI my friend i recreate this code for fun customnpcproces for 1.04j, use you imagination :D

https://imgur.com/a/V5zwJ0a


#define dword_750DF88 *(DWORD*)0x750DF88
#define InBattleCastle      ((BOOL(__cdecl*)(int a1))0x49CC90)
#define sub_402260      ((void*(__thiscall*)(DWORD* This, int a2))0x402260)
#define CreateChat      ((void*(__cdecl*)(const char* a1, char* a2, int a3, int a4, int a5))0x5406B0)
#define rand      ((int(*)())0x007396FD)

void  CustomNpcChatProcess(int a1, int a2)
{
   char* v2; // eax
   char* v3; // eax
   char* v4; // eax
   char* v5; // eax

   if (*(_BYTE*)(a2 + 188) == 4 && !(rand() % 2))
   {
      switch (*(_WORD*)(a2 + 2))
      {
      case 0x231:
         if (!InBattleCastle(dword_77038C))
         {
            v2 = (char*)sub_402260(&dword_750DF88, 1974);
            CreateChat((const char*)(a1 + 529), v2, a1, 0, -1);
         }
         break;
      case 0x237:
         v3 = (char*)sub_402260(&dword_750DF88, 1975);
         CreateChat((const char*)(a1 + 529), v3, a1, 0, -1);
         break;
      case 0x239:
         v4 = (char*)sub_402260(&dword_750DF88, 1976);
         CreateChat((const char*)(a1 + 529), v4, a1, 0, -1);
         break;
      case 0x281:
         if (*(_WORD*)(a1 + 942) == 257)
         {
            v5 = (char*)sub_402260(&dword_750DF88, 1827);
            CreateChat((const char*)(a1 + 529), v5, a1, 0, -1);
         }
         if (*(_WORD*)(a1 + 942) == 414)
         {
            //v5 = (char*)sub_402260(&dword_750DF88, 1827);
            CreateChat((const char*)(a1 + 529), "HI MY FRIEND MY NAME IS HELLEN", a1, 0, -1);
         }
         if (*(_WORD*)(a1 + 942) == 371)
         {
            //v5 = (char*)sub_402260(&dword_750DF88, 1827);
            CreateChat((const char*)(a1 + 529), "HI MY FRIEND IT ALL OK? TAKE THIS GIFT FOR YOU!", a1, 0, -1);
         }
         break;
      case 0x23A:
            CreateChat((const char*)(a1 + 529), "HI MY FRIEND IT ALL OK?", a1, 0, -1);
         break;
      default:
         return;
      }
   }
}

SetCompleteHook(0xE9, 0x5133FA, &CustomNpcChatProcess);





Creditos
Bladimir1
Bon Dia

Dakosmu

Query for daily reward :D

copy and paste

USE [MuOnline]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DailyReward]') AND type in (N'U'))
DROP TABLE [dbo].[DailyReward]
GO

USE [MuOnline]
GO

/****** Object:  Table [dbo].[DailyReward]    Script Date: 06/16/2022 18:19:28 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[DailyReward](
 [acc] [varchar](10) NOT NULL,
 [name] [varchar](10) NOT NULL,
 [date] [int] NOT NULL DEFAULT DAY(GETDATE()),
 [month] [int] NOT NULL DEFAULT MONTH(GETDATE()),
 [Created_At] [smalldatetime] NOT NULL DEFAULT(GETDATE()),
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO


Creditos
Bladimir1
Bon Dia

Dakosmu

item angle for 1.04j

int __cdecl ItemAngle(int a1)
{
  int result; // eax

  *(_DWORD*)(a1 + 28) = 0;
  *(_DWORD*)(a1 + 32) = 0;
  *(_DWORD*)(a1 + 36) = -1036779520;
  if (*(__int16*)(a1 + 2) < 649 || *(__int16*)(a1 + 2) >= 1673)
  {
      if ((*(__int16*)(a1 + 2) < 2705 || *(__int16*)(a1 + 2) >= 2714)
        && (*(__int16*)(a1 + 2) < 2715 || *(__int16*)(a1 + 2) >= 3209))
      {
        if (*(__int16*)(a1 + 2) < 1673 || *(__int16*)(a1 + 2) >= 3721)
        {
            if (*(__int16*)(a1 + 2) < 3721 || *(__int16*)(a1 + 2) >= 4233)
            {
              if (*(__int16*)(a1 + 2) < 4745 || *(__int16*)(a1 + 2) >= 6281)
              {
                  if (*(__int16*)(a1 + 2) < 6825 || *(__int16*)(a1 + 2) > 6827)
                  {
                    if (*(__int16*)(a1 + 2) < 6793 || *(__int16*)(a1 + 2) >= 7305)
                    {
                        if (*(_WORD*)(a1 + 2) == 7862)
                        {
                          *(_DWORD*)(a1 + 12) = 1063675494;
                          *(_DWORD*)(a1 + 28) = 0;
                          result = a1;
                          *(_DWORD*)(a1 + 36) = 1119092736;
                        }
                        else if (*(__int16*)(a1 + 2) < 7863 || *(__int16*)(a1 + 2) > 7865)
                        {
                          if (*(_WORD*)(a1 + 2) == 7866)
                          {
                              result = a1;
                              *(_DWORD*)(a1 + 12) = 1063675494;
                              *(_DWORD*)(a1 + 28) = 0;
                              *(_DWORD*)(a1 + 36) = 1119092736;
                          }
                          else if (*(_WORD*)(a1 + 2) == 7867)
                          {
                              *(_DWORD*)(a1 + 12) = 1048911544;
                              result = a1;
                              *(_DWORD*)(a1 + 28) = 0;
                              *(_DWORD*)(a1 + 36) = 1119092736;
                          }
                          else if (*(__int16*)(a1 + 2) < 7849 || *(__int16*)(a1 + 2) > 7851)
                          {
                              result = a1;
                              if (*(__int16*)(a1 + 2) < 8962 || (result = *(__int16*)(a1 + 2), result > 8964))
                              {
                                if (*(_WORD*)(a1 + 2) == 7348
                                    || (result = a1, *(_WORD*)(a1 + 2) == 7349)
                                    || (result = *(__int16*)(a1 + 2), result == 7350))
                                {
                                    *(_DWORD*)(a1 + 12) = 1056964608;
                                    *(_DWORD*)(a1 + 28) = 1119092736;
                                }
                                else if (*(__int16*)(a1 + 2) < 7872 || (result = *(__int16*)(a1 + 2), result > 7874))
                                {
                                    if (*(_WORD*)(a1 + 2) == 7354)
                                    {
                                      *(_DWORD*)(a1 + 28) = 1119092736;
                                      result = a1;
                                      *(_DWORD*)(a1 + 32) = 0;
                                      *(_DWORD*)(a1 + 12) = 1050253722;
                                    }
                                    else
                                    {
                                      result = *(__int16*)(a1 + 2);
                                      if (result == 7355)
                                      {
                                          *(_DWORD*)(a1 + 28) = 0;
                                          *(_DWORD*)(a1 + 12) = 1058642330;
                                      }
                                      else if (*(_WORD*)(a1 + 2) == 7356)
                                      {
                                          *(_DWORD*)(a1 + 28) = 1119092736;
                                          result = a1;
                                          *(_DWORD*)(a1 + 12) = 1055286886;
                                      }
                                      else if (*(_WORD*)(a1 + 2) == 7881)
                                      {
                                          result = a1;
                                          *(_DWORD*)(a1 + 28) = 0;
                                          *(_DWORD*)(a1 + 12) = 1061997773;
                                      }
                                      else
                                      {
                                          result = *(__int16*)(a1 + 2);
                                          if (result == 7357)
                                          {
                                            *(_DWORD*)(a1 + 28) = 0;
                                            *(_DWORD*)(a1 + 12) = 1067030938;
                                          }
                                          else if (*(_WORD*)(a1 + 2) == 7358)
                                          {
                                            *(_DWORD*)(a1 + 28) = 0;
                                            result = a1;
                                            *(_DWORD*)(a1 + 12) = 1067030938;
                                          }
                                          else if (*(_WORD*)(a1 + 2) == 7882)
                                          {
                                            result = a1;
                                            *(_DWORD*)(a1 + 28) = 1119092736;
                                            *(_DWORD*)(a1 + 12) = 1058642330;
                                          }
                                          else
                                          {
                                            result = *(__int16*)(a1 + 2);
                                            if (result == 7883)
                                            {
                                                *(_DWORD*)(a1 + 28) = 1119092736;
                                                *(_DWORD*)(a1 + 12) = 1061997773;
                                            }
                                            else
                                            {
                                                switch (*(_WORD*)(a1 + 2))
                                                {
                                                case 0x1ECC:
                                                  *(_DWORD*)(a1 + 28) = 1132920832;
                                                  result = a1;
                                                  *(_DWORD*)(a1 + 12) = 1061997773;
                                                  break;
                                                case 0x22F1:
                                                  result = a1;
                                                  *(_DWORD*)(a1 + 28) = 1119092736;
                                                  break;
                                                case 0x22F5:
                                                case 0x22F6:
                                                  *(_DWORD*)(a1 + 28) = 1132920832;
                                                  result = a1;
                                                  *(_DWORD*)(a1 + 36) = 1110704128;
                                                  break;
                                                case 0x22F7:
                                                  result = a1;
                                                  *(_DWORD*)(a1 + 12) = 1045220557;
                                                  break;
                                                case 0x22F2:
                                                  result = a1;
                                                  *(_DWORD*)(a1 + 28) = 0;
                                                  *(_DWORD*)(a1 + 36) = 1110704128;
                                                  *(_DWORD*)(a1 + 12) = 1066192077;
                                                  break;
                                                case 0x1EA0:
                                                  *(_DWORD*)(a1 + 32) = 1110704128;
                                                  result = a1;
                                                  *(_DWORD*)(a1 + 36) = 1110704128;
                                                  break;
                                                case 0x1EA1:
                                                  result = a1;
                                                  *(_DWORD*)(a1 + 36) = 1110704128;
                                                  break;
                                                default:
                                                  if (*(__int16*)(a1 + 2) >= 7842 && (result = a1, *(__int16*)(a1 + 2) < 7844)
                                                      || (result = *(__int16*)(a1 + 2), result == 7319))
                                                  {
                                                      *(_DWORD*)(a1 + 36) = 1110704128;
                                                  }
                                                  else
                                                  {
                                                      result = *(__int16*)(a1 + 2);
                                                      if (result == 7834)
                                                      {
                                                        *(_DWORD*)(a1 + 28) = 1119092736;
                                                      }
                                                      else
                                                      {
                                                        result = *(__int16*)(a1 + 2);
                                                        if (result == 7880)
                                                        {
                                                            *(_DWORD*)(a1 + 28) = 1116471296;
                                                            *(_DWORD*)(a1 + 12) = 1069547520;
                                                        }
                                                        else if (*(_WORD*)(a1 + 2) == 7869)
                                                        {
                                                            *(_DWORD*)(a1 + 36) = -1054867456;
                                                            result = a1;
                                                            *(_DWORD*)(a1 + 12) = 1053609165;
                                                        }
                                                        else if (*(_WORD*)(a1 + 2) == 7835)
                                                        {
                                                            result = a1;
                                                            *(_DWORD*)(a1 + 36) = 1132920832;
                                                            *(_DWORD*)(a1 + 28) = 1132920832;
                                                        }
                                                        else
                                                        {
                                                            result = *(__int16*)(a1 + 2);
                                                            if (result == 7836)
                                                            {
                                                              *(_DWORD*)(a1 + 28) = 1132920832;
                                                              *(_DWORD*)(a1 + 36) = 1119092736;
                                                            }
                                                            else
                                                            {
                                                              switch (*(_WORD*)(a1 + 2))
                                                              {
                                                              case 0x1EA6:
                                                                  *(_DWORD*)(a1 + 28) = 1119092736;
                                                                  result = a1;
                                                                  *(_DWORD*)(a1 + 36) = 1116471296;
                                                                  break;
                                                              case 0x22F8:
                                                                  *(_DWORD*)(a1 + 28) = 1122369536;
                                                                  *(_DWORD*)(a1 + 32) = 1117126656;
                                                                  *(_DWORD*)(a1 + 36) = 1090519040;
                                                                  result = a1;
                                                                  *(_DWORD*)(a1 + 12) = 1053609165;
                                                                  break;
                                                              case 0x1C99:
                                                              case 0x1C9A:
                                                                  *(_DWORD*)(a1 + 28) = -1036779520;
                                                                  result = a1;
                                                                  *(_DWORD*)(a1 + 32) = -1063256064;
                                                                  *(_DWORD*)(a1 + 36) = 1099956224;
                                                                  *(_DWORD*)(a1 + 12) = 1056293519;
                                                                  break;
                                                              case 0x1C9B:
                                                                  *(_DWORD*)(a1 + 28) = 1126498304;
                                                                  result = a1;
                                                                  *(_DWORD*)(a1 + 32) = -1020788736;
                                                                  *(_DWORD*)(a1 + 36) = 1128660992;
                                                                  *(_DWORD*)(a1 + 12) = 1056293519;
                                                                  break;
                                                              case 0x1CA7:
                                                                  *(_DWORD*)(a1 + 28) = -1036779520;
                                                                  result = a1;
                                                                  *(_DWORD*)(a1 + 32) = 0;
                                                                  *(_DWORD*)(a1 + 36) = 1110704128;
                                                                  *(_DWORD*)(a1 + 12) = 1056964608;
                                                                  break;
                                                              case 0x22FD:
                                                                  *(_DWORD*)(a1 + 36) = 1110704128;
                                                                  result = a1;
                                                                  *(_DWORD*)(a1 + 12) = 1056964608;
                                                                  break;
                                                              case 0x22F9:
                                                                  *(_DWORD*)(a1 + 28) = 1126170624;
                                                                  *(_DWORD*)(a1 + 32) = -1019805696;
                                                                  *(_DWORD*)(a1 + 36) = 1128660992;
                                                                  result = a1;
                                                                  *(_DWORD*)(a1 + 12) = 1052938076;
                                                                  break;
                                                              case 0x22FA:
                                                                  *(_DWORD*)(a1 + 28) = 1126170624;
                                                                  *(_DWORD*)(a1 + 32) = -1019805696;
                                                                  *(_DWORD*)(a1 + 36) = 1128660992;
                                                                  result = a1;
                                                                  *(_DWORD*)(a1 + 12) = 1057635697;
                                                                  break;
                                                              case 0x1E9E:
                                                                  result = a1;
                                                                  *(_DWORD*)(a1 + 28) = 1132920832;
                                                                  *(_DWORD*)(a1 + 36) = 1119092736;
                                                                  break;
                                                              default:
                                                                  result = *(__int16*)(a1 + 2);
                                                                  if (result == 8948)
                                                                  {
                                                                    *(_DWORD*)(a1 + 36) = 1110704128;
                                                                  }
                                                                  else
                                                                  {
                                                                    result = *(__int16*)(a1 + 2);
                                                                    if (result == 7837)
                                                                    {
                                                                        *(_DWORD*)(a1 + 36) = 1110704128;
                                                                    }
                                                                    else if (*(__int16*)(a1 + 2) < 7326 || *(__int16*)(a1 + 2) > 7329)
                                                                    {
                                                                        if (*(_WORD*)(a1 + 2) == 7338)
                                                                        {
                                                                          result = a1;
                                                                          *(_DWORD*)(a1 + 36) = 1110704128;
                                                                          *(_DWORD*)(a1 + 12) = 1067030938;
                                                                        }
                                                                        else
                                                                        {
                                                                          result = *(__int16*)(a1 + 2);
                                                                          if (result == 7339)
                                                                          {
                                                                              *(_DWORD*)(a1 + 28) = 1119092736;
                                                                          }
                                                                          else
                                                                          {
                                                                              result = *(__int16*)(a1 + 2);
                                                                              if (result == 7340)
                                                                              {
                                                                                *(_DWORD*)(a1 + 36) = 1119092736;
                                                                              }
                                                                              else
                                                                              {
                                                                                result = *(__int16*)(a1 + 2);
                                                                                if (result == 7341)
                                                                                {
                                                                                    *(_DWORD*)(a1 + 36) = 1119092736;
                                                                                    *(_DWORD*)(a1 + 12) = 1067869798;
                                                                                }
                                                                                else
                                                                                {
                                                                                    result = a1;
                                                                                    switch (*(_WORD*)(a1 + 2))
                                                                                    {
                                                                                    case 0x1CAE:
                                                                                      *(_DWORD*)(a1 + 36) = 1127481344;
                                                                                      break;
                                                                                    case 0x1E99:
                                                                                      *(_DWORD*)(a1 + 28) = 1132920832;
                                                                                      result = a1;
                                                                                      *(_DWORD*)(a1 + 36) = 1110704128;
                                                                                      break;
                                                                                    case 0x1EB3:
                                                                                      result = a1;
                                                                                      *(_DWORD*)(a1 + 28) = 1132920832;
                                                                                      *(_DWORD*)(a1 + 36) = -1049624576;
                                                                                      *(_DWORD*)(a1 + 12) = 1067869798;
                                                                                      break;
                                                                                   


Creditos
Bladimir1
Bon Dia

Dakosmu

fix fenrir scale cheesyy2

disable

//SetCompleteHook(0xE9, 0x004E7635, &this->CustomFenrirScale2); //Fix custom fenrir scale and select character scale

Creditos
Bladimir1
Bon Dia

Dakosmu

#9
maybe this help you

in void InitHackCheck() add

strcpy_s(CustomerName, "MuOnline"); or any customer name

protect.h

disable  //static BYTE gProtectString2[20] =
and enable //static BYTE gProtectString3[16]  and remplace it for  static BYTE gProtectString10[16] =

now in  protect.ccp

remplace
wsprintf(this->m_ComputerHardwareId,this->GetEncryptedString(gProtectString2,sizeof(gProtectString2)),ComputerHardwareId1,ComputerHardwareId2,ComputerHardwareId3,ComputerHardwareId4);

for
wsprintf(this->m_ComputerHardwareId,this->GetEncryptedString(gProtectString10,sizeof(gProtectString10)),ComputerHardwareId1,ComputerHardwareId2,ComputerHardwareId3,ComputerHardwareId4);

now in

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)

disable

#if(GAMESERVER_UPDATE == 301)
        //gProtect.StartAuth(AUTH_SERVER_TYPE_S3_GAME_SERVER);
#endif

Creditos
Bladimir1
Bon Dia

Dakosmu

hi my friends i trasladate this code  for fun  cheesyy2 is for  1.04j GlobalMessagem

https://imgur.com/a/iYM2ztw

__declspec(naked) void GlobalMessagem()
{
   static DWORD ADDS = 0x0053E272;

   _asm
   {
      CMP DWORD PTR SS : [ESP - 8], 1200
      JMP[ADDS]
   }
}

SetCompleteHook(0xE9, 0x0053E268, &GlobalMessagem);


Creditos
Bladimir1
Bon Dia

Dakosmu

If this fix is not used, the size of the custom monsters added will not work in conjunction with this code, to fix this you just have to disable this
in custommonsters.ccp

void Monster::Load()
{
remplace
SetCompleteHook(0xE8, 0x0052D9C3, &Monster::MonsterAttribute);

for
//SetCompleteHook(0xE8, 0x0052D9C3, &Monster::MonsterAttribute);

now work 100% :D

https://imgur.com/a/inh6ROk
Bon Dia

Dakosmu

typedef struct
{
    /*0*/   WORD    Live; //??
    /*2*/    WORD    MauntType;      //??          
    /*4*/    DWORD    Unknown4;      //??    
    /*8*/    BYTE    Unknown8;
    BYTE    Shift2[2];
    /*12*/    DWORD    ModelScale;
    /*16*/    float    VecPosX;
    /*20*/    float    VecPosY;
    /*24*/    float    VecPosZ;
    ///*28*/    DWORD    Unknow28;
    ///*32*/    DWORD    Unknow32;
    ///*36*/    DWORD    Unknow36;
    ///*38*/    WORD    Unknow38;   //!!!!!!!!!!
    BYTE    Shift33[53];
    /*82*/    WORD    UnknowTest;
    BYTE    Shift3[103];
    ///*148*/    DWORD    Unknow148;
    ///*152*/    DWORD    Unknow152;
    ///*168*/    DWORD    Unknow168; 
    ///*176*/    DWORD    Unknow176;  //!!!!!!!!!
    /*188*/ BYTE  TypeName;
    /*189*/ BYTE  Type; //??
    /*190*/ WORD  Unknow190;   //??
                               ///*204*/    BYTE    Unknow204;
                               ///*296*/    DWORD    Unknow296;  !!
                               ///*300*/    DWORD    Unknow300;  !!
                               ///*304*/    DWORD    Unknow304;   !!
    BYTE    Shift113[124];
    /*316*/    DWORD    Unknow316; //??
    BYTE    Shift1113[5];
    /*325*/    BYTE    Action;
    BYTE    Shift114[2];
    /*328*/    DWORD    Unknow328; //??
                               ///*332*/    DWORD    Unknow332;
    BYTE    Shift4[32];
    /*364*/    float    SelectZone;
    BYTE    Shift44[48];
    ///*416*/ BYTE    Unknown416; //!!!!!!!!
    ///*448*/ BYTE    Unknown448; //!!!!!!!!
    ///*452*/ DWORD   Unknown452; //!!!!!!!!
    /*416*/    BYTE    Unknown416;
    BYTE    Shift412[48];
    /*464*/    BYTE    Unknown464;
    BYTE    Shift5[38];
    ///*500*/    DWORD    Unknown500; 
    /*504*/    WORD    Unknown504;
    BYTE    Shift51[18];
    /*524*/    BYTE    Class;
    ///*525*/    BYTE    Unknow525;      !!!!
    ///*526*/    WORD    Unknown526;   //!!!!!!!!
    BYTE    Shift512[4];
    ///*528*/    BYTE    Unknow28;
    /*529*/    char    Name[25];
    BYTE    Shift612[8];
    /*562*/    WORD    Unknow562;// ???
    /*564*/    WORD    VPIndex;
    BYTE    Shift6[34];
    /*600*/    WORD    HelmSlot;
    /*602*/    BYTE    HelmLevel;
    /*603*/    BYTE    HelmExcellent;
    /*604*/    BYTE    HelmAncient;
    ///*605*/ BYTE   Unknown605;         //!!!!!!!!!??
    BYTE    Shift7[27];
    /*632*/    WORD    ArmorSlot;
    /*634*/    BYTE    ArmorLevel;
    /*635*/    BYTE    ArmorExcellent;
    /*636*/    BYTE    ArmorAncient;
    ///*637*/ BYTE   Unknown637;         //!!!!!!!!!??
    BYTE    Shift8[27];
    /*664*/    WORD    PantsSlot;
    /*666*/    BYTE    PantsLevel;
    /*667*/    BYTE    PantsExcellent;
    /*668*/    BYTE    PantsAncient;
    ///*669*/ BYTE   Unknown669;         //!!!!!!!!!??
    BYTE    Shift9[27];
    /*696*/    WORD    GlovesSlot;
    /*698*/    BYTE    GlovesLevel;
    /*699*/    BYTE    GlovesExcellent;
    /*700*/    BYTE    GlovesAncient;
    ///*701*/ BYTE   Unknown701;         //!!!!!!!!!??
    BYTE    Shift10[27];
    /*728*/    WORD    BootsSlot;
    /*730*/    BYTE    BootsLevel;
    /*731*/    BYTE    BootsExcellent;
    /*732*/    BYTE    BootsAncient;
    ///*733*/ BYTE   Unknown733;         //!!!!!!!!!??
    BYTE    Shift11[27];
    /*760*/    WORD    WeaponFirstSlot;
    /*762*/    BYTE    WeaponFirstLevel;
    /*763*/    BYTE    WeaponFirstExcellent;
    /*764*/    BYTE    WeaponFirstAncient;
    ///*765*/ BYTE   Unknown765;         //!!!!!!!!!??
    BYTE    Shift12[27];
    /*792*/    WORD    WeaponSecondSlot;
    /*794*/    BYTE    WeaponSecondLevel;
    /*795*/    BYTE    WeaponSecondExcellent;
    /*796*/    BYTE    WeaponSecondAncient;
    ///*797*/ BYTE   Unknown797;         //!!!!!!!!!
    BYTE    Shift13[27];
    /*824*/    WORD    WingsSlot;
    /*826*/ BYTE    WingsLevel;
    /*827*/    BYTE    WingsExcellent;
    /*828*/    BYTE    WingsAncient;
    ///*829*/ BYTE   Unknown829;         //!!!!!!!!!
    ///*832*/ DWORD   Unknown832;         //!!!!!!!!!
    BYTE    Shift14[27];
    /*856*/    WORD    PetSlot;
    /*858*/ BYTE    Unknown858;
    /*859*/ BYTE    FenrirCharSet;
    /*860*/ BYTE    ExpectPet;
    ///*861*/ BYTE   Unknown861;         //!!!!!!!!!
    BYTE    Shift15[59];
    /*920*/    BYTE    AncientEffect;
    ///*924*/ DWORD   Unknown924;         //!!!!!!!!!
    BYTE    Shift16[7];
    /*928*/    BYTE    StatusEffect;
    BYTE    Shift117[21];
    ///*948*/ BYTE   Unknown948;         //!!!!!!!!!
    ///*949*/ BYTE   Unknown949;         //!!!!!!!!!
    /*950*/    WORD    m_Change;
    BYTE    Shift145[28];
    ///*969*/ BYTE   Unknown969;         //!!!!!!!!!
    /*980*/    DWORD    Unknown980;
    BYTE    Shift197[12];
    /*996*/ WORD    Unknown996;
    BYTE    Shift17[61];
    ///*1014*/ DWORD   Unknown1014;     //!!!!!!!!!!!!!
    ///*1016*/ DWORD   Unknown1016;     //!!!!!!!!!!!!!
    ///*1020*/ DWORD   Unknown1020;     //!!!!!!!!!!!!!
    ///*1058*/ BYTE   Unknown1058;     //!!!!!!!!!!!!!
    /*1059*/ BYTE   Visible;
    ///*1060*/    BYTE    Unknown1060;   //!!!!!!!!!!!!!
    ///*1116*/ DWORD    Unknow1116;
    ///*1120*/ DWORD    Unknow1120; 
    ///*1144*/ DWORD   Unknown1144;    //!!!!!!!!!!!
}ObjectPreview, *lpViewObj;




lpViewObj :
#define pShowMonster ((lpViewObj(__cdecl*)(int a1, int a2, int a3, int a4)) 0x0052D92B) // 1.04J DONE

ObjectPreview:
*(WORD*)(ObjectStruct + 988) = *(DWORD*)0x7B06B68; //Index Monster

Creditos
ester1838a
Bon Dia


Dakosmu

Bon Dia

🡱 🡳