29. Mär 2024, 07:32 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 10729 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.268
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.268
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.