Wings add Char need MakerPreview
Printable View
Wings add Char need MakerPreview
I not use + GS .90 sorry
http://forum.ragezone.com/f508/effects-items-939169/ <- Discovered how the effects work in Main 1.03K JPN
Quote:
Here is an src of new wings:
The owner of this src i believe to be DarkSim, but i am not sure, and with some mods, you can create the wings in Chaos Machine(with GS addon).
Wings.cpp
Wings.hCode:#include "stdafx.h"
#include "Wings.h"
#include "Item.h"
//---------------------------------------------------------------------------
#ifdef CLIENT_0
//---------------------------------------------------------------------------
/*005B0BCD - Options view call
005237AD - Wings can have excellent options
005239F1 - Wings can have luck option
0052457E - Wings can have 28 option
005AAA1D - Hide excellent status text
005AED4C - Show wings additionals (speed, damage, absorb)
005AF8C7 - Show durability
005A9C2C - Set golden name
005158FD - Show wings model on player
005E0984 - Set shine effect in inventory
005EF9A9 - Hide excellent status color in inventory
005EF9A9 - fix excellent glow effect
005B8667 - Set back color from durability
007927D0 - Allow jewel insert
005B2A3D - Set gold color name on repair
005B2DA1 - Hide "Excellent" status name on repair
005A7C3C - Set maximum durability to 255
0078CB36 - Allow teleport to Icarus in "M" list
005EE319 - Wings shine animation effect
+ 005EE364 - Pulse level
+ 005EE376 - Pulse speed
+ 005EE390 - Shine level
+ 005EE3A8 - Shine level 2
005EC320 - Transparent effect
005EEAA7 - Dark effect
00510E18 - Cool set effect (like esthus)
*/
//--------------------------------------------------------------------------
DWORD WingsAddExcellentStatus_Pointer;
DWORD WingsAddExcellentStatus_Buff;
// --
DWORD WingsAddLuckOption_Pointer;
DWORD WingsAddLuckOption_Buff;
// --
BYTE WingsAdd28Option_OptionNumber;
BYTE WingsAdd28Option_OptionValue;
BYTE WingsAdd28Option_OptionStat;
DWORD WingsAdd28Option_Pointer;
DWORD WingsAdd28Option_NewOption;
DWORD WingsAdd28Option_Buff;
// --
WORD WingsHideExcellentStatusText_Pointer;
DWORD WingsHideExcellentStatusText_Buff;
// --
WORD WingsShowAdditionals_Pointer;
DWORD WingsShowAdditionals_Buff;
DWORD WingsShowAdditionals_Percent;
// --
WORD WingsShowDur_Pointer;
DWORD WingsShowDur_Buff;
DWORD WingsShowDur_Set_Buff;
// --
WORD WingsSetGoldName_Pointer;
DWORD WingsSetGoldName_Buff;
// --
DWORD WingsDisableLevelShine_Pointer;
DWORD WingsDisableLevelShine_SubPointer;
DWORD WingsDisableLevelShine_Buff;
// --
DWORD WingsHideExcellentGlow_Pointer;
DWORD WingsHideExcellentGlow_Buff;
// --
BYTE WingsAddCharSet_CharSet16;
DWORD WingsAddCharSet_CharSet16_Buff;
BYTE WingsAddCharSet_CharSet9;
WORD WingsAddCharSet_CharSet9_Pointer;
DWORD WingsAddCharSet_CharSet9_Buff;
// --
DWORD WingsSetInvisibleEffect_Pointer;
DWORD WingsSetInvisibleEffect_Buff;
// --
DWORD WingsAllowJewelsInsert_Pointer;
DWORD WingsAllowJewelsInsert_Buff;
// --
DWORD WingsAddSpecialEffect_Pointer;
DWORD WingsAddSpecialEffect_Buff;
DWORD WingsAddSpecialEffect_Arg2;
DWORD WingsAddSpecialEffect_Arg3;
DWORD WingsAddSpecialEffect_Arg4;
DWORD WingsAddSpecialEffect_Arg5;
DWORD WingsAddSpecialEffect_Arg6;
DWORD WingsAddSpecialEffect_Arg7;
DWORD WingsAddSpecialEffect_This;
// --
DWORD WingsAllowListMove_Pointer;
DWORD WingsAllowListMove_Buff;
//--------------------------------------------------------------------------
pSetEffect MU_SetEffect = (pSetEffect)0x6C9AE9;
//---------------------------------------------------------------------------
bool __cdecl WingsRepairSprite(int * ItemPointer)
{
int ItemID = *(short*)ItemPointer;
// ----
//TDEBUG("[%s] Pointer: [%d:%d]", __FUNCTION__, ItemID / 512, ItemID % 512);
// ----
if( ItemID >= ITEM(12, 0) && ItemID <= ITEM(12, 6)
|| ItemID >= ITEM(12, 36) && ItemID <= ITEM(12, 43)
|| ItemID == ITEM(13, 30)
|| ItemID >= ITEM(12, 180) && ItemID <= ITEM(12, 185) )
{
return true;
}
else
{
return false;
}
}
//---------------------------------------------------------------------------
Naked(WingsAddCharSet) // -> 57 -> 005158CF
{
_asm
{
mov ecx, dword ptr ss:[ebp+0x0c]
xor edx, edx
mov dl, byte ptr ds:[ecx+0x08]
and edx, 0x00000007
mov byte ptr ss:[ebp-4], dl
mov eax, dword ptr ss:[ebp-4]
and eax, 0x000000FF
mov WingsAddCharSet_CharSet9_Buff, eax
}
// ----
if( WingsAddCharSet_CharSet9_Buff > 0 )
{
_asm
{
mov cl, byte ptr ss:[ebp-4]
mov byte ptr ss:[ebp-0x3c], cl
mov WingsAddCharSet_CharSet9, cl
}
}
else
{
goto CHARSET16;
}
// ----
//TDEBUG("[%s] CharSet[9] == %d", __FUNCTION__, WingsAddCharSet_CharSet9);
// ----
if( WingsAddCharSet_CharSet9 == 1 )
{
WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 180);
}
else if( WingsAddCharSet_CharSet9 == 2 )
{
WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 181);
}
else if( WingsAddCharSet_CharSet9 == 3 )
{
WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 182);
}
else if( WingsAddCharSet_CharSet9 == 4 )
{
WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 183);
}
else if( WingsAddCharSet_CharSet9 == 5 )
{
WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 184);
}
else if( WingsAddCharSet_CharSet9 == 6 )
{
WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 185);
}
// ----
_asm
{
mov edx, dword ptr ss:[ebp-8]
mov ax, WingsAddCharSet_CharSet9_Pointer
mov word ptr ds:[edx+0x1c8], ax
}
// ----
CHARSET16:
// ----
_asm
{
mov ecx, dword ptr ss:[ebp+0x0c]
xor edx, edx
mov dl, byte ptr ds:[ecx+0x0f]
sar edx, 2
and edx, 0x00000007
mov byte ptr ss:[ebp-4], dl
mov eax, dword ptr ss:[ebp-4]
and eax, 0x000000FF
mov WingsAddCharSet_CharSet16_Buff, eax
}
// ----
if( WingsAddCharSet_CharSet16_Buff > 0 )
{
_asm
{
mov cl, byte ptr ss:[ebp-4]
mov byte ptr ss:[ebp-0x3c], cl
mov WingsAddCharSet_CharSet16, cl
}
}
else
{
_asm
{
mov WingsAddCharSet_CharSet16_Buff, 0x0051591F
jmp WingsAddCharSet_CharSet16_Buff
}
}
// ----
//TDEBUG("[%s] CharSet[16] == %d", __FUNCTION__, WingsAddCharSet_CharSet16);
// ----
if( WingsAddCharSet_CharSet16 == 6 )
{
_asm
{
mov edx, dword ptr ss:[ebp-8]
mov word ptr ds:[edx+0x1c8], 0x1ba2
mov WingsAddCharSet_CharSet16_Buff, 0x0051591F
jmp WingsAddCharSet_CharSet16_Buff
}
}
else
{
_asm
{
mov WingsAddCharSet_CharSet16_Buff, 0x00515908
jmp WingsAddCharSet_CharSet16_Buff
}
}
}
//--------------------------------------------------------------------------
Naked(WingsShowAdditionals) // -> 29 -> 005AED3E
{
// If use ASM variant - all without bugs
// If use C++ variant - rena don't show description & name
// FUCKKKKKKKKKKKK
_asm
{
// -- if( cx >= ITEM(12, 36) && cx <= ITEM(12, 40) )
cmp cx, ITEM(12, 36)
jl EXIT
cmp cx, ITEM(12, 40)
jle SET_ADD
// -- else if( cx == ITEM(12, 43) )
cmp cx, ITEM(12, 43)
je SET_ADD
// -- else if( cx >= ITEM(12, 180) && cx <= ITEM(12, 185) )
cmp cx, ITEM(12, 180)
jl EXIT
cmp cx, ITEM(12, 185)
jle SET_ADD_NEW
// -- else
JMP EXIT
// ----
SET_ADD:
lea esi, [ebp+ebp+39] // WingsShowAdditionals_Percent = 39;
mov WingsShowAdditionals_Buff, 0x005AED5B
jmp WingsShowAdditionals_Buff
// ----
SET_ADD_NEW:
lea esi, [ebp+ebp+45] // WingsShowAdditionals_Percent = 45;
mov WingsShowAdditionals_Buff, 0x005AED5B
jmp WingsShowAdditionals_Buff
// ----
EXIT:
mov WingsShowAdditionals_Buff, 0x005AEDD8
jmp WingsShowAdditionals_Buff
}
// ----
/*
WingsShowAdditionals_Percent = 0;
// ----
_asm
{
mov WingsShowAdditionals_Pointer, cx
}
// ----
if( (WingsShowAdditionals_Pointer >= ITEM(12, 36) && (WingsShowAdditionals_Pointer <= ITEM(12, 40)) || WingsShowAdditionals_Pointer == ITEM(12, 43)) )
{
WingsShowAdditionals_Percent = 39;
}
else if( WingsShowAdditionals_Pointer >= ITEM(12, 180) && WingsShowAdditionals_Pointer <= ITEM(12, 185) )
{
WingsShowAdditionals_Percent = 45;
}
// ----
if( WingsShowAdditionals_Percent > 0 )
{
_asm
{
lea esi, [ebp+ebp]
mov ecx, WingsShowAdditionals_Percent
add esi, ecx
// ----
mov WingsShowAdditionals_Buff, 0x005AED5B
jmp WingsShowAdditionals_Buff
}
}
else
{
_asm
{
mov WingsShowAdditionals_Buff, 0x005AEDD8
jmp WingsShowAdditionals_Buff
}
}
*/
}
//--------------------------------------------------------------------------
Naked(WingsHideExcellentGlow) // -> 28 -> 005EF99A
{
_asm
{
mov edx, dword ptr ss:[ebp+8]
mov eax, dword ptr ds:[edx+0x30]
mov WingsHideExcellentGlow_Pointer, eax
}
// ----
if( WingsHideExcellentGlow_Pointer >= ITEM2(12, 36) && WingsHideExcellentGlow_Pointer <= ITEM2(12, 43)
|| WingsHideExcellentGlow_Pointer >= ITEM2(12, 180) && WingsHideExcellentGlow_Pointer <= ITEM2(12, 185) )
{
_asm
{
mov WingsHideExcellentGlow_Buff, 0x005EFAF1
jmp WingsHideExcellentGlow_Buff
}
}
else
{
_asm
{
mov WingsHideExcellentGlow_Buff, 0x005EF9B6
jmp WingsHideExcellentGlow_Buff
}
}
}
//--------------------------------------------------------------------------
Naked(WingsDisableLevelShine) // 19 -> 005EB1B0
{
_asm
{
mov WingsDisableLevelShine_Pointer, edx
sub edx, ITEM2(12, 15)
mov WingsDisableLevelShine_SubPointer, edx
mov dword ptr ss:[ebp-0x4d0], edx
}
// ----
if( WingsDisableLevelShine_Pointer >= ITEM2(12, 180) && WingsDisableLevelShine_Pointer <= ITEM2(12, 185) )
{
_asm
{
mov dword ptr ss:[ebp-8], 0
}
}
// ----
if( WingsDisableLevelShine_SubPointer > 32 )
{
_asm
{
mov WingsDisableLevelShine_Buff, 0x005EB636
jmp WingsDisableLevelShine_Buff
}
}
else
{
_asm
{
mov WingsDisableLevelShine_Buff, 0x005EB1C9
jmp WingsDisableLevelShine_Buff
}
}
}
//--------------------------------------------------------------------------
Naked(WingsSetGoldName) // -> 42 -> 005A9C08
{
_asm
{
mov ax, word ptr ss:[ebp]
mov WingsSetGoldName_Pointer, ax
}
// ----
if( WingsSetGoldName_Pointer >= ITEM(12, 3) && WingsSetGoldName_Pointer <= ITEM(12, 6)
|| WingsSetGoldName_Pointer == ITEM(13, 30)
|| WingsSetGoldName_Pointer >= ITEM(12, 36) && WingsSetGoldName_Pointer <= ITEM(12, 40)
|| WingsSetGoldName_Pointer >= ITEM(12, 42) && WingsSetGoldName_Pointer == ITEM(12, 43)
|| WingsSetGoldName_Pointer >= ITEM(12, 180) && WingsSetGoldName_Pointer <= ITEM(12, 185) )
{
_asm
{
mov WingsSetGoldName_Buff, 0x005A9C32
jmp WingsSetGoldName_Buff
}
}
else
{
_asm
{
mov WingsSetGoldName_Buff, 0x005A9C4D
jmp WingsSetGoldName_Buff
}
}
}
//--------------------------------------------------------------------------
Naked(WingsShowDur) // -> 18 -> 005AF897
{
_asm
{
mov WingsShowDur_Pointer, ax
}
// ----
if( WingsShowDur_Pointer < ITEM(12, 0)
|| (WingsShowDur_Pointer >= ITEM(12, 180) && WingsShowDur_Pointer <= ITEM(12, 185))
|| (WingsShowDur_Pointer >= ITEM(13, 0) && WingsShowDur_Pointer < ITEM(14, 0)) )
{
_asm
{
mov WingsShowDur_Buff, 0x005af8cd
jmp WingsShowDur_Buff
}
}
else
{
_asm
{
mov WingsShowDur_Buff, 0x005af8a9
jmp WingsShowDur_Buff
}
}
}
//--------------------------------------------------------------------------
Naked(WingsHideExcellentStatusText) // -> 6 -> 005AAA94
{
_asm
{
mov WingsHideExcellentStatusText_Pointer, ax
}
// ----
if( WingsHideExcellentStatusText_Pointer == ITEM(13, 30)
|| (WingsHideExcellentStatusText_Pointer >= ITEM(12, 180)
&& WingsHideExcellentStatusText_Pointer <= ITEM(12, 185)) )
{
_asm
{
mov WingsHideExcellentStatusText_Buff, 0x005aaa9a
jmp WingsHideExcellentStatusText_Buff
}
}
else
{
_asm
{
mov WingsHideExcellentStatusText_Buff, 0x005aaad4
jmp WingsHideExcellentStatusText_Buff
}
}
}
//--------------------------------------------------------------------------
Naked(WingsAddLuckOption) // -> 8 -> 005239F1
{
_asm
{
mov WingsAddLuckOption_Pointer, edx
}
// ----
if( WingsAddLuckOption_Pointer == ITEM(12, 43) || WingsAddLuckOption_Pointer >= ITEM(12, 180) && WingsAddLuckOption_Pointer <= ITEM(12, 185) )
{
_asm
{
mov WingsAddLuckOption_Buff, 0x005239f9
jmp WingsAddLuckOption_Buff
}
}
else
{
_asm
{
mov WingsAddLuckOption_Buff, 0x00523a18
jmp WingsAddLuckOption_Buff
}
}
}
//--------------------------------------------------------------------------
Naked(WingsAddExcellentStatus) // -> 12 -> 005237AD
{
_asm
{
mov WingsAddExcellentStatus_Pointer, edx
}
// ----
if( WingsAddExcellentStatus_Pointer == ITEM(12, 43) || ( WingsAddExcellentStatus_Pointer >= ITEM(12, 180) && WingsAddExcellentStatus_Pointer <= ITEM(12, 185) ) )
{
_asm
{
mov WingsAddExcellentStatus_Buff, 0x005237b9
jmp WingsAddExcellentStatus_Buff
}
}
else
{
_asm
{
mov WingsAddExcellentStatus_Buff, 0x005238a4
jmp WingsAddExcellentStatus_Buff
}
}
}
//--------------------------------------------------------------------------
Naked(WingsAdd28Option) // -> 199 -> 00524578
{
_asm
{
mov edx, dword ptr ss:[ebp+8]
// ----
movsx eax, word ptr ds:[edx]
mov WingsAdd28Option_Pointer, eax
// ----
mov edx, dword ptr ss:[ebp-0x14]
mov WingsAdd28Option_NewOption, edx
// ----
mov cl, byte ptr ss:[ebp-0x10]
mov WingsAdd28Option_OptionValue, cl
}
// ----
//TDEBUG("[%s] Pointer: [%d:%d]", __FUNCTION__, WingsAdd28Option_Pointer / 512, WingsAdd28Option_Pointer % 512);
// ----
switch(WingsAdd28Option_Pointer)
{
case ITEM(12, 43):
{
if( (WingsAdd28Option_NewOption >> 4) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::WizardryDamage;
}
else
{
if( (WingsAdd28Option_NewOption >> 5) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::CurseSpell;
}
else
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue;
WingsAdd28Option_OptionNumber = eItemOption::HPRecovery;
}
}
}
break;
// --
case ITEM(12, 180):
{
if( (WingsAdd28Option_NewOption >> 4) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::WizardryDamage;
}
else
{
if( (WingsAdd28Option_NewOption >> 5) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::Defense;
}
else
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue;
WingsAdd28Option_OptionNumber = eItemOption::HPRecovery;
}
}
}
break;
// --
case ITEM(12, 181):
{
if( (WingsAdd28Option_NewOption >> 4) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::Damage;
}
else
{
if( (WingsAdd28Option_NewOption >> 5) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::Defense;
}
else
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue;
WingsAdd28Option_OptionNumber = eItemOption::HPRecovery;
}
}
}
break;
// --
case ITEM(12, 182):
{
if( (WingsAdd28Option_NewOption >> 4) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::Damage;
}
else
{
if( (WingsAdd28Option_NewOption >> 5) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::Defense;
}
else
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue;
WingsAdd28Option_OptionNumber = eItemOption::HPRecovery;
}
}
}
break;
// --
case ITEM(12, 183):
{
if( (WingsAdd28Option_NewOption >> 4) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::Damage;
}
else
{
if( (WingsAdd28Option_NewOption >> 5) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::WizardryDamage;
}
else
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue;
WingsAdd28Option_OptionNumber = eItemOption::HPRecovery;
}
}
}
break;
// --
case ITEM(12, 184):
{
if( (WingsAdd28Option_NewOption >> 4) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::Damage;
}
else
{
if( (WingsAdd28Option_NewOption >> 5) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::Defense;
}
else
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue;
WingsAdd28Option_OptionNumber = eItemOption::HPRecovery;
}
}
}
break;
// --
case ITEM(12, 185):
{
if( (WingsAdd28Option_NewOption >> 4) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::WizardryDamage;
}
else
{
if( (WingsAdd28Option_NewOption >> 5) & 1 )
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue * 4;
WingsAdd28Option_OptionNumber = eItemOption::CurseSpell;
}
else
{
WingsAdd28Option_OptionStat = WingsAdd28Option_OptionValue;
WingsAdd28Option_OptionNumber = eItemOption::HPRecovery;
}
}
}
break;
// --
default:
{
_asm
{
mov WingsAdd28Option_Buff, 0x0052463F
jmp WingsAdd28Option_Buff
}
}
break;
}
// ----
//TDEBUG("[%s] OptionNumber == %d", __FUNCTION__, WingsAdd28Option_OptionNumber);
// ----
_asm
{
mov edx, dword ptr ss:[ebp-0x10]
shl edx, 2
// ----
mov eax, dword ptr ss:[ebp+8]
xor ecx, ecx
// ----
mov cl, byte ptr ds:[eax+0x25]
mov eax, dword ptr ss:[ebp+8]
mov dl, WingsAdd28Option_OptionStat
mov byte ptr ds:[ecx+eax+0x2e], dl
// ----
xor edx, edx
mov dl, byte ptr ds:[eax+0x25]
mov cl, WingsAdd28Option_OptionNumber
mov byte ptr ds:[edx+eax+0x26], cl
// ----
add dl, 1
mov byte ptr ds:[eax+0x25], dl
// ----
mov WingsAdd28Option_Buff, 0x0052463F
jmp WingsAdd28Option_Buff
}
}
//--------------------------------------------------------------------------
Naked(WingsSetInvisibleEffect) // -> 12 -> 005EC31D
{
_asm
{
mov WingsSetInvisibleEffect_Buff, esi
// ----
mov ecx, dword ptr ss:[ebp+8]
mov esi, dword ptr ds:[ecx+0x30]
mov WingsSetInvisibleEffect_Pointer, esi
// ----
mov esi, WingsSetInvisibleEffect_Buff
}
// ----
if( WingsSetInvisibleEffect_Pointer == 0x1D89
|| WingsSetInvisibleEffect_Pointer == ITEM2(12, 182)
|| WingsSetInvisibleEffect_Pointer == ITEM2(12, 183) )
{
_asm
{
mov WingsSetInvisibleEffect_Buff, 0x005EC329
jmp WingsSetInvisibleEffect_Buff
}
}
else
{
_asm
{
mov WingsSetInvisibleEffect_Buff, 0x005EC39F
jmp WingsSetInvisibleEffect_Buff
}
}
}
//--------------------------------------------------------------------------
Naked(WingsAllowJewelsInsert) // -> 9 -> 007927BE
{
_asm
{
mov WingsAllowJewelsInsert_Buff, eax
// ----
mov eax, dword ptr ss:[ebp-0x30]
mov WingsAllowJewelsInsert_Pointer, eax
// ----
mov eax, WingsAllowJewelsInsert_Buff
}
// ----
if( WingsAllowJewelsInsert_Pointer == ITEM(13, 30)
|| (WingsAllowJewelsInsert_Pointer >= ITEM(12, 180)
&& WingsAllowJewelsInsert_Pointer <= ITEM(12, 185)) )
{
_asm
{
mov WingsAllowJewelsInsert_Buff, 0x007927dd
jmp WingsAllowJewelsInsert_Buff
}
}
else
{
_asm
{
mov WingsAllowJewelsInsert_Buff, 0x007927c7
jmp WingsAllowJewelsInsert_Buff
}
}
}
//---------------------------------------------------------------------------
Naked(WingsAddSpecialEffect) // -> 16 -> 00509621
{
//7e04 - äûì÷àòûé øàð
//7e6e - îãîíü
//7e22 - õðåíü âî âñå ñòîðîíû (íîðì äëÿ ñóììîíåðà), îò âîäû
//7e2c - ïóçûðèêè
//7e72(70) - äûì (êàê íà áö, îò îãíÿ)
//7e1f - ñòàíäàðòíàÿ
//7d02 - øàð
//7d30 - ìàëåíüêèå øàðèêè âî âñå ñòîðîíû[2]
//7d36 - êðóòÿøèéñÿ ñèíèé êîìîê õóéíè (äëÿ ñì êðûëüåâ íîðì)
//0 - ïîäñâåòêà
//1 - øàð ñî ñëåäîì
//2 - ñâåò
//7d48 - øàð, êàê 7d4d, òîëüêî ìèãàåò
//7d4d - êðàñíûé øàð ñî ñëåäîì (äëÿ áê êðûëüåâ íîðì)
//0 - ñòîëá
//1 - øàð ñî ñëåäîì
//2 - øàð ìåãàþùèé
//7d54 - áðûçãè êðîâè
//7d65 - äûì çåëåíûé â ðàçíûå ñòîðîíû
//7d66 - êîðè÷íåâûé ñëåä ïûëè
//7D69 - äûì (÷åðíûé)
//1 - ñëåä äûìà
//2 - â ðàçíûå ñòîðîíû
//7d71 - çâåçäî÷êè
//0 = ïîëîñêà çà òîáîé
//1 = ïî ìåíüøå
//7d77 - çâåçäî àóðà (äëÿ ýëüô êðûëüåâ)
//0 = òîëñòàÿ àóðà ñëåäóþùàÿ çà òîáîé
//1 = ìåëêèå çâåçäî÷êè (åëè çàìåòíûå)
//2 = ìåãàþùàÿ ïîäöâåòêà
//7d83 - àóðà èç øàðèêîâ[3]
//7dd6 - ïóçûðèêè
// ----
_asm
{
mov eax, dword ptr ss:[ebp+8]
mov esi, dword ptr ds:[eax+0x1c8]
mov WingsAddSpecialEffect_Pointer, esi
}
// ----
//TDEBUG("[%s] Pointer: [%d:%d]", __FUNCTION__, (ItemPointer - ITEM_INTER) / 512, (ItemPointer - ITEM_INTER) % 512);
// ----
if( WingsAddSpecialEffect_Pointer == ITEM2(12, 180) || WingsAddSpecialEffect_Pointer == ITEM2(12 * 161, 180) ) // Complete
{
_asm
{
MOV DWORD PTR SS:[EBP-0x1C], 0xC1D00000
MOV DWORD PTR SS:[EBP-0x18], 0x40A00000
MOV DWORD PTR SS:[EBP-0x14], 0x428C0000
// ----
PUSH 1
LEA EAX,[EBP-0x44]
mov WingsAddSpecialEffect_Arg7, eax
PUSH EAX
LEA ECX,[EBP-0x1C]
mov WingsAddSpecialEffect_Arg6, ecx
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP+0x0C]
MOV EAX,DWORD PTR DS:[EDX+0x1A4]
mov WingsAddSpecialEffect_Arg5, eax
PUSH EAX
MOV ECX,DWORD PTR SS:[EBP-0x34]
mov WingsAddSpecialEffect_This, ecx
mov WingsAddSpecialEffect_Buff, 0x004E171E
CALL WingsAddSpecialEffect_Buff
// ----
MOV ECX,DWORD PTR SS:[EBP+0x0C]
ADD ECX, 0x9C
mov WingsAddSpecialEffect_Arg4, ecx
MOV EDX,DWORD PTR SS:[EBP+0x0C]
ADD EDX, 0x1C8
mov WingsAddSpecialEffect_Arg3, edx
LEA EAX,[EBP-0x44]
mov WingsAddSpecialEffect_Arg2, eax
}
MU_SetEffect(0x7d36, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 0, 3.0, 0);
}
else if( WingsAddSpecialEffect_Pointer == ITEM2(12, 181) || WingsAddSpecialEffect_Pointer == ITEM2(12 * 161, 181) ) // Complete
{
_asm
{
MOV DWORD PTR SS:[EBP-0x1C], 0xC1D00000
MOV DWORD PTR SS:[EBP-0x18], 0x40A00000
MOV DWORD PTR SS:[EBP-0x14], 0x418C0000
// ----
PUSH 1
LEA EAX,[EBP-0x44]
mov WingsAddSpecialEffect_Arg7, eax
PUSH EAX
LEA ECX,[EBP-0x1C]
mov WingsAddSpecialEffect_Arg6, ecx
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP+0x0C]
MOV EAX,DWORD PTR DS:[EDX+0x1A4]
mov WingsAddSpecialEffect_Arg5, eax
PUSH EAX
MOV ECX,DWORD PTR SS:[EBP-0x34]
mov WingsAddSpecialEffect_This, ecx
mov WingsAddSpecialEffect_Buff, 0x004E171E
CALL WingsAddSpecialEffect_Buff
// ----
MOV ECX,DWORD PTR SS:[EBP+0x0C]
ADD ECX, 0x9C
mov WingsAddSpecialEffect_Arg4, ecx
MOV EDX,DWORD PTR SS:[EBP+0x0C]
ADD EDX, 0x1C8
mov WingsAddSpecialEffect_Arg3, edx
LEA EAX,[EBP-0x44]
mov WingsAddSpecialEffect_Arg2, eax
}
MU_SetEffect(0x7d4d, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 2.0, 1);
MU_SetEffect(0x7e6e, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 1.4, 1);
}
else if( WingsAddSpecialEffect_Pointer == ITEM2(12, 182) || WingsAddSpecialEffect_Pointer == ITEM2(12 * 161, 182) ) // Complete
{
_asm
{
MOV DWORD PTR SS:[EBP-0x1C], 0xC1D00000
MOV DWORD PTR SS:[EBP-0x18], 0x40A00000
MOV DWORD PTR SS:[EBP-0x14], 0x428C0000
// ----
PUSH 1
LEA EAX,[EBP-0x44]
mov WingsAddSpecialEffect_Arg7, eax
PUSH EAX
LEA ECX,[EBP-0x1C]
mov WingsAddSpecialEffect_Arg6, ecx
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP+0x0C]
MOV EAX,DWORD PTR DS:[EDX+0x1A4]
mov WingsAddSpecialEffect_Arg5, eax
PUSH EAX
MOV ECX,DWORD PTR SS:[EBP-0x34]
mov WingsAddSpecialEffect_This, ecx
mov WingsAddSpecialEffect_Buff, 0x004E171E
CALL WingsAddSpecialEffect_Buff
// ----
MOV ECX,DWORD PTR SS:[EBP+0x0C]
ADD ECX, 0x9C
mov WingsAddSpecialEffect_Arg4, ecx
MOV EDX,DWORD PTR SS:[EBP+0x0C]
ADD EDX, 0x1C8
mov WingsAddSpecialEffect_Arg3, edx
LEA EAX,[EBP-0x44]
mov WingsAddSpecialEffect_Arg2, eax
}
MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 3.0, 1);
MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 3.0, 1);
MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 4.0, 1);
MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 2.0, 1);
MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 1.0, 1);
MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 2, 2.0, 1);
MU_SetEffect(0x7d83, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 3, 1.0, 1);
}
/*else if( ItemPointer == ITEM2(12, 183) || ItemPointer == ITEM2(12 * 161, 183) ) //
{
_asm
{
MOV DWORD PTR SS:[EBP-0x1C], 0xC1D00000
MOV DWORD PTR SS:[EBP-0x18], 0x40A00000
MOV DWORD PTR SS:[EBP-0x14], 0x428C0000
// ----
PUSH 1
LEA EAX,[EBP-0x44]
mov Arg77, eax
PUSH EAX
LEA ECX,[EBP-0x1C]
mov Arg66, ecx
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP+0x0C]
MOV EAX,DWORD PTR DS:[EDX+0x1A4]
mov Arg55, eax
PUSH EAX
MOV ECX,DWORD PTR SS:[EBP-0x34]
mov This, ecx
mov Buff, 0x004E171E
CALL Buff
// ----
MOV ECX,DWORD PTR SS:[EBP+0x0C]
ADD ECX, 0x9C
mov Arg44, ecx
MOV EDX,DWORD PTR SS:[EBP+0x0C]
ADD EDX, 0x1C8
mov Arg33, edx
LEA EAX,[EBP-0x44]
mov Arg22, eax
}
MU_SetEffect(0x7d36, Arg22, Arg33, Arg44, 2, 0.5, 0);
}*/
else if( WingsAddSpecialEffect_Pointer == ITEM2(12, 184) || WingsAddSpecialEffect_Pointer == ITEM2(12 * 161, 184) ) // Complete
{
_asm
{
MOV DWORD PTR SS:[EBP-0x1C], 0
MOV DWORD PTR SS:[EBP-0x18], 0x41A00000
MOV DWORD PTR SS:[EBP-0x14], 0x428C0000
// ----
PUSH 1
LEA EAX,[EBP-0x44]
mov WingsAddSpecialEffect_Arg7, eax
PUSH EAX
LEA ECX,[EBP-0x1C]
mov WingsAddSpecialEffect_Arg6, ecx
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP+0x0C]
MOV EAX,DWORD PTR DS:[EDX+0x1A4]
mov WingsAddSpecialEffect_Arg5, eax
PUSH EAX
MOV ECX,DWORD PTR SS:[EBP-0x34]
mov WingsAddSpecialEffect_This, ecx
mov WingsAddSpecialEffect_Buff, 0x004E171E
CALL WingsAddSpecialEffect_Buff
// ----
MOV ECX,DWORD PTR SS:[EBP+0x0C]
ADD ECX, 0x9C
mov WingsAddSpecialEffect_Arg4, ecx
MOV EDX,DWORD PTR SS:[EBP+0x0C]
ADD EDX, 0x1C8
mov WingsAddSpecialEffect_Arg3, edx
LEA EAX, [EBP-0x44]
mov WingsAddSpecialEffect_Arg2, eax
}
MU_SetEffect(0x7D69, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 2, 0.5, 0);
}
else if( WingsAddSpecialEffect_Pointer == ITEM2(12, 185) || WingsAddSpecialEffect_Pointer == ITEM2(12 * 161, 185) ) // Complete
{
_asm
{
MOV DWORD PTR SS:[EBP-0x1C],0xC1D00000
MOV DWORD PTR SS:[EBP-0x18],0x40A00000
MOV DWORD PTR SS:[EBP-0x14],0x428C0000
// ----
PUSH 1
LEA EAX,[EBP-0x44]
mov WingsAddSpecialEffect_Arg7, eax
PUSH EAX
LEA ECX,[EBP-0x1C]
mov WingsAddSpecialEffect_Arg6, ecx
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP+0x0C]
MOV EAX,DWORD PTR DS:[EDX+0x1A4]
mov WingsAddSpecialEffect_Arg5, eax
PUSH EAX
MOV ECX,DWORD PTR SS:[EBP-0x34]
mov WingsAddSpecialEffect_This, ecx
mov WingsAddSpecialEffect_Buff, 0x004E171E
CALL WingsAddSpecialEffect_Buff
// ----
MOV ECX,DWORD PTR SS:[EBP+0x0C]
ADD ECX, 0x9C
mov WingsAddSpecialEffect_Arg4, ecx
MOV EDX,DWORD PTR SS:[EBP+0x0C]
ADD EDX, 0x1C8
mov WingsAddSpecialEffect_Arg3, edx
LEA EAX,[EBP-0x44]
mov WingsAddSpecialEffect_Arg2, eax
}
MU_SetEffect(0x7e22, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 2.0, 1);
MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 3.0, 1);
}
// ----
_asm
{
mov eax, dword ptr ss:[ebp+0x0c]
mov esi, dword ptr ds:[eax+0x30]
mov WingsAddSpecialEffect_Pointer, esi
}
// ----
if( WingsAddSpecialEffect_Pointer != 0x2b5 )
{
_asm
{
mov WingsAddSpecialEffect_Buff, 0x00509D2E
jmp WingsAddSpecialEffect_Buff
}
}
else
{
_asm
{
mov WingsAddSpecialEffect_Buff, 0x00509631
jmp WingsAddSpecialEffect_Buff
}
}
}
//---------------------------------------------------------------------------
Naked(WingsAllowListMove) // -> 7 -> 0078CB1B
{
_asm
{
mov WingsAllowListMove_Pointer, eax
}
// ----
if( WingsAllowListMove_Pointer == ITEM(13, 30)
|| (WingsAllowListMove_Pointer >= ITEM(12, 180)
&& WingsAllowListMove_Pointer <= ITEM(12, 185)) )
{
_asm
{
mov WingsAllowListMove_Buff, 0x0078CB59
jmp WingsAllowListMove_Buff
}
}
else
{
_asm
{
mov WingsAllowListMove_Buff, 0x0078CB22
jmp WingsAllowListMove_Buff
}
}
}
//---------------------------------------------------------------------------
void cWingsPropertiesLoad()
{
SetRange((LPVOID)0x0078CB1B, 7, ASM::NOP);
SetJmp((LPVOID)0x0078CB1B, WingsAllowListMove);
// ----
SetRange((LPVOID)0x00509621, 16, ASM::NOP);
SetJmp((LPVOID)0x00509621, WingsAddSpecialEffect);
// ----
SetRange((LPVOID)0x005EC31D, 12, ASM::NOP);
SetJmp((LPVOID)0x005EC31D, WingsSetInvisibleEffect);
// ----
SetRange((LPVOID)0x005158CF, 57, ASM::NOP);
SetJmp((LPVOID)0x005158CF, WingsAddCharSet);
// ----
SetRange((LPVOID)0x005EF99A, 28, ASM::NOP);
SetJmp((LPVOID)0x005EF99A, WingsHideExcellentGlow);
// ----
SetRange((LPVOID)0x005EB1B0, 19, ASM::NOP);
SetJmp((LPVOID)0x005EB1B0, WingsDisableLevelShine);
// ----
SetRange((LPVOID)0x00524578, 199, ASM::NOP);
SetJmp((LPVOID)0x00524578, WingsAdd28Option);
// ----
SetRange((LPVOID)0x005A9C08, 42, ASM::NOP);
SetJmp((LPVOID)0x005A9C08, WingsSetGoldName);
// ----
SetRange((LPVOID)0x005AED3E, 29, ASM::NOP);
SetJmp((LPVOID)0x005AED3E, WingsShowAdditionals);
// ----
SetRange((LPVOID)0x005AF897, 18, ASM::NOP);
SetJmp((LPVOID)0x005AF897, WingsShowDur);
// ----
SetRange((LPVOID)0x005AAA94, 6, ASM::NOP);
SetJmp((LPVOID)0x005AAA94, WingsHideExcellentStatusText);
// ----
SetRange((LPVOID)0x005239F1, 8, ASM::NOP);
SetJmp((LPVOID)0x005239F1, WingsAddLuckOption);
// ----
SetRange((LPVOID)0x005237AD, 12, ASM::NOP);
SetJmp((LPVOID)0x005237AD, WingsAddExcellentStatus);
// ----
SetRange((LPVOID)0x007927BE, 9, ASM::NOP);
SetJmp((LPVOID)0x007927BE, WingsAllowJewelsInsert);
// ----
SetHook((LPVOID)WingsRepairSprite, (LPVOID)0x0076BA9C, ASM::CALL);
}
#endif
I forget, the offsets are for main 1.03.25 Japan.Code:#pragma once
#ifdef CLIENT_0
typedef int (__cdecl *pSetEffect)(DWORD a1, DWORD a2, DWORD a3, DWORD a4, DWORD a5, float a6, DWORD a7);
extern pSetEffect MU_SetEffect;
void cWingsPropertiesLoad();
#endif
I hope this help you, good luck with your project.
About add new combination on Chaos Machine...
Can you lead me to a guide on how to do it?
please offset 1.04d of
thank you very muchCode:#define SetItemSpecialStat ((int(*)(short ItemID, int Arg2, BYTE SpecialOption, BYTE SpecialValue, int Arg5)) 0x5A6360) //5C0DC0 1.03Y+
#define oSetItemSpecialStat 0x005AF065 //005CA0B0 1.03Y+
sorry bad english
someone would have the offsets below to 1:02:19 JPN version? '-'
#define iLoadModel 0x00
#define iLoadTexture 0x00
// ----
#define iLoadModel_Call 0x00
#define iLoadTexture_Call 0x00
// ----
#define iLoadModel_Void 0x00
#define iLoadTexture_Void 0x00
Someone could post the source code for the server side?
is adding new wings in mu version 97 +99? has as I post a video showing how?
Hello. Julia Server Main 1.03 Eng works?
ellow guyz, how can i add new line in mix.bmd? coz im using MagicHand from DarkSim and cant do that, when i edit all cells, the section "Used Items" back to 0 (zero). i cant add itens =/
can anybody help me?
It is possible if you use Premium tool kit which is Cracked.
i tryied but dont have success =(
Since this is thread about New Wing, I would like to ask about the Custom Wing as well.
I am using zTeam season 6 ep3 source, added New Wing, no problem on visual but the Wing just show 0% for damage % increase and absorb, where can I edit that? I have added the option for New Wing in ObjAttack.cpp like below but in client, it still not show any rather than 0%:
For damage % increase:
else if( Wing->m_Type >= ITEMGET(12,180) && Wing->m_Type <= ITEMGET(12,183)) //Cloak + Wing Lvl 2.5
{
AttackDamage = AttackDamage * (Wing->m_Level*2 + 135) / 100;
}
For damage % absorb:
else if( Wing->m_Type >= ITEMGET(12,180) && Wing->m_Type <= ITEMGET(12,183)) //Cloak + Wing Lvl 2.5
{
if( Wing->m_Type == ITEMGET(12,180))
{
float damage = AttackDamage * (82 - Wing->m_Level*2) / 100.0f;
AttackDamage = (int)damage;
}
else
{
float damage = AttackDamage * (70 - Wing->m_Level*2) / 100.0f;
AttackDamage = (int)damage;
}
Have some problem too, i'm using main 1.04d. Anyone help?Quote:
Since this is thread about New Wing, I would like to ask about the Custom Wing as well.
I am using zTeam season 6 ep3 source, added New Wing, no problem on visual but the Wing just show 0% for damage % increase and absorb, where can I edit that? I have added the option for New Wing in ObjAttack.cpp like below but in client, it still not show any rather than 0%:
For damage % increase:
else if( Wing->m_Type >= ITEMGET(12,180) && Wing->m_Type <= ITEMGET(12,183)) //Cloak + Wing Lvl 2.5
{
AttackDamage = AttackDamage * (Wing->m_Level*2 + 135) / 100;
}
For damage % absorb:
else if( Wing->m_Type >= ITEMGET(12,180) && Wing->m_Type <= ITEMGET(12,183)) //Cloak + Wing Lvl 2.5
{
if( Wing->m_Type == ITEMGET(12,180))
{
float damage = AttackDamage * (82 - Wing->m_Level*2) / 100.0f;
AttackDamage = (int)damage;
}
else
{
float damage = AttackDamage * (70 - Wing->m_Level*2) / 100.0f;
AttackDamage = (int)damage;
}

