Modderecke > Coding

Shadowleakes Fragentread

<< < (3/12) > >>

Shadowleake, Eis des Nordens:
ne haut immer noch nicht hin, aber danke für deinen versuch ;)

hätte schon eine weitere frage hinterherzureichen: ich mache mir eine horde, es kommen auch alle 20 einheiten raus, aber sie sind alle einzeln anwählbar und nicht als horde, wo liegt der fehler?

--- Code: ---Object MordorEiskriegerHorde

      ; This is required for garrisoned objects - please put in all objects.
    ButtonImage        = Eiskriegerpala
    SelectPortrait    = Eiskriegerpala

    Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw
        DependencySharedModelFlags = EMOTION_ALERT EMOTION_MORALE_HIGH EMOTION_MORALE_LOW EMOTION_AFRAID EMOTION_COWER SELECTED EMOTION_TERROR EMOTION_LOOK_TO_SKY
        DefaultModelConditionState
            Model = None ;InvisHrdeTmp
        End
        ModelConditionState = HORDE_EMPTY
            Model = None
        End       
        ModelConditionState = WORLD_BUILDER
            Model = mushlwar_skn
        End
    End
   
    Side = Mordor
    EditorSorting = UNIT
    EmotionRange = 240
    TransportSlotCount = TRANSPORTSLOTCOUNT_LARGE_HORDE
    DisplayName = OBJECT:HordeMordorArchers
    DisplayNameStrategic = CONTROLBAR:LW_Unit_MordorArcherHorde
    DescriptionStrategic = CONTROLBAR:LW_ToolTip_MordorArcherHorde
   
    WeaponSet
        Conditions = None
        Weapon = PRIMARY     MordorArcherMissileHordeRangefinder
        Weapon = TERTIARY     MordorArcherMissileHordeRangefinderBombard
        AutoChooseSources = TERTIARY FROM_PLAYER FROM_SCRIPT                ; Not AI.
    End

    ; *** AUDIO Parameters ***;
    ; Note: Don't put voice parameters here -- they will be ignored. Voice play requests
    ; are always passed through to members
    #include "..\..\..\includes\StandardHordeEvaEvents.inc"

    BuildCost = MORDOR_ARCHER_BUILDCOST
    BuildTime = MORDOR_ARCHER_BUILDTIME
           
    VisionRange = MORDOR_ARCHER_HORDE_VISION_RANGE   
    ShroudClearingRange = MORDOR_ARCHER_SHROUD_RANGE

    VisionSide = 50%
    VisionRear = 25%
   
    MaxVisionBonusPercent = 300%
    VisionBonusTestRadius = 200
    VisionBonusPercentPerFoot = 1.0%
   
   
    CrushableLevel = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
    CrusherLevel = 0 ;What can I crush?: 0 = small animals, 1 = infantry, 2 = trees, 3 = vehicles
    UseCrushAttack = No    ;Archer hordes cannot crush or Bombard will not work
    CommandPoints = 60 ; BALANCE, set up to just produce 2 hordes if 700 cp left
    CommandSet = MordorArcherHordeCommandSet
       
    FormationWidth = 2 ; Width it occupies in formations. Current choices are 1 or 2.
    FormationDepth = 2 ; Depth it occupies in formations. Current choices are 1 or 2.
   
    TransportSlotCount = TRANSPORTSLOTCOUNT_LARGE_HORDE
    KindOf = SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT INFANTRY HORDE ORC ARCHER ARMY_SUMMARY CAN_USE_SIEGE_TOWER LARGE_RECTANGLE_PATHFIND ;UNATTACKABLE ORC
   
    ThreatLevel = MORDOR_ARCHER_HORDE_THREAT
    ThreatBreakdown MordorArcherHorde_DetailedThreat
        AIKindOf = ARCHER
    End
   
    Body = ImmortalBody ModuleTag_ImmortalBody
        MaxHealth = 1
    End
   
    #include "..\..\..\includes\CaptureBuilding.inc"
   
    Behavior = StancesBehavior ModuleTag_StancesBehavior
        StanceTemplate = ArcherHorde
    End

    Behavior = HordeAIUpdate ModuleTag_HordeAIUpdate
        AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
        MoodAttackCheckRate        = 500
        MaxCowerTime                =    5000
        MinCowerTime                =    3000
        CanAttackWhileContained    = Yes  ; Can fire out of garrisoned building       
        AILuaEventsList                = InfantryFunctions
        AttackPriority                =     AttackPriority_Archer
    End

    Behavior = HordeContain ModuleTag_HordeContain
        FrontAngle = 270
        FlankedDelay = 2000
        ObjectStatusOfContained =
        InitialPayload = Eiskrieger 20
        Slots = 20
        PassengerFilter = NONE +INFANTRY
        ShowPips = No

        ; Banner Carrier info       
        BannerCarriersAllowed    = Eiskrieger        ; types of units that are allowed as banner carriers
        BannerCarrierPosition    = UnitType:Eiskrieger        Pos:X:60.0 Y:0.0    ; (DEFAULT) position of banner carrier for fighter horde
       
        RandomOffset=X:5 Y:3   
        MeleeBehavior = Amoeba
        End
       
        RankInfo = RankNumber:1 UnitType:MordorArcher Position:X:50 Y:0        Position:X:50 Y:20        Position:X:50 Y:-20        Position:X:50 Y:40        Position:X:50 Y:-40
        RankInfo = RankNumber:2 UnitType:MordorArcher Position:X:30 Y:0 Leader 1 0    Position:X:30 Y:20 Leader 1 1    Position:X:30 Y:-20 Leader 1 2    Position:X:30 Y:40 Leader 1 3    Position:X:30 Y:-40 Leader 1 4
        RankInfo = RankNumber:3 UnitType:MordorArcher Position:X:10 Y:0 Leader 2 0    Position:X:10 Y:20 Leader 2 1    Position:X:10 Y:-20 Leader 2 2    Position:X:10 Y:40 Leader 2 3    Position:X:10 Y:-40 Leader 2 4
        RankInfo = RankNumber:3 UnitType:MordorArcher Position:X:-10 Y:0 Leader 3 0    Position:X:-10 Y:20 Leader 3 1    Position:X:-10 Y:-20 Leader 3 2    Position:X:-10 Y:40 Leader 3 3    Position:X:-10 Y:-40 Leader 3 4
       
       
        RanksToReleaseWhenAttacking = 1 2 3 4
        MeleeAttackLeashDistance = 25; How far the hordes can move from the center of the horde when melee attacking.
   

        ; Example of Eva event for horde death
        ; EvaEventLastMemberDeath = ArchersDie ; Play this Eva event when the last member dies
    End
   
    Behavior = PhysicsBehavior ModuleTag_PhysicsBehavior
        GravityMult = 1.0
    End
   
    Behavior = LargeGroupBonusUpdate ModuleTag_LargeGroupBonus
        UpdateRate            = 1000
        HordeMemberFilter    = NONE +MordorFighter +MordorArcher   
        Count                = 100
        Radius                = 160.0
        RubOffRadius        = 160.0
        AlliesOnly            = Yes
        AttributeModifier    = MordorLargeGroupBonus
    End
   
     Behavior = EmotionTrackerUpdate    Module_EmotionTracker
        TauntAndPointDistance        =    INFANTRY_TAUNT_POINT_RADIUS        ; max distance to taunted/pointed objet
        TauntAndPointUpdateDelay    =    1000    ; how often scan (milliseconds)
        TauntAndPointExcluded        =    NONE
        AfraidOf                    =    EMOTION_AFRAIDOF_OBJECTFILTER
        AlwaysAfraidOf                =    EMOTION_ALWAYS_AFRAIDOF_OBJECTFILTER
        PointAt                        =    EMOTION_POINTAT_OBJECTFILTER
        HeroScanDistance            =    150
        FearScanDistance            =    ARCHER_FEAR_SCAN_RADIUS ;250

        AddEmotion    =    Terror_Base
        AddEmotion    =    Doom_Base
        AddEmotion    =   BraceForBeingCrushed_Base
        AddEmotion    =    UncontrollableFear_Base_Evil
        AddEmotion    =    FearIdle_Base
        AddEmotion    =    FearBusy_Base
        AddEmotion    =    Point_Base
        AddEmotion    =    Taunt_Base   
        AddEmotion    =    CheerIdle_Base
        AddEmotion    =    CheerBusy_Base
        AddEmotion    =    HeroCheerIdle_Base
        AddEmotion    =    HeroCheerBusy_Base
        AddEmotion    =    Alert_Base
    End       
   
    LocomotorSet
        Locomotor     = NormalRangedHordeLocomotor
        Condition     = SET_NORMAL
        Speed         = 57 ; ; NORMAL_MORDOR_INFANTRY_HORDE_SPEED
    End

    Behavior = ProductionUpdate ProductionUpdateModuleTag
        GiveNoXP = Yes
    End

    Behavior = LevelUpUpgrade ModuleTag_BasicTraining
        TriggeredBy = Upgrade_MordorBasicTraining
        LevelsToGain = 1
        LevelCap = 2
    End
   
    Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality
        TriggeredBy = Upgrade_MordorFireArrows
    End
   
    Behavior = PickupStuffUpdate ModuleTag_PickupStuffUpdate
        SkirmishAIOnly = Yes
        StuffToPickUp = NONE +CRATE
        ScanRange = 200
        ScanIntervalSeconds = 0.5
    End

    ;///////////////////
    ; AISpecialPowers
    ;///////////////////
   
    Behavior = AISpecialPowerUpdate MordorArcherHordeCaptureBuildingAI
        CommandButtonName = Command_CaptureBuilding
        SpecialPowerAIType = AI_SPECIAL_POWER_CAPTURE_BUILDING
    End
   
    Geometry = BOX
    GeometryMajorRadius = 40.0
    GeometryMinorRadius = 50.0
    GeometryHeight = 20.0
    GeometryIsSmall = No
   
   
    // *** AUTO RESOLVE DATA ***
    AutoResolveUnitType = AutoResolveUnit_Archer
    AutoResolveCombatChain = AutoResolve_ArcherCombatChain
   
    AutoResolveBody = AutoResolve_MordorArcherHordeBody

    AutoResolveArmor
        Armor = AutoResolve_MordorArcherArmor
    End

    AutoResolveWeapon
        RequiredUpgrades = Upgrade_MordorFireArrows
        Weapon = AutoResolve_MordorArcherUpgradedWeapon
    End

    AutoResolveWeapon
        ExcludedUpgrades = Upgrade_MordorFireArrows
        Weapon = AutoResolve_MordorArcherWeapon
    End
   
    WorldMapArmoryUpgradesAllowed = Upgrade_MordorBasicTraining Upgrade_MordorFireArrows
End




--- Ende Code ---

EvilDet:

--- Code: --- RankInfo = RankNumber:1 UnitType:MordorArcher Position:X:50 Y:0        Position:X:50 Y:20        Position:X:50 Y:-20        Position:X:50 Y:40        Position:X:50 Y:-40
        RankInfo = RankNumber:2 UnitType:MordorArcher Position:X:30 Y:0 Leader 1 0    Position:X:30 Y:20 Leader 1 1    Position:X:30 Y:-20 Leader 1 2    Position:X:30 Y:40 Leader 1 3    Position:X:30 Y:-40 Leader 1 4
        RankInfo = RankNumber:3 UnitType:MordorArcher Position:X:10 Y:0 Leader 2 0    Position:X:10 Y:20 Leader 2 1    Position:X:10 Y:-20 Leader 2 2    Position:X:10 Y:40 Leader 2 3    Position:X:10 Y:-40 Leader 2 4
        RankInfo = RankNumber:3 UnitType:MordorArcher Position:X:-10 Y:0 Leader 3 0    Position:X:-10 Y:20 Leader 3 1    Position:X:-10 Y:-20 Leader 3 2    Position:X:-10 Y:40 Leader 3 3    Position:X:-10 Y:-40 Leader 3 4

--- Ende Code ---

Da muss statt MordorArcher deine Unit hin ;)

Shadowleake, Eis des Nordens:
danke, das hat funktioniert :)


EDIT:

hätte auch gleich noch eine weitere frage xD

was muss ich denn wo für codes eingeben, sodass helden nichtmehr in der festung gebaut werden, sondern in den dazu vorgesehenen gebäuden? einfach einen button machen und diesen in die commandset packen geht zar, aber dann verschwindet der button nicht nach dem kauf und der respwan ist nach wie vor in der festung...wenn mir da noch geholfen werden könnte, dann hätte ich meinen helden vorerst fertig und könnte mich an dazugehörige units machen :)
danke schonmal im voraus
euer shadowleake

Sanalf 2:
Naja, so einfach is das leider mit der Heldenrekrutierung nicht. Es gibt dazu zwei Möglichkeiten.

1. Helden wie normale Einheiten baubar machen (Vorteil: einfach und schnell; Nachteil: kein Respawn)

Bei dieser Variante codest du einfach einen ganz normalen Button, wie du ihn auch zur Rekrutierung von Horden und Einheiten erstellst. Als zu bauende Einheit gibst du einfach deinen Helden an und schon sollte es gehen. Wie ich oben geschrieben habe, geht das ja recht schnell und einfach. Der große Nachteil is aber, dass dein Held dann wie eine normale Einheit behandelt wird, was den Respawn angeht. Er wird also immer auf Level 1 ohne jegliche Erfahrung neu zu rekrutieren sein. Wenn dich das stört, dann solltest du Variante zwei probieren...

2. Helden wie im Original (Vorteil: Respawn möglich und System wie im Originalspiel; Nachteil: aufwändig zu coden und für nachträglich eingefügte Helden muss einiges beachtet werden)

Diese Variante is etwas verzwickter, liefert dafür aber ein herrliches Ergebnis. Wichtig hierbei sind folgende Einträge aus CommandSet.ini und Playertemplate.ini:

CommandSet.ini

--- Code: --- 16 = Command_GenericReviveSlot1
17 = Command_GenericReviveSlot2
18 = Command_GenericReviveSlot3
19 = Command_GenericReviveSlot4
20 = Command_GenericReviveSlot5
21 = Command_GenericReviveSlot6
22 = Command_GenericReviveSlot7
--- Ende Code ---

Playertemplate.ini

--- Code: --- BuildableHeroesMP = IsengardLurtz IsengardSharku IsengardWormTongue IsengardSaruman
--- Ende Code ---

Wie du siehst, kann Isengard vier Helden in der Festung bauen. Die Festung selbst hat sieben Buttons für Helden, davon werden die ersten vier genutzt und NUR diese. Soll heißen, wenn du sagen wir Sharku rekrutierst, dann verschwindet Button Nummer zwei aus der Liste. Die Position des Helden in der "BuildableHeroesMP"-Zeile gibt an, welcher dieser Buttons für ihn zuständig ist. Wichtig hierbei ist, dass du die Anzahl der Helden, die du für ein bestimmtes Volk rekrutieren können möchtest, im Hinterkopf behältst. Sagen wir also, du möchtest nun insgesamt vier Helden für ein Volk haben. Du brauchst daher vier solcher Buttons, die du in das CommandSet deines Gebäudes schreibst. Damit würdest du nun aber alle vier Helden in diesem Gebäude baubar machen, das willst du ja nicht. Lange Zeit hat dieses Problem als unlösbar gegolten, doch die neueren Codingerkenntnisse haben eine Lösung dafür gefunden. Du musst einfach für jeden Button, der nicht der deines Helden ist (also für das Beispiel von Sharku für die Buttons 1, 3 und 4) einen selbsterstellten Button einfügen, der NICHTS bewirkt. Dieser könnte zum Beispiel so aussehen:


--- Code: ---CommandButton Command_FakeReviveSlot1
Command = REVIVE
Options = HIDE_WHILE_DISABLED CANCELABLE NEED_UPGRADE
TextLabel = CONTROLBAR:GenericReviveHero
ButtonBorderType = BUILD
DescriptLabel = CONTROLBAR:ToolTipGenericReviveHero
InPalantir = No
Radial = Yes
        NeededUpgrade           = Upgrade_FakeReviveSlot
End
--- Ende Code ---

Der Button sieht fast genau so aus, wie ein normaler "GenericHeroReviveSlot", mit dem Unterschied, dass er ein Upgrade benötigt, nämlich "Upgrade_FakeReviveSlot". Dieses Upgrade wird das Gebäude allerdings NIEMALS erhalten, ergo wird der Button nie aktiv. Und genau diesen Button schreibst du nun für alle Heldenbuttons, die das Gebäude nicht verwenden soll, in das Commandset. Das würde dann so aussehen:


--- Code: --- 1 = Command_FakeReviveSlot1
2 = Command_GenericReviveSlot2
3 = Command_FakeReviveSlot3
4 = Command_FakeReviveSlot4
--- Ende Code ---

Das Gebäude hat nun drei solcher Buttons, die nie aktiv werden und den einen, der Sharku rekrutiert. Damit kann es nun genau diesen Helden bauen und wiederbeleben. Das kannst du nun entsprechend deines Helden abwandeln, du musst allerdings das System der Fake-Buttons in jedem Gebäude anwenden, das fortan Helden rekrutieren können soll, ansonsten könntest du nämlich einen Helden in zwei oder mehr Gebäude bauen. Die Fake-Buttons verhindern das.

Ich hoffe, dass damit alles klappt und wünsch viel Spaß beim Ausprobieren!

mfg
sanalf 2

Shadowleake, Eis des Nordens:
danke dir, ich hab das zwar noch nicht ganz verstanden aber so halb...die meisten helden hat glaub mordor mit 7 stück (zählen der cah und der ringhero eigl zu der methode dazu?).
ich will zu jeder fraktion einen helden hinzufügen, also brauche ich 7 fakebuttons? wenn ich also in das gebäudecommandset schreibe:


--- Code: --- 1 = Command_GenericReviveSlot1
2 = Command_FakeReviveSlot2
3      = Command_FakeReviveSlot3
4      = Command_FakeReviveSlot4
5      = Command_FakeReviveSlot5
6      = Command_FakeReviveSlot6
7      = Command_FakeReviveSlot7

--- Ende Code ---

dann in die playertemplate.ini:


--- Code: --- BuildableHeroesMP = CreateAHero MEINHELD held2 held3 held4 held5 held6 held7 held8

--- Ende Code ---

so wird der angezeigt?

ich würde das dann in alle fraktionen halt so eintragen oder?

dann noch in die verschiedenen fortresscommandsets jeweils:


--- Code: ---    14    = Command_RingHeroReviveSlot
    15    = Command_CreateAHeroReviveSlot       
    16    = Command_FakeReviveSlot1
    17    = Command_GenericReviveSlot2       
    18    = Command_GenericReviveSlot3       
    19    = Command_GenericReviveSlot4       
    20    = Command_GenericReviveSlot5       
    21    = Command_GenericReviveSlot6       
    22    = Command_GenericReviveSlot7       
    23    = Command_RadialBack               
End                     

--- Ende Code ---

dann passt alles?

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln