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!

How to unlock camera movement on custom maps.

Elite Diviner
Joined
Jul 27, 2009
Messages
478
Reaction score
411
This is a little tutorial on how to edit your cabalmain to allow free camera movement, just like in the normal maps like Bloody Ice up until Pontus Ferrum, on new maps you would add f.e. Porta Inferno and/or Arcane Trace. It's been over a year since I've modified this so there might be a mistake somewhere.

Required:
  • OllyDbg
  • Knowledge about the basics on using OllyDbg
  • Preferably previous codecave experience

Section & More info
Open OllyDbg and go to address 0x489CEE and you'll see this (without the comments of course).
Olly - How to unlock camera movement on custom maps. - RaGEZONE Forums

Now what happens here is just a couple of comparing of values and jumps to the correct code section that will take care of the rest of the work. Before that the WorldID has been moved into the EAX register.
Code:
CMP EAX, 0A
JLE 00489DAA
Here the WorldID is compared to 0Ah(10) which is the last WorldID in the EP2 client, Pontus Ferrum. Now if the WorldID is below or equal to 0Ah(10) then a jump (JLE = Jump if Less or Equal) will be made to 00489DAA where the rest of the code takes care of setting up the camera. These two lines will enable Free camera movement on the following maps.
  • Bloody Ice
  • Desert Scream
  • Green Despair
  • Port Lux
  • Fort Ruina
  • Undead Ground
  • Forgotten Ruin
  • LakeSide
  • Mutant Forrest
  • Pontus Ferrum
If the WorldID would happen to be higher like when you're in a dungeon it would not jump and just continue on to the next CMP.

Code:
CMP EAX, 0F
JE 00489DAA
This checks if the WorldID is 0Fh(15) which is normally the waiting area for Tierra Gloriosa. If EAX is 0Fh(15) then a jump will be made to 00489DAA.(Jump if Equal)

Code:
CMP EAX, 0A
JE SHORT 00489D79
If the WorldID is 10h(16) which is Tierra Gloriosa it will jump to 00489D79.(You get the point ...)

Code:
CMD EAX, 14h
JE 00489DAA
And the last check for WorldID = 14h(20) which should be Chaos Arena.

Now how to add a check for your new maps.
The easiest way would be to increase the first check, CMP EAX, 0A. If you put Porta Inferno on WorldID 11 and Arcane Trace on 12 then you can set CMP EAX, 0A to 0C and you shoud be finished.

But for those who put them on different WorldID's you can replace the last CMP EAX, 14 with a JMP to an address where you have some room to add some extra comparisons. (The address I jumped to is not ideal, it's best you search for a bigger area.)
Olly2 - How to unlock camera movement on custom maps. - RaGEZONE Forums

At the new section you then first add CMP EAX, 14 and JE 00489DAA. Then you can add a new CMP EAX, [your WorldID] and JE 00489DAA. At the end of the new comparisons you're making you need to make sure you also jump back correctly if the WorldID fits none of those checks so add JMP 00489D12 as the last line in your little codecave.

Here's a little example of what it could look like:
Code:
**JUST AN EXAMPLE**
CMP EAX, 0A
JE 00489DAA
CMP EAX, 15   WorldID 21 = Porta Inferno
JE 00489DAA
CMP EAX, 18   WorldID 24 = Arcane Trace
JE 00489DAA
JMP 00489D12
**JUST AN EXAMPLE**

The Addresses
  • 0x489D12 -> Restricted Dungeon camera
  • 0x489D79 -> Tierra Gloriosa camera
  • 0x489DAA -> All camera types allowed, Free camera
I haven't messed around with the different values you can see in OllyDbg (f.e. FLOAT 150.00 at 0x489D12). Maybe if you fiddle a bit with the values at those addresses you might change different aspects like how far you can zoom out.

I hope this is clear enough, good luck. ;)
Speedy
 

Attachments

You must be registered for see attachments list
Skilled Illusionist
Joined
Jan 5, 2009
Messages
343
Reaction score
391
there might be a mistake somewhere

it's workin' fine :)


btw:

0x007E4744 = float 150.00 -> max zoom in
0x007E4828 = float 1250.00 -> max zoom out for TG camera
0x007E46C8 = float 1600.00 -> max zoom out for free camera

i've messed with it a bit, and the only bug, that i didn't try solving since i have no use for extra zoom is: when you zoom out too far, if you keep zooming past the limit, it snaps the camera back to the original zoom out max value, so if you want extra zoom out try figuring out why it does that :)
 
Junior Spellweaver
Joined
Jan 20, 2009
Messages
147
Reaction score
56
Thx Work fine!!
But some bug ingame cash shop
click in the game shop botton work Xtrap and close game

im fix
CMP EAX, 0A =>CMP EAX, 20

someone have solution this bug?
 
Elite Diviner
Joined
Jul 27, 2009
Messages
478
Reaction score
411
Thx Work fine!!
But some bug ingame cash shop
click in the game shop botton work Xtrap and close game

im fix
CMP EAX, 0A =>CMP EAX, 20

someone have solution this bug?
So your game closes when you use the ingame cash shop? Did this happens before or after this edit?
 
Junior Spellweaver
Joined
Jan 20, 2009
Messages
147
Reaction score
56
anytime use ingame cash shop work X-trap after edit CMP EAX, 0A =>CMP EAX, 20
 
Junior Spellweaver
Joined
Jul 25, 2008
Messages
187
Reaction score
50
Speed does ep8 374 main load the camera like ep2 main and if is yes can u provide the offset in ep8 main ?
 
Elite Diviner
Joined
Jul 27, 2009
Messages
478
Reaction score
411
Speed does ep8 374 main load the camera like ep2 main and if is yes can u provide the offset in ep8 main ?

Nope it's probably done differently, I haven't looked into that for EP8 yet but I would use cheatengine to find camera values. I'd start by setting camera to free and searching for an 'unknown initial value'. Then I'd change my camera mode to something else and search for a 'changed value'. Rinse and repeat until I have only a few addresses left. It's also good to do some 'unchanged value' searches before switching to another camera mode again to get rid of some addresses.

Hope this helps out someone who's willing to do some messing about ;)
 
Experienced Elementalist
Joined
Feb 17, 2015
Messages
263
Reaction score
119
it's workin' fine :)


btw:

0x007E4744 = float 150.00 -> max zoom in
0x007E4828 = float 1250.00 -> max zoom out for TG camera
0x007E46C8 = float 1600.00 -> max zoom out for free camera

i've messed with it a bit, and the only bug, that i didn't try solving since i have no use for extra zoom is: when you zoom out too far, if you keep zooming past the limit, it snaps the camera back to the original zoom out max value, so if you want extra zoom out try figuring out why it does that :)

Did you find any solution to this?
 
Back
Top