Modderecke > Coding

Vermillions Fragen

<< < (2/9) > >>

thepinking:

--- Zitat von: Aklas am  8. Mär 2011, 18:09 ---Mach doch einfach ein upgrade(zxy), das beim bau deiner einheit freigeschaltet wird.
dieses upgrade  muss dann das commandset des baumeisters ändern (in eins wo das gebäude nich mehr vorkommt).
dann machst du noch ein anderes upgrade(xyz), welches beim bau deines Gebäudes freigeschaltet wird und den Baubutton der Einheit entfernt.

Script:
upgrade.ini
Upgrade Upgrade_xyz
  Type                = OBJECT
End

Upgrade Upgrade_zxy
  Type                = OBJECT
End

deinporter.ini
(das muss in die engineering parameter)
    Behavior = CommandSetUpgrade ModuleTag_CommandSetzxy
        TriggeredBy       = Upgrade_zxy
        CommandSet        = zxyCommandSet
    End

deingebäudemiteinheitdri n.ini
(das muss in die engineering parameter)
    Behavior = CommandSetUpgrade ModuleTag_CommandSetxyz
        TriggeredBy       = Upgrade_xyz
        CommandSet        = xyzCommandSet
    End

commandset.ini

CommandSet deingebäudemiteinheit_co mmandset
   1 = deine Einheit
   2 = irgendwas
   3 = irgendwas anderes
End

CommandSet xyzcommandset
  1   = irgendwas
  2   = irgendwas anderes
end

CommandSet deinporter_commandset
   1 = dein Gebäude (welches deaktiviert werden soll)
   2 = irgendwas
   3 = irgendwas anderes
  ...
End

CommandSet zxycommandset
  1   = irgendwas
  2   = irgendwas anderes
  ...
end

müsste irgendwie so funktionieren, is aber alles ausm gedächtnis ich hab das auch mal irgendwann gemacht.

--- Ende Zitat ---

Das ganze geht auch viel einfacher, ohne ein CommandSet erstellen zu müssen:
Das gebäude braucht ein (Player-) Upgrade als Vorraussetzung, welches man schon am beginn hat. Spawnt Sauron so entfernt er dieses Upgrade und das gebäude ist nicht mehr baubar. Stirbt Sauron spawnt ein Object das dir wieder das Upgrade gibt.

Vermilion:
Ok danke  und wie geht das Player Upgrade? Das mit den Commandsets funzt nicht, hat keine wirkung.

Meine Codes:

Im Gebäude weches die Einheit deaktivieren soll:

--- Code: ---
Behavior = GrantUpgradeCreate ModuleTag_NoSauronCommandset
UpgradeToGrant = Upgrade_NoSauron
GiveOnBuildComplete = No ;// The ExemptStatus UnderConstruction hack doesn't work on foundation buildings.
End

--- Ende Code ---

Die Einheit welches das Gebäude entfernen soll:

--- Code: ---
Behavior = GrantUpgradeCreate ModuleTag_NoBraddurCommandset
UpgradeToGrant = Upgrade_baraddur
GiveOnBuildComplete = No ;// The ExemptStatus UnderConstruction hack doesn't work on foundation buildings.
End

--- Ende Code ---

Dann beim Porter:

--- Code: ---Behavior = CommandSetUpgrade ModuleTag_CommandSetBaraddurporter
        TriggeredBy       = Upgrade_baraddur
        CommandSet        = BaraddurporterCommandSet
        End

--- Ende Code ---

Gleiches für die Festung, codes poste ich jetzt mal nicht prinzip ist ja das selbe und der browser hier spinnt etwas.

In den Commandsets fehlen dann einfach die jew. Buttons aber im spiel sind sie da.

Vermilion:
Bitte, kann mir jemand sagen wie das mit dem Playerupgrade gemeint ist? Finde da jetzt keine anderen Beispiele in den inis. Wo muss das Upgrade rein, beim Gebäude?

thepinking:
Mal eine Anleitung (Namen sind natürlich abänderbar)

Bei Sauron kommt das rein:

--- Code: --- Behavior = RemoveUpgradeUpgrade ModuleTag_RemoveGebaeude
TriggeredBy = Upgrade_MordorFaction
UpgradeToRemove = Upgrade_Gebaeudebauen
RemoveFromAllPlayerObjects = Yes
End
Behavior = CreateObjectDie ModuleTag_062
DeathTypes = ALL
CreationList = OCL_Gebaeudebauen
End

--- Ende Code ---
In die OCL.ini diese:

--- Code: ---ObjectCreationList OCL_Gebaeudebauen
CreateObject
ObjectNames = Gebaeudebauen
Count = 1
End
End

--- Ende Code ---
In die Playertemplate bei Mordor das:

--- Code: ---    StartingUnit5 = Gebaeudebauen
    StartingUnitOffset5 = X:0 Y:0 Z:0

--- Ende Code ---
Dann noch ein neues Object

--- Code: ---Object Gebaeudebauen
    EvaEnemyObjectSightedEvent = None  ; Not a real unit
    ; ***DESIGN parameters ***
    VisionRange     = 0
    EditorSorting   = SYSTEM
    KindOf          = NO_COLLIDE IMMOBILE UNATTACKABLE IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION MOVE_ONLY
    ThreatLevel     = 0

    ; *** ENGINEERING Parameters ***
    Body = ActiveBody ModuleTag_01
        MaxHealth        = 999999999
        InitialHealth    = 999999999
    End
    Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
        MinLifetime        = 5000
        MaxLifetime        = 5000
    End
Behavior = GrantUpgradeCreate ModuleTag_Sauron
     UpgradeToGrant      = Gebaeudebauen
     GiveOnBuildComplete = Yes
End
End

--- Ende Code ---
Der CommandButton sollte ungefähr so aussehen:

--- Code: ---CommandButton  Command_PorterConstructMordorCirithUngolPrison
    Command              = DOZER_CONSTRUCT
    Options              = NEED_UPGRADE CANCELABLE
    Object               = MordorDolGoldurPrison
    NeededUpgrade        = Upgrade_Gebaeudebauen
    TextLabel            = CONTROLBAR:ConstructMordorDolGoldurPrison
    ButtonImage          = HSDolVerlies
    ButtonBorderType     = BUILD
    DescriptLabel        = CONTROLBAR:ToolTipMordorCirithUngolPrison
    Radial               = Yes  
End
--- Ende Code ---
Und natürlich gibt es Beispiele mit Playerupgrades, du must nur richtig suchen...

--- Code: ---Upgrade Upgrade_Gebaeudebauen
    Type              = PLAYER
End

--- Ende Code ---

Vermilion:
Vielen Dank das hilft schon enorm weiter! Leider wird Sauron aber noch gebaut, wenn das Gebäude vorher gebaut wird bzw da ist.

Was mir noch aufgefallen ist, ich hab zwar eingestellt dass das gebäude nur einmal gebaut werden kann aber schickt man zwei baumeister auf einmal los (wenn sie also noch beide zu dem bauort hinrollen) so bauen sie beide das gebäude.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln