Mostrar posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Tester1838a

Paginas: [1]
1
Sources Generales / Re: SOURCE 1.04J WIZARD TEAM
« Posteado: September 15, 2024, 03:55:34 PM »
hi my friends any have for share this estructures ObjectPreview, * lpViewObj; and ObjectModel, * lpModelObj;
or offset of it :D

Code: [Select]
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;


Code: [Select]
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

2
Sources Generales / SOURCES MiniMap + CustomMap / Season 3 1.04J (1.04.10 KOR)
« Posteado: February 22, 2022, 08:07:35 AM »

- Minimap
- Custom Map + Custom MapName (Text + Image while load of Map)

MiniMap.cpp
Code: [Select]
#include "stdafx.h"
#include "MiniMap.h"
#include "Offset.h"
#include "Util.h"


bool MiniMapTable[MAX_MINI_MAP];

void InitMiniMap() // OK
{
    memset(MiniMapTable,0,sizeof(MiniMapTable)); // 1.04J DONE

    SetCompleteHook(0xE8,0x00636F24,&MiniMapLoad); // 1.04J DONE
SetCompleteHook(0xFF,0x00639964,&MiniMapCore); // 1.04J DONE
    SetCompleteHook(0xFF,0x0049C77E,&MiniMapCheck); // 1.04J DONE
}


void MiniMapCore() // OK
{
    ((void(*)())0x0063612C)(); // 1.04J DONE


    MiniMapLoad();
}


void MiniMapLoad() // OK
{
    if(*(int*)(MAIN_CURRENT_MAP) < MAX_MINI_MAP)
    {
        char buff[64];

        wsprintf(buff,"Minimap\\World%d\\Map1.jpg",(*(int*)(MAIN_CURRENT_MAP)+1));

        if(MiniMapFileCheck(*(int*)(MAIN_CURRENT_MAP)) != 0)
        {
            MiniMapTable[*(int*)(MAIN_CURRENT_MAP)] = 1;

((bool(*)(char*,DWORD,DWORD,DWORD,BYTE))0x006F9D4F)(buff,1920,9729,10496,1);

        }
    }
}


bool MiniMapCheck(int map) // OK
{
    if(map == 30 || (map < MAX_MINI_MAP && MiniMapTable[map] != 0))
    {
        return 1;
    }
    else
    {
        return 0;
    }
}


bool MiniMapFileCheck(int map) // OK
{
    if(map == 30){return 1;}


    char buff[64];


    wsprintf(buff,".\\Data\\Minimap\\World%d\\Map1.ozj",(map+1));


    FILE* file;


    if(fopen_s(&file,buff,"r") != 0)
    {
        return 0;
    }
    else
    {
        fclose(file);
        return 1;
    }

}

MiniMap.h
Code: [Select]
#define MAX_MINI_MAP		100
#define MAIN_CURRENT_MAP 0x0077038C


void InitMiniMap();
void MiniMapCore();
void MiniMapLoad();
bool MiniMapCheck(int map);
bool MiniMapFileCheck(int map);

CustomMap.cpp
Code: [Select]
#include "stdafx.h"
#include "CustomMapNew.h"
#include "TMemory.h"
#include "ToolKit.h"

CCustomMap gCustomMap;


char * Map51 = "Interface\\Elbeland.tga";
char * Map56 = "Interface\\SwampOfCalmness.tga";
char * Map57 = "Interface\\Raklion.tga";
char * Map58 = "Interface\\RaklionBoss.tga";
char * Map62 = "Interface\\santatown.tga";
char * Map63 = "Interface\\Vulcanus.tga";
char * Map64 = "Interface\\duelarena.tga";

char * Map83 = "Interface\\Acheron.tga";
char * Map84 = "Interface\\Debenter.tga";
char * Map85 = "Interface\\UrukMountain.tga";
char * Map86 = "Interface\\Ferea.tga";
char * Map87 = "Interface\\lorencia.tga";
char * Map88 = "Interface\\Nars.tga";
char * Map89 = "Interface\\NixiesLake.tga";
char * Map90 = "Interface\\DeepDungeon.tga";
char * Map91 = "Interface\\DeepDungeon.tga";
char * Map92 = "Interface\\DeepDungeon.tga";
char * Map93 = "Interface\\DeepDungeon.tga";
char * Map94 = "Interface\\DeepDungeon.tga";
char * Map95 = "Interface\\SwampOfDarkness.tga";
char * Map96 = "Interface\\KuberaMine.tga";

char* LoadMapName(signed int MapNumber)
{
if (MapNumber >= 51 && MapNumber <= 100)
{
return pGetTextLine(pTextLineThis, (2532 + MapNumber - 51));
}
return pMapName(MapNumber);
}



void __declspec(naked) LoadNewInterfaceMapName()
{
    _asm
    {

MOV DWORD PTR SS:[EBP-0x0B4],0x32 // MOV DWORD PTR SS:[EBP-0x0D0],0x32 // 0x32 = 50 IT Final (Hook place)
        PUSH 0x0076C05C                    // .PUSH 0x0076C05C                      // Arg1 = ASCII "Interface\IllusionTemple.tga"
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2


        MOV DWORD PTR SS:[EBP-0x0B4],0x33
        PUSH Map51                 
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x38
        PUSH Map56                 
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x39
        PUSH Map57                 
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x3A
        PUSH Map58               
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x3E
        PUSH Map62               
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x3F
        PUSH Map63               
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x40
        PUSH Map64               
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2


MOV DWORD PTR SS:[EBP-0x0B4],0x53
        PUSH Map83                 
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2



MOV DWORD PTR SS:[EBP-0x0B4],0x54
        PUSH Map84                 
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x55
        PUSH Map85                 
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x56
        PUSH Map86                 
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x57
        PUSH Map87                 
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x58
        PUSH Map88                 
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x59
        PUSH Map89               
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x5A
        PUSH Map90               
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x5B
        PUSH Map91               
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x5C
        PUSH Map92               
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x5D
        PUSH Map93               
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x5E
        PUSH Map94               
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x5F
        PUSH Map95               
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2

MOV DWORD PTR SS:[EBP-0x0B4],0x60
        PUSH Map96             
        LEA EAX,DWORD PTR SS:[EBP-0x0B4]
        PUSH EAX
        MOV ECX,DWORD PTR SS:[EBP-0x0B8]
        ADD ECX,0x4
        CALL InterfaceLoad1
        MOV ECX,EAX
        CALL InterfaceLoad2




MOV ESP,EBP
POP EBP
RETN


        InterfaceLoad1:
        MOV EDI, 0x00461510
        JMP EDI
        // ---
        InterfaceLoad2:
        MOV EDI, 0x00408710
        JMP EDI
       
    }
}


void CCustomMap::Load()
{

SetOp((LPVOID)0x005F97B1, (LPVOID)LoadMapName, ASM::CALL);
SetOp((LPVOID)0x00675D9F, (LPVOID)LoadMapName, ASM::CALL);
SetOp((LPVOID)0x00679035, (LPVOID)LoadMapName, ASM::CALL);

ToolKit.WriteJmp(0x00461153,(DWORD)&LoadNewInterfaceMapName);

//Bypass in terrains files
SetByte2((PVOID)0x00639A36,0xEB);
SetByte2((PVOID)0x00639A3C,0xEB);
SetByte2((PVOID)0x00639C29,0xEB);
SetByte2((PVOID)0x00639C2F,0xEB);
SetByte2((PVOID)0x00639CCC,0xEB);
SetByte2((PVOID)0x00639CD2,0xEB);

//Increase terrains amount
SetByte2((PVOID)0x00639A35,0x69);
SetByte2((PVOID)0x00639C28,0x69);
SetByte2((PVOID)0x00639CCB,0x69);

}

CustomMap.h
Code: [Select]
class CCustomMap
{
public:
// ----
void Load();
// ----
}; extern CCustomMap gCustomMap;


#define pTextLineThis ((LPVOID(*)()) 0x0750DF88)
#define pGetTextLine ((char*(__thiscall*)(LPVOID This, int LineNumber)) 0x00402260)
#define pMapName ((char*(__cdecl*)(signed int mapNumber)) 0x005F8F60)


#define sub_461510 ((int(*)(int a1))0x00461510) //ok
#define sub_408710 ((int(*)(int a1))0x00408710) //ok


Main.cpp
Code: [Select]
InitMiniMap();
gCustomMap.Load();


3
Sources Generales / Re: Custom Bow/CrossBow (1.04j/S3) - Kapocha
« Posteado: February 21, 2022, 12:03:08 PM »
CBow.h
Code: [Select]
#pragma once
#define DarkStinger ITEM2(4,23)
#define BlessedCross ITEM2(4,24)

#define CreateArrow ((int(__cdecl*)(int a1, int a2, int a3, char a4, char a5, unsigned __int8 a6)) 0x006F140C)
#define CreateEffect ((void(__cdecl*)(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, char a9, char a10, float a11)) 0x006A7FB0)
#define PlayBuffer ((signed int (__cdecl*)(int a1, int a2, int a3)) 0x006A4FB5)
#define sub_40B3C0 ((void(__thiscall*)(DWORD *This, unsigned int a2)) 0x0040B3C0)
#define sub_40B460 ((void(__thiscall*)(DWORD *This, char *a2)) 0x0040B460)

#define iCrossBowAddPlayerDimension 0x0051CE6F // 1.04J OK

void CBow();



CBow.cpp
Code: [Select]
#include "stdafx.h"
#include "CEffect.h"
#include "CBow.h"
#include "Util.h"

DWORD IsCrossItem = 0;

void __declspec(naked) Bow_SetPlayerStop()
{
static DWORD CReturn = 0x0050A4EF;

_asm
{
CMP EAX,0x0A9F
je ReturnLoad
CMP EAX,DarkStinger
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp CReturn
}
}

void __declspec(naked) Bow_SetPlayerWalk()
{
static DWORD CReturn = 0x0050B0C7;

_asm
{
CMP EAX,0x0A9F
je ReturnLoad
CMP EAX,DarkStinger
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp CReturn
}
}

void __declspec(naked) Bow_SetPlayerRun()
{
static DWORD CReturn = 0x0050B399;

_asm
{
CMP EAX,0x0A9F
je ReturnLoad
CMP EAX,DarkStinger
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp CReturn
}
}

void __declspec(naked) Bow_SetPlayerBowAttackFenrir()
{
static DWORD CReturn = 0x0050C0A3;

_asm
{
CMP EDX,0x0A9F
je ReturnLoad
CMP EDX,DarkStinger
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp CReturn
}
}

void __declspec(naked) Bow_SetPlayerBowAttackPet()
{
static DWORD CReturn = 0x0050BECC;

_asm
{
CMP EDX,0x0A9F
je ReturnLoad
CMP EDX,DarkStinger
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp CReturn
}
}

void __declspec(naked) Bow_SetPlayerBowAttackPet2()
{
static DWORD CReturn = 0x0050BDCF;

_asm
{
CMP EDX,0x0A9F
je ReturnLoad
CMP EDX,DarkStinger
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp CReturn
}
}

void __declspec(naked) Bow_SetPlayerWing()
{
static DWORD CReturn = 0x0050C7B3;

_asm
{
CMP EDX,0x0A9F
je ReturnLoad
CMP EDX,DarkStinger
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp CReturn
}
}

void __declspec(naked) Bow_SetPlayerWing2()
{
static DWORD CReturn = 0x0050C33C;

_asm
{
CMP EDX,0x0A9F
je ReturnLoad
CMP EDX,DarkStinger
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp CReturn
}
}

void __declspec(naked) Bow_RenderCharacterBackItem()
{
static DWORD CReturn = 0x00525C36;

_asm
{
CMP EAX,0x0A9F
je ReturnLoad
CMP EAX,DarkStinger
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp CReturn
}
}

void __declspec(naked) Bow_InventoryPosition()
{
static DWORD CReturn = 0x005E747E;

_asm
{
CMP ESI,0x0A9F
je ReturnLoad
CMP ESI,DarkStinger
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp CReturn
}
}

DWORD IndexBow;
void __declspec(naked) Bow_SetPlayerAttack1()
{
static DWORD CReturn = 0x0056CCEE;
_asm
{
MOV IndexBow, ECX
}
if(IndexBow == 0x0A99 || IndexBow == DarkStinger || IndexBow == BlessedCross)
{
_asm
{
JMP CReturn
}
}
_asm
{
JMP CReturn 
}
}

void __declspec(naked) Bow_SetPlayerAttack2()
{
static DWORD CReturn = 0x0056E75D;
_asm
{
MOV IndexBow, ECX
}
if(IndexBow == 0x0A9F || IndexBow == DarkStinger || IndexBow == BlessedCross)
{
_asm
{
JMP CReturn
}
}
_asm
{
JMP CReturn 
}
}

void __declspec(naked) Bow_SetPlayerAttack3()
{
static DWORD CReturn = 0x0067EC5D;
_asm
{
MOV IndexBow, EAX
}
if(IndexBow == 0x0A9F || IndexBow == DarkStinger || IndexBow == BlessedCross)
{
_asm
{
JMP CReturn
}
}
_asm
{
JMP CReturn 
}
}

void __declspec(naked) Bow_SetPlayerAttack4()
{
static DWORD CReturn = 0x0067EB9D;
_asm
{
MOV IndexBow, EAX
}
if(IndexBow == 0x0A9F || IndexBow == DarkStinger || IndexBow == BlessedCross)
{
_asm
{
JMP CReturn
}
}
_asm
{
JMP CReturn 
}
}

void CCreateArrow(int a1, int a2, int a3, char SkillIndex, char Skill, unsigned __int8 SKKey)

int Bow;
int CrossBow;
signed int SubType;
SubType = 0;

CrossBow = *(WORD *)(a1 + 752);
Bow = *(WORD *)(a1 + 784);
if ( a1 == *(int*)0x74D2B2C )
{
sub_40B3C0(&*(DWORD*)0x7AFEA08, *(int*)0x74D2C5C);
CrossBow = *(WORD *)(*(int*)0x74D2C5C + 2932);
Bow = *(WORD *)(*(int*)0x74D2C5C + 3000);
sub_40B460(&*(DWORD*)0x7AFEA08, (char *)*(int*)0x74D2C5C);
if ( CrossBow != -1 )
{
CrossBow += 649;
}
if ( Bow != -1 )
{
Bow += 649;
}
}
if ( SKKey == 52 )
{
SubType = 2;
PlayBuffer(85, a2, 0);
}
*(int*)0x7B06C00 = SKKey;
if ( SKKey == 51 )
{
PlayBuffer(130, a2, 0);
}
if ( Skill == 2 )
{
SubType = 99;
}
if ( SKKey == 46 )
{
CreateEffect(348, a2 + 16, a2 + 28, a2 + 296, 0, a3, *(WORD *)(a2 + 190), SkillIndex, Skill, 0, 0.0);
}
else
{
switch ( CrossBow )
{
case BlessedCross:CreateEffect(307, a2 + 16, a2 + 28, a2 + 296, SubType, a2, *(WORD *)(a2 + 190), SkillIndex, Skill, 0, 0.0);break;
//default:
break;
}
switch ( Bow )
{
case DarkStinger:CreateEffect(283, a2 + 16, a2 + 28, a2 + 296, SubType, a2, *(WORD *)(a2 + 190), SkillIndex, Skill, 0, 0.0);break;
//default:
return;
}
}
CreateArrow(a1,a2,a3,SkillIndex,Skill,SKKey);
}

