See likes

See likes given/taken

Your posts liked by others

Pages: [1] 2 3 ... 6
Post info No. of Likes
[Fixed - persists in 3.60] Infinite Skill Points Glitch Hovering over the F1 to launch encyclopedia button while pressing - on the number pad increases skill points, pressing + does not decrease skill points, also increases the black transparent overlay with each keypress until focus over the button is lost.


November 12, 2019, 04:56:34 AM
[Outdated][3.71][3.63][3.62] URWCharacterMenu v1.0.4b [Outdated][3.71][3.63][3.62] URWCharacterMenu v1.0.4b

Ancient cheat menu I've been working on for the past couple of year's, noticed a lot more people playing since steam release and decided to create something more user-friendly than manually using cheat engine.

Warning: When using the injury editor, make sure your injuries are valid when adding new ones (type, severity, location, damage, side) as I have not added error checking for incomplete injuries, and they do cause a game crash when viewed.



Injury Editor:

Map tab:


Console commands:
  • ~ key - Opens console. Must have Unreal world focused.
  • /tpadd waypointname - Adds a waypoint at your current location to your characters waypoint file.
  • /tpdel waypointname - Removes a waypoint from your waypoint list.
  • /tp waypointname - Teleports to a saved waypoint.
  • /tp x y - Teleports to X Y map location.
  • /tpclick - Toggles localmap left-click teleportation, must be zoomed in. (when you reach map render edge, you must move manually to update the map)
  • /dirclick - Toggles ability to right-click on a direction to face it.
  • Skill & Attribute Editor
  • Stats Editor
    • General Stats (Hunger, Thirst, Nutrition, Energy, Carry Weight, Temperature, Fatigue)
    • Cosmetic/Identity Stats (TribeID, Weight, Height, Phobia, Physique, Gender)
    • Additional values (Starting XY location, Current XY location, Time of day, Starting skill points)
  • Injury Remover
  • Injury Editor
  • X-Ray Vision
  • Inventory Editor
    • Item ID - Changes the item to another one.
    • Quantity - Changes how many of these items you have in your inventory.
  • Name & TribeName customization
  • Teleportation
  • Local-map Onclick teleportation
  • Onclick direction changing
  • Teleport waypoints (example: /home)
  • Map tab
    • Render map - Renders game map, saves as image file.
    • Zoomed - Toggles zoom mode.
  • Tutorial/Goal changer
Future goals:
  • Item Editor
  • NPC Spawner
  • Fast Build/Task
  • Tile Editor
  • Game file exploits
  • Overlayed UI
  • Github repo
  • Save and load character settings
  • Load default items into characters .obj file
  • Adding / Removing rituals
  • Skill increase proficiency
Version History:
  • v1.0.4b - Added patch to remove checksum error message; Updated to 3.71.
  • v1.0.4 - Updated to 3.70 for steam users, forgot to do standalone for 3.63 (so use 3.62 I guess), added textilecraft to skill list.
  • v1.0.3c - Updated to 3.63 for steam users, 3.62 added for standalone users.
  • v1.0.3b - Fixed bug in injury editor, added Last tutorial/goal changer, condensed character page for a little more space, added map rendering/viewing on map tab
  • v1.0.3 - Updated to 3.62 for steam users, added injury editor
  • v1.0.2b - Revised inventory editor code and (hopefully) patched all bugs, fixed bug with text encodings, upgraded version checking substantially. Other forgotten minor-bug fixes.
  • v1.0.2 - Fixed bugs with saving/loading waypoints, fixed multiple bugs in inventory editor and improved functionality, added injury remover, added xray-vision, fixed version checking
  • v1.0.1b - Fixed multiple bugs in inventory editor, added button to add new items to inventory, added version checking
  • v1.0.1 - Added console, inventory editor, time of day, skill points, various console commands, various bug fixes, item ID scraper
  • v1.0.0 - Initial release

Please report any bugs to me via this thread, my PMs, or contact me directly on steam:

Download attached to thread.

   Night - Creator/Programming.
   Jiggie - Item ID assistance, assembly injection.
   Boomer/Jagsy - Game save files for referencing.
   Strix - Trigonometry for changing directions w/ mouse.
   Enormous Elk - Unreal world.
   Stefan - Testing.
   thefinn777 - Identifying and mapping cultural & tile map addresses and data.

Requires Microsoft .NET Version 4.6 or later. (Usually already installed)

November 12, 2019, 06:49:07 AM
Re: Any active modders?
Quote from: aat
I think that's great that you are delving into memory editing of URW.

We need to think what are the main limitations of the current system and what memory editing can do.

One current limitation is that not all object properties can be set in the txt files. I'm thinking of
  • Accuracy
  • Works as a ski stick
  • Works as a beater
And many other hidden properties.

I can access a bunch of these, its just a matter of documenting them and then combining them properly w/ or w/o an official mod, possibly making some sort of interpreter to read the mod files for custom script to apply could be a project.

Quote from: aat
Ingredient matching is based on names or object property inheritance. If you inherit from "Club", your object will match the "Beater" ingredient; or if you inherit from "Northern spear" you will be able to use the object as a ski stick.

Would be nice to have direct control of these hidden properties, and even define new ones, so that we are not limited to name matching.

Some of these are directly tied to other areas of code/data within the game, in particular I noticed I wasn't able to find some herb effects while documenting herb addresses in the item struct, I noticed that they changed when i edited some of the strings to a different base herb, probably indicating the default values are hardcoded or stored elseware, currently I've just been looking at CharacterName.OBJ file which contains the data for objects the game has generated over play time, the default object list is CONSTANT.OBJ, which could contain the data, but I haven't gotten around to looking at this in more detail as I'm mostly still documenting other objects generated by the game, some of which aren't included in CONSTANT.OBJ such as corpse's and different states of hides/meat cuts from cooked to uncooked, soaked hides, tanning hides, etc. There are some flags for weapons, but I haven't identified them with certainty, my best guess is some sort of identifier as to weather the weapon damages hides or not when used, but I haven't verified this, only a conclusion based on a comparison of weapons which lacked the value seemed to be non-edge based weapons. I don't have a Northern spear in my characters data so I'm not able to compare that currently, but if anyone would like to donate game files for research purposes I could certainly use them, as I want to have multiple comparisons of data files for the best estimate as to what data is what, additionally many people have far more progress than me in the game and generally have more save data to work with. I can also provide modified versions of files for testing purposes if someone would like to help me in documenting the effects of the data changes. Lot's to talk about on the subject of data and files, would be better to talk about it over IM.

Quote from: aat
A concrete example would need having a [TAG:property1] syntax, to assign to a object, and then being able to require such type of ingredient with the {[TAG:property1]}. Much more diversified and streamlined recipes.
But I'm not sure if this would really be feasible only with memory editing

You'll have to explain what you mean here better, I'm not sure what kind of limitations I have when it comes to recipes yet, I could possibly learn more by tracking a mod's recipe data (if i can find it), but I'm not familiar with the actual official modding syntax yet so I'd be shooting in the dark for a little while (not even sure how to install an official mod yet aside from copying over the main files? lol).

Quote from: aat
Some other limitations are intrinsic to the recipe system. For example, you can make only one type of object at a time (no multiple products from a single recipe).

This is probably possible to do with relative ease.

Quote from: aat
Another limitation is that we can't add new buildings.

This along with NPCs, terrain, possibly some other types of data may be possible to manipulate (in theory, likely) its only a matter of documenting the data and the addresses in memory. What this means to me is,

A. I need to know what I'm looking for in terms of what numbers I'm trying to find (for example, an item on the ground has an X Y location in memory).

B. The data needs to be editable, and the edit needs to create the desired effect to be a feasible modification (I edit the X Y location of an item on the ground, it teleports to the edited location, I now have the power to use this as an "action" for a mod, or as a "condition", such as determining if a particular item is at a particular location to trigger some other "action")

Usually, when I'm looking for a particular piece of data, other data relating to the object is also close by in memory, so finding one thing can lead to indications of other things within the data (hence documenting the item struct)

This is the main limitation of what I can do, I am nowhere near close to the best memory-editor's out there, as there are many other people who can manipulate sections of assembly code to change the way the game functions entirely, most of what I do is reliant on changing data that the code interacts with to produce the desired effects. I can do other hacky workarounds with C# and manipulation of the data and using C# code to create some hacky effects, but this can be hard to get stable (for example, I have created a feature for my next update of URWCharacterMenu that allows you to click on a tile, and teleport to it. I was unable to add support for zoomed-out views however, though it is probably possible the math required to do it is beyond what I'm willing to figure out to fix a minor inconvenience).

Quote from: aat
Finally, if memory editing really enables more modding possibilities, they would be limited only to the windows platform, right?

My app in particular would be limited to windows yes. I'm not familiar enough with other operating systems to say yes or no on their limitations, I do know their op-codes tend to be different, so it would be a matter of weather they have memory editing support for their operating system + a matter of re-documenting the data for that particular operating system, I think anyways. The data itself should be similar, so the methods for finding and documenting the data should be similar, I think. If anyone using linux or ios (if that's even supported, gosh I'm so ignorant!) wants to experiment on their side with this, I would be happy to provide the methods in which I have found my addresses, but they would be starting nearly from the ground up as far as creating an app that can read/write to memory, and the actual design of the app (be it a standalone mod or something that can interpret custom mod files to enable a richer scripting environment for that particular OS) Just my thoughts, I could be completely wrong.

Quote from: aat
Anyway, I'm currently working on a mod, which is an evolution of caethan self sufficiency mod.

I'm not really a pixel artist, so I'm ignoring all the custom sprites for now and just focusing on the recipes themselves. I was planning at the end to slowly and painfully do the artwork with gimp, but if you can make the icons instead it would be great!!!

Funny I was just looking at caethan's mod files the other day, admiring his work and efforts. I would defiantly be up for this, if you wanna chat more about it we can hookup on IM and get a workflow going on my side.

I'll be updating the main thread with some contact info, and I'm considering opening up a group chat on discord or somewhere else to get at least some connections/conversations started, forums are great for long, clear, thoughtful thinking but this is closer to sending a letter than having a conversation where our ideas can evolve at a more rapid pace.

Also just wanted to throw it out there, the more things we can get documented in memory, the higher the chances are someone (maybe myself, maybe someone else) can make things like map editors and tools not currently available, however the line is drawn where-ever the Enormous elk team decides to draw it, making mods to enhance the game is one thing but we need to respect the creators wishes as to what they want made publicly available, being that the game isn't inherently pay to play (protection wise, I believe), I don't want to be the guy creating tools that will create a run away effect where the game is effectively used as an engine, rather than enjoying and expanding its original content. It would be a dishonor to this games development history and DECADES of continuous passion from the developers, and for most of you this probably doesn't seem like it's a big deal, but I've developed and been apart of communities of developers and modders for several different games over many years, and I can tell you from experience, modifying memory can be fun, creative, innovative, and an overall enjoyable experience for everyone, but it can also ultimately, destroy an app from its core, for its developers and users. Most people are familiar with this experience in the form of multiplayer game cheats, such as aimbot and ESP in the case of FPS games, but there are many dangerous ideas that can be executed using reverse engineering processes which can have a longer lasting negative impact, It's only a matter of imagination and code. Just my two cents on it.

edit2: Spent a good amount of hours starting a guide on using cheat engine, should give anyone who wants a swing at it a good chance to succeed. I'll be posting it when I have completed it.

December 03, 2019, 12:55:09 PM
[Guide] Modding with Cheat Engine Overview:
Hello all, this is going to be a guide on modifying the game with cheat engine, its a pretty common guide found among other games but I figured I'd give my go at it for URW seeing as there isn't much activity in regards to finding new addresses for the game, maybe we can spark up someones imagination! We'll be nose diving straight into it so make sure you've got your head ready for the use of good'ol numbers (yuck!) and the motivation to imagine what treasures hide within :).

note: this guide based on Windows, Linux and ios users experience may differ.

The Guide:

~ removed table of contents, anchors were buggy.

Setting up Cheat Engine:

Step 1: Required files
Make sure you have the required files installed and administrative permission, essential to completing this guide successfully:
note: You can choose to use another memory editor, there are many other options available aside from cheat engine, but in this guide I will be using cheat engine, features in cheat engine may or may not exist in alternatives, I will be using Cheat engine v6.7, most versions are identical but if you have any issues following along, post below.

Step 2: Run
If you haven't done so already after acquiring the required files, run both the game and cheat engine with administrative privileges
(we don't want annoying permission troubles)

This is what your screen should look like: (resize cheat engine to be comfortable)
Spoiler: Image 1 • show

Step 3: Select target
Now that we have both programs open, we need to select what program cheat engine is targeting. This applies for any program you are attempting to modify with cheat engine.

Directions for the labeled figures in the image below:
  • Click this button, this will open the process list of target-able applications
  • This indicates the type of process you are trying to target, luckily for us unreal world should be located under the default applications tab.
  • Select UnReal World from the process list
  • Click 'Open'
Spoiler: Image 2 • show

If you followed the instructions correctly, cheat engine should be attached to the game and we are ready to start using it.
This is what you should see on cheat engine to indicate you have attached to a process: (the handle, 000021FC, is run-time dependent and will not be identical)
Spoiler: Image 3 • show

Using Cheat Engine:

Step 1: Understanding what the tool does
It's important to understand what exactly you're looking at when you use this tool, so I'm going to try to give you a short description over each feature we will be using and its function. I am not a grandmaster when it comes to this stuff, so there are many advanced features I have no qualification in covering, we won't be going over these, but there are many powerful features that can improve and speed up the process of using cheat engine successfully.
  • The search bar
    Spoiler: show
    This is where the hunt begins, this is where you're going to hypothesize, scan, sort, and mathematically eliminate addresses through the games data to find what you're trying to edit. Anything you put in this box, cheat engine is going to give you every instance of that data point within the game. If you scan for a value of 1, you're going to get every single address that contains the value 1. This will occur on every "First Scan", as you are looking for addresses with an initial starting value, when using "Next Scan", the addresses from the last scan you did will have all of their previous values from the time of that scan, compared to the values they currently hold. Depending on your sorting condition, (which will be explained in B.) your list of addresses will filter certain addresses out of the list, leaving you with less and less addresses. Eventually the idea is, you can isolate the address that represents the specific value for the specific feature you are trying to change, and then use it. When you think you've found your address, or potentially think the address is not located within your current list of addresses, you can click the "New Scan" button, which will clear your current table of search addresses and start you from a fresh first scan, you will likely do this when you are unable to find the address you are looking for from the table, which can occur for a number of sorting-related reasons, or by just simply not searching for the right number.

    note: The checkbox labeled "hex" indicates what format of numeral you're scanning as, if you enable this the values you input will be based on the hexadecimal system, rather than the decimal system. It's useful to know hexadecimal so you should read more about it here: there will probably be a mention of it later when we get to using addresses.
  • Scan Type & Value Type
    Spoiler: show
    In short, scan type and value type are going to determine how your address's are presented to you and read by cheat engine, and how they're going to be sorted between each scan.

    For the scan type, there are several different values you can choose from depending on what stage of the scanning process you're in and the value type:
    Spoiler: show

    The value type however is the type of data you are trying to find, to your best knowledge. Often values are reduced to their smallest value type by developers to reduce size, and increase the efficiency of the code:
    Spoiler: show
    To get the best results, you want to try to reduce your value type to the lowest type possible based on the information you know about your target address, this will ensure your scan picks up the address correctly when it makes the comparison, instead of potentially reading too many bytes. Here is a short list of the value types, their minimum and maximum values in hex and decimal, and some examples, but you should probably read up more on these if you want to have a good understanding of their uses and what to expect from the address you're trying to find:
    • Byte: Hex: 0x00, 0xFF   Dec: 0, 255   Examples: Attribute level, Skill level, State variables (running, jogging, walking, crawling), etc.
    • Word (2 Bytes): Hex: 0x0000, 0xFFFF   Dec: 0, 65535   Examples: Object IDs, Object Quantities, Ammunition, Network ping, etc
    • Dword (4 Bytes): Hex: 0x00000000, 0xFFFFFFFF  Dec: 0, 4294967295  Examples: Score, Object Quantities, Currency, ARGBColor, Idle Games
    • Float: Float: 1.175494351 E-38, 3.402823466 E+38   Examples: Weight, Physics variables (Gravity, multipliers), Vehicle speed, % based variables
    • String: Text: 0, Buffer Length   Examples: Player Name, NPC Name, Object Name, Month, Day, etc.
    • Array of Byte: Bytes: 0, Buffer Length   Examples: Groups of stats, Object structs, Signatures
  • Addresses found when scanning
    Spoiler: show
    After successfully completing a scan for a value (labeled A.), addresses from the game are appended to a listbox on the left side of Cheat Engine (labeled B.) for you to inspect and select from, once you have selected addresses you would like to further modify or inspect, you can click on the arrow button (labeled C.) to append them to the listbox located on the bottom of Cheat Engine:
    Spoiler: show
    From this list, you will have better access to editing the address to suit your needs. An Address, simply put, is a storage location for memory to live, you can think of it as a labeled container. Addresses are usually displayed in hexadecimal, and while this may look intimidating, it is a much cleaner structure when dealing with data (remember, hexadecimal and decimal values are convertable between each other, so these are technically just numbers). We already went over what value type is, but when we have an address in our listbox, we also have the ability to change the value type of the address we're viewing, this is useful in the event we want to see the value as a different type, for example, if we change our current type to string: 
    Spoiler: show
    We can see the value has changed to the character represenation of the value "123". This does not mean we've edited the actual data there, this is just allowing us to view that data in several different ways that will allow us to piece together what we're looking at.

    The "Active" check box on the left side of the address indicates whether Cheat Engine is freezing the address's value to the value displayed or not (meaning if the game tries to edit this value, and its frozen, cheat engine will overwrite the value)

    Description is used to label addresses according to what you see fit, mostly a way to indicate what the address is.

    note: It is important to remember that addresses may change when an application is updated, as such it is important to know what version of the application you are working with so that you can update your addresses if they change when an update is released.
This is pretty much the bare minimum understanding required to use Cheat Engine, so if you have any questions or trouble, now is the time to make a post below and ask.

Step 2: Finding a target
This is where the fun of imagination begins, deciding what we want to edit and figuring out what the representation of what we're trying to edit in the data is going to be. There are many many many potential target addresses across all applications, in video games, we mostly target values that are going to allow some sort of unnatural advantage or effect to create a sense of satisfaction we could not obtain normally, some prime examples include health, currency and resources, attack damage, points. It's important to remember, that not all values you're attempting to look for will be in plain sight, some values you will need to make a hypothesis and filtration method to find effectively. The diagram below will show some potential targets I have indicated, we will be targeting one in particular.
Spoiler: show
I have indicated several nice targets, some are obvious such as hunger, thirst, warmth, and energy, others like what item you're wielding, the location of that rock near my character, the direction I'm facing, may be less obvious and hard to grasp numerically, but if you can hypothesis what the data for these addresses might be, you are likely to find the address you are looking for. I have indicated the target address we'll be looking for with a green arrow and box, Time of day

To begin with the process of finding this address, we need to consider all possible values that could encompass what "time of day" represents in the data, this means we need knowledge of the concept of time itself, (seconds, minutes, hours, days, months, years) and we need to hypothesize what the game is most likely doing with the data (does the game have 1 address for total elapsed seconds and then coverts it with math to its date representation? does the game have multiple addresses representing seconds, minutes, hours, days? does the game "skip" sections of time?) a hypothesize that can filter through as many of these potential options as possible will allow you to get the best results, for example, we may not know how the game has setup the time system, but we do know that we can increase the amount of time passed by making our character wait, and therefor create a filtration method that will eventually leave us with the address and data responsible for controlling time, once we have this address we can infer how the code uses it in relation to its display data.

So to begin the search, we'll be searching for a value over 0 (time is moving forward, negative value unlikely) albeit currently unknown, and we're going to search for a type of byte (value between 0 and 255) since it is likely the game will be increasing the data in small amounts as time progresses, this will give us addresses that are increasing even if their data representation is larger than a byte, allowing us to also determine if the address we're looking for is a larger type than a byte. This is what your first scan should look like:
Spoiler: show
After completing your first scan, we need to modify the game time address so we can apply a filtration method to the address list, so alt tab back into your game and pass time with the - key for only as much as necessary to indicate to you that time has definitely passed, then pause the game again and alt tab back to cheat engine. Your next scan is going to be a search for an increased value, as time has almost definitely increased in value (we're not sure how much) This should look like this: (Make sure to use NEXT SCAN, not new scan when filtering)
Spoiler: show
Once you complete this first filter, you're going to see a list of addresses with values on the left side, some of them are changing and highlighted red. This is an indication that the particular address that is changing, does not have any correlation between the address we're looking for and its value, as we have not passed any time since our previous scan, our address should have an Unchanged value, so in cheat engine we're going to filter out the addresses that have had their values changed by doing this:
Spoiler: show
This is going to filter our list of addresses unrelated to what we're looking for, so now we need to let time pass some more to indicate an increase in the value, allowing us to filter for such an increase again:
Spoiler: show
with each effective filter, you're going to notice the amount of addresses found decreasing in the top right, we need to keep filtering until we can get the amount of addresses we're looking at as low as possible, as this will give us the best chance to identify our target address. It is important to make sure when filtering you are following a pattern with the expected data you are trying to locate, one wrong filter can easily remove the address you're looking for from the list you're filtering, resulting in frustration. Continue filtering until you reach a small list:
Spoiler: show
When your filters stop removing addresses, its time to take a look at the addresses and data and try to interpret what you're looking at. In my case, I have filtered the addresses to a list of 54 addresses, just by looking at the list and thinking about what kind of address we're trying to find, we can eliminate some of these addresses through the process of representational likely-hood, and by this I mean do the addresses and values I'm looking at make any sense in relation to a system of time? Thinking through this I can already figure there's probably not 54 addresses that determine time, maybe closer to 4 or 5 at max? How do we know which of the addresses we should eliminate from the list? There are a variety of "probability" methods we can employ, so the first thing we're gonna do is move all the addresses with green text in the search listbox to the editing list box so we can see what we're doing easier (green addresses aren't runtime dependant and will not change, and are the ones we will be using):
Spoiler: show
From my particular group of found addresses, I have noticed about 20~ of them with the same value and roughly in the same area of memory, these are not likely to contain the address I'm looking for, so I remove them from the list and am now left with the remaining addresses to experiment with:
Spoiler: show
There are indications that some of these addresses are related to some sort of variable, the addresses i have boxed are very close together in memory, and are seperated by 4 bytes (basically neighbors), likely meaning the value they represent is actually 4 bytes and not 1, we will be changing the address type to 4 bytes to further observe the data between these groups of addresses as they indicate the maximum value to be higher than 1 byte, there are also two addresses relatively close to these addresses i have marked with arrows, they could be related but its less likely (notice this is all guess work, this is the process of documenting addresses from memory from scratch). Now that I have an extremely small list of addresses to work with, we can watch the values change in real time and effectively make guesses. So what you're going to do is make sure you have cheat engine and your game setup like so:
Spoiler: show
When you pass time in the game, you're going to see the values of your addresses change in cheat engine, these are the addresses we are most interested in testing, as any value that is not changing while time is passing is probably not the address in control of time. I delete all addresses that aren't changing as time is passing and am left with the following:
Spoiler: show

December 04, 2019, 12:07:30 PM
Re: [Guide] Modding with Cheat Engine Using Cheat Engine: (Continued)

Step 3: Confirming your target

Now that I have a reasonable amount of addresses to test for actual effects with, I want to document these addresses in a separate file offhand so I don't lose them in the event I give the game invalid data to work with and cause a crash, so double click the address and copy the information to a notepad so you can add the address back manually, or even save the cheat table so you can load them again. Green addresses have the following format: urw.exe+A2EC404 where urw.exe represents the games base handle (runtime dependant), and A2EC404 represents the offset of the address, this equates to B2AC404 when combined together.

After backing up my addresses, I am now ready to effectively modify them and see what they actually represent in the game. To do this, I need to effectively represent the numerical value of the address to a direct result on the game. A good way to easily test values that change over time, is to simply freeze them and record if they change over time, if they do not, chances are you are freezing the variable that effects that aspect of the game... I freeze all four of my addresses and pass time twice for a total of 8 hours, the indicator I was originally searching for does not change (Early evening, wait 8 hours, still Early evening, you also notice the sun graphics in the top left stuttering and lacking movement), almost definitely meaning one of the four addresses I have frozen controls the time of day. So now that we know we have the address, its important to document what the values represent for that address so we can effectively use it to our will. To begin, we're going to isolate the time of day address to one single address, by changing each address to different value and refreshing the game by passing time, I should be able to determine which of the four addresses directly edits time.

I have Isolated the time of day offset to 0B2AC4B5, as it is the only address I am editing and having a direct impact on the time of day, I however notice strange effects when editing this address making it act irregular to what you'd expect the data to do. This generally means you are looking at the right spot, but are interpreting the data wrong. In my case, our search results yielded the address for the "minute" address, meaning 0B2AC4B5 determines the minute of the hour, representing a value of 0-60 (you can watch the address cycle from 1-60 when passing time and resetting). Knowing this is what the address is, and that time is stored in this fashion in the game (each representation of time has an address) I can now predict what addresses such as "day", "hour", and "month" will represent value wise for a particular address. Meaning we can use exact numbers in our filtration methods in relation to the data, for example, if we wanted to search for the address that contains our month, we would be looking for a value between 0-12 (sometimes code will use 0 as an index representation). We can also assume that the Hour of the day address, is a value between 0-24, finding this address will be easier because we can now set the minute of the hour address to 59, pass a tiny bit of time, and filter for an increase in the hour value when the minute value resets, as that would indicate the hour has passed. We can repeat this process until we have every address for determining the current world time, using minutes to get the address for hours, hours to get the address for current day, days to determine the passing of the month, and then using the passing of months to find an address that indicates the year. Once you have each of these addresses, you will be able to essentially control anything that relies on time. This includes the weather/season based on month, daylight/night based on hour (also has an effect on animal activity), plant growth / hide working times can effectively be "skipped" by adding time to the current world time.

Concluding notes:

This is effectively, the basis for finding addresses and modifying the games memory. there are many techniques that I did not cover in this guide that can be helpful in finding and documenting addresses, but this effectively covers the basics of what you need to know in order to produce any kind of modification. The address I decided to target wasn't a particularly easy one to search for, but I think it gives you a good amount of perspective on the type of thinking required in order to get the results you're looking for, especially for addresses that aren't self evident (like stats that show you the actual number so you can just do an exact value filter) For getting a feel of using cheat engine, I would recommend searching for values you can actually see so you're not using abstract thinking to effectively predict what the value is going to be.

If you're having trouble following this guide or are simply stuck, feel free to reply to the thread and ask questions or PM me directly, I can also provide much easier examples for people to find if they get lost. Hopefully you or someone else reading this thread finds educational value, if not at least a good read on how I find modifications to use.

December 04, 2019, 12:07:53 PM
Re: Question about Combat and Accuracy

Shortbow range is extremely low.  I wouldn't even bother unless they're within 10 tiles, preferably within 7-8 tiles or less.  Also, shortbows are not good for combat at all.  They are emergency-level survival bows.  You might get lucky and kill some game now and then, but not suitable for combat.  As for why your spear thrusts failed, I would say bad luck.  Or, possible the nerp had really high axe skill (or both).  On the other hand, I would say you survive your other combat due to good luck.

In this game, combat against a human opponent is by far the riskiest activity available.  You should not view this as a standard roguelike, where combat is a major component and is meant to be balanced.  In this game, It is meant to be highly unpredictable and dangerous.  Even high-level characters with quality armor and weapons should approach every encounter with the utmost caution, and seek to maximize every advantage (outnumber your opponents, bring dogs, strike from surprise).  Even then, you can easily be killed through bad luck.  Starting characters should view combat as an absolute last resort.  Going into combat when you are outnumbered is a sure way to die.  Some players do make a game out of hunting nerps, it is certainly possible.  But not the focus of the game.

I would also like to second this description, playing in the past as someone who experimented with stat cheats and the like, you can still be eliminated with double the maximum attribute values and double the maximum skill values if you make foolish mistakes, which may not all seem to obvious but this game's combat mechanics are scary accurate to what would happen in a real situation, using default values. Even characters with a mastered skill have a high chance of dying, the difference is they also have a higher chance of killing their enemy. My advice is to think of the game as if your character was a realistic thing, there's only so much you can do with the knowledge your character has, and it may not be enough to effectively fight an enemy with a weapon and armor. In my experience, dogs are your best friend when it comes to combat. (which obviously makes sense in a realistic situation as well).

December 04, 2019, 02:20:27 PM
[Info] [3.72][3.71] Cheat Engine Addresses Documenting my addresses here, I'll be updating and posting new ones as I have time to do so.
Feel free to suggest additions or correct mistakes.

(?) - Needs more documentation, partial confirmation.

Rudy has addresses for 3.72 attached below, includes the essentials.

Outdated Versions:
Spoiler: show

Attached 3.70 addresses.
3.70 cheat table works on 3.71, so no updating needed.

[3.61] Steam version affected by: Feb 2, 2020 hotpatch. Add +0x1000 onto the end of the address to make compatible.
Code: [Select]
urw.exe+A345F90 - CharacterName(2)   Notes: Max length of 12.
urw.exe+A346010 - CharacterDirectory   Notes: Location of current characters directory

urw.exe+A2ECA18 - CharacterName   Notes: Max length of 12.
urw.exe+A2ECA26 - TribeName   Notes: Max length of 17.
urw.exe+A2ECA25 - TribeID   Values: 0-9   Notes: Identifies which tribe your character is from.
urw.exe+A2ED4C8 - CharacterWeight
urw.exe+A2ED4CC - CharacterHeight
urw.exe+A2ED4D0 - Physique (unusued)
urw.exe+A2ED4D4 - Phobia (unused)
urw.exe+A2ED4D9 - Gender   Values: 1-2
urw.exe+A2ECF4D - Character Portrait   Example: "east1.png"

urw.exe+A2ED4DA - Strength   Values: 0-255
urw.exe+A2ED4DB - Agility   Values: 0-255
urw.exe+A2ED4DE - Dexterity
urw.exe+A2ED4DF - Speed
urw.exe+A2ED4E1 - Endurance
urw.exe+A2ED4E2 - Smell/Taste
urw.exe+A2ED4E5 - Eyesight
urw.exe+A2ED4E6 - Touch
urw.exe+A2ED4E7 - Will
urw.exe+A2ED4EA - Intelligence
urw.exe+A2ED4EB - Hearing

urw.exe+A2EE044 - Tempature   Notes: float
urw.exe+A2EE018 - Hunger
urw.exe+A2ED404 - Thirst
urw.exe+A2ED408 - Energy
urw.exe+A2ED4AC - Nutrition
urw.exe+A2ED4B8 - Fatigue    Notes: float
urw.exe+A2ED4C0 - Carry Weight   Notes: Freeze to 0 to carry anything, increase characer weight to pickup heavier items

InjuryArrays   Notes: Each address is an array of 20 values representing injury details.
urw.exe+A2ED410 - WoundSeverity   Values: 0-3 (None, Minor, Moderate, Severe)
urw.exe+A2ED424 - WoundSide   Values: 0-3 (Left, Left, Right, None)
urw.exe+A2ED438 - WoundState Values: 0-1 (None, Bleeding) Notes: Effects the rate of bloodloss.
urw.exe+A2ED44C - WoundLocation   Values: 0-18 (None, Eye, Face/Skull, Neck, Shoulder, Upper Arm, Elbow, Forearm, Hand, Thorax, Abdomen, Hip, Groin, Thigh, Knee, Calf, Foot, Tail, Wing)
urw.exe+A2ED460 - WoundType   Values: 0-12 (None, Bruise/Fracture/Crush, Cut, Puncture, Burn, Frost, Tear/Bite, Unused, Unused, Unused, Influenza, Plague)
urw.exe+A2ED474 - WoundAmount   Values 0-100   Notes: When all wounds add up to >= 100, your character dies.

urw.exe+01B0BA0 - Start Location X   Values:0 - 3071 (Map X Max)
urw.exe+01B0BA4 - Start Location Y   Values:0 - 2047 (Map Y Max)
urw.exe+A2937CC - X Location   Values: 0 - 3071 (Current X Location)
urw.exe+A2EE070 - Y Location   Values: 0 - 2047 (Current Y Location)
urw.exe+A346588 - Direction   Values: 0-7   Notes: Represents what direction you're facing

urw.exe+01B2114 - Skill Points
urw.exe+A2ECCC2 - Skill Array   Notes: 27 bytes, each one represents a skill's level. Max value of 255.
urw.exe+A2ECE20 - Skill Exp Array(?)  Values: 0-99   Array Length: 27   Notes: Looks like experience, increases darker bar under your skill
urw.exe+A2ECC90 - Skill Star Array(?)   Values: 12-17   Array Length: 27   Notes: Affects *'s at end of skill, possible XP multiplier

urw.exe+14C5132 - IsTargeting   Values: 0-1
urw.exe+2F4F4DC - TargetY   Notes: Value is 0 unless targetting.
urw.exe+294DEA4 - TargetX   Notes: Value is 0 unless targetting.

urw.exe+5D1848C - MouseX   Notes: X location of the mouse. Relative to rendering
urw.exe+5F1C3DC - MouseY   Notes: X location of the mouse. Relative to rendering

urw.exe+5F27F5F - MapType   Values: 1-2 (overworld, local)
urw.exe+6182BD0 - MapRenderSizeHeight    Values: 460, 564, 730, 920
urw.exe+6182BCC - MapRenderSizeWidth   Values: 450, 552, 714, 900
urw.exe+6183228 - CanSeeMap   Values: 0-1 (0 in inventory)

urw.exe+A2935C4 - TimeSpent   Notes: Represents the amount of time spent on the current/last action in minutes.

urw.exe+A2B2D58 - MapEntityArray (Not base address)   Notes: represents a list of objects rendered on map tiles, contains object XY and ID. More documentation required.

urw.exe+5D189BC - NPCStruct   Notes: represents NPC data, 1384 bytes in length, includes spirte, portrait, name, NPC type, etc.

urw.exe+54E8D50 - KnownItemsArray   
Notes: represents the known items struct, each item has 172 bytes of data (0xAC) representing various traits about the item. StructAddress + (172 * KnownItemID) = KnownItemInfo

urw.exe+A2ED000 - Item ID Array   Values: 50000 - (50000 + KnownItemCount)   Array Length: InventoryItemCount   
Notes: Represents the index/ID of an item your character has in their inventory, using this ID you can retrieve the items data from the item struct (StructAddress + (0xAC * ItemIndex)) More details on this later.

urw.exe+A2ED190 - Item Quantity Array   Values: 0 - 4294967295   Array Length: InventoryItemCount   
Notes: Controls the quantity of a specific item. Aligns with Item ID Array.

urw.exe+A2ED4B4 - Hour   Values: 0-24
urw.exe+A2ED4B5 - Minute   Values: 0-60
urw.exe+A2ED4DC - Day   Values: 1-30
urw.exe+A2ED4E8 - Month   Values: 1-12
urw.exe+A2ED4E9 - Year   Values: 16-?   Notes: (progresses with time, seems to start at 16. Possible indication of character age?)

urw.exe+A347428 - World Temperature   Values: -32 - 32

urw.exe+01B0BB8 - RegionName(1)   Example: "Heathland at Kovametsa "Hard forest""
urw.exe+3550E70 - RegionName(2)   Example: Heathland at Kovametsa "Hard forest"

urw.exe+5F15BD8 - Installation Folder(1)   Example: C:\Program Files (x86)\Steam\steamapps\common\UnRealWorld
urw.exe+A3465A8 - Installation Folder(2)   ^

urw.exe+A2EDC08 - Last completed tutorial/game course goal   Notes: Set lower to reset previous goals

Code: [Select]

urw.exe+A2EBF4D - Character Portrait   Example: "east1.png"

World Time:
urw.exe+A2EC4B4 - Hour   Values: 0-24
urw.exe+A2EC4B5 - Minute   Values: 0-60
urw.exe+A2EC4DC - Day   Values 1-30
urw.exe+A2EC4E8 - Month   Values 1-12
urw.exe+A2EC4E9 - Year   Values 16-?   Notes: (progresses with time, seems to start at 16. Possible indication of character age?)

urw.exe+A2EBCC2 - Skill Level Array   Values: 0-255   Array Length: 27
urw.exe+A2EBE20 - Skill Exp Array(?)  Values: 0-99   Array Length: 27   Notes: Looks like experience, increases darker bar under your skill
urw.exe+A2EBC90 - Skill Star Array(?)   Values: 12-17   Array Length: 27   Notes: Affects *'s at end of skill, possible XP multiplier

urw.exe+A2EC000 - Item ID Array   Values: 50000 - (50000 + KnownItemCount)   Array Length: InventoryItemCount   Notes: Represents the index/ID of an item your character has in their inventory, using this ID you can retrieve the items data from the item struct (StructAddress + (0xAC * ItemIndex)) More details on this later.
urw.exe+A2EC190 - Item Quantity Array   Values: 0 - 4294967295   Array Length: InventoryItemCount   Notes: Controls the quantity of a specific item. Aligns with Item ID Array.

December 14, 2019, 01:18:52 PM
Re: Unlocking apparel quality's maximum limit If you're talking about making a new quality above masterwork etc, I don't think thats possible afaik. I know you can edit an item's quality in game data though, through hex/memory editing. Not sure about mod files.
December 19, 2019, 03:08:14 PM
Re: Unlocking apparel quality's maximum limit I'll post something on it since you're interested (the memory editing). Working on updating my mod to 3.61 and fixing bugs, then I gotta update another thread or two. After that I should be able to do it.

As far as standard modding, I think you could just make craftable versions of the cloths but I'm not sure how/if you could control quality.

December 19, 2019, 04:48:12 PM
URW Modding Discord Made this a little while ago, feel free to join. Just a little place for people to chat about modding and maybe coordinating on some collaborative efforts.

December 19, 2019, 05:56:35 PM