[Development] Change scene on character select state
Main Version: 1.4.4.0 (GMO)
Today I'lll teach you how to change the scene (map) on character selection. At the end you should get a result at the pictures below. :)
http://i46.fastpic.ru/big/2013/0511/...bb3297ed25.png
How do I find the thought of the right place, ask you?!
Quite simply, we know all that is drawn at the character selection scene, that is, the characters themselves, the character creation buttons, menu, connect, delete, a panel saying "Have fun playing Mu Online". Maybe it's certainly not all, but this is the first thing that catches the eye. For my purpose, I chose the Connect button and tried to find her in the client using the utility MST and I found her there, under the name (b_connect.ozt).
Now, start to search. (I assume that you have already opened your main.exe)
1) Right Click -> Search For -> All Referenced Text Strings
2) We are looking for string b_connect (do not forget to remove the check mark from case sensitive and set to the entire scope)
http://i48.fastpic.ru/big/2013/0511/...013c5da81e.png
The key moment on this picture is a ID 791F write it or remember.
3) In the main window press Right Click -> Search For -> All Constants -> Set 791F -> Try To Search
And, looking for places where are used this constant (791F)
In the new window, the result is first on the list (after selecting it you should see output similar to the following picture)
http://i48.fastpic.ru/big/2013/0511/...1f2cf5b336.png
4) Now we need go to the beginning of the function can be done by pressing the hotkey CTRL + "-"
http://i47.fastpic.ru/big/2013/0511/...f1c0cfac1b.png
Place the mouse cursor on the first command PUSH EBP to see a local call to this function and, accordingly, go to this address. Highlight Local call from 0xXXXXXX and right-click on the address and then -> Go To Call.
http://i48.fastpic.ru/big/2013/0511/...eed836cecd.png
5) Do again, step 4.
6) Change the value selected on the picture, that is 4A to 1 (save the whole thing and check accordingly).
http://i47.fastpic.ru/big/2013/0511/...0b441e7d00.png
As you may have guessed, this value is the number of the map.
To make sure that you did everything right at the end of the function must be visible string Character Scene Init Success.
Good Luck!
Credit: Me Aka Brain
re: [Development] Change scene on character select state
re: [Development] Change scene on character select state
caothuphutho my server have new wings custom fix. you have effect for custom wings?
sorry off the subject of the post :S
re: [Development] Change scene on character select state
Quote:
Originally Posted by
VeltonD
caothuphutho my server have new wings custom fix. you have effect for custom wings?
sorry off the subject of the post :S
i dont have source effect for custom wing. i need use source effect custom wing share by -=darksim=-
Code:
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
}
}
}
re: [Development] Change scene on character select state
caothuphutho: can you share fix charsets wings in gs .87?
re: [Development] Change scene on character select state
already have posted corrections of visual bug in gs 1.00.90
re: [Development] Change scene on character select state
This will work not with all maps. On some maps, characters will apear in textures. To fix this, you have to change coordinates of all characters position, camera position.
re: [Development] Change scene on character select state
Quote:
Originally Posted by
profesor08
This will work not with all maps. On some maps, characters will apear in textures. To fix this, you have to change coordinates of all characters position, camera position.
Yep for fix bad locations u will need change coord for position :)
re: [Development] Change scene on character select state
Is there any possible way to do that on season 2 clients? 1.02c
thank u .
re: [Development] Change scene on character select state
Quote:
Originally Posted by
GanjaMUOnline
Is there any possible way to do that on season 2 clients? 1.02c
thank u .
Yea take main 1.04D (eng) & your 1.02C & research offset / compare code using Ollydbg & test :)
anw i downloaded main 1.2.3.0 from your topic ganja repack & did 5 min research (alot of things changed since s2) anw i can't test live atm.
Try go to offset (using OllyDbg ofc xD) 006B0522 and change 36 to 1 :D then
a) Copy -> Select ALL
b) Copy to Executable -> Selection
c) Save File
Test & tell me result xD
re: [Development] Change scene on character select state
hey ,
sure it works thanks but i think we need to change the coord's cus the place is very random if u have any idea i would be pleased.
never mind i found out its the code in the line [7A4CD0J] gotta test coords and changing till it become on the correct path.
Thanks.
re: [Development] Change scene on character select state
Quote:
Originally Posted by
GanjaMUOnline
hey ,
sure it works thanks but i think we need to change the coord's cus the place is very random if u have any idea i would be pleased.
never mind i found out its the code in the line [7A4CD0J] gotta test coords and changing till it become on the correct path.
Thanks.
It's responsible for map preview, i didn't look for camera view switch offset <lazy>.
anw if someone want Chaos Castle Character Select Screen use Number "13" :D
http://i44.tinypic.com/9glf7r.jpg
re: [Development] Change scene on character select state
Quote:
Originally Posted by
4FUNer
It's responsible for map preview, i didn't look for camera view switch offset <lazy>.
anw if someone want Chaos Castle Character Select Screen use Number "13" :D
http://i44.tinypic.com/9glf7r.jpg
hehe the chaos castle is crazy thing :)
can u do research or find out what the coodrinates offset are ?
im searching here for about an hour but i dont think the offset u gave me includes any coords.
Thanks
re: [Development] Change scene on character select state
Quote:
Originally Posted by
GanjaMUOnline
can u do research or find out what the coodrinates offset are ?
im searching here for about an hour but i dont think the offset u gave me includes any coords.
Thanks
Because
Quote:
Originally Posted by
Kernighan
Today I'lll teach you how to change the scene (map) on character selection.
Mr.Kernighan didn't shared way to change position on character select screen, but change map :P
Anw sorry i don't have time to do boring research of where main store default position.
Try ask Kernighan maybe he found it.
ps: after following call responsible for loading map, i found out select server map is loaded in same way :D
Check karli on your 1.02C (006B0F7F & change 37)
on newest mains, ofc require more changes xD
re: [Development] Change scene on character select state
Quote:
Originally Posted by
4FUNer
Because
Mr.Kernighan didn't shared way to change position on character select screen, but change map :P
Anw sorry i don't have time to do boring research of where main store default position.
Try ask Kernighan maybe he found it.
ps: after following call responsible for loading map, i found out select server map is loaded in same way :D
Check karli on your 1.02C (006B0F7F & change 37)
on newest mains, ofc require more changes xD
I Know i did tested it , hopefuly Kernighan will provide us details on what about Coordinates which is more important thing :)
cheers.