Staredit Network > Forums > SC1 UMS Mapmaking Assistance > Topic: EUDs and Detecting Upgrades
EUDs and Detecting Upgrades
Nov 12 2012, 9:22 pm
By: Veta  

Nov 12 2012, 9:22 pm Veta Post #1



Needed some quick help and you guys are pros. Can I use EUDs to detect what level upgrade somebody has - for say infantry weapons or armor?

Clarification: I want to desync specific players whenever they meet certain conditions including certain upgrade levels before they've unlocked them in a custom tech tree.

Post has been edited 1 time(s), last time on Nov 20 2012, 5:31 pm by Veta.



None.

Nov 12 2012, 10:34 pm lil-Inferno Post #2

Just here for the pie

I don't know EUDs but there are conventional methods of doing this. The map "Cosmic Supremacy" detects upgrades so you can't upgrade over your tech level by having each upgrade be a second long (so you can detect it) and cost 1, 2, 4, 8, 16... gas so the map can detect if the player's gas is at a certain accumulation (e.g. if infantry weapons is 1 gas and players always have 10000 gas, if they have exactly 9999 gas then they're upgrading infantry weapons and you can do actions accordingly).




Nov 12 2012, 11:55 pm Veta Post #3



Quote from lil-Inferno
I don't know EUDs but there are conventional methods of doing this. The map "Cosmic Supremacy" detects upgrades so you can't upgrade over your tech level by having each upgrade be a second long (so you can detect it) and cost 1, 2, 4, 8, 16... gas so the map can detect if the player's gas is at a certain accumulation (e.g. if infantry weapons is 1 gas and players always have 10000 gas, if they have exactly 9999 gas then they're upgrading infantry weapons and you can do actions accordingly).
I appreciate you giving me alternatives my current setup is "tech level" units and owning them is the condition for setting your gas to a certain level. I can't just change the numbers of gas because I'd have to sacrifice how I laid out technology and upgrade progression. The problem with doing a Cosmic Supremacy type system (I think) would be that I also have units and buildings unlocked through the same gas-tech scheme. So it would be hard to differentiate between somebody gaming the system and somebody legitimately buying something - or somebody legitimately upgrading but then cancelling. My hope was there was still a known way of handling this with EUDs. Or if there's a clever alternative I'm not thinking of that works too. I know I could do a system where I say start you at maximum tech/gas and detect how much is spent. If you overspent then I remove/kill/block your attempt to use that locked tech. That could work but I would have to sacrifice the simplicity of level 1=100 gas, level 2=200 gas, et cetera.



None.

Nov 13 2012, 12:22 am Roy Post #4

An artist's depiction of an Extended Unit Death

Upgrade list: http://farty1billion.dyndns.org/EUDDB/?pg=ref&a=upgs

I've answered a very similar question in the first half of this post.

The EUD answer depends on which upgrades you're trying to detect and for which player.

Quote from Veta
Or if there's a clever alternative I'm not thinking of that works too.
Attack Upgrades: Have your unit in the corner of the map constantly attacking a unit and measure the time it takes for that unit to die. The shorter it takes, the higher the upgrade.
Armor Upgrades: Have your unit in the corner of the map constantly getting attacked by a unit and measure the time it takes for your unit to die. The longer it takes, the higher the upgrade.




Nov 13 2012, 1:42 pm Veta Post #5



The unit kill times or unit death times would be the most conventional way to do what i want although I'm probably low on the locations to pull it off. Is there a way to detect what level of an upgrade a player has with EUDs? I already found I'm going to need the upgrades address 0058D2B0 (researched) although maybe there's a better way with the upgrades available offset since I'll only have 3 upgrades total and I only need to check levels 2 and 3. I do know I will need the 00, 01, 07, 08 IDs.
http://farty1billion.dyndns.org/EUDDB/?pg=ref&a=upgs
I used farty's calculator to figure out the player numbers but I don't know how to distinguish between the number upgrade you're on or how many available upgrades. The actions for these conditions being met (say you had only lvl 1 weapons unlocked but had the EPDs detected you as having lvl 2 upgrades somehow) would just be a defeat/desync. So I think that it can all be local right?



None.

Nov 13 2012, 7:32 pm O)FaRTy1billion[MM] Post #6

👻 👾 👽 💪

Upgrades definitely are not just local. They are very global. Available, as in max, upgrades are a different EUD. Available as in "currently able to upgrade" is a totally different thing (and you can just do like Commands at least 1 science facility or whatever).

What players are you detecting it for? I can help write up a few triggers if you want.
Here are the base addresses (each is 46 (decimal) greater than the last) for each player:
Player 1: 0x58D2B0
Player 2: 0x58D2DE
Player 3: 0x58D30C
Player 4: 0x58D33A
Player 5: 0x58D368
Player 6: 0x58D396
Player 7: 0x58D3C4
Player 8: 0x58D3F2

Do you know the values of Terran Ship Plating, Zerg Carapace, Terran Ship Weapons, Zerg Melee Attacks, and Zerg Missile attacks? Because those are shared with the EUDs you are trying to detect. For where it matters, I'm just assuming zero.

Note each EUD contains 4 upgrade values, so you have to check for multiple known values to get a single upgrade's value ...


The rest of this post might be helpful ... But I don't know what part you are having a question on so I just kind of did it all ... xD





For odd-numbered players (1,3,5,7) use the following values to detect the possible states:
("??" means that byte is for an upgrade we're not testing for ... if they are any value other than 0, replace it and recalculate the decimal values. If they can be multiple values, you need to make a whole new set for each possible value -- it makes a lot of triggers, I know.)
Upgrades 00 and 01

Upgrade 07

Upgrade 08


For even-numbered players (2,4,6,8) it is slightly different because the EUDs are offset by 2.
Upgrades 00 and 01

Upgrades 07 and 08


With all of that out of the way ...
If you know the values of (or even use) Terran Ship Plating, Zerg Carapace, Terran Ship Weapons, Zerg Melee Attacks, and Zerg Missile attacks making a set of triggers to detect only upgrade values 2 or 3 should be easy. If some of those upgrades can change, it's still easy but a few more triggers will have to be made ...

Post has been edited 2 time(s), last time on Nov 13 2012, 7:45 pm by FaRTy1billion.



TinyMap2 - Latest in map compression! ( 7/09/14 - New build! )
EUD Action Enabler - Lightweight EUD/EPD support! (ChaosLauncher/MPQDraft support!)
EUDDB - topic - Help out by adding your EUDs! Or Submit reference files in the References tab!
MapSketch - New image->map generator!
EUDTrig - topic - Quickly and easily convert offsets to EUDs! (extended players supported)
SC2 Map Texture Mask Importer/Exporter - Edit texture placement in an image editor!
\:farty\: This page has been viewed [img]http://farty1billion.dyndns.org/Clicky.php?img.gif[/img] times!

Nov 14 2012, 12:57 am Veta Post #7



This was very helpful. Thank you, I think I've got the gist (the gist is I'll need a lot of systematic triggers but I know how to do it now). Here's one thing I'm struggling with though

In your first example:
Memory( [0x58D2B0], Exactly, 769) -- For Player 1: Terran Infantry Armor (00) is 1, Terran Vehicle Plating (01) is 3.

I made this EPD condition added a second condition as Current Player suffers at least 7 deaths of Current Technology. This DC is representative of what gas tech the player has unlocked. How do I make it so that the actions following this trigger desync player 1 but not anybody else in the game?

Post has been edited 3 time(s), last time on Nov 20 2012, 5:42 pm by Veta.



None.

Nov 19 2012, 11:15 pm Veta Post #8



Got it working great, thanks again Roy/Farty you guys explained this very well.

edit: So mia culpa, I should have qualified that I was using this detection to desync players. All the detection conditions are working perfectly but I took for granted that I could just slap on a defeat action; make triggers player specific; and it would work as i imagined.

That last part is what I'm having trouble with. It seems whenever the trigger conditions are met the defeat actions fire for all of the odd numbered players (despite the EPDs being player specific). What's just as strange is that the odd player trigger actions also fire for all the odds players. Basically I want a specific player to be desync'd when he cheats, right now all the odd number players are desync'd when any player cheats.

I'm sure there's just something I'm mixing up or need to add to the conditions but I'm at a loss since my understanding is I should just need a global action and local conditions. Maybe there's a local condition I could add to detect specifically which player somebody is (like a DC only that player has); make a CP has at least 1 death of P1 deaths condition and then keep the action as defeat?


For reference I put in some of the test EPDs I've been working on before I batch-edit the rest of them.
http://pastebin.com/LsVknuN2

Post has been edited 8 time(s), last time on Nov 20 2012, 5:42 pm by Veta.



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[03:27 am]
m.0.n.3.y -- Maybe because it's an EUD map?
[03:27 am]
m.0.n.3.y -- Can't upload maps to the DB. Error says "The action you have performed caused an Error". Any word?
[2024-4-25. : 7:46 am]
RIVE -- :wob:
[2024-4-22. : 6:48 pm]
Ultraviolet -- :wob:
[2024-4-21. : 1:32 pm]
Oh_Man -- I will
[2024-4-20. : 11:29 pm]
Zoan -- Oh_Man
Oh_Man shouted: yeah i'm tryin to go through all the greatest hits and get the runs up on youtube so my senile ass can appreciate them more readily
You should do my Delirus map too; it's a little cocky to say but I still think it's actually just a good game lol
[2024-4-20. : 8:20 pm]
Ultraviolet -- Goons were functioning like stalkers, I think a valk was made into a banshee, all sorts of cool shit
[2024-4-20. : 8:20 pm]
Ultraviolet -- Oh wait, no I saw something else. It was more melee style, and guys were doing warpgate shit and morphing lings into banelings (Infested terran graphics)
[2024-4-20. : 8:18 pm]
Ultraviolet -- Oh_Man
Oh_Man shouted: lol SC2 in SC1: https://youtu.be/pChWu_eRQZI
oh ya I saw that when Armo posted it on Discord, pretty crazy
[2024-4-20. : 8:09 pm]
Vrael -- thats less than half of what I thought I'd need, better figure out how to open SCMDraft on windows 11
Please log in to shout.


Members Online: NudeRaider, antjackh78