Modding Union
Modderecke => Coding => Thema gestartet von: CMG am 18. Sep 2010, 12:05
-
Ich habe momentan ein kleines Problem, für das ich schon lange eine Lösung suche.
Ich will für einen Helden eine neue Fähigkeit erstellen, mit der er über eine Weapon eine verbündete Einheit unheilbar macht, sodass sie sich nicht mehr selbst heilt und dass auch Hilfsmittel, wie Brunnen oder Heilspells bei ihr nichts nutzen.
Gibt es da eine Möglichkeit?
-
Ich verzweifle gerade an einem Coding-Script Problem. :(
Ich möchte, dass ein Held ein Upgrade per scriptevents.xml zugewiesen bekommt, wenn er eine bestimmte ModelCondition erhält. Das sollte ja eigentlich kein Problem sein und ich habe es schon bei mehreren Helden funktionstüchtig umgesetzt, aber bei diesem bestimmten Helden funktioniert es seltsamerweise nicht.
Ich bin gestern abend 6 Stunden lang und heute den halben Tag an dem Problem dran, aber nichts was ich ausprobiere, funktioniert. Immerhin konnte ich den Fehler jetzt soweit eingrenzen, dass ich sicher sagen kann, dass der Held das Upgrade einfach nicht erhält, obwohl er auf die ModelCondition gesetzt wurde.
Hier die Codes:
Scriptevents.xml
<EventList Name="SubmodHeldFunctions" Inherit="BaseScriptFunctions">
<EventHandler EventName="ModelConditionUSER_11" ScriptFunctionName="OnSubmodHeldUser11" DebugSingleStep="false"/>
<EventHandler EventName="ModelConditionNOTUSER_11" ScriptFunctionName="OffSubmodHeldUser11" DebugSingleStep="false"/>
<EventHandler EventName="ModelConditionUSER_12" ScriptFunctionName="OnSubmodHeldUser12" DebugSingleStep="false"/>
<EventHandler EventName="ModelConditionNOTUSER_12" ScriptFunctionName="OffSubmodHeldUser12" DebugSingleStep="false"/>
<EventHandler EventName="OnCreated" ScriptFunctionName="OnEvilMenBlackRiderCreated" DebugSingleStep="false"/>
<EventHandler EventName="BeScary" ScriptFunctionName="RadiateTerrorEx" DebugSingleStep="false"/>
<EventHandler EventName="UsingSpecialOne" ScriptFunctionName="RadiateUncontrollableFear" DebugSingleStep="false"/>
</EventList>
scripts.lua:
function OnSubmodHeldUser11(self)
ObjectGrantUpgrade( self, "Upgrade_TestBuilding_2" )
end
function OffSubmodHeldUser11(self)
ObjectRemoveUpgrade( self, "Upgrade_TestBuilding_2" )
end
function OnSubmodHeldUser12(self)
ObjectGrantUpgrade( self, "Upgrade_TestBuilding" )
end
function OffSubmodHeldUser12(self)
ObjectRemoveUpgrade( self, "Upgrade_TestBuilding" )
end
Helden.ini
Behavior = AIUpdateInterface ModuleTag_03
AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
AILuaEventsList = SubmodHeldFunctions
BurningDeathTime = BURNINGDEATH_DURATION_INFANTRY
HoldGroundCloseRangeDistance = 41
MoodAttackCheckRate = 500
End
Weapon.ini
Weapon HeldSword_Submod
LeechRangeWeapon = Yes
AttackRange = STANDARD_MELEE_ATTACK_RANGE
MeleeWeapon = Yes
FireFX = FX_NazgulHit
DelayBetweenShots = EVILMEN_BLACKRIDER_DELAYBETWEENSHOTS
PreAttackDelay = EVILMEN_BLACKRIDER_PREATTACKDELAY ; 1467 is the prep time for archer.
PreAttackType = PER_SHOT ; Do the delay each time we attack a new target
FiringDuration = EVILMEN_BLACKRIDER_FIRINGDURATION ; Duration of the archer firing shot is 500ms.
DamageNugget ; A basic Nugget that just does damage
Damage = 400
Radius = 5.0
DelayTime = 0
DamageType = HERO
DamageFXType = SWORD_SLASH
DeathType = NORMAL
End
AttributeModifierNugget
AttributeModifier = HeldUser11Modifier
Radius = 50
SpecialObjectFilter = AFFECTED_BY_POISON_OBJECTFILTER
RequiredUpgradeNames = Upgrade_TestBuilding_2
DamageFXType = POISON
End
AttributeModifierNugget
AttributeModifier = HeldUser12Modifier
Radius = 50
SpecialObjectFilter = AFFECTED_BY_POISON_OBJECTFILTER
RequiredUpgradeNames = Upgrade_TestBuilding
DamageFXType = POISON
End
End
Die AttributeModifierNuggets in der Weapon.ini werden einfach nicht aktiviert. Entferne ich hier die benötigten Upgrades, funktionieren die Einträge.
Mir ist außerdem aufgefallen, dass der Held allgemein keine Upgrades per Scriptevents.xml bekommen kann.
Woran kann das liegen ?
Ich hoffe, einer von euch kann mir da weiterhelfen.
MfG CMG
-
Gibt es die ModelConditions User_11 und User_12 überhaupt? Zumindest gibt es nur für User_1 bis User_8 entsprechende ScriptEvents. Hast du es schon mit anderen ConditionStates versucht?
-
Bisher nicht, aber das kann ich mal versuchen.
-
Wie du in meinen Scripts aus Edain erkennen kannst, habe ich diese bis zum ModelConditionUSER_8 und ModelConditionNOTUSER_8 angelegt, alles was darüber hinaus definiert wird, funktioniert nicht meines Wissens nicht.
-
Es lag tatsächlich daran :)
Jetzt funktioniert alles, wie es soll. Vielen Dank euch beiden. ;)