• Content count

  • Joined

  • Last visited

About Mjjstral

  • Rank

Profile Information

  • Gender
  • Location
  • Interests
    philosophy, border science, science fiction
  1. Exchange this line <Include type="all" source="Static/NODSaboteur.xml" /> with this <Include type="all" source="DATA:Static/NODSaboteur.xml" />
  2. Nice to see this, so this is what the generals universe project was supposed to be? And btw if there is interest in reimplementing the dozer build mechanism check out my post here, because it's definitely possible.
  3. Quick answer: Use modelcondition "LOADED". Long answer: You have two ways also depending on where you need to use it: 1. Use modelcondition "LOADED" as LuaEvent or within lua with ObjectTestModelCondition(object,modelconditionname). 2. Also within lua possible: EvaluateCondition("UNIT_HAS_PASSENGER",GetObj.String(object)) (GetObj.String is a metamod function) One general thing to help yourself in such cases: Use the lists ModelConditionList.txt, ObjectStatusList.txt and especially ALL_SAGE_LUA_COMMANDS.txt that come with metamod to find these things. In this case you could find out the modelcondition with metamod easily: 1. select a unit with passenger, 2. Open meta command menu 3. open selected unit info 4. (optional) write the info to a file and you get something like this written to the LIVE_OUTPUT.txt (which is very usefull for modders): Type: SteelTalonsRepairAPC Health: 100 IsAlive: true Position: x:261 y:81 KindOf: SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS TRANSPORT PRELOAD SCORE ATTACK_NEEDS_LINE_OF_SIGHT CAN_REVERSE_MOVE VEHICLE CAN_BE_FAVORITE_UNIT ObjectStatus: CREATE_DRAWABLE_WITH_LOW_DETAIL ModelConditions: DOOR_1_CLOSING LOADED SELECTED Upgrades: ObjectPanelFlags: AI Recruitable Enabled Powered Selectable SpecialPowersReady: SpecialPower_TargetedRepairVehicle SpecialPowerGDI_APCMinefield Rank: 1 SkillPoints: 0 DistanceToBase: 120 ThreadLevel: 0 HasPassengers: 0 OrientationAngle: 0 NearbyEnemys(radius=300): 0 ObjectCanSufferFear: true ObjectOwner: Mjjstral ObjectOwnerFaction: SteelTalons ObjectOwnerIsAI: 0 ObjectTeamName: teamPlayer_2 ObjectTeamNameInternal: Player_2/teamPlayer_2 NumberOfSameTypeFromTeam: 1 NumberOfSameTypeFromAll: 1 IsSameTypeInsideBase: false ObjectNumber: 66 StringReference: object_O8zQk TableReference: table: 3958D1C8 ObjectPlayerSide: {0,0}38EA5BC0 ObjectDescription: Object 66 [steelTalonsRepairAPC, owned by player 3 (Mjjstral)] ObjectHash: 2093312067 ObjectTemplateName: {0,0}7CC56843 ObjectCapturingObjectPlayerSide: nil Hope that helps you
  4. Thank you, but the KW link leads to RA3 maps. How complete are these mappacks approx. in % from the pool of all public maps ever available? Does it also contain AOD/TD maps and all moddb maps? Also note that you can sometimes find some rare and custom mappacks posted on the steam community hubs.
  5. How do you even compile a .big if that should be the final product after the compilation? You can extract, decompile and view a .big... So what do you mean, please be more specific. If you can't compile things in general with the standard buildmod.bat (even for the SampleMod), then I have no idea.
  6. You can test if the compiled code has the correct structure by looking at it with wrathed.exe bigview. It's also possible to compare the .asset files with a hex editor 1. from a tw compiled peace of code thats working with 2. your wrathed compiled code. In worst case you can even create/modify the .asset yourself adjusting the binary code manually in a hexeditor and then put it to ModName/Assets/Static. Wrathed will automatically include it with the asset merger. For this way to begin you can extract a original .asset from the original kw files that has equal code. My guess for the weapon (because SpawnBehaviorModuleData uses it the same way for it's SpawnTemplate entry...): <Asset id="DamageAndSpawnNuggetType"> <EntryInheritance id="base" AssetType="DamageNuggetType" /> <Entry id="SpawnProbability" AssetType="SageReal" IsAttribute="true" Default="1.0" /> <Entry id="SpawnedModelConditionFlags" AssetType="ModelConditionBitFlags" IsAttribute="true" /> <EntryList id="SpawnTemplate" AssetType="GameObjectWeakRef" MinLength="0" MaxLength="0" /> </Asset>
  7. Did you also try to use a ModelConditionEvent?
  8. Just a random idea: Use "ReplaceSelfUpgrade" module to get an equal object but which has an additional "SpawnUnitBehavior" or "SpawnBehavior" module that can give you the (slaved) drone. Give the drone a "SlavedUpdate" module (see here). But wait maybe you can do it without ReplaceSelfUpgrade cause SpawnUnitBehavior has a LogicCommand entry so there might be a direct way. SpawnUnitBehavior was only used in BFME II and ROTWK but seems to be still in the C&C3 game.
  9. That's completely wrong, check the first line in the skudef. That's interesting, you mean there is a 1.00 and/or 1.1 cnc3ep1.dat ? Never have seen these cause I use the steam version of the game which doesn't provide these files. Thanks for clarification my dear Lauren. But if the askers problem is a cnc3ep1.dat issue it can get difficult, cause you need to disassemble. Non the less if you succeed please share a delta patch of your changes with us
  10. Really? I was not aware of a 64 bit version of the game... Are you very sure? Beside that, the patch version of the game doesn't depend on the binary files, only the .big and .skudef matters for that ? That's why you can still play 1.00 just by changing the entries in the skudef. Some people recommend the 1.07, as it seems to be more stable, although I never had trouble with 1.08 beside the unformated display of source code with the wrathed.exe big viewer. But you can decide for yourself, here is the changelog for 1.08: 1.08 - empty assets of the base stream are now hidden in BigView - hashes are passed through now instead of being compiled again - most attributes with standard values are now hidden in BigView - fixed compiling of asset type StringHash - added schemas for AptUI - fixed an error with imports in ProductionUpdate Download the xml source code for Kanes Wrath here and look in the folder meta game (meta game=global conquest mode). For the big files use the WrathEd.exe big viewer (tools folder) to see the xml code. There you can copy it.
  11. It's still possible with a workaround: For the rails use a texture if necessary your own. Create a waypoint path on the rails and name the path. Then you place the object (train) that is supposed to move somewhere. The main step now is to make a script that enables the object to move. It's something like unit follow waypoint path "pathname". You could use the monorail train that already exists.
  12. Thank you so much for the countless hours and efforts you probably put into this mod. This mod needs more recognition.
  13. So I can give you a solution to these kind of problems in general if you don't mind dealing with the Meta Mod framework (or at least copy the necessary parts from it): Use a ScriptTimer: SetScriptTimer(EveryNSec,Action,Loops) whereby Action can be a function or string that gets executed every n seconds for Loops. If loops is -1 it means infinite loops. You can still delete an infinite loop script timer action manually with DeleteScriptTimerAction(Action). For the refinery solution you coud make a table in which each refinery registers itself. That table gets processed by a function that will then be the ScriptTimerAction. Since Meta Mod source and everything is available now I give you also a Meta Mod solution for our old approach with TiberiumCrystals: function GetNearestTiberiumCrytalRef(DevourerObject) ExecuteAction("OBJECTLIST_ADDOBJECTTYPE", "TiberiumCrystalTypeList", "TiberiumCrystal") ExecuteAction("OBJECTLIST_ADDOBJECTTYPE", "TiberiumCrystalTypeList", "TiberiumCrystalBlue") local TiberiumCrystalRefTable = GetObjectTypeListForTeam(NeutralTeam,"TiberiumCrystalTypeList") local CrystalPos = {} local CrystalRef = "" local DevourerPos = GetObjectPosition(DevourerObject) local LastDistance,NewDistance=15000,15000 for i=1,getn(TiberiumCrystalRefTable),1 do CrystalPos=GetObjectPosition(TiberiumCrystalRefTable[i]["ref"]) NewDistance=sqrt((DevourerPos.x-CrystalPos.x)^2+(DevourerPos.y-CrystalPos.y)^2) if NewDistance<LastDistance then LastDistance=NewDistance CrystalRef=TiberiumCrystalRefTable[i]["ref"] end end return CrystalRef end You can use that for the UseTibThiefSp(self,other) function I posted earlier, whereby other=GetNearestTiberiumCrytalRef(self). The crucial line eventually would then be this: ExecuteAction("NAMED_FIRE_SPECIAL_POWER_AT_NAMED",self,"SpecialPower_ConversionBeam",other) If something again goes wrong with the triggering, then use a ScriptTimer or insert a line into the "PeriodicMasterCheck" fuction (this function gets executed every 10 seconds to test all kinds of things in Meta Mod including victory conditions for custom gamemodes).
  14. There are several model conditions and object statuses related to garrsion. Model Conditions: "GARRISONED", "INSIDE_GARRISON" or "WEAPONSET_GARRISONED". Object Status: "GARRISONED", "INSIDE_GARRISON". Try to use one of these to trigger a lua event and for the lua function then use these: ObjectGrantUpgrade(object,upgradename) ObjectRemoveUpgrade(object,upgradename) ObjectHasUpgrade(object,upgradename) or these ExecuteAction("NAMED_RECEIVE_UPGRADE",object,upgradename) ExecuteAction("NAMED_REMOVE_UPGRADE",object,upgradename) EvaluateCondition("UNIT_HAS_UPGRADE",ObjectStringRef,upgradename) If e.g. the following doesn't work to trigger the removal: <ModelConditionEvent Name="UnGarrisoned"> <Conditions>-GARRISONED</Conditions> </ModelConditionEvent> ..then you can always use a Meta Mod ScriptTimer to test every n seconds ObjectTestModelCondition(object,modelconditionname) or ObjectHasUpgrade(object,upgradename) or try to use 2.9.3 from my guide I didn't look into an xml solution, so there might be another (maybe easier) way making it work on the xml coding side...
  15. Open the .big file with FinalBig and simply drag and drop the extracted files back into the big file and overwrite if necessary. You can also change directory paths within the big file with FinalBig (Edit->Rename File).