Pada contoh kali ini ane menggunakan:
Client : MirC
OS : WinXP
Server Dota : PvPgn Standart
IRC : IRC based pvpgn localhost
------------------------------------------
Setting IRC di PvPgN
sedikit ane jelasin pvpgn irc nya, sebelum mengkoneksikan mirc kita ke pvpgn dota,
kita harus mengaktifkan settingan IRC di pvpgn kita.
1. buka dulu ..\pvpgn\conf\bnetd.conf dengan notepad, lalu tekan CTRL+F
lalu search baris berikut :
2. buang tanda # didepan settingan yang digunakan untuk mengaktifkannya.Code:# Internet Relay Chat (IRC) configuration
local ip yang ane gunakan yaitu : 192.168.1.6 , dan port 6667 default irc kita gunakan ini aja.
jadi settingannya kira2 seperti ini :
save dan close, nah sekarang IRC telah aktif di pvpgn kita , tinggal lakukan koneksi dari Mirc Ke PVPGNCode:##############################################################################
# Internet Relay Chat (IRC) configuration #
#----------------------------------------------------------------------------#
# NOTE: IRC support is still experimental!
# This specifies the addresses where IRC connections should be accepted. See
# the description of servaddrs for formatting information. Leave this field
# blank if you do not want to accept IRC connections. If the port is not
# specifed then 6667 will be used.
ircaddrs = "192.168.1.6:6667"
# This is the IRC network name. If this is not specified then the default of
# "PvPGN" will be used.
irc_network_name = "PvPGN"
# This is the hostname used for IRC connections. Set this to your
# hostname, if the automatic detection doesn't correctly.
hostname = "none"
# Set this to the desired IRC connection timeout in seconds.
irc_latency = 180
# #
##############################################################################
Basic Bot IRC channel Dota
Detail yang akan ane gunakan.
Channel : #forumdota
User Bot : BOT (nick harus sudah terdaftar di dota)
IP : 192.168.1.6
1. gak punya mirc? download disini http://www.mirc.com/get.html
2. install dan buka mircnya, lalu pilih menu File -> Select Server -> Add -> masukkan IP local yang dijadikan IRC di pvpgn tadi, kira2 begini :
http://upload.forumdota.com/images/mirc.png
jangan di close dulu.Setting lagi dimenu sebelah kiri pilih Connect
di kolom nickname masukan user dota, yang sudah aktif dan bs login di dota.
[/img]http://upload.forumdota.com/images/mirc2.png[/img]
lalu OK kan
3. Lalu konekkan. file -> connect
4. Jika muncul menu popup untuk join channel (mirc favorites) -> close saja
5. lakukan verifikasi password dengan mengetikkan :
http://upload.forumdota.com/images/mirc3.png
Jika verifikasi password berhasil maka akan ada tulisan
6. Sekarang joinkan bot ke channel utama server dotahCode:-none- Authentication successful. You are now logged in.
[/img]ttp://upload.forumdota.com/images/mirc4.png[/img]
7. Sekarang posisi bot sudah di dalam channel utama (contoh : #forumdota)Code:/Join #forumdota
tekan menu Tool-> Script Editor -> pilih Remote diatas itu
maka akan terbuka sebuah tempat editor, lihat gambar dibwh:
http://upload.forumdota.com/images/mirc5.png
8. Kita mulai membuat fungsi bot.
fungsi dasar pertama yang kita berikan yaitu ketika ada user join ke channel utama tsb,
si BOT wisp ke user dan memberikan bantuan.
untuk itu kita perlu memberikan kondisi JOIN (ketika user join channel forumdota)
Code:on 1:join:#ForumDota: {
/msg $nick Untuk melihat command bot user anda, ketik /w BOT !help
/writeini -n login.ini ID: $nick - Status: login }
ketika user sudah masuk channel, bot sudah otomatis wisp user dan menyuruh ketik !help untuk info.
sekarang kita berikan fungsi !help di bot agar ketika user wisp !help ada jawabannya
tambahkan code ini dibawah ocde sebelumnnya
perhatikan baris on 1:text:*!help*:?: {Code:on 1:text:*!help*:?: {
/msg $nick Command bot user yang anda miliki adalah
/msg $nick Untuk melihat list Developer ForumDota, ketik /w BOT !dev
/msg $nick Untuk melihat list Head Operator ForumDota, ketik /w BOT !hop
/msg $nick Untuk melihat list Operator ForumDota, ketik /w BOT !op
/msg $nick Untuk melihat list Voice Operator ForumDota, ketik /w BOT !vop
/msg $nick Untuk melihat Cara Donasi, ketik /w BOT !donasi
/msg $nick untuk melihat forum , ketik /w BOT !forum }
nah itu pertanda kalo ada text yang masuk dengan perintah !help,
berarti anda bisa berkreasi dengan yang lain entah ganti dengan !info , !welcome dll
dan juga bisa membuat perintah baru.
bot sekarang jika di ketik /w BOT !dev tentu belum ada balasan karena belum dibuat.
maka dari itu kita membuat masing2 perintah yang ada di !help yang sebelummnya kita buat
seperti !dev, !hop , !op dll
tambahkan code ini dibawah code sebelumnya
Code lengkap untuk dasar di Script editor ini lengkapnya:Code:on 1:text:*!dev*:?: {
/msg $nick List developer ForumDota adalah
/msg $nick VbA, DotA }
on 1:text:*!hop*:?: {
/msg $nick List Head Operator ForumDota adalah
/msg $nick Belum Ada }
on 1:text:*!op*:?: {
/msg $nick List operator ForumDota adalah
/msg $nick Belum Ada }
on 1:text:*!vop*:?: {
/msg $nick List voice operator ForumDota adalah
/msg $nick Belum Ada }
anda copy dan pastekan di script editor lalu klik OK.Code:on 1:join:#ForumDota: {
/msg $nick Untuk melihat command bot user anda, ketik /w BOT !help
/writeini -n login.ini ID: $nick - Status: login }
on 1:text:*!help*:?: {
/msg $nick Command bot user yang anda miliki adalah
/msg $nick Untuk melihat list Developer ForumDota, ketik /w BOT !dev
/msg $nick Untuk melihat list Head Operator ForumDota, ketik /w BOT !hop
/msg $nick Untuk melihat list Operator ForumDota, ketik /w BOT !op
/msg $nick Untuk melihat list Voice Operator ForumDota, ketik /w BOT !vop
/msg $nick Untuk melihat Cara Donasi, ketik /w BOT !donasi
/msg $nick untuk melihat forum , ketik /w BOT !forum }
on 1:text:*!dev*:?: {
/msg $nick List developer ForumDota adalah
/msg $nick VbA, DotA }
on 1:text:*!hop*:?: {
/msg $nick List Head Operator ForumDota adalah
/msg $nick Belum Ada }
on 1:text:*!op*:?: {
/msg $nick List operator ForumDota adalah
/msg $nick Belum Ada }
on 1:text:*!vop*:?: {
/msg $nick List voice operator ForumDota adalah
/msg $nick Belum Ada }
on 1:text:*!donasi*:?: {
/msg $nick Tata Cara donasi yaitu sbb:
/msg $nick kirim uang aja udah ! }
on 1:text:*!forum*:?: {
/msg $nick Forum adalah
/msg $nick http://ForumDota.com }
sekarang coba anda loginkan id lain melalui dota dan masuk kechannel forumdota ingat tanpa # , channel di irc menggunakn #forumdota tapi untuk di dota cukup forumdota saja
ini skrenshot ane coba join ke channel tsb dengan nick VbA :
Code:http://upload.forumdota.com/images/mirc7.png
[spoiler=Tambaha script" yang ada]
Script Auto Kick flood
Code:on 1:TEXT:*:#:{
inc -u4 %spam. [ $+ [ $nick ] ]
if (%spam. [ $+ [ $nick ] ] == 6) {
ban -ku300 $chan $nick Jangan Flood di channel
halt
}
}
script untuk mempasswordkan Chanel
Script Check AbsenCode:nih Script nya
on 1:Join:#NAMACHANNEL: {
raw kick #NAMACHANNEL $nick
/msg $nick Anda belum memasukan Password Channel ! }
on 1:text:*!pass Password*:?: {
/auser 2 $nick
/msg $nick Anda Telah Memasukan Password Channel Dengan Benar ! }
on 2:Join:#NAMACHANNEL: {
/msg $nick Welcome [ $nick ] }
Code:on 1:text:*!add-absen*:?: {
/write $2.txt ID : $2 Telah absen pada tanggal : $date. Terimakasih sudah absen
/msg $nick oke ID anda sudah di absen }
untuk Script Trivia [F100] Untuk Mirc !!!
silahkan diedit pertanyaan"nya begitu pun jawaban :DCode:menu * {
Trivia:trivia
}
on *:load:{
write missed.txt Sorry guys, but you got it wrong!
write missed.txt Aww cmon guys!
write missed.txt You guys suck!
write missed.txt I can't believe you got it wrong!
write missed.txt You guys are miserable at this!
hadd -m trivia strivia ison
:start
var %x = $input(Who would you like to set as your owner?,qe,Bot Owner)
if (%x != $null) hadd -m trivia owner %x
else goto start
:chan
var %y = $input(What channel would you like trivia to be for?,qe,Trivia Channel)
if ($left(%y,1) == $chr(35)) hadd -m trivia chan %y
else goto chan
}
on *:unload:{
if ($isfile(reports.ini)) .remove -b reports.ini
if ($isfile(questions.ini)) .remove -b questions.ini
if ($isfile(scores.ini)) .remove -b scores.ini
if ($isfile(missed.txt)) .remove -b missed.txt
if ($hget(scores)) hfree $v1
if ($hget(reports)) hfree $v1
if ($hget(questions)) hfree $v1
unset %streak*
unset %wrong
if ($hget(trivia)) hfree $v1
.timertriv* off
}
on *:kick:#:{
if ($knick == $me && $chan == $hget(trivia,chan)) {
hadd -m trivia status off
hdel trivia answer
hdel trivia time
.timertriv* off
unset %streak*
unset %wrong
}
}
on *:start:{
if (!$hget(scores)) hmake scores
if (!$hget(reports)) hmake reports
if (!$hget(questions)) hmake questions
hload -i reports reports.ini
hload -i questions questions.ini
hload -i scores scores.ini
if (!$hget(trivia)) hmake trivia
hload -i trivia trivia.ini
if (!$hget(trivia,owner)) {
:start
var %x = $input(Who would you like to set as your owner?,qe,Bot Owner)
if (%x != $null) hadd -m trivia owner %x
else goto start
}
}
on *:join:#:{
if ($chan == $hget(trivia,chan) && $nick == $me) {
if ($dialog(trivia)) {
did -e trivia 9
did -b trivia 10
}
}
}
on *:part:#:{
if ($nick == $me && $chan == $hget(trivia,chan)) {
if ($dialog(trivia)) {
did -e trivia 9
did -b trivia 10,9
}
hadd -m trivia status off
hdel trivia answer
hdel trivia time
.timertriv* off
unset %streak*
unset %wrong
}
}
on *:exit:{
hsave -i trivia trivia.ini
hsave -i scores scores.ini
hsave -i reports reports.ini
hsave -i questions questions.ini
}
on *:connect: if ($dialog(trivia)) did -e trivia 9
on *:disconnect:{
hadd -m trivia status off
hdel trivia answer
hdel trivia time
.timertriv* off
unset %streak*
unset %wrong
if ($dialog(trivia)) did -b trivia 10,9
}
on *:text:*:#:{
if ($chan == $hget(trivia,chan)) {
if ($regex($1,/^[!@.](?:trivia|start|triv(?:on|start))$/Si)) {
if ($hget(trivia,status) != on) {
hadd -m trivia status on
.msg $chan $+(03Trivia has been started by04 $nick,03!)
.timertrivnew 1 2 new
if ($dialog(trivia)) {
did -b trivia 9
did -e trivia 10
}
}
else .msg $chan 03Trivia is already04 on03 $+ !
}
if ($regex($1,/^[!@.](?:strivia|stop|triv(?:off|stop))$/Si)) {
if ($hget(trivia,status) == on) {
if ($nick $hgeT(trivia,strivia) $chan) {
hadd -m trivia status off
hdel trivia answer
hdel trivia time
.timertriv* off
unset %streak*
.msg $chan 03Trivia has been stopped by04 $nick $+ 03!
if ($dialog(trivia)) {
did -b trivia 10
did -e trivia 9
}
}
else .msg $chan you dont have access to that command
}
else .msg $chan 03Trivia is already04 off3 $+ !
}
if ($strip($1-) == $hget(trivia,answer)) {
unset %wrong
var %time = $calc($calc($ticks - $hget(trivia,time)) / 1000)
var %a = %streak [ $+ [ $nick ] ]
unset %streak*
set %streak [ $+ [ $nick ] ] $calc(%a + 1)
hdel trivia answer
.timertriv* off
hinc -m scores $nick
.msg $chan $+(06,$gettok(Way to go|That's the way|Wahoo|You got it,$r(1,4),124),$chr(32),04,$nick,06!) The answer was04 $strip($1-) $+ 06! You got it in04 %time 06seconds! Your streak is4 %streak [ $+ [ $nick ] ] 6questions!
.msg $chan 06You are ranked4 $rank($nick) 06out of04 $hget(scores,0).item 06with04 $score($nick) 06points! $iif($hget(scores,0).item > 1,$iif(1st* !iswm $rank($nick),06You are behind04 $behind($nick) 06with04 $score($behind($nick)) 06points!,04 $+ $first 06is trailing behind you with04 $score($first) 06points!),You are the first one to score!)
if ($dialog(trivia) && $did(trivia,14).seltext == $nick) did -ra trivia 15 $hget(scores,$nick) Points
.timertrivrightnew 1 3 new
}
if ($regex($1,/^[!@.](?:top(ten|score(s)?|10)?|scores)$/Si)) top10
if ($1 == !score) {
if ($2) {
if (*has no rank yet !iswm $rank($2)) {
.msg $chan 04 $+ $2 03is ranked4 $rank($2) 03out of04 $hget(scores,0).item 03with4 $score($2) 03points!
}
else .msg $chan 4 $+ $2 3isn't currently ranked.
}
else {
if (*has no rank yet !iswm $rank($nick)) {
.msg $chan 04You03 are ranked04 $rank($nick) 03out of04 $hget(scores,0).item 03with04 $score($nick) 03points!
}
else .msg $chan 4You3 aren't currently ranked.
}
}
if ($1 == !report) {
if ($2 <= $hget(questions,0).item && $3) {
var %x = $hget(questions,$2)
var %y = 1
var %z = $hget(reports,1).item
while $hgeT(reports,%y).item {
if ($v1 > %z) var %z = $v1
inc %y
}
hadd -m reports $calc(%z + 1) $gettok(%x,1,1) $chr(1) $3-
.msg $chan 03Thanks04 $nick $+ 03 $+ $chr(44), 04 $hgeT(trivia,owner) 03will read your report shortly.
if ($dialog(trivia)) {
did -r trivia 51
var %x = 1
while $hget(reports,%x).item {
did -a trivia 51 $gettok($hget(reports,$v1),1,1)
inc %x
}
did -z trivia 51
}
}
else .msg $chan 12Syntax03: !report <04ques #03> <04problem03>
}
if ($1 == !questions) .msg $chan 03There are currently04 $hget(questions,0).item 03questions.
if ($1 == !give) {
if ($nick == $hget(trivia,owner)) {
if ($3 isnum) {
if (!$hget(scores,$2) && $dialog(trivia)) { did -a trivia 14 $2 | did -z trivia 14 }
hadd -m scores $2 $3
.msg $chan 04 $+ $2 03now has04 $score($2) 03points.
if ($dialog(trivia) && $did(trivia,14).seltext == $2) did -ra trivia 15 $3 Points
}
else .msg $chan 12Syntax: 03!give <4nick3> <4points3>
}
else .msg $chan 03I don't believe you're04 $hget(trivia,owner) $+ 03.
}
if ($regex($1,/^[!@.](?:triv(ia)?(?:help)|help)$/Si)) {
.notice $nick ~*~Trivia Commands~*~
.notice $nick !trivia ~ Starts trivia
.notice $nick !strivia ~ Stops trivia $iif($hget(trivia,strivia) != ison,if you are) $iif($hget(trivia,strivia) == isop,op'd) $iif($hget(trivia,strivia) == isvoice,voiced)
.notice $nick !score ~ Returns your rank and score
.notice $nick !score <nick> ~ Returns <nick>'s rank and score
.notice $nick !report <ques #> <problem> ~ report a question
.notice $nick !trivhelp ~ Returns trivia help (this)
.notice $nick !questions ~ Returns tumber of trivia questions
.notice $nick !top10 ~ Returns top 10 scores
if ($nick == $hget(trivia,owner)) .notice $nick !give <nick> <points> ~ Give someone points
}
}
}
alias -l new {
var %chan = $hget(trivia,chan)
var %total = $hget(questions,0).item
var %number = $hget(questions,$r(1,%total)).item
noop $regex($hget(questions,%number),/^(.+)(.+)(.+)(.+)$/i)
hdel trivia answer
hadd -m trivia answer $regml(4)
.msg %chan $+(11~04*11~03Question04 %number,06/04,$hget(questions,0).item,11~04*11~)
.msg %chan 12 $+ $regml(1)
hadd -m trivia time $ticks
.timertrivhint1 1 2 .msg %chan 03Hint: $regml(2)
.timertrivhint2 1 15 .msg %chan 03Hint: $regml(3)
.timertrivwrong 1 30 wrong
}
alias wrong {
inc %wrong
if (%wrong >= $hget(trivia,wrong)) {
hadd -m trivia status off
hdel trivia answer
hdel trivia time
.timertriv* off
unset %streak*
.msg $hget(trivia,chan) 04 %wrong 10questions have gone by unanswered! Trivia has been stopped by04 $me $+ 10!
unset %wrong
if ($dialog(trivia)) {
did -b trivia 10
did -e trivia 9
}
}
else {
.msg $hget(trivia,chan) 10 $+ $read(missed.txt) Get ready for the next question...
;if you want it to msg the answer, use the line below instead
;.msg $hget(trivia,chan) 10The answer was04 $hget(trivia,answer) $+ 10! Get ready for the next question...
unset %streak*
.timertrivnewfromwrong 1 2 new
}
}
alias -l top10 {
var %d = 1, %w = @top10
window -hn %w
clear %w
while $hget(scores,%d).item {
aline %w $v1 $hget(scores,$v1)
inc %d
}
filter -cteuww 2 32 %w %w
var %k = 1, %k1
while %k <= 10 {
if ( $line(%w,%k) ) {
tokenize 32 $v1
if (%k == 1) var %x = $addtok(%x,04 $+ $1 ~ $hget(scores,$1),44)
if (%k == 2) var %x = $addtok(%x,12 $+ $1 ~ $hget(scores,$1),44)
if (%k == 3) var %x = $addtok(%x,03 $+ $1 ~ $hget(scores,$1),44)
elseif (%k isnum 4-10) var %x = $addtok(%x,06 $+ $1 ~ $hget(scores,$1),44)
}
inc %k
}
.msg $hget(trivia,chan) $iif($line(%w,1),$replace(%x,$chr(44),$chr(44) $chr(32))%x,3There are no high scores.)
}
alias -l rank {
var %d = 1, %w = @top10, %n = $$1
window -hn %w
clear %w
while $hget(scores,%d).item {
aline %w $v1 $hget(scores,$v1)
inc %d
}
filter -cteuww 2 32 %w %w
return $iif($fline(%w,%n *,1),$ord($v1),$1 has no rank yet)
}
alias -l score {
var %d = 1, %w = @top10, %n = $$1
window -hn %w
clear %w
while $hget(scores,%d).item {
aline %w $v1 $hget(scores,$v1)
inc %d
}
filter -cteuww 2 32 %w %w
return $iif($fline(%w,%n *,1),$gettok($line(%w,$v1),2,32),$1 has no score yet)
}
alias -l behind {
if ($isid) {
var %d = 1, %w = @top5, %n = $$1
window -hn %w
clear %w
while $hget(scores,%d).item {
aline %w $v1 $hget(scores,$v1)
inc %d
}
filter -cteuww 2 32 %w %w
return $iif($gettok($line(%w,$calc($fline(%w,%n *,1) - 1)),1,32) != 3,$v1,first)
}
}
alias -l first {
if ($isid) {
var %d = 1, %w = @top5
window -hn %w
clear %w
while $hget(scores,%d).item {
aline %w $v1 $hget(scores,$v1)
inc %d
}
filter -cteuww 2 32 %w %w
return $iif($line(%w,1),$gettok($line(%w,2),1,32),error)
}
}
dialog trivia {
title "Trivia"
size -1 -1 136 203
option dbu
tab "Settings", 1, 2 -1 132 201
box "!Strivia Command", 5, 7 52 58 60, tab 1
radio "Op", 6, 16 62 22 10, tab 1
radio "Voice", 7, 16 77 25 10, tab 1
radio "All Users", 8, 16 92 34 10, tab 1
button "Start Trivia", 9, 26 30 37 12, disable tab 1
button "Stop Trivia", 10, 65 30 37 12, disable tab 1
box "Trivia Status", 12, 23 20 83 26, tab 1
text "Owner:", 43, 10 125 19 8, tab 1
edit "", 44, 32 124 74 10, tab 1 read autohs
button "Edit", 45, 109 125 15 8, tab 1
text "Channel:", 46, 10 139 23 8, tab 1
edit "", 47, 32 138 74 10, tab 1 read autohs
button "Edit", 48, 109 139 15 8, tab 1
box "", 49, 7 117 121 35, tab 1
box "Stop After N Wrong", 54, 70 52 58 60, tab 1
radio "5 Questions", 55, 76 60 50 10, tab 1
radio "10 Questions", 56, 76 71 50 10, tab 1
radio "15 Questions", 57, 76 81 50 10, tab 1
radio "20 Questions", 58, 76 91 50 10, tab 1
radio "Unlimited", 59, 76 101 50 10, tab 1
edit "", 60, 10 165 98 10, tab 1
box "Add Missed Question Response", 62, 7 157 121 21, tab 1
button "Add", 61, 109 165 15 8, disable tab 1
tab "Reports", 2
edit "", 50, 7 121 123 10, tab 2 read autohs
list 51, 6 23 123 84, tab 2 sort size hsbar
box "Reported Questions", 52, 4 15 127 94, tab 2
box "Functions", 66, 16 144 98 20, tab 2
button "Clear", 67, 50 152 30 10, disable tab 2
button "Remove", 68, 20 152 30 10, disable tab 2
button "Fix", 22, 80 152 30 10, disable tab 2
box "Problem", 53, 5 113 127 20, tab 2
tab "Questions", 3
list 23, 6 23 123 84, tab 3 sort size hsbar
button "Add *.txt", 24, 7 169 30 10, tab 3
button "Add", 25, 37 169 30 10, tab 3
button "Clear", 26, 97 169 30 10, disable tab 3
button "Remove", 27, 67 169 30 10, disable tab 3
box "Functions", 28, 5 161 124 20, tab 3
box "Questions", 29, 4 15 127 94, tab 3
edit "", 30, 30 136 82 10, tab 3 read autohs
text "Hint 1:", 33, 6 126 18 8, tab 3
edit "", 32, 30 147 82 10, tab 3 read autohs
edit "", 31, 30 125 82 10, tab 3 read autohs
text "Hint 2:", 35, 6 138 18 8, tab 3
text "Answer:", 34, 6 148 22 8, tab 3
box "", 36, 4 109 127 50, tab 3
button "Edit", 37, 113 137 15 8, disable tab 3
button "Edit", 39, 113 148 15 8, disable tab 3
button "Edit", 38, 113 126 15 8, disable tab 3
text "Question:", 40, 6 115 25 8, tab 3
edit "", 41, 30 114 82 10, tab 3 read autohs
button "Edit", 42, 113 115 15 8, disable tab 3
tab "Scores", 4
box "Scores", 13, 6 17 53 155, tab 4
list 14, 9 25 47 144, tab 4 sort size hsbar
edit "", 15, 66 136 59 10, tab 4 read autohs
box "Score", 16, 64 128 64 21, tab 4
button "Edit", 17, 75 78 37 12, disable tab 4
button "Add", 18, 75 38 37 12, tab 4
button "Remove", 19, 75 58 37 12, disable tab 4
button "Clear", 20, 75 98 37 12, disable tab 4
box "Functions", 21, 72 27 44 88, tab 4
button "OK", 11, 48 185 37 12, ok cancel
}
alias trivia {
if ($dialog(trivia)) dialog -x trivia trivia
dialog -m trivia trivia
}
on *:dialog:trivia:*:*:{
var %chan = $hgeT(trivia,chan)
if ($devent == init) {
if ($hget(trivia,wrong) == 5) did -c trivia 55
if ($hget(trivia,wrong) == 10) did -c trivia 56
if ($hget(trivia,wrong) == 15) did -c trivia 57
if ($hget(trivia,wrong) == 20) did -c trivia 58
if ($hget(trivia,wrong) !isnum) did -c trivia 59
if ($hget(reports,1).item) did -e trivia 67
did -a trivia 44 $hget(trivia,owner)
if ($hget(reports)) {
var %asdf = 1
while $hget(reports,%asdf).item {
did -a trivia 51 $gettok($hget(reports,$v1),1,1)
inc %asdf
}
did -z trivia 51
}
did -a trivia 47 $hget(trivia,chan)
if ($hget(questions,1).item) did -e trivia 26
var %s = 1
while $hgeT(questions,%s).item {
did -a trivia 23 $gettok($hget(questions,$v1),1,1)
inc %s
}
did -z trivia 23
if ($hget(trivia,status) == on) did -e trivia 10
else did -e trivia 9
var %x = 1
while $hget(scores,%x).item {
did -a trivia 14 $v1
inc %x
}
did -z trivia 14
if ($hgeT(scores)) did -e trivia 20
if (!$server) did -b trivia 9,10
if ($hget(trivia,strivia) == isvoice) did -c trivia 7
if ($hgeT(trivia,strivia) == isop) did -c trivia 6
if ($hget(trivia,strivia) == ison || !$v1) {
did -c trivia 8
}
}
if ($devent == sclick) {
if ($did == 9) {
if ($hget(trivia,status) != on) {
hadd -m trivia status on
did -b trivia 9
did -e trivia 10
.msg %chan $+(03Trivia has been started by04 $me,03!)
.timertrivnew 1 2 new
}
}
if ($did == 10) {
if ($hget(trivia,status) == on) {
hadd -m trivia status off
hdel trivia answer
hdel trivia time
did -e trivia 9
did -b trivia 10
.timertriv* off
unset %streak*
.msg %chan 03Trivia has been stopped by04 $me $+ 03!
}
}
if ($did == 14 && $diD(trivia,14).seltext != $null) {
did -ra trivia 15 $hget(scores,$did(trivia,14).seltext) Points
did -e trivia 19,17
}
if ($did isnum 6-8) {
if ($did == 6) hadd -m trivia strivia isop
if ($did == 7) hadd -m trivia strivia isvoice
if ($did == 8) hadd -m trivia strivia ison
if ($hget(trivia,wrong) == 5) did -c trivia 55
if ($hget(trivia,wrong) == 10) did -c trivia 56
if ($hget(trivia,wrong) == 15) did -c trivia 57
if ($hget(trivia,wrong) == 20) did -c trivia 58
if ($hget(trivia,wrong) !isnum) did -c trivia 59
}
if ($did == 20) {
var %x = $input(Are you sure you would like to erase all scores?,cy,Clear All Scores)
if (%x == $true) {
hfree scores
did -r trivia 14,15
did -b trivia 20,17,19
.msg %chan 4All03 scores cleared.
}
}
if ($did == 19) {
var %x = $input(Are you sure you would like to erase $did(trivia,14).seltext $+ 's score?,cy,Clear $did(trivia,14).seltext $+ 's Score)
if (%x == $true) {
.msg %chan 04 $+ $did(trivia,14).seltext $+ 's 3score has been 04cleared03.
hdel scores $did(trivia,14).seltext
did -r trivia 15,14
did -b trivia 17,19,20
var %y = 1
while $hgeT(scores,%y).item {
did -a trivia 14 $v1
inc %y
}
did -z trivia 14
if ($hget(scores,1).item) did -e trivia 20
}
}
if ($did == 18) {
var %x = $input(Who would you like to add to the score list?,qe,Adding Score)
if (%x != $null) {
if ($numtok(%x,32) == 1) {
var %y = $input(What would you like %x $+ 's score to be?,qe,%x $+ 's Score)
if (%y isnum && %y) {
hadd -m scores %x %y
.msg %chan 04 $+ %x 03now has 04 $+ %y 03points!
did -r trivia 15,14
did -b trivia 17,19
did -e trivia 20
var %a = 1
while $hget(scores,%a).item {
did -a trivia 14 $v1
inc %a
}
did -z trivia 14
}
else var %test = $input(The score must be a number!,ho,Error!)
}
else var %sos = $input(The name must be one word!,ho,Error!)
}
else var %asdf = $input(You must enter a name!,ho,Error!)
}
if ($did == 17) {
var %x = $input(What would you like $did(trivia,14).seltext $+ 's new score to be?,qe,$did(trivia,14).seltext $+ 's Score,$hget(scores,$did(trivia,14).seltext))
if (%x isnum) {
hadd -m scores $did(trivia,14).seltext %x
.msg %chan 4 $+ $did(trivia,14).seltext 03now has04 %x 03points!
did -ra trivia 15 %x Points
}
else var %asdf = $input(The score must be a number!,ho,Error!)
}
if ($did == 24) dialog $iif($dialog(txt),-v,-m) txt txt
if ($did == 25) {
var %ques = $input(What question would you like to add?,qe,Question)
if (%ques != $null) {
var %hint1 = $input(What would you like the first hint to be?,qe,Hint 1)
if (%hint1 != $null) {
var %hint2 = $input(What would you like the second hint to be?,qe,Hint 2)
if (%hint2 != $null) {
var %ans = $input(What would you like the answer to be?,qe,Answer)
if (%ans != $null) {
did -r trivia 23,30,31,32,41
var %y = 1
var %z = $hget(questions,1).item
while $hget(questions,%y).item {
if ($v1 > %z) var %z = $v1
inc %y
}
hadd -m questions $calc(%z + 1) $+(%ques,$chr(1),%hint1,$chr(1),%hint2,$chr(1),%ans)
did -e trivia 26
var %b = 1
while $hget(questions,%b).item {
did -a trivia 23 $gettok($hget(questions,$v1),1,1)
inc %b
}
did -z trivia 23
did -b trivia 27,37,38,39,42
}
}
}
}
}
if ($did == 26) {
var %x = $input(Are you sure you want to erase all questions?,cy,Remove All Questions)
if (%x == $true) {
did -r trivia 23,30,31,32,41
hfree questions
did -b trivia 26,27,37,38,39,42
}
}
if ($did == 23 && $did(trivia,23).seltext != $null) {
did -e trivia 27,37,38,39,42
var %x = $hget(questions,$hfind(questions,$did(trivia,23).seltext $+ *,1,w).data)
noop $regex($hget(questions,$hfind(questions,$did(trivia,23).seltext $+ *,1,w).data),/^(.+)(.+)(.+)(.+)$/i)
did -ra trivia 31 $regml(2)
did -ra trivia 30 $regml(3)
did -ra trivia 32 $regml(4)
did -ra trivia 41 $regml(1)
}
if ($did == 27) {
var %x = $input(Are you sure you want to delete this question?,cy,Delete Question)
if (%x == $true) {
hdel questions %a $hfind(questions,$did(trivia,23).seltext $+ *,1,w).data
did -r trivia 23,30,31,32,41
var %y = 1
while $hget(questions,%y).item {
did -a trivia 23 $gettok($hget(questions,$v1),1,1)
inc %y
}
did -b trivia 27,37,38,39,42
did -z trivia 23
}
}
if ($did == 38) {
var %x = $input(What would you like hint 1 to be?,qe,Hint 1,$did(trivia,31).text)
if (%x != $null) {
var %y = $hfind(questions,$did(trivia,23).seltext $+ *,1,w).data
var %a = $hget(questions,%y)
var %z = $replace(%a,$gettok(%a,2,1),%x)
hadd -m questions %y %z
did -ra trivia 31 %x
}
}
if ($did == 37) {
var %as = $input(What would you like Hint 2 to be?,qe,Hint 2,$did(trivia,30).text)
if (%as != $null) {
var %y = $hfind(questions,$did(trivia,23).seltext $+ *,1,w).data
var %a = $hget(questions,%y)
var %z = $replace(%a,$gettok(%a,3,1),%as)
hadd -m questions %y %z
did -ra trivia 30 %as
}
}
if ($did == 39) {
var %sa = $input(What would you like the answer to be?,qe,Answer,$did(trivia,32).text)
if (%sa != $null) {
var %y = $hfind(questions,$did(trivia,23).seltext $+ *,1,w).data
var %a = $hget(questions,%y)
var %z = $replace(%a,$gettok(%a,4,1),%sa)
hadd -m questions %y %z
did -ra trivia 32 %sa
}
}
if ($did == 42) {
var %sas = $input(What would you like to rename the question as?,qe,Question,$did(trivia,41).text)
if (%sas != $null) {
var %y = $hfind(questions,$did(trivia,23).seltext $+ *,1,w).data
var %a = $hget(questions,%y)
var %z = $replace(%a,$gettok(%a,1,1),%sas)
hadd -m questions %y %z
did -ra trivia 41 %sas
did -r trivia 23
var %lmn = 1
while $hget(questions,%lmn).item {
did -a trivia 23 $gettok($hget(questions,$v1),1,1)
inc %lmn
}
did -c trivia 23 $didwm(trivia,23,%sas $+ *)
did -z trivia 23
}
}
if ($did == 45) {
var %x = $input(Who would you like to set as the owner?,qe,Owner,$hget(trivia,owner))
if (%x != $null) {
hadd -m trivia owner %x
did -ra trivia 44 %x
}
}
if ($did == 48) {
var %x = $input(What would you like to set as the trivia channel?,qe,Trivia Channel,$hget(trivia,chan))
if (%x != $null) {
if ($left(%x,1) == $chr(35)) {
hadd -m trivia chan %x
did -ra trivia 47 %x
}
else var %y = $input(The channel must begin with $chr(35),ho,Error!)
}
}
if ($did == 51 && $did(trivia,51).seltext != $null) {
did -ra trivia 50 $gettok($hget(reports,$hfind(reports,$did(trivia,51).seltext $+ *,1,w).data),2,1)
did -e trivia 68,22
}
if ($did == 22) {
did -c trivia 3
did -c trivia 23 $didwm(trivia,23,$did(trivia,51).seltext $+ *)
var %x = $hget(questions,$hfind(questions,$did(trivia,23).seltext $+ *,1,w).data)
did -ra trivia 31 $gettok(%x,2,1)
did -ra trivia 30 $gettok(%x,3,1)
did -ra trivia 32 $gettok(%x,4,1)
did -ra trivia 41 $gettok(%x,1,1)
did -e trivia 27,37,38,39,42
}
if ($did == 67) {
var %x = $input(Are you sure you would like to delete all reports?,cy,Erase All Reports)
if (%x == $true) {
did -r trivia 51,50
hfree reports
}
}
if ($did == 68) {
var %x = $input(Are you sure you would like to remove this report?,cy,Remove Report)
if (%x == $true) {
did -b trivia 22,67,68
hdel reports $hfind(reports,$did(trivia,51).seltext $+ *,1,w).data
var %x = 1
did -r trivia 51,50
while $hget(reports,%x).item {
did -a trivia 51 $gettok($hget(reports,$v1),1,1)
inc %x
}
did -z trivia 51
if ($hget(reports,1).data) did -e trivia 67
}
}
if ($did isnum 55-58) {
hadd -m trivia wrong $gettok($did(trivia,$did),1,32)
if ($hget(trivia,strivia) == ison) did -c trivia 8
if ($hget(trivia,strivia) == isvoice) did -c trivia 7
if ($hgeT(trivia,strivia) == isop) did -c trivia 6
}
if ($did == 59) {
hadd -m trivia wrong none
if ($hget(trivia,strivia) == ison) did -c trivia 8
if ($hget(trivia,strivia) == isvoice) did -c trivia 7
if ($hgeT(trivia,strivia) == isop) did -c trivia 6
}
if ($did == 61) {
write missed.txt $did(trivia,60).text
did -r trivia 60
did -b trivia 61
var %x = $input(Missed Question Response Added!,io,Response Added)
}
}
if ($devent == edit && $did == 60) {
if ($did(trivia,60).text != $null) did -e trivia 61
else did -b trivia 61
}
}
alias -l hash {
var %del = $$input(What delimeter seperates the question from the answer?,qe,Delimeter)
var %x = 1
unset %ques %ans
while $read($qt($$1-),%x) {
var %ques = $gettok($v1,1,%del)
var %ans = $gettok($v1,2,%del)
var %y = 1
unset %hint1 %hint2
while $gettok(%ans,%y,32) {
var %hint1 = $addtok(%hint1,$chr(32) $+ $replace($v1,a,_,b,_,c,_,d,_,e,_,f,_,g,_,h,_,i,_,j,_,k,_,l,_,m,_,n,_,o,_,p,_,q,_,r,_,s,_,t,_,u,_,v,_,w,_,x,_,y,_,z,_,1,_,2,_,3,_,4,_,5,_,6,_,7,_,8,_,9,_,0,_),32)
var %hint2 = $addtok(%hint2,$chr(32) $+ $left($v1,1) $+ $replace($mid($v1,2),a,_,b,_,c,_,d,_,e,_,f,_,g,_,h,_,i,_,j,_,k,_,l,_,m,_,n,_,o,_,p,_,q,_,r,_,s,_,t,_,u,_,v,_,w,_,x,_,y,_,z,_,1,_,2,_,3,_,4,_,5,_,6,_,7,_,8,_,9,_,0,_),32)
inc %y
}
var %z = 1
while $hget(questions,%z).item {
inc %z
}
hadd -m questions $calc(%z + 1) $+(%ques,$chr(1),%hint1,$chr(1),%hint2,$chr(1),%ans)
inc %x
}
did -r trivia 23
var %b = 1
while $hget(questions,%b).item {
did -a trivia 23 $gettok($hget(questions,$v1),1,1)
inc %b
}
did -z trivia 23
did -e trivia 26
did -b trivia 27,38,37,39,42
}
dialog -l txt {
title "Add *.txt"
size -1 -1 101 58
option dbu
button "...", 1, 84 6 11 10
edit "", 2, 7 6 74 10, autohs
radio "Question|Answer", 3, 7 30 53 10
radio "Question|Hint1|Hint2|Answer", 4, 7 20 84 10
button "OK", 5, 20 44 28 10, disable ok
button "Cancel", 6, 53 44 28 10, cancel
}
on *:dialog:txt:*:*:{
if ($devent == sclick) {
if ($did == 1) {
:a
var %x = $$sfile($mircdir $+ *.txt,Select a .txt file,Select)
if ($right(%x,4) != .txt) {
var %y = $input(Please select a .txt file!,ho,Error!)
goto a
}
else did -ra txt 2 %x
if (($did(txt,3).state == 1 || $did(txt,4).state == 1) && $right($did(txt,2),4) == .txt) {
did -e txt 5
}
else did -b txt 5
}
if ($did == 3 || $did == 4) {
if (($did(txt,3).state == 1 || $did(txt,4).state == 1) && $right($did(txt,2),4) == .txt) {
did -e txt 5
}
else did -b txt 5
}
if ($did == 5) {
if ($isfile($did(txt,2))) {
if ($did(txt,3).state == 1) {
hash $did(txt,2)
}
elseif ($did(txt,4).state == 1) {
addtxt $did(txt,2)
}
}
else var %x = $input($did(txt,2) isn't a file!,ho,Error!)
}
}
if ($devent == edit) {
if (($did(txt,3).state == 1 || $did(txt,4).state == 1) && $right($did(txt,2),4) == .txt) {
did -e txt 5
}
else did -b txt 5
}
}
alias -l addtxt {
var %as = $$input(What is the delimeter that seperates the hints $+ $chr(44) questions $+ $chr(44) and answers?,qe,Delimeter)
if (%as isnum) {
var %x = $qt($$1-)
did -r trivia 23,30,31,32,41
var %y = 1
var %z = $hget(questions,1).item
while $hget(questions,%y).item {
if ($v1 > %z) var %z = $v1
inc %y
}
var %a = 1
while $read(%x,%a) {
hadd -m questions $calc(%z + 1) $replace($v1,$chr(%as),$chr(1))
inc %z
inc %a
}
var %b = 1
while $hget(questions,%b).item {
did -a trivia 23 $gettok($hget(questions,$v1),1,1)
inc %b
}
did -z trivia 23
did -e trivia 26
did -b trivia 27,38,37,39,42
}
else var %sumthin = $input(The delimeter must be a number!,ho,Error!)
untuk script Clan bisa anda donwload di sini
Spoiler untuk Download :
untuk script dasar Server (jika anda ingin membuat sendiri)
Spoiler untuk Download :
Sumber : http://forumdota.com/bot-channel-dota/