Welcome!

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!

[Development] Change scene on character select state

Newbie Spellweaver
Joined
Apr 6, 2013
Messages
35
Reaction score
62
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. :)

Kernighan - [Development] Change scene on character select state - RaGEZONE Forums


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)



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)



4) Now we need go to the beginning of the function can be done by pressing the hotkey CTRL + "-"



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.



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).



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
 
Last edited:
Junior Spellweaver
Joined
Dec 14, 2007
Messages
150
Reaction score
146
work 100% thank you !

 
Junior Spellweaver
Joined
Feb 13, 2013
Messages
193
Reaction score
70
caothuphutho my server have new wings custom fix. you have effect for custom wings?
sorry off the subject of the post :S
 
Junior Spellweaver
Joined
Dec 14, 2007
Messages
150
Reaction score
146
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
		}
	}
}
 
Newbie Spellweaver
Joined
May 3, 2013
Messages
29
Reaction score
10
caothuphutho: can you share fix charsets wings in gs .87?
 
Newbie Spellweaver
Joined
Jan 9, 2009
Messages
68
Reaction score
2
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.
 
Custom Title Activated
Loyal Member
Joined
Dec 5, 2009
Messages
2,657
Reaction score
1,178
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
 
Last edited:
Joined
May 26, 2009
Messages
17,308
Reaction score
3,219
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.
 
Last edited:
Custom Title Activated
Loyal Member
Joined
Dec 5, 2009
Messages
2,657
Reaction score
1,178
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

Kernighan - [Development] Change scene on character select state - RaGEZONE Forums
 
Joined
May 26, 2009
Messages
17,308
Reaction score
3,219
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

Kernighan - [Development] Change scene on character select state - RaGEZONE Forums

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
 
Custom Title Activated
Loyal Member
Joined
Dec 5, 2009
Messages
2,657
Reaction score
1,178
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

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
 
Joined
May 26, 2009
Messages
17,308
Reaction score
3,219
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.
 
Junior Spellweaver
Joined
Feb 13, 2013
Messages
193
Reaction score
70
I Use the olly just to catch offsets, and make changes for dll. I have already put the World75 & Object75 and changed the value of the variable to 4A [74 Dec]. The coordinates would be to manipulate the chars where it had only that
 
Newbie Spellweaver
Joined
Jun 18, 2011
Messages
12
Reaction score
0
Can you do some Character Selection like from EX700?

Thanks in advance..
 
Back
Top