19. Apr 2024, 00:21 Hallo Gast.
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge. Hierbei werden gemäß Datenschutzerklärung Benutzername und Passwort verschlüsselt für die gewählte Dauer in einem Cookie abgelegt.


Select Boards:
 
Language:
 


Autor Thema: Tar-Palantirs Coding-Fragen Thread  (Gelesen 10776 mal)

Tar-Palantir

  • Held von Helms Klamm
  • ***
  • Beiträge: 1.246
Tar-Palantirs Coding-Fragen Thread
« am: 28. Sep 2012, 22:40 »
Hey Leute, ich habe ein kleines Problem. Ich möchte, dass Elendil ab Level 7 sein CommandSet wechselt und dabei gleichzeitig noch etwas anderes freigeschaltet wird. Ich habe also ein Upgrade erstellt. Leider funktioniert es nicht, wie es sollte. Der Button ist zwar da und ich kann draufklicken, aber nichts passiert. Ich habe alles schon drei oder vier mal kontrolliert und mit dem Aranarth-System verglichen, aber ich finde den Fehler nicht. Hier sind die relevanten Codes:

Das ist der relevante Teil in der elendil.ini:
    Behavior = CommandSetUpgrade ModuleTag_CommandSetElendilFluchtausNumenor
        TriggeredBy       = Upgrade_ElendilFluchtausNumenor                      ;Upgrade_Level_7           ;SpecialAbilityFakeLeadership3   
        CommandSet        = GondorElendilCommandSet_DZZNachFlucht
    End

Der Teil aus der commandbutton.inc:
CommandButton Command_PurchaseElendilFluchtausNumenor
    Command                = OBJECT_UPGRADE                            ;PLAYER_UPGRADE   ;SPECIAL_POWER OK_FOR_MULTI_SELECT
    Options                = NEED_UPGRADE CANCELABLE                 ;    SpecialPower           = SpecialAbilityFakeLeadership3
    Upgrade                = Upgrade_ElendilFluchtausNumenor                       ;Upgrade_FreundschaftmitLindon
    TextLabel              = CONTROLBAR:ElendilFluchtausNumenor
    ButtonImage            = BCShipwright_GoodGondorship
    ButtonBorderType       = UPGRADE
    DescriptLabel          = CONTROLBAR:ToolTipElendilFluchtausNumenor
    Radial                 = No
    InPalantir             = Yes
    NeededUpgrade          = Upgrade_Level_7
End
Der Teil aus der upgrade.inc:
Upgrade Upgrade_ElendilFluchtausNumenor
        Type           =  OBJECT         ;PLAYER
        DisplayName    =  CONTROLBAR:ElendilFluchtausNumenor
        Tooltip        =  TOOLTIP:ElendilFluchtausNumenor
End
Und der Teil, der eine wohl eher untergeordnete Rolle spielt, commandset.inc:
CommandSet GondorElendilCommandSet_DZZ
    1    = Command_ToggleStance   
    2    = Command_ElendilLeadership
    3    = Command_SpecialAbilityElendilAthelas
    4    = Command_SpecialAbilityElfCloakElendiliElendil       ;Command_SpecialAbilitySchätzedesKönigreichs
    5    = Command_PurchaseElendilFluchtausNumenor                     ;Command_SpecialAbilityElendilKingsFavor
    6    = Command_ElendilNumenoren
    12   = Command_CaptureBuilding
    13   = Command_AttackMove
    14   = Command_Stop
    16      = Command_SetStanceBattle
    17      = Command_SetStanceAggressive
    18      = Command_SetStanceHoldGround
End

CommandSet GondorElendilCommandSet_DZZNachFlucht
    1    = Command_ToggleStance   
    2    = Command_ElendilLeadership
    3    = Command_SpecialAbilityElendilAthelas
    4    = Command_SpecialAbilitySchätzedesKönigreichs
    5    = Command_SpecialAbilityElendilKingsFavor
    6    = Command_ElendilNumenoren
    12   = Command_CaptureBuilding
    13   = Command_AttackMove
    14   = Command_Stop
    16      = Command_SetStanceBattle
    17      = Command_SetStanceAggressive
    18      = Command_SetStanceHoldGround
End

Ealendril der Dunkle

  • Gast
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #1 am: 29. Sep 2012, 00:47 »
Damit eine Einheit ein Upgrade erwerben kann, benötigt diese einen ProductionBehaviour-Eintrag:

  Behavior = ProductionUpdate ModuleTag_06
    GiveNoXP = Yes
  End

Einfach irgendwo in die ini einfügen.
Desweiteren würde ich zur Sicherheit einen Buildtime und Buildcost-Eintrag mit = 0 in das Upgrade einfügen (einfach zur Sicherheit).

Tar-Palantir

  • Held von Helms Klamm
  • ***
  • Beiträge: 1.246
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #2 am: 30. Sep 2012, 20:35 »
Danke, hat endlich geklappt. Ich musste das noch in ModuleTag_07 umbenennen, weil 06 schon belegt war, aber seit dem klappt die Fähigkeit. Das mit den BuildCost und BuildTime habe ich in der Zwischenzeit auch schon dank FG15 eingestellt.


Hat sich erledigt, ich hatte das Ganze unter Draw gepackt.
« Letzte Änderung: 30. Sep 2012, 22:47 von Tar-Palantir »

Tar-Palantir

  • Held von Helms Klamm
  • ***
  • Beiträge: 1.246
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #3 am: 8. Okt 2012, 21:52 »

EDIT1: Hat sich schon wieder erledigt. Ich sollte häufiger hier fragen. Entweder kommt mir beim Schreiben die Lösung in den Sinn, jemand schreibt mir die Lösung auf Skype oder hier antwortet jemand. In diesem Fall ist der zweite Fall eingetreten.

Ich habe zunächst in der Specialpower.ini die ArnorBarracks definiert, das danach aber irgendwie vergessen, weil ich nur noch wusste, dass ich das Ziel auch in der weapon.ini definiert hatte. Darüber habe ich die Specialpower.ini völlig vergessen.

Edit2: Danke dir trotzdem Ea!
« Letzte Änderung: 8. Okt 2012, 22:07 von Tar-Palantir »

Ealendril der Dunkle

  • Gast
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #4 am: 8. Okt 2012, 22:03 »
Du musst natürlich auch in der Specialpower dieser Fähigkeit den Objectfilter anpassen.

Tar-Palantir

  • Held von Helms Klamm
  • ***
  • Beiträge: 1.246
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #5 am: 10. Okt 2012, 00:02 »
Ich habe schon wieder ein recht großes Problem, bei dem ich den Grund nicht kenne.

Ich habe einem Helden die Fähigkeit gegeben, einen anderen Helden zu rufen. Ich habe die Codes alle 4 mal überprüft (und das jetzt auch mit etwas Zeitabstand), aber leider keine Ursache finden können.
Das Problem besteht darin, dass das ganze Spiel abstürzt, wenn ich auf den Button klicke, durch den ich den Helden rufen möchte. Und zwar stürzt es nicht mit einer Fehlermeldung ab, sondern der Bildschirm friert ein, der Sound läuft weiter und ich kann es nur noch über den TaskManager schließen. Es handelt sich auch nicht um einen zufälligen Fehler, ich habe den Bug 3 mal reproduzieren können.
Hier sind die Codes, die ich für diese Fähigkeit erstellt habe:

CommandButton.ini
CommandButton Command_SpecialAbilityAmandilSummon
  Command           = SPECIAL_POWER
  SpecialPower      = SpecialAbilityAmandil
  TextLabel         = CONTROLBAR:Amandil_Summon
  ButtonImage       = HSLeibwächter
  Options           = NEED_TARGET_POS NEED_UPGRADE ;NONPRESSABLE
  NeededUpgrade     = Upgrade_Level_2
  RadiusCursorType  = LothBruchtalElbenRadiusCursor
  CursorName        = Bombard
  InvalidCursorName = GenericInvalid 
  ButtonBorderType  = ACTION
  DescriptLabel     = CONTROLBAR:ToolTipAmandil_Summon
  InPalantir        = Yes
End
specialpower.ini

SpecialPower SpecialAbilityAmandil
Enum   = SPECIAL_SPELL_BOOK_MEN_OF_DALE_ALLIES ; Why do you need an enum for an ini defined class? ; Answer: Because it's used by SpecialAbilityUpdate so it can do different things based on the "type" of special ability.
ReloadTime        = 80000
End

Eintrag in der ini des Helden, der die Fähigkeit wirken soll:
    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_BoromirOsgiliathEnablerRing
        SpecialPowerTemplate      = SpecialAbilityAmandil
        TriggeredBy               = Upgrade_Level_2
    End

    Behavior = OCLSpecialPower ModuleTag_OCLBoromirOsgiliathSpecialPowerRing
        SpecialPowerTemplate      = SpecialAbilityAmandil
        OCL                       = OCL_SpawnAmandil
        CreateLocation            = CREATE_AT_LOCATION
        TriggerFX                 = FX_BoromirOsgiliathSummon
        StartsPaused              = No
       ; SetModelCondition         = ModelConditionState:USER_2
       ; SetModelConditionTime     = 8.1
       ; DisableDuringAnimDuration = Yes
    End
objectcreationlist.ini
ObjectCreationList OCL_SpawnAmandil
    CreateObject
        ObjectNames                = NumenorAmandil_Summoned
        UseJustBuiltFlag           = Yes
        Count                      = 1
        FadeIn                     = Yes
        FadeTime                   = 8000
        IgnoreCommandPointLimit    = Yes
        Disposition                = ABSOLUTE_ANGLE
        DispositionAngle           = 90
        Offset                     = X:0 Y:60 Z:0
    End
End

Ich wäre echt dankbar, wenn jemand eine Lösung wüsste, denn so langsam nervt mich dieser eigentlich einfache Summon doch gewaltig.

Ealendril der Dunkle

  • Gast
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #6 am: 10. Okt 2012, 00:10 »
Der Fehler liegt nicht in der Fähigkeit, sondern in dem gerufenen Object NumenorAmandil_Summoned. Die Fehlermeldung ist typisch in dieser Hinsicht.

Tar-Palantir

  • Held von Helms Klamm
  • ***
  • Beiträge: 1.246
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #7 am: 10. Okt 2012, 00:20 »
Aber ich habe dieses Object mit dem Worldbuilder setzen können und damit ganz normal spielen können, alles hat mit dem gestimmt, auch die Fähigkeiten gehen alle. Weißt du wo dort der Fehler liegen könnte?

Ealendril der Dunkle

  • Gast
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #8 am: 10. Okt 2012, 00:35 »
Anhand deiner eingeschränkten Codes, kann es nur an dem Object liegen.

FG15

  • Administrator
  • Ringträger
  • *****
  • Beiträge: 5.274
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #9 am: 10. Okt 2012, 07:42 »
Ich glaube nicht, dass es am Object liegt, wenn der Fehler schon passiert, bevor man den Cursor platziert hat.

Was mir an den Codes auffällt ist, dass du im CommandButton einen RadiusCursor benutzt, aber in der SpecialPower keinen
    RadiusCursorRadius
festlegst.

Probier es mal damit.

MfG FG15


Ealendril der Dunkle

  • Gast
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #10 am: 10. Okt 2012, 14:02 »
Dürfte aber nicht zu einem Gamecrash führen, dadurch könnte man die Fähigkeit einfach nur bedingt oder nicht richtig einsetzen.
Dieser Crash, der nach auftauchen eines Objectes passiert, basiert mit großer Wahrscheinlichkeit immer an einer fehlenden oder fehlerhaften Specialpower des gespawnten Objectes. Das ist jedenfalls das, was ich des öfteren feststellen konnte. Ich würde vielleicht also hier erstmal ansetzen und das Object auf Specialpower etc. überprüfen.

