Noticias:

SMF - Just Installed!

Menú principal

SOURCE 1.04J WIZARD TEAM

Publicado por Dakosmu, Oct 25, 2024, 11:19 PM

Tema anterior - Siguiente tema

Dakosmu

SOURCE 1.04J WIZARD TEAM




Aca dejo el Cliente, MuServer y Source andando, lo mas que pude arreglar hasta ahora, GameServer ya no cierra a los minutos, lo deje mas de 10 hs on para ver y no cerro. tambien ice u back un de las DB para no tener que estar ejecutando las Querrys creo que solo queda configurar los eventos y otras cosas, el que logue configurar que comparta.



Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión

Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión


You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
Bon Dia

Dakosmu

i create it for fun for 1.04j , select position text name of pj, npc...  grin2

https://imgur.com/a/qbcoZg5


#define LEFT 1
#define LEFT_CLIP 2
#define CENTER 3
#define RIGHT 4

      SetByte(0x0053FA60 +1,CENTER);
      SetByte(0x0053FAA7+1,CENTER);
      SetByte(0x0053FC03+1,CENTER);
      SetByte(0x0053FC2E+1,CENTER);
      SetByte(0x0053FE24+1,CENTER);
      SetByte(0x0053FE58+1,CENTER);
Bon Dia

Dakosmu

Client :

You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
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
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
Bon Dia

Dakosmu

#5
MuServer EX301 KOR ja compilado
You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
compilado com a source e ja removido a licensa[/code]
Bon Dia

Dakosmu

fix frutum for 1.04j i recreate it for fun :D

without fix https://imgur.com/a/iVnEnMe

with fix https://imgur.com/a/qYueW5T


Code:

float FrustrumX[4];
float FrustrumY[4];
bool  fixFrustum(float a1, float a2, float a3)
{
   float v4; // [esp+0h] [ebp-Ch]
   int v5; // [esp+4h] [ebp-8h]
   int i; // [esp+8h] [ebp-4h]

   if (!0x0077EBAC || 0x0077EBAC == 1 || 0x0077EBAC == 3)
      return 1;
   v5 = 3;
   for ( i = 0;  i < 4; ++i)
   {
      a3 -= 70.0f;
      float GetFrustumT = (float)((FrustrumX - a1) * (FrustrumY[v5] - a2));
      float GetFrustumB = (float)((FrustrumX[v5] - a1) * (FrustrumY - a2));

      if (GetFrustumT - GetFrustumB <= a3)
      {
         return false;
      }
   }
   return true;
}

SetCompleteHook(0xE9, 0x608782, &fixFrustum);
Bon Dia

Dakosmu

float FrustrumX[4];
float FrustrumY[4];
bool  fixFrustum(float a1, float a2, float a3)
{
float v4; // [esp+0h] [ebp-Ch]
int v5; // [esp+4h] [ebp-8h]
int i; // [esp+8h] [ebp-4h]

if (!0x0077EBAC || 0x0077EBAC == 1 || 0x0077EBAC == 3)
return 1;
v5 = 3;
for ( i = 0;  i < 4; ++i)
{
a3 -= 70.0f;
float GetFrustumT = (float)((FrustrumX[i] - a1) * (FrustrumY[v5] - a2));
float GetFrustumB = (float)((FrustrumX[v5] - a1) * (FrustrumY[i] - a2));

if (GetFrustumT - GetFrustumB <= a3)
{
return false;
}
}
return true;
}
Bon Dia

Dakosmu

You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
to postando pra vcs o MuServer + source do projeto ja modificada...
claro que nao esta 100% e tambem nao sou expert em programação, entendo uma coisa ou outra mas fiz o que  pude pra ajudar vcs, e por enquanto paro por aqui pois encontrei muitos arquivos corrompidos que consegui arrumar, arquivos faltando no muserver que tambem consegui arrumar e outro nao..

segue abaixo que eu fiz:
Removido licença do MuServer
Corrigido nome de arquivos txt

desativei:
CustomAttack
EventEntryLevel
InvasionManager
(foi desativado no GameServer> Serverinfo.cpp... esta apenas com // so apagar que ele volta novamente porem nao consegue arrumar o txt corretamente para funcionar)

Parei na parte dos arquivos txt mesmo... chegou numa parte que nao localizo o txt corretamente na source pra alterar o nome
segue imagem abaixo:



esse arquivo 033.txt que ele pede é o arquivo Erohim da pasta EventItembag se alterar pra 033 o erro some mais dai aparece outros tambem da mesma pasta.... ai precisa ficar adivinhando de qual numeração é quem, e dai que enfim vc chega na parte que ele pede o arquivo *.txt nao faco ideia do que é e nao se pode criar nenhum arquivo com *

ja refiz 2x vezes e nao tive sucesso...
projeto ta ai pra quem quiser ajudar a desbugar
You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
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);
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


#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);
Bon Dia

Dakosmu

You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
my friend i create this code for fun customchange color background for items drop :D
This code is for 1.04j

https://imgur.com/a/lM0bJm2

__declspec(naked) void ColorItemdropbackground()
{
   static DWORD Address = 0x005BA8B6;
   static DWORD Address2 = 0x0041FF35;
   static DWORD Color1 = 60;//DEFAULT 0
   static DWORD Color2 = 248;//DEFAULT 0
   static DWORD Color3 = 10;//DEFAULT 0
   static DWORD Z = -21448519281;//DEFAULT -1


   _asm
   {
      call    Address2
      push    Z
      push    Color1
      push    Color2
      push    Color3

      JMP[Address]
   }
}

SetCompleteHook(0xE9, 0x005BA8A6, &ColorItemdropbackground);

Bon Dia

Dakosmu

SV:
You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
dejo el Cliente, MuServer, Querris Y Tools de la ultima version de WT, el que logre hacer andar que comparta xD, por que a mi me desconecta despues de seleccionar el servidor ;F

You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
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
Bon Dia

Dakosmu


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
Bon Dia

🡱 🡳