Ptokax-Config: Unterschied zwischen den Versionen

Aus Weimarnetz Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
−
===wichtige Einstellungen===
+
                                                       
−
* min.-max. share (freigabe)
+
                                                          Willkommen in der Beat-Box
−
* min.-max. slots
+
                                                         
−
* IP-Adresse
+
            ...................................................Hub-Infos ................................................
−
* Motd - Massage of the Day - Info beim verbinden
 
−
* Webserver - Info fuer den Hub-betreiber
 
  
 +
                                        Das Kopieren fremder Inhalte zur privaten oder sonstigen, eigener
 +
                                (auch geschäftlichen) Verwendung ist nach deutschem und schweizer
 +
                                Recht zulässig. Laut dem Gesetzestext ist nicht zulässig,
 +
                                die fremden Inhalte ohne Einwilligung des Urhebers wieder zu
 +
                                veröffentlichen. Im Internet (World Wide Web) sind alle Seiten, die
 +
                                nicht durch Paßworte geschützt sind, öffentlich!
 +
                                Wer fremde Inhalte auf seine Web-Seiten stellt, diese
 +
                                unzulässigerweise veröffentlicht dieses kann strafrechtlich verfolgt
 +
werden und kann recht teuer werden. Allein die
 +
        GEMA & Urheberrechtsgesetz - Gebühren können einen arm machen
 +
                                Ich hoffe, das euch das nicht zu sehr abschreckt!
 +
                               
 +
                                UND NOCH EINMAL, ICH DER BETREIBER DIESES HUBs/CHAT ÜBERNEHME
 +
                                KEINE VERANTWORTUNG FÜR EUREN FESTPLATTENINHALT !!!!!!!!
 +
                               
 +
             
  
−
===zusätzliche skripte (nuetzliches und spass usw.) in der Programmiersprache Lua 5.0.2.===
+
                                         
  
−
====Trivia Quiz-bot====
+
                                            Fragen zum Partnerhub bitte an Osiris oder die OP's wenden!
−
<pre>
 
−
-- Converted to Lua5 By Jelf 15/03/05
 
−
-- Translated by Psycho Chihuahua 16/03/05
 
  
−
BotName = "Quiz"
 
−
ScriptVersion = "WeimarnetzQuiz"
 
−
BotVersion = BotName.." "..ScriptVersion
 
  
−
-- This file is not needed it will be created if it not exists
 
−
strTrivScoreFile = "TriviaScores.dat"
 
  
−
-- This file is needed unless you want to run a Trivia with only two questions ;)
+
                                                                      Bitte beachtet:
−
strDefTrivFile = "Trivia Fragen & Antworten.dat"
+
                                                          Wer länger als 3 Wochen nicht im Hub
−
strTrivFile = strDefTrivFile
+
                                                          war wird gelöscht! Wer länger Abwesend ist
−
strQFile = "Trivia Fragen & Antworten selfmade.dat"
+
                                                          teilt es bitte ein OP mit, Danke!
 +
             
 +
                                   
 +
                                                                   
 +
.                                                   *Regeln für unseren Hub*
  
−
-- This char will be the global separator? (Make it one that is not used in nicknames nor questions ;)
 
−
strGSep = "*"
 
  
−
-- This char is used to mask the unrevealed chars
+
                      01. Allgemein         • (AD's) und (OP's) haben das letzte Wort....und generell Recht!
−
strCMask = "•"
+
                                                • max 10 HUbs
 +
• Min. 2 Slots 
 +
                                        • MinShare:  3 GB 
 +
                                                • Kein Nazi, Tier oder Kinderporno im Share.
 +
                                        • Gesaugte Dateien sofort und min 2 Wochen lang sharen
 +
                                                • Entpackte Releases haben nix im Share verloren und sollten entfernt werden.
 +
                                • Dateien anderer P2P Systeme können zu kick führen....!
 +
• säubert euren Share von Torrentnamen
 +
                                • Übersichtlichkeit ist Pflicht. Wirre Strukturen werden entfernt^^
 +
                     
 +
                      03. Wichtig:         • Diskretion wird vorrausgesetzt
 +
                                • Mainchatlogs werden nicht ausserhalb dieses Hubs kopiert.
 +
                                • PMs ebenso
 +
                                • Bereits der erste Verstoss hierzu führt zum Verlust des Accounts!
 +
                                • Wer Werbung vorhat, kann die OPS auch gleich um delreg bitten
 +
                           
 +
                      04. Sonstiges:         • Regelmässige Onlinezeit wird vorrausgesetzt.
 +
                                                • Tragt in den Settings unter Email eure genaue Connection ein.
 +
                                • z.B. DSL1000/128 - DSL2000/192 - DSL3000/384
 +
                                • Freundlichkeit den anderen Gegenüber wird als selbstverständlich angesehen.
 +
                                • Die OPs haben dabei freien Ermessenspielraum
  
−
-- Default startup mode of Trivia!
 
−
lngDefMode = 0 -- (0 = game is played in chat!, 1 = game is played in chat but questions only show for players, 2 = game is played in pm with players)
 
−
lngMode = lngDefMode
 
  
−
-- Max number of questions to show when a Operator ask to see list Questions 0 = 0, -1 = Disabled
+
°°°°°°°°Wenn ihr euch nicht daran haltet, können warn, kick, ban oder delreg die Folge sein. Diskussionen sind sinnlos°°°°°°°°
−
lngMaxShowList = 5
+
                                                                                                                                              .##                                                   
 +
                                                                ,##                                                   
 +
                                                        ##-   ###                                                   
 +
                                                        x##+    ;                                                     
 +
                                                    ##.  #+                                                         
 +
                                                    ####      ########                                               
 +
                                                      ;.    .###########                                             
 +
                                                            ####+- ##########=                                        
 +
                                                  ;####.  ##  ,######-  -####                                       
 +
                                                  .##x,    ## ,###= ######+ .##                                       
 +
                                                            #### #  = #######                                       
 +
                                                        -#-  ######;  ###x ###                                         
 +
                                                    -#####  ## #+,  .=##x##                                         
 +
                                                      x.      ##          x##                                         
 +
                                                              ####x.      #######x;                                   
 +
                                                                ######    +############                               
 +
                                                                ;##  ##  #,#      -######                             
 +
                                                              ####x ##  =# ##        =###                           
 +
                                                            +############## ##  ##      ###                           
 +
                                                          ##############  ###  ##        ###                         
 +
                                                          ###  #########-####  ###  -#######                         
 +
                                                        #####  =##### ######    #############                         
 +
                                                      #######.  ###########    +######  ###-                         
 +
                    ;##                              =###. ####  -##########,#####-      ###                         
 +
                  ,###x+                        ,#######  ##### #######.  #####          x###                         
 +
                x######                      X#####,  ##########.        .          x#####                           
 +
                ###=####+                .X#####      +########.##      #    -X########-                           
 +
                ##+#######,          ,#####x    ,######    +##  ##,  .x###############                               
 +
              .+#####; +#####        ####    ; #####;      ###  #####################                               
 +
              #-#####    =#####    .##+    ##==##          ##X    .#####=  #####.###                               
 +
            ##-####;==#-  -####x  ##    #######          ###        ##-#      ## ###                               
 +
          #################  .####; ##x#########          ,###      +####      ## +##                               
 +
          #####+    .#;  +##  #### ####;                ###        #####          ###                             
 +
        #####,      ##  .-###;  ###x                =#######-      #=.##    -########.                             
 +
        #####x,    ;#, -#####X##X  ###x            #######,#####  ######  -###########                             
 +
        #####+..    ## ########  -##  ###= =      #####      -######## #  +##############=                           
 +
        ####        # -######### + ,##;.###X##-  x###X            ;###########  x### ##x####                         
 +
    . ###x        ## ##  ######=###--X#+-##### ####                    ;+;      ##  ###;###  #.##,                 
 +
    .# ###        # ##  #####x#-######X####  ###                                      ,#. ### ##-##                 
 +
    #+##          ## ##  ################ ###-x###                      x#                  ### ##                   
 +
  ## #          #  ######### #-#####+#= #####;##          .#+        +###+              #### ,                     
 +
  ###x####.    ##  ######## ########.# #####= ###          ##=.=+xx+=,  +###            ####              ;#####-   
 +
    x=  =####x  #    ######  #-#####.# ## ###  ###        ## #################.          ####            -########## 
 +
            .#####;;.  =x#  ##x#XX#x,= #####=  ###      ##x ###xx++x########          #####Xx;.      =#############.
 +
              ##+X#####xx######xx+++X. -####;  X##.      ### ###      ####.          ###############################
 +
              =####X-              .;;. ,###    ###    ## ##  ###.    ####        ,=################################,
 +
      =#####    .######  #####  ############.#X    X###  ###+##  ###  #####  X#########################################
 +
    ##########  ######x######  -#####    ##        ####x ,## ###= ########    ###-.  +#################################
 +
  ######, ;###  #############  ########+      ######################## ;############################################,
 +
  ############  #### ### ####  =########      ######x##########################X++x######################      .;-. 
 +
  ############  ####  # #####.  ####.  .##  ###x          .############.            ,#################             
 +
    -########  ######  #######-+###########    ####################################++###################             
 +
                    ,,                  .,      -############=        =###############################+               
  
−
-- Max no of Hints per word, and always hit on a hidden char
+
                              ***************    So und nun viel Spaß Beat-Box ***************
−
lngMaxHints = 4
 
−
boolHintAlwaysHitHidden = nil -- (nil = off, 1 = on)
 
−
 
 
−
-- How much time before a question end. Time in Trivia is measured in 15 seconds, 1 = 15 seconds, 2 = 30 seconds etc!
 
−
-- Rest is how long to rest after a question is solved depening on when the word is solved in the Timer loop it is 15 secs to the setting!
 
−
lngMaxTime = 8 -- (Needs to be a multiple of 4  i.e. 4 / 8 / 12 / 16)
 
−
lngRestTime = 2
 
−
lngHintTime = lngMaxTime / 4
 
−
 
 
−
-- How often should the bot autosave the scores
 
−
boolAutoSaveScores = 1 -- (nil = off, 1 = on)
 
−
countSaveTurns = 10 -- After how many questions should the scores be saved
 
−
 
 
−
-- Should bot reveal the correct answer once time is up?
 
−
boolRevealAnswer = 1 -- (nil = off, 1 = on)
 
−
 
 
−
-- Should the bot display what guess made the word become a little clearer if played in PM!
 
−
boolShowGuessesInPM = 1 -- (nil = off, 1 = on)
 
−
 
 
−
-- Should the bot Auto Reveal Hints?
 
−
boolAutoHint = 1 -- (nil = off, 1 = on)
 
−
 
 
−
-- Should the bot auto login every user on connect ?
 
−
boolAutoLogin = nil -- (nil = off, 1 = on)
 
−
 
 
−
-- Do you want users to be able to add questions ? Operators can always add questions.
 
−
boolAddQuestion = 1 -- (nil = No, 1 = Yes)
 
−
 
 
−
-- TriggStart is what char the commands should begin with I use ! but you can use # or whatever
 
−
TriggStart = "#"
 
−
 
 
−
-- Theese are the different triggers I've tried to name them so that one easily understand what they do!
 
−
-- I include TriggStart and then the word within "" this word is not casesensitive!
 
−
JoinTrigg = TriggStart.."qmitmach"
 
−
PartTrigg = TriggStart.."qraus"
 
−
StartTrigg = TriggStart.."qstart"
 
−
StopTrigg = TriggStart.."qstop"
 
−
WordTrigg = TriggStart.."qwort"
 
−
QuizTrigg = TriggStart.."qfrage"
 
−
RestartTrigg = TriggStart.."qneustart"
 
−
PointTrigg = TriggStart.."qpunkte"
 
−
ScoreTrigg = TriggStart.."qergebnis"
 
−
PlayerTrigg = TriggStart.."qspieler"
 
−
QuestionsTrigg = TriggStart.."qfragen"
 
−
ReloadTrigg = TriggStart.."qneuladen"
 
−
HelpTrigg = TriggStart.."qhilfe"
 
−
ExtraHelpTrigg = TriggStart.."qhilfe+"
 
−
SaveTrigg = TriggStart.."qsicherergebnis"
 
−
LoadTrigg = TriggStart.."qladeergebnis"
 
−
ModeTrigg = TriggStart.."qmodus"
 
−
HintTrigg = TriggStart.."qtip"
 
−
TopTrigg = TriggStart.."qtopten"
 
−
AddTrigg = TriggStart.."qfragedazu"
 
−
 
 
−
bcount = 0
 
−
scount = 0
 
−
sQuestion = ""
 
−
sAnswer = ""
 
−
guessArray = {}
 
−
lngGuessmax = 0
 
−
playerArray = {}
 
−
pointArray = {}
 
−
lngWord = 0
 
−
lngPassed = 0
 
−
lngHinted = 0
 
−
strWord = ""
 
−
strQuestion = ""
 
−
strSolved = ""
 
−
strBanner = "Schreibe '"..StartTrigg.."' um den Quizzbot zu starten, '"..StopTrigg.."' um den Quizzbot anzuhalten, '"..JoinTrigg.."' um am Quizz teilzunehmen und '"..PartTrigg.."' um das Quizz zu verlassen."
 
−
strStart = "Quizzbot "..ScriptVersion.." gestartet! "..strBanner
 
−
strStopp = "Quizzbot "..ScriptVersion.." angehalten! "..strBanner
 
−
----------------------
 
−
function Main()
 
−
frmHub:RegBot(BotName)
 
−
ReloadQuestions()
 
−
end
 
−
------------------------
 
−
function NewUserConnected(curUser)
 
−
if (boolAutoLogin) then
 
−
if (not (playerArray[curUser.sName])) then
 
−
playerArray[curUser.sName] = 1
 
−
else
 
−
playerArray[curUser.sName] = nil
 
−
end
 
−
end
 
−
end
 
−
------------------------------
 
−
function OpConnected(curUser)
 
−
if (boolAutoLogin) then
 
−
if (not (playerArray[curUser.sName])) then
 
−
playerArray[curUser.sName] = 1
 
−
else
 
−
playerArray[curUser.sName] = nil
 
−
end
 
−
end
 
−
end
 
−
--------------------------------
 
−
function UserDisconnected(curUser)
 
−
playerArray[curUser.sName] = nil
 
−
end
 
−
--------------------------------
 
−
function OpDisconnected(curUser)
 
−
playerArray[curUser.sName] = nil
 
−
end
 
−
--------------------------------
 
−
function ChatArrival(curUser, data)
 
−
data = string.sub(data, 1, (string.len(data) - 1))
 
−
if ((lngMode == 0) or (lngMode == 1)) then
 
−
boolPlaydata = 1
 
−
end
 
−
GotoTriggs(curUser, data)
 
−
end
 
−
----------------------------------
 
−
function ToArrival(curUser, data)
 
−
data = string.sub(data, 1, (string.len(data) - 1))
 
−
local _, _, whoTo = string.find(data,"$To:%s+(%S+)")
 
−
if (whoTo == BotName) then
 
−
data = string.sub(data, (15 + string.len(BotName) + string.len(curUser.sName)))
 
−
if (lngMode == 2) then
 
−
boolPlaydata = 1
 
−
local _, _, chat = string.find(data, "%b<>%s(.+)")
 
−
SendChatToOthers(chat, curUser)
 
−
end
 
−
end
 
−
GotoTriggs(curUser, data)
 
−
end
 
−
-------------------------------------------
 
−
function GotoTriggs(curUser, data)
 
−
  local _, _, firstWord = string.find(data, "%b<>%s+(%S+)")
 
−
 
 
−
  if (firstWord ~= nil) then
 
−
    if ((string.lower(firstWord) == string.lower(HelpTrigg)) or (string.lower(firstWord) == string.lower(ExtraHelpTrigg))) then
 
−
      showHelp(curUser)
 
−
    elseif (string.lower(firstWord) == string.lower(SaveTrigg)) then
 
−
      if (curUser.bOperator) then
 
−
        SaveScores(curUser)
 
−
      end
 
−
    elseif (string.lower(firstWord) == string.lower(LoadTrigg)) then
 
−
      if (curUser.bOperator) then
 
−
        LoadScores(curUser)
 
−
      end
 
−
    elseif (string.lower(firstWord) == string.lower(TopTrigg)) then
 
−
  TopTen(user)
 
−
    elseif (string.lower(firstWord) == string.lower(AddTrigg)) then
 
−
      if (boolAddQuestion) then
 
−
s,e,sQuestion,sAnswer = string.find(data, "%b<>%s+%S+%s+(.+)#(.+)")
 
−
  AddQuestion(curUser,sQuestion,sAnswer)
 
−
      elseif (curUser.bOperator) then
 
−
      s,e,sQuestion,sAnswer = string.find(data, "%b<>%s+%S+%s+(.+)#(.+)")
 
−
  AddQuestion(curUser,sQuestion,sAnswer)
 
−
      else
 
−
  SendToPlayers("Fragen koennen jetzt nicht hinzugefuegt werden.")
 
−
      end
 
−
    elseif (string.lower(firstWord) == string.lower(ModeTrigg)) then
 
−
      if (curUser.bOperator) then
 
−
        local _, _, ModeDigit = string.find(data, "%b<>%s+%S+%s+(%d+)")
 
−
        if (ModeDigit ~= nil) then
 
−
          lngMode = tonumber(ModeDigit)
 
−
          if (lngMode == 0) then
 
−
            SendToPlayers("Quizz wird im Mainchat gespielt")
 
−
          elseif (lngMode == 1) then
 
−
            SendToPlayers("Quizz wird im Mainchat gespielt aber Fragen koennen nur Quizzer sehen")
 
−
          elseif (lngMode == 2) then
 
−
            SendToPlayers("Quizz wird ueber PM gespielt")
 
−
          else
 
−
            SendToPlayers("Falscher Modus gewaehlt, wurde auf Voreinstellung gesetzt")
 
−
            lngMode = lngDefMode
 
−
          end
 
−
        end
 
−
      end
 
−
    elseif (string.lower(firstWord) == string.lower(JoinTrigg)) then
 
−
      if (not (playerArray[curUser.sName])) then
 
−
        playerArray[curUser.sName] = 1
 
−
        SendToPlayers(curUser.sName.." ist jetzt mit dabei!")
 
−
      else curUser:SendPM(BotName, "Du bist schon Mitspieler. Es kann sein das Du automatisch eingeloggt wurdest.")
 
−
      end
 
−
    elseif (string.lower(firstWord) == string.lower(PartTrigg)) then
 
−
      if (playerArray[curUser.sName]) then
 
−
        SendToPlayers(curUser.sName.." ist nicht länger Mitspieler!")
 
−
        playerArray[curUser.sName] = nil
 
−
      end
 
−
    elseif (string.lower(firstWord) == string.lower(RestartTrigg)) then
 
−
      if (curUser.bOperator) then
 
−
        SendToPlayers("Quizzbot neugestartet. Alle Punkte sind nun weg!")
 
−
        SendToPlayers("Wenn Du jetzt speicherst wird der alte Punktestand überschrieben!")
 
−
        pointArray = {}
 
−
        StopQuiz(1)
 
−
      end
 
−
    elseif ((string.lower(firstWord) == string.lower(PointTrigg)) and (playerArray[curUser.sName])) then
 
−
      if (pointArray[curUser.sName]) then
 
−
        SendToPlayers(curUser.sName.." Du hast "..pointArray[curUser.sName].." Punkte!")
 
−
      else
 
−
        SendToPlayers(curUser.sName.." Du hast 0 Punkte!")
 
−
      end
 
−
    elseif ((string.lower(firstWord) == string.lower(HintTrigg)) and (playerArray[curUser.sName])) then
 
−
      if ((lngWord ~= 0) and string.find(strSolved, strCMask, 1, plain)) then
 
−
        if (lngHinted < lngMaxHints) then
 
−
    for nn=1,bcount do
 
−
              local lngRepChar = math.random(1, string.len(strWord))
 
−
              while 1 do
 
−
                if (boolHintAlwaysHitHidden) then
 
−
                  if (strsub(strSolved, lngRepChar, lngRepChar) == strCMask) then
 
−
                    break
 
−
                  end
 
−
                else
 
−
                  break
 
−
                end
 
−
                lngRepChar = math.random(1, string.len(strWord))
 
−
              end
 
−
              local strTurn = ""
 
−
              for x=1, string.len(strWord) do
 
−
                if (x == lngRepChar) then
 
−
                strTurn = strTurn..string.sub(strWord, x, x)
 
−
                else
 
−
                  strTurn = strTurn..string.sub(strSolved, x, x)
 
−
                end
 
−
      end
 
−
              strSolved = strTurn
 
−
  end
 
−
            lngHinted = lngHinted + 1
 
−
    lngHintTimeCount = lngHintTimeCount + lngHintTime
 
−
            SendToPlayers("Hinweis: "..strSolved)
 
−
    acount = ""
 
−
        else
 
−
            SendToPlayers("Alle Hinweise aufgebraucht!")
 
−
      end
 
−
      else
 
−
        SendToPlayers("Kein Hinweis gebraucht!")
 
−
      end
 
−
    elseif ((string.lower(firstWord) == string.lower(ScoreTrigg)) and (playerArray[curUser.sName])) then
 
−
      curUser:SendPM(BotName, "ERGEBNISSE:")
 
−
      curUser:SendPM(BotName, "---------------------------------------------------------")
 
−
      for index, value in pointArray do
 
−
        curUser:SendPM(BotName, index.."'s punkte: "..value)
 
−
      end
 
−
      curUser:SendPM(BotName, "---------------------------------------------------------")
 
−
    elseif ((string.lower(firstWord) == string.lower(PlayerTrigg)) and (playerArray[curUser.sName])) then
 
−
      curUser:SendPM(BotName, "SPIELER:")
 
−
      curUser:SendPM(BotName, "---------------------------------------------------------")
 
−
      for index, value in playerArray do
 
−
        curUser:SendPM(BotName, index)
 
−
      end
 
−
      curUser:SendPM(BotName, "---------------------------------------------------------")
 
−
    elseif (string.lower(firstWord) == string.lower(QuestionsTrigg)) then
 
−
      if (curUser.bOperator) then
 
−
        curUser:SendPM(BotName, "TOP "..lngMaxShowList.." FRAGEN:")
 
−
        curUser:SendPM(BotName, "---------------------------------------------------------")
 
−
        local lngShowMax = lngMaxShowList
 
−
        for index, value in guessArray do
 
−
          if (lngShowMax == 0) then
 
−
            break
 
−
          end
 
−
          arrTmp = tokenize(guessArray[index], strGSep)
 
−
          strTmp = arrTmp[1]
 
−
          curUser:SendPM(BotName, "["..index.."] "..strTmp)
 
−
          lngShowMax = lngShowMax - 1
 
−
        end
 
−
        curUser:SendPM(BotName, "Total # an Fragen: "..lngGuessmax)
 
−
        curUser:SendPM(BotName, "---------------------------------------------------------")
 
−
        curUser:SendPM(BotName, " ")
 
−
      end
 
−
    elseif (string.lower(firstWord) == string.lower(StartTrigg)) then
 
−
      if (curUser.sName) then
 
−
        if (lngWord == 0) then
 
−
          playerArray[curUser.sName] = 1
 
−
          SendToAll(BotName, strStart)
 
−
          if (lngMode == 2) then
 
−
            SendToPlayers(strStart)
 
−
          end
 
−
          StopQuiz(1)
 
−
        else
 
−
          SendToAll(BotName, "Da ist ein Quizz im gange, schreibe "..JoinTrigg.." um mitzuspielen!")
 
−
        end
 
−
      else
 
−
curUser:SendPM(BotName, "Nur Op's koennen das Quizz starten.")
 
−
      end
 
−
    elseif (string.lower(firstWord) == string.lower(StopTrigg)) then
 
−
      if (curUser.sName) then
 
−
        HoldQuiz()
 
−
        StopQuiz()
 
−
        SendToAll(BotName, strStopp)
 
−
        if (lngMode == 2) then
 
−
          SendToPlayers(strStopp)
 
−
        end
 
−
      end
 
−
    elseif (string.lower(firstWord) == string.lower(WordTrigg)) then
 
−
      if ((lngWord ~= 0) and (playerArray[curUser.sName] == "Player")) then
 
−
        SendToPlayers("Die derzeitige Frage lautet: "..strSolved.." ("..strlen(strSolved)..")")
 
−
      end
 
−
    elseif (string.lower(firstWord) == string.lower(QuizTrigg)) then
 
−
      if ((lngWord ~= 0) and (playerArray[curUser.sName])) then
 
−
        SendToPlayers("Frage: "..strQuestion)
 
−
      end
 
−
    elseif (string.lower(firstWord) == string.lower(ReloadTrigg)) then
 
−
      if (curUser.bOperator) then
 
−
        local _, _, secondWord = string.find(data, "%b<>%s+%S+%s+(%S+)")
 
−
        if (secondWord) then
 
−
        handle = io.open(secondWord, "r")
 
−
          if (handle) then
 
−
            handle:close()
 
−
            strTrivFile = secondWord
 
−
          end
 
−
        end
 
−
       
 
−
        HoldQuiz()
 
−
        ReloadQuestions()
 
−
      end
 
−
    else
 
−
if ((lngWord ~= 0) and (boolPlaydata)) then
 
−
        if (playerArray[curUser.sName]) then
 
−
          local msg = string.sub(data, (4 + string.len(curUser.sName)))
 
−
          if (string.len(msg) >= string.len(strWord)) then
 
−
            local boolDisc = nil
 
−
           
 
−
local strTurn = ""
 
−
  if string.lower(msg) == string.lower(strWord) then
 
−
    strTurn = strWord
 
−
    boolDisc = 1
 
−
  else
 
−
    strTurn = strSolved
 
−
  end
 
−
 
−
           
 
−
            if (boolDisc) then
 
−
              strSolved = strTurn
 
−
            end
 
−
            if (boolDisc) then
 
−
              if (string.lower(msg) ~= string.lower(strWord)) then
 
−
                SendToOthers(curUser, msg)
 
−
                SendToPlayers("Die Antwort ist nun: "..strSolved)
 
−
              end
 
−
            end
 
−
            if (string.lower(msg) == string.lower(strWord)) then
 
−
              if (not (pointArray[curUser.sName])) then
 
−
                pointArray[curUser.sName] = 0
 
−
              end
 
−
if lngHinted == 3 then pointArray[curUser.sName] = pointArray[curUser.sName] + 1
 
−
elseif lngHinted == 2 then pointArray[curUser.sName] = pointArray[curUser.sName] + 2
 
−
elseif lngHinted == 1 then pointArray[curUser.sName] = pointArray[curUser.sName] + 3
 
−
else pointArray[curUser.sName] = pointArray[curUser.sName] + 4
 
−
end
 
−
              SendToPlayers("Die Antwort war: "..strSolved)
 
−
              SendToPlayers("Die Antwort wurde erraten von: "..curUser.sName)
 
−
              SendToPlayers("Naechste Frage in "..(lngRestTime * 15).." (15) Secs")
 
−
              lngPassed = lngMaxTime
 
−
              SendToPlayers(curUser.sName.."'s Punkte: "..pointArray[curUser.sName])
 
−
              HoldQuiz()
 
−
            end
 
−
          end
 
−
        end
 
−
      end
 
−
    end
 
−
  end
 
−
end
 
−
--------------------------------
 
−
function HoldQuiz()
 
−
  strWord = ""
 
−
  strQuestion = ""
 
−
  strSolved = ""
 
−
end
 
−
 
 
−
function StopQuiz(restart)
 
−
  lngWord = 0
 
−
  lngPassed = 0
 
−
  strWord = ""
 
−
  strQuestion = ""
 
−
  strSolved = ""
 
−
  StopTimer()
 
−
  if (restart) then
 
−
    StartQuiz()
 
−
  end
 
−
end
 
−
 
 
−
function StartQuiz()
 
−
  lngWord = math.random(1, lngGuessmax)
 
−
  QWarray = tokenize(guessArray[lngWord], strGSep)
 
−
  strQuestion = QWarray[1]
 
−
  strWord = QWarray[2]
 
−
  strSolved = ""
 
−
  for x=1, string.len(strWord) do
 
−
    if (string.sub(strWord, x, x) == " ") then
 
−
      strSolved = strSolved.." "
 
−
    else
 
−
      strSolved = strSolved..strCMask
 
−
    end
 
−
  end
 
−
  lngPassed = 0
 
−
  lngHinted = 0
 
−
  lngHintTimeCount = lngHintTime
 
−
  if string.len(strWord) < 4 then
 
−
bcount = math.random(1, 2)
 
−
  elseif string.len(strWord) >= 4 and string.len(strWord) <= 9 then
 
−
bcount = math.random(1, 3)
 
−
  elseif string.len(strWord) >= 9 and string.len(strWord) <= 20 then
 
−
bcount = math.random(2, 4)
 
−
  else
 
−
bcount = math.random(3, 5)
 
−
  end
 
−
  SetTimer(15000)
 
−
  StartTimer()
 
−
  SendToPlayers("Frage: "..strQuestion)
 
−
  SendToPlayers("Antwort: "..strSolved.." ("..string.len(strSolved)..")")
 
−
end
 
−
-----------------------------------------
 
−
function OnTimer()
 
−
  lngPassed = lngPassed + 1
 
−
  if (lngPassed == lngMaxTime) then
 
−
    scount = scount + 1
 
−
    if scount == countSaveTurns then
 
−
  local handle = io.open(strTrivScoreFile, "w")
 
−
    for index, value in pointArray do
 
−
    handle:write(index..strGSep..value.."\r\n")
 
−
  end
 
−
    handle:close()
 
−
    scount = 0
 
−
    end
 
−
    if (boolRevealAnswer) then
 
−
      SendToPlayers("Die Antwort war '"..strWord.."' und wurde nicht erraten!")
 
−
    else
 
−
      SendToPlayers("Die Antwort wurde nicht erraten!")
 
−
    end
 
−
    SendToPlayers("Naechste Frage in "..(lngRestTime * 15).." Sekunden")
 
−
    HoldQuiz()
 
−
  elseif (lngPassed >= (lngRestTime + lngMaxTime)) then
 
−
    StopQuiz(1)
 
−
  elseif (lngPassed == lngHintTimeCount) then
 
−
    if (boolAutoHint) then
 
−
for nn=1,bcount do
 
−
            local lngRepChar = math.random(1, string.len(strWord))
 
−
            while 1 do
 
−
              if (boolHintAlwaysHitHidden) then
 
−
                if (string.sub(strSolved, lngRepChar, lngRepChar) == strCMask) then
 
−
                  break
 
−
                end
 
−
              else
 
−
                break
 
−
              end
 
−
              lngRepChar = math.random(1, string.len(strWord))
 
−
            end
 
−
            local strTurn = ""
 
−
            for x=1, string.len(strWord) do
 
−
              if (x == lngRepChar) then
 
−
              strTurn = strTurn..string.sub(strWord, x, x)
 
−
              else
 
−
                strTurn = strTurn..string.sub(strSolved, x, x)
 
−
              end
 
−
    end
 
−
            strSolved = strTurn
 
−
end
 
−
            lngHinted = lngHinted + 1
 
−
    lngHintTimeCount = lngHintTimeCount + lngHintTime
 
−
            SendToPlayers("Hinweis: "..strSolved)
 
−
end 
 
−
  end
 
−
end
 
−
---------------------------------------
 
−
function tokenize (inString,token)
 
−
  _WORDS = {}
 
−
  local matcher = "([^"..token.."]+)"
 
−
  string.gsub(inString, matcher, function (w) table.insert(_WORDS,w) end)
 
−
  return _WORDS
 
−
end
 
−
----------------------------------------
 
−
function ReloadQuestions()
 
−
  guessArray = {}
 
−
  lngGuessmax = 0
 
−
  local boolRestart = nil
 
−
  if (lngWord ~= 0) then
 
−
    SendToPlayers("Lade Fragen neu, Quizz wird beendet!")
 
−
    StopQuiz()
 
−
    boolRestart = 1
 
−
  end
 
−
  handle = io.open(strTrivFile, "r")
 
−
  if (handle) then
 
−
    local line = handle:read()
 
−
   
 
−
    while line do
 
−
      if ((line ~= "") and (string.find(line, strGSep, 1, plain))) then
 
−
        table.insert(guessArray, line)
 
−
        lngGuessmax = lngGuessmax + 1
 
−
      end
 
−
      line = handle:read()
 
−
    end
 
−
  handle:close()
 
−
  end
 
−
  if (lngGuessmax < 1) then
 
−
  guessArray = {
 
−
    "Wie nennt man ein Boomerang der nicht zurückkommt?"..strGSep.."ein Stock",
 
−
    "Wie heisst das Rundling-Dorf in der nähe von Weimar?"..strGSep.."Tiefengruben",
 
−
    "Welcher deutsche Kaiser starb in Memmleben?"..strGSep.."Otto der Erste",
 
−
    "Welches ist das meistgebaute Auto der Welt?"..strGSep.."VW Kaefer",
 
−
    "An welchem Wochentag ist meistens das Weimarnetztreffen?"..strGSep.."Dienstag",
 
−
    "Wieviel Aldi Filialen gibt es in Weimar?"..strGSep.."3",
 
−
    "Wie heisst der Konstrukteur des VW Käfer?"..strGSep.."Ferdinand Porsche",
 
−
    "In welcher Stadt ist das grösste Freifunknetz?"..strGSep.."Berlin"
 
−
  }
 
−
  lngGuessmax = 2
 
−
  end
 
−
  if (boolRestart) then
 
−
    SendToPlayers("Lade Fragen neu, Quizz wird neugestartet! Derzeitige Anzahl der Fragen: "..lngGuessmax)
 
−
    StartQuiz()
 
−
  end
 
−
  strTrivFile = strDefTrivFile
 
−
end
 
−
----------------------------------------
 
−
function SaveScores(curUser)
 
−
  local handle = io.open(strTrivScoreFile, "w")
 
−
  for index, value in pointArray do
 
−
    handle:write(index..strGSep..value.."\r\n")
 
−
  end
 
−
  curUser:SendData(BotName,"Punktestand gesichert")
 
−
  handle:close()
 
−
end
 
−
-----------------------------------------
 
−
function LoadScores(curUser)
 
−
local handle = io.open(strTrivScoreFile, "r")
 
−
if (handle) then
 
−
local line = handle:read()
 
−
while line do
 
−
local arrTmp = tokenize(line, strGSep)
 
−
if ((arrTmp[1] ~= nil) and (arrTmp[2] ~= nil)) then
 
−
pointArray[arrTmp[1]] = tonumber(arrTmp[2])
 
−
end
 
−
line = handle:read()
 
−
end
 
−
curUser:SendData(BotName,"Punktestand geladen")
 
−
handle:close()
 
−
end
 
−
end
 
−
---------------------------------------------------
 
−
function AddQuestion(curUser, sQuestion, sAnswer)
 
−
  local handle = io.open(strQFile, "a")
 
−
  handle:write("Vorgeschlagen von <"..curUser.sName.."> "..sQuestion..strGSep..sAnswer.."\r\n")
 
−
  SendToPlayers(curUser.sName.." hat eine Frage hinzufefuegt "..sQuestion)
 
−
  curUser:SendPM(BotName,curUser.sName.." Du gabst als Antwort "..sAnswer)
 
−
  handle:close()
 
−
end
 
−
--------------------------------------------
 
−
function SendToPlayers(msg)
 
−
  if ((lngMode > 2) or (lngMode < 0)) then
 
−
    lngMode = lngDefMode
 
−
  end
 
−
 
 
−
  if (lngMode == 0) then
 
−
    SendToAll(BotName, msg)
 
−
  elseif (lngMode == 1) then
 
−
    for index, value in playerArray do
 
−
      SendToNick(index, "<"..BotName.."> "..msg)
 
−
    end
 
−
  elseif (lngMode == 2) then
 
−
    for index, value in playerArray do
 
−
      SendPmToNick(index, BotName, msg)
 
−
    end
 
−
  end
 
−
end
 
−
---------------------------------------------
 
−
function SendToOthers(msg, curUser)
 
−
  if ((lngMode == 2) and (boolShowGuessesInPM)) then
 
−
    for index, value in playerArray do
 
−
      if (index ~= curUser.sName) then
 
−
        SendPmToNick(index, BotName, "<"..curUser.sName.."> "..msg)
 
−
      end
 
−
    end
 
−
  end
 
−
end
 
−
-----------------------------------------------
 
−
function SendChatToOthers(chat, curUser)
 
−
  if (lngMode == 2) then
 
−
    for index, value in playerArray do
 
−
      if (index ~= curUser.sName) then
 
−
SendToNick(index, "$To: "..index.." From: "..BotName.." $<"..curUser.sName.."> "..chat)
 
−
      end
 
−
    end
 
−
  end
 
−
end
 
−
--------------------------------------------
 
−
function showHelp(curUser)
 
−
  curUser:SendData("<Help> ")
 
−
  curUser:SendData("<Help> "..BotVersion.." Befehle:")
 
−
  curUser:SendData("<Help> ")
 
−
  if (lngMode == 0) then
 
−
    curUser:SendData("<Help>    "..BotVersion.." spielt das Quizz nun im Mainchat")
 
−
  elseif (lngMode == 1) then
 
−
    curUser:SendData("<Help>    "..BotVersion.." spielt das Quizz nun versteckt im Mainchat")
 
−
  else
 
−
    curUser:SendData("<Help>    "..BotVersion.." spielt das Quizz nun als PM")
 
−
  end
 
−
  curUser:SendData("<Help>    "..HelpTrigg.." - Zeigt diese Hilfe")
 
−
  curUser:SendData("<Help>    "..JoinTrigg.." - damit kannst Du am Quizz teilnehmen")
 
−
  curUser:SendData("<Help>    "..PartTrigg.." - damit verlaesst Du das Quizz")
 
−
  curUser:SendData("<Help>    "..WordTrigg.." - zeigt das derzeitig gesuchte Wort (Antwort)")
 
−
  curUser:SendData("<Help>    "..QuizTrigg.." - zeigt die derzeitige Frage")
 
−
  curUser:SendData("<Help>    "..PointTrigg.." - zeigt Deine Punkte")
 
−
  curUser:SendData("<Help>    "..ScoreTrigg.." - zeigt die Ergebnisse von allen")
 
−
  curUser:SendData("<Help>    "..PlayerTrigg.." - zeigt alle Spieler die am derzeitigen Quizz teilnehmen")
 
−
  curUser:SendData("<Help>    "..HintTrigg.." - enthuellt einen Buchstaben in der derzeitigen Antwort")
 
−
  curUser:SendData("<Help>    "..TopTrigg.." - zeigt die Top Ten Ergebnisse")
 
−
  curUser:SendData("<Help>    "..AddTrigg.." - fuegt ein Frage zum Fragenfile hinzu. Schreibe die Frage und trenne die Antwort von der Frage mit einer #")
 
−
  curUser:SendData("<Help>    BEISPIEL : qfrage Wie schnell fliegt ein Vogel?#keine Ahnung")
 
−
  if (curUser.bOperator) then
 
−
    curUser:SendData("<Help> ")
 
−
    curUser:SendData("<Help>    "..BotVersion.." Operator Befehle:")
 
−
    curUser:SendData("<Help>    "..StopTrigg.." - Stoppt den Quizzbot")
 
−
    curUser:SendData("<Help>    "..RestartTrigg.." - startet den Quizzbot neu, alle Ergebnisse werden zurueckgesetzt!")
 
−
    curUser:SendData("<Help>    "..QuestionsTrigg.." - zeigt alle Fragen im derzeitigen Quizz")
 
−
    curUser:SendData("<Help>    "..ReloadTrigg.." (<filename>) - laedt die Fragen von "..strDefTrivFile)
 
−
    curUser:SendData("<Help>    "..ModeTrigg.." - aendert den Spielmodus (0-2)!")
 
−
    curUser:SendData("<Help>    "..SaveTrigg.." - speichert die Ergebnisse in "..strTrivScoreFile)
 
−
    curUser:SendData("<Help>    "..LoadTrigg.." - laedt die Ergebnisse von "..strTrivScoreFile)
 
−
    curUser:SendData("<Help>    "..StartTrigg.." - startet den Quizzbot und Du nimmst automatisch daran teil")
 
−
    curUser:SendData("<Help> ")
 
−
    curUser:SendData("<Help>    "..BotVersion.." Modis:")
 
−
    curUser:SendData("<Help>    ".."0 = gespielt wird im Mainchat!")
 
−
    curUser:SendData("<Help>    ".."1 = gespielt wird im Mainchat aber die Fragen sind nur sichtbar fuer Mitspieler")
 
−
    curUser:SendData("<Help>    ".."2 = gespielt wird komplett als PM")
 
−
  end
 
−
end
 
−
----------------------------------------------
 
−
function TopTen(user)
 
−
local index = {n=0}
 
−
table.foreach(pointArray, function(nick, score) table.insert(index, nick) end)
 
−
local func = function(a, b) return pointArray[a] > pointArray[b] end
 
−
table.sort(index, func)
 
−
 
 
−
x = x or 10 if x > index.n then x = index.n end
 
−
local result = "\r\nTop "..x.." Quizz Ergebnisse in diesem Hub..\r\n Pos\t Score\t\t Nick\t\r\n"
 
−
for i = 1, x do result = result.."\r\n "..i..".\t"..pointArray[index[i]].."\t\t"..index[i] end
 
−
msg = result
 
−
SendToPlayers(msg)
 
−
end
 
−
</pre>
 
−
 
 
−
 
 
−
====Postman(mailserver)-bot====
 
−
<pre>
 
−
-- PostMan Bot 0.3 by bastya_elvtars (the rock n' roll doctor)
 
−
-- offline message system
 
−
-- code ripped from law maker bot
 
−
-- comands can be PMed or typed in main, the bot responds to them according to the environment (sometimes at least :D)
 
−
-- the commands are case insensitive, the parameters aren't :)
 
−
 
 
−
------- 0.2:
 
−
-- added function so ppl cannot post 2 online users
 
−
 
 
−
------- 0.3:
 
−
-- converted to lua5
 
−
-- washere is now global, no more CPU spikes
 
−
 
 
−
------- 0.4:
 
−
-- touched by Herodes (optimisation tsunami)
 
−
-- added : more details on the bot
 
−
-- added : message privacy ;)
 
−
-- changed : better way to parseenv ;)
 
−
-- changed : better way to display messages and inbox
 
−
-- changed : better way to parsecmds ( thx bastya_elvtars ;)
 
−
 
 
−
------- 0.5:
 
−
-- touched by Skippy84
 
−
-- fix error: make offline.dat thx goto Herodes for the idea to fix the problem
 
−
-- fix error: false command !showmsg
 
−
-- added: commands can edit at the Settings section
 
−
-- added: shown commands linked to the editable commands (so ther change on the fly)
 
−
 
 
−
------- 0.51:
 
−
-- bastya_elvtars put his hands back on this
 
−
-- script now creates an empty offline.dat if does not exist... you guys keep ignoring new Lua5 features :P
 
−
-- thx guys for the features you added, they are really eye-candy
 
−
 
 
−
------- 0.6:
 
−
-- touched again by Skippy84
 
−
-- added: a little rightclick menu
 
−
 
 
−
--------------------------------SETTINGS----------------------------------------
 
−
 
 
−
Bot = {
 
−
      name = "Weimarnetz-Mailserver" , -- bot's name
 
−
      email = "postman@mail.me", -- bot's email
 
−
      desc = "Nachrichten senden an User die gerade nicht da sind..", -- bot's desc
 
−
      }
 
−
 
 
−
inboxsize=15 -- the maximum amount of messages users can have in their inbox
 
−
 
 
−
cmdpost = "postmsg" -- Shows the Hub Stats
 
−
cmdread = "readmsg" -- Shows the Hub Stats
 
−
cmdibox = "inbox" -- Shows the Hub Stats
 
−
cmddbox = "delmsg" -- Shows the Hub Stats
 
−
 
 
−
----------------------END OF SETTINGS-------------------------------------------
 
−
 
 
−
 
 
−
-------------------------------------- Utility Functions
 
−
 
 
−
function cls()
 
−
  collectgarbage()
 
−
  io.flush()
 
−
end
 
−
 
 
−
function Main()
 
−
  local function load()
 
−
  local t = {}; local f = io.open("washere.lst", "r")
 
−
  if f then for l in f:lines() do t[l] = 1; end; f:close(); end
 
−
    return t;
 
−
  end
 
−
    washere = load()
 
−
    message = {}
 
−
if loadfile("offline.dat") then
 
−
dofile("offline.dat")
 
−
else
 
−
io.output("offline.dat")
 
−
io.write("")
 
−
io.output()
 
−
end
 
−
    frmHub:RegBot(Bot.name, 1, Bot.desc, Bot.email )
 
−
    Bot = Bot.name
 
−
end
 
−
 
 
−
-------------------------------------- Command Functions
 
−
 
 
−
--- post msg
 
−
 
 
−
function postmsg( user, data, how )
 
−
  local _,_,nick,msg = string.find(data,"%b<>%s+%S+%s+(%S+)%s+(.*)")
 
−
  if nick then
 
−
    if not GetItemByName(nick) then
 
−
      if washere[nick] then
 
−
        local function checksize(n) local cnt = 0; for a,b in message[n] do cnt = cnt + 1; end return cnt; end
 
−
          if not message[nick] then message[nick] = {}; end
 
−
            if (checksize(nick) < inboxsize) then
 
−
                table.insert( message[nick], { ["message"] = msg, ["who"] = user.sName, ["when"] = os.date("%Y. %m. %d. %X"), ["read"] = 0, } )
 
−
                SendBack( user, "Erfolgreich gesendete Nachricht!", Bot, how )
 
−
                savemsg()
 
−
            else
 
−
                SendBack( user, "Sorry, aber "..nick.." hat eine volle Mailbox. Probier es später.", Bot, how )
 
−
            end
 
−
          else
 
−
            SendBack( user, "User "..nick.." wart nie gesehen in diesem Hub.", Bot, how )
 
−
          end
 
−
      else
 
−
          SendBack( user, nick.." ist online! PM ist doch einfacher...", Bot, how )
 
−
      end
 
−
    else
 
−
      SendBack( user, "Falscher syntax! Schreibe: !"..cmdpost.."  ", Bot, how )
 
−
    end
 
−
  cls(); return 1;
 
−
end
 
−
 
 
−
--- del msg
 
−
 
 
−
function delmsg( user, data, how )
 
−
  if message[user.sName] then
 
−
    local _,_,args = string.find(data,"%b<>%s+%S+%s+(.+)")
 
−
    if args then
 
−
      local function checksize(n) local cnt = 0; for a,b in message[n] do cnt = cnt + 1; end return cnt; end
 
−
      local function resort(t) local r ={}; for i,v in t do table.insert(r, v); end; return r; end
 
−
      for num in string.gfind( args, "%s-(%d+)%s-" ) do
 
−
      if num then
 
−
        num = tonumber(num);
 
−
          if message[user.sName][num] then
 
−
            message[user.sName][num] = nil
 
−
            SendBack( user, "Nachricht #"..num.." erfolgreich gelöscht!", Bot, how )
 
−
          else
 
−
            SendBack( user, "Nachricht #"..num.." existiert nicht!", Bot, how )
 
−
          end
 
−
      end
 
−
    end
 
−
    message[user.sName] = resort(message[user.sName]);
 
−
    if checksize(user.sName) == 0 then message[user.sName] = nil; end
 
−
      savemsg()
 
−
    else
 
−
      SendBack( user, "Falscher syntax! Schreibe: !"..cmddbox.." . Mehrere Zahlen mit Leerzeichen trennen.", Bot, how )
 
−
    end
 
−
  else
 
−
    SendBack( user, "Deine Mailbox ist leer.", Bot, how )
 
−
  end
 
−
    cls(); return 1;
 
−
end
 
−
 
 
−
----------------------------------------------------------------------------------
 
−
---------------------------------------------------------------------------------
 
−
---------------------------------------------------------------------------------- show inbox
 
−
 
 
−
function inbox( user, how )
 
−
  local sep, msg = string.rep( "=", 75 ), "\r\n\r\n\t\t\t\t\t\t\tHere is your inbox:\r\n"
 
−
  msg = msg..sep.."\r\n Msg#\tSender\tTime of sending\t\tRead\r\n"..sep
 
−
  if message[user.sName] then
 
−
    local function numess ( r ) if r == 0 then return "no"; end return "yes"; end
 
−
    local function checksize ( n ) local cnt = 0; for a,b in message[n] do cnt = cnt + 1; end return cnt; end
 
−
    local function dcode ( s ) if (string.sub(s,1,3) == "-n#") then s=string.sub(s,4,-1); local res = ""; for num in string.gfind( s, "#?(%d+)") do res = res..string.char(tonumber(num));end;return res;end;return s;end
 
−
    for num, t in message[user.sName] do
 
−
    msg=msg.."\r\n "..num.."\t"..dcode(t.who).."\t"..t.when.."\t"..numess(t.read).."\r\n"..sep
 
−
  end
 
−
    SendBack( user, msg, Bot, true )
 
−
    SendBack( user, "Schreibe !"..cmdread.."  um die Nachricht zu sehen. Mehrere Zahlen mit Leerzeichen trennen.", Bot, true )
 
−
  if checksize(user.sName) >= inboxsize then SendBack( user, "Alarm: Deine Mailbox ist voll!", Bot, true ); end
 
−
  else
 
−
    SendBack( user, "Du hast keine Nachrichten.", Bot, how )
 
−
  end
 
−
  cls(); return 1;
 
−
end
 
−
 
 
−
--- read msg(s)
 
−
 
 
−
function readmsg( user, data, how )
 
−
  if message[user.sName] then
 
−
    local _,_,args=string.find(data,"%b<>%s+%S+%s+(.+)")
 
−
    if args then
 
−
      local function dcode(s) if (string.sub(s,1,3) == "-n#") then s = string.sub(s,4,-1);local res = ""; for num in string.gfind( s, "#?(%d+)") do res = res..string.char(tonumber(num));end;return res;end;return s;
 
−
    end
 
−
    for num in string.gfind( args, "%s-(%d+)%s-" ) do
 
−
      if num then num = tonumber(num) end
 
−
      if num and message[user.sName][num] then
 
−
        local t = message[user.sName][num]
 
−
        local msg, sep,set = "\r\n\r\n\t\t\t\t\t\t\tMessage #"..num.."\r\n", string.rep( "=", 100 ), string.rep("- ", 85)
 
−
        msg = msg..sep.."\r\n\r\nFrom: "..dcode(t.who).."\tTime: "..t.when.."\t\tMessage follows\r\n"..set.."[Message start]\r\n"..dcode(t.message).."\r\n"..set.."[Message end]\r\n"..sep
 
−
        SendBack( user, msg, Bot, true )
 
−
        if t.read == 0 then t.read = 1; savemsg(); end
 
−
      else
 
−
        SendBack( user, "Nachricht #"..num.." existiert nicht!", Bot, how )
 
−
      end
 
−
  end
 
−
  else
 
−
    SendBack( user, "Falscher syntax! Schreibe: !"..cmdread.." . Mehrere Zahlen mit Leerzeichen trennen.", Bot, how )
 
−
  end
 
−
  else
 
−
    SendBack( user, "Deine Mailbox ist leer.", Bot, how )
 
−
  end
 
−
  cls(); return 1;
 
−
end
 
−
 
 
−
--- save msg
 
−
 
 
−
function savemsg()
 
−
  local function parse(tbl)
 
−
  local str, tab ="", string.rep( "\t", 9)
 
−
  local function fquot(s) return string.format( "%q", s) end
 
−
  local function ncode( s ) if (s ~= "") and (string.sub(s,1,3) ~= "-n#") then local t = {}; for i = 1, string.len(s) do t[i] = string.byte(string.sub(s,i,i)); end; return "-n#"..table.concat(t, "#"); end; return s; end
 
−
  for a, t in tbl do
 
−
    str = str.."\t\t{ ["..fquot("read").."] = "..t.read..", ["..fquot("who").."] = "..fquot(ncode(t.who))..", ["..fquot("when").."] = "..fquot(t.when)..",\n\t\t["..fquot("message").."] = "..fquot(ncode(t.message)).." },\n"
 
−
  end
 
−
  return str
 
−
  end
 
−
  local f = io.open ( "offline.dat", "w+" )
 
−
  local s = "message = {"
 
−
  for name, t in message do
 
−
  s = s.."\n\t["..string.format( "%q", string.gsub( name, "\"", "\"")).."] = {\n"..parse(t).."\t},"
 
−
  end;
 
−
  f:write(s.."\n}")
 
−
  f:close()
 
−
  end
 
−
 
 
−
function SendBack( user, msg, who, pm )
 
−
  if pm then user:SendPM ( who, msg ); else user:SendData( who, msg ); end
 
−
end
 
−
 
 
−
function NewUserConnected(user)
 
−
if user.bUserCommand then
 
−
user:SendData("$UserCommand 1 3 :Weimarnetz-Mailserver:\\INBOX$<%[mynick]> !inbox||")
 
−
user:SendData("$UserCommand 1 3 :Weimarnetz-Mailserver:\\poste eine Nachricht$<%[mynick]> !postmsg %[line:Enter  and :]||")
 
−
user:SendData("$UserCommand 1 3 :Weimarnetz-Mailserver:\\lese eine Nachricht$<%[mynick]> !readmsg %[line:Enter Nr of Post you would read:]||")
 
−
user:SendData("$UserCommand 1 3 :Weimarnetz-Mailserver:\\lösche eine Nachricht$<%[mynick]> !delmsg %[line:Enter Nr of Post you would delete:]||")
 
−
user:SendData(":Weimarnetz-Mailserver:", "Neues Rechts-Click Menu für Weimarnetz-Mailserver steht zur Verfügung..")
 
−
end
 
−
 
−
  if not washere[user.sName] then washere[user.sName] = 1 end
 
−
  if message[user.sName] then
 
−
  local cnt=0
 
−
  for a,b in message[user.sName] do if (b.read == 0) then cnt = cnt+1; end end
 
−
  if (cnt > 0) then SendBack( user, "Du hast "..cnt.." neue Nachrichten. Schreibe !"..cmdibox.." um in Deine Mailbox zu schauen!", Bot, true ); end
 
−
  end
 
−
end
 
−
 
 
−
function ChatArrival(user,data)
 
−
  local data = string.sub( data, 1, -2 )
 
−
  local _,_,cmd = string.find(data,"%b<>%s+[!+.#?](%S+)")
 
−
  if cmd then return parsecmds( user, data, string.lower(cmd) ); end
 
−
end
 
−
 
 
−
function ToArrival(user,data)
 
−
  if (string.sub( data, 1, string.len(Bot)+5) == "$To: "..Bot) then
 
−
  local data = string.sub( data, 1, -2 )
 
−
  local _,_,cmd = string.find(data,"%$%b<>%s+[!+.#?](%S+)")
 
−
  if cmd then return parsecmds( user, data, string.lower(cmd), true ) end
 
−
    return 1
 
−
  end
 
−
end
 
−
 
 
−
function parsecmds( user, data, cmd, how )
 
−
  local t = {
 
−
    [cmdpost] = { postmsg, { user, data, how } },
 
−
    [cmdread] = { readmsg, { user, data, how } },
 
−
    [cmdibox] = { inbox, { user, how } },
 
−
    [cmddbox] = { delmsg, { user, data, how } },
 
−
    }
 
−
  if t[cmd] then
 
−
    return t[cmd][1]( unpack(t[cmd][2]) )
 
−
  end
 
−
end
 
−
 
 
−
function UserDisconnected(user)
 
−
  if not washere[user.sName] then washere[user.sName] = 1; end
 
−
end
 
−
 
 
−
function OnExit()
 
−
  savemsg()
 
−
  local f = io.open( "washere.lst", "w+")
 
−
  for a,b in washere do f:write(a.."\n"); end
 
−
  f:close()
 
−
end
 
−
 
 
−
OpDisconnected=UserDisconnected
 
−
OpConnected=NewUserConnected
 
−
</pre>
 
−
 
 
−
====Voting(VotePoll-bot)====
 
−
<pre>
 
−
--Vote Poll v1.0
 
−
--Made by nErBoS
 
−
--Converted to Lua 5 by jiten
 
−
--Changed Visual Design / Translated to german / Added Rightclick by pulsar
 
−
 
 
−
Bot = "Vote Poll"
 
−
 
 
−
vt = {}
 
−
nr = {}
 
−
 
 
−
votetext = "voting.txt"
 
−
oldpolls = "voting-old.txt"
 
−
 
 
−
function Main()
 
−
frmHub:RegBot(Bot)
 
−
end
 
−
 
 
−
function NewUserConnected(user, data)
 
−
if (vt[user.sName] == nil) then
 
−
vt[user.sName] = 0
 
−
end
 
−
if (nr[user.sName] == nil) then
 
−
nr[user.sName] = 0
 
−
end
 
−
 
 
−
end
 
−
 
 
−
function NewUserConnected(user,data)
 
−
UserCmds(user)
 
−
if user.bOperator then
 
−
OpCmds(user)
 
−
end
 
−
end
 
−
 
 
−
OpConnected = NewUserConnected
 
−
rcmenue = "Voting"
 
−
 
 
−
function UserCmds(user)            -- User Befehle
 
−
        user:SendData("$UserCommand 1 3 "..rcmenue.."\\Zeige aktuelle Umfragen$<%[mynick]> +votefor&#124;|")
 
−
user:SendData("$UserCommand 1 3 "..rcmenue.."\\Zeige beendete Umfragen$<%[mynick]> +votelist&#124;|")
 
−
user:SendData("$UserCommand 0 3 |") -- separator
 
−
user:SendData("$UserCommand 1 3 "..rcmenue.."\\Bei einer aktuellen Umfrage abstimmen$<%[mynick]> +vote %[line:Welche Zuordnungsnummer?] %[line:y / n ?  (Yes or No)]&#124;|")
 
−
user:SendData("$UserCommand 0 3 |") -- separator
 
−
user:SendData("$UserCommand 1 3 "..rcmenue.."\\Abstimmungsergebnisse\\PM\\aktuelle Umfragen$<%[mynick]> +showvote %[line:Welche Zuordnungsnummer?] new&#124;|")
 
−
        user:SendData("$UserCommand 1 3 "..rcmenue.."\\Abstimmungsergebnisse\\PM\\beendete Umfragen$<%[mynick]> +showvote %[line:Welche Zuordnungsnummer?] old&#124;|")
 
−
user:SendData("$UserCommand 1 3 "..rcmenue.."\\Abstimmungsergebnisse\\Main\\aktuelle Umfragen$<%[mynick]> +svmain %[line:Welche Zuordnungsnummer?] new&#124;|")
 
−
user:SendData("$UserCommand 1 3 "..rcmenue.."\\Abstimmungsergebnisse\\Main\\beendete Umfragen$<%[mynick]> +svmain %[line:Welche Zuordnungsnummer?] old&#124;|")
 
−
end
 
−
function OpCmds(user)              -- OP Befehle
 
−
-- leer
 
−
if (user.iProfile == 0) then        -- Master Befehle
 
−
user:SendData("$UserCommand 1 3 "..rcmenue.."\\Admin\\Umfrage erstellen$<%[mynick]> +createvote %[line:Welche Zuordnungsnummer?] %[line:Welche Umfrage?]&#124;|")
 
−
user:SendData("$UserCommand 1 3 "..rcmenue.."\\Admin\\Umfrage beenden$<%[mynick]> +stopvote %[line:Welche Zuordnungsnummer?]&#124;|")
 
−
user:SendData("$UserCommand 1 3 "..rcmenue.."\\Admin\\Umfrage löschen$<%[mynick]> +delvote %[line:Welche Zuordnungsnummer?]&#124;|")
 
−
end
 
−
end
 
−
 
 
−
function ChatArrival(user, data)
 
−
data=string.sub(data,1,string.len(data)-1)
 
−
s,e,cmd = string.find(data,"%b<>%s+(%S+)")
 
−
if (cmd=="+votehelp") then
 
−
local msg = ""
 
−
if (user.iProfile == 0) then
 
−
msg = msg.."Befehle für das Voting:\r\n"
 
−
msg = msg.."\r\n"
 
−
msg = msg.."+createvote <nr> <q>\tErstellt eine Umfrage (nr = Zuordnungsnummer für die Umfrage) (q = Umfrage)\r\n"
 
−
msg = msg.."+stopvote <nr>\t\tBeendet die Umfrage\r\n"
 
−
msg = msg.."+showvote <nr> <old/new>\tZeigt die Abstimmungsergebnisse der Umfrage (old = alte Umfragen) oder (new = Umfragen die noch nicht beendet worden sind)\r\n"
 
−
msg = msg.."+svmain <nr> <old/new>\tZeigt die Abstimmungsergebnisse im Main (old = alte Umfragen) oder (new = Umfragen die noch nicht beendet worden sind)\r\n"
 
−
msg = msg.."+votelist\t\t\tZeigt alle Umfragen\r\n"
 
−
msg = msg.."+votefor\t\t\tZeigt die Umfragen bei denen du abstimmen kannst\r\n"
 
−
msg = msg.."+vote <nr> <y/n>\t\tUm bei einer Umfrage abzustimmen (y = ja) (n = nein) (nr = Nummer der Umfrage)\r\n"
 
−
msg = msg.."+delvote <nr>\t\tUm alte Umfragen zu löschen (nr = Nummer der zu löschenden Umfrage)\r\n"
 
−
msg = msg.."\r\n"
 
−
user:SendPM(Bot, msg)
 
−
else
 
−
msg = msg.."Befehle für das Voting:\r\n"
 
−
msg = msg.."\r\n"
 
−
msg = msg.."+votefor\t\t\tZeigt die Umfragen bei denen du abstimmen kannst\r\n"
 
−
msg = msg.."+vote <nr> <y/n>\t\tUm bei einer Umfrage abzustimmen (y = ja) (n = nein) (nr = Nummer der Umfrage)\r\n"
 
−
msg = msg.."\r\n"
 
−
user:SendPM(Bot, msg)
 
−
end
 
−
return 1
 
−
elseif (cmd=="+createvote") then
 
−
if (user.iProfile == 0) then
 
−
local s,e,number,question = string.find(data,"%b<>%s+%S+%s+(%S+)%s+(.*)")
 
−
if (tonumber(number) == nil) then
 
−
user:SendPM(Bot, "Syntax error, +createvote <nr> <q>, nr muss eine Nummer sein!")
 
−
else
 
−
number = tonumber(number)
 
−
        if (question == nil or question == "") then
 
−
user:SendPM(Bot, "Syntax error, +createvote <nr> <q>, du musst schon auch ne Frage erstellen worüber abgestimmt werden soll!")
 
−
else
 
−
        if (CreatePoll(user, number, question) == 1) then
 
−
user:SendPM(Bot, "Die Abstimmung bzw. Umfrage wurde erstellt.")
 
−
else
 
−
user:SendPM(Bot, "Es existiert bereits eine Abstimmung bzw. Umfrage mit der Nummer  "..number..".")
 
−
end
 
−
end
 
−
end
 
−
else
 
−
user:SendPM(Bot, "Du hast keine Befugnis diesen Befehl zu nutzen!")
 
−
end
 
−
return 1
 
−
elseif (cmd=="+stopvote") then
 
−
if (user.iProfile == 0) then
 
−
local s,e,number = string.find(data,"%b<>%s+%S+%s+(.*)")
 
−
if (tonumber(number) == nil or number == "") then
 
−
user:SendPM(Bot, "Syntax error, +stopvote <nr>, nr muss eine Nummer sein!")
 
−
else
 
−
number = tonumber(number)
 
−
if (OldPoll(user, number) == 1) then
 
−
user:SendPM(Bot, "Die Abstimmung bzw. Umfrage wurde beendet und gespeichert in der  "..oldpolls..".")
 
−
else
 
−
user:SendPM(Bot, "Es gibt keine Abstimmung bzw. Umfrage mit der Nummer  "..number..".")
 
−
end
 
−
end
 
−
else
 
−
user:SendPM(Bot, "Du hast keine Befugnis diesen Befehl zu nutzen!")
 
−
end
 
−
return 1
 
−
elseif (cmd=="+showvote") then
 
−
if (user.iProfile == 0) then
 
−
local s,e,number, opt = string.find(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
 
−
if (tonumber(number) == nil) then
 
−
user:SendPM(Bot, "Syntax error, +showvote <nr> <old/new>, nr muss eine Nummer sein!")
 
−
else
 
−
number = tonumber(number)
 
−
if (opt == "old") then
 
−
if (CheckPoll(user, number, oldpolls) == "") then
 
−
user:SendPM(Bot, "Es gibt keine beendete Umfrage mit der Nummer  "..number..".")
 
−
else
 
−
user:SendPM(Bot, CheckPoll(user, number, oldpolls))
 
−
end
 
−
elseif(opt == "new") then
 
−
if (CheckPoll(user, number, votetext) == "") then
 
−
user:SendPM(Bot, "Es gibt keine Umfrage mit der Nummer  "..number..".")
 
−
else
 
−
user:SendPM(Bot, CheckPoll(user, number, votetext))
 
−
end
 
−
else
 
−
user:SendPM(Bot, "Syntax error, +showvote <nr> <old/new>, muss sein (old = alte Umfragen) oder (new = Umfragen die noch nicht beendet worden sind)")
 
−
end
 
−
end
 
−
else
 
−
user:SendPM(Bot, "Du hast keine Befugnis diesen Befehl zu nutzen!")
 
−
end
 
−
return 1
 
−
elseif (cmd=="+svmain") then
 
−
if (user.iProfile == 0) then
 
−
local s,e,number, opt = string.find(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
 
−
if (tonumber(number) == nil) then
 
−
user:SendPM(Bot, "Syntax error, +svmain <nr> <old/new>, nr muss eine Nummer sein!")
 
−
else
 
−
number = tonumber(number)
 
−
if (opt == "old") then
 
−
if (CheckPoll(user, number, oldpolls) == "") then
 
−
user:SendPM(Bot, "Es gibt keine beendete Umfrage mit der Nummer  "..number..".")
 
−
else
 
−
SendToAll(Bot, CheckPoll(user, number, oldpolls))
 
−
end
 
−
elseif(opt == "new") then
 
−
if (CheckPoll(user, number, votetext) == "") then
 
−
user:SendPM(Bot, "Es gibt keine Umfrage mit der Nummer  "..number..".")
 
−
 
 
−
        else
 
−
SendToAll(Bot, CheckPoll(user, number, votetext))
 
−
end
 
−
else
 
−
user:SendPM(Bot, "Syntax error, +svmain <nr> <old/new>, muss sein (old = alte Umfragen) oder (new = Umfragen die noch nicht beendet worden sind)")
 
−
end
 
−
end
 
−
else
 
−
user:SendPM(Bot, "Du hast keine Befugnis diesen Befehl zu nutzen!")
 
−
end
 
−
return 1
 
−
elseif (cmd=="+votelist") then
 
−
if (user.iProfile == 0) then
 
−
local l = io.open(oldpolls, "r")
 
−
if (ReadPoll(user, oldpolls) == "") then
 
−
user:SendPM(Bot, "Es gibt keine beendeten Umfragen")
 
−
else
 
−
user:SendPM(Bot, ReadPoll(user, oldpolls))
 
−
end
 
−
else
 
−
user:SendPM(Bot, "Du hast keine Befugnis diesen Befehl zu nutzen!")
 
−
end
 
−
return 1
 
−
elseif (cmd=="+votefor") then
 
−
if (ReadPoll(user, votetext) == "") then
 
−
user:SendPM(Bot, "Es gibt keine Abstimmungen bzw. Umfragen")
 
−
else
 
−
user:SendPM(Bot, ReadPoll(user, votetext))
 
−
end
 
−
return 1
 
−
elseif (cmd=="+vote") then
 
−
local s,e,number,opt = string.find(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
 
−
if (tonumber(number) == nil) then
 
−
user:SendPM(Bot, "Syntax error, +vote <nr> <y/n>, nr muss eine Nummer sein!")
 
−
else
 
−
number = tonumber(number)
 
−
if (opt == nil or opt == "" or opt ~= "n" and opt ~= "y") then
 
−
user:SendPM(Bot, "Syntax error, +vote <nr> <y/n>, du musst schreiben (y = ja) oder (n = nein).")
 
−
else
 
−
if (Vote(user, number, opt) == 1) then
 
−
user:SendPM(Bot, "Deine Abstimmung wurde registriert.")
 
−
vt[user.sName] = 1
 
−
nr[user.sName] = number
 
−
elseif(Vote(user, number, opt) == 2) then
 
−
user:SendPM(Bot, "Du hast bei dieser Umfrage bereits abgestimmt")
 
−
else
 
−
user:SendPM(Bot, "Es gibt keine Umfrage mit der Nummer  "..number..".")
 
−
end
 
−
end
 
−
end
 
−
return 1
 
−
elseif (cmd=="+delvote") then
 
−
if (user.iProfile == 0) then
 
−
local s,e,number = string.find(data,"%b<>%s+%S+%s+(%S+)")
 
−
if (tonumber(number) == nil) then
 
−
user:SendPM(Bot, "Syntax error, +delvote <nr>, nr muss eine Nummer sein!")
 
−
else
 
−
number = tonumber(number)
 
−
if (DelOldPoll(user, number) == 0) then
 
−
user:SendPM(Bot, "Es gibt keine beendete Umfrage mit der Nummer  "..number)
 
−
else
 
−
user:SendPM(Bot, "Die alte Umfrage wurde gelöscht.")
 
−
end
 
−
end
 
−
else
 
−
user:SendPM(Bot, "Du hast keine Befugnis diesen Befehl zu nutzen!")
 
−
end
 
−
return 1
 
−
end
 
−
end
 
−
 
 
−
ToArrival = ChatArrival
 
−
 
 
−
function CreatePoll(user, number, question)
 
−
local tmp = ""
 
−
local time = 0
 
−
local a = io.open(oldpolls, "r")
 
−
if a then
 
−
while 1 do
 
−
local line = a:read()
 
−
if (line == nil) then
 
−
break
 
−
else
 
−
local s,e,num = string.find(line,"Nr:%s+(%S+)%s+")
 
−
if (tonumber(num) ~= nil and tonumber(num) == number) then
 
−
time = 2
 
−
else
 
−
end
 
−
end
 
−
end
 
−
a:close()
 
−
else
 
−
dofile(oldpolls)
 
−
-- return a.." doesnt exist"
 
−
end
 
−
 
 
−
local b = io.open(votetext,"r")
 
−
if b then
 
−
while 1 do
 
−
local line = b:read()
 
−
if (line == nil) then
 
−
if (time == 2) then
 
−
break
 
−
else
 
−
tmp = tmp.."Nr: "..number.." Umfrage: "..question.." Ja: 0 Nein: 0 Active: Ja\r\n"
 
−
time = 1
 
−
break
 
−
end
 
−
else
 
−
local s,e,num = string.find(line,"Nr:%s+(%S+)%s+")
 
−
if (tonumber(num) ~= nil and tonumber(num) == number) then
 
−
tmp = tmp..line.."\r\n"
 
−
time = 2
 
−
else
 
−
tmp = tmp..line.."\r\n"
 
−
end
 
−
end
 
−
end
 
−
 
 
−
b:close()
 
−
local l = io.open(votetext,"w+")
 
−
l:write(tmp)
 
−
l:flush()
 
−
l:close()
 
−
return time
 
−
else
 
−
dofile(votetext)
 
−
-- return b.." doesnt exist"
 
−
end
 
−
return time
 
−
end
 
−
 
 
−
function OldPoll(user, number)
 
−
local tmp = ""
 
−
local tmp2 = ""
 
−
local time = 0
 
−
local c = io.open(votetext,"r")
 
−
if c then
 
−
while 1 do
 
−
local line = c:read()
 
−
if (line == nil) then
 
−
break
 
−
else
 
−
local s,e, num, question, ny, nn = string.find(line,"Nr:%s+(%S+)%s+(.*)Ja:%s+(%S+)%s+Nein:%s+(%S+)%s+Active:")
 
−
if (tonumber(num) ~= nil and tonumber(num) == number) then
 
−
tmp2 = tmp2.."Nr: "..number.." "..question.."Ja: "..ny.." Nein: "..nn.." Active: Nein\r\n"
 
−
time = 1
 
−
else
 
−
tmp = tmp..line.."\r\n"
 
−
end
 
−
end
 
−
end
 
−
c:close()
 
−
local d = io.open(votetext,"w+")
 
−
d:write(tmp)
 
−
d:flush()
 
−
d:close()
 
−
if (time == 0) then
 
−
else
 
−
local e = io.open(oldpolls, "a+") -- "a+"
 
−
e:write(tmp2)
 
−
e:close()
 
−
end
 
−
return time
 
−
else
 
−
dofile(votetext)
 
−
-- return c.." existiert nicht"
 
−
 
 
−
end
 
−
end
 
−
 
 
−
function CheckPoll(user, number, file)
 
−
local tmp = ""
 
−
local f = io.open(file,"r")
 
−
if f then
 
−
while 1 do
 
−
local line = f:read()
 
−
if (line == nil) then
 
−
break
 
−
else
 
−
local s,e, num, question, ny, nn = string.find(line,"Nr:%s+(%S+)%s+(.*)Ja:%s+(%S+)%s+Nein:%s+(%S+)%s+Active:")
 
−
if (tonumber(num) ~= nil and tonumber(num) == number) then
 
−
tmp = tmp.."\r\n________________________________________________"
 
−
tmp = tmp.."\r\n------------------------------------------ Voting ------------------------------------------"
 
−
tmp = tmp.."\r\n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\r\n\r\n"
 
−
tmp = tmp.."Ergebnis von Umfrage Nr:  "..num.." "
 
−
tmp = tmp.."\r\n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\r\n\r\n"
 
−
tmp = tmp..""..question.."\r\n"
 
−
tmp = tmp.."------------------------------\r\n"
 
−
tmp = tmp.."Ja:    "..ny.."\r\n"
 
−
tmp = tmp.."Nein: "..nn.."\r\n"
 
−
tmp = tmp.."------------------------------\r\n"
 
−
if (tonumber(ny) > tonumber(nn)) then
 
−
tmp = tmp.."Ja liegt vorne"
 
−
elseif (tonumber(ny) < tonumber(nn)) then
 
−
tmp = tmp.."Nein hat gewonnen."
 
−
elseif (tonumber(ny) == tonumber(nn)) then
 
−
tmp = tmp.."unentschieden."
 
−
end
 
−
break
 
−
else
 
−
end
 
−
end
 
−
end
 
−
f:close()
 
−
return tmp
 
−
else
 
−
dofile(file)
 
−
-- return f.." existiert nicht"
 
−
end
 
−
end
 
−
 
 
−
function ReadPoll(user, file)
 
−
local tmp = ""
 
−
local g = io.open(file,"r")
 
−
if g then
 
−
while 1 do
 
−
local line = g:read()
 
−
if (line == nil or line == "") then
 
−
              break
 
−
else
 
−
local s,e, num, question, ny, nn = string.find(line,"Nr:%s+(%S+)%s+(.*)Ja:%s+(%S+)%s+Nein:%s+(%S+)%s+Active:")
 
−
if (num == nil) then
 
−
else
 
−
tmp = tmp.."\r\n________________________________________________"
 
−
tmp = tmp.."\r\n------------------------------------------ Voting ------------------------------------------"
 
−
tmp = tmp.."\r\n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\r\n\r\n"
 
−
tmp = tmp.."Ergebnis von Umfrage Nr:  "..num.." "
 
−
tmp = tmp.."\r\n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\r\n\r\n"
 
−
tmp = tmp..""..question.."\r\n"
 
−
tmp = tmp.."------------------------------\r\n"
 
−
tmp = tmp.."Ja:    "..ny.."\r\n"
 
−
tmp = tmp.."Nein: "..nn.."\r\n"
 
−
tmp = tmp.."------------------------------\r\n"
 
−
if (file == oldpolls) then
 
−
tmp = tmp.."Umfrage beendet\r\n"
 
−
elseif (file == votetext) then
 
−
tmp = tmp.."Umfrage läuft noch\r\n"
 
−
end
 
−
end
 
−
end
 
−
end
 
−
g:close()
 
−
return tmp
 
−
else
 
−
dofile(file)
 
−
-- return g.." existiert nicht"
 
−
end
 
−
end
 
−
 
 
−
function Vote(user, number, opt)
 
−
local tmp = ""
 
−
local time = 0
 
−
if (vt[user.sName] == 1 and nr[user.sName] == number) then
 
−
time = 2
 
−
else
 
−
 
 
−
local h = io.open(votetext,"r")
 
−
if h then
 
−
while 1 do
 
−
local line = h:read()
 
−
if (line == nil) then
 
−
break
 
−
else
 
−
local s,e, num, question, ny, nn = string.find(line,"Nr:%s+(%S+)%s+(.*)Ja:%s+(%S+)%s+Nein:%s+(%S+)%s+Active:")
 
−
if (tonumber(num) ~= nil and tonumber(num) == number) then
 
−
if (opt == "y") then
 
−
ny = tonumber(ny) + 1
 
−
elseif (opt == "n") then
 
−
nn = tonumber(nn) + 1
 
−
end
 
−
tmp = tmp.."Nr: "..number.." "..question.."Ja: "..ny.." Nein: "..nn.." Active: Ja\r\n"
 
−
time = 1
 
−
else
 
−
tmp = tmp..line.."\r\n"
 
−
end
 
−
end
 
−
end
 
−
h:close()
 
−
else
 
−
dofile(votetext)
 
−
-- return h.." existiert nicht"
 
−
end
 
−
local i = io.open(votetext,"w+")
 
−
i:write(tmp)
 
−
i:flush()
 
−
i:close()
 
−
end
 
−
return time
 
−
end
 
−
 
 
−
function DelOldPoll(user, number)
 
−
local tmp = ""
 
−
local time = 0
 
−
local j = io.open(oldpolls,"r")
 
−
if j then
 
−
while 1 do
 
−
local line = j:read()
 
−
if (line == nil) then
 
−
break
 
−
else
 
−
local s,e, num, question, ny, nn = string.find(line,"Nr:%s+(%S+)%s+(.*)Ja:%s+(%S+)%s+Nein:%s+(%S+)%s+Active:")
 
−
if (tonumber(num) ~= nil and tonumber(num) == number) then
 
−
time = 1
 
−
else
 
−
tmp = tmp..line.."\r\n"
 
−
end
 
−
end
 
−
end
 
−
j:close()
 
−
else
 
−
        dofile(oldpolls)
 
−
-- return j.." existiert nicht"
 
−
end
 
−
local k = io.open(oldpolls,"w+")
 
−
k:write(tmp)
 
−
k:flush()
 
−
k:close()
 
−
return time
 
−
end
 
−
</pre>
 

Version vom 16. April 2007, 20:23 Uhr

                                                         Willkommen in der Beat-Box 
                                                         
            ...................................................Hub-Infos ................................................
                                       Das Kopieren fremder Inhalte zur privaten oder sonstigen, eigener
                                	(auch geschäftlichen) Verwendung ist nach deutschem und schweizer
                               	 Recht zulässig. Laut dem Gesetzestext ist nicht zulässig,
                                	die fremden Inhalte ohne Einwilligung des Urhebers wieder zu 
                                	veröffentlichen. Im Internet (World Wide Web) sind alle Seiten, die
                                	nicht durch Paßworte geschützt sind, öffentlich! 
                                	Wer fremde Inhalte auf seine Web-Seiten stellt, diese 
                                	unzulässigerweise veröffentlicht dieses kann strafrechtlich verfolgt 

werden und kann recht teuer werden. Allein die

        			 	GEMA & Urheberrechtsgesetz - Gebühren können einen arm machen
                                	Ich hoffe, das euch das nicht zu sehr abschreckt!
                               
                                	UND NOCH EINMAL, ICH DER BETREIBER DIESES HUBs/CHAT ÜBERNEHME
                                	KEINE VERANTWORTUNG FÜR EUREN FESTPLATTENINHALT !!!!!!!!
                               
              


                                           Fragen zum Partnerhub bitte an Osiris oder die OP's wenden!


                                                                      Bitte beachtet:
                                                         Wer länger als 3 Wochen nicht im Hub 
                                                         war wird gelöscht! Wer länger Abwesend ist 
                                                         teilt es bitte ein OP mit, Danke! 
             
                                    
                                                                    
.                                                   *Regeln für unseren Hub*


                      01. Allgemein	        • (AD's) und (OP's) haben das letzte Wort....und generell Recht!
                                               • max 10 HUbs 

• Min. 2 Slots • MinShare: 3 GB

                                               • Kein Nazi, Tier oder Kinderporno im Share.

• Gesaugte Dateien sofort und min 2 Wochen lang sharen

                                               • Entpackte Releases haben nix im Share verloren und sollten entfernt werden.

• Dateien anderer P2P Systeme können zu kick führen....! • säubert euren Share von Torrentnamen • Übersichtlichkeit ist Pflicht. Wirre Strukturen werden entfernt^^

                      03. Wichtig:	        • Diskretion wird vorrausgesetzt

• Mainchatlogs werden nicht ausserhalb dieses Hubs kopiert. • PMs ebenso • Bereits der erste Verstoss hierzu führt zum Verlust des Accounts! • Wer Werbung vorhat, kann die OPS auch gleich um delreg bitten

                      04. Sonstiges:	        • Regelmässige Onlinezeit wird vorrausgesetzt. 
                                               • Tragt in den Settings unter Email eure genaue Connection ein. 

• z.B. DSL1000/128 - DSL2000/192 - DSL3000/384 • Freundlichkeit den anderen Gegenüber wird als selbstverständlich angesehen. • Die OPs haben dabei freien Ermessenspielraum


°°°°°°°°Wenn ihr euch nicht daran haltet, können warn, kick, ban oder delreg die Folge sein. Diskussionen sind sinnlos°°°°°°°°

                                                                                                                                              .##                                                     
                                                               ,##                                                     
                                                        ##-    ###                                                     
                                                        x##+    ;                                                      
                                                    ##.   #+                                                           
                                                    ####      ########                                                 
                                                      ;.    .###########                                               
                                                           ####+-  ##########=                                         
                                                  ;####.   ##   ,######-  -####                                        
                                                  .##x,    ## ,###= ######+ .##                                        
                                                            #### #   = #######                                         
                                                       -#-  ######;  ###x ###                                          
                                                    -#####   ## #+,   .=##x##                                          
                                                     x.      ##          x##                                           
                                                              ####x.      #######x;                                    
                                                               ######     +############                                
                                                               ;##  ##   #,#      -######                              
                                                              ####x ##  =# ##         =###                             
                                                           +############## ##  ##       ###                            
                                                         ##############   ###  ##        ###                           
                                                         ###   #########-####  ###   -#######                          
                                                        #####  =##### ######    #############                          
                                                      #######.  ###########    +######   ###-                          
                   ;##                              =###. ####  -##########,#####-       ###                           
                 ,###x+                        ,#######  ##### #######.  #####          x###                           
                x######                      X#####,   ##########.        .          x#####                            
                ###=####+                .X#####      +########.##       #     -X########-                             
                ##+#######,           ,#####x    ,######    +##  ##,  .x###############                                
             .+#####; +#####         ####    ; #####;       ###   #####################                                
             #-#####    =#####     .##+    ##==##           ##X     .#####=   #####.###                                
            ##-####;==#-  -####x   ##    #######           ###        ##-#       ## ###                                
         #################  .####; ##x#########           ,###       +####       ## +##                                
         #####+     .#;  +##   #### ####;                 ###        #####           ###                               
        #####,      ##   .-###;  ###x                 =#######-      #=.##     -########.                              
        #####x,    ;#, -#####X##X  ###x             #######,#####   ######   -###########                              
       #####+..    ## ########  -##  ###= =       #####       -######## #  +##############=                            
       ####        # -######### + ,##;.###X##-  x###X            ;###########   x### ##x####                           
    . ###x        ## ##  ######=###--X#+-##### ####                     ;+;       ##  ###;###  #.##,                   
   .# ###         # ##   #####x#-######X####  ###                                      ,#. ### ##-##                   
   #+##          ## ##  ################ ###-x###                       x#                  ### ##                     
  ## #           #  ######### #-#####+#= #####;##           .#+         +###+              #### ,                      
  ###x####.     ##  ######## ########.# #####= ###           ##=.=+xx+=,  +###            ####              ;#####-    
    x=  =####x  #    ######  #-#####.# ## ###  ###        ## #################.          ####            -##########   
           .#####;;.  =x#   ##x#XX#x,= #####=   ###       ##x ###xx++x########          #####Xx;.      =#############. 
              ##+X#####xx######xx+++X. -####;   X##.      ### ###       ####.          ############################### 
              =####X-               .;;. ,###    ###    ## ##  ###.    ####         ,=################################,
     =#####    .######  #####  ############.#X    X###   ###+##  ###  #####   X#########################################
   ##########   ######x######  -#####    ##        ####x ,## ###= ########    ###-.   +#################################
  ######, ;###  #############   ########+       ######################## ;############################################,
  ############  #### ### ####   =########      ######x##########################X++x######################      .;-.   
  ############  ####  # #####.   ####.  .##   ###x          .############.             ,#################              
   -########   ######  #######-+###########    ####################################++###################               
                    ,,                  .,      -############=         =###############################+                 
                              ***************    So und nun viel Spaß Beat-Box ***************