void __declspec(naked) cCrossBowAddPlayerDimension()
{
    static DWORD Address1 = 0x0051CEA5;
    static DWORD Address2 = 0x0051CEFC; 

_asm
{
   Mov Ecx, Dword ptr ss : [ebp + 0x1C]
   Mov Dword ptr ss : [ebp + 0x1C],Ecx
   Mov IsCrossItem, Ecx
}

    if(IsCrossItem >= ITEM2(4,8) && IsCrossItem <= ITEM2(4,14)||IsCrossItem == ITEM2(4,16)||IsCrossItem == ITEM2(4,18)||IsCrossItem == ITEM2(4,19) || IsCrossItem >= ITEM2(4, 24) && IsCrossItem <= ITEM2(4, 44)) // Devil Crossbow
    {
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}

void CBow()
{


SetCompleteHook(0xE9,0x0050A4EA, &Bow_SetPlayerStop);
SetCompleteHook(0xE9,0x0050B0C2, &Bow_SetPlayerWalk);
SetCompleteHook(0xE9,0x0050B394, &Bow_SetPlayerRun);
SetCompleteHook(0xE9,0x0050C7AD, &Bow_SetPlayerWing);
SetCompleteHook(0xE9,0x0050C09D, &Bow_SetPlayerBowAttackFenrir); //
SetCompleteHook(0xE9,0x0050BEC6, &Bow_SetPlayerBowAttackPet); //
SetCompleteHook(0xE9,0x0050BDC9, &Bow_SetPlayerBowAttackPet2); //
SetCompleteHook(0xE9,0x0050C336, &Bow_SetPlayerWing2); //
SetCompleteHook(0xE9,0x00525C31, &Bow_RenderCharacterBackItem);
SetRange2((LPVOID)iCrossBowAddPlayerDimension, 6, ASM::NOP); //
SetJmp2((LPVOID)iCrossBowAddPlayerDimension, cCrossBowAddPlayerDimension); //
SetCompleteHook(0xE9,0x005E7478, &Bow_InventoryPosition);
SetCompleteHook(0xE9,0x0056CCE9, &Bow_SetPlayerAttack1);
SetCompleteHook(0xE9,0x0056E758, &Bow_SetPlayerAttack2);
SetCompleteHook(0xE9,0x0067EC59, &Bow_SetPlayerAttack3);
SetCompleteHook(0xE9,0x0067EB99, &Bow_SetPlayerAttack4); //

SetCompleteHook(0xE8,0x006F1C61, &CCreateArrow);
SetCompleteHook(0xE8,0x006F1D1E, &CCreateArrow);
SetCompleteHook(0xE8,0x006F1D50, &CCreateArrow);
SetCompleteHook(0xE8,0x006F1D82, &CCreateArrow);
SetCompleteHook(0xE8,0x006F1DB4, &CCreateArrow);
SetCompleteHook(0xE8,0x006F1E27, &CCreateArrow);
SetCompleteHook(0xE8,0x006F1E59, &CCreateArrow);
SetCompleteHook(0xE8,0x006F1E8B, &CCreateArrow);
SetCompleteHook(0xE8,0x006F1EFA, &CCreateArrow);


}

- Fixed Crossbow normal rotation show in town
- Fixed Bows animations while fenrir/uniria

4
2 bugs founded:

1. Data/World74/EncTerrain74.obj is missing from uploaded client and client crashes on startup
2. Even if you are disconnected at server select you can still get to account/password box

5
Temas solucionados / Re: Cooldown Teleport skill IGCN
« Posteado: August 16, 2021, 02:48:50 PM »
If you have source code of GameServer you can put this cooldown in GameServer directly.

Function you need to edit is :
Code: [Select]
 void CGTeleportRecv(PMSG_TELEPORT* lpMsg, int aIndex)

Add:
Code: [Select]
if ( (GetTickCount() - gObj[aIndex].TeleportSkillTime) < 3000 )
{

::GCServerMsgStringSend("Skill cant be cast so fast!",aIndex,1);

PMSG_TELEPORT_RESULT pTeleportResult;
pTeleportResult.h.c = 0xC3;
pTeleportResult.h.size = sizeof(pTeleportResult);
pTeleportResult.h.headcode = 0x1C;
pTeleportResult.MoveNumber = 0;
pTeleportResult.MapNumber = gObj[aIndex].MapNumber;
pTeleportResult.MapX = gObj[aIndex].X;
pTeleportResult.MapY = gObj[aIndex].Y;
pTeleportResult.Dir = gObj[aIndex].Dir;
DataSend(aIndex, (LPBYTE)&pTeleportResult, pTeleportResult.h.size);
return;
}

gObj[aIndex].TeleportSkillTime = GetTickCount();

In user.cpp have to add in function void gObjCharZeroSet(int aIndex):

Code: [Select]
lpObj->TeleportSkillTime = 0;

In user.h objectstruct:
Code: [Select]
DWORD TeleportSkillTime;

P.s.: GameServer Skill.txt Delay option file doesnt take any effect at all.
And editing client will only take advantage user who have valid skill_eng.bmd file.
Which means if it's not CRC protected or so anyone can modify it and you wont be done anything again.
So the only good way is use code above and patch it server side.

6
Sources Generales / Re: MAIN Remake UI Directx 11
« Posteado: July 12, 2021, 04:44:15 AM »
Original GitHub Page: github . com/Yomalex/engine

7
Sources Generales / Re: MuGuard
« Posteado: May 31, 2021, 08:19:59 AM »
This is not muguard firewall source......
It's just simple anti-hack source that blocks dumps as cheats.

8
Season3 / FILES Season 3 Episode 1 KOR 1.04J+ Client Source + Client Patch
« Posteado: November 24, 2020, 02:29:34 PM »
As the title says this is source of S3Ep1 1.04J+ KOR Client Side + Client Patch.
In client patch is included some custom stuffs for server that are files maked for.
However I didn't include the credits since credits goes to whole MU Community (there are a lot of people that has code or etc in these sources).


Customs:

- 3D Camera
- Fog
- HD Resolution
- FPS Fix
- New item models
- Glow Color
- Double Sword in town
- Sky
- Custom Maps Support
and a lot more you will see .....




Password: tuservermu.com.ve

9
Soporte / Ayudas / Re: OFFSETS MAIN 1.04J OU 1.02C
« Posteado: November 14, 2020, 11:38:45 AM »
Main 1.04J+ KOR offsets:

MAIN_FONT_SIZE 0x007513340
MAIN_RESOLUTION 0x007afec78
MAIN_RESOLUTION_X 0x0077e350
MAIN_RESOLUTION_Y 0x0077e354

double Resolution_ClipX1 = 0x007588B4;
double Resolution_ClipX2 = 0x007588C0;
SetCompleteHook(0xE9,0x00648274,&ResolutionSwitch);

   SetCompleteHook(0xE9,0x00649553,&ResolutionSwitchFont);

SetCompleteHook(0xE9,0x004EECA1,&ResolutionMoveList); //

   SetCompleteHook(0xE9,0x004EE5EB,&ResolutionMoveList2); //

Protocol
oDataRecv 0x0069C2C0
pDataRecv ((void(*)(BYTE,PBYTE,DWORD,DWORD,...)) 0x0069C3C0)
pActiveSocket *(SOCKET*)(*(DWORD*)0x77F5B4 + 0x0C)
oXORFilterStart 0x00404299

Other offsets:

pMainState                  *(int*)0x0077EBAC   
pMapNumber            *(int*)0x0077038C
ScreenFolder      (0x0077F420)
ExeSerial         (0x0077F5A0)
 pGameWindow            *(HWND*)0x00647CC2

InitPlayer:

SetDword(0x0049F6ED,0xA0000001); // PrintTextReplace 64

   SetDword(0x004AB73A,0xA0000002); // PrintTextReplace 64

   SetDword(0x005B3AD4,0xA0000003); // PrintTextReplace 64

   SetDword(0x005B4931,0xA0000004); // PrintTextReplace 64

   SetDword(0x0049F68B,0xA0000001); // PrintTextReplace 64

   SetDword(0x004AB6DE,0xA0000002); // PrintTextReplace 203

   SetCompleteHook(0xE9,0x00402267,&PrintPlayerViewText);

SetCompleteHook(0xE9,0x0053CDAA,&PrintPlayerGetSkillMagicDamage);



10
Season3 / Re: Muserver Season 3 EP1 Premium exclusive
« Posteado: December 20, 2019, 04:10:47 AM »
P.p: Just an advice if you decide to use this GameServer in source you better remove / or exchange / or fix these 2 functions:

Code: [Select]
gWriteChatLog
Log.SaveLogInFile

Since they produce random server crashes without .dmp file created and usually only with high players online.
Also this gameserver contains other crash bugs and glitches that I not remember exactly anymore (example: Party system has bug too).

11
Sources Generales / Re: Source Season 3 EP1 Premium exclusive
« Posteado: October 02, 2019, 12:23:24 PM »
Crash bug in : ObjCalCharacter.cpp
Function: gObjSetItemPlusSpecial

Fix (Add):

Code: [Select]
void gObjSetItemPlusSpecial(LPOBJ lpObj, int option, int ivalue)
{
[color=red]if ( ivalue < 1)
{
ivalue = 1;
}[/color]

if ( option == -1 )
return;

switch ( option )

Bug caused by misconfiguration of jewelofharmony file and or bug from adding in game (with packet editor) or in webshop or something item with harmony option +0.
In such case if item harmony option is +0 without this fix GameServer will crash immediately.

Paginas: [1]