Всем привет. Пришлось мне тут как то стать админом одного IRC сервера.
Прикручивать всяких ботов, заниматься разработкой последних. В общем ко мне в руки попала не плохая база вопросов для викторины - 12тысяч вопросов.
Вот сижу как то вечерком и думаю..а не порадовать ли народ скриптиком
под УО..и вот оно родилось.
Скрипт ведет викторину - (аналог скрипта Trivia под IRC серверы)
Code:
var questionsfile=file(".\questions.txt") ;Путь к файлу с вопросами (сейчас таже папка где лежит скрипт)
var timeout_1=25 ;таймаут на ответ
var timeout_2=10 ;таймаут на подсказку
var botname="Викторина бот."
var botowner=chr(169)+" Don SpiL"
var botinfo=""
var startmess=""
var Botinfocicle=10 ;Количество вопросов в раунде (будет повторен копирайт)
var marker="*" ;Разделитель вопрос-ответ в файле с вопросами
Sub Main()
var readline="",num=0,i,timer
questionsfile.open()
while readline<>"File read error"
readline=trim(safe call questionsfile.ReadLn())
if readline<>"File read error" then
num=num+1
uo.setglobal("OntextQuestions"+str(num),Left(readline,Len(readline)-1))
end If
wend
questionsfile.close()
uo.setglobal("NumQuestions",num)
While 1==1
uo.say(botname)
uo.say(botinfo)
uo.say(botowner)
wait(5000)
For i=0 To Botinfocicle
play()
wait(11000)
next
wend
End Sub
Sub play()
uo.deletejournal()
var Timer=0,answerOK
uo.say(startmess)
QuestANDAnswer()
correctSay()
answerOK="false"
Timer=uo.timer()
While Not uo.injournal(uo.getglobal("Answer")) And uo.timer()-Timer<timeout_2*10
wait(50)
Wend
If Not uo.injournal(uo.getglobal("Answer")) and uo.timer()-Timer>=timeout_2*10 Then
uo.say(">> подсказка <<")
help()
End If
While Not uo.injournal(uo.getglobal("Answer")) and uo.timer()-Timer<timeout_1*10
wait(100)
Wend
If uo.injournal(uo.getglobal("Answer")) Then
uo.say("Поздравляю")
uo.say(">> "+uo.getname(uo.journalserial(uo.journal(uo.getglobal("Answer"))))+" << ")
uo.say(" ответ был - "+uo.getglobal("Answer"))
Else
uo.say("Время вышло!! Ответ был - "+uo.getglobal("Answer"))
End If
End sub
sub QuestANDAnswer()
var i,k,markerpoint=0
var Random=uo.random(val(uo.getglobal("NumQuestions")))+1
var QuestionLine=uo.getglobal("OntextQuestions"+str(Random))
For i=0 To Len(QuestionLine)
If Mid(QuestionLine,i,1)==marker Then
markerpoint=i
End if
Next
uo.setglobal("Quest",Left(QuestionLine,markerpoint))
uo.setglobal("Answer",Right(QuestionLine,Len(QuestionLine)-markerpoint-1))
End Sub
Sub help()
var i,simbols=0
var text=uo.getglobal("Answer")
var helpmsg=Left(text,Len(text)/2)
simbols=Len(text)/2
if Len(text)<=3 then
helpmsg=helpmsg+"*"
end if
repeat
simbols=simbols+1
helpmsg=helpmsg+"*"
Until simbols>=Len(text)
uo.say(helpmsg)
End Sub
Sub correctSay()
var msg=uo.getglobal("Quest")
var simbols=Len(msg)
If simbols>80 Then
uo.say(left(msg,75))
msg=Right(msg,simbols-74)
wait(1000)
uo.say(msg)
Else
uo.say(msg)
End If
End sub
файл вопросов -
http://slil.ru/23729098
2allCoders - парни..скелетик прикольный...можно подписать результаты,всякие там топы,лучших игроков и т.д. Если кто-то возметься будем рады. Я конечно и сам пишу но время на все не хватает а народ требует ))