FG15

  • Administrator
  • Ringträger
  • *****
  • Beiträge: 5.274
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #11 am: 10. Okt 2012, 14:03 »
Das glaube ich nicht, da Tar-Palantir oben geschrieben hat, dass er das beschworene Object ganz normal spielen konnte, als er es auf eine eigene Map gesetzt hat.
Da hätte dann auch der Fehler auftreten müssen, wenn der Fehler im beschworenen Object gewesen wäre.

Edit:
Dürfte aber nicht zu einem Gamecrash führen, dadurch könnte man die Fähigkeit einfach nur bedingt oder nicht richtig einsetzen.
Dieser Crash, der nach auftauchen eines Objectes passiert, basiert mit großer Wahrscheinlichkeit immer an einer fehlenden oder fehlerhaften Specialpower des gespawnten Objectes.
Das Problem besteht darin, dass das ganze Spiel abstürzt, wenn ich auf den Button klicke, durch den ich den Helden rufen möchte. Und zwar stürzt es nicht mit einer Fehlermeldung ab, sondern der Bildschirm friert ein, der Sound läuft weiter und ich kann es nur noch über den TaskManager schließen.
Tar-Palantir hat hierbei geschrieben, dass es sich nicht um einen normalen GameCrash handelt, welcher aber bei einem normalen SpecialPower-Fehler auftreten würde. Außerdem trat der Fehler schon beim Anklicken des Buttons auf und nicht beim Erscheinen des gespawnten Objects.
« Letzte Änderung: 10. Okt 2012, 14:33 von FG15-ISH7EG »

Tar-Palantir

  • Held von Helms Klamm
  • ***
  • Beiträge: 1.246
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #12 am: 10. Okt 2012, 17:27 »
Es lag an der SpecialPower.ini und daran, dass ich da keinen Radius angegeben hatte. Danke euch beiden für eure Mühe!

Jetzt funktioniert es :)

Tar-Palantir

  • Held von Helms Klamm
  • ***
  • Beiträge: 1.246
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #13 am: 28. Okt 2012, 00:49 »
Hey, ich habe dieses Wochenende wieder mal ein bisschen gecodet und mir ist einmal mehr ein blöder Fehler aufgefallen, den ich nicht zu beheben weiß.

Ich habe ein ziemlich großes Batallion (72 Mann) erstellt. Es kommt dadurch zustande, dass man einen Haufen anderer Batallione kombiniert. Das funktioniert auch alles, auch eine spezielle Formation für dieses Riesen-Batallion.
Das große Problem besteht darin, dass das Spiel ohne Fehlermeldung abstürzt, sobald das Batallion in irgendeiner Form angreift. Es sind darin übrigens Schwertkämpfer, Speere und Bogis vertreten.

Gibt es da vielleicht irgendwie ein maximal-Limit?

Ealendril der Dunkle

  • Gast
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #14 am: 28. Okt 2012, 11:27 »
Zitat
Gibt es da vielleicht irgendwie ein maximal-Limit?
Ja. Genaue Grenze kann ich dir aber nicht sagen. Ich würde euch auch empfehlen keine größeren Horden als 25 zu verwenden, weil dies zu gigantischem Klumpen führt.

Tar-Palantir

  • Held von Helms Klamm
  • ***
  • Beiträge: 1.246
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #15 am: 28. Okt 2012, 11:55 »
Naja, ich wollte auch nicht so eine Riesen-Horde ingame verwenden, es spielt sich wirklich schlecht damit. Aber mir gefällt die Stachelschweinformation von denen einfach sehr gut und ich würde die gerne verwenden können, ohne dass das Spiel abstürzt, wenn sie angreifen.
Ich werde mal probieren, ihnen die Möglichkeit zum Angriff zu nehmen, ihre Rüstung dafür extrem hochzuschrauben und sie Schaden zurückwerfen lassen, vielleicht geht das ja (ich rede jetzt nur vom Stachelschwein, die normale Laufformation ist mir egal).
Gibt es eine Möglichkeit die Bogenschützen, die ja eigentlich auch meinem Fall eine Stachelschweinformation bilden, Feinde in Reichweite auch angreifen zu lassen? Denn das macht die Formation schon ziemlich schlecht bzw. langweilig, wenn die da nur rumstehen und nichts machen. Wenn ich sie aber extra stelle und nicht zum Batallion gehörig machen würde, würden sie ja wohl eigentlich nie so perfekt stehen, wie sie es jetzt tun. Deshalb würde ich sie gerne da drin lassen. G

