Wie befähige ich einen NPC dazu einen Schalter um 7 Uhr Morgens auszuschalten und um 7 Abends einzuschalten?
Wie befähige ich einen NPC dazu einen Schalter um 7 Uhr Morgens auszuschalten und um 7 Abends einzuschalten?
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)
--If you're not too great at construction - don't worry! You can place a variety of characters in silly positions.
Ihr glaubts mir nicht? Klick
GetCurrentTime
oder
GameHour
Hier auch sehr interressant zu lesen.
GetCurrent Time hab ich irgendwie nie hinbekommen, ich habe dann if Abfragen gemacht mit direkter Uhrzeit
if Gamehour >6.9 && Gamehour < 7.1
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![]()
Hier mal nen Script aus meiner Mod, das funktioniert:
aus vollkommen mir unerklärlichen Gründen funktioniert folgendes Skript aber nicht:
Auch nicht mit "&&"
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.
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.
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.
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 ...![]()
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.
Ich werds mal testen - aber eigentlich vergleicht das Ding NUR die reinen Zahlenwerte - und da ist 7 kleiner als 22, egal in welchem Zusammenhang.Zitat
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)