PUPPET C222Resetter LOGIN: " wurde erfolgreich geladen." LOGOUT: " wurde beendet." APPEAR: " sucht nach seiner Lonely Heartsclub Band ;-)" DISAPPEAR: " sucht woanders weiter ;-)" INFO: "ResetPuppet für C222" OWN: NO NEWOWNER: NO OVERFLOW: ERROR ZEROINTVARS: YES CASESENSITIV: YES CITYCHAT: NO TWINDOW: YES SAVE: "*" #DEBUG: "ACTION EVENT SINGLESTEP" # Debugging Options # @-Befehle als Hilfestellung für den Umgang mit diesem Puppet # - sollten std.-mässig implementiert werden @info: info # Informationen zum Puppet und Autor @list: list # Informationen zu den Puppetbefehlen # @-Befehle für die Fehlersuche im Puppet # - nutzbar nur durch den Starter des Puppets @vd: vardump # VarDump (siehe Puppet-Doku) @ed: eventdump # EventDump (") @qd: queuedump # QueueDump (") ACTION start # Stadt, für die das Puppet aktiv ist. SET _stadt_ "C222" # Raum, in welchem sich das Puppet aufhält, # wenn es nicht auf einem Reset-Durchgang ist. SET _home_ "C222-48" # Liste der Puppet-"Administratoren", die die # Befehle des Puppets anstossen dürfen. SET _admin_ "McCartney" # Raumliste - "kurzes Intervall" # Diese Räume werden in jedem Rundgang resettet. SET _raumliste_KI "3 4 5 8 10 11 13 14 16 17 18 19 20 22 23 25 26 27 29 31 34 35 37 38 40 41 42 43 47 50 51 53 54 55 57 61 62 64 66 67 68 70 71-1 71-2 71-3 73 77 78 80 82 85 88 89 91 92 94 95 97 99-1 99-2 99-3" # Raumliste - "langes Intervall" # Diese Räume werden in jedem 2. Rundgang resettet. SET _raumliste_LI "9 12" # Zähler "Anzahl der Rundgänge" EVAL rundgang = 0 # Intervall in Sekunden bis zum nächsten Rundgang EVAL intervall = 30 * 90 # Daten zum Puppet-Starter besorgen WHOIS STARTER SET _starter_ [WHO] # Daten zum Puppet besorgen WHOIS PUPPET SET _puppet_ [WHO] # Channel setzen und moderieren SET fab4channel "FabFourFriends" DO fab4channel # Daten der letzten Beendigung testen und ggfls. # ausgeben IF EXISTS SAVE99 BEGIN >> /tell McCartney [SAVE99] UNSET SAVE99 END # Aufenthaltsraum aufsuchen >> /room [_home_] # Events registrieren # - Std.-Handhabung WHEN KICKED DO kicked WHEN ERROR DO error # - Std.-Kommandos WHEN KEYWORD "!info" IN TELL DO info WHEN KEYWORD "!list" IN TELL DO list # - Spezifische Kommandos WHEN KEYWORD "!rundgang" FROM "[_admin_]" IN TELL DO rundgang_manu # TIMER für automatischen Rundgang aktivieren WHEN TIMER [intervall] DO rundgang_auto END # ------------------------------------------------------ rundgang_auto # Action für den automatischen Rundgang ACTION rundgang_auto # Zähler "Anzahl der Rundgänge" erhöhen EVAL rundgang = [rundgang] + 1 # In eine Raumliste werden alle Raumnummern des # kurzes Intervalls übernommen. Die Raumnummern # des langen Intervalls werden jedes zweite mal # hinzugefügt. LOCAL raumliste = [_raumliste_KI] IF [rundgang] % 2 == 0 ADDLIST raumliste [_raumliste_LI] # Ein Rundgang wird angestossen. DO rundgang END # ------------------------------------------------------ rundgang_manu # Action für den manuell angestossenen Rundgang ACTION rundgang_manu # In eine Raumliste werden alle Räume übernommen. LOCAL raumliste = [_raumliste_KI] ADDLIST raumliste [_raumliste_LI] # Ein Rundgang wird angestossen. DO rundgang END # ----------------------------------------------------------- rundgang ACTION rundgang # TIMER wird deaktiviert IGNORE TIMER # Zähler für den Rundgang LOCAL anzPersonenStadt = 0 LOCAL anzPersonenRaum = 0 # Räume der Liste abarbeiten... FOR raum IN [raumliste] BEGIN # Nächsten Raum aufsuchen >> /room [_stadt_]-[raum] SET anzPersonenRaum 0 DO spielerzahl # Ist keine Person im Raum, wird ein "/reset" # ausgeführt. IF [anzPersonenRaum] == 0 >> /reset ELSE # Zähler "Personen in der Stadt" erhöhen um # die Anzahl "Personen im Raum". EVAL anzPersonenStadt = [anzPersonenStadt] + [anzPersonenRaum] END # Puppet begibt sich in seinen Pausenraum. >> /room [_home_] # Bekanntgabe der ermittelten Zahlen an die # hinterlegten Administratoren. IF [anzPersonenStadt] > 0 >> /tell McCartney >>> Reset-Durchgang beendet - [anzPersonenStadt] Leute sind in der Stadt am spielen <<< # TIMER für den autom. Rundgang wird reaktiviert. WHEN TIMER [intervall] DO rundgang_auto END # -------------------------------------------------------- spielerzahl ACTION spielerzahl # Ermittlung der anwesenden Personen GETWHO # Verarbeitung der anwesenden Personen... FOR anwesender IN [WHO] BEGIN # Informationen über eine anwesende Person holen. GETINFO [anwesender] # Test, ob diese Person (immer noch) online ist. IF [ONLINE] BEGIN # Nicht-Puppets werden gezählt als "anwesende # Personen im Raum". IF NOT [PUPPET] EVAL anzPersonenRaum = [anzPersonenRaum] + 1 END END END # --------------------------------------------------------------- info # Action für Informationen zum Puppet und Autor. # - normal sollte hier dann mehr an Informationen stehen. ACTION info >> ;[WHO] ------------------------------------------------------- >> ;[WHO] Reset-Puppet der Stadt C222 END # --------------------------------------------------------------- list # Action zu den Kommandos des Puppets. # - Hier werden die Kommandos nur dan berechtigten Personen # ausgegeben. ACTION list DO info # Test auf berechtigte Personen IF [WHO] INLIST [_admin_] BEGIN >> ;[WHO] Befehle: >> ;[WHO] @rundgang = Anstossen manuellen Reset-Rundgang END END # -------------------------------------------------------------- error # Action, die beim Auftreten eines Fehler aufgerufen wird. # - Der Fehler wird protokolliert und das Puppet beendet. ACTION error # Merken "Letzte Beendigung" in SAVE99 GETDATE SET SAVE99 "Fehler am [DAY].[MONTH] um [HOUR]:[MIN] -- Meldung: [MESSAGE]" # Puppet beenden HARAKIRI END # ------------------------------------------------------------- kicked # Action, die beim Kick des Puppets aufgerufen wird. # - Der Kicker wird gespeichert. ACTION kicked # Merken "Letzte Beendigung" in SAVE99 GETDATE SET SAVE99 "Kick durch [WHO] am [DAY].[MONTH] um [HOUR]:[MIN]" END # ------------------------------------------------------------- fab4channel # fab4channel # Action, die beim Puppet start den friends-channel von Fab4 moderiert. ACTION fab4channel >> /channel [fab4channel] WHEN MATCH "User 'Sgt_Pepper' OPERATOR gesetzt." DO operieren WHEN MATCH "User 'Sgt_Pepper' von * auf Opermode OPERATOR gesetzt." DO operieren >> /gtell [fab4channel] /makeoper END ACTION operieren >> /gtell [fab4channel] /chmotd Herzlich Willkommen im offenen Channel von C222|Schön dass du den Weg hierher gefunden hast >> /gtell [fab4channel] /mode permanent=ON END PUPPETEND