Ealendril der Dunkle

  • Gast
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #16 am: 30. Okt 2012, 10:05 »
Zitat
Gibt es eine Möglichkeit die Bogenschützen, die ja eigentlich auch meinem Fall eine Stachelschweinformation bilden, Feinde in Reichweite auch angreifen zu lassen?
Meines Wissens nicht. Die Formation bringt die Einheiten in einen Container. Sobald sie eine Aktion durchführen, wird dieser Container aufgelöst.

Tar-Palantir

  • Held von Helms Klamm
  • ***
  • Beiträge: 1.246
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #17 am: 22. Feb 2015, 01:50 »
So, nach langer Zeit bin ich jetzt auch endlich mal wieder auf den Geschmack des Codens gekommen und arbeite in letzter Zeit viel mit map.ini.
Dabei habe ich ein Problem mit neuen CommandButtons:
Wenn ich in der map.ini komplett neue CommandButton erstelle, zeigt mir das Spiel ingame leider kein ButtonImage an, obwohl ich bereits bestehende verwende. Das einzige Image, das funktioniert, ohne dass ingame da ganz breit der Name des Buttons in einem leeren Kreis angezeigt wird, ist "SNReactor", da wird der radiale Button einfach durchsichtig. Und bereits bestehende Buttons mit den von mir gewünschten ButtonImages zu "räubern" und damit ja irgendwie unbrauchbar zu machen, ist auch keine dauerhafte Lösung. Ist da eine Möglichkeit bekannt, dass das funktioniert?

LG Tar-Palantir

FG15

  • Administrator
  • Ringträger
  • *****
  • Beiträge: 5.274
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #18 am: 22. Feb 2015, 10:21 »
Ja, es gibt dafür eine Lösung.
Zwar akzeptiert das Spiel keine Änderungen über map.ini an den ButtonImages in den CommandButtons selber, aber man kann das für das ButtonImage benutze MappedImage problemlos ändern.
Man sucht sich einfach einen unbenutzen CommandButton dessen Bild auch nicht irgendwo anders noch benutzt wird, wovon es zumindestens bei Edain einige gibt, und auch im original Spiel findet sich was und ändert das MappedImage dann auf das gewünschte andere Bild.

Tar-Palantir

  • Held von Helms Klamm
  • ***
  • Beiträge: 1.246
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #19 am: 24. Feb 2015, 21:53 »
Schade, dass es nicht ganz so einfach klappt. Ich brauche einen ganzen Haufen CommandButtons, da ist die Suche schon recht aufwändig. Aber immerhin gibt es überhaupt eine Möglichkeit  :)
Vielen Dank, du hast mir sehr geholfen!  :)

FG15

  • Administrator
  • Ringträger
  • *****
  • Beiträge: 5.274
Re:Tar-Palantirs Coding-Fragen Thread
« Antwort #20 am: 24. Feb 2015, 22:04 »
Es gibt je nach Map die man erstellen möchte meistens eine bestimmte Art von CommandButtons die man benutzen kann.
Ich erstelle häufig auf Missionsmaps ein neus Spellbook und man kann dadurch alle normalen Spellbook Buttons nutzen.
Oder wenn auf der Karte keine CaH vorkommen, kann man davon einiges nutzen.

Hängt halt alles davon ab, was für eine Art von Karte das ist und speziell auch, wofür diese ist. Zumindestens bei Edain gibt es egal was man macht genügend freie Buttons.