Modding Union
Modderecke => Coding => Thema gestartet von: Only True Witchking am 5. Jun 2019, 16:51
-
Melkor zum Gruße!
In den letzten Tagen habe ich endlich mal Zeit gefunden, ein paar unfertige Maps von mir zu entstauben. Dabei ist mir ein Problem aufgefallen, an dass ich mich durchaus erinnern kann, jedoch hat es mich persönlich nie sehr gestört.
Jetzt plane ich allerdings, einige Maps fertigzustellen und für andere zugänglich zu machen und ich denke, da sollte ich versuchen, Probleme möglichst zu entfernen, so auch das folgende:
Wenn ich beim erstellen einer beliebigen Map Y, einer Einheit X mithilfe der map.ini ein neues Weaponset (mit passender Weapon) gebe, und dann die Map Y spiele, verhält sich X so, als besäße sie gar kein Weaponset. Dieses Problem kann auf zwei Arten gelöst werden: Neu Starten, oder aber die Map verlassen, und, ohne das Programm zu schließen, sie erneut zu spielen.
Dabei scheint das Spielen anderer Maps völlig irrelevant zu sein.
Wenn ich das Programm schließe und wieder öffne, egal ob die Map in der Zwischenzeit verändert wurde, tritt das Problem von neuem auf.
Das heißt: Jedesmal wenn ich eine Map, auf der die Einheit X ein bearbeitetes Weaponset hat, zum ersten Mal nach öffnen des Spiels spiele, kann die Einheit X unter keinen Umständen angreifen.
Ich habe schon nach Lösungen dafür gesucht, allerdings noch keine gefunden. Weiß jemand, ob und wie dieses Problem lösbar ist? Gibt es überhaupt andere, die das Problem haben?
Gezeichnet,
Der einzig wahre Hexenkönig
PS: X kann hierbei Held oder Einzeleinheit sein, Bataillone habe ich noch nicht getestet.
-
Bei Weapons muss man unterscheiden:
Bei Fernkämpfern:
Die weapons von Fernkämpfern kann man nur sehr bedingt (im allgemeinen nicht) verändern. Wenn du da was verändern willst, würde ich es immer über modifier machen.
Du erstellst also ein AttributeModifier, der durch das Upgrade Upgrade_AllFactionUpgrad e (glaub so heißt das) ausgelöst wird und kannst da über modifier attackspeed (die geht nur bei Fernkämpfern), range und schaden verändern.
Wenn du Nahkämpfern meinst:
Dann hast du was falsch gemacht. Kopier Mal den Code hier rein.^^
-
Es handelt sich ausschließlich um Nahkampfwaffen.
Hier zwei Beispiele aus verschiedenen Versionen einer Mod:
Object EregionCelebrimbor
WeaponSet
Conditions = None
Weapon = PRIMARY CelebrimborHaldirSword
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End
End
Weapon CelebrimborHaldirSword
LeechRangeWeapon = Yes
AttackRange = 20.0
MeleeWeapon = Yes
DelayBetweenShots = HALDIR_SWORD_DELAYBETWEENSHOTS
PreAttackDelay = HALDIR_SWORD_PREATTACKDELAY
PreAttackType = PER_SHOT
FireFX = FX_FeanorSwordHit
FiringDuration = HALDIR_SWORD_FIRINGDURATION
RadiusDamageAffects = ENEMIES NEUTRALS NOT_SIMILAR
DamageNugget
Damage = 400
Radius = 20.0
DelayTime = 0
DamageType = HERO
DamageFXType = SWORD_SLASH
DeathType = Normal
End
DamageNugget
Damage = 100
Radius = 30.0
DelayTime = 0
DamageType = MAGIC
DamageFXType = MAGIC
DeathType = Normal
End
MetaImpactNugget
HeroResist = .5
ShockWaveAmount = 25.0
ShockWaveRadius = 45.0
ShockWaveTaperOff = 0.75
ShockWaveZMult = 1.2
End
End
Object NoldorMaedhros
WeaponSet
Conditions = None
Weapon = PRIMARY MaedhrosNewWeapon
End
Weapon MaedhrosNewWeapon
LeechRangeWeapon = Yes
AttackRange = 20.0
MeleeWeapon = Yes
DelayBetweenShots = 1
PreAttackDelay = 500
PreAttackType = PER_SHOT
FireFX = FX_GondorSwordHit
FiringDuration = 500
RadiusDamageAffects = ENEMIES NEUTRALS NOT_SIMILAR
DamageNugget
Damage = 440
Radius = 10.0
DelayTime = 0
DamageType = HERO
DamageFXType = SWORD_SLASH
DeathType = Normal
DamageScalar = 80% NONE +HERO ENEMIES
End
MetaImpactNugget
HeroResist = .70
ShockWaveAmount = 30.0
ShockWaveRadius = 15.0
ShockWaveArc = 120
ShockWaveTaperOff = 1
End
End
In beiden Fällen tritt das gleiche Problem auf, und sie sind nur einige Beispiele in einer längeren Reihe.
Bei Weapons die "Hero_Mode" als Voraussetzung haben, oder die durch Fähigkeiten ausgelöst werden ist das Problem anscheinend nicht vorhanden (bzw bei "Hero_Mode" nur dann, wenn auch die Standardwaffe geändert wurde und die Einheit somit onehin nicht angreifen kann.
Gezeichnet,
Der einzig wahre Hexenkönig
-
Zuerst die Weapon, dann das Objekt benutzen.
Grundsätzlich ist es bei einer map.ini immer so, dass es besser ist alles zu definieren, bevor es benutzt wird.
Hier also zuerst definieren was Weapon blabla ist und danach sagen "Benutze weapon blabla".
Ansonsten z.B. zuerst eine Specialpower definieren, dann der CommandButton dazu, dann das CommandSet wo der Button definiert ist, dann das Objekt, welches das CommandSet verwendet.
Es kann teilweise auch anders funktionieren, aber ich würde das immer so empfehlen. Teilweise kann man so sehr kuriose Sachen machen (z.B. CommandButtons mehrfach unterschiedlich verwenden)
-
Ergänzend dazu würde ich sagen, dass beim 2. Objekt ein "End" fehlt.
-
Hab deinen Tipp ausgetestet Gnomi, hat funktioniert! (**)
Was das fehlende END betrifft, das ist einfach beim Kopieren verlorengegangen.
-
Merk dir einfach: Alles was du irgendwo verwendest, muss vorher definiert sein. Das ist eine der Grundregeln vom programmieren.^^