Ergebnis 1 bis 14 von 14

Thema: NPC einen Schalter betätigen lassen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    NPC einen Schalter betätigen lassen

    Wie befähige ich einen NPC dazu einen Schalter um 7 Uhr Morgens auszuschalten und um 7 Abends einzuschalten?

  2. #2
    Du musst bei AI ein Find package machen und als Ziel den Schalter.
    Und bei Condition die bedingung das GameHour 7AM oder 7PM ist.
    (Ich glaub das war GetGameHour)

  3. #3
    Zitat Zitat von SirTroy Beitrag anzeigen
    (Ich glaub das war GetGameHour)
    GetCurrentTime
    oder
    GameHour

    Hier auch sehr interressant zu lesen.

  4. #4
    GetCurrent Time hab ich irgendwie nie hinbekommen, ich habe dann if Abfragen gemacht mit direkter Uhrzeit

    if Gamehour >6.9 && Gamehour < 7.1

  5. #5
    Zitat Zitat von EMOD Beitrag anzeigen
    GetCurrent Time hab ich irgendwie nie hinbekommen, ich habe dann if Abfragen gemacht mit direkter Uhrzeit

    if Gamehour >6.9 && Gamehour < 7.1
    Man besteht darauf das GameHour in einem Float gespeichert wird, immer dran denken

  6. #6
    Meinst du den Timer in der float, da scheiterte es zu Beginn mal bei meinen ersten Versuchen.

    Die GameHour wird in meinem Beispiel nur ausgelesen, wie Getxxx

  7. #7
    Hier mal nen Script aus meiner Mod, das funktioniert:

    Code:
    scn SilberModAssassinSpawn01
    
    Begin onTriggerEnter player
    
    Short PlayersLuck
    Float WhatTime
    Set WhatTime to GetCurrentTime
    Set PlayersLuck to player.GetActorValue Luck
    
    if WhatTime >22
    		if PlayersLuck >=7
    					SilberModWhitePhexSpawn1.enable
    					else
    					SilberModWhitePhexSpawn2.enable
    		endif
    endif
    End
    aus vollkommen mir unerklärlichen Gründen funktioniert folgendes Skript aber nicht:

    Code:
    scn SilberModAssassinSpawn01
    
    Begin onTriggerEnter player
    
    Short PlayersLuck
    Float WhatTime
    Set WhatTime to GetCurrentTime
    Set PlayersLuck to player.GetActorValue Luck
    
    if WhatTime >22
            if WhatTime <5
    		if PlayersLuck >=7
    					SilberModWhitePhexSpawn1.enable
    					else
    					SilberModWhitePhexSpawn2.enable
    		endif
             endif
    endif
    End
    Auch nicht mit "&&"

  8. #8
    Ich bin nicht so der Programmierer und die ifs funzen bei mir auch nicht immer wie ich es will, deshalb vereinfache ich sowas immer:

    Begin onTriggerEnter Player

    if GameHour > 22 && GameHour < 5 && GetPlayerAV Luck >= 7
    set xxxxxx
    endif

    END


    Eventuell muss das dann in den GameMode und der Trigger mit short doonce =1 ausgeschaltet werden. Weis nicht ob GetPlayerAV geht, GetActorValue ist das Original. Es gibt auch noch GetBaseAV, falls Luck durch etwas modifiziert wurde und man nur den richtigen Wert gelten lassen will.

  9. #9
    Zitat Zitat von SilberWolf Beitrag anzeigen
    aus vollkommen mir unerklärlichen Gründen funktioniert folgendes Skript aber nicht:

    Code:
    scn SilberModAssassinSpawn01
    
    Begin onTriggerEnter player
    
    Short PlayersLuck
    Float WhatTime
    Set WhatTime to GetCurrentTime
    Set PlayersLuck to player.GetActorValue Luck
    
    if WhatTime >22
            if WhatTime <5
    		if PlayersLuck >=7
    					SilberModWhitePhexSpawn1.enable
    					else
    					SilberModWhitePhexSpawn2.enable
    		endif
             endif
    endif
    End
    Auch nicht mit "&&"
    Ich würde mir erlich gesagt mehr Sorgen machen wenn es so klappen würde

    Warum? Darum:

    if WhatTime >22
    if WhatTime <5


    Jetzt nenn mir doch mal ne Zahl die größer als 22 aber kleiner als 5 ist und du wirst merken warum diese Abfrage SO nicht klappen kann

    Wenn du mit Urzeiten arbeiten willst musst du das definitv anders regeln, zb mit ner Abfrage ala "der Wert muss entweder zwischen 22 und 24 oder zwischen 0 und 5 liegen"-Abfrage.

    Anstelle extra WhatTime zu definieren, kannst du außerdem direkt GetCurrentTime oder Gamehour benutzen.

    Geändert von Stygs (09.04.2009 um 01:50 Uhr)

  10. #10
    auf 22 folgt 23, 24, 0, 1, 2, 3, 4, 5

    Ich will die Uhrzeit zwischen 22 und 5 Uhr anpeilen.
    Ich hab nur leider keinen Plan, wie man hier "inBetween" definiert.
    Ich kanns in 4 Programmier/Skriptsprachen, aber mitm Gecke fehlen mir irgendwie die mittel. Das ist wie Kochen mit verbundenen Händen.

  11. #11
    nein, auf 22 folgen 23, 24, 25, 26 usw...

    Für dich ist das ganze ja eine Uhrzeit, aber für das Spiel nicht. Das Spiel liest die Uhrzeit in diesem Moment einfach als normalen Zahlenwert aus und vergleicht ihn mit 5 und 22 - das das ne Urzeit ist und wie ne Uhr funktioniert wird von dem Spiel in dem Moment gar nicht beachtet.
    Und da eine normale Zahl ja nicht gleichzeitig größer als 22 und kleiner als 5 sein kann, gehts nicht. Glücklicherweise brauchst du hier aber auch kein inBetween, sondern es geht bedeutend einfacher:

    EMOD hat da schon FAST recht mit seinem Vorschlag, es müsst so lauten:

    if GameHour > 22 || GameHour < 5

    Damit würde die Abfrage aktiv wenn die Uhrzeit größer als 22 oder kleiner als 5 ist - und da die Uhrzeit ja nur zwischen 0 und 23 liegen kann, haben wir somit alle relevanten Möglichkeiten abgedeckt ...

    Geändert von Stygs (09.04.2009 um 09:07 Uhr)

  12. #12
    Bei dir ist es logich das es funktioniert, weil bei dir ja alle Zahlen zwischen 2.1 und 3.9 die Bedingung erfüllen.
    Nur liegt die Zahl von SilberWolf nicht zwischen 5 und 22 (dann hättest du absolut recht), sondern zwischen 22 und 5. Und diese Bedingung erfüllt keine normale Zahl. Daher ist diese Abfrage etwas anders.

    Guck mal ob dein Script noch gehen würde, wenn du

    gameHour >= 3.9 && gameHour <= 2.1

    benutzt, so wäre das nämlich vom Aufbau her wie bei SilberWolf.


    Zitat Zitat
    Ein ODER dürfte nicht funktionieren, da z.b. 7 Uhr größer als 22 ist, wenn er weiterzählt 22, 23, 24, 1, 2, 3, 4, 5, 6, 7... einfach mal testen mit einer showmessage.
    Ich werds mal testen - aber eigentlich vergleicht das Ding NUR die reinen Zahlenwerte - und da ist 7 kleiner als 22, egal in welchem Zusammenhang.
    EDIT: Bei mir klappt das ODER fehlerfrei....



    Und wenn ihr mir nicht glaubt, guckt einfach im Actor Effect PerkNightPerson nach.
    Da ist genau diese "Oder" Abfrage drin die ich die ganze Zeit meine:


    (Thx @ Golan für den Tipp mit dem Perk)

    Geändert von Stygs (09.04.2009 um 10:03 Uhr)

Berechtigungen

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