- Joined
- Feb 13, 2013
- Messages
- 193
- Reaction score
- 70
Wings add Char need MakerPreview
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature currently requires accessing the site using the built-in Safari browser.
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;
}