Modderecke > Coding

Map: Tor von Minas Tirith-Codingprobleme

(1/3) > >>

Only True Witchking:
Hallo Edain Community!

Ich bin schon seit längerem ein großer Fan der Mod. In letzter Zeit habe ich mich Intensiv mit Mapping beschäftigt, und auch schon einige kleinere Maps erstellt.
Mein neuestes Projekt ist eine Map mit dem Namen "Das Tor von Minas Tirith", bei der es darum geht, das Tor von Minas Tirith so lange gegen Mordororks und Mordor-Bogenschützen zu halten, bis Grond, einige Kampftrolle und eine Masse Morgulorks auftauchen. Nachdem Grond das Tor einrammt, ist das Ziel, alle Trolle und Morgulorks zu töten, bevor Gandalf stirbt.

Ich habe versucht, die normalen Mordororks etwas zu schwächen, damit es mehr an die Extended Edition vom Film erinnert, wo die Gondor-Bogenschützen hunderte von Orks niederschießen. Dazu habe ich in der map.ini, mit Hilfe der Gamedata.ini, folgenden Code gebaut:


--- Code: ---;------------------------FIGHTER-------------
Object Mordor_Fighter
ReplaceModule ModuleTag_0222
#define MORDOR_FIGHTER_BUILDCOST                  100 ; originally 100
#define MORDOR_FIGHTER_BUILDTIME                  25
#define MORDOR_FIGHTER_HEALTH                      40 ; originally 125
#define MORDOR_FIGHTER_HEALTH_DAMAGED              50
#define MORDOR_FIGHTER_HEALTH_RECOVERY_TIME    10000
#define MORDOR_FIGHTER_VISION_RANGE              175
#define MORDOR_FIGHTER_HORDE_VISION_RANGE        175
#define MORDOR_FIGHTER_HORDE_SHROUDCLEAR_RANGE        400

#define MORDOR_FIGHTER_DAMAGE                      20 ; our initial faction level 30
#define MORDOR_FIGHTER_DAMAGE_UPGRADE 60
#define MORDOR_FIGHTER_PREATTACKDELAY            633
#define MORDOR_FIGHTER_DELAYBETWEENSHOTS        1000
#define MORDOR_FIGHTER_FIRINGDURATION            1000
#define MORDOR_FIGHTER_BOUNTY_VALUE                1
End
--- Ende Code ---

Wenn ich dann im Spiel versuche, die Map zu starten, stürzt das Spiel sofort mit folgender Meldung ab: "ReplaceModule ModuleTag_0222 was not found for Mordor_Fighter, cannot continue. (Blablabla.)"
Ich habe dem ModuleTag schon 20 verschiedene Namen gegeben, und es funktioniert immer noch nicht.
Kann mir jemand sagen, was ich falsch gemacht habe?
Allerdings habe ich bisher keine Erfahrung mit Coding, nur mit Skripten, deshalb kann es auch sein, dass ich völligen Müll gecodet habe. Auch dann würde ich gerne wissen, was ich machen muss.

Schonmal Danke im Vorraus,
TheOnlyTrueWitchking

Gnomi:
ReplaceModule ersetzt ein vorhandenes Module. Wenn du sagst:

--- Code: ---ReplaceModule ModuleTag_02
Module ModuleTag_New
[..]
End
End

--- Ende Code ---
Dann muss es ein Module mit dem Namen ModuleTag_02 geben, dieses wird gelöscht und dafür das Module mit dem Namen ModuleTag_New eingefügt. (also quasi "ersetzt", darum auch Replace)
Dein Fehler ist also, dass du ein nicht vorhandenes Module ersetzen willst. Die Fehlermeldung besagt dann auch das: "Can't find Module"
Ebenso ist die sache mit dem "define" bei dir falsch.
Diese defines stehen NICHT in der Einheit drinnen, sondern in einer eigenen Ini. (und die defines funktionieren  auch in einer map.ini nicht)
Schau dir Mal die ini der Mordororks an.
Willst du das Leben von Orks ersetzen?
Dann such dir das Module für das Leben raus und ersetze es über ReplaceModule und schreib einfach bei maxHealth einen neuen Eintrag rein.
Willst du den Schaden verändern? Mach eine neue weapon und sag per weaponset in dem object mordorfighter, dass er sie verwenden soll.

Das könnte zum Beispiel so aussehen:


--- Code: ---Weapon MordorWarriorAxeGruenMap_Edain     ; BALANCE Orc Warrior Weapon ;Orc Fighter
  LeechRangeWeapon      = Yes
  AttackRange           = STANDARD_MELEE_ATTACK_RANGE
  MeleeWeapon           = Yes
  DelayBetweenShots     = MORDOR_FIGHTER_DELAYBETWEENSHOTS            ; time between shots, msec
  PreAttackDelay        = MORDOR_FIGHTER_PREATTACKDELAY             ; 300 is mace swing delay time before contact with target.
  PreAttackType         = PER_SHOT ; Do the delay each time we attack
  FireFX                = FX_GondorSwordHit
  FiringDuration        = MORDOR_FIGHTER_FIRINGDURATION    ; Duration of the mace swing

  DamageNugget                        ; A basic Nugget that just does damage
    Damage        = 150 ; balanced from 8
    Radius        = 0.0
    DelayTime     = 0
    DamageType    = SLASH
    DamageFXType  = SWORD_SLASH
    DeathType     = NORMAL
  End
End

Object Mordorfighter
    ReplaceModule ModuleTag_02 ; ActiveBody
     Body = ActiveBody ModuleTag_Overide
        CheerRadius       = EMOTION_CHEER_RADIUS
        MaxHealth         = 1200 ; balanced from 100
        MaxHealthDamaged  = 50 ;MORDOR_FIGHTER_HEALTH_DAMAGED
        BurningDeathBehavior = Yes
        BurningDeathFX       = FX_InfantryBurningFlame
    End
End
    WeaponSet
        Conditions = None
        Weapon = PRIMARY    MordorWarriorAxeGruenMap_Edain ;MordorWarriorAxeGruenMap_EdainGoth
        AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
    End
End
[\code]

Genauso kannst du auch Armor etc. verändern.
Bedenke aber: Bei Fernkämpfern lässt sich [b]nicht[/b] die Weapon durch eine map.ini verändern.
--- Ende Code ---

Only True Witchking:
Danke für die Antwort, Gnomi.
Ich habe jetzt folgendes in die Map.ini geschrieben:


--- Code: ---Object Mordorfighter
ReplaceModule ModuleTag_02
Body = ActiveBody ModuleTag_Overide
        CheerRadius       = EMOTION_CHEER_RADIUS
        MaxHealth         = 50
        MaxHealthDamaged  = 165
        BurningDeathBehavior = Yes
        BurningDeathFX       = FX_InfantryBurningFlame
    End
End
--- Ende Code ---

Allerdings kommt die Warnung "ModuleTag_02 was not found", obwohl in der Mordorfighter.ini doch ganz klar ein ModuleTag_02 definiert ist. Ich weiß also wieder  nicht weiter. Wie gesagt, ich habe noch nie etwas gecodet.



Außerdem noch eine Frage: Wofür steht eigentlich MaxHealthDamaged  = 165?
Und muss ich das auch verändern?

Gnomi:
Mein Fehler. Die Einheit heißt MordorFighter, nicht Mordorfighter. Groß und Kleinschreibung ist wichtig - bei MordorFighter sollte es das geben, bei Mordorfighter (da die Einheit nicht im Grundspiel existiert) natürlich nicht.
Sowas passiert, wenn man schnell sowas selbst schreibt. :D

MaxHealthdamaged kann (vor allem bei Gebäuden) dafür benutzt werden, dass sich das Modell dort ändert - Viele Gebäude fallen ja bei 50% Leben etwas zusammen - das ist weil die Leben eben unter MaxHealthdamaged drunter ist. (Systeme ala "Wenn Einheiten nur noch 50% Leben haben werden sie stärker" müssten auch alle darüber funktionieren)

Only True Witchking:
Vielen Dank! Es funktioniert jetzt wie gewünscht!

Außerdem war es nicht dein Fehler, ich hab ja sogar in die mordorfighter.ini geschaut, wo ich ganz klar hätte lesen können:
--- Code: ---Object MordorFighter
--- Ende Code ---
8-|

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln