Chat Makro mit If else

Hallo zusammen,

ich versuche gerade ein Makro zu schreiben, was je nach Uhrzeit eine andere Ausgabe im Gildenchat erzeugt.
Mein Versuch_

/script local hour,minute = GetGameTime()
local Ind; if hour > 6 and hour =< 11 then ind = “Morgen” elseif hour > 11 and hour < 18 then ind =“Mittag” elseif hour >= 18 or hour <= 6 then ind = “Abend” end; SendChatMessage(“n”, “GUILD”, nil, ‘K’);

funktioniert leider nicht. Kann mir jmd helfen?

Mit funktioniert leider nicht meinst du dass einfach nichts passiert? Oder spuckt das Makro was falsches aus?
Kenn mich mit Makros nicht aus aber du benutzt zb einmal <= und einmal =<. Denke da liegt schon mal ein Syntaxfehler. Normal sollte es <=

1 Like

Hey danke :slight_smile:
Daran lags allerdings nicht.
Mit “funktioniert nicht” meine ich,
dass der gesamte Makroinhalt in den letzten Chat gepostet wird.
(Mit Ausnahme des “/script”)

Innerhalb eines Makros ist jede Zeile ein eigenständiger Befehl, d.h. sobald du einen Zeilenumbruch nutzt, beginnt dort für das Makro ein komplett neuer Befehl - der ohne besonderen Angabe eine einfache Chatausgabe ist.

Damit die lokalen Variablen genutzt werden können, müssen diese auch innerhalb des selben /script- bzw. /run-Befehls stehen.

Du müsstest also einfach das gesamte Makro in eine Zeile zusammenfassen.
Dazu benötigst du die Minuten nicht, weshalb du diese einfach mit der Variablen _ verwerfen kannst und, da du die Ausgabe in den Gildenchat haben willst, sind die letzten beiden Parameter von SendChatMessage überflüssig.
Weiter könntest du noch einige der Abfragen entfernen, da du nicht immer die genauen Zeitraum prüfen musst - es reicht, wenn du immer das prüfst, was als nächstes zutreffen soll und am Ende mit einem else arbeitest, weil ja nichts anderes mehr zutreffen kann.

Prinzipiell fehlt hier aber die Chatausgabe an sich - du gibst über SendChatMessage den Buchstaben n aus, arbeitest davor aber mit der Variablen Ind. Irgendwo müsstest du da also noch einen Text hinzufügen und/oder die entsprechende Variable ausgeben.

Den zugewiesenen String (Morgen, Mittag, Abend) könntest du bspw. so ausgeben:

/script local hour,_ = GetGameTime(); local Ind; if hour > 18 or hour <= 6 then Ind="Abend" elseif hour > 11 then Ind="Mittag" else Ind="Morgen" end; SendChatMessage(Ind, "GUILD");
3 Likes

Perfekt! Vielen Dank. Das war sehr lehrreich :smiley: War mein erster Try :slight_smile:

Tolle Sache, da habe ich mal eine Frage!
Wenn ich “Guild” ersetze, müßte das doch auch für den Dungen Browser, wenn ich in einer Gruppe bin oder als begrüßung für einen Freund funktionieren.
Welche Namen muß ich da einsetzen, I und P funktioniert hier irgentwie nicht.

Da kannst du z. B. “SAY” oder “PARTY” verwenden. Eigentlich müsste auch jeder Channelname gehen.
Vermutlich geht auch “INSTANCE”.

Eine komplette Übersicht über sämtliche möglichen Chattypen gibt es bspw. auf Wowpedia:

Bei Chattypen, die noch weitere Parameter erfordern (bspw. das Ziel beim Flüstern) müssen diese aber ebenfalls noch angegeben werden. Dabei ist aber zu beachten, dass der dritte Parameter der Funktion SendChatMessage die Sprache (nil lässt sich für die Standardsprache nutzen) ist und erst der vierte Parameter dann wieder für den Chattypen relevant ist, bspw. beim Flüstern:

SendChatMessage("Text", "WHISPER", nil, "Name des Ziels")

Dieses Thema wurde automatisch 180 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.