Vagrant0 Posted December 27, 2007 Share Posted December 27, 2007 I'm working on a project thats best described as a cross between an Oblivion MOD and a stand alone app that interfaces with Oblivion while its running. My goal is to be able to insert, delete, alter, and modify objects within the game world from a external application. I will also need to retrieve or record in-game player actions (im walking, dropped this object, etc). At first I thought I could do this using scripts, e.g if I wanted an apple have my application trigger a 'make an apple' script. I came to the conclusion that although this would work, theres just too much stuff going on to script each and every action. I'm relatively new to programming, but can find my way around C++, albeit at a basic level. My understanding is the best way to go about this would be to find the area of memory that stores the active game world and alter that to suit my needs. Does anyone have any advice on how I would go about this, or suggestions on an alternate method? Any help would be greatly appreciated!I would assume that since you're trying to go with the "no script approach" that something like OBSE wouldn't do it for you. Do you know why there aren't many people who use hex editors when games are running? Atleast newer games? This is because it takes alot to search through memory to find a specific entry, especially when there is alot of memory being used. Usually by the time you find out what address something is at, that thing is no longer what you were looking for. Additionally, atleast with newer games, some sections of where things are do not remain constant. So what allowed you to have an unending amount of money in one game may cause total havok the next time around due to the information being tracked in a different place and something else being where you're editing. This is especially true with items since the aspects involved with a single item are not handled in any one place. You have entries which determine the basic attributes of all items of that kind (maximum health, value, enchantment, charges, all the stuff that is done in the CS), and then you have entries which control values specific to that item (durability, enchantment, charges, ownership, position in cell, cell in world, rotation, everything which is subject to change). Additionally, anything which is placed in a container loses some of that specific information, including its specific reference ID. This means that you really cannot create an apple outside a container, you would only be able to move where one already outside is. You would however be able to change the quantity of apples inside the container, once you found out which container it was. Needless to say, just doing it for something very simple, like an apple, would be a very complicated process and probably require many hours sorting through memory just to find the apple you're currently staring at (nevermind all the other ones in the world). I would imagine the game's form IDs to be less than accurate since these were probably designed primarily for internal tracking only. If all you're after is some way to spawn items while in game, console is really the only way to go. Most scripting functions can be run through console, so if you know those functions, and what you are doing can be called in a single line, you can do pretty much everything through console. Unfortunately, console doesn't allow copy and paste, and as far as I know, no program can initiate anything through console, or even make text appear without someone actually typing it. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.