I had a great idea for testing unit IDs.
We would need a bot maker, preferably who has access to a winbot source code.
Configuration involves path to starcraft executable and path to the starcraft map file name
The bot starts a game with the specified file name and detects whether starcraft crashes or not and records this onto a list with two sections, one for crash one for success
It could also be separated by player
preferably the bot would test on multiple player numbers or a single specified player number
after the test it leaves the game if it hadn't crashed and adds 1 to the unit ID in w/e way would be easiest (mouse/keyboard emulation or if a simple editor can be used)
it then rinses and repeats. I have no idea if this is feasible, but if it is, it would certaintly improve the effeciency and capability of EUPs.
If anyone uses this idea, please let me know. I will be posting this on bnetweb as well and if there is a response I will post it here. I will link their thread to this one as well.
BNETWEB THREAD:
http://www.bnetweb.org/threads/starcraft-eups.9298/I already have a an Autohotkey script that does this (thanks to yoonkwun) and tested about a thousand addresses this way before I lost interest in it.
None.
SDE, BWAPI owner, hacker.
There are (in theory) ways to "fix" some crashing extended units by modifying other data, so I don't recommend testing IDs blindly.
It will also be handy to record all other writes that occur, so then prediction will be easier. After all, I have probably the most labelled mapping of Broodwar memory which I'll share some time.
As a sidenote, it would be cool if Blizzard DID patch this, would be nice to see an update for Broodwar again. The problem is that it would be half-assed though.
Have you seen this Heinermann?
http://www.codeofhonor.com/blog/tough-times-on-the-road-to-starcraft Might give you a bit of background into that spaghetti code of their's.
None.
SDE, BWAPI owner, hacker.
That's hot.
Among its many features, storm contained an excellent implementation of doubly-linked lists using templates in C++.
As predicted. >:)
I'll get around to implementing this in our re-creation of Storm for BWAPI.
Post has been edited 1 time(s), last time on Sep 21 2012, 1:19 am by Heinermann.
If you read his follow up blog, he provides code that should be very similar to what storm actually uses.
None.
SDE, BWAPI owner, hacker.
Actually, I am grabbing EVERY little hint he is providing in ALL of the comments in the comment section.
I want to read everything this guy has.
This is the new priority, get hints on how things were done.
You could try emailing him and seeing how willing he'd be to share.
None.
SDE, BWAPI owner, hacker.
I posted a comment, I'm too scared to email him. :x
There was already a comment posted before asking for the source that he ignored. He answered my comment about in-house tools and doodle's comment about iscript.bin.
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!
Quick question on the original discussion of this topic: this method of killing Vespene Tanks works for increasing maximum upgrade levels. Is there any way to raise an upgrade by 1 when something is killed? For example, can I raise P1's Terran Infantry Weapons current upgrade by 1 for killing a Vespene Tank owned by a certain player? I would like to use this for the Unused Upgrade #60 in DatEdit.
None.
SDE, BWAPI owner, hacker.
I don't think so, since "Upgrade 60" is the 61st upgrade, it isn't aligned to a 4-byte block boundary (needed for the trick to work).
You can use it on upgrades that are aligned though.
Hmm, so how would I make it so that P1's Terran Infantry Weapons is incremented by 1, not the maximum upgrade though. The Current upgrade level.
None.
An artist's depiction of an Extended Unit Death
http://farty1billion.dyndns.org/euddb/?pg=entry&id=413http://farty1billion.dyndns.org/euddb/?pg=ref&a=upgshttp://www.staredit.net/topic/15378/http://www.staredit.net/336082/If you want to do it dynamically, you'll need to find a working "DeathId" from that list, or see if one of the PlaceIds work for that first entry (because then you could give the unit to and from P4 to increase Player 1's upgrade).
Post has been edited 1 time(s), last time on Sep 24 2012, 11:19 pm by Roy.
Hm, so for SC upgrades, the formula is 46 * player + offset, and for BW it's the same but 15 instead of 46. I would need to use the 15 because my target is Unknown Upgrade #60. So I plugged this into one of the address formula for P1 #60 upgrade: 5821104+15*(1-1)+14=5821118
Then I plugged this into this formula: 5821118=4*Player+48*UnitID+5787104, But when I plugged in 12 for Player (or any number for that matter), I kept getting a non-integer for UnitID. Does this mean that there are no IDs that would work to increase Upgrade #60?
None.
Assuming that the address "5821118" is correct, yes, there are no integer solutions and thus no feasible combination of ID/player that would get the desired effect.
Going beyond what's feasible, you could possibly edit the address if it was on the 2nd byte using 256*amount you wish to change the address by, but you'd hit unit max very fast, there's probably no real use for doing this.
TheNitesWhoSay - Clan Aura -
githubReached the top of StarCraft theory crafting 2:12 AM CST, August 2nd, 2014.
I'm referring to the BW offset here:
http://farty1billion.dyndns.org/euddb/?pg=ref&a=upgs. So that would mean that 5821118 is correct...but are there other formulas that can get me a working unit ID?
None.
Assuming that the address "5821118" is correct, yes, there are no integer solutions and thus no feasible combination of ID/player that would get the desired effect.
Going beyond what's feasible, you could possibly edit the address if it was on the 2nd byte using 256*amount you wish to change the address by, but you'd hit unit max very fast, there's probably no real use for doing this.
Theoretically, you could change the player of the EUP units with other EUP units, and so be able to add as much to any value as you want (at most the number of units you have per loop). Not really practical, especially if you want to change the value rapidly, but worth thinking about.
None.
...but are there other formulas that can get me a working unit ID?
Simply put: No
What I can tell you with certainty is that none of these will feasibly serve your purposes with the known methods as they are currently used (kill, death, give).
Address=4*Player+48*UnitID+5787104 The number of completed UnitID owned by Player.
Address=4*Player+48*UnitID+5776160 The total number of UnitID owned by Player.
Address=4*Player+48*UnitID+5808992 The number of deaths of UnitID suffered by Player.
Address=4*Player+48*UnitID+5798048 The number of UnitID that Player has killed.
There may be a method to write to 1 specific byte of an address rather than to a block 4 bytes, possibly by modifying the methods found here, but such a method is not documented/known.
Theoretically, you could change the player of the EUP units with other EUP units, and so be able to add as much to any value as you want (at most the number of units you have per loop). Not really practical, especially if you want to change the value rapidly, but worth thinking about.
Yeah, me and bio were working on something like that, mostly with irrad pointers, but results were bogarted by crashes.
TheNitesWhoSay - Clan Aura -
githubReached the top of StarCraft theory crafting 2:12 AM CST, August 2nd, 2014.
Would this work in multiplayer? I'm thinking of making a map with 8 people and each one has a Probe, and I was wondering if I could change an SCV so it can build Protoss buildings for all 8 people. Is it possible?
None.