Staredit Network > Forums > SC1 UMS Mapmaking Assistance > Topic: Stim pack detection
Stim pack detection
Jul 10 2009, 6:35 pm
By: Toothfariy
Pages: < 1 2 3 4 >
 

Jul 11 2009, 8:03 am Jack Post #41

>be faceless void >mfw I have no face

OK sorry i missed that bit. So what does halloween priest use to detect firing? Like what did the maker search for with artmoney?

Would it have been something at CWEAPON?

Post has been edited 1 time(s), last time on Jul 11 2009, 8:11 am by zany_001.



Red classic.

"In short, their absurdities are so extreme that it is painful even to quote them."

Jul 11 2009, 9:43 am rockz Post #42

ᴄʜᴇᴇsᴇ ɪᴛ!

I believe he searched for the cooldown timer(55-57). Do what I suggested to toothfairy and look at the memory map. get a unit to attack something and see how the numbers change when the player moves/attacks.



"Parliamentary inquiry, Mr. Chairman - do we have to call the Gentleman a gentleman if he's not one?"

Jul 11 2009, 6:36 pm Toothfariy Post #43



So im still a little confused on how you actually locate the unit

I've been searching for the unit, but i cant seem to find it exactly

and when i do find it, how will i know its the unit?



None.

Jul 11 2009, 7:04 pm crutex Post #44



Quote from Toothfariy
So im still a little confused on how you actually locate the unit

I've been searching for the unit, but i cant seem to find it exactly

and when i do find it, how will i know its the unit?
all the information for the units on the map are likely stored in a fixed size blocks starting with the unitid and ordered by creation time if you can find the unit id then each bit of information should be at some offset from the unitid
simple example of map with 3 units (3 bytes for the data of each unit)

-- start units (assume units are represented by 3 bytes of data and consist of an id(1 byte long) current hp(1 byte long) and max hp(1 byte long)) --
byte 1 UNITID1
byte 2 first_unit_current_hp
byte 3 first_unit_max_hp
byte 4 UNITID2
byte 5 second_unit_current_hp
byte 6 second_unit_max_hp
byte 7 UNITID3
byte 8 third_unit_current_hp
byte 9 third_unit_max_hp

I don't know if this is actually how it works but I imagine something like that.

edit:
I guess the unit blocks look like this http://farty1billion.dyndns.org/EUDDB/?pg=ref&a=unitnode



None.

Jul 11 2009, 7:09 pm Toothfariy Post #45



okay... so how do u actually locate the unit id in the first place



None.

Jul 11 2009, 7:15 pm crutex Post #46



Quote from Toothfariy
okay... so how do u actually locate the unit id in the first place
Same way you found the hp. Look for some unique value you can use as an identifier to trace it in the memory. Looks like hp is (begginningofunitinfo+0x8). So the start of the unit is the address you found the hp at -0x8. Or the ground cooldown is (the address you found the hp at + 0x55 - 0x8) = (the address you found the hp at + 0x4D)

But you have to realize that the EUD condition reads a certain number of bytes at a time(i'm not sure but probably 4 bytes), the type of each data is by the name such as DWORD. DWORD is 4 bytes long. So you have to make sure you have aligned your shit right otherwise you will be maybe reading into values that you don't care about.

You don't actually need the unitid to check if it has stim though only find the location of his respective cooldown bits.

Post has been edited 4 time(s), last time on Jul 11 2009, 7:40 pm by crutex.



None.

Jul 11 2009, 8:06 pm Toothfariy Post #47



Quote from crutex
Quote from Toothfariy
okay... so how do u actually locate the unit id in the first place
Same way you found the hp. Look for some unique value you can use as an identifier to trace it in the memory. Looks like hp is (begginningofunitinfo+0x8). So the start of the unit is the address you found the hp at -0x8. Or the ground cooldown is (the address you found the hp at + 0x55 - 0x8) = (the address you found the hp at + 0x4D)

But you have to realize that the EUD condition reads a certain number of bytes at a time(i'm not sure but probably 4 bytes), the type of each data is by the name such as DWORD. DWORD is 4 bytes long. So you have to make sure you have aligned your shit right otherwise you will be maybe reading into values that you don't care about.

You don't actually need the unitid to check if it has stim though only find the location of his respective cooldown bits.

I thought i was looking for the locationthe units death?



None.

Jul 11 2009, 8:14 pm crutex Post #48



Quote from Toothfariy
Quote from crutex
Quote from Toothfariy
okay... so how do u actually locate the unit id in the first place
Same way you found the hp. Look for some unique value you can use as an identifier to trace it in the memory. Looks like hp is (begginningofunitinfo+0x8). So the start of the unit is the address you found the hp at -0x8. Or the ground cooldown is (the address you found the hp at + 0x55 - 0x8) = (the address you found the hp at + 0x4D)

But you have to realize that the EUD condition reads a certain number of bytes at a time(i'm not sure but probably 4 bytes), the type of each data is by the name such as DWORD. DWORD is 4 bytes long. So you have to make sure you have aligned your shit right otherwise you will be maybe reading into values that you don't care about.

You don't actually need the unitid to check if it has stim though only find the location of his respective cooldown bits.

I thought i was looking for the locationthe units death?
? You are taking advantage of the unit death's condition to cause a buffer overflow so you can read other parts of memory that you shouldn't be able to. You find the offset of what you are looking for, and convert it into a trigger condition that will cause the proper overflow.



None.

Jul 11 2009, 8:31 pm crutex Post #49



I made this example that will detect your shots with the Marine. I simply added 0x4C to the offset that I found by searching the marine's hp before using EUDTrig. This let me read the Marine's ground weapon cooldown. If it's greater than 1 you are shooting. I added a dc delay so that it will only trigger when he actually shoots (on average). And it doesn't count correctly if you use stimpack.

You can make this into an ammo system by changing the conditions so that IF (player has 0 minerals) AND (ground weapon eud trigger) it moves you immediately to a location centered on top of yourself. This will stop him from getting his shot off.

Attachments:
bah.scm
Hits: 0 Size: 50.66kb



None.

Jul 11 2009, 8:37 pm Jack Post #50

>be faceless void >mfw I have no face

Or you could just trigger an ally with the enemy and use hypers.
Do you think you could make a quick step by step tute of how you found the required trigger?



Red classic.

"In short, their absurdities are so extreme that it is painful even to quote them."

Jul 11 2009, 8:44 pm crutex Post #51



Quote from name:zany_001
Or you could just trigger an ally with the enemy and use hypers.
Do you think you could make a quick step by step tute of how you found the required trigger?
Maybe later because I'd want to take screenshots and stuff if I will bother typing out a tutorial. Also I'm not sure if some other conditions in the game will trigger this (for instance bMainOrderTimer. bAirWeaponCooldown, SpellCooldown are all near the groundweaponcooldown so one of these occurring will likely cause same trigger to be detected). Also if you attack and then instantly move it will not actually fire but still count as a shot xD so the trigger needs to be looking for some value bigger than 256.

Post has been edited 2 time(s), last time on Jul 11 2009, 8:54 pm by crutex.



None.

Jul 11 2009, 11:09 pm rockz Post #52

ᴄʜᴇᴇsᴇ ɪᴛ!

Step 1:
Find health of unit you want to know EVERYTHING about.
See the tutorial for help on that.
This will give you an address, for example the first unit's health is 0x59ccb1. This is the whole number, the actual unit health is 0x59ccb0, with 256 "extra precision" making 1 whole life we can see in the game. Zerg units will heal by adding 4 to this number every frame. Once it reaches 256, it rolls over and becomes 1 hp.
Step 2:
Open up the unitnode reference and locate exactly where hp is. Notice that hp is +0x08. What I do is have an excel sheet which automatically lets me input "0x59ccb0" into the hp slot, and it will fill out the rest of the memory map for me. Alternatively, simply add the address of the location you're trying to read to the hp address, then subtract 8. For example, stim timer is +0x115 - BYTE bStimTimer. Add 0x115 to 0x59ccb0 and subtract out 0x08. The stim timer location for the first unit is at 0x59cdbd.
Step 3:
Locate the byte required to read. Deaths reads 4 bytes, on every 0, 4, 8, and C. This means you just have to search for the number if it's on one of these and is a dword. 1, 5, 9, and D are on the second byte, and you have to search for the number*2^8. 2, 6, A, and E are on the third byte, and you have to search for the number*2^16. 3, 7, B, and F are on the fourth byte, and you have to search for the number*2^24.



"Parliamentary inquiry, Mr. Chairman - do we have to call the Gentleman a gentleman if he's not one?"

Jul 12 2009, 12:05 am crutex Post #53



yeah and here's the map updated with stim detection on the marine

thanks for clarification on step 3 rockz i was wondering about it

Attachments:
bah.scm
Hits: 1 Size: 50.77kb



None.

Jul 12 2009, 1:05 am Jack Post #54

>be faceless void >mfw I have no face

I assume you have to convert to decimal for the actual trigger.



Red classic.

"In short, their absurdities are so extreme that it is painful even to quote them."

Jul 12 2009, 1:06 am crutex Post #55



Quote from name:zany_001
I assume you have to convert to decimal for the actual trigger.
yes.

edit: attached map. leech mana from enemy player with dt strikes :D
make leveling by killing 2x unit with dt :D
detect storming on the dt

Attachments:
bah.scx
Hits: 2 Size: 51.42kb

Post has been edited 7 time(s), last time on Jul 12 2009, 5:11 am by crutex.



None.

Jul 12 2009, 4:26 pm Pyro682 Post #56



You know, you could make a stim detection system without using EUDS. Using a DD system, you can have, for example, an 11 HP rine, and always be doing 1 damage to it, and then healing it right after. That way, if the user decides to stim, the rine will die.
It may provide some interference, and the user will likely have to stim more than once for it to go through, but it would work on a decent average basis.



None.

Jul 12 2009, 5:08 pm crutex Post #57



Quote from Pyro682
You know, you could make a stim detection system without using EUDS. Using a DD system, you can have, for example, an 11 HP rine, and always be doing 1 damage to it, and then healing it right after. That way, if the user decides to stim, the rine will die.
It may provide some interference, and the user will likely have to stim more than once for it to go through, but it would work on a decent average basis.
o_O then you would have a dead rine :O



None.

Jul 12 2009, 6:00 pm Pyro682 Post #58



Right, but you'd be able to detect the dead rine, (aka the rine stimming) correct?
hahaha



None.

Jul 12 2009, 6:47 pm Jack Post #59

>be faceless void >mfw I have no face

OLOL I GOT AN IDEA!!



Red classic.

"In short, their absurdities are so extreme that it is painful even to quote them."

Jul 12 2009, 6:58 pm poison_us Post #60

Back* from the grave

Quote from rockz
no 00010000(0x10) - Checked for burrowing purposes, if it is 00010000, then the unit is burrowed

For burrow detection, wouldn't it make sense to run EUDs off of this, instead of the detection-by-attempting-to-move system? Or is it too complex for that, and I just don't know it?




Options
Pages: < 1 2 3 4 >
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[10:53 pm]
Oh_Man -- https://youtu.be/MHOZptE-_-c are yall seeing this map? it's insane
[2024-5-04. : 1:05 am]
Vrael -- I won't stand for people going around saying things like im not a total madman
[2024-5-04. : 1:05 am]
Vrael -- that's better
[2024-5-04. : 12:39 am]
NudeRaider -- can confirm, Vrael is a total madman
[2024-5-03. : 10:18 pm]
Vrael -- who says I'm not a total madman?
[2024-5-03. : 2:26 pm]
UndeadStar -- Vrael, since the ad messages get removed, you look like a total madman for someone that come late
[2024-5-02. : 1:19 pm]
Vrael -- IM GONNA MANUFACTURE SOME SPORTBALL EQUIPMENT WHERE THE SUN DONT SHINE BOY
[2024-5-02. : 1:35 am]
Ultraviolet -- Vrael
Vrael shouted: NEED SOME SPORTBALL> WE GOT YOUR SPORTBALL EQUIPMENT MANUFACTURING
Gonna put deez sportballs in your mouth
[2024-5-01. : 1:24 pm]
Vrael -- NEED SOME SPORTBALL> WE GOT YOUR SPORTBALL EQUIPMENT MANUFACTURING
[2024-4-30. : 5:08 pm]
Oh_Man -- https://youtu.be/lGxUOgfmUCQ
Please log in to shout.


Members Online: lil-Inferno, NudeRaider