Ergebnis 1 bis 6 von 6
  1. #1
    Let's Play-Gucker
    Registriert seit
    30.09.2010
    Beiträge
    108

    Standard Begleiter Dialog - Inventar

    Ich hab mir überlegt, das man das Topic „Lass uns tauschen“ unterteilen könnte in ->

    - Lager öffnen (so wie gehabt)

    - Alles tauschen (Begleiter Inventar komplett ins Spieler Inventar verschieben)


    Ist das Script technisch machbar und wenn ja, wie?

    Hab diese Scriptzeile gefunden -> RemoveAllItems Player 0 1
    mit ihr müsste das komplette Inventar des containers ins Spieler Inventar verschoben werden, glaube ich. Nur wie schaut der Rest aus?

    Au, verflucht, das ist ja schon die Lösung!
    Muss nur noch die Topic so ändern wie oben beschrieben, fertig!

    Mist, Begleiter verliert auch seine Waffe und die Muni!

    Nachtrag:

    Boïndil hat mir inzwischen ein paar Möglichkeiten gezeigt, wie man das Problem lösen kann.

    Momentan sind wir hier angekommen, falls ein Begleiter nur eine Waffe und eine Munitionsart im Inventar hat würde es so aussehen ->
    Code:
    RemoveItem EyeBot1HP 1
    RemoveItem AmmoSmallEnergyCellRobot 1
    RemoveAllItems Player 0 1
    AddItem AmmoSmallEnergyCellRobot 1
    AddItem EyeBot1HP 1
    Boïndil zeigt mir hier, wie ich das Problem lösen kann, wenn mein EyeBot im Spiel über ein Terminal ein Waffen Upgrade bekommt, genauer gesagt wie man die aktuelle Waffe abfragt.

    Z.B. hat mein wlwQuestScript oder wlwQuestSpawnScript viele Variablen, die von anderen Scripten in Actors oder Triggern ausgelesen wird.
    Wenn du von einem anderen Script aus die Variablen einer Quest aufrufen möchtest, geht das z.B. so:
    scn ActorScript
    Begin GameMode
    If wlwQuest.SurvivorMode == 2
    RemoveItem wlwQuestSurvivorModeList 1
    EndIf
    End
    Und bei dir wäre das dann ungefähr so:
    If LazarusQuest.WeaponLevel == 1
    Muss es jetzt bei drei möglichen Waffen so aussehen?
    Code:
    scn ActorScript
    Begin GameMode
    If aaaLazarusDialogue.WeaponLevel == 0
    RemoveItem EyeBot1HP 1
    RemoveItem AmmoSmallEnergyCellRobot 1
    RemoveAllItems Player 0 1
    AddItem AmmoSmallEnergyCellRobot 1
    AddItem EyeBot1HP 1
    EndIf
    If aaaLazarusDialogue.WeaponLevel == 1
    RemoveItem EyeBot2HPGreen 1
    RemoveItem AmmoSmallEnergyCellRobot 1
    RemoveAllItems Player 0 1
    AddItem AmmoSmallEnergyCellRobot 1
    AddItem EyeBot2HPGreen 1
    EndIf
    If aaaLazarusDialogue.WeaponLevel == 2
    RemoveItem EDEZapGun 1
    RemoveItem AmmoSmallEnergyCellRobot 1
    RemoveAllItems Player 0 1
    AddItem AmmoSmallEnergyCellRobot 1
    AddItem EDEZapGun 1
    EndIf
    End
    Das mit den Waffen und der Muni funktioniert, nur wird jetzt das Begleiter Inventar nicht mehr ins Spieler Inv. verschoben.
    Geändert von Wulfy301 (18.11.2013 um 21:34 Uhr)

  2. #2
    Not my Fallout Avatar von Boïndil
    Registriert seit
    20.07.2008
    Ort
    Vaullt 101
    Beiträge
    12.122
    Gamer IDs

    Gamertag: PixelMurder

    Standard

    Der Code sieht eigentlich gut aus.
    Sind die Waffen und die Mun upnlayable? Macht man z.B. bei Sentrybots so, damit man ihre Waffen und Raketen nicht im Inventar sieht. Eiegntlich sollte man sogar darauf verzichten können, ihm zuerst die Bewaffnung abzunehmen.

    Du kannst übrigens schon neue Beiträge für neue Fragen machen, sonst sieht man ja nicht, dass was neues im Thread hinzugekommen ist
    No mods for Failout 76.

  3. #3
    Let's Play-Gucker
    Registriert seit
    30.09.2010
    Beiträge
    108

    Standard

    Waffen und Mun sind unplayable. Nö, die Waffen müssen entfernt werden, weil die sonst der Spieler kriegt!
    Bei doppel Post kriegt man schimpfe!

    Hast du ne Lösung warum das Inventar vom Begleiter nicht mehr zum Spieler wechselt?
    Muss ich da eine andere Script Form verwenden, mit "aaaLazarus.RemoveAllItems Player 0 1" z.B. gibt's eine Fehlermeldung.

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Bild 001.jpg 
Hits:	182 
Größe:	48,9 KB 
ID:	18614 Klicke auf die Grafik für eine größere Ansicht 

Name:	Bild 002.jpg 
Hits:	187 
Größe:	54,9 KB 
ID:	18615
    Geändert von Wulfy301 (18.11.2013 um 22:21 Uhr)

  4. #4
    Not my Fallout Avatar von Boïndil
    Registriert seit
    20.07.2008
    Ort
    Vaullt 101
    Beiträge
    12.122
    Gamer IDs

    Gamertag: PixelMurder

    Standard

    Kommt sich auf de Kontext an, was ein Doppelpost ist. Ich habe dir mehr als ein Mal nicht auf neue Fragen geantwortet, weil ich nicht wusste, dass du solche gestellt hattest, man sieht ja Änderungen an Beiträgen nicht von aussen.

    Result-Scripte dürfen keine Begin/End-Blöcke drin haben und nach meinem Wissen auch keine lokale Variablen-Deklaration wie "short X". Result-Scripte können schon einige Zeilen Code enthalten, aber wenn es mehr als 20 sind, sollte man sich überlegen, ob man eine Funktion in ein Quest- oder Actor-Script auslagert, wo man komfortabler arbeiten kann.

    Einige Result-Blöcke nehmen an, dass es dabei um einen bestimmten Actor geht, z.B. in Packages, wo man direkt "AddItem X" notieren kann, dasselbe für ein Script, das direkt auf einem Actor läuft. Im Zweifelsfall sollte man aber immer über eine Referenz gehen, z.B. "LazarusRef.AddItem". "Lazarus.AddItem" geht überhaupt nie, da es theoretisch zig Lazarusse im Spiel haben kann.

    Damit man einen Unique-Actor per Script von aussen aufrufen kann, muss man ihn zuerst ins Render-Fenster ziehen. Dann muss man ihm eine eindeutige ID geben, wie etwa LazarusRef und die Checkbox "Persistant reference" anwählen. Solche Actors nennen sich oft in der Art LazarusRef oder CrazyWolfgangRef, da das eine Art Konvention war, aber es geht hauptsächlich darum, dass so eine ID eindeutig sein muss. Eine Referenz ist eine Instanz eines Basis-Object(Lazarus), du kannst mehrere Lazarusse(LazarzusRef3) durchnummeriert im Spiel haben. Und du kannst auf jeden aus einem anderen Script daarauf zugreifen oder sogar im immer selben Lazarus-Script rausfinden, welche Instanz es ist: If GetIsReference LazarusRef3.

    LazarusRef hast du ja schon. In der elegantesten Form würde das Script im Dialog so aussehen:
    Code:
    If aaaLazarusDialogue.WeaponLevel == 0
        LazarusRef.RemoveItem EyeBot1HP 1
        LazarusRef.RemoveItem AmmoSmallEnergyCellRobot 1
        LazarusRef.RemoveAllItems Player 0 1
        LazarusRef.AddItem AmmoSmallEnergyCellRobot 1
        LazarusRef.AddItem EyeBot1HP 1
    ElseIf aaaLazarusDialogue.WeaponLevel == 1
        LazarusRef.RemoveItem EyeBot2HPGreen 1
        LazarusRef.RemoveItem AmmoSmallEnergyCellRobot 1
        LazarusRef.RemoveAllItems Player 0 1
        LazarusRef.AddItem AmmoSmallEnergyCellRobot 1
        LazarusRef.AddItem EyeBot2HPGreen 1
    ElseIf aaaLazarusDialogue.WeaponLevel == 2
        LazarusRef.RemoveItem EDEZapGun 1
        LazarusRef.RemoveItem AmmoSmallEnergyCellRobot 1
        LazarusRef.RemoveAllItems Player 0 1
        LazarusRef.AddItem AmmoSmallEnergyCellRobot 1
        LazarusRef.AddItem EDEZapGun 1
    EndIf
    LazarusRef kann immer nur ein Level haben, und wenn man das mit den ElseIf macht, wählt das Spiel immer nur den ersten zutreffenden Block und bricht dann die Auswertung ab. Bei einem Dialog ist das vielleicht nicht so wichtig, aber wenn man ein sehr langes Script mit komplexen Bedingungen hat, kann man die Performance schonen.
    Ist ja eigentlich seltsam. Zumindest wenn man "Player.RemoveAllItems" macht, bleiben alle Quest-Items im Inventar. Hätte gedacht, dass bei LazarusRef.RemoveAllItems Player" die Unplayable-Items nicht im Inventar des Player auftauchen.
    Geändert von Boïndil (19.11.2013 um 10:10 Uhr)
    No mods for Failout 76.

  5. #5
    Let's Play-Gucker
    Registriert seit
    30.09.2010
    Beiträge
    108

    Standard

    Wann schläfst du eigentlich?

    Spitzen Arbeit, funktioniert Tip Top!
    Hab das mit den Quest-Items extra nochmal ausprobiert, wird mit getauscht.

    Muss mich nur wundern das so was nicht schon früher ausgetüftelt wurde, spart doch jede Menge rumgeklicke?

  6. #6
    Not my Fallout Avatar von Boïndil
    Registriert seit
    20.07.2008
    Ort
    Vaullt 101
    Beiträge
    12.122
    Gamer IDs

    Gamertag: PixelMurder

    Standard

    Ich beschäftige mich nicht häufig mit dem Inventar der Begleiter, aber manche mag das sicher nützen, eine gute Idee.
    No mods for Failout 76.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •