Modding Union
Modderecke => Allgemeine Modding-Fragen => Thema gestartet von: EvilDet am 6. Jan 2010, 17:09
-
Da ich hier meine Fragen zu Coding, Modelling, Skinning usw. stellen möchte, habe ich in diesem Unterforum den Thread erstellt.
Nun zu meiner ersten Frage:
Wenn ich meine Einheit im Spiel sehe, sieht der Skin immer so aus, als ob er in der Mitte eine Lichtquelle hätte:
http://img85.imageshack.us/img85/3710/game2010010616564605.png
Der Skin ist in wirklichkeit allerdings dunkler:
http://img704.imageshack.us/img704/9955/w3dview2010010617081542.png
Was kann ich tun?
MfG
EvilDet
-
erm da haste iwas falsch gemacht beim Model export
Dieses verhalten hängt von den Eigenschaften ab die du deinem Model im "Renegade Material Editor" gegeben hast
Genauer von: Ambient Diffuse Specular Emessive und Shininess
-
Ich hab das so gemacht, wie Turin es in seinem Tutorial beschrieben hat, also Specular und Emissive auf weiß stellen und daraufhin diesen Button mit dem blauen Ball drücken.
Wenn das falsch sein sollte: Was soll ich machen, damit die Farben richtig sind?
-
Specular simuliert eine art Spiegelung auf der Oberfläche indem eine Farbe stellenweise aufgetragen wird, in der Dokumentation steht das diese Funktion nicht enthalten ist...
Emissive müsste schwarz sein, da es eine Art leuchten vom Model aus simuliert...
Eigentlich bist du bei den 4 Farbfeldern mit "Schwarz Schwarz Weiß Weiß" gut beraten würde ich behaupten...
-
So, ich bins wieder:
Da ich im Moment General Shepherd aus Modern Warfare 2 modelliert und geskinnt habe, aber es für Einheiten mit Pistolen keine Anis gibt (Warum auch? [ugly]), wollte ich nun eigene Animationen machen. Allerdings finde ich auch auf t3a kein Tutorial dafür.
Kann mir jemand bei der Suche helfen?
MfG
EvilDet
Edit:
Oder kann mir jemand passende Animationen aus C&C schicken (ich weiß nicht, ob das illegal ist...)
-
Sorry für den Doppelpost, aber ich bräuchte eure Hilfe:
Ich habe ein neues Gebäude erstellt, kann in ihm aber keine Einheiten/Helden ausbilden, denn wenn ich sie anklicke, kommt nur der durchgestrichene rote Kreis-Cursor.
Hier der Code der Einheit:
http://nopaste.info/f52e3ae6e6.html
Hier der CommandButton:
http://nopaste.info/0fe92d68b7.html
Und das CommandSet des Gebäudes:
http://nopaste.info/1a7722d3b3.html
Danke im Voraus
EvilDet
-
Hm bin mir zwar nicht sicher, aber mach mal im KindOf das Summoned weg und gib bei Side die Side deiner Faction an :-D Naja ansonsten alles ganz ok. Wenn ich es jetzt richtig verstanden hab kannst du den Balrog nicht anwählen oder ?
-
Doch, ich kann den Button klicken, es kommt auch das Klick-Geräusch, aber danach kommt nur der rote Cursor mit dem Invalid-Bild
-
Ich sehe weder einen Buildcost, noch einen Buildtime Parameter bei dir. Füge diese also ein.
Zusätzlich ist das hier vollkommen falsch:
# CommandSet AngbandCommandSet
# InitialVisible = 7
# //Main Menu
#
# 1 = Command_SelectRevivables MordorFortress
# 2 = Command_ConstructBalrog
# 6 = Command_Sell
#
#
# //Hero Menu
# 15 = Command_ConstructLordOfB alrogs
# 16 = Command_RadialBack
# End
Wenn überhaupt müsste es so ausehen:
# CommandSet AngbandCommandSet
# InitialVisible = 3
# //Main Menu
#
# 1 = Command_SelectRevivables MordorFortress
# 2 = Command_ConstructBalrog
# 3 = Command_Sell
#
#
# //Hero Menu
# 4 = Command_ConstructLordOfB alrogs
# 5 = Command_RadialBack
# End
Poste bitte noch den Button hierzu:
Command_SelectRevivables MordorFortress
Das hier "InitialVisible = 3" gibt an:
So viele Buttons werden im Hauptmenü Radial angezeigt.
-
Ok, hier:
CommandButton Command_SelectRevivablesMordorFortress
Command = PUSH_VISIBLE_COMMAND_RANGE
TextLabel = CONTROLBAR:SelectRevivablesMordorFortress
ButtonImage = UCCommon_EvilHeroes
ButtonBorderType = SYSTEM
DescriptLabel = CONTROLBAR:ToolTipCommandSelectRevivablesMordorFortress
Radial = Yes
CommandRangeStart = 14 //Starts its counting at 0, so command button 8 is 7
CommandRangeCount = 11
End
-
CommandRangeStart = 4
CommandRangeCount = 2
-
Hab jetzt mal Alles gemacht, was ihr gesagt habt, also
CommandRangeStart = 4
CommandRangeCount = 2
und
Ich sehe weder einen Buildcost, noch einen Buildtime Parameter bei dir. Füge diese also ein.
Wenn überhaupt müsste es so ausehen:
# CommandSet AngbandCommandSet
# InitialVisible = 3
# //Main Menu
#
# 1 = Command_SelectRevivables MordorFortress
# 2 = Command_ConstructBalrog
# 3 = Command_Sell
#
#
# //Hero Menu
# 4 = Command_ConstructLordOfB alrogs
# 5 = Command_RadialBack
# End
aber es ist immer noch das gleiche Problem: Der Button lässt sich anklicken, aber keine Einheit erscheint (es erscheint auch kein productionCount).
MfG
EvilDet
-
CommandRangeStart = 4
CommandRangeCount = 2
Könnt mich ja täuschen, aber wenn du das Untermenü aus Button 4 und 5 zusammengesetz haben willst, dann muss es eigtl heißen:
CommandRangeStart = 3
CommandRangeCount = 2
Man lese meine Tutorial, dort stehts eigtl auch das man RangeStart immer 1 niedriger schreiben muss als die Nr des Buttons der gemeint ist. Das Tut beschreibt eigtl genau das was du gefragt hast
(Tutorail findet ihr auf MU im Coding bereich als "Untermenüs")
-
Hab die Anmerkung hinter " CommandRangeStart = 4" gelesen, ist also auf "3" gesetzt, hab nur vergessen, es im Beitrag zu ändern ;).
MfG
EvilDet
-
Was daran liegt, dass Informatiker immer bei 0 anfangen zu zählen
/schlaukacken
-
Du hast immer noch keinen Buildtime und Buildcost Eintrag eingefügt. ;)
Wenn ja, stimmt etwas an deinem Gebäude nicht, sprich dessen ini weist einen Fehler auf.
-
Doch hab ich, hab nur meinen Beitrag nich editiert ;)
Side = Mordor
EditorSorting = UNIT
ThreatLevel = BALROG_THREAT_LEVEL
ThingClass = CHARACTER_UNIT
BuildCost = 4000
BuildTime = 30
CrusherLevel = 4 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
CrushWeapon = BalrogCrush
MaxSimultaneousOfType = 1
TransportSlotCount = TRANSPORTSLOTCOUNT_MONSTER
Und hier die .ini des Gebäudes:
http://nopaste.info/a6dc26cd29.html
-
Warum hast du die Kosten und Ausbildungszeit in der Gebäude.ini ausgeklammert?
Das hier erstmal rauslöschen, es sei denn es ist wirklich ein Buildplot-ExpansionGebäude einer Festung: CampnessValue = CAMPNESS_FORTRESS_EXPANS ION
Als nächstes fehlt dir der Productionbehaviour. Das ist mir jetzt auf den ersten Blick aufgefallen. Am besten kopierst du eine komplett-funktionierende ini zb. AngmarKaserne und änderst diese dann deinen Wünschen entsprechend.
-
Gut, jetzt funktioniert alles! Danke!
MfG
EvilDet
-
Ich habe eine neue Frage:
Diese bezieht sich auf das leveln von Helden:
Ich habe einen Helden erstellt, einen Experiencelevels.ini - Eintrag für ihn erstellt, er erscheint auf Stufe 1, in der Beschreibung inGame steht "Stufe 1/Maximale Stufe 10", aber er besitzt keine Level-Fortschritts-Anzeige im Palantir. Er kann also nicht leveln.
Code der Einheit:
http://nopaste.info/bab45405d3.html
Experiencelevels.ini - Eintrag:
http://nopaste.info/9ff2df3d93.html
Danke im Voraus
EvilDet
-
Das steht in deiner Unit.ini:
IsTrainable = No
Folglich rauslöschen.
-
Da hätte ichh auch selbst draufkommen können :D. Trotzdem Danke!
MfG
EvildDet
-
Eine weitere Frage von mir:
Ich habe eine FX gemacht, die dem Wort der Macht ähnlich ist:
http://www.youtube.com/watch?v=cOTvLQlF6iw
Doch wie kann ich machen, dass die Einheiten erst am Ende der FX sterben und nicht direkt, wenn der Spell ausgelöst wird?
Code der Weapon:
Weapon MorgothJähesFeuer
IdleAfterFiringDelay = 0
AttackRange = GANDALF_WORD_OF_POWER_RANGE
MinimumAttackRange = 0.8
WeaponSpeed = 10 ; dist/sec
MinWeaponSpeed = 10
MaxWeaponSpeed = 10 ; dist/sec Upper limit on scaling, when attacking past nominal "max" range
ScaleWeaponSpeed = Yes ; Used for lob weapons, scales speed proportional to range
RadiusDamageAffects = ALLIES ENEMIES NEUTRALS
DelayBetweenShots = 0 ; time between shots, msec
PreAttackDelay = 0
PreAttackType = PER_ATTACK ; Do the delay each time we attack a new target
PreAttackFX = FX_MorgothPreAttackBlastReal
FireFX = FX_JähesFeuer ;FX_MorgothBlast
FiringDuration = 0
DamageNugget ; A basic Nugget that just does damage
Damage = 12000
Radius = 500.0
DamageType = FLAME
DamageFXType = FLAME
DeathType = BURNED
DamageSpeed = 10.0 ; must match the ShockWaveSpeed below
End
; Magic damage.
DamageNugget ; A basic Nugget that just does damage
Damage = 12000
Radius = 500.0
DamageArc = 360
DelayTime = 0
DamageType = MAGIC
DamageFXType = FLAME
DeathType = BURNED
DamageScalar = 2000% NONE +HERO
End
; MetaImpactNugget ; A Nugget that throws things back with force
; HeroResist = .75
; ShockWaveAmount = 50.0
; ShockWaveRadius = 250.0
; ShockWaveTaperOff = 1.0
; ShockWaveZMult = 1.000
; ShockWaveSpeed = 700.0
; End
End
-
Das Zauberwort heißt DelayTime
Kannst du zu den meisten Nuggets dazuschreiben und verzögert deren effekt ;-)
-
Perfekt, jetzt funktioniert es!
Danke
MfG EvilDet
-
Eine neue Frage:
Wie kann ich den Spell "Flut" einem Helden geben?
Also in welchen inis muss ich etwas verändern?
MfG
EvilDet
-
Arwens Fähigkeit kopieren und in der Weaponm den OCL des Spell-book Floods verwenden.
-
So, das mit der Flut hat funktioniert.
Aber jetzt stehe ich vor einem neuen Problem:
Ich habe meinem Helden die "Weitsicht"-Fähigkeit zugewiesen, aber der Button bleibt grau, auch wenn der Held den benötigten Level erreicht hat:
ini-Abschnitt des Helden:
;-------------------------Allwissenheit------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_FarsightUnpause
SpecialPowerTemplate = SpecialAbilityElrondFarsight
TriggeredBy = Upgrade_ManweAllwissenheit
End
Behavior = OCLSpecialPower ModuleTag_FarsightOCL
StartsPaused = Yes
SpecialPowerTemplate = SpecialAbilityManweAllwissenheit
OCL = OCL_SpecialPowerFarSeeing
CreateLocation = CREATE_AT_LOCATION
End
experiencelevels.ini
;------------------ Manwe ------------------------
ExperienceLevel GondorManweLevel3
TargetNames = GondorManwe
RequiredExperience = Glorfindel_LVL3_EXP_NEEDED
ExperienceAward = Glorfindel_LVL3_EXP_AWARD
LevelUpFx = FX:GandalfLevelUp1FX
;LevelUpOCL = OCL_GandalfLevelUp1OCL
Rank = 3
AttributeModifiers = HeroLevelUpDamage2
Upgrades = Upgrade_ManweAllwissenheit
SelectionDecal
Texture = decal_hero_good
Style = SHADOW_ALPHA_DECAL
OpacityMin = 50%
OpacityMax = 100%
MinRadius = 40
MaxRadius = 200
MaxSelectedUnits = 40
End
End
Upgrade.ini
Upgrade Upgrade_ManweAllwissenheit
Type = OBJECT
End
Commandbutton.ini
CommandButton Command_ManweAllwissenheit
Command = SPECIAL_POWER
SpecialPower = SpecialAbilityManweAllwissenheit
TextLabel = CONTROLBAR:ManweAllwissenheit
DescriptLabel = CONTROLBAR:ToolTipManweAllwissenheit
ButtonImage = HSElrondFarSight
ButtonBorderType = ACTION
InPalantir = Yes
End
Specialpower.ini
;----------------------------------------------------------------------------
SpecialPower SpecialAbilityManweAllwissenheit
Enum = SPECIAL_SPELL_BOOK_PALANTIR_VISION
ReloadTime = 0
RadiusCursorRadius = 999999
InitiateAtLocationSound = Farsight
End
Commandset.ini
CommandSet ManweCommandSet
1 = Command_ToggleStance
2 = Command_ManweFlut
3 = Command_ManweAllwissenheit
12 = Command_CaptureBuilding
13 = Command_AttackMove
14 = Command_Stop
16 = Command_SetStanceBattle
17 = Command_SetStanceAggressive
18 = Command_SetStanceHoldGround
End
-
Ich helfe den Usern hier nur unter der Voraussetzung, dass sich bei mir bedankt wird. Ich denke das ist eine Sache der Höflichkeit und durchaus eine gerechtfertigte Forderung, wenn man bedenkt, wie vielen ich hier täglich mit Antworten zur Seite stehe.
;-------------------------Allwissenheit------------------
Behavior = UnpauseSpecialPowerUpgra de ModuleTag_FarsightUnpaus e
SpecialPowerTemplate = SpecialAbilityElrondFars ight
TriggeredBy = Upgrade_ManweAllwissenhe it
End
Behavior = OCLSpecialPower ModuleTag_FarsightOCL
StartsPaused = Yes
SpecialPowerTemplate = SpecialAbilityManweAllwi ssenheit
OCL = OCL_SpecialPowerFarSeein g
CreateLocation = CREATE_AT_LOCATION
End
SpecialPowerTemplate = SpecialAbilityElrondFars ight
SpecialPowerTemplate = SpecialAbilityManweAllwi ssenheit
Fällt dir was auf? Du hast zwei verschiedene Specialpowers angegeben. Schreib es so:
;-------------------------Allwissenheit------------------
Behavior = UnpauseSpecialPowerUpgra de ModuleTag_FarsightUnpaus e
SpecialPowerTemplate = SpecialAbilityManweAllwi ssenheit
TriggeredBy = Upgrade_ManweAllwissenhe it
End
Behavior = OCLSpecialPower ModuleTag_FarsightOCL
StartsPaused = Yes
SpecialPowerTemplate = SpecialAbilityManweAllwi ssenheit
OCL = OCL_SpecialPowerFarSeein g
CreateLocation = CREATE_AT_LOCATION
End
-
Oh, sorry, hab ich vergessen. Dann danke ich dir jetzt hier gleich doppelt, es funktioniert.
Aber kannst du mir evtl. noch sagen, wie ich jetzt einstelle, dass die geamte Map aufgedeckt wird, also so wie die Allwissenheitsfähigkeit bei Edain (Imladris)?
Danke im voraus
EvilDet
Edit: Ich hatte einen Geistesblitz, hab einfach das OCL vom Elfenbeinturm kopiert und jetzt funktioniert die Fähigkeit ;)
-
Sorry für den Doppelpost, aber ich hab mal wieder eine Frage:
Wie kann ich zwei Fähigkeiten kombinieren, also z.B einen Wirbelsturm erstellen, bei dem zugleich auch noch die Eisregen-Fähigkeit in Kraft tritt?
Danke schonmal im voraus
EvilDet
Edit:
Anscheinend weiß niemand, wie das geht
-
Mit ein wenig selbst überlegen, schafft man das schon. ;)
Schnapp dir Dains MightyRage Fähigkeit und schaue dir diese genauer an.
Dort kannst du ModuleTags miteinander veknüpfen und somit OCLs oder Wetterspells zusammenmischen.
-
Danke Ea, jetzt funktioniert es alles. Damit wäre dieser Held abgeschlossen.
Allerdings habe ich wieder einige Fragen parat, an denen ich schon Stunden verzweifle:
1.Ich habe meinem Helden Kankras Tunnelbau-Fähigkeit gegeben, doch ich kann den Helden nicht, wie eigentlich vorgesehen, irgendwo auf der Map, sondern nur im sichtbaren Bereich erscheinen lassen.
Behaviour:
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_TunnelEnabler
SpecialPowerTemplate = SpecialAbilityTulkasRun
TriggeredBy = Upgrade_TulkasRun
End
Behavior = SpecialPowerModule ModuleTag_TeleportStarter
SpecialPowerTemplate = SpecialAbilityTulkasRun
UpdateModuleStartsAttack = Yes
StartsPaused = Yes
SetModelCondition = ModelConditionState:EMOTION_CELEBRATING
SetModelConditionTime = 3.6
End
Behavior = TeleportSpecialAbilityUpdate ModuleTag_TeleportUpdate
SpecialPowerTemplate = SpecialAbilityTulkasRun
UnpackTime = 1800
PackTime = 1300
UnpackingVariation = 3
ApproachRequiresLOS = No
BusyForDuration = 1800
MaxDistance = 9999999999
DestinationWeaponName = TulkasRun
End
Specialpower.ini
SpecialPower SpecialAbilityTulkasRun
Enum = SPECIAL_BALROG_WINGS
ReloadTime = 0
InitiateAtLocationSound = CaH_Invulnerability
End
2. Ich wollte, dass mein Held den Gegner wegschleudert, also so wie Sharkus Menschenfresserfähigkeit, allerdings macht die Zieleinheit nur einen Salto auf der Stelle und kämpft dann ganz normal weiter. Die ihm zugewiesene Animation macht er auch nicht.
Behaviour:
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_ManEaterEnabler
SpecialPowerTemplate = SpecialAbilityTulkasGrab
TriggeredBy = Upgrade_TulkasRinger
End
Behavior = SpecialPowerModule ModuleTag_SpecialPowerModuleGrabStarter
SpecialPowerTemplate = SpecialAbilityTulkasGrab
UpdateModuleStartsAttack = Yes
StartsPaused = Yes
InitiateSound = SharkuManeaterStartMS
End
Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_WeaponFireSpecialAbilityUpdateGrab
SpecialPowerTemplate = SpecialAbilityTulkasGrab
SkipContinue = Yes
UnpackTime = 933 ; Frame 28/99
; PackTime = 2367 ; Remaining 71/99 frames
StartAbilityRange = 1.0
SpecialWeapon = TulkasRinger
ChainedButton = Command_SpecialAbilityTulkasRingerFlingPassenger
CustomAnimAndDuration = AnimState:SPECIAL_WEAPON_ONE AnimTime:300
TriggerAttributeModifier = SharkuManEater
AttributeModifierDuration = 20000
TriggerSound = SharkuManEaterEatingMS
BusyForDuration = 2000
End
Behavior = PlayerHealSpecialPower ModuleTag_SpecialPowerModuleFlingPassengerStarter
SpecialPowerTemplate = SpecialAbilityTulkasDrop
UpdateModuleStartsAttack = Yes
StartsPaused = No
HealAmount = 0.0
HealAsPercent = Yes
HealAffects = HERO
HealRadius = 0.0
End
Behavior = FlingPassengerSpecialAbilityUpdate ModuleTag_FlingPassengerSpecialAbilityUpdate
SpecialPowerTemplate = SpecialAbilityTulkasrDrop
UnpackTime = 1250
FlingPassengerVelocity = X:0 Y:0 Z:0
FlingPassengerLandingWarhead = TulkasRingerWarhead
End
Specialpower.ini
SpecialPower SpecialAbilityTulkasGrab
Enum = SPECIAL_AT_VISIBLE_OBJECT
ObjectFilter = ALL ENEMIES -STRUCTURE
ReloadTime = 0
End
;------------------------------------------------------------------------------
SpecialPower SpecialAbilityTulkasDrop
Enum = SPECIAL_GENERAL_TARGETLESS
ReloadTime = 0
End
Danke im Voraus
MfG
EvilDet
-
Sorry für den Doppelpost, aber es sind 3 Fragen aufgekommen, die (denke ich) ziemlich einfach zu beantworten sein müssten. Habe schon einige Sachen ausprobiert, bei der letzten Frage viele inis durchforstet und komme einfach zu keinem Ergebnis. Wäre nett, wenn ihr mir helfen könnt.
1. Wie weist man einer Fähigkeit eine Animation zu?
2. Wie mache ich diese blaue Aura um die Zwergen-Helden weg?
3.In welcher ini findet man das Object "TheDroppedRing"?
Danke im Voraus
EvilDet
P.S.:
Ich weiß, es gibt einen Edit-Button, doch dann merkt ja (glaube ich) niemand, dass ich eine neue Frage habe (stimmt doch, oder?)
-
1. Wie weist man einer Fähigkeit eine Animation zu?
2. Wie mache ich diese blaue Aura um die Zwergen-Helden weg?
3.In welcher ini findet man das Object "TheDroppedRing"?
1. In den behaviourModulen der Fähigkeiten stehen verschiedene Dinge, die auf Animationen hinweisen. WhichSpecialWeapon = 1 würde z.b. auf die Animation:
Animation = SPECIAL_WEAPON_ONE hinweisen.
UnpackVariation = 1
Hinweis auf: Animation= UNPACKING SPECIAL_POWER_1 und PACKING SPECIAL_POWER_1, sowie SPECIAL_POWER_1
Einfach ein wenig ausprobieren.
2. Das ist ein extra draw. Suche einmal nach "icon" in deiner ini und lösche den gesamten draw davon.
3. data/ini/crate.ini
-
Dankeschön Ea!
Neue Frage, diesmal nicht zum Coding, sondern zum W3D-Viewer:
Wenn ich den W3D-Viewer aus dem BFME-MOD-SDK starte, erscheint nur das "Object Control"-Fenster.
Deinstallieren und neu installieren hat nichts geholfen...
Danke im Voraus
Evil Det
-
Ich glaube das ist der falsche Viewer.
In Turins Tut ist eine Linkliste.
Downloade dir diesen Viewer.
-
Der Link in Turins Tutorial bezieht sich auf das Mod SDK...
Manchmal wird der w3d Viewer allerdings nur minimiert angezeigt.
Versuche mal Rechtsklick auf die Schaltfläche in der Taskbar und dann
Maximieren.
Ich hoffe, ich konnte helfen.
Viele Grüße Anoverion
-
Ahh, danke, ich musste es per Task-Manager maximieren, bei Win7 geht das ja nicht mehr mit Rechtsklick...
Jetzt funktioniert es wieder
EvilDet
-
Sorry für den Doppelpost, aber ich habe ein großes Problem:
Woran kann es liegen, dass die Kommandopunkte beim Bau eines Helden verschwinden?
Danke im voraus
EvilDet
-
Ein Weapon-Firing Behaviour in der ini des Helden, welcher Rohstoffgebäude betrifft und somit deren Produktion steigert. Rohstoffsteigerung dürfen zwingerndermaßen nur über den Spellbook-Attributebehaviour gelöst werden, ansonsten kommt es immer zu diesem Fehler.
-
Danke für die Antwort ea, also tritt dieser Fehler auf, wenn z.B. Ein Gehöft vom Führerschaftsbonus des Helden betroffen ist?
Danke im voraus
EvilDet
-
In der Tat. ;)
-
Danke für die Antwort ea, also tritt dieser Fehler auf, wenn z.B. Ein Gehöft vom Führerschaftsbonus des Helden betroffen ist?
Danke im voraus
EvilDet
Ea hat geschrieben das es Nur vom Spellbock aus geht also wird es wohl stimmen :)
Also Jup auch dann
Gimli
-
Nein, ich habe geschrieben, dass nur dieser Behaviour aus dem Spellbook verwendbar ist (Industry), alle anderen Formen, sei es eine Führerschaft oder eine passive Weapon, verursachen diesen Fehler.
Falls du also eine Rohstoffsteigerungsfähig keit suchst, dann schnapp dir meine Curomo Fähigkeit in Sarumans.ini, die tadelos funktioniert.
-
Danke für deine Hilfe ea, jetzt läuft alles tadellos.
-
Tut mir leid für den Doppelpost, aber ich quäle mich jetzt schon 2 Stunden mit einer neuen Fragestellung:
Ich habe zwei Fähigkeiten für eine Horde gemacht und mich dabei an den Elitezwergen aus dem Erweiterungspack orientiert (von den Codes her). Ich habe die Behaviours sowohl in die Elvenhordes.ini als auch in die Magier.ini geschrieben, bei den Commandbuttons OK_FOR_MULTI_SELECT und OK_FOR_MULTI_EXECUTE hinzugefügt und Commandsets für die Horde und die Einheit selbst angelegt. Jedoch funktionieren die Fähigkeiten noch immer nicht.
Meine Frage lautet also: Wie schaffe ich es, dass diese Fähigkeiten funktionieren?
Hier die Codes:
Magier.ini
//--------------------------------------------------------------------------
// ALBENSTERN ÖFFNEN //
//--------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_StoreObjectsForLevel2TeleportEnabler
SpecialPowerTemplate = SpecialAbilityMagierAlbensternOpen
End
Behavior = SpecialPowerModule ModuleTag_StoreObjectsForLevel2Teleport
SpecialPowerTemplate = SpecialAbilityMagierAlbensternOpen
StartsPaused = Yes
UpdateModuleStartsAttack = Yes
End
Behavior = StoreObjectsSpecialPower ModuleTag_StoreObjectsForLevel2TeleportUpdate
SpecialPowerTemplate = SpecialAbilityMagierAlbensternOpen
StartAbilityRange = 1000000.0 // i.e. pretty large
ApproachRequiresLOS = No // can do this without seeing the target units.
Radius = 100 // the radius that will capture units
UnpackTime = 0
PreparationTime = 1
FreezeAfterTriggerDuration = 0 // Zero!
ChainedButton = "Command_SpecialAbilityMagierAlbensternTeleport" ;TeleportStoredList
//TriggerFX = FX_CAHTeleport
End
//--------------------------------------------------------------------------
// EINHEITEN DURCH DEN STERN SCHICKEN
//--------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_TeleportStoredObjectsEnabler
SpecialPowerTemplate = SpecialAbilityMagierAlbensternTeleport
End
Behavior = SpecialPowerModule ModuleTag_TeleportStoredObjects
SpecialPowerTemplate = SpecialAbilityMagierAlbensternTeleport
StartsPaused = Yes
UpdateModuleStartsAttack = Yes
End
Behavior = TeleportToCasterSpecialPower ModuleTag_TeleportStoredObjectsUpdate
SpecialPowerTemplate = SpecialAbilityMagierAlbensternTeleport
UnpackingVariation = 1
StartAbilityRange = 1000000.0 // i.e. pretty large
Radius = 100 // the radius that will capture units
ApproachRequiresLOS = No // can do this without seeing the target units.
TargetFX = FX_CAHBlink
TriggerFX = FX_CAHTeleport
MinDestinationRadius = 10 // the inner radius of the ring where units will teleport to
MaxDestinationRadius = 100 // the outer radius of the ring where units will teleport to
UnpackTime = 2000
PreparationTime = 1
FreezeAfterTriggerDuration = 2500 // Hold AI for this long after we fire.
End
;Heilen---------------------------------------------------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_RestorationUnpause
SpecialPowerTemplate = SpecialAbilityMagierHeal ;ElrondRestoration
;TriggeredBy = Upgrade_ElrondRestoration
End
Behavior = SpecialPowerTimerRefreshSpecialPower ModuleTag_RestorationRefresh
SpecialPowerTemplate = SpecialAbilityMagierHeal
StartsPaused = Yes
UpdateModuleStartsAttack = No
AffectAllies = Yes
AttributeModifierRange = 150
AttributeModifierAffects = ALL -ElvenMagier ALLIES
End
Behavior = PlayerHealSpecialPower ModuleTag_RestorationHeal
SpecialPowerTemplate = SpecialAbilityMagierHealHeal
HealAffects = INFANTRY CAVALRY MONSTER
HealAmount = 0.2 ; percent of max health
HealRadius = 150
HealFX = FX_ElrondHealSpecialPower
End
Elvenhordes.ini
//--------------------------------------------------------------------------
// ALBENSTERN ÖFFNEN //
//--------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_StoreObjectsForLevel2TeleportEnabler
SpecialPowerTemplate = SpecialAbilityMagierAlbensternOpen
End
Behavior = SpecialPowerModule ModuleTag_StoreObjectsForLevel2Teleport
SpecialPowerTemplate = SpecialAbilityMagierAlbensternOpen
StartsPaused = Yes
UpdateModuleStartsAttack = Yes
End
Behavior = StoreObjectsSpecialPower ModuleTag_StoreObjectsForLevel2TeleportUpdate
SpecialPowerTemplate = SpecialAbilityMagierAlbensternOpen
StartAbilityRange = 1000000.0 // i.e. pretty large
ApproachRequiresLOS = No // can do this without seeing the target units.
Radius = 100 // the radius that will capture units
UnpackTime = 0
PreparationTime = 1
FreezeAfterTriggerDuration = 0 // Zero!
ChainedButton = "Command_SpecialAbilityMagierAlbensternTeleport"
//TriggerFX = FX_CAHTeleport
End
//--------------------------------------------------------------------------
// EINHEITEN DURCH DEN STERN SCHICKEN
//--------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_TeleportStoredObjectsEnabler
SpecialPowerTemplate = SpecialAbilityMagierAlbensternTeleport
End
Behavior = SpecialPowerModule ModuleTag_TeleportStoredObjects
SpecialPowerTemplate = SpecialAbilityMagierAlbensternTeleport
StartsPaused = Yes
UpdateModuleStartsAttack = Yes
End
Behavior = TeleportToCasterSpecialPower ModuleTag_TeleportStoredObjectsUpdate
SpecialPowerTemplate = SpecialAbilityMagierAlbensternTeleport
UnpackingVariation = 1
StartAbilityRange = 1000000.0 // i.e. pretty large
Radius = 100 // the radius that will capture units
ApproachRequiresLOS = No // can do this without seeing the target units.
TargetFX = FX_CAHBlink
TriggerFX = FX_CAHTeleport
MinDestinationRadius = 10 // the inner radius of the ring where units will teleport to
MaxDestinationRadius = 100 // the outer radius of the ring where units will teleport to
UnpackTime = 2000
PreparationTime = 1
FreezeAfterTriggerDuration = 2500 // Hold AI for this long after we fire.
End
;Heilen---------------------------------------------------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_RestorationUnpause
SpecialPowerTemplate = SpecialAbilityMagierHeal
End
Behavior = SpecialPowerTimerRefreshSpecialPower ModuleTag_RestorationRefresh
SpecialPowerTemplate = SpecialAbilityMagierHeal
StartsPaused = Yes
UpdateModuleStartsAttack = No
AffectAllies = Yes
AttributeModifierRange = 150
AttributeModifierAffects = ALL -ElvenMagier ALLIES
End
Behavior = PlayerHealSpecialPower ModuleTag_RestorationHeal
SpecialPowerTemplate = SpecialAbilityMagierHealHeal
HealAffects = INFANTRY CAVALRY MONSTER
HealAmount = 0.2 ; percent of max health
HealRadius = 150
HealFX = FX_ElrondHealSpecialPower
End
Specialpower.ini
;------------------------------------------------------------------------------
SpecialPower SpecialAbilityMagierAlbensternOpen
Enum = SPECIAL_STORE_LIST_1
RadiusCursorRadius = 100.0
ReloadTime = 90000 // Uses chained reload time.
ObjectFilter = ANY +INFANTRY +CAVALRY ALLIES
InitiateSound = CaH_TeleportPart1
End
;------------------------------------------------------------------------------
SpecialPower SpecialAbilityMagierAlbensternTeleport
Enum = SPECIAL_TELEPORT_LIST_TO_POSITION
RadiusCursorRadius = 100.0
ReloadTime = 90000
End
;----------------------------------------------------------------------------
SpecialPower SpecialAbilityMagierHeal
Enum = SPECIAL_GENERAL_TARGETLESS
RadiusCursorRadius = 150
ReloadTime = 120000
End
;----------------------------------------------------------------------------
SpecialPower SpecialAbilityMagierHealHeal
Enum = SPECIAL_GENERAL_TARGETLESS_TWO
RadiusCursorRadius = 150
ReloadTime = 120000
End
Commandbutton.ini
CommandButton Command_SpecialAbilityMagierHealHeal
Command = SPECIAL_POWER
SpecialPower = SpecialAbilityMagierHealHeal
End
CommandButton Command_SpecialAbilityMagierHeal
Command = SPECIAL_POWER
SpecialPower = SpecialAbilityMagierHeal
TextLabel = CONTROLBAR:MagierHeal
DescriptLabel = CONTROLBAR:ToolTipMagierHeal
ButtonImage = SBGood_Heal
Options = NEED_TARGET_POS OK_FOR_MULTI_SELECT OK_FOR_MULTI_EXECUTE
ButtonBorderType = ACTION
RadiusCursorType = HealRadiusCursor
InPalantir = Yes
CommandTrigger = Command_SpecialAbilityMagierHealHeal
End
CommandButton Command_SpecialAbilityMagierAlbensternOpen
Command = SPECIAL_POWER
SpecialPower = SpecialAbilityMagierAlbensternOpen
Options = NEED_TARGET_POS OK_FOR_MULTI_SELECT CONTEXTMODE_COMMAND OK_FOR_MULTI_EXECUTE
TextLabel = CONTROLBAR:MagierAlbenstern
ButtonImage = HSKingDainSummonRoyalGuard
ButtonBorderType = ACTION
DescriptLabel = CONTROLBAR:ToolTipMagierAlbenstern
InPalantir = Yes
RadiusCursorType = DominateRadiusCursor
End
CommandButton Command_SpecialAbilityMagierAlbensternTeleport
Command = SPECIAL_POWER
SpecialPower = SpecialAbilityMagierAlbensternTeleport
Options = NEED_TARGET_POS OK_FOR_MULTI_SELECT CONTEXTMODE_COMMAND OK_FOR_MULTI_EXECUTE
InPalantir = No
RadiusCursorType = EnshroudingMistRadiusCursor // should be different to the other power probably.
End
Commandset.ini
CommandSet ElvenMagierCommandSet
1 = Command_ToggleStance
2 = Command_SpecialAbilityMagierAlbensternOpen
3 = Command_SpecialAbilityMagierHeal
13 = Command_AttackMove
14 = Command_Stop
16 = Command_SetStanceBattle
17 = Command_SetStanceAggressive
18 = Command_SetStanceHoldGround
End
CommandSet ElvenMagierHordeCommandSet
1 = Command_ToggleStance
2 = Command_SpecialAbilityMagierAlbensternOpen
3 = Command_SpecialAbilityMagierHeal
13 = Command_AttackMove
14 = Command_Stop
16 = Command_SetStanceBattle
17 = Command_SetStanceAggressive
18 = Command_SetStanceHoldGround
End
Danke im Voraus!
EvilDet
-
Behavior = UnpauseSpecialPowerUpgra de ModuleTag_StoreObjectsFo rLevel2TeleportEnabler
SpecialPowerTemplate = SpecialAbilityMagierAlbe nsternOpen
End
Behavior = SpecialPowerModule ModuleTag_StoreObjectsFo rLevel2Teleport
SpecialPowerTemplate = SpecialAbilityMagierAlbe nsternOpen
StartsPaused = Yes
UpdateModuleStartsAttack = Yes
End
Das ist falsch. Du sagst, die Fähigkeit pausiert und benötigt ein Upgrade. Gleichermaßen definierst du dieses Upgrade aber nicht. Richtig wäre es so:
Behavior = UnpauseSpecialPowerUpgra de ;ModuleTag_StoreObjectsFo rLevel2TeleportEnabler
; SpecialPowerTemplate = SpecialAbilityMagierAlbe nsternOpen
;End
Behavior = SpecialPowerModule ModuleTag_StoreObjectsFo rLevel2Teleport
SpecialPowerTemplate = SpecialAbilityMagierAlbe nsternOpen
StartsPaused = No
UpdateModuleStartsAttack = Yes
End
oder so:
Behavior = UnpauseSpecialPowerUpgra de ModuleTag_StoreObjectsFo rLevel2TeleportEnabler
SpecialPowerTemplate = SpecialAbilityMagierAlbe nsternOpen
TriggeredBy = "Dein Upgrade der Horde"
End
Behavior = SpecialPowerModule ModuleTag_StoreObjectsFo rLevel2Teleport
SpecialPowerTemplate = SpecialAbilityMagierAlbe nsternOpen
StartsPaused = Yes
UpdateModuleStartsAttack = Yes
End
-
Ahhh, jetzt weiß ich auch, warum meine Fähigkeiten so oft schon nicht funktioniert haben .
Vielen Dank ea!
Edit:
Neues Problem:
Wie kann ich eine ModelFX, die eigentlich gehidet ist, von Frame x bis Frame y einer Animation anzeigen lassen?
Also nochmal zum besseren Verständnis:
Eine Animation wird abgespielt. Sie erreicht Frame 48, nun soll die ModelFX angezeigt werden. Ab Frame 61 soll die ModelFX wieder versteckt werden.
Problem Nummer 2:
Woran kann es liegen, dass Einheiten keinen Auswahlkreis haben?
Danke im Voraus
EvilDet
-
zum 1.:
FXEvent = Frame:20 Name:FX_BalrogScreamEfx
Beim Animation state angeben
(beispiel ist aus neutral/neutralunits -> Balrog)
zum 2.:
Das ist das Selection Decal aus der experiencelevels.ini, einfach bei passendem eintrag suchen, bzw die units einem levelsystem zuordnen sollte das noch nicht der fall sein ;-)
-
Danke für die Antwort, Alien. Ich habe deine Tutorials auch aufmerksam gelesen und mir ist dieser Block natürlich nicht entgangen. Jedoch lässt sich so doch keine ModelFx anzeigen, sondern nur eine FXList, oder? Und ich habe es mit deiner Möglichkeit versucht, bin jedoch daran gescheitert, dass meine FX komplett schwarz und nicht richtig gedreht war :D
EvilDet
-
Nun ja es gibt noch die möglichkeit (sollte die animation mit einer fähigkeit zusammenhängen) das ganze über ConditionStates zu machen und mit Scripts (also scripts.lua und scriptevents.xml), solltest du damit keine erfahrung haben hilft dir dieses Tutorial:
http://modding-union.com/?path=codingtuts#randomluascript
Das ist zwar für eine zufällige ausblendung/einblendung, aber sollte kein ding sein das umzuschreiben, wenn doch einfach meckern :P
-
So, nach einiger Zeit stehe ich wieder vor einem neuen (relativ kleinem) Problem:
Teile einer Einheit haben ingame keinen Schatten. Das bedeutet, dass die Waffe einen Schatten wirft, der Körper der eigentlichen Einheit jedoch nicht.
Woran kann das liegen?
Denn die beiden Teile sind in RenX aneinander-attached, bilden also ein einziges Objekt und benutzen dieselben Exportsettings.
Danke im Voraus
EvilDet
-
Das passiert, wenn du zwei Subobjecte miteinander attachest, diese aber unterschiedliche Skins nutzen. Attache nur Subobjecte, die den gleichen Skin nutzen.
-
Danke Ea, wieder ein Problem weniger :)
Jedoch ist ein neues Problem entstanden, oder vielmehr eine Frage, die den Bereich Coding betrifft:
Ist es möglich, den StealthDetector-Behaviour an ein Upgrade zu binden?
// Detects other stealth units
Behavior = StealthDetectorUpdate StealthDetectorUpdateModuleTag
DetectionRate = 50 // how often to rescan for stealthed things in my sight (msec)
End
Denn das einfache Hinzufügen eines "TriggeredBy"-Eintrags sorgt für einen Gamecrash.
Danke im Voraus!
EvilDet
-
RequiredUpgrade
Das dürfte funktionieren. Ansonsten einfach mal in der Festung von "Wild" nachschauen, dort werden die Bats und deren Detection per UP angezeigt.
-
Danke, ea, so langsam leuchten mir viele Dinge ein, worüber ich mir vorher den Kopf zerbrochen habe :)
Doch es stellt sich eine neue Frage:
Lässt sich die Verkleiden-Fähigkeit des CaH an eine Zeit binden? Ich will also, dass mein Held für eine Minute wie der gewählte Feind aussieht, und sich danach wieder "zurückverwandelt".
Das Einfügen eines "Duration"-Eintrags führt zu einem Gamecrash.
Danke im Voraus
-
Hmm, also damit habe ich mich ehrlich gesagt noch nicht beschäftigt. Könntest du die Codes einfach mal hier hinein stellen? Vielleicht finden wir ja einen Weg. ;)
-
Danke :)
Hier die Codes aus der Helden.ini
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_SilwnyaDisguiseEnabler
SpecialPowerTemplate = SpecialAbilitySilwynaDisguise
TriggeredBy = Upgrade_Level_6
End
Behavior = StealthUpdate ModuleTag_SilwynaDisguiseModule
StealthDelay = 1
DisguisesAsTeam = Yes
RevealDistanceFromTarget = 1.0f
OrderIdleEnemiesToAttackMeUponReveal = Yes
InnateStealth = No
DisguiseTransitionTime = 2000
DisguiseRevealTransitionTime = 1000
End
Behavior = SpecialPowerModule ModuleTag_SilwynaDisguiseStarter
SpecialPowerTemplate = SpecialAbilitySilwynaDisguise
UpdateModuleStartsAttack = Yes
StartsPaused = Yes
InitiateSound = CaH_Disguise
End
Behavior = SpecialAbilityUpdate ModuleTag_SilwynaDisguiseUpdate
SpecialPowerTemplate = SpecialAbilitySilwynaDisguise
StartAbilityRange = 1000000.0
ApproachRequiresLOS = No
End
Sollten dir bekannt vorkommen, ea, stammen aus deinem Tutorial ;)
Edit:
In Grimas "Escape"-Behaviour gibt es einen Eintrag, der mit "EffectDuration" bezeichnet wird. Wenn man diesen in das Update-Module des "Disguise"-Behaviours meines Heldeneinträgt, gibt es zwar keinen Gamecrash, es ändert sich allerdings auch nichts daran, dass die Fähigkeit ewig andauert.
-
Kannst du noch die Specialpower von dir einfügen? Das Escape-Module nicht funktioniert, liegt vermutlich am Enum.
-
Ok, hier die Specialpower.ini
;------------------------------------------------------------------------------
SpecialPower SpecialAbilitySilwynaDisguise
Enum = SPECIAL_DISGUISE_AS_VEHICLE
ReloadTime = 120000
ObjectFilter = ANY +INFANTRY +HERO -BIG_MONSTER -CREATE_A_HERO NOT_FLYING_UNITS
End
Danke für deine Hilfe!:)
-
Ohje, das scheint ziemlich festgesessen zu sein, ich glaube daran kann man nicht viel drehen. Ich schaue es mir mal an, sehe aber nicht viel Hoffnung.
-
Ok, danke trotzdem :)
-
Wie wäre es mit Blademaster aber ohne Attributemodifier und FX, also nur als Fake Ability, der dauert 60 Sekunden und löst einen bestimmten Modelcondition State aus (z.B. USER_3)
Bei deinem Stealth fügt du dann sowas ein wie RequiredModelCondition = USER_3 oder so ähnlich, weiß grad nicht wie das genau heißt
-
Dann könnte ich aber nicht zu jeder beliebigen Einheit werden, sondern nur zu dem Model, dass in diesem Modelconditionstate angegeben ist, oder?
MfG
-
Nein der ModelCondition ist genauso Fake, der löst die Fähigkeit aus wie ein Upgrade, nur verschwindet er eben nach einer Minute wieder, was ein Upgrade nicht tut
Aber vielleicht fällt Ea noch was einfacheres ein, ich habe so das Geüfhl meine Idee ist mit Kanonen auf Spatzen schießen :P
-
Ich weiß irgendwie immer noch nicht genau, was du meinst :D
Meine Fähigkeit sieht jetzt so aus:
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_SilwnyaDisguiseEnabler
SpecialPowerTemplate = SpecialAbilitySilwynaDisguise
TriggeredBy = Upgrade_Level_6
End
Behavior = StealthUpdate ModuleTag_SilwynaDisguiseModule
StealthDelay = 1
DisguisesAsTeam = Yes
RevealDistanceFromTarget = 1.0f
OrderIdleEnemiesToAttackMeUponReveal = Yes
InnateStealth = Yes
DisguiseTransitionTime = 2000
DisguiseRevealTransitionTime = 1000
End
Behavior = SpecialPowerModule ModuleTag_SilwynaDisguiseStarter
SpecialPowerTemplate = SpecialAbilitySilwynaDisguise
UpdateModuleStartsAttack = Yes
StartsPaused = Yes
InitiateSound = CaH_Disguise
SetModelCondition = ModelConditionState:USER_3
SetModelConditionTime = 60.0
End
Behavior = SpecialAbilityUpdate ModuleTag_SilwynaDisguiseUpdate
SpecialPowerTemplate = SpecialAbilitySilwynaDisguise
StartAbilityRange = 1000000.0
ApproachRequiresLOS = No
End
ModelconditionState:
ModelConditionState = USER_3
ParticleSysBone = NONE Predator FollowBone:Yes Persist:SPAWN PersistID:100
End
Aber die Fähigkeit dauert noch immer ewig an. Was muss ich noch ändern?
Danke für die Hilfe!
EvilDet
-
Teste es mal so ;-) (ich hab hier Required Condition = USER_3 hinzugefügt
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_SilwnyaDisguiseEnabler
SpecialPowerTemplate = SpecialAbilitySilwynaDisguise
TriggeredBy = Upgrade_Level_6
End
Behavior = StealthUpdate ModuleTag_SilwynaDisguiseModule
RequiredConditions = USER_3
StealthDelay = 1
DisguisesAsTeam = Yes
RevealDistanceFromTarget = 1.0f
OrderIdleEnemiesToAttackMeUponReveal = Yes
InnateStealth = Yes
DisguiseTransitionTime = 2000
DisguiseRevealTransitionTime = 1000
End
Behavior = SpecialPowerModule ModuleTag_SilwynaDisguiseStarter
SpecialPowerTemplate = SpecialAbilitySilwynaDisguise
UpdateModuleStartsAttack = Yes
StartsPaused = Yes
InitiateSound = CaH_Disguise
SetModelCondition = ModelConditionState:USER_3
SetModelConditionTime = 60.0
End
-
Also bei mir gibt das einen Gamecrash :D
-
hmm habs nicht getestet :P
werd mich mal umschauen, vl fällt mir ja noch was ein
-
So, ich hab die Fähigkeit jetzt einfach mal ein ganz normales Verkleiden sein lassen und habe eine neue Frage:
Wie kann ich Random-Upgradeskins definieren, also in meinem Fall, dass aus dem blonden Elf (Standard-Haarfarbe: Braun) mit dem Kauf des "Schwere Rüstung"-Upgrades ein blonder Elf mit schwerer Rüstung wird?
Code der (derzeitigen) Upgradetextures:
Behavior = SubObjectsUpgrade Armor_Upgrade
TriggeredBy = Upgrade_ElvenHeavyArmor
UpgradeTexture = euelfwar.tga 0 euelfwar_ha.tga
UpgradeTexture = euelfwar1.tga 0 euelfwar_1ha.tga
UpgradeTexture = euelfwar2.tga 0 euelfwar_2ha.tga
UpgradeTexture = euelfwar3.tga 0 euelfwar_3ha.tga
;RecolorHouse = Yes
ExcludeSubobjects = Forged_Blade
End
Danke im Voraus
EvilDet
-
Du machst folgendes:
Ich nehme jetzt an deine Einheit heißt ElvenWarrior
Object ElvenWarrior
SelectPortrait = UPRohan_Peasant
Draw = W3DScriptedModelDraw ModuleTag_01
DefaultModelConditionState
;Give it a model so it'll show up in WB
Model = RUPsnt_1_SKN
Skeleton = RUPsnt_1_SKL
End
End
;***** IMPORTANT NOTE! ***************************************************************
;Certain Upgrades and costs may need to be propagated from here. One example was veterancy
;overlays.
;*************************************************************************************
Side = Elves
EditorSorting = UNIT
BuildVariations = ElvenWarriorBraun ElvenWarriorBlond ElvenWarriorSchwarz
KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT SWARM_DOZER GRAB_AND_DROP DOZER
;Shadow = SHADOW_DECAL
;ShadowSizeX = 24;
;ShadowSizeY = 24;
;ShadowTexture = ShadowI;
End
Aus deinem jetzigen Code löscht du die RandomTextures raus und nennst du Einheit ElvenWarriorBraun, außerdem änderst du deinen Code folgfendermaßen
Behavior = SubObjectsUpgrade Armor_Upgrade
TriggeredBy = Upgrade_ElvenHeavyArmor
UpgradeTexture = euelfwar.tga 0 euelfwar_ha.tga
;RecolorHouse = Yes
ExcludeSubobjects = Forged_Blade
End[/code)
dann machst du ein ChildObject ElvenWarriorBlond
mit der RandomTexture euelfwar1.tga statt euelfwar.tga und folgendem
Behavior = SubObjectsUpgrade Armor_Upgrade
TriggeredBy = Upgrade_ElvenHeavyArmor
UpgradeTexture = euelfwar.tga 0 euelfwar_1ha.tga
;RecolorHouse = Yes
ExcludeSubobjects = Forged_Blade
End
Dasselbe für jede weitere haarfarbe, du musst sie alle bei den BuildVariations hinzufügen
-
Randommodelle lassen sich immer eleganter verwenden. Die Wahrscheinlichkeitsverte ilung liegt wirklich bei 1:1 und es gibt auch keine Überschneidungen mit HA-Upgrades, während Randometexturen oftmals keine 1:1 Verteilung aufweisen. Ich würde dir also empfehlen zukünftig eher mit Randommodellen zu arbeiten.
-
Danke für eure Antworten :)!
Wie muss das ChildObject eigentlich genau aussehen? Also muss ich die gesamte .ini der eigentlichen Unit kopieren und drunter einfügen und dann "ChildObject blabla eigentlicheUnit" statt dem normalen "Object" schreiben? Und muss ich das ChildObject in der experiencelevels.ini definieren?
MfG
EvilDet
-
Ins Child werden alle Einträge übernommen, du musst nur die Einträge hineinschreiben die überschreiben werden sollen, aber in die experiencelevels.ini muss es, ja
-
Danke, ich habe es jetzt gelöst :)
MfG
EvilDet
-
So, jetzt mal wieder eine kleine Frage:
Warum frieren meine Einheiten (Bogenschützen) ein, wenn sie im Nahkampf die Waffe wechseln sollen?
Sie ziehen ihr Schwert und frieren dann ein.
Ini der Bogenschützen:
http://nopaste.info/e58ab23f9c.html
Danke im Voraus
EvilDet
-
kannst du mal dein waffenwechsel (ich nehme mal an, dass es sich um einen aktiven waffenwechsel handelt) posten?
-
Das ist ein DualWeaponBehavior ;) . Der wird z.B. bei Lurtz benutzt, weshalb der seine Feinde immer mit dem Bogen schlägt, wenn die ihm zu nahe kommen.
Von daher kann ich keinen Button posten, alles, was benötigt wird, steht in der ini ;)
MfG
EvilDet
-
dann würde ich sagen, du hast die falsche flag benutzt. aus lurtzs ini würde ich sagen, die passende flag ist CLOSE_RANGE anstatt WEAPONSET_CLOSE_RANGE. das dualweaponbehavior sollte schließlich immer die gleiche flag setzen
-
Ok, also es gibt ein paar Dinge, die du beachten musst. Ich bin jetzt leider gerade nicht an einem PC, der die nötigen Inis bzw. Programme vorliegen hat, kann dich aber bereits im vornerein auf ein paar Sachen aufmerksam machen.
Zum Einen solltest du darauf achten, dass du jede Animation, die definiert ist, auch im WEAPONSTATE_CLOSE_RANGE definierst. Das hast du sehr oft nicht getan.
Dann hast du doppelte Einträge:
# AnimationState = STUNNED_STANDING_UP
# StateName = STATE_Sword
# Animation = GUFaramir_GTPB
# AnimationName = GUFaramir_SKL.GUFaramir_GTPB
# AnimationMode = ONCE
# AnimationSpeedFactorRange = 1.5 1.5
# End
# End
#
# AnimationState = STUNNED_STANDING_UP
# StateName = STATE_Bow
# Animation = GUFaramir_GTPA
# AnimationName = GUFaramir_SKL.GUFaramir_GTPA
# AnimationMode = ONCE
# AnimationSpeedFactorRange = 1.5 1.5
# End
# End
#
# AnimationState = STUNNED WEAPONSTATE_CLOSE_RANGE
# StateName = STATE_Sword
#
# Animation = GUFaramir_LNDB
# AnimationName = GUFaramir_SKL.GUFaramir_LNDB
# AnimationMode = ONCE
# End
# End
#
# AnimationState = STUNNED
# StateName = STATE_Bow
#
# Animation = GUFaramir_LNDA
# AnimationName = GUFaramir_SKL.GUFaramir_LNDA
# AnimationMode = ONCE
# End
Hier auch der Anreiz: Erst Normaler State, dann WEAPONSTATE_CLOSE_RANGE definieren.
Hier ist ein Eintrag definiert, der nur für den Switch zuständig ist:
# AnimationState = ATTACKING WEAPONSTATE_CLOSE_RANGE
# StateName = STATE_Sword
# Animation = ATKD
# AnimationName = GUFaramir_SKL.GUFaramir_ IDLA
# AnimationMode = MANUAL
# End
# End
Schau doch bitte einmal bei den Rangern, ob dies auch so gehandhabt ist, oder ob es für den normalen Stage (also mit Bogen) einen ATTACKING-Eintrag gibt. (wollte nur nebenbei darauf aufmerksam machen).
Desweiteren würde ich die Animationseinträge einmal ordnen, das ist alles viel zu unübersichtlich, dabei können massig Fehler entstehen.
Wenn meine Hinweise nicht helfen, würde ich dir empfehlen die kompletten Einträge der Ranger rüberzuziehen und dann eben nur die SKL-Einträge zu ändern. Das dürfte dann in der Regel fehlerfrei im Endeffekt sein.
Ich hoffe ich konnte helfen.
Greez
-
So, danke euch beiden, es klappt!
Ich habe die Animationen nochmal komplett neu eingefügt (aus Faramirs ini) und dann einfach jedes "WEAPONSET_TOGGLE_1" durch "WEAPONSTATE_CLOSE_RANGE" ersetzt. Außerdem musste ich das WeaponSet so ändern:
WeaponSet
Conditions = CLOSE_RANGE CONTESTING_BUILDING
Weapon = PRIMARY MaurawanBow
Weapon = SECONDARY FaramirSword
Weapon = TERTIARY GondorRangerBowBombard
OnlyAgainst = PRIMARY STRUCTURE
AutoChooseSources = TERTIARY FROM_PLAYER FROM_SCRIPT
End
Bei den Schwert-Angriffs-Anis musste ich zudem den "Attack idle with sword" Eintrag löschen und den folgenden AnimationState zu "FIRING_OR_PREATTACK_B" ändern:
AnimationState = FIRING_OR_PREATTACK_B
StateName = STATE_Sword
Animation = ATKD
AnimationName = GUFaramir_SKL.GUFaramir_ATKD
AnimationMode = ONCE
UseWeaponTiming = Yes
AnimationSpeedFactorRange = 1.149 1.149
End
Animation = ATKE
AnimationName = GUFaramir_SKL.GUFaramir_ATKE
AnimationMode = ONCE
UseWeaponTiming = Yes
AnimationSpeedFactorRange = 1.149 1.149
End
Animation = ATKF
AnimationName = GUFaramir_SKL.GUFaramir_ATKF
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.47 1.47
End
Flags = RESTART_ANIM_WHEN_COMPLETE
; FrameForPristineBonePositions = 59
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Bow" then CurDrawableSetTransitionAnimState("TRANS_BowToSword") end
EndScript
End
Noch einmal danke
EvilDet
-
So, nach längerer Zeit stellt sich mir wieder eine Frage, die ich nicht lösen kann.
Es handelt sich dabei um das Anzeigen (per Codes) bestimmter Objekte während einer Animation. Orientiert habe ich mich hierbei an diesem Eintrag aus Faramirs ini:
AnimationState = SPECIAL_WEAPON_ONE
StateName = STATE_Bow
Animation
AnimationName = GUFaramir_SKL.GUFaramir_ATKC
AnimationMode = ONCE
End
FrameForPristineBonePositions = 59
BeginScript
CurDrawableShowSubObject("arrow")
EndScript
End
Und hier mein Eintrag aus der ini meiner Einheit:
AnimationState = SPECIAL_WEAPON_ONE
StateName = Firing_Special
Animation
AnimationName = iucrsbowmn_spcc
AnimationMode = ONCE
End
FrameForPristineBonePositions = 38
BeginScript
CurDrawableShowSubObject("object_1")
CurDrawableShowSubObject("object_2")
EndScript
End
Jedoch wird keines meiner beiden Objekte angezeigt. Sie sind übrigens von Anfang an(OnCreated) per lua-Script gehidet.
Danke im Voraus
EvilDet
-
Lösche das Lua-Script heraus und hide die Teile im Model (Renx) selbst. Dann funktioniert auch der Eintrag.
-
Vielen Dank ea, jetzt wird das Object angezeigt.
EvilDet
Edit:
Das Object wird jetzt zwar angezeigt, aber danach verschwindet es nichtmehr... Der Code ist immernoch derselbe geblieben.
MfG
EvilDet
-
Du musst in allen anderen Animationen einen HideSubObject-Eintrag angeben.
-
Auf die Idee hätte ich auch selber kommen können -.-
Trotzdem vielen Dank!
Jetzt stellt sich mir jedoch eine neue Frage:
Kann man ein bestimmtes Upgrade kaufen und zeitgleich wird ein Anderes Upgrade entfernt? Wenn man dieses jedoch erneut kauft, wird das andere wieder entfernt?
Danke im Voraus
EvilDet
-
Es gibt einen RemoveUpgrade-Eintrag in dem Object des RingSauron. Das ist aber teilweise nicht richtig brauchbar, weil es manchmal crasht.
Mir würde nur eine Variante über Remove und Grantupgrades einfallen per LuaScript. Dafür müsstest du eben ein paar Events in der xml-Datei anlegen und diese richtig darauf beziehen.
Wenn du mir sagst, was du machen möchtest, kann ich dir vll eher weiterhelfen.
-
Ok, also:
Ich möchte, dass wenn eine Fähigkeit ausgelöst wird ein Upgrade vergeben wird. Wenn jedoch eine andere Fähigkeit ausgelöst wird, soll das Upgrade gelöscht werden.
Bitte für Noobs erklären, kenn mich mit lua gar nicht aus, nur Randomobjects kann ich^^
Ich hoffe, das war verständlich formuliert.
Danke im Voraus
EvilDet
-
Was genau willst du denn coden? Also was soll das Upgrade bewirken? Ich frag das, weil's vielleicht eine einfachere Möglichkeit gibt. Das mit dem Upgrade geben und wieder entfernen ist immer so eine blöde Sache.
mfg
sanalf 2
-
Führerschaft, es soll verschiedene Füherschaften mit verschiedenen Boni geben, die allerdings nicht gleichzeitig aktiv sein können.
Danke für deine Antwort
EvilDet
-
Das wird tricky, wir haben ja schon darüber gesprochen, das ich in der IS etwas ganz ähnliches drinhaben werde.
Naja, im Moment bin ich bei folgendem System:
1. Spawnen eines Eggs
2. Dieses Egg vergibt einerseits ein Upgrade, andererseits eine ModelCondition USER_1 (Oder ähnliches). Es müssen zwei Führerschaften sein, denn das Upgrade bleibt dauerhaft(Für die Codes zumindest :P), der ModelCondition allerdings nur sehr kurz (500 ms oder so).
3. An dieses Upgrade wird dann die entsprechende Führerschaft geheftet.
4. Jetzt sind die LuA-Scripts wichtig:
Und zwar müsst ihr bei eurer Einheit hinschreiben, welche ModelCondtion was entfernt. Zumindest in Edain gibt es auch Beispiele, wie diese Einträge aussehen können, keine Ahnung, ob das in SuM2 auch so ist. Dann einfach noch die eigentlichen Scripts definieren, und dann die anderen Upgrades entfernen.
Also ihr habt 3 Upgrade. Das LuA-Event hätte dann das Schema:
ModelConditionUser1=>LuAScript=>RemoveUpgradeFähigkeit 2/3
Ich habe es so noch nicht ausprobiert, ich bin nicht dazu gekommen, es sollte allerdings so funktionieren. :)
@Ea unten: Gut, dann funktioniert es ja.
-
Ja, ich habe diese Variation bei Boromirs Ringmechanik erfunden.
-
Ok, danke für die Antwort. Das Egg wird dann per DoCommand-Behaviour gespawnt, oder?
MfG
EvilDet
-
Ok, danke für die Antwort. Das Egg wird dann per DoCommand-Behaviour gespawnt, oder?
MfG
EvilDet
Hm? Was willst du mit DoCommand-Behaviour?^^
Du spawnest das Egg einfach wie zB. das Allwissenheit-Egg bei Edain gespawned wird. Man drückt die Fähigkeit und es erscheint ein unsichtbares Objekt direkt unter dem Helden. Ist eigentlich nicht schwer.
Oder verstehe ich was falsch?^^
-
Ne, ich stand gerade nur ein bisschen auf dem Schlauch :D
Danke, ich werde es dann mal ausprobieren.
EvilDet
-
So, ich melde mich auch mal wieder mit einer neuen Frage:
Warum stürzt mein Spiel ab, wenn ich diese Fähigkeit benutze? Sie ist orientiert an Glorfindels Sternlicht-Spell. Außerdem stürzt das Spiel erst ab, wenn die Fähigkeit etwa 5-10 Sekunden aktiv ist.
Ini der Einheit:
Behavior = OCLSpecialPower ModuleTag_GlorfindelStarlight
StartsPaused = No
SpecialPowerTemplate = SpecialAbilityBeautyAlbenmark
OCL = OCL_BeautyAlbenmark
CreateLocation = CREATE_AT_LOCATION
End
; special AutoAbilityBehavior for starlight, as we need to target a bunch of allies.
Behavior = AutoAbilityBehavior ModuleTag_StarlightAutoAbilityBehavior
SpecialAbility = SpecialAbilityBeautyAlbenmark
MaxScanRange = GLORFINDEL_STARLIGHT_RADIUS
Query = 2 ANY ALLIES +HORDE ; 2 friendly hordes or an enemy
Query = 1 ALL ENEMIES
End
Specialpower.ini
SpecialPower SpecialAbilityBeautyAlbenmark
Enum = SPECIAL_GENERAL_TARGETLESS_THREE
ReloadTime = 90000
InitiateAtLocationSound = GlorfindelStarlight
End
Objectcreationlist.ini
ObjectCreationList OCL_BeautyAlbenmark
CreateObject
ObjectNames = BeautyAlbenmark
End
End
Object.ini
ChildObject BeautyAlbenmark FearRadiator
; *** ART Parameters ***
Draw = W3DScriptedModelDraw ModuleTag_Draw
DefaultModelConditionState
Model = None
ParticleSysBone = None CloudBreakRays
ParticleSysBone = None BeautyAlbenmarkSchmetterlinge
ParticleSysBone = None BeautyAlbenmark
ParticleSysBone = None BeautyAlbenmarkBirds
End
; IdleAnimationState
; EnteringStateFX = FX_BeautyAlbenmark
; End
; this is how you control birth fade
; BirthFadeTime = 1000 ; msec
; BirthFadeAdditive = Yes
End
Behavior = LifetimeUpdate ModuleTag_01
MinLifetime = 30000
MaxLifetime = 30000
End
Behavior = AttributeModifierAuraUpdate ModuleTag_Leadership
StartsActive = Yes
BonusName = BeautyAlbenmarkBuff
RefreshDelay = 2000
Range = GLORFINDEL_STARLIGHT_RADIUS
ObjectFilter = GENERIC_BUFF_RECIPIENT_OBJECT_FILTER
End
End
Attributemodifier.ini
ModifierList BeautyAlbenmarkBuff
Category = BUFF
Modifier = EXPERIENCE 125%
Modifier = RESIST_FEAR 100%
Modifier = ARMOR 25%
FX = FX_GenericBuff
Duration = 30000
ReplaceInCategoryIfLongest = Yes
End
Danke im Voraus!
EvilDet
-
Das ist ein typischer FX-Fehler.
ParticleSysBone = None CloudBreakRays
ParticleSysBone = None BeautyAlbenmarkSchmetter linge
ParticleSysBone = None BeautyAlbenmark
ParticleSysBone = None BeautyAlbenmarkBirds
Entweder sind die FX zu gameplay-lastig, wodurch das Spiel überlastet wird (hatte ich auch schon des öfteren), oder es ist einfach ein Fehler im FX.
Da CloudBreakRays bereits viel Speicher in Anspruch nimmt, könnte der Rest das Spiel zum Abstürzen bringen.
-
Entweder sind die FX zu gameplay-lastig, wodurch das Spiel überlastet wird (hatte ich auch schon des öfteren)
Jap, daran lags. Jetzt stürzt nichtsmehr ab ;)
Danke!
EvilDet
-
So, neue Frage, auf deren Antwort ich einfach nicht komme:
Warum greift mein Held Feinde in seiner Nähe nicht automatisch an (weder im Nah- noch im Fernkampf)?
Das AiUpdateInterface sieht so aus:
Behavior = AIUpdateInterface ModuleTag_03
AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS STEALTHED
MoodAttackCheckRate = 500
CanAttackWhileContained = Yes
AILuaEventsList = LegolasFunctions
AttackPriority = AttackPriority_Archer
End
Danke im Voraus!
EvilDet
-
Vllt liegt es an der Weapon so ein Problem hatte ich mal, wobei ich allerdings den Nahkampf nie hinbekommen habe...
Mich würde das allerdings auch mal interressieren wenn jemand eine Antwort weis.
-
Naja, die Weapon ist die von Faramir (Bow/Sword). Daran habe ich nichts geändert.
-
Sorry für den Doppelpost, aber ich habe mal wieder eine kleine Frage, die vermutlich nicht schwer zu beantworten ist, aber ich komme selbst nicht auf die Antwort:
Warum gibt eine Einheit keine Erfahrung, wenn man sie tötet?
MfG
EvilDet
-
Hmm ich hatte den Thread völlig übersehen. Zu deiner vorherigen Frage:
Das liegt sowohl am AiUpdateBehaviour, als auch am ThreadBreakDown-Behaviour in der Horde. Der AiUpdateBehaviour muss in sowohl in Einheiten, als auch Horden.ini übereinstimmen und die Funktion dessen mit dem weitern von mir genannten Behaviour.
Eine Einheit gibt keine Erfahrung, wenn der experiencelevels.ini-Eintrag fehlt bzw. falsch ist.
Wenn du ein Bauern-System verwendest, musst du jede BuildVariation auch definieren.
-
Ok, ea, hat funktioniert. Danke!
Aber ich habe eine neue Frage:
Ist es möglich, dass Feuer auf Wasser (z.B.) im Meer brennen kann?
Danke im Voraus!
EvilDet
Edit:
Zweite Frage: Warum spawnen meine Einheiten nur an den ARROW-Bones und nicht auch an den ARCHER-Bones, wie in den Codes festgelegt?
Behavior = HordeTransportContain ModuleTag_Contain
ObjectStatusOfContained = CAN_ATTACK UNSELECTABLE UNATTACKABLE
Slots = 18
DamagePercentToUnits = 0%
PassengerFilter = NONE +GondorTjuredBogenKrieger_SlavedForShips
PassengerBonePrefix = PassengerBone:Arrow KindOf:INFANTRY
PassengerBonePrefix = PassengerBone:Archer KindOf:INFANTRY
ShowPips = No
KillPassengersOnDeath = Yes
EjectPassengersOnDeath = No
InitialPayload = GondorTjuredBogenKrieger_SlavedForShips 18
End
-
Hmm....interessante Frage. Nun, Feuer funktioniert über ein "FireLogicSystem", dafür ist sogar eine eigene ini angelegt. Ich habe mich noch nicht so recht damit vertraut gemacht, vielleicht wäre das hier ein Ausgangspunkt für dich.
-
Hm, also die firelogicsystem.ini ist nicht wirklich aussagekräftig. :D
Allerdings habe ich eine andere Lösung gefunden, indem ich einfach eine Radiance-Weapon benutze und eine FX, die auf der FeuerFX beruht (GpuTerrainFire).
Trotzdem danke für den Hinweis!
Andere Frage: Warum spawnen meine Einheiten nur an den ARROW-Bones und nicht auch an den ARCHER-Bones, wie in den Codes festgelegt?
Behavior = HordeTransportContain ModuleTag_Contain
ObjectStatusOfContained = CAN_ATTACK UNSELECTABLE UNATTACKABLE
Slots = 18
DamagePercentToUnits = 0%
PassengerFilter = NONE +GondorTjuredBogenKrieger_SlavedForShips
PassengerBonePrefix = PassengerBone:Arrow KindOf:INFANTRY
PassengerBonePrefix = PassengerBone:Archer KindOf:INFANTRY
ShowPips = No
KillPassengersOnDeath = Yes
EjectPassengersOnDeath = No
InitialPayload = GondorTjuredBogenKrieger_SlavedForShips 18
End
Danke im Voraus!
EvilDet
-
Weil zuerst der erste Prefix gelesen wird. Wenn du den gleichen KindOf bei zwei Prefix nutzt, wird nur der Erste beachtet. Ich würde eine doppeltes SlavedObject erstellen und diesen anstatt einfach einen weiteren KindOf, zb. ARAGORN, geben. ARAGORN dann eben auf den zweiten Prefix beziehen.
Nebenfrage: Hast du die Bones als ExtraPublicBone am Anfang des Objectes definiert?
-
Ah, danke ea, jetzt gehts. Lag an dem KindOf ;)
EvilDet
-
So, ich bin auf ein neues Problem gestoßen. Ich habe versucht, Theodens "Kings Favour" - Spell zu einem Spellbook-Spell zu machen. Ich kann den Spell auch kaufen, den Bereich auswählen, aber wenn ich klicke passiert nichts, es gibt auch keinen Cooldown.
Hier die Codes:
specialpower.ini
SpecialPower SpellBookIskendria
Enum = SPECIAL_KINGS_FAVOR
RequiredSciences = SCIENCE_DunedainAllies
ReloadTime = SPELL_RECHARGE_TIME_TIER_3 ; in milliseconds
RadiusCursorRadius = 10.0
ObjectFilter = ISKENDRIA_OBJECTFILTER
Flags = RESPECT_RECHARGE_TIME_DISCOUNT NEEDS_OBJECT_FILTER
End
system.ini
Behavior = SpecialPowerModule ModuleTag_KingsFavorSpecialPowerModule
SpecialPowerTemplate = SpellBookIskendria
UpdateModuleStartsAttack = Yes
InitiateSound = TheodenVoiceFavor
AvailableAtStart = No
RequirementsFilterMPSkirmish = SPELL_BOOK_REQUIREMENTS_FILTER
RequirementsFilterStrategic = SPELL_BOOK_REQUIREMENTS_FILTER_STRATEGIC
End
Behavior = LevelGrantSpecialPower ModuleTag_KingsFavor
SpecialPowerTemplate = SpellBookIskendria
StartAbilityRange = 999999
LevelFX = FX_LevelUp
Experience = 2000
RadiusEffect = 10
AcceptanceFilter = ISKENDRIA_OBJECTFILTER
UnpackTime = 0
PreparationTime = 0
FreezeAfterTriggerDuration = 0
End
Commandbutton.ini
CommandButton Command_SpellBookIskendria
Command = SPELL_BOOK
SpecialPower = SpellBookIskendria
Options = NEED_TARGET_POS CONTEXTMODE_COMMAND
TextLabel = CONTROLBAR:Iskendria
ButtonImage = SBBibliothekIskendria
CursorName = Bombard
RadiusCursorType = KingsFavorRadiusCursor
ButtonBorderType = ACTION
DescriptLabel = CONTROLBAR:TooltipIskendria
End
Danke im Voraus
EvilDet
-
Das keine Nachladezeit zu sehen ist, und nichts passiert wen du auf den Zielpunkt klickst deutet daraufhin das was mit einem Behavior stimmt. Meine Vermutung zu deinem Problem ist, dass das Spellbook den Behavoir LevelGrantSpecialPower nicht kennt, und deswegen nichts tut. Die Lösung wäre den Spell zu einem OCL umzuwandeln der ein Object spawnen lässt. Dieses Object hat ein CommandSet mit dem Kings Farvour Spell und auch in der ini die richtigen Behavior. Das Object hat weiteres ein DoCommand in der ini welches bei dem Startup deines Volkes aktiviert wird. Dadurch muss man zwar 2 mal auf ein Zielgebiet klicken, wäre aber ne Lösung ;)
Ps.: Ausprobiert hab ichs nicht, also kann ich nicht sagen obs wirklich geht
Edit:
Was ich vergessen hab:
Das object sollte auch eine Lifetime haben, dass es nicht ewig bleibt ;)
mfg
Pini
-
Sicher, dass das funktioniert?
Das beschworene Objekt wäre ja nicht angewählt, oder irre ich mich da?
Naja, an deiner Stelle würde ich mal testen, ob du was am Enum drehen kannst:
SPECIAL_KINGS_FAVOR
Wenn ich irgendwelche merkwürdige Fehler habe, überprüfe ich immer zuerst das Enum der Fähigkeit. Eines der Spellbook-Enums gestattet zB. kein Beschwören von mehreren Objekten, was sehr ärgerlich sein kann (Bis man herausgefunden hat, dass es daran liegt xD). Könnte sein, dass die Behavior an sich erkannt wird, aber das Enum blockiert.
Sollte das alles nicht funktionieren, würde ich dir raten, das mit einem Objekt zu machen, wie thepinking schon gesagt hat. Ich würde hier das ganze aber per AutoAbility machen lassen, sodass man ein Egg spawned, dass dann automatisch die Erfahrungs-Fähigkeit auf Einheiten in nähe anwendet. Es gab doch eine Möglichkeit, das die AutoAbility sofort von Anfang an aktiv ist, oder?
Wobei man es auch so machen könnte, dass das Objekt die Fähigkeit auf sich selbst wirkt, in dem Fall wäre der Effekt zentriert.
-
thepingking, das funktioniert nicht.
EvilDet, ändere das hier mal so um und teste das:
SpecialPower SpellBookIskendria
Enum = SPECIAL_KINGS_FAVOR
RequiredSciences = SCIENCE_DunedainAllies
ReloadTime = SPELL_RECHARGE_TIME_TIER _3 ; in milliseconds
RadiusCursorRadius = 10.0
Flags = RESPECT_RECHARGE_TIME_DI SCOUNT
End
Ansonsten würde ich, wie MCM bereits angedeutet hat, ein anderes ENUM testen. Eine Alternativvariante wird es aber nicht geben.
-
ea, auch damit geht es nicht :(
Welches ENUM sollte ich denn ausprobieren?
MfG
EvilDet
-
Thx Ea und MCM daran hab ich nicht gedacht, mein Fehler sry.
Kann es eventuell sein, dass der Spell ansich stimmt, es aber an den Einheiten liegt?
Ich steh nämlich grad vor dem selben Problem (eps per Spellbook, nur eine etwas andere Version als die von EvilDet, im Prinzip allerdings das gleiche) und bei mir passiert genau das gleiche: nichts.
Edit:
Was mit noch eingefallen ist:
Kann es sein das es am KindOf liegt? Das da eins fehlt, bzw eins nicht da sein sollte?
mfg
Pini
-
Nunja, bei mir sollte es eigentlich nicht daran liegen, denn zu Beginn ist der RadiusCursor rot, aber sobald sich ein Held in seinem Radius befindet, wird er weiß.
Von daher müsste es eigentlich klappen.
EvilDet
Edit:
Habe jetzt die folgenden ENUMs ausprobiert, aber nichts funktioniert:
SPECIAL_TRIGGER_ATTRIBUT E_MODIFIER
SPECIAL_SPELL_BOOK_RALLY ING_CALL
SPECIAL_AT_VISIBLE_GROUN DED_OBJECT
SPECIAL_SPELL_BOOK_WAR_C HANT
SPECIAL_KINGS_FAVOR
-
Sorry für den Doppelpost, aber ich habe mein obiges Problem anders gelöst, statt direkt Erfahrung zu erhalten, levelt der Held jetzt einfach schneller.
Aber ich stehe schon wieder vor einem neuen Problem:
Ich wollte einen Waffenswitch coden, der funktioniert an für sich auch prima, allerdings stimmt die Animation nicht, denn nachdem der Waffenswitch aktiviert wurde, wird weiterhin die Angriffsanimation des Fernkampfs verwendet.
AnimationState = FIRING_OR_PREATTACK_A
Animation = MountedSlash
AnimationName = GUGdfHrs_SKL.GUGdfHrs_SPLD
AnimationMode = ONCE
UseWeaponTiming = Yes
End
End
AnimationState = FIRING_OR_PREATTACK_A WEAPONSET_TOGGLE_1
Animation = MountedSlashS
AnimationName = GUGdfHrs_SKL.GUGdfHrs_ATKA
AnimationMode = ONCE
UseWeaponTiming = Yes
End
Animation = MountedStabS
AnimationName = GUGdfHrs_SKL.GUGdfHrs_ATKB
AnimationMode = ONCE
UseWeaponTiming = Yes
End
End
Danke im Voraus
EvilDet
-
Könntest du bitte aufhören, den Inhalt deines Postes nochmal neu zu posten und den alten Post zu löschen? Auf dauer nervt es, vier-oder fünfmal den selben Post als neu angezeigt zu bekommen.
Ich würde jetzt mal ganz banal fragen: Kann es sein, dass du die Angriffs-Animationen gedoppelt hast, dh. sie nocheinmal irgendwo anders stehen?
Ich habe mich noch nie mit Animationen beschäftigt, da ich bisher keine neuen Modelle eingebunden habe, aber das wäre das erste, woran ich da denken würde.
Ansonsten würde ich mal versuchen, folgendes in die Animation deines Nahkampfangriffs zu schieben:
AnimationPriority = 5
Frei aus dem Stegreif würde ich sagen, dass diese Zeile dem Spiel sagt, dass sie eine Animation der anderen vorziehen soll, wenn beide ausgelöst werden (Was sie ja eigentlich werden^^).
-
Sorry für das mehrfache posten. Wird nichtmehr vorkommen.
Danke für die Antwort.
@topic
Ich habe jetzt mal verschiedene AnimationPriorities ausprobiert, es ändert sich leider nichts.
Und die Animationen sind nicht doppelt vorhanden. Hier mal der ganze Animationsblock:
http://nopaste.info/11cf8e485e.html (http://nopaste.info/11cf8e485e.html)
Danke im Voraus
EvilDet
-
So ein ähnliches Problem hab ich auch mal gehabt, ich hab das damals folgendermaßen gelöst:
Schreib mal statt "FIRING_OR_PREATTACK_A WEAPONSET_TOGGLE_1" einfach "FIRING_OR_PREATTACK_B WEAPONSET_TOGGLE_1", also mach mal aus dem A ein B. Bei meinem Problem hat das damals funktioniert, das war zwar nicht ganz dasselbe, aber einen Versuch wärs ja wert.
mfg
sanalf 2
-
Da hatte ich auch schon dran gedacht, hat aber leider auch nichts geholfen :(
Trotzdem danke für deine Antwort!
EvilDet
-
Schnapp dir doch einfach komplett Faramirs-Aniset und tausche die Animationen nacheinander aus. Das geht schneller als einen banalen Fehler zu finden.
-
Ahh, vielen Dank ea! Jetzt funktioniert es wie gewollt :)
Die Methode sollte ich mir merken :D
MfG
EvilDet
-
So, ich melde mich auch mal wieder mit einer Frage, die eigentlich nicht schwer zu lösen sollte, mich jedoch vor Probleme stellt:
Mein Held soll sich bei Aktivierung der Fähigkeit selbst heilen, allerdings auch langsamer werden etc.
Ich habe mich hier am Zwergenbier-Spell orientiert, der Held wird auch geheilt, aber er bekommt keinen Malus.
Held.ini
Behavior = OCLSpecialPower ModuleTag_Wein
StartsPaused = Yes
SpecialPowerTemplate = SpecialAbilityDrustanWein
OCL = OCL_DrustanWein
CreateLocation = CREATE_AT_LOCATION
End
OCL-Object:
Object DrustanWeinObject
; *** ART Parameters ***
Draw = W3DScriptedModelDraw ModuleTag_Draw
DefaultModelConditionState
Model = None
End
End
; ***DESIGN parameters ***
EditorSorting = System
KindOf = NO_COLLIDE IMMOBILE UNATTACKABLE IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION
; *** ENGINEERING Parameters ***
Body = ImmortalBody ModuleTag_01
MaxHealth = 10000
InitialHealth = 10000
End
Behavior = DeletionUpdate ModuleTag_DeletionUpdate because I can't die
MinLifetime = 1000
MaxLifetime = 1000
End
Behavior = PassiveAreaEffectBehavior ModuleTag_SplashOfHealingWater_Ahh
EffectRadius = 10
PingDelay = 0
HealPercentPerSecond = 50% ;3%
AllowFilter = ANY +GondorDrustan ALLIES
NonStackable = Yes
HealFX = FX_SpellHealUnitHealBuff
End
Behavior = FireWeaponUpdate ModuleTag_Wein
FireWeaponNugget
WeaponName = DrustanWeinWeapon
FireDelay = 0
OneShot = Yes
End
End
End
Weapon.ini
Weapon DrustanWeinWeapon
RadiusDamageAffects = ALLIES NOT_SIMILAR
DelayBetweenShots = 0
AttributeModifierNugget
AttributeModifier = DrustanWeinMalus
Radius = 50000
DamageFXType = SWORD_SLASH
SpecialObjectFilter = NONE +GondorDrustan ALLIES
End
End
Attributemodifier.ini
ModifierList DrustanWeinMalus
Category = WEAPON
Modifier = ARMOR -50%
Modifier = SPEED 75%
Modifier = VISION -25%
Duration = 15000
End
Vielen Dank im Voraus!
MfG
EvilDet
-
Normalerweise sollte das funktionieren, ich persönlich würde es aber über einen anderen Weg machen.
Du gibst deinem Helden einen KindOf, den sonst kein Held hat (z.b. GIMLI).
Jetzt nimmst du Dains MightyRage-Fähigkeit und codest dort eben beim Heal-Update nur den KindOf deines Helden ein (Restliche Einträge im Behaviour kannst du nach belieben anpassen). Zusätzlich codest du eben eine Attributemodifier-Vergabe die sich ebenso nur auf diesen KindOf bezieht.
Als letztes musst du im Button noch darauf achten, das es per One-Klick ausgeführt wird. Dabei musst du eben den Otions-Eintrag anpassen (siehe IvoryTowerVision-Button).
Das funktioniert in jedem Fall und ist deutlich einfacher.
-
Ich habe jetzt deine Mehtode angewandt, ea, mein Held wird auch geheilt, aber er bekommt immernoch keinen Debuff. Ich wusste nur nicht, was du mit der "One-Klick-Option" meinst, im Ivory-Tower-Button habe ich keine Option gefunden, die so heißt.
Behavior = SpecialPowerModule ModuleTag_DainMightyRageDummy
SpecialPowerTemplate = SpecialAbilityDrustanWein
StartsPaused = Yes
UpdateModuleStartsAttack = Yes
End
Behavior = ActivateModuleSpecialPower ModuleTag_CloseTheGap
SpecialPowerTemplate = SpecialAbilityDrustanWein
StartAbilityRange = 200
TriggerSpecialPower = ModuleTag_MightyRageHeal CREATE_AT_LOCATION
TriggerSpecialPower = ModuleTag_MightyRageDebuff CREATE_AT_LOCATION
End
Behavior = PlayerHealSpecialPower ModuleTag_MightyRageHeal
SpecialPowerTemplate = SpecialAbilityActivateeDummy
HealAmount = 20.0
HealAsPercent = Yes
HealAffects = GIMLI
HealRadius = DAIN_MIGHTYRAGE_EFFECT_RADIUS
HealFX = FX_SpellHealUnitHealBuff
InitiateSound = DainMightyRage
;TriggerFX = FX_DainMightyRage02
End
Behavior = SpecialPowerModule ModuleTag_MightyRageDebuff
SpecialPowerTemplate = SpecialAbilityActivateeDummy
AttributeModifier = DrustanWeinMalus
AttributeModifierRange = DAIN_MIGHTYRAGE_EFFECT_RADIUS
AttributeModifierAffects = NONE +GIMLI
AntiCategory = LEADERSHIP BUFF
End
Commandbutton:
CommandButton Command_DrustanWein
Command = SPECIAL_POWER
SpecialPower = SpecialAbilityDrustanWein
TextLabel = CONTROLBAR:DrustanWein
ButtonImage = HSWein
CursorName = Bombard
RadiusCursorType = AthelasRadiusCursor
InvalidCursorName = GenericInvalid
ButtonBorderType = ACTION
DescriptLabel = CONTROLBAR:ToolTipDrustanWein
InPalantir = Yes
AutoAbility = Yes
PresetRange = 100.0
NeedDamagedTarget = Yes
; UnitSpecificSound = AragornVoiceAthelas
End
MfG
EvilDet
-
Mit One-Klick-Option meinte ich: Es benötigt kein doeppeltes Klicken, was bei Radius-Cursorn ja der Fall ist. Indem du den Options-Eintrag im Button entfernst, wird die Fähigkeit sofort ausgeführt, sobald auf den Button geklickt wird (was ja bei dir der Fall ist).
Was den Modifier angeht:
In Theodens GloirousCharge gibt es einen Eintrag: TriggerSelf (oder so ähnlich), den noch einfügen, sowie das hier ändern:
AttributeModifierAffects = ANY +GIMLI
-
Danke für deine Hilfe ea, jetzt funktioniert auch der Debuff.
Und ich habe auch schon wieder eine neue Frage:
Gibt es eine Möglichkeit, dass eine Fähigkeit nur aktiviert werden kann, wenn eine bestimmte Einheit in der Nähe ist?
MfG
EvilDet
-
Ja gibt es:
Du gibst der Einheit die in der Nähe sein muss eine Führerschaft welche nur auf die Einheit welche den Spell wirken soll wirkt. Diese Führerschaft bringt die Einheit in einen ModelCondition (zb USER_1). Das Model bleibt natürlich gleich (muss es aber nicht ;)). Dan schaust du mal nach ob die Einheit schon einen Eintrag bei AILuaEventsList hat. Falls ja öffne die scriptevents.xml und füge dort bei der Eventlist deiner Einheit das hinzu (falls die Einheit noch keinen eintrag hat, dan mach einen neuen, in dem ebenfalls der folgende Code vorhanden ist) :
<EventHandler EventName="ModelConditionUSER_1" ScriptFunctionName="ObjectGrantUpgradeScript" DebugSingleStep="false"/>
<EventHandler EventName="ModelConditionNOTUSER_1" ScriptFunctionName="ObjectRemoveUpgradeScript" DebugSingleStep="false"/>
Sollte ModelConditionUSER_1 und ModelConditionNOTUSER_1 in der scriptevents.xml noch nicht im Abschnitt Events definiert sein dan füge folgen Code im Abschnitt Events hinzu:
<ModelConditionEvent Name="ModelConditionUSER_1">
<Conditions>+USER_1</Conditions>
</ModelConditionEvent>
<ModelConditionEvent Name="ModelConditionNOTUSER_1">
<Conditions>-USER_1</Conditions>
</ModelConditionEvent>
Dan öffnest du noch die scripts.lua und fügst dort follgende Scripts hinzu (Namen kannst du frei wählen, du musst den ScriptFunctionName in der Scriptevents.xml auch anpassen) :
function ObjectGrantUpgradeScript(self)
ObjectGrantUpgrade( self, "UpgradeName )
end
function ObjectRemoveUpgradeScript(self)
ObjectRemoveUpgrade( self, "UpgradeName" )
end
Das Upgrade musst du dan noch in die Helden.ini zu der Fähigkeit schreiben (oder in den Button).
mfg
Pini
-
Da hat wohl jemand meine Coding-Scripts entdeckt. ;) Das System gibt es nämlich im Original-Zustand in SuM nicht und ermöglicht noch viel mehr als das.
Freut mich jedenfalls, wenn sich jemand die Mühe macht und versucht meine Codes nachzuvollziehen.
Für sein System benötigt man das aber nicht, man kann es weitaus einfacher machen:
Eine Führerschaft, die nur auf dei Einheit wirkt und nichts anderes macht, als einen ModelCondition zu geben, zb. USER_4
Dann im Button der Fähigkeit angeben:
1. DisableOnModelCondition = USER_4 (Wenn die Fähigkeit NICHT in der Nähe des Helden ausführbar sein soll)
oder
2. EnableOnModelCondition = USER_4 (Wenn die Fähigkeit nur ausführbar sein soll, wenn der Held in der Nähe ist.
-
Es tut mir leid das ich deine freude trüben muss:
Ich hab mir zwar das coden mit deinen Codes beigebracht, aber auf dieses System bin ich alleine gekommen.
Trotzdem vielen dank für die Zeilen DisableOnModelCondition und EnableOnModelCondition die kannte ich nämlich noch nicht (eventuell mal überlesen, aber noch nie benützt)
-
<ModelConditionEvent Name="ModelConditionUSER_1">
<Conditions>+USER_1</Conditions>
</ModelConditionEvent>
<ModelConditionEvent Name="ModelConditionNOTUSER_1">
<Conditions>-USER_1</Conditions>
</ModelConditionEvent>
Und du verwendest genau die gleichen Formulierungen wie es in Edain der Fall ist? :P
Aber was solls. ;)
-
Wie gesagt, ich hab mir das coden mit deinen Codes beigebracht, auch die scriptsevents (in der von AdH gibts da ja keine interessanten Zeilen in deiner zum Glück schon ;)) deswegen kann es schon sein das die Bezeichnungen gleich sind zumal sie auch schon übersichtlich und kurz sind ;)
-
So, nach längerer Zeit melde ich mich auch mal wieder mit Fragen:
1) Ich will, dass eine bestimmte Fähigkeit nur in der Nähe eines Gebäudes einsetzbar ist. Deshalb dachte ich mir, dass ich einfach einen Attributemodifier code, der eine Modelcondition vergibt, welche wiederum benötigt wird, um den Button drücken zu können (Funktioniert mit Helden ja auch so).
Allerdings wird der Button nur farbig, wenn der Held genau dort steht, wo das Gebäude frisch gebaut werden soll und mit permanentem S-Spam festgehalten wird.
An der Range des Modifiers kann es auch nicht liegen, ich habe Werte von 300 bis 150 ausprobiert, erfolglos.
Also meine Frage, was kann ich tun, um dieses Problem aus der Welt zu schaffen?
Behavior = AttributeModifierAuraUpdate ModuleTag_GiveIgnazius
StartsActive = Yes
BonusName = IgnaziusWerkstatt
RefreshDelay = 2000
Range = 250
ObjectFilter = ANY +GondorIgnazius ALLIES
End
2) Ich will, dass meine Gebäude auf Schneemaps ihren Schneeskin erhalten, allerdings soll nach einem Upgrade (ala Numenor-Mauerwerk) zu einem neuen Schneeskin gewechselt werden.
Mein Ansatz: Die Modelcondition SNOW ein Upgrade vergeben lassen, das den Skinwechsel auslöst.
Das Problem: Die Gebäude behalten ihren Skin, erst wenn bestimmte Gebäude in einer bestimmten Reihenfolge gebaut werden, wechseln alle Gebäude ihren Skin (Obwohl alle denselben Behaviour haben)
Frage: Woran könnte dies liegen und wie kann ich es beheben?
Danke im Voraus!
EvilDet
-
So, sorry für den Doppelpost, das erste Problem habe ich mit MCMs Hilfe lösen können, beim zweiten komme ich aber dennoch nicht weiter. Hier mal die Codes für meinen Ansatz:
Scriptevents.xml
<ModelConditionEvent Name="ModelConditionSNOW">
<Conditions>+SNOW</Conditions>
</ModelConditionEvent>
<EventList Name="GenericStructureFunctions" Inherit="BaseScriptFunctions">
<EventHandler EventName="ModelConditionSNOW" ScriptFunctionName="OnStructureSNOW" DebugSingleStep="false"/>
</EventList>
Scripts.lua
function OnStructureSNOW(self)
ObjectGrantUpgrade( self, "Upgrade_SnowSkin" )
end
Upgrade.ini
Upgrade Upgrade_SnowSkin
Type = PLAYER
End
Gebäude.ini
Behavior = SubObjectsUpgrade BlutbaumZiegelSnow
TriggeredBy = Upgrade_BlutbaumFaction Upgrade_SnowSkin
RequiresAllTriggers = Yes
UpgradeTexture = gbtwrksh.tga 0 gbtwrkshz_snow.tga
UpgradeTexture = gbtwrksh_dmg.tga 0 gbtwrkshz_dmg_snow.tga
End
Danke im Voraus
EvilDet