- Joined
- Feb 13, 2013
- Messages
- 193
- Reaction score
- 69
Wings add Char need MakerPreview
Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!
Join Today!Wings add Char need MakerPreview
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
Code:#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
Wings.h
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 forget, the offsets are for main 1.03.25 Japan.
I hope this help you, good luck with your project.
#define SetItemSpecialStat ((int(*)(short ItemID, int Arg2, BYTE SpecialOption, BYTE SpecialValue, int Arg5)) 0x5A6360) //5C0DC0 1.03Y+
#define oSetItemSpecialStat 0x005AF065 //005CA0B0 1.03Y+
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;
}