HiMen
Back again- maybe someone can help me with this prob:
The Trivia 2.2 does not save the scores- not automaticly:
-- How often should the bot autosave the scores
boolAutoSaveScores = 1 -- (nil = off, 1 = on)
countSaveTurns = 3 -- After how many questions should the scores be saved
and also not after quit. BUT I NEED THIS FUNCTION! ;(
PS: MyScore doesn?t work also...
PLEASE! PLEASE! PLEASE ! - Gods of Scritin; HELP !!! :(
____________________________________________
Here we go: Part 1
BotName = "?[D@]Trivia"
ScriptVersion = "v2.2"
BotVersion = BotName.." "..ScriptVersion
-- Diese Dat wird zur Not kreiert
strTrivScoreFile = "TriviaScores.dat"
-- Diese Dat wird ben?tigt!
strDefTrivFile = "trivia.dat"
strTrivFile = strDefTrivFile
strQFile = "Questions.dat"
-- 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
strCMask = "@"
-- 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
lngMaxShowList = 5
-- Max no of Hints per word, and always hit on a hidden char
lngMaxHints = 5
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 = 4 -- (Needs to be a multiple of 4 i.e. 4 / 8 / 12 / 16)
lngRestTime = 1
lngHintTime = lngMaxTime / 4
-- How often should the bot autosave the scores
boolAutoSaveScores = 1 -- (nil = off, 1 = on)
countSaveTurns = 3 -- 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 = nil -- (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.."tbjoin"
PartTrigg = TriggStart.."tbpart"
StartTrigg = TriggStart.."tbstart"
StopTrigg = TriggStart.."tbstop"
WordTrigg = TriggStart.."tbword"
QuizTrigg = TriggStart.."tbquestion"
RestartTrigg = TriggStart.."tbrestart"
PointTrigg = TriggStart.."tbpoints"
ScoreTrigg = TriggStart.."tbscores"
PlayerTrigg = TriggStart.."tbplayers"
QuestionsTrigg = TriggStart.."tbquestions"
ReloadTrigg = TriggStart.."tbreload"
HelpTrigg = TriggStart.."tbhelp"
ExtraHelpTrigg = TriggStart.."tbhelp+"
SaveTrigg = TriggStart.."tbsavescores"
LoadTrigg = TriggStart.."tbloadscores"
ModeTrigg = TriggStart.."tbmode"
HintTrigg = TriggStart.."tbhintme"
TopTrigg = TriggStart.."tbtopten"
AddTrigg = TriggStart.."tbaddquestion"
bcount = 0
scount = 0
sQuestion = ""
sAnswer = ""
guessArray = {}
lngGuessmax = 0
playerArray = {}
pointArray = {}
lngWord = 0
lngPassed = 0
lngHinted = 0
strWord = ""
strQuestion = ""
strSolved = ""
strBanner = ">'"..StartTrigg.."' Start, '"..StopTrigg.."' = Stopp, > '"..JoinTrigg.."' = Teilnahme und '"..PartTrigg.."' = Aufh?ren!"
strStart = "Trivia "..ScriptVersion.." gestartet! "..strBanner
strStopp = "Trivia "..ScriptVersion.." gestoppt! "..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 ToArrival(curUser, data)
ChatArrival(curUser, data)
end
-------------------------------
function ChatArrival(curUser, data)
local boolPlaydata = nil
if (string.sub(data, 1, 1) == "<") then
data = string.sub(data, 1, (string.len(data) - 1))
if ((lngMode == 0) or (lngMode == 1)) then
boolPlaydata = 1
end
elseif (string.sub(data, 1, 4) == "$To:") then
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
end
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("z. Zt. ist das Einf?gen von Fragen nicht m?glich!")
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("Spiel l?uft im Main-Chat")
elseif (lngMode == 1) then
SendToPlayers("Spiel l?uft im Main-Chat - Fragen sieht nur der jeweilige Spieler selbst")
elseif (lngMode == 2) then
SendToPlayers("Spiel l?uft als PM an den Spieler")
else
SendToPlayers("Error-Mode, Mode gesetzt auf Standard")
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.." spielt jetzt mit!")
else curUser:SendPM(BotName, "Du bist bereits Auto-eingeloggt. ;-)")
end
elseif (string.lower(firstWord) == string.lower(PartTrigg)) then
if (playerArray[curUser.sName]) then
SendToPlayers(curUser.sName.." spielt nimmer!")
playerArray[curUser.sName] = nil
end
elseif (string.lower(firstWord) == string.lower(RestartTrigg)) then
if (curUser.iProfile == 0) then
SendToPlayers("Triviala Neustart. All Punkte futsch!")
SendToPlayers("Falls *Auto-Save* genutzt wird, wurde der Spielstand jetzt! aktualisiert!")
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 (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("Hint: "..strSolved)
acount = ""
else
SendToPlayers("Alle Tips- ...f?r dieses Wort!")
end
else
SendToPlayers("Kein Tip notwendig!")
end
elseif ((string.lower(firstWord) == string.lower(ScoreTrigg)) and (playerArray[curUser.sName])) then
curUser:SendPM(BotName, "PUNKTE:")
curUser:SendPM(BotName, "---------------------------------------------------------")
for index, value in pointArray do
curUser:SendPM(BotName, index.."'s points: "..value)
end
Here we go, Part 2
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, "Gesamt # Fragen: "..lngGuessmax)
curUser:SendPM(BotName, "---------------------------------------------------------")
curUser:SendPM(BotName, " ")
end
elseif (string.lower(firstWord) == string.lower(StartTrigg)) then
if (curUser.bOperator) then
if (lngWord == 0) then
playerArray[curUser.sName] = 1
SendToAll(BotName, strStart)
if (lngMode == 2) then
SendToPlayers(strStart)
end
StopQuiz(1)
else
SendToAll(BotName, "Es l?uft bereits ein Spiel, schreibe "..JoinTrigg.." um teilzunehmen!")
end
else
curUser:SendPM(BotName, "NUR! OPerator k?nnen Triviala starten.")
end
elseif (string.lower(firstWord) == string.lower(StopTrigg)) then
if (curUser.bOperator) 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("Aktuell: "..strSolved.." ("..string.len(strSolved)..")")
end
elseif (string.lower(firstWord) == string.lower(QuizTrigg)) then
if ((lngWord ~= 0) and (playerArray[curUser.sName])) then
SendToPlayers(""..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("Answer is now: "..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 gel?st von : "..curUser.sName)
SendToPlayers("N?chste Frage in wenigen Sekunden...")
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(""..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.."' Nicht gel?st!")
else
SendToPlayers("Die Antwort wurde nicht gefunden!")
end
SendToPlayers("N?chste Frage in wenigen 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("Tip: "..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("Neu-Mischen der Fragen..., Spiel gestoppt!")
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 = {
"Der beste Hub im DC-Network?"..strGSep.."Da German Force",
"7 x sieben ist"..strGSep.."Feiner Sand"
}
lngGuessmax = 2
end
if (boolRestart) then
SendToPlayers("Neu-Mischen der Fragen..., Spiel wird neu gestartet! Aktuelle # 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,"Punktest?nde gesichert!")
handle:close()
end
-----------------------------------------
Here we go; Part 3
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,"Punktest?nde geladen...")
handle:close()
end
end
---------------------------------------------------
function AddQuestion(curUser, sQuestion, sAnswer)
local handle = io.open(strQFile, "a")
handle:write("Eingetragen von <"..curUser.sName.."> "..sQuestion..strGSep..sAnswer.."\r\n")
SendToPlayers(curUser.sName.." hat eine Frage hinzugef?gt- "..sQuestion)
curUser:SendPM(BotName,curUser.sName.." Die 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, "$an: "..index.." von: "..BotName.." $<"..curUser.sName.."> "..chat)
end
end
end
end
--------------------------------------------
function showHelp(curUser)
curUser:SendData(" ")
curUser:SendData(" "..BotVersion.." Commands:")
curUser:SendData(" ")
if (lngMode == 0) then
curUser:SendData(" "..BotVersion.." gesetzt auf- Spielen im Chat")
elseif (lngMode == 1) then
curUser:SendData(" "..BotVersion.." gesetzt auf- Spielen im Chat (Anonym)")
else
curUser:SendData(" "..BotVersion.." gesetzt auf- Spielen in PM")
end
curUser:SendData(" "..HelpTrigg.." - Diese Hilfe...;-)")
curUser:SendData(" "..JoinTrigg.." - Teilnahme am Spiel")
curUser:SendData(" "..PartTrigg.." - Verlassen des Spiels")
curUser:SendData(" "..WordTrigg.." - zeigt aktuelles Wort (Antwort)")
curUser:SendData(" "..QuizTrigg.." - zeigt aktuelle Frage")
curUser:SendData(" "..PointTrigg.." - zeigt DEINEN Punktestand")
curUser:SendData(" "..ScoreTrigg.." - zeigt ALLE Puntest?nde")
curUser:SendData(" "..PlayerTrigg.." - zeigt alle aktuellen Spieler")
curUser:SendData(" "..HintTrigg.." - Aufdecken eines! Zeichens der aktuellen Antwort")
curUser:SendData(" "..TopTrigg.." - zeigt die TOP-TEN")
curUser:SendData(" "..AddTrigg.." - F?gt Frage hinzu. Erst die Frage, trenne die Antwort mit *")
curUser:SendData(" BEISPIEL : yoquestion Wie schnell fliegt ein Vogel*Keine Ahnung")
if (curUser.bOperator) then
curUser:SendData(" ")
curUser:SendData(" "..BotVersion.." OPerator Commands:")
curUser:SendData(" "..StopTrigg.." - Stoppt Triviala")
curUser:SendData(" "..RestartTrigg.." - Restart, setzt alle Punkte zur?ck!")
curUser:SendData(" "..QuestionsTrigg.." - Zeigt alle Fragen des aktuellen Spiels")
curUser:SendData(" "..ReloadTrigg.." () - L?dt Fragen neu aus "..strDefTrivFile)
curUser:SendData(" "..ModeTrigg.." - Wechselt den Spiel-Mode (0-2)!")
curUser:SendData(" "..SaveTrigg.." - Speichert Spielst?nde nach "..strTrivScoreFile)
curUser:SendData(" "..LoadTrigg.." - L?dt Spielst?nde aus "..strTrivScoreFile)
curUser:SendData(" "..StartTrigg.." - Startet Triviala und setzt DICH automatisch als Spieler")
curUser:SendData(" ")
curUser:SendData(" "..BotVersion.." Modes:")
curUser:SendData(" ".."0 = gesetzt auf- Spielen im Chat!")
curUser:SendData(" ".."1 = gesetzt auf- Spielen im Main-Chat (Anonym)")
curUser:SendData(" ".."2 = gesetzt auf- Spielen in 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.." Trivia-Punkte in diesem Hub..\r\n Position\t Punkte\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
yikes, what a huge script, anyways next time babe, when posting a code try using highliting the code and clicking on "#", it makes the code easier to read !
*Ups* - I?ll do so...sorry! ;)
Edited: D O N E! :tongue:
Hmmm, nobody knows? ?(
change this
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
to this ::
function OnTimer()
lngPassed = lngPassed + 1
if (lngPassed == lngMaxTime) then
scount = scount + 1
if scount == countSaveTurns then
[COLOR=red] local handle = io.open(strTrivScoreFile, "w+")[/COLOR]
for index, value in pointArray do
handle:write(index..strGSep..value.."\r\n")
end
handle:close()
scount = 0
end
Untested !
I?ll do so, before:
Must i change this too?
function SaveScores(curUser)
[COLOR=red]local handle = io.open(strTrivScoreFile, "w")[/COLOR]
for index, value in pointArray do
handle:write(index..strGSep..value.."\r\n")
end
curUser:SendData(BotName,"Punktest?nde gesichert!")
handle:close()
end
No;
I?d done first only yours...@ Dessamator
and than with the second change...
Nothing matters, it does not save automaticly ;(
Rememberin ;
What this sript should do 4 me is SAVIN! scores.
The functions are awaylable but they doesn?t work...
1. Autosave Scores after 3 Answers
2. Autosave when quitin
...and if possible:
3. Auto-Reload Scores @ start
4. Auto-Reload Trivia.dat @ start
Hey foods! PLZ HELP! :(
find these functions and change them:
----------------------
function Main()
frmHub:RegBot(BotName)
ReloadQuestions()
LoadScores()
end
---------------------------------------------------------
function SaveScores(curUser)
local handle = io.open(strTrivScoreFile, "w")
for index, value in pointArray do
handle:write(index..strGSep..value.."\r\n")
end
if curUser then
curUser:SendData(BotName,"Punktest?nde gesichert!")
end
handle:close()
end
function LoadScores(curUser)
local handle = io.open(strTrivScoreFile)
if (handle) then
for line in io.lines(strTrivScoreFile) do
local arrTmp = tokenize(line, strGSep)
if ((arrTmp[1] ~= nil) and (arrTmp[2] ~= nil)) then
pointArray[arrTmp[1]] = tonumber(arrTmp[2])
end
io.read()
end
if curUser then
curUser:SendData(BotName,"Punktest?nde geladen...")
end
io.close()
end
end
---------------------------------------------------
and if u want u can add(not really needed) :
function OnExit()
SaveScores()
end
Very fine! work @ Dessamator ;)
Thank YOU! <<>> VERY! much... :P
ur welcome ! :)
nop it doesent work forme
maybe something wrong