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
Add 0 to the player offset. (EUD contains: 00 Terran Infantry Armor, 01 Terran Vehicle Plating, 02 Terran Ship Plating, 03 Zerg Carapace)
This one has two upgrades in the same condition, so you get two in one.
(0x 03 02 01 00 - upgrade ID order here ...)
0x????0000 - 0 - Upgrade 00 is 0 / Upgrade 01 is 0. (02 and 03 are 0.)
0x????0001 - 1 - Upgrade 00 is 1 / Upgrade 01 is 0.
0x????0002 - 2 - Upgrade 00 is 2 / Upgrade 01 is 0.
0x????0003 - 3 - Upgrade 00 is 3 / Upgrade 01 is 0.
0x????0100 - 256 - Upgrade 00 is 0 / Upgrade 01 is 1.
0x????0101 - 257 - Upgrade 00 is 1 / Upgrade 01 is 1.
0x????0102 - 258 - Upgrade 00 is 2 / Upgrade 01 is 1.
0x????0103 - 259 - Upgrade 00 is 3 / Upgrade 01 is 1.
0x????0200 - 512 - Upgrade 00 is 0 / Upgrade 01 is 2.
0x????0201 - 513 - Upgrade 00 is 1 / Upgrade 01 is 2.
0x????0202 - 514 - Upgrade 00 is 2 / Upgrade 01 is 2.
0x????0203 - 515 - Upgrade 00 is 3 / Upgrade 01 is 2.
0x????0300 - 768 - Upgrade 00 is 0 / Upgrade 01 is 3.
0x????0301 - 769 - Upgrade 00 is 1 / Upgrade 01 is 3.
0x????0302 - 770 - Upgrade 00 is 2 / Upgrade 01 is 3.
0x????0303 - 771 - Upgrade 00 is 3 / Upgrade 01 is 3.
Example:
Memory( [0x58D2B0], Exactly, 769) -- For Player 1: Terran Infantry Armor (00) is 1, Terran Vehicle Plating (01) is 3.
Upgrade 07
Add 1 to the player offset. (EUD contains: 04 Zerg Flyer Caparace, 05 Protoss Armor, 06 Protoss Plating, 07 Terran Infantry Weapons)
This one is the last byte in the EUD, so we can use 1 trigger with at least / at most ! (At least 0xXX000000 / At Most 0xXXffffff where XX is the value we are testing for)
! If the other upgrades are always a known value, feel free to use "Exactly"! If the other values are 0, just use the "At Least" value.
0x00?????? - At Least 0 / At Most 16777215 - Upgrade 07 is 0. (04, 05, 06 don't matter)
0x01?????? - At Least 16777216 / At Most 33554431 - Upgrade 07 is 1.
0x02?????? - At Least 33554432 / At Most 50331647 - Upgrade 07 is 2.
0x03?????? - At Least 50331648 / At Most 67108863 - Upgrade 07 is 3.
Example:
Memory( [0x58D30D], At Least, 33554432) and..
Memory( [0x58D30D], At Most, 50331647) -- For player 3: Terran Infantry Weapons (07) is 2.
Upgrade 08
Add 2 to the player offset. (EUD contains: 08 Terran Vehicle Weapons, 09 Terran Ship Weapons, 10 Zerg Melee Attacks, 11 Zerg Missile Attacks)
This one is easy as long as the other upgrades are a specific value.
0x??????00 - 0 - Upgrade 08 is 0. (09, 10, 11 are 0).
0x??????00 - 1 - Upgrade 08 is 1.
0x??????00 - 2 - Upgrade 08 is 2.
0x??????00 - 3 - Upgrade 08 is 3.
Example:
Memory( [0x58D2B2], Exactly, 3) -- For player 1: Terran Vehicle Weapons (08) is 3.
For even-numbered players (2,4,6,8) it is slightly different because the EUDs are offset by 2.
Upgrades 00 and 01
Add 0 to the player offset. (EUD contains: [Previous Player's Khaydarin Core], [Previous Player's Upgrade 45], 00 Terran Infantry Armor, 01 Terran Vehicle Plating)
It's the last two bytes in the EUD, so it doesn't matter what the other values are! (At least 0xXXXX0000 / At Most 0xXXXXFFFF, but as before if the value is known use Exactly).
0x0000???? - At Least 0 / At Most 65535 - Upgrade 00 is 0 / Upgrade 01 is 0.
0x0001???? - At Least 65536 / At Most 131071 - Upgrade 00 is 1 / Upgrade 01 is 0.
0x0002???? - At Least 131072 / At Most 196607 - Upgrade 00 is 2 / Upgrade 01 is 0.
0x0003???? - At Least 196608 / At Most 262143 - Upgrade 00 is 3 / Upgrade 01 is 0.
0x0100???? - At Least 16777216 / At Most 16842751 - Upgrade 00 is 0 / Upgrade 01 is 1.
0x0101???? - At Least 16842752 / At Most 16908287 - Upgrade 00 is 1 / Upgrade 01 is 1.
0x0102???? - At Least 16908288 / At Most 16973823 - Upgrade 00 is 2 / Upgrade 01 is 1.
0x0103???? - At Least 16973824 / At Most 17039359 - Upgrade 00 is 3 / Upgrade 01 is 1.
0x0200???? - At Least 33554432 / At Most 33619967 - Upgrade 00 is 0 / Upgrade 01 is 2.
0x0201???? - At Least 33619968 / At Most 33685503 - Upgrade 00 is 1 / Upgrade 01 is 2.
0x0202???? - At Least 33685504 / At Most 33751039 - Upgrade 00 is 2 / Upgrade 01 is 2.
0x0203???? - At Least 33751040 / At Most 33816575 - Upgrade 00 is 3 / Upgrade 01 is 2.
0x0300???? - At Least 50331648 / At Most 50397183 - Upgrade 00 is 0 / Upgrade 01 is 3.
0x0301???? - At Least 50397184 / At Most 50462719 - Upgrade 00 is 1 / Upgrade 01 is 3.
0x0302???? - At Least 50462720 / At Most 50528255 - Upgrade 00 is 2 / Upgrade 01 is 3.
0x0303???? - At Least 50528256 / At Most 50593791 - Upgrade 00 is 3 / Upgrade 01 is 3.
Example:
Memory( [0x58D2DE], At Least, 33751040) and ...
Memory( [0x58D2DE], At Most, 33816575) -- For player 2: Terran Infantry Armor (00) is 2, Terran Vehicle Plating (01) is 3.
Upgrades 07 and 08
Add 2 to the player offset. (EUD contains: 06 Protoss Plating, 07 Terran Infantry Weapons, 08 Terran Vehicle Weapons, 09 Terran Ship Weapons)
This one is weird because both values are in the middle. You can use At Least/At Most to get rid of the smallet byte, but you have to know the largest.
0x??0000?? - At Least 0 / At Most 255 - Upgrade 07 is 0 / Upgrade 08 is 0. (09 is 0, 06 doesn't matter.)
0x??0001?? - At Least 256 / At Most 511 - Upgrade 07 is 1 / Upgrade 08 is 0.
0x??0002?? - At Least 512 / At Most 767 - Upgrade 07 is 2 / Upgrade 08 is 0.
0x??0003?? - At Least 768 / At Most 1023 - Upgrade 07 is 3 / Upgrade 08 is 0.
0x??0100?? - At Least 65536 / At Most 65791 - Upgrade 07 is 0 / Upgrade 08 is 1.
0x??0101?? - At Least 65792 / At Most 66047 - Upgrade 07 is 1 / Upgrade 08 is 1.
0x??0102?? - At Least 66048 / At Most 66303 - Upgrade 07 is 2 / Upgrade 08 is 1.
0x??0103?? - At Least 66304 / At Most 66559 - Upgrade 07 is 3 / Upgrade 08 is 1.
0x??0200?? - At Least 131072 / At Most 131327 - Upgrade 07 is 0 / Upgrade 08 is 2.
0x??0201?? - At Least 131328 / At Most 131583 - Upgrade 07 is 1 / Upgrade 08 is 2.
0x??0202?? - At Least 131584 / At Most 131839 - Upgrade 07 is 2 / Upgrade 08 is 2.
0x??0203?? - At Least 131840 / At Most 132095 - Upgrade 07 is 3 / Upgrade 08 is 2.
0x??0300?? - At Least 196608 / At Most 196863 - Upgrade 07 is 0 / Upgrade 08 is 3.
0x??0301?? - At Least 196864 / At Most 197119 - Upgrade 07 is 1 / Upgrade 08 is 3.
0x??0302?? - At Least 197120 / At Most 197375 - Upgrade 07 is 2 / Upgrade 08 is 3.
0x??0303?? - At Least 197376 / At Most 197631 - Upgrade 07 is 3 / Upgrade 08 is 3.
Example:
Memory( [0x58D398], At Least, 131840) and ...
Memory( [0x58D398], At Most, 132095) -- For Player 6: Terran Infantry Weapons (07) is 3, Terran Vehicle Weapons (08) is 2.
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!
This page has been viewed [img]http://farty1billion.dyndns.org/Clicky.php?img.gif[/img] times!