Modderecke > Coding
Shadowleakes Fragentread
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