Renegade Projects Network Forums

Full Version: Patching extra functionality into <gamemd.exe>
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Oh yes, oh please say it's true!
Something that I think a lot of mappers would find very useful (given the vast number of times that people ask for help to make such effects) would be to make all applicable events and actions able to use the <Player@X> parameter instead of a specific country (X=A-H). The X refers to a players side at a specific starting point so you can make reinforcments and side changes go to a specific player. Hoever it only works on a very select few trigger actions and on no events AFAIK (so you can never tell who actually did something to ensure you reward them). It also can't be used as the owner of a trigger (so you can't force alliances for example between players). If needed I could quickly compile a list of what events and actions this would apply to and which ones I know already can use it.
Like I said, the Sensor Array code is totally gone.
So, its probobly not going to be possible to implement Sensor Array logic in RA2 without bascily writing something manually.
I will look at the 4 sides bits mabie and see what I can find.
I dont know that much about scripting in RA2 so if someone can point me towards a guide as to how it works and also point me towards a list of which scripts can use the Player@X and which ones cant, that might help me figure it out.
ok, just some notes on various 4th side related things (may as well place them here instead of keeping them locally so that if I dont see PaD, he can still see my work)
0066F634 is the code for loading the Shipyard= tag
It goes to 880 (in the general data)
Its stored as a list (same as the list for the BaseUnits= tag only storing BuildingTypes instead of UnitTypes)
Code at 0066F6C5 is for the GdiPowerPlant= tag, with the value (A BuildingType) going into 89C
Code at 0066F70D is for the NodRegularPower= tag, with the value going into 8A0
Code at 0066F74B is for the NodAdvancedPower= tag, with the value going into 8A4
Code at 0066F781 is for the ThirdPowerPlant= tag, with the value going into 8A8
Code at 0066F3F8 is for the RepairBay= tag, its the same as the Shipyard= tag, with the list going into 850
Code at 0066F973 is for the HarvesterUnit= tag, again same as Shipyard= tag, with the list going into B3C (alhough its UnitTypes that are stored, not BuildingTypes)
Code at 0066F9D1 is for the PadAircraft= tag, list goes into B58 (although its AicraftTypes that are stored, not BuilldingTypes)
Code at 00670C2D is for AlliedSurvivorDivisor=, value goes into 14F8
Code at 00670C4C is for SovietSurvivorDivisor=, value goes into 14FC
Code at 00670C6C is for ThirdSurvivorDivisor=, value goes into 1500
Code at 0066FCF1 is for AlliedCrew=, value goes into F78
Code at 0066FD10 is for SovietCrew=, value goes into F7C
Code at 0066FD2F is for ThirdCrew=, value goes into F80
Code at 0066FC94 is for Engineer=, value goes into F70
Code at 0066FBAD is for AlliedDisguise=, value goes into D58
Code at 0066FBCC is for SovietDisguise=, value goes into D5C
Code at 0066FBEB is for ThirdDisguise=, value goes into D60
Code at 00670052 is for AlliedBaseDefenceCounts=, value goes into D9C, its another list.
Code at 0067008C is for SovietBaseDefenceCounts=, value goes into DB8, its another list
Code at 006700C6 is for ThirdBaseDefenceCounts=, value goes into DD4, its another list.

I dont know what, if anything, is still required with regards to the parachute stuff (now that there is that new parachute feature) so I dont know if we need to change/expand xxxParaDropInf and xxxParaDropNum or not.

Code starting at 00752F46 is for the EVA sounds (Yuri=, Allied= and Russian=).

Thats all the code I have found so far.

Someone want to provide a complete list of the "must fix" to make 4th side work (for example, EVA sound is not "must fix" since it defaults to Yuris EVA or something I think)

I suggest a good place to start would be to make sure that all the lists (like BaseUnit=, Shipyard=, RepairBay=, HarvesterUnit= and PadAircraft=) have no hardcoded limits and if they do, remove the hardcoded limits.
If there are other lists with hardcoded limits, we should find and change them too.

Also, bear in mind here that I am NOT an RA2 modder and I dont know that much about the ini files and keywords so if I say things that are wrong, feel free to correct me Smile
Not to blame you, but I knew about those addresses already Tongue
(lemme finish my table and you will get it immidiately)

Anyway, I think I'm in the mood to code the baseunit short-game loop and test it.
Results will be posted here.
Hey, I didn't say I'm going to work on 4 sides now Tongue
But yeah, the files will be useful when I do so.

Anyway, "short game bug" = fixed B)
Can't you just import the TS Sensor Array stuff?
ok, questions/thoughts:
What is missing to make "More MP Playable Countries" work?
I thought that adding new countries was the first thing that was done with this patch.

2.For the side specific stuff, an EnableNewSideLogic= tag is definatly needed.
3.Instead of adding PowerPlant04=, PowerPlant05= etc, why not just add a PowerPlants= tag that gives you all the powerplants.
For example, you set PowerPlants=NAPOWR,GAPOWR,YAPOWR,TAPOWR
Then you could have AdvancedPowerPlants=NANRCT,GAPOWR,YAPOWR,TAPOWR
Then you could do something like SurvivorDivsors=500,250,750,200
And then Crew=E1,E2,INIT,CIVSOLD
Then Disguises=E1,E2,INIT,CIVSOLD
and Engineers=ENGINEER,ENGINEER,ENGINEER,ENGINEER
BaseDefenceCountsHard=1,2,3,4
BaseDefenceCountsMedium=1,2,3,4
BaseDefenceCountsEasy=1,2,3,4

Or you could make it so that the existing values (e.g. GDIPowerPlant= etc) were used and then the extra list was only used for new sides.
Renegade Wrote:Can't you just import the TS Sensor Array stuff?
Umm, no, it doesnt work like that.
IIRC, SensorArray on buildings did work in RA2 (maybe in YR 1.000), just not in YR 1.001. Don't know if that makes any difference to reenabling it though.
ok, if it used to work but doesnt anymore, it might be possible to find out why.
I dont really know.
Found the code that is responsible for tiberium tree tiberium spawning, cant work out how it decides which tiberium type to spawn though.
Also looking into train bridges to see how things work there.
PaD Wrote:Hey, I didn't say I'm going to work on 4 sides now Tongue
But yeah, the files will be useful when I do so.

Anyway, "short game bug" = fixed B)

thanks, thanks, thanks, thanks... Smile

Well, this menssage is only if pd will continue with the 4? side stuff but I think that he will work on another thing Tongue


After of solve this MCV problem... what could be the next step to do a new side? I'm thinking about the AI powerplant list :S
Can you see if has an easy solution to the AI powerplants?

Ignoring the 1? problem (short game "off" to play more than 3 MCVs that pd fixed), the 2? problem that the player/modder can see is that the AI can't build more than 2 new powerplants (and no more defenses, factories etc) if these tags has more than 1 building:
GDIPowerPlant=GAPOWR
NodRegularPower=NAPOWR
ThirdPowerPlant=YAPOWR
Bobingabout said something about a array list of powerplants in his .txt files but I don't know if finally will be used this idea for sides or if finally we can help the AI to build new powerplants with a custom tag for each modified country (like the custom RadBeam color tag that can be different to each new weapon & leaving the GDIPowerPlant, NodRegularPower & ThirdPowerPlant as global values), I don't know how of easy or hard an array in these AI tags can be done in assembly code but I think that to use a custom tag (like the radbeam colour example) should be a bit more easy :huh:

With the BaseUnit= fix & the fix of the AI energy tags that I said should be possible to do basic new sides (countries) with more - steps that Bobingabout exposed in the .txt but with some limitations & in the future can be added the rest of features to allow full new sides but now is necessary to be done in little steps.
The powerplants aren't a real problem.

Heck, I could even add a whole Tileset already.
But I can't sit there all the day and do stuff Tongue

I'm doing the most stuff in mornings (this morning, it was the baseunits).
Maybe tomorrow it's powerplants Wink
For the MP stuff, I'm fairly sure the events that take a country as a parameter cannot accept the <Player@X> logic (they actually get a country number 4475 - 4482 representing starting point 1-Cool...using them gets no trigger fired. For reference, these are the events that take that parameter along with a link to DeeZires online info on how events are coded in a map:

http://www.deezire.net/modules.php?name=En...=content&tid=22

5 = House Discovered By Player - e.g. 5,0,[house number]
9 = All Units Destroyed - e.g. 9,0,[house number]
10 = All Structures Destroyed - e.g. 10,0,[house number]
11 = House Completely Destroyed - e.g. 11,0,[house number]
17 = No Factories Left - e.g. 17,0,[house number]
18 = Civilians Evacuated - e.g. 18,0,[house number]
25 = Horizontal Axis Crossed - e.g. 25,0,[house number]
26 = Vertical Axis Crossed - e.g. 26,0,[house number]
29 = Attached Object Lost - e.g. 29,0,[house number]
30 = Low Power - e.g. 30,0,[house number]
35 = Object Detected By Searchlight - e.g. 35,0,[house number] *This also needs Search lights working
44 = Object Is Attacked - e.g. 44,0,[house number]
53 = Houses Spy Enters - e.g. 53,0,[house number]
55 = All Naval Units Destroyed - e.g. 55,0,[house number]
56 = All Non-Naval Units Destroyed - e.g. 56,0,[house number]
58 = Power Full - e.g. 58,0,[house number] (Yuri's Revenge Only)

I believe actions do accept the countries from the <Player@X> logic, the following is a link to DeeZires info on Actions and the format for the change house (country) action that I know works.

http://www.deezire.net/modules.php?name=En...=content&tid=23

14 = Change House - e.g. 14,0,[house number],0,0,0,0,A

This logic would also really need the [Triggers] section in a map to allow a trigger to be owned by a Player@X player rather than just a country (first player on the map as that country gets the trigger), Neutral, Special or <none> for no owner (sound effect triggers and such).


On the topic of the SensorArray logic, a SensorArray will still detect subterrranean logic units burrowing under the ground and will play a radar even when a unit with sensors detects a cloaked unit in range (though it won't detect the cloaked unit itself) and when it detects a subterranean unit. However there are no EVA events associated with these which I think there should be.

As for what is still needed for additional multiplayer sides, the game still needs to be able to use additional taunt files or at least made able to be told what existing country to share with. Taunts are held in a subfolder as .wav files in the RA2 folder.