As some of you may already know, detecting strings in SC can be a tedious task. This program takes in a string and spits out a value or values of the string to make that task easier.
For those that don't know and are curious, here's a quick rundown on how you manually calculate a string:
First, SC reads characters in groups of four, so if your string is longer than that, you'll need multiple EUDs to detect the entirety of it. Take the string "Hello World" as an example. The first step is to split the text into groups of four:
Hell
o Wo
rld
The last group ends with only three characters, but this is fine. For this string, you'll need three EUD conditions to detect the exact phrase. When SC reads the text, it reads the group of four characters in reverse order. The next step is to reverse the order of the letters in each group:
lleH
oW o
dlr
Now, SC doesn't actually store the strings as values, so it represents each string as a number. To convert the text into a value, we must look up each letter in a character map (Windows computers should already have this) and use its hexadecimal value. When we've done that for all letters, we should end up with a hexadecimal number:
6C6C6548
6F57206F
646C72
For the first group, l's value is 6C, e's value is 65, and H's value is 48. When put all together, it makes a large hexadecimal number (6C 6C 65 48 -> 6C6C6548). (It should be noted that the hex value of a space is 20, but it doesn't show up on some character maps). Finally, we need to convert these values to decimal, as that is what SC reads. Just use a calculator or a hex to decimal converter:
1819043144
1867980911
6581362
Now you finally have the values you need to make an EUD condition for detecting the text "Hello World" from some address. The trigger will end up looking a little like this:
Memory at +186879 is exactly 1819043144
Memory at +186880 is exactly 1867980911
Memory at +186881 is exactly 6581362
Notice that for whichever starting address value you're using, the next group of four characters is at the next address value (+1). Above, "Hell" is read at 186879, "o Wo" is read at 186880, and "rld" is read at 186881.
Note that the above did not cover the null terminating character, player chat problems, nor the issue of values not resetting (they are just overridden as needed). Getting a functional system using chat is fairly complicated. Refer to the
EUDDB entry for general information.
Basically, this program does all the manual labor for you, so you can just pick any string and write EUDs for it quickly.
Let me know if you have questions regarding the program.