Advertisement
TUSK3N

Untitled

Jun 8th, 2016
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 149.80 KB | None | 0 0
  1. ;For newer versions or contact info check http://tatarize.nfshost.com/
  2.  
  3. ;I assert no copyright, patent, trademark, or trade secret with regard to this document/script.
  4. ;Please alter, modify, butcher, edit, republish, or use this script in any way you see fit,
  5. ;with or without this text, in part or in full, without need for permission beforehand.
  6.  
  7.  
  8. alias trivia.version { return 3.7 }
  9. alias trivia.name { return Tat's Trivia Bot }
  10. alias trivia.web { return http://tatarize.nfshost.com/ }
  11. ;########################################################
  12. ;# Direct IRC interactions. #
  13. ;########################################################
  14. on *:START: { trivia.init }
  15. on *:LOAD: {
  16. init.load
  17. }
  18. on *:INVITE:*: {
  19. if ($trivia.turnedoff) { return }
  20. if ($trivchan) { join $chan }
  21. }
  22. on *:JOIN:*: {
  23. if ($trivia.turnedoff) { return }
  24. inc -u5 %trivia.netsplit
  25. set -u3 %ident $chan
  26. if ((%trivia.netsplit >= 3) || (!$trivchan) || (!$getset(status,bot))) { return }
  27. if (($nick != $me) && (!$isdis(31))) { if ($getset(status,onjoin)) { inform $msg.trivia.onjoin } }
  28. elseif ($getset(status,autostart) == 1) { trivia }
  29. award join $nick
  30. }
  31. on *:INPUT:#: {
  32. if ($trivia.turnedoff) { return }
  33. if ((!$trivchan) || (/* iswm $1-)) { return }
  34. set -u3 %ident $chan
  35. if ($pre $+ * iswm $strip($1-)) { processcommand $strip($1-) }
  36. elseif ($question.on) { processguess $1- }
  37. }
  38. on *:ctcpreply:ping*:{
  39. if ($trivia.turnedoff) { return }
  40. if ($isdis(17)) return
  41. if (($eval(% $+ ping. $+ $nick,2)) && ($2 isnum)) {
  42. set -u3 %ident $eval(% $+ pingchan. $+ $nick,2)
  43. scid $eval(% $+ pingcid. $+ $nick) inform $msg.ping.reply
  44. unset % $+ ping. $+ $nick
  45. unset % $+ pingchan. $+ $nick
  46. unset % $+ pingcid. $+ $nick
  47. $eval(set -u $+ $slag(ping) % $+ pingantispam. $+ $nick 1,2)
  48. }
  49. }
  50. on *:TEXT:*:#:{
  51. if ($trivia.turnedoff) { return }
  52. set -u3 %ident $chan
  53. if (!$trivchan) return
  54. if ($pre $+ * iswm $strip($1-)) { processcommand $strip($1-) }
  55. else if (($question.on) && ($left($1,1) != /)) { processguess $1- }
  56. }
  57. on *:TEXT:*:?: {
  58. if ($trivia.turnedoff) { return }
  59. set -u3 %ident $chan
  60. if (($pre $+ $gtok(29) $+ * iswm $strip($1-)) || ($pre $+ $gtok(30) $+ * iswm $strip($1-))) { processcommand $strip($1-) }
  61. }
  62. ;########################################################
  63. ;# Channel setup and related checks. #
  64. ;########################################################
  65. alias trivchan {
  66. var %i = 1
  67. while ($tchan(%i)) {
  68. if (($tchan(%i,3) iswm $me) && ($tchan(%i,2) iswm $ifd($network,irc))) {
  69. if (($tchan(%i) iswm $chan) || ((!$chan) && ($me ison $tchan(%i)))) {
  70. if ($1) return $tchan(%i)
  71. return %i
  72. }
  73. }
  74. inc %i
  75. }
  76. }
  77. alias tchan { return $ifd($gettok($getset(chan,$1), $ifd($2,1), 59),$iif($2 isnum 2-3, *)) }
  78. ;########################################################
  79. ;# Menubar and submenu functions. #
  80. ;########################################################
  81. menu channel,menubar {
  82. Trivia
  83. .$showon(Trivia Options):{ if (!$dialog(trivset)) { dialog -m trivset trivset } }
  84. .$showon(Start Trivia)
  85. ..$showon(Standard):{ $trivia }
  86. ..$showon(Unlimited Game):{ $trivia(unlimited) }
  87. ..$showon(Team Game):{ $trivia(team) }
  88. ..$showon(Theme Game)
  89. ...$submenu($theme.submenu($1))
  90. ..$showon(Specify round):{ $trivia($$?="How many question in the trivia round?") }
  91. .$showon(Stop Trivia):{ strivia }
  92. .$showon(Set Channel):{ chan.add $$chan }
  93. .$showon(-)
  94. .$showon(Features)
  95. ..$showon(Build Scores HTML):{ htmlbuild }
  96. ..$showon(Process HTML Commands):{ htmltrigger }
  97. ..$showon(HTML Options):{ if (!$dialog(trivbuild)) { dialog -m trivbuild trivbuild } }
  98. ..$showon(Themes Setup): { if (!$dialog(triviatheme)) { dialog -m triviatheme triviatheme } }
  99. ..$showon(Ranks Setup): { if (!$dialog(trivrank)) { dialog -m trivrank trivrank } }
  100. }
  101. alias theme.submenu {
  102. if (($1 == begin) || ($1 == end)) return -
  103. if ($getset(triviamode $+ $1, name)) return $getset(triviamode $+ $1, name) $+ : /trivia $getset(triviamode $+ $1, name)
  104. }
  105. menu menubar {
  106. Trivia
  107. .$showon(Force Question):{ ask }
  108. .$showon(Scores)
  109. ..$showon(Scores):{ if (!$dialog(triviascores)) { dialog -m triviascores triviascores } }
  110. ..$showon(Give Points): { trivia.credit $$?="Credit whom?" $$?="How many points do you wish to give, -# to remove score" }
  111. .$showon(Echo)
  112. ..$showon(Records):{ tsay $msg.trivia.records }
  113. ..$showon(HoF):{ tsay $msg.trivia.hof }
  114. ..$showon(Repeat):{ tsay $msg.question.current }
  115. ..$showon(Hint):{ tsay $msg.hint.hint }
  116. .$showon(Open)
  117. ..$showon(Questions):{ if $isfile($qfile(1)) { run $qfile(1) } }
  118. ..$showon(Additions):{ if $isfile(" $+ $triv(dir) $+ / $+ $triv(additions) $+ ") { run " $+ $triv(dir) $+ / $+ $triv(additions) $+ " } }
  119. ..$showon(Report):{ if $isfile(" $+ $triv(dir) $+ / $+ $triv(report) $+ ") { run " $+ $triv(dir) $+ / $+ $triv(report) $+ " } }
  120. .$showon(-)
  121. .Trivia Bot is [ $trivon ]
  122. ..$showon([ $trivdisflip ]) $+ :{ setset status bot $iif($getset(status,bot) == 1,0,1) }
  123. ..[ $trivoffflip ] $+ :{ setset status botstate $iif($getset(status,botstate) == 1,0,1) }
  124. .-
  125. .Trivia Unload:{ if ($?!="Really Unload?") { unload -rs $script } }
  126. }
  127. menu nicklist {
  128. $showon(Trivia)
  129. .$showon(Control)
  130. ..$showon(Ban):{ tban $$1 }
  131. ..$showon(Unban):{ tunban $$1 }
  132. .$showon(Add as Friend): { triviafriend.add $address($$1,7) }
  133. .$showon(Credit)
  134. ..$showon(Award)
  135. ...$showon(1): { trivia.credit $$1 1 }
  136. ...$showon(5): { trivia.credit $$1 5 }
  137. ...$showon(10): { trivia.credit $$1 10 }
  138. ..$showon(Deduct)
  139. ...$showon(1): { trivia.credit $$1 -1 }
  140. ...$showon(5): { trivia.credit $$1 -5 }
  141. ...$showon(10): { trivia.credit $$1 -10 }
  142. ..$showon(Input Amount): { trivia.credit $$1 $$?="How many points do you wish to give, -# to remove score" }
  143. }
  144. alias showon { if ($getset(status,botstate) != 1) return $1- }
  145. alias trivia.turnedoff { if ($getset(status,botstate) == 1) return $true }
  146. ;########################################################
  147. ;# Menubar related, aliases. #
  148. ;########################################################
  149. alias trivia.team.credit {
  150. if (($team) && ($2 isnum)) {
  151. var %list $get.showteams($1)
  152. var %amount $2
  153. var %j $numtok(%list,32)
  154. while (%j >= 1) {
  155. var %name.teammate $gettok(%list,%j,32)
  156. setvar %name.teammate score $calc($getvar(%name.teammate,score) + %amount)
  157. process.scores.time %name.teammate %amount
  158. dec %j
  159. }
  160. }
  161. }
  162. alias trivia.credit {
  163. if ($2 isnum) {
  164. setvar $1 score $calc($getvar($1,score) + $2)
  165. process.scores.time $1 $2
  166. tsay $iif($2 >= 0,$msg.trivia.awarded($1,$2),$msg.trivia.deducted($1,$2))
  167. }
  168. }
  169. alias -l trivon { return $iif($getset(status,botstate),Off,$iif($getset(status,bot),$iif($trivia.paused,Paused,Enabled), Disabled)) }
  170. alias -l trivdisflip { return $iif($getset(status,bot),Disable,Enable) }
  171. alias -l trivoffflip { return $iif($getset(status,botstate),On,Off) }
  172. alias -l trivia.chan { return $iif($trivchan, Yes, No) }
  173. alias -l trivia.dir { return $iif($isdir(" $+ $triv(dir) $+ "), Yes, No) }
  174. alias -l trivia.file { return $iif($isfile($qfile(1)), Yes, No) }
  175. alias -l trivia.onoff { return $iif($trivia.on, On, Off) }
  176. alias -l team.onoff { return $iif($team, On, Off) }
  177. ;########################################################
  178. ;# Init aliases. #
  179. ;########################################################
  180. alias -l nset { if ($getset($1, $2) == $null) { setset $1- } }
  181. alias init.load {
  182. nset award 1 1 1 1 50 0 gives * a high five for getting ^ wins! Way to go * !
  183. nset award 2 1 1 1 100 0 gives * a large pizza for getting ^ wins! Way to go * !
  184. nset award 3 1 1 1 150 0 ^ wins... I am not worthy...
  185. nset award 4 2 1 1 3 0 hands * a cold beer for getting the last ^ questions!
  186. nset award 5 2 1 1 5 0 hands * 6-pack of icy beers for getting the last ^ questions!
  187. nset award 6 2 1 1 10 0 gives * keg of beer for kicking everybodies asses! ^ questions!
  188. nset award 7 2 1 1 15 0 bows before * a trivia god...
  189. nset award 8 2 2 2 3 5 You're on fire!
  190. nset award 9 3 4 5 1.5 0 Autoban based on speed.
  191. nset award 10 4 3 5 120 0 Autoban based on Words per minute.
  192. nset award 11 7 0 2 0 0 * has moved up in rank: ^
  193. nset award 12 8 0 2 0 0 *, congratulations on your promotion to: ^
  194. }
  195. alias trivia.init {
  196. nset status bot 1 | nset status echo 0 | nset status autohint 1 | nset status showanswer 1 | nset status cross 1
  197. nset status number 30 | nset status hintpause 1 | nset trivia additions additions.txt
  198. nset color 1 $fixer($rand(1,15)) | nset color 2 $fixer($rand(1,15)) | nset trivia default 10 | nset trivia dteam 5 | nset color on 1
  199. nset trivia delimiter * | nset trivia tnaoff 5 | nset trivia hintpause 5 | nset trivia perchint 30 | nset trivia numhint 1
  200. nset trivia ppq 1 | nset trivia dph 0 | nset lag answered 10 | nset lag hint 10 | nset lag start 15 | nset lag timed 15 | nset lag ping 10
  201. nset lag betweenhint 10 | nset lag timedout 60 | nset lag hintallow 10 | nset trivia dir $ifd($nofile($findfile($mircdir,$triv(questions), 1)),$mircdir)
  202. nset trivia report report.txt | nset trivia reset 1000 | nset team 0victory The *t1 and the *t2 tied | nset team 1 'Team 1's
  203. nset team 1victory The *t1 beat the *t2 | nset team 2 'Team 2's | nset team 2victory The *t2 beat the *t1 | nset team JoinBefore 2
  204. nset team JoinBeforeOn 1 | nset status nodecheater 1
  205. varcolors
  206. }
  207. alias -l trivia.fail {
  208. var %failedtriviafail = 0
  209. if ($version < 5.91) {
  210. echo Please use mIRC 5.91 or later.
  211. var %failedtriviafai = 1
  212. }
  213. if (!$server) {
  214. echo Please connect to a server before attempting to use $msg.trivia.version
  215. var %failedtriviafai = 1
  216. }
  217. if ($getset(status,bot) == 0) {
  218. echo The trivia bot is off. Commands, Trivia, Disabled to reenable.
  219. var %failedtriviafai = 1
  220. }
  221. if ($isdir(" $+ $triv(dir) $+ ") == $false) {
  222. echo The trivia directory, $triv(dir) $+ , is invalid.
  223. var %failedtriviafai = 1
  224. }
  225. if ($triv(dir) == $null) {
  226. echo The trivia directory setting is blank, please set it to the desired directory.
  227. var %failedtriviafai = 1
  228. }
  229. if ($numl <= 0) {
  230. echo There appears to be no questions within the question file(s).
  231. var %failedtriviafai = 1
  232. }
  233. return %failedtriviafai
  234. }
  235. alias get.find { if ($qfind($1-)) return $qfind($1-) }
  236. ;########################################################
  237. ;# Trivia command, related aliases. #
  238. ;########################################################
  239. alias -l ifd { return $iif($1, $1, $2) }
  240. ;########################################################
  241. ;# Command processing. #
  242. ;########################################################
  243. alias pre { return $ifd(%command-prefix, !) }
  244. alias commandtokens { return state;disable;enable;op;trivia;strivia;pause;resume;theme;themes;stats;stat;won;hof;top10;hofstreak;row;streak;hoftime;hoffast;hofwpm;wpm;server;record;records;champ;version;web;add;report;ping;triviaping;help;join;showteams;roundscores;answer;next;hint;!hint;words;last;vowels;repeat;hofscoreday;hoftimeday;hofstreakday;hofwpmday;hofscoreweek;hoftimeweek;hofstreakweek;hofwpmweek;hofscoremonth;hoftimemonth;hofstreakmonth;hofwpmmonth;hofscoreyear;hoftimeyear;hofstreakyear;hofwpmyear;rank;promotion }
  245. alias optokens { return enable;disable;ban;unban;banned;ask;add;find;team }
  246. alias stattokens { return score;time;streak;wpm }
  247. alias timetokens { return day;week;month;year;total }
  248. alias starttokens { return Unlimited;team }
  249. alias ctok { return $findtok($eval($ $+ $gettok(commandtokens;optokens;stattokens;timetokens;starttokens,$ifd($2,1),59),2),$untrans($1),1,59) }
  250. alias gtok { return $trivtran($gettok($eval($ $+ $gettok(commandtokens;optokens;stattokens;timetokens;starttokens,$ifd($2,1),59),2),$1,59)) }
  251. alias rtok { return $gettok($eval($ $+ $gettok(commandtokens;optokens;stattokens;timetokens;starttokens,$ifd($2,1),59),2),$1,59) }
  252. alias -l processcommand {
  253. var %command = $right($1,$calc(-1 * $len($pre)))
  254. var %ctok = $ctok(%command)
  255. award command %command $2-
  256.  
  257. if (!%ctok) { return }
  258. if (%ctok == 1) { inform $msg.trivia.state }
  259. if (%ctok == 2) { opcommand disable $2- }
  260. if (%ctok == 3) { opcommand enable $2- }
  261. if (%ctok == 4) { opcommand $2- }
  262. if (($getset(status,bot) == 0) || ($trivia.banned)) { return }
  263. if (%ctok == 5) { if (!$isdis(28)) { trivia $2- } }
  264. if (%ctok == 6) { if ((!$isdis(29)) && ($trivia.on) && ((!$team) || ($nick isop $iden))) { strivia $iden $nick } }
  265. if (%ctok == 8) { if (!$isdis(5)) { trivia.pause 1 } }
  266. if (%ctok == 7) { if ((!$trivia.paused) && (!$isdis(5))) { trivia.pause } }
  267. if (%ctok isnum 9-10) { if (!$isdis(18)) { inform $msg.trivia.themes } }
  268. if (%ctok isnum 11-13) { processcommand.stats $ifd($2,$nick) $ifd($3,$unit.default) }
  269. if (%ctok isnum 14-15) { if (!$isdis(8)) { processcommand.hof $ifd($2,score) $ifd($3,$unit.default) } }
  270. if (%ctok isnum 16-18) { if (!$isdis(10)) { processcommand.hof streak $unit.default } }
  271. if (%ctok isnum 19-20) { if (!$isdis(9)) { processcommand.hof time $unit.default } }
  272. if (%ctok isnum 21-22) { if (!$isdis(11)) { processcommand.hof wpm $unit.default } }
  273. if (%ctok isnum 45-60) {
  274. var %regmatch = / $+ (?: $+ $gtok(14) $+ $chr(124) $+ $rtok(14) $+ ) $+ \s?( $+ $gtok(1,3) $+ $chr(124) $+ $gtok(2,3) $+ $chr(124) $+ $gtok(3,3) $+ $chr(124) $+ $gtok(4,3) $+ $chr(124) $+ $rtok(1,3) $+ $chr(124) $+ $rtok(2,3) $+ $chr(124) $+ $rtok(3,3) $+ $chr(124) $+ $rtok(4,3) $+ )\s?( $+ $gtok(1,4) $+ $chr(124) $+ $gtok(2,4) $+ $chr(124) $+ $gtok(3,4) $+ $chr(124) $+ $gtok(4,4) $+ $chr(124) $+ $rtok(1,4) $+ $chr(124) $+ $rtok(2,4) $+ $chr(124) $+ $rtok(3,4) $+ $chr(124) $+ $rtok(4,4) $+ )/
  275. if ($regex(%command, %regmatch)) processcommand.hof $iif($regml(1),score) $ifd($regml(2),$unit.default)
  276. }
  277. if (%ctok isnum 61-62) { if (!$isdis(30)) inform $msg.trivia.rank($ifd($2,$nick)) }
  278. if (%ctok == 23) { inform $server }
  279. if (%ctok isnum 24-25) { if (!$isdis(12)) { inform $msg.trivia.records } }
  280. if (%ctok == 26) { inform $msg.trivia.champ }
  281. if (%ctok == 27) { inform $msg.trivia.version }
  282. if (%ctok == 28) { inform $msg.trivia.web }
  283. if (%ctok isnum 29-30) { if (!$isdis(19)) { trivia.report %ctok $2- } }
  284. if (%ctok isnum 31-32) { if (!$isdis(17)) { do.ping } }
  285. if (%ctok == 33) { if (!$isdis(32)) givehelp $2- }
  286. if (%ctok == 34) { if (($team) && (!$isdis(33))) { $setteam($nick, $2) } }
  287. if (%ctok == 35) { if ($team) { inform $msg.trivia.showteams } }
  288. if (%ctok == 36) { inform $msg.trivia.roundscores }
  289. if (%ctok == 37) { if (($thget(answer)) && (!$isdis(16))) { inform $msg.question.answer } }
  290. if ((!$question.on) || ($trivia.paused)) { return }
  291. if (%ctok == 38) { if (($calc($question.time * 2) >= $lag(timedout)) && (!$isdis(15))) { trivx $chan } }
  292. if (%ctok isnum 39-43) {
  293. if (($question.time >= $lag(hintallow))) {
  294. if (($getset(trivia, hintpause)) && ($getset(status, hintpause))) { hadd -u $+ $triv(hintpause) Trivia $+ $idenn Temp. $+ hinted. $+ $nick 1 }
  295. if (%ctok isnum 39-40) { if (!$isdis(22)) { give.hint $iden } }
  296. if (%ctok == 41) { if (!$isdis(25)) { inform $msg.hint.words } }
  297. if (%ctok == 42) { if (!$isdis(24)) { inform $msg.hint.last } }
  298. if (%ctok == 43) { if (!$isdis(23)) { inform $msg.hint.vowels } }
  299. }
  300. }
  301. if (%ctok == 44) { if (!$isdis(26)) { inform $$thget(trivq.say) } }
  302. }
  303. alias processcommand.hof {
  304. if (!$2) { var %unit = 5 }
  305. else { var %unit = $ctok($2,4) }
  306. var %by = $ctok($1,3)
  307. if ($getset(hide,$rtok(%by,3))) { return }
  308. if ((!%by) || (!%unit)) { inform $msg.trivia.hof.error | return }
  309. inform $msg.trivia.topstats($rtok(%by,3),$rtok(%unit,4))
  310. }
  311. alias -l processcommand.stats {
  312. if (!$2) { var %unit = 5 }
  313. else { var %unit = $ctok($2,4) }
  314. if (!%unit) { inform $msg.trivia.stats.error | return }
  315. if ($1 isnum) { sort score $unit.set(%unit) }
  316. if ($1 isnum 1 - $hof.size) { inform $msg.trivia.stats($hof($1,1),$unit.set(%unit)) }
  317. else { inform $msg.trivia.stats($iif($1,$1,$nick),$unit.set(%unit)) }
  318. }
  319. alias unit.default { return $rtok($ifd($getset(status,scoreby),5),4) }
  320. alias unit.set { return $iif($rtok($1,4) != total,$rtok($1,4)) }
  321. alias unit.prefix { return $iif($ifd($1,$unit.default) != total, $ifd($1,$unit.default)) }
  322. ;########################################################
  323. ;# !Op command structure. #
  324. ;########################################################
  325. alias -l opcommand {
  326. var %otok = $ctok($1,2)
  327. if ($isdis(6)) { return }
  328. if ((%otok == 1) && (!$isdis(21)) && ($getset(status,bot) == 0) && ((!$2) || ($2 == $me))) {
  329. setset status bot 1
  330. tsay $msg.trivia.enabled
  331. }
  332. if ((%otok == 2) && (!$isdis(21)) && ($getset(status,bot) == 1) && ((!$2) || ($2 == $me))) {
  333. setset status bot 0
  334. tsay $msg.trivia.disabled
  335. strivia $iden $nick
  336. }
  337. if ((%otok == 3) && (!$isdis(20))) {
  338. if (!$2) { inform $msg.trivia.error.ban }
  339. else {
  340. tban $2
  341. inform $msg.trivia.op.ban
  342. }
  343. }
  344. if ((%otok == 4) && (!$isdis(7))) {
  345. if (!$2) { inform $msg.trivia.error.unban }
  346. else {
  347. tunban $2
  348. inform $msg.trivia.op.unban
  349. }
  350. }
  351. if (%otok == 5) { inform $msg.trivia.banlist }
  352. if ((%otok == 6) && (!$isdis(14))) {
  353. if ($2 !isnum) { inform $msg.trivia.error.badnum }
  354. else {
  355. ask $2
  356. inform $msg.trivia.op.ask
  357. }
  358. }
  359. if ((%otok == 7) && (!$isdis(27))) {
  360. if (!$2) { inform $msg.trivia.error.noquestion }
  361. elseif ($triv(delimiter) !isin $2-) { inform $msg.trivia.error.nodelim }
  362. else {
  363. add $2-
  364. inform $msg.trivia.op.added
  365. }
  366. }
  367. if ((%otok == 8) && (!$isdis(13))) {
  368. if (!$2) { inform $msg.trivia.error.nosearch }
  369. else inform $msg.trivia.op.find($2-)
  370. }
  371. if ((%otok == 9) && (!$isdis(34))) {
  372. if ($2 ison $chan) {
  373. if ($validteam($3)) { $setteam($2, $3) }
  374. else { inform $msg.trivia.error.numberrequired($2) }
  375. }
  376. else { inform $msg.trivia.error.playerrequired }
  377. }
  378. }
  379. ;########################################################
  380. ;# Trivia ON. #
  381. ;########################################################
  382. alias trivia {
  383. if (($trivia.banned) || ($trivia.on) || (!$trivchan)) { return }
  384. if ($trivia.paused) {
  385. tsay $msg.trivia.pause
  386. return
  387. }
  388. trivia.flush
  389. if ($trivia.fail) return
  390. if ($hget(Trivia $+ $idenn)) { hfree Trivia $+ $idenn }
  391. hmake Trivia $+ $idenn 20
  392. if (($hget(Asked $+ $idenn)) && ($getset(status,keepask))) { hfree Asked $+ $idenn }
  393. if (!$hget(Asked $+ $idenn)) hmake Asked $+ $idenn 50
  394. trivia.defaultgame
  395. thset STime $time $date
  396. thset SUser $iif($nick,$nick,$me)
  397. if (($getset(Trivia,odefault) == unlimited) || (($ctok($1,5) == 1) && (!$isdis(2))) ) { thset Max Unlimited }
  398. if (($getset(Trivia,odefault) == team) || (($ctok($1,5) == 2) && (!$isdis(3)))) { thset team 1 }
  399. if (($1 isnum 1 - $numl) && (!$isdis(1))) { thset Max $int($1) }
  400. if ($1 == pi) { thset Max 3.14159265358979323846 }
  401. if ($1 == e) { thset Max 2.718281828459045 }
  402. if (!$isdis(18)) { trivia.themecheck $1- }
  403. if ($thget(team)) { trivia.teammode $2 }
  404. tsay $msg.trivia.started
  405. .timerq $+ $idenn 1 $ifd($lag(start),0) trivq $chan
  406. award roundstart $thget(Max)
  407. }
  408. ;########################################################
  409. ;# Trivia OFF. #
  410. ;########################################################
  411. alias strivia {
  412. set -u3 %ident $1
  413. if ($team) { strivia.teammode }
  414. else if ($getset(status,bot)) {
  415. if ($getset(Var $+ $idenn, Lastwinner) == $2) { setset Var $+ $idenn Row 0 }
  416. tsay $msg.trivia.stopped
  417. if ($thget(Current) >= 10) { tsay $strivia.end($triv(Record)) }
  418. award RoundStop $thget(Current)
  419. }
  420. trivia.flush
  421. }
  422. alias strivia.end {
  423. if ($1 == 1) { return $msg.trivia.hof }
  424. elseif ($1 == 2) { return $msg.trivia.topstats(streak) }
  425. elseif ($1 == 3) { return $msg.trivia.topstats(time) }
  426. elseif ($1 == 4) { return $msg.trivia.topstats(wpm) }
  427. elseif ($1 == 5) { return $msg.trivia.champ }
  428. elseif ($1 == 6) { return $msg.trivia.web }
  429. elseif ($1 == 7) { return $msg.trivia.roundscores }
  430. return $msg.trivia.records
  431. }
  432. ;########################################################
  433. ;# STATUS CLEARING. #
  434. ;########################################################
  435. alias -l trivia.flush {
  436. if (!$getset(status,keepask)) if ($hget(Asked $+ $idenn)) { hfree Asked $+ $idenn }
  437. if ($hget(Trivia $+ $idenn)) { hfree Trivia $+ $idenn }
  438. trivia.timersoff
  439. unset %cache.nick
  440. unset %cache.line
  441. }
  442. alias -l trivia.timersoff {
  443. .timer* $+ $idenn off
  444. }
  445. ;########################################################
  446. ;# DEFAULT setup. #
  447. ;########################################################
  448. alias trivia.defaultgame {
  449. thset File questions.txt
  450. thset Scores $scoresfil
  451. if ($tchan($trivchan, 4)) { thset Scores $tchan($trivchan, 4) }
  452. if ($tchan($trivchan, 5)) {
  453. thset File
  454. var %i = 5
  455. while ($tchan($trivchan, %i)) {
  456. thset File $thget(file) $+ ; $+ $tchan($trivchan, %i)
  457. inc %i
  458. }
  459. }
  460. thset Max $triv(default)
  461. thset PPQ $iif($getset(Trivia,PPQ) != $null,$getset(Trivia,PPQ),1)
  462. thset DPH $iif($getset(Trivia,DPH) != $null,$getset(Trivia,DPH),0)
  463. thset RRS $iif($getset(Status,RRS) != $null,$getset(Status,RRS),0)
  464. thset guess $iif($getset(trivia,limitguess) != $null,$getset(trivia,limitguess),0)
  465. thset lagstart $iif($getset(lag, start) != $null, $getset(lag, start), 0)
  466. thset laganswered $iif($getset(lag, answered) != $null, $getset(lag, answered), 0)
  467. thset lagtimedout $iif($getset(lag, timedout) != $null, $getset(lag, timedout), 0)
  468. thset laghint $iif($getset(lag, hint) != $null, $getset(lag, hint), 0)
  469. thset lagtimed $iif($getset(lag, timed) != $null, $getset(lag, timed), 0)
  470. thset laghintallow $iif($getset(lag, hintallow) != $null, $getset(lag, hintallow), 0)
  471. thset lagbetweenhint $iif($getset(lag, betweenhint) != $null, $getset(lag, betweenhint), 0)
  472. }
  473. ;########################################################
  474. ;# THEMED start. #
  475. ;########################################################
  476. alias trivia.themecheck {
  477. var %i = 1
  478. while ($getset(triviamode $+ %i, Name)) {
  479. if ($1 == $getset(triviamode $+ %i, Name)) {
  480. trivia.themestart %i
  481. if (($2 isnum) && ($2 <= $numq) && ($2 > 0) && (!$isdis(4))) { thset Max $int($2) }
  482. return
  483. }
  484. inc %i
  485. }
  486. }
  487. alias trivia.themestart {
  488. var %j = $setini(triviamode $+ $1,0)
  489. while (%j >= 1) {
  490. var %mode = $setini(triviamode $+ $1, %j)
  491. thset %mode $getset(triviamode $+ $1, %mode)
  492. dec %j
  493. }
  494. }
  495. ;########################################################
  496. ;# TEAM setup. #
  497. ;########################################################
  498. alias -l trivia.teammode {
  499. thset Score1 0
  500. thset Score2 0
  501. thset Score3 0
  502. thset Score4 0
  503. if ($1 isnum 1 - $numq) { thset Max $int($1) }
  504. else { thset Max $triv(dteam) }
  505. tsay $msg.team.start
  506. }
  507. alias -l strivia.teammode {
  508. var %s1 = $thget(Score1)
  509. var %s2 = $thget(Score2)
  510. var %s3 = $thget(Score3)
  511. var %s4 = $thget(Score4)
  512. if ($getset(team,4-team)) {
  513. if ((%s1 > %s2) && (%s1 > %s3) && (%s1 > %s3)) {
  514. tsay $msg.team.over($te(1).victory)
  515. award TeamVictory 1
  516. }
  517. elseif ((%s2 > %s1) && (%s2 > %s3) && (%s2 > %s4)) {
  518. tsay $msg.team.over($te(2).victory)
  519. award TeamVictory 2 $get.showteams(2)
  520. }
  521. elseif ((%s3 > %s1) && (%s3 > %s2) && (%s3 > %s4)) {
  522. tsay $msg.team.over($te(3).victory)
  523. award TeamVictory 3
  524. }
  525. elseif ((%s4 > %s1) && (%s4 > %s2) && (%s4 > %s3)) {
  526. tsay $msg.team.over($te(4).victory)
  527. award TeamVictory 4
  528. }
  529. else {
  530. tsay $msg.team.over($te(0).victory)
  531. award TeamVictory 0
  532. }
  533. }
  534. else {
  535. if (%s1 > %s2) { tsay $msg.team.over($te(1).victory) }
  536. elseif (%s1 < %s2) { tsay $msg.team.over($te(2).victory) }
  537. else { tsay $msg.team.over($te(0).victory) }
  538. }
  539. if ($getset(status, noshowt)) { tsay $msg.trivia.showteams }
  540. }
  541. alias -l setteam {
  542. if (($thget(Current) >= $getset(Team, JoinBefore)) && ($getset(Team, JoinBeforeOn) == 1)) {
  543. inform $msg.team.joinover
  544. return
  545. }
  546. if ($validteam($2)) {
  547. if ($thget(Team. $+ $1) == $2) { inform $msg.team.alreadyon }
  548. else { tsay $msg.team.add($getset(team,$2), $1) }
  549. thset $eval(Team. $+ $1,1) $2
  550. setvar $1 team $2
  551. }
  552. }
  553. alias -l validteam {
  554. if ($1 isnum 1-2) return 1
  555. if (($1 isnum 3-4) && ($getset(team,4-team))) return 1
  556. return 0
  557. }
  558. alias -l setteam.hash {
  559. if ($validteam($2)) {
  560. thset $eval(Team. $+ $1,1) $2
  561. }
  562. }
  563. ;########################################################
  564. ;# Trivia QUESTION. #
  565. ;########################################################
  566. alias trivq {
  567. set -u3 %ident $1
  568. if (!$hget(Trivia $+ $idenn)) { return }
  569. if ($trivia.fail) return
  570. thset Current $calc($thget(Current) + 1)
  571. if (($team) && ($thget(Current) == $getset(Team, JoinBefore)) && ($getset(Team, JoinBeforeOn) == 1)) { tsay $msg.team.joinbefore }
  572. create.question
  573. .timerend $+ $idenn 1 $lag(timedout) trivx $iden
  574. trivia.startautohint
  575. setset Var $+ $idenn Asked $calc($getset(Var $+ $idenn,Asked) + 1)
  576. thset Start $ticks
  577. trivia.sayquestion $right($thget(catq),-1)
  578. if ($getset(status,echo) == 1) { echo $iden $msg.trivia.echoanswer }
  579. if ($getset(status,answers)) { tsay $msg.hint.space }
  580. award Question $lag(timedout)
  581. }
  582. alias -l create.question {
  583. while ($thget(Ask1)) {
  584. var %qread = $qread($thget(Ask1))
  585. ask.deleteitem 1
  586. thset Catq
  587. if (%qread) return
  588. }
  589. var %temp.ask = $trivia.getq
  590. thset Catq $qcat(%temp.ask)
  591. hadd Asked $+ $idenn %temp.ask %temp.ask
  592. }
  593. alias -l trivia.getq {
  594. unset %ask
  595. while ((!%ask) || ($hget(Asked $+ $idenn, %ask))) {
  596. var %tempnumqvalue = $numq
  597. if (%tempnumqvalue == 0) {
  598. echo Attempted start without any questions to process. Bailing.
  599. halt
  600. }
  601. if ($hget(Asked $+ $idenn,0).item >= %tempnumqvalue) { hdel -w Asked $+ $idenn * }
  602. var %ask = $rand(1, %tempnumqvalue)
  603. if (!$qread(%ask)) { hadd Asked $+ $idenn %ask NA }
  604. }
  605. thset Asking %ask
  606. return %ask
  607. }
  608. ;########################################################
  609. ;# QUESTION MISC. #
  610. ;########################################################
  611. alias qfile {
  612. if (($1 !isnum) || ($1 < 1)) return
  613. if (($thget(File)) && ($gettok($thget(File),$1,$asc(;)))) return $shortfn(" $+ $triv(dir) $+ \ $+ $gettok($thget(File),$1,$asc(;)) $+ ")
  614. if ($tchan($ifd($trivchan,1),$calc(4 + $1))) return $shortfn(" $+ $triv(dir) $+ \ $+ $tchan($ifd($trivchan,1),$calc(4 + $1)) $+ ")
  615. }
  616.  
  617. alias numl { return $calc($numq - $numnonq) }
  618. alias numq {
  619. if ($1 isnum) { return $lines($qfile($1)) }
  620. var %i = 0, %j = 1
  621. while ($qfile(%j)) {
  622. if (!$eval(% $+ numq $+ $qfile(%j),2)) { set -u600 % $+ numq $+ $qfile(%j) $lines($qfile(%j)) }
  623. %i = $calc(%i + $eval(% $+ numq $+ $qfile(%j),2))
  624. inc %j
  625. }
  626. return %i
  627. }
  628. alias qcat {
  629. if ($getset(status,nocat) == 1) return
  630. var %nf = $numfile($1)
  631. if ($exists($gettok(%nf,1,$asc(;)))) {
  632. return $read($gettok(%nf,1,$asc(;)), wnt, #*, $gettok(%nf,2,$asc(;)))
  633. }
  634. }
  635. alias numnonq {
  636. window -h @numnonq
  637. var %j = 1, %nonqcount = 0
  638. while ($qfile(%j)) {
  639. if ($eval(% $+ nonq $+ $qfile(%j),2)) { var %nonqcount = $calc(%numqcount + $eval(% $+ nonq $+ $qfile(%j),2)) }
  640. else {
  641. if ($exists($qfile(%j))) {
  642. filter -fwgx $qfile(%j) @numnonq /\ $+ $triv(delimiter) $+ /
  643. var %nonqcount = $calc(%nonqcount + $filtered)
  644. set -u600 % $+ nonq $+ $qfile(%j) $filtered
  645. }
  646. }
  647. inc %j
  648. }
  649. window -c @numnonq
  650. return %nonqcount
  651. }
  652. alias numcat {
  653. if ($window(@categories)) { window -c @categories }
  654. window -eh @categories
  655. var %j = 1
  656. while ($qfile(%j)) {
  657. if ($exists($qfile(%j))) filter -fw $qfile(%j) @categories #*
  658. inc %j
  659. }
  660. .timer 1 0 window -c @categories
  661. return $line(@categories,0)
  662. }
  663. alias numfile {
  664. var %i = 0, %j = 1, %l
  665. while ($qfile(%j)) {
  666. %l = %i
  667. inc %i $numq(%j)
  668. if ($1 isnum %l - %i) { return $qfile(%j) $+ ; $+ $calc($1 - %l) }
  669. if (($1 !isnum) && ($exists($qfile(%j))) && ($read($qfile(%j), nwt, $+(*,$1-,*), 1))) return $qfile(%j) $+ ; $+ $readn
  670. inc %j
  671. }
  672. }
  673. alias -l qfind {
  674. var %i = 0, %j = 1, %l
  675. if ($1 == $null) { return }
  676. while ($qfile(%j)) {
  677. if (($exists($qfile(%j))) && ($read($qfile(%j), nwt, $+(*,$1-,*), 1))) return $read($qfile(%j),$readn) - $qfile(%j) - $readn
  678. inc %j
  679. }
  680. }
  681. alias qread {
  682. var %nf = $numfile($1)
  683. var %delim = \ $+ $triv(delimiter)
  684.  
  685. var %attemptread
  686.  
  687. if ($1 isnum) {
  688. if ($exists($gettok(%nf,1,$asc(;)))) {
  689. var %attemptread = $read($gettok(%nf,1,$asc(;)), nt, $gettok(%nf,2,$asc(;))))
  690. }
  691. }
  692. else {
  693. var %attemptread $1-
  694. }
  695.  
  696. if (($regex(%attemptread,/^([^ $+ %delim $+ ]+)([ $+ %delim $+ ].*)$/))) {
  697. thset tok1 $regml(1)
  698. if ($regex($regml(2), /[ $+ %delim $+ ]([^ $+ %delim $+ ]+)/g)) {
  699. thset numfile %nf
  700. thset tokq $calc($regml(0) + 1)
  701. var %i = 1
  702. while (%i <= $regml(0)) {
  703. thset tok $+ $calc(%i + 1) $regml(%i)
  704. inc %i
  705. }
  706. }
  707. }
  708. else {
  709. if ($1 == scramble) { thset temp.bonus S }
  710. if ($1 == reverse) { thset temp.bonus R }
  711. if ($1 == shotgun) { thset temp.bonus G }
  712. return $false
  713. }
  714. return $true
  715. }
  716.  
  717. alias -l ask.deleteitem {
  718. hdel Trivia $+ $idenn Ask $+ $$1
  719. var %i = $1
  720. while ($thget(Ask $+ $calc(%i + 1))) {
  721. thset Ask $+ %i $thget(Ask $+ $calc(%i + 1))
  722. inc %i
  723. }
  724. if ($thget(Ask $+ %i)) { hdel Trivia $+ $idenn Ask $+ %i }
  725. }
  726. alias -l trivia.startautohint { if ($getset(status,autohint) == 1) { .timerhint $+ $idenn 1 $lag(hint) trivia.autohint $iden } }
  727. alias -l trivia.autohint {
  728. give.hint $1
  729. if ($triv(numhint) > 1) { .timerhint $+ $idenn $calc($triv(numhint) - 1) $lag(betweenhint) give.hint $1 }
  730. }
  731. alias decheater {
  732. if ($getset(status,nodecheater) == 1) return $1-
  733. var %t.rt = $1-, %i = $count($1-,$chr(32)), %t.ps
  734. while (%i > 0) {
  735. if ($rand(1,2) == 1) {
  736. %t.ps = $pos($1-,$chr(32),%i)
  737. %t.rt = $+($left(%t.rt, $calc(%t.ps - 1)), $chr(160),$right(%t.rt,$calc((%t.ps) * -1)))
  738. }
  739. dec %i
  740. }
  741. return %t.rt
  742. }
  743. ;########################################################
  744. ;# QUESTION over. #
  745. ;########################################################
  746. alias trivx {
  747. set -u3 %ident $1
  748. if (!$hget(Trivia $+ $idenn)) { return }
  749. if (!$2) {
  750.  
  751. if (($getset(status,showanswer)) && (!$getset(status,shownone))) {
  752. if ($thget(temp.type) == K) {
  753. tsay $msg.answer.timeout.kaos
  754. }
  755. else if ($thget(temp.type) == T) {
  756. tsay $msg.answer.timeout.total
  757. }
  758.  
  759. else if ($thget(temp.type) == W) {
  760. tsay $msg.answer.timeout.wpm
  761. }
  762. else if ($thget(temp.type) == P) {
  763. tsay $msg.answer.timeout.pick
  764. }
  765. else {
  766. tsay $msg.answer.timeout
  767. }
  768. }
  769. else { tsay $msg.answer.timeout2 }
  770.  
  771. setset Var $+ $idenn Row 0
  772. thset Unanswered $calc($thget(Unanswered) + 1)
  773. award NoAnswer $trivq.answer
  774. }
  775. trivia.timersoff
  776. if ($window($total.win)) { window -c $total.win }
  777. thset Answer $trivq.answer
  778. thset caseexact 0
  779. if ($hget(Trivia $+ $idenn)) hdel -w Trivia $+ $idenn Temp.*
  780. if ($hget(Trivia $+ $idenn)) hdel -w Trivia $+ $idenn tok*
  781. if (($nick) && ($getvar($nick,score) >= $triv(reset)) && ($getset(status,champ) == 1)) { trivia.newchamp }
  782. if ((($team) && ($thget(Score $+ $isteam($nick)) > $calc($thget(Max)/2))) || (($getset(status,emptyoff)) && ($nick($iden,0) <= 1)) || (($getset(status, naoff) == 1) && ($thget(unanswered) >= $triv(naoff))) || (($thget(Max) != unlimited) && ($thget(Current) >= $thget(Max)))) {
  783. strivia $1
  784. if (($getset(status, emptyoff) == 1) && ($nick($iden,0) <= 1)) tsay $msg.trivia.emptyoff
  785. if (($getset(status, naoff) == 1) && ($thget(Unanswered) >= $triv(naoff))) tsay $msg.trivia.unactive
  786. return
  787. }
  788. .timerq $+ $idenn 1 $iif($1, $lag(answered), $lag(timed)) trivq $iden
  789. }
  790. alias -l trivia.processscore {
  791. if ($getset(Var $+ $idenn, Lastwinner) == $nick) { setset Var $+ $idenn Row $calc($getset(Var $+ $idenn, Row) + $ifd($2,1)) }
  792. else { setset Var $+ $idenn Row $ifd($2,1) }
  793. setset Var $+ $idenn Wins $calc($getset(Var $+ $idenn,Wins) + $ifd($2,1))
  794. setset Var $+ $idenn Lastwinner $nick
  795. setvar $nick Lastwin $date
  796. thset WPM $calc(($len($1) * 60) / ($thget(Time) * 5))
  797. if (($thget(WPM) > $getvar($nick,wpm)) || (!$getvar($nick,wpm))) { setvar $nick wpm $thget(WPM) }
  798. if (($getset(Var $+ $idenn, Row) > $getvar($nick,streak)) || (!$getvar($nick,streak))) { setvar $nick Streak $getset(Var $+ $idenn, Row) }
  799. if (($thget(Time) < $getvar($nick,time)) || (!$getvar($nick,time))) { setvar $nick Time $thget(Time) }
  800. thset temp.cng $calc(($thget(PPQ) * $ifd($2,1)) - ($thget(DPH) * $max.hinted))
  801. if ($thget(temp.points) != $null) { thset temp.cng $calc(($thget(temp.points) - ($max.hinted * $thget(temp.hintreduction))) * $ifd($2,1)) }
  802. thset temp.mrank $getmrank($nick)
  803. thset temp.rank $getrank($nick,$unit.default,$thget(temp.cng))
  804. thset temp.newrank $calc($thget(temp.rank) - %uprank)
  805. setvar $nick Score $calc($getvar($nick, Score) + $thget(temp.cng))
  806. setvar $nick Answered $calc($getvar($nick, Answered) + $iif($2 > 0,$2,1))
  807. thset $eval(Score. $+ $nick,1) $calc($thget($eval(Score. $+ $nick,1)) + $thget(temp.cng))
  808. process.scores.time $nick $thget(temp.cng) $getset(Var $+ $idenn, Row) $thget(Time) $thget(WPM)
  809. }
  810. alias trivia.processawards {
  811. if (%uprank) award uprank $tranord($thget(temp.newrank))
  812. if ($getmrank($nick) != $thget(temp.mrank)) award promotion $getmrank($nick)
  813. award score $user.score($nick)
  814. award row $getset(Var $+ $idenn, Row)
  815. award time $thget(Time)
  816. award wpm $thget(WPM)
  817. award answered $thget(Time)
  818. }
  819.  
  820. alias -l answered {
  821. thset Time $question.time
  822. if (($1 == $null) || ($trivia.banned) || ($trivia.negationcheck) || (($team) && (!$isteam($nick)))) { return }
  823. $trivia.processscore($1,$2)
  824. if (($getset(build,instabuild)) && ($getset(build,instabuild) // $getset(Var $+ $idenn,Wins))) { htmltrigger $iden }
  825. tsay $msg.answer.correct($getset(status,tradwin),$thget(WPM),$thget(temp.newrank),$iif(%uprank,$thget(temp.rank)))
  826. if ($team) {
  827. thset Score $+ $isteam($nick) $calc($thget( Score $+ $isteam($nick)) + 1)
  828. tsay $msg.team.score
  829. award TeamAnswered $isteam($nick)
  830. }
  831. trivia.processawards
  832. if ($thget(RRS)) { tsay $msg.trivia.roundscores }
  833. hdel Trivia $+ $idenn Unanswered
  834. if (($isTotal) && ($total.over)) { tsay $msg.trivia.totalover }
  835.  
  836. if ($thget(temp.type) == W) {
  837. return
  838. }
  839. if ((($thget(temp.type) != T) && ($thget(temp.type) != K)) || ($total.over)) { trivx $chan $true }
  840. }
  841. alias -l trivq.answer { return $iif(((($thget(temp.type) == T) || ($thget(temp.type) == K) || ($getset(status,showmatched))) && ($thget(temp.matched))), $thget(temp.matched),$tok(2)) }
  842. ;########################################################
  843. ;# QUESTION Typing. #
  844. ;########################################################
  845. alias -l trivia.sayquestion {
  846. if ($right($tok(1),1) == $chr(61) ) {
  847. thset caseexact 1
  848. thset tok1 $left($tok(1),-1)
  849. }
  850. if ($regex($tok(1), /^([^:]+):\s?(.+)|((?i)Scramble|Uword|WPM|Type)$/)) {
  851. thset temp.mode $lower($regml(1))
  852. thset temp.rest $regml(2)
  853. if (($gettok($thget(temp.mode),1,44) isnum) && ($getset(status,nobonus) != 1)) {
  854. thset temp.points $gettok($thget(temp.mode),1,44)
  855. if ($gettok($thget(temp.mode),2,44) isnum) { thset temp.hintreduction $gettok($thget(temp.mode),2,44) }
  856. var %tq $msg.question.points($1-,$thget(temp.rest))
  857. }
  858. elseif ($regex($thget(temp.mode), /pick\s(\d+)/)) {
  859. var %tq $msg.question.standard($1-,$thget(temp.rest))
  860. thset temp.type P
  861. thset temp.pick $regml(1)
  862. }
  863. elseif (kaos == $thget(temp.mode)) {
  864. var %tq $msg.question.kaos($1-)
  865. thset temp.type K
  866. total.init
  867. }
  868. elseif (multi == $thget(temp.mode)) {
  869. var %tq $msg.question.multi($1-)
  870. thset temp.type M
  871. }
  872. elseif (WPM == $thget(temp.mode)) || (Type == $htget(temp.mode)) {
  873. var %tq $msg.question.wpm($1-,$thget(temp.rest))
  874. thset temp.type W
  875. thset caseexact 1
  876. }
  877. elseif (total == $thget(temp.mode)) {
  878. var %tq $msg.question.total($1-)
  879. thset temp.type T
  880. total.init
  881. }
  882. elseif (scramble == $thget(temp.mode)) || (uword == $thget(temp.mode)) {
  883. var %tq $msg.question.scramble($1-,$thget(temp.rest))
  884. thset temp.type S
  885. }
  886. }
  887. if (!%tq) { var %tq $msg.question.standard($1-) }
  888.  
  889. thset trivq.say $iif($getset(status,nosaycurrent) != 1, $e1($thget(Current)) $+ $e2(.)) $decheater(%tq)
  890. tsay $thget(trivq.say)
  891. }
  892. ;########################################################
  893. ;# TOTAL question type, control. #
  894. ;########################################################
  895. alias unfix {
  896. var %i = 2
  897. while (%i <= $tokq) {
  898. if ($1- == $fix($tok(%i))) { return $tok(%i) }
  899. inc %i
  900. }
  901. }
  902. alias total.win { return @total $+ $idenn }
  903. alias total.init {
  904. var %i = 2
  905. if ($window($total.win)) { window -c $total.win }
  906. window -h $total.win
  907. while (%i <= $tokq) {
  908. aline -n $total.win $tok(%i)
  909. inc %i
  910. }
  911. thset temp.totalanswers $total.left
  912. }
  913. alias total.left { return $line($total.win,0) }
  914. alias total.answers { return $thget(temp.totalanswers) }
  915. alias total.answered { return $calc($total.answers - $total.left) }
  916. alias total.is { return $fline($total.win,$1-,1) }
  917. alias total.rem { dline $total.win $total.is($1-) }
  918. alias total.over { return $iif(!$line($total.win,0), 1) }
  919. alias isTotal { return $iif((($thget(temp.type) == T) || ($thget(temp.type) == K)),$true) }
  920. alias gettotalhints {
  921. var %i = 1, %totalhint
  922. while (%i <= $line($total.win,0)) {
  923. %totalhint = $left(%totalhint,850) $+ $iif(%totalhint,$chr(44)) $plot($1,$line($total.win,%i))
  924. inc %i
  925. }
  926. return %totalhint
  927. }
  928. alias gettotalremain {
  929. var %i = 1, %totalremain
  930. while (%i <= $line($total.win,0)) {
  931. %totalremain = $left(%totalremain,850) $+ $iif(%totalremain != $null,$chr(44)) $line($total.win,%i)
  932. inc %i
  933. }
  934. return %totalremain
  935. }
  936. ;########################################################
  937. ;# Trivia block answer. #
  938. ;########################################################
  939. alias -l trivia.negationcheck {
  940. if ($thuser(Hinted)) {
  941. inform $msg.trivia.hintpaused
  942. return $true
  943. }
  944. if ($thget(temp.type) != W) {
  945. if (($getset(status,limitguess)) && (!$isTotal) && ($ifd($thuser(Guess),0) >= $thget(guess))) {
  946. inform $msg.trivia.guessed($thuser(guess))
  947. return $true
  948. }
  949. }
  950. else if ($ifd($thuser(Guess),0) >= 2) {
  951. inform $msg.trivia.guessed.wpm
  952. return $true
  953. }
  954. }
  955. ;########################################################
  956. ;# Guess processing. #
  957. ;########################################################
  958. alias -l processguess {
  959. if ($trivia.paused) { return }
  960. if (($team) && (!$isteam($nick))) {
  961. if ($validteam($getvar($nick,team))) {
  962. $setteam.hash($nick,$getvar($nick,team))
  963. }
  964. }
  965. var %pick = $regex($fix($1-), $trivia.pattern)
  966. thuset Guess $calc($thuser(guess) + 1)
  967. if (%pick == 0) { return }
  968. var %answered, %matched = $regml(1), %i = 1
  969. thset temp.match $regml(0)
  970. while ($thget(temp.match) >= %i) {
  971. thset temp.match. $+ %i $regml(%i)
  972. inc %i
  973. }
  974. if (($thget(temp.type) == P) || ($thget(temp.type) == T) || ($thget(temp.type) == W) || ($thget(temp.type) == K)) {
  975. var %j = 1, %k, %f, %numb.correct = 0
  976. while (%j <= $thget(temp.match)) {
  977. var %k = %j, %f = $true
  978. while (%k >= 1) {
  979. if ((%j != %k) && ($thget(temp.match. $+ %j) == $thget(temp.match. $+ %k))) { %f = $false }
  980. dec %k
  981. }
  982. if ($isTotal) {
  983. if ($total.is($unfix($thget(temp.match. $+ %j)))) {
  984. total.rem $unfix($thget(temp.match. $+ %j))
  985. inc %numb.correct
  986. }
  987. else { %f = $false }
  988. }
  989. if (%f) %answered = %answered $unfix($thget(temp.match. $+ %j))
  990. else { dec %pick }
  991. inc %j
  992. }
  993. if (($thget(temp.type) == P) && (%pick < $thget(temp.pick))) return
  994. if (($isTotal) && (%numb.correct == 0)) return
  995. }
  996. else { var %answered = $unfix($thget(temp.match. $+ 1)) }
  997. thset temp.matched %answered
  998. $answered(%answered,%numb.correct)
  999. }
  1000. alias fix {
  1001. if ($thget(caseexact)) return $1-
  1002. if ($getset(status,nospellfix)) { return $lower($strip($1-)) }
  1003. var %temp.fix = $lower($strip($1-))
  1004. .echo -q $regsub(%temp.fix,/([^\s]+)s(?=(\s|$))/g, \1, %temp.fix)
  1005. .echo -q $regsub(%temp.fix,/(?<=^|\s)(?:the|an|a)\s([^\s]+)/g, \1, %temp.fix)
  1006. %temp.fix = $remove(%temp.fix,',-,!,`,.,’,´,?,%,$chr(36),$chr(44))
  1007. %temp.fix = $replace(%temp.fix,À,A,Á,A,Â,A,Ã,A,Ä,A,Å,A,Æ,AE,Ç,C,È,E,É,E,Ê,E,Ë,E,Ì,I,Í,I,Î,I,Ï,I,Ð,D,Ñ,N,Ò,O,Ó,O,Ô,O,Õ,O,Ö,O,Ø,O,Ù,U,Ú,U,Û,U,Ü,U,Ý,Y)
  1008. %temp.fix = $replace(%temp.fix,ß,B,à,a,á,a,â,a,ã,a,ä,a,å,a,æ,ae,ç,c,è,e,é,e,ê,e,ë,e,ì,i,í,i,î,i,ï,i,ð,o,ñ,n,ò,o,ó,o,ô,o,õ,o,ö,o,ù,u,ú,u,û,u,ü,u,ý,y,ÿ,y)
  1009. return $replace(%temp.fix,kn,n,y,i,k,c,x,c,q,c,e,a,ah,a,u,o,ph,f,m,n,ll,l,aa,a,oo,o,cc,c,z,s)
  1010. }
  1011.  
  1012. alias trivia.pattern {
  1013. if ($thget(temp.pattern)) { return $thget(temp.pattern) }
  1014. var %i 2, %max = $iif($thget(temp.type) == M, 2, $tokq), %pattern = $chr(40)
  1015. while (%i <= %max) {
  1016. if (%i != 2) { %pattern = %pattern $+ $chr(124) }
  1017. %pattern = %pattern $+ $fix($tok(%i))
  1018. inc %i
  1019. }
  1020. %pattern = %pattern $+ $chr(41)
  1021. if (($thget(temp.type) != P) && ($thget(temp.type) != T) && ($thget(temp.type) != K)) {
  1022. if ($getset(status, exactmatch)) { %pattern = ^ $+ %pattern $+ $ }
  1023. elseif ($getset(status, nomid)) { %pattern = ^ $+ %pattern $+ (?=\s|$) $+ $chr(124) $+ (?:^|\s) $+ %pattern $+ $ }
  1024. else { %pattern = (?:^|\s) $+ %pattern $+ (?=\s|$) }
  1025. }
  1026. else { %pattern = (?:^|\s) $+ %pattern $+ (?=\s|$) }
  1027. %pattern = / $+ %pattern $+ /g
  1028. thset temp.pattern %pattern
  1029. return %pattern
  1030. }
  1031.  
  1032. ;########################################################
  1033. ;# PAUSE/RESUME processing. #
  1034. ;########################################################
  1035. alias trivia.paused { if (($thget(paused)) && ($hget(Trivia $+ $idenn))) { return $true } }
  1036. alias trivia.pause {
  1037. if ($1) {
  1038. if ($trivia.paused) {
  1039. .timerq $+ $idenn -r
  1040. .timerend $+ $idenn -r
  1041. .timerhint $+ $idenn -r
  1042. thset paused 0
  1043. tsay $msg.trivia.resume
  1044. }
  1045. else if (($thget(paused) != 1) && (!$timer(q $+ $idenn)) && (!$timer(end $+ $idenn)) && (!$timer(hint $+ $idenn)) && ($hget(Trivia $+ $idenn))) trivx
  1046. }
  1047. else {
  1048. .timerq $+ $idenn -p
  1049. .timerend $+ $idenn -p
  1050. .timerhint $+ $idenn -p
  1051. thset paused 1
  1052. tsay $msg.trivia.pause
  1053. }
  1054. }
  1055. ;########################################################
  1056. ;# Hint setup. #
  1057. ;########################################################
  1058. alias -l give.hint {
  1059. set -u3 %ident $1
  1060. if ((!$hget(Trivia $+ $idenn)) || ($max.hinted >= $triv(numhint))) { return }
  1061. if ($thget(temp.type) == W) return
  1062. if (!$nick) {
  1063. thset Temp.Hints $calc($thget(Temp.Hints) + 1)
  1064. var %hintpercent = $calc($triv(perchint) * $thget(Temp.Hints))
  1065. var %nexthintpercent = $calc($triv(perchint) * ($thget(Temp.Hints) + 1))
  1066. if ($thget(Temp.Skip.Hint $+ $thget(Temp.Hints)) == 1) { return }
  1067. if ($hintrepnum(%hintpercent) == $hintrepnum(%nexthintpercent)) thset Temp.Skip.Hint $+ $calc($thget(Temp.Hints) + 1) 1
  1068. if ($thget(Temp.Hints) == 1) tsay $eval($ $+ msg.hint. $+ $hintfirst $+ ( %hintpercent ),2)
  1069. else tsay $msg.hint.hint(%hintpercent)
  1070.  
  1071. }
  1072. else {
  1073. thuset Hint $calc($iif($calc($thget(Temp.Hints) + 0) > $calc($thuser(hint) + 0),$thget(Temp.Hints),$thuser(hint)) + 1)
  1074. if ($thget(Temp.Skip.Hint $+ $thuser(hint)) == 1) { return }
  1075. var %sayhint = $msg.hint.hint($calc($triv(perchint) * $thuser(hint)))
  1076. if (msg * iswm %respond) {
  1077. tsay %sayhint
  1078. thset Temp.Skip.Hint $+ $thuser(hint) 1
  1079. }
  1080. else inform %sayhint
  1081. }
  1082. award Hint $thget(Temp.Hints)
  1083. }
  1084. alias -l hintfirst {
  1085. var %hintfirst = $getset(trivia, firsthint)
  1086. if (!%hintfirst) return hint
  1087. if (%hintfirst == 1) return last
  1088. if (%hintfirst == 2) return vowels
  1089. if (%hintfirst == 3) return $gettok(hint.last.vowels.space.scramble, $rand(1,5), $asc(.))
  1090. }
  1091. alias -l get.hint {
  1092. if ($thget(Temp.type) == M) { return }
  1093. if (($thget(temp.rhint. $+ $2)) && ($1 == hint)) { return $thget(temp.rhint. $+ $2) }
  1094. var %perhint = $iif($2,$2,$triv(perchint)), %hintc
  1095.  
  1096. if ($isTotal) {
  1097. thset temp.rhint. $+ $2 $gettotalhints(%perhint)
  1098. return $thget(temp.rhint. $+ $2)
  1099. }
  1100. if ($1 == words) { return $numtok($trivq.answer,32) }
  1101. if ($1 == space) { return $deletter($trivq.answer) }
  1102. if ($1 == last) { return $right($trivq.answer,1) }
  1103. if ($1 == vowels) { return $iif($regsub($trivq.answer, /([^aeiouAEIOU\s])/g, $trivchar, %hintc), %hintc, $trivq.answer) }
  1104. if ($1 == scramble) { return $scramble($trivq.answer) }
  1105. if ($getset(status, plot)) { return $plot(%perhint, $trivq.answer) }
  1106. if ($getset(status, scatter)) {
  1107. thset temp.rhint. $+ $2 $scatter(%perhint, $trivq.answer)
  1108. return $thget(temp.rhint. $+ $2)
  1109. }
  1110. else { return $standard(%perhint, $trivq.answer) }
  1111. }
  1112. alias -l trivchar { return $iif($chr($triv(ch)),$chr($triv(ch)),_) }
  1113. alias -l nonpunct { return /([^';:"\s\xA0\,\?\<\>\|\\\/\[\]\!\@\#\$\%\^\&\*\(\)\{\}\-])/g }
  1114. alias -l deletter {
  1115. var %hintc
  1116. .echo -q $regsub($1-, $nonpunct, $trivchar, %hintc)
  1117. return %hintc
  1118. }
  1119. alias -l hintrepnum { return $int($calc(($len($trivq.answer) / 100) * $1 + 1)) }
  1120. alias -l standard {
  1121. var %in = $replace($2-, $chr(32), $chr(160)), %break = $hintrepnum($1)
  1122. return $replace($left(%in, %break) $+ $iif($getset(status,cross) == 1, $deletter($right(%in, $calc(-1 * %break)))), $chr(160), $chr(32))
  1123. }
  1124. alias -l scramble {
  1125. tokenize 32 $1-
  1126. var %i = 1, %temp.smbl
  1127. while (%i <= $0) {
  1128. var %word = $eval($+($,%i),2)
  1129. while (%word != $null) { var %rand = $rand(1, $len(%word)), %temp.smbl = %temp.smbl $+ $mid(%word, %rand, 1), %word = $left(%word, $calc(%rand - 1)) $+ $right(%word, $calc(-1 * %rand)) }
  1130. %temp.smbl = %temp.smbl $+ ;
  1131. inc %i
  1132. }
  1133. return $lower($replace(%temp.smbl,;,$chr(32)))
  1134. }
  1135. alias -l reverse {
  1136. var %i = $len($1-),%reversed, %space
  1137. while (%i >= 1) {
  1138. if (!%space) { %reversed = %reversed $+ $mid($replace($1-,$chr(32),$chr(160)),%i,1) }
  1139. %space = $false
  1140. if ($chr($mid($1-,%i,1)) == 32) { %space = $true }
  1141. dec %i
  1142. }
  1143. return $replace(%reversed,$chr(160),$chr(32))
  1144. }
  1145.  
  1146. alias scatter {
  1147. var %hintc = $2-
  1148. if ($thget(temp.scattermask)) var %schint = $thget(temp.scattermask)
  1149. else {
  1150. var %schint
  1151. !.echo -q $regsub(%hintc,$nonpunct,@,%schint)
  1152. }
  1153. var %rnum = $int($calc(($regex(%schint,/@/g) / 100) * (100 - $1)))
  1154. while (%rnum >= 0) {
  1155. if ($regex(%schint,/(@)/g)) !.echo -q $regsub(%hintc,/(?<=^.{ $+ $calc($regml($rand(1,$regml(0))).pos - 1) $+ })./,@, %hintc)
  1156. dec %rnum
  1157. }
  1158. thset temp.scattermask %hintc
  1159. return $replace(%hintc,@,$trivchar)
  1160. }
  1161.  
  1162. alias plot {
  1163. if ($1 >= 100) { return $2- }
  1164. var %hintc, %i = 1, %j = 0, %rnum = $int($calc(($regsub($2-,$nonpunct,@,%hintc) / 100) * $1))
  1165. while (%i <= %rnum) {
  1166. if ($regex(%hintc, /(?:^|\s|\xA0)[^\s\xA0@]{ $+ %j $+ }(@)/g) == 1) { inc %j }
  1167. %hintc = $+($left(%hintc,$calc($regml(1).pos - 1)), $mid($2-,$regml(1).pos,1),$right(%hintc,$calc($regml(1).pos * -1)))
  1168. inc %i
  1169. }
  1170. return $replace(%hintc,@,$trivchar)
  1171. }
  1172. alias startandrandom {
  1173. if ($1 > 0) return $replace($hget(hints,$1),@,$trivchar)
  1174. if ($hget(hints)) hfree hints
  1175. var %hintc = $2-, %onhint = 10, %f
  1176. while (%hintc) {
  1177. var %w = $gettok(%hintc,1,32), %rt = $regsub(%w,$nonpunct,@,%f), %hintc = $gettok(%hintc,2-,32), %k = 1
  1178. while (%k <= %onhint) {
  1179. hadd -m hints %k $hget(hints,%k) %f
  1180. if ($regex(%w,$nonpunct) > 1) !.echo -q $regsub(%w, /(?<=^.{ $+ $iif(%k == 1, 0, $calc($regml($rand(1,$regml(0))).pos - 1)) $+ })(.)/,@, %w) $regsub(%f, /(?<=^.{ $+ $calc($regml(1).pos - 1) $+ })./,$regml(1), %f)
  1181. inc %k
  1182. }
  1183. }
  1184. }
  1185.  
  1186. ;########################################################
  1187. ;# CHAMP aliases. #
  1188. ;########################################################
  1189. alias -l trivia.newchamp {
  1190. .rename $scoresfil $asctime(yymmddhhmmss) $+ .bak
  1191. setset Champ $calc($setini(Champ, 0) + 1) $nick
  1192. tsay $msg.trivia.victory($nick)
  1193. award Champ $nick
  1194. trivia.flush
  1195. haltdef
  1196. }
  1197. ;########################################################
  1198. ;# HALL Of FAME, RANKING. #
  1199. ;########################################################
  1200. alias sort {
  1201. if (!$exists($scoresfil)) { return }
  1202. window -h $twin
  1203. filter -fwcgut $+ $iif($1 != time,e) [ $$gttok($iif($2 != total,$2) $+ $1) $asc(;) ] $scoresfil $twin $iif(($2) && ($2 != total),/^ $+ $str([^;]*;,$calc($$gttok($2)-1)) $+ $eval($ $+ get. $+ $2,2) $+ ;.* $+ /,/.*/)
  1204. }
  1205. alias -l msg.trivia.topx {
  1206. if ($calc($3 - $2) > 20) { return $msg.trivia.error.topx }
  1207. sort $1 $unit.default
  1208. var %temp.by = $gttok($1), %i = $2, %temp.ten = $e2(Places) $e1($2) $e2(to) $e1($3) $+ $e2(:)
  1209. while (%i <= $3) {
  1210. var %temp.ten = %temp.ten $e1($iif($hof(%i,1),$hof(%i,1) - $hof(%i,%temp.by)) $+ $e2(;)
  1211. inc %i
  1212. }
  1213. return %temp.ten
  1214. }
  1215. alias -l msg.trivia.topstats {
  1216. sort $1 $iif($2 != total, $2)
  1217. var %temp.by = $gttok($iif($2 != total, $2) $+ $1), %temp.ten = $e1($hof(1,1)) $e2(has the best $1 of) $e1($hof(1,%temp.by)) $iif($2 != total,$e2( for the $2 )) $+ $e2(;)
  1218. var %i = 2
  1219. while (%i <= $iif(%topnum,%topnum,10)) {
  1220. var %temp.ten = %temp.ten $iif($hof(%i,1),$e1($hof(%i,1)) $e2(-) $e1($hof(%i,%temp.by)) $+ $e2(;))
  1221. inc %i
  1222. }
  1223. return $iif(!$hof(1,1),$e2(No elements in the hall of fame.),%temp.ten)
  1224. }
  1225. alias topnum { set %topnum $1 }
  1226. alias -l twin { return @trivia $+ $scoresfil }
  1227. alias -l getrank {
  1228. sort score $iif($2 != total, $2)
  1229. set -u0 %getrank $fline($twin,$+($1,;*),1)
  1230. if (!%getrank) { return $hof.size }
  1231. var %score = $getvar($hof(%getrank,1),$iif($2 != total, $2) $+ score)
  1232. while (%score == $getvar($hof(%getrank,1),$iif($2 != total, $2) $+ score)) { dec %getrank }
  1233. inc %getrank
  1234. if (%getrank != 1) {
  1235. set -u0 %getnextrank $calc(%getrank - 1)
  1236. set -u0 %getnextrankuser $hof(%getnextrank,1)
  1237. set -u0 %getnextrankat $user.score(%getnextrankuser,$2)
  1238. }
  1239. unset %uprank
  1240. if (!$3) { return %getrank }
  1241. set -u0 %uprank 1
  1242. var %upscore = $calc(%score + $3)
  1243. while ((%upscore >= $getvar($hof($calc(%getrank - %uprank),1),$iif($2 != total, $2) $+ score)) && (%getrank >= %uprank)) {
  1244. inc %uprank
  1245. }
  1246. dec %uprank
  1247. return %getrank
  1248. }
  1249. alias mrankon {
  1250. if (!$getset(trivia, ranks)) { return $false }
  1251. if ($setini(ranks,0) == 0) { return $false }
  1252. else { return $true }
  1253. }
  1254. alias getmrank {
  1255. if (!$getset(trivia, ranks)) { return }
  1256. var %score = $user.score($1,$2), %i = $setini(ranks,0), %te = 0, %temax = 0
  1257. while (%i >= 1) {
  1258. %te = $setini(ranks,%i)
  1259. if ((%score >= %te) && (%te >= %temax)) { %temax = %te }
  1260. dec %i
  1261. }
  1262. return $getset(ranks,%temax)
  1263. }
  1264. alias getnextmrank {
  1265. var %next.rank = $getnextmrankat($1)
  1266. return $iif(%next.rank, $getset(ranks,%next.rank), None)
  1267. }
  1268. alias getnextmrankat {
  1269. if (!$getset(trivia, ranks)) { return }
  1270. var %score = $1, %i = $setini(ranks,0), %te = 0, %temax = 0, %by = 0
  1271. while (%i >= 1) {
  1272. %te = $setini(ranks,%i)
  1273. if ((%score <= %te) && ((!%by) || ($calc(%score + %by) >= %te))) {
  1274. %temax = %te
  1275. %by = $calc(%te - %score)
  1276. }
  1277. dec %i
  1278. }
  1279. return %temax
  1280. }
  1281.  
  1282. alias -l recordstat {
  1283. sort $1 $unit.default
  1284. return $hof(1,1)
  1285. }
  1286. ;########################################################
  1287. ;# TIME SCORE DURATIONS AND GENERAL ALIASES #
  1288. ;# All time alias just return the number of that time #
  1289. ;# unit which have occurred since Jan 1st, 1970 #
  1290. ;# Do not alter the unit.tokens. It will break the bot. #
  1291. ;########################################################
  1292. alias unit.tokens { return year.month.week.day }
  1293. alias get.day { return $int($calc(($ctime - $timezone) / 86400)) }
  1294. alias get.week { return $int($calc((($get.day - 4) - $iif($getset(status,monday),0,1)) / 7)) }
  1295. alias get.month { return $calc(($get.year * 12) + $asctime($ctime,mm)) }
  1296. alias get.year { return $calc($asctime($ctime,yyyy) - 1970) }
  1297. alias process.scores.time {
  1298. var %i = 1
  1299. while (%i <= 4) {
  1300. var %unit = $gettok($unit.tokens,%i,$asc(.))
  1301. var %uvalue = $eval($ $+ get. $+ %unit,2)
  1302. if ((%unit) && (%uvalue)) {
  1303. if ($getvar($1,%unit) != %uvalue) {
  1304. setvar $1 %unit %uvalue
  1305. setvar $1 %unit $+ score $calc(0 + $2)
  1306. setvar $1 %unit $+ streak $calc(0 + $3)
  1307. setvar $1 %unit $+ time $ifd($4,9999)
  1308. setvar $1 %unit $+ wpm $calc(0 + $5)
  1309. }
  1310. else {
  1311. if ($2) setvar $1 %unit $+ score $calc($getvar($1,%unit $+ score) + $2)
  1312. if ($3 > $getvar($1,%unit $+ streak)) setvar $1 %unit $+ streak $3
  1313. if ($4 < $getvar($1,%unit $+ time)) setvar $1 %unit $+ time $4
  1314. if ($5 > $getvar($1,%unit $+ wpm)) setvar $1 %unit $+ wpm $5
  1315. }
  1316. }
  1317. inc %i
  1318. }
  1319. }
  1320. ;########################################################
  1321. ;# VAR MANIPULATIONS. #
  1322. ;########################################################
  1323. alias setvar {
  1324. if ($3 == $null) return
  1325. if ($exists($tempfil)) var %backburner = $read($tempfil, wnt, $1 $+ ;*)
  1326. if (%backburner != $null) mergeentry $tempfil $scoresfil $1
  1327. var %newline = $readvar($1)
  1328. if (!%newline) { %newline = $1 }
  1329. if ($numtok(%newline,59) < $numtok($tvartoks, $asc(.))) {
  1330. %newline = %newline $+ $str(;0,$calc($numtok($tvartoks, $asc(.)) - $numtok(%newline,59)))
  1331. if ($gettok(%newline,9,59) == 0) { %newline = $puttok(%newline,trivia,9,59) }
  1332. if (($gettok(%newline,8,59) == 0) && ($address($1,5))) { %newline = $puttok(%newline,$address($1,5),8,59) }
  1333. if ($gettok(%newline,6,59) == 0) { %newline = $puttok(%newline,$date,6,59) }
  1334. if ($gettok(%newline,3,59) == 0) { %newline = $puttok(%newline,9999,3,59) }
  1335. }
  1336. %newline = $puttok(%newline,$3-,$gttok($2),59)
  1337. write $iif($readn,-l $+ $readn) $scoresfil %newline
  1338. set -u3 %cache.nick $1
  1339. set -u3 %cache.line %newline
  1340. }
  1341. alias readvar {
  1342. if ($exists($scoresfil)) var %scoreline = $read($scoresfil, wnt, $1 $+ ;*)
  1343. if (!%scoreline) { return }
  1344. if (!$2) { return %scoreline }
  1345. else { return $gettok(%scoreline, $gttok($2), 59) }
  1346. }
  1347. alias getvar {
  1348. if ($1 == %cache.nick) { var %scoreline = %cache.line }
  1349. else {
  1350. var %scoreline = $readvar($1)
  1351. if (!%scoreline) { return }
  1352. set -u3 %cache.nick $1
  1353. set -u3 %cache.line %scoreline
  1354. }
  1355. if (!$2) { return %scoreline }
  1356. else { return $gettok(%scoreline, $gttok($2), 59) }
  1357. }
  1358. alias -l gttok { return $findtok($tvartoks, $1, 1, $asc(.)) }
  1359. alias -l tvartoks { return name.score.time.streak.wpm.lastwin.answered.address.team.admin.block.day.dayscore.daystreak.daytime.daywpm.week.weekscore.weekstreak.weektime.weekwpm.month.monthscore.monthstreak.monthtime.monthwpm.year.yearscore.yearstreak.yeartime.yearwpm }
  1360. alias -l varfil { return $iif($2 == $null, $iif($1 == 0, $lines($scoresfil), $gettok($read($scoresfil, $1),1,59)), $gettok($read($scoresfil, $1),$2,59)) }
  1361. alias trivini { return $iif($exists(trivia.ini),trivia.ini,$iif($exists(" $+ $scriptdir $+ \ $+ trivia.ini $+ ")," $+ $scriptdir $+ \ $+ trivia.ini $+ ",trivia.ini)) }
  1362. alias -l setset {
  1363. if ($3- != $null) { writeini -n $trivini $1 $2 $3- }
  1364. else { remini -n $trivini $$1 $2 }
  1365. }
  1366. alias getset { return $readini($trivini, n, $1, $2) }
  1367. alias -l setini { return $iif($2 != $null, $ini($trivini, $1, $2), $ini($trivini, $1)) }
  1368. alias -l thuser { return $thget($eval(Temp. $+ $1 $+ . $+ $nick,1)) }
  1369. alias -l thuset { thset $eval(Temp. $+ $1 $+ . $+ $nick,1) $2- }
  1370. alias -l thset { if ($hget(Trivia $+ $idenn)) hadd Trivia $+ $idenn $1- }
  1371. alias thget { return $hget(Trivia $+ $idenn, $1) }
  1372. ;########################################################
  1373. ;# Color aliases. #
  1374. ;########################################################
  1375. alias -l colorcode { return $gettok(colors off.white.black.blue.green.lightred.brown.purple.orange.yellow.lightgreen.cyan.lightcyan.lightblue.pink.grey.lightgrey,$calc($1 + 1),$asc(.)) }
  1376. alias -l fixer { return $base($1,10,10,2) }
  1377. alias varcolors {
  1378. unset %c1 %c1o %c2 %c2o
  1379. if ((!$getset(color,on)) || (!$tc(1)) || (!$tc(2))) { return }
  1380. %c1o = $iif($tc(1).b,$chr(2)) $+ $iif($tc(1).u,$chr(31)) $+ $chr(3)
  1381. %c2o = $iif($tc(2).b,$chr(2)) $+ $iif($tc(2).u,$chr(31)) $+ $chr(3)
  1382. %c1 = %c1o $+ $fixer($calc($tc(1) - 1)) $+ $iif(($tc(3)) && ($getset(color,bon)), $chr(44) $+ $fixer($calc($tc(3) - 1)))
  1383. %c2 = %c2o $+ $fixer($calc($tc(2) - 1)) $+ $iif(($tc(4)) && ($getset(color,bon)), $chr(44) $+ $fixer($calc($tc(4) - 1)))
  1384. }
  1385. alias rdc {
  1386. if ($getset(status,nocolorshort) == 1) return $1
  1387. var %a
  1388. !.echo -q $regsub($1,/(?<=\x03|\x03\d\d\x2C)(\d)(?!\d)/g,0\1, %a)
  1389. while ($regsub(%a, /(?<=\x03\d\d\x2C\d\d|\x03\d\d\x03|\x03)([\x02\x1F\x16\s\xA0]+)(\x03(?:\d\d(?:\x2C\d\d)?)?)/g,\2\1, %a)) { }
  1390. !.echo -q $regsub(%a, /(\x02)([\x1F\x16\s\xA0]*)\1/g,\2, %a) $&
  1391. $regsub(%a, /(\x1F)([\x02\x16\s\xA0]*)\1/g,\2, %a) $&
  1392. $regsub(%a, /(\x16)([\x02\x1F\s\xA0]*)\1/g,\2, %a) $&
  1393. $regsub(%a, /(?:\x03(?:\d\d(?:\x2C\d\d)?)?)+(\x03(?:(?!\d)|\d\d\x2C\d\d))/g,\1, %a) $&
  1394. $regsub(%a, /(?:\x03\d\d)(\x2C\d\d)(?:\x03\d\d)*(\x03\d\d)/g,\2\1, %a) $&
  1395. $regsub(%a, /(?<=\x03\d\d)(\x2C\d\d)([^\x03]+\x03\d\d)\1/g,\1\2, %a)
  1396. while ($regsub(%a,/(\x03\d\d)((\x2C\d\d)?[^\x03]+)\1(?!\x2c\d)/g,\1\2, %a)) { }
  1397. !.echo -q $regsub(%a, /^\x03(?!\d)|(\x03(\d\d(\x2C\d\d)?)?|\x02|\x16|\x1F)+$/g,,%a) $&
  1398. $regsub(%a, /(?<=\x03|\x03\d\d\x2C)0(\d)(?!\d)/g,\1, %a)
  1399. return %a
  1400. }
  1401. ;########################################################
  1402. ;# AWARD setups. #
  1403. ;########################################################
  1404. alias -l msg.trivia.award { return %c2 $+ $replace($eval($1,2),^, %c2o $+ $e1($2) $+ %c2,*, %c2o $+ $e1($nick) $+ %c2) $+ %c2o }
  1405. alias -l award {
  1406. if ($getset(status,noawards)) { return }
  1407. var %i = 1, %award = $calc($findtok($award.on.tok, $1, 1, $asc(.)) - 1), %trigger = $2-
  1408. while ($aw(%i)) {
  1409. tokenize 32 $aw(%i)
  1410. if (%award == $1) {
  1411. if (($2 == 0) || (($2 == 1) && (%trigger == $4)) || (($2 == 2) && (%trigger isnum $4 - $5)) || (($2 == 3) && (%trigger >= $4)) || (($2 == 4) && (%trigger <= $4)) || (($2 == 5) && (%trigger == $getrank($nick,$unit.default))) || (($2 == 6) && ($rand(1,$4) <= $5)) || (($2 == 7) && ($4 $+ * iswm %trigger)) || (($2 == 8) && (* $+ $4 iswm %trigger))) { $award.act($3,%trigger,$6-) }
  1412. }
  1413. inc %i
  1414. }
  1415. }
  1416. alias award.act {
  1417. var %do
  1418. if ($1 == 1) { var %do = tact $rdc($msg.trivia.award($3,$2)) }
  1419. if (($1 == 2) || ($1 == 5)) { var %do = tsay $rdc($msg.trivia.award($3,$2)) }
  1420. if ($1 == 3) { var %do = notice $nick $rdc($msg.trivia.award($3,$2)) }
  1421. if ($1 == 4) { var %do = trivia.credit $nick $3 }
  1422. if ($1 == 5) { var %do = tban $nick }
  1423. if ($1 == 6) { var %do = $eval($replace($3-,*,$2),3) }
  1424. .timer 1 0 schan $chan %do
  1425. }
  1426. alias schan {
  1427. set -u3 %ident $1
  1428. $2-
  1429. }
  1430. alias award.on.tok { return Null.Score.Row.Time.WPM.Join.Question.Uprank.Promotion.Answered.RoundStart.RoundStop.Command.NoAnswer.Hint.HTMLUpdate.Champ.TeamVictory.TeamAnswered }
  1431. alias award.val.tok { return Always.Exactly.Between.At Least.At Most.Ranked.Random.Begins.Ends }
  1432. alias award.do.tok { return Null.Describe.Msg.Notice.Give Points.Ban.Special }
  1433. ;########################################################
  1434. ;# MESSAGING. #
  1435. ;########################################################
  1436. alias -l inform {
  1437. if ((!$1) || (!$server)) { return }
  1438. if (!%respond) {
  1439. var %respondlevel = $getset(status,respondlevel)
  1440. set -u2 %respond .notice $nick
  1441. if (%respondlevel == 2) { }
  1442. if (%respondlevel == 3) { set -u2 %respond msg $iden }
  1443. if (%respondlevel == 4) { set -u2 %respond msg $nick }
  1444. if (%respondlevel == 5) { set -u2 %respond describe $iden }
  1445. }
  1446. $iif($scid(%cid.force),scid %cid.force) $iif($nick == $me, .timer -m 1 $calc($timer(0) * 100)) %respond $check.auto.strip($rdc($1-))
  1447. }
  1448. alias here { set %cid.force $cid }
  1449. alias -l tsay { if (($1) && ($server) && ($me ison $iden)) { $iif($nick == $me, .timer -m 1 $calc($timer(0) * 100)) msg $iden $check.auto.strip($rdc($1-)) } }
  1450. alias -l tact { if (($1) && ($server) && ($me ison $iden)) describe $iden $check.auto.strip($rdc($1-)) }
  1451. alias -l check.auto.strip { return $iif(c isincs $gettok($chan($iden).mode,1,32), $strip($1-), $1-) }
  1452. ;########################################################
  1453. ;# Direct basic processing, for special functions. #
  1454. ;########################################################
  1455. alias -l do.ping {
  1456. if ($eval(% $+ pingantispam. $+ $nick,2)) return
  1457. ctcp $nick ping
  1458. set -u120 % $+ ping. $+ $nick $ticks
  1459. set -u120 % $+ pingchan. $+ $nick $chan
  1460. set -u120 % $+ pingcid. $+ $nick $cid
  1461. }
  1462. alias -l trivia.report {
  1463. inform $msg.trivia.thanks
  1464. write " $+ $triv(dir) $+ / $+ $iif($1 == 29, $triv(additions), $triv(report)) $+ " $nick $adate $time $2-
  1465. }
  1466. ;########################################################
  1467. ;# FRIENDS/BANNED. #
  1468. ;########################################################
  1469. alias addressize {
  1470. if (*!*@* iswm $1) { return $1 }
  1471. return $1 $+ !*@*
  1472. }
  1473. alias -l is.friend {
  1474. var %i = 1
  1475. while ($getset(friend, %i)) {
  1476. if ($addressize($getset(friend, %i)) iswm $address($ifd($1,$nick),5)) { return %i }
  1477. inc %i
  1478. }
  1479. }
  1480. alias -l is.banned {
  1481. var %i = 1
  1482. while ($getset(banned,%i)) {
  1483. if ($addressize($getset(banned, %i)) iswm $address($ifd($1,$nick),5)) { return %i }
  1484. inc %i
  1485. }
  1486. }
  1487. alias -l trivia.banned {
  1488. var %banned = $is.banned($1)
  1489. if (%banned) {
  1490. if (!$1) { inform $msg.trivia.banned }
  1491. return %banned
  1492. }
  1493. }
  1494. alias -l ban.size { return $calc(1 + $setini(banned, 0)) }
  1495. alias -l tban { if (!$trivia.banned($$1)) { setset banned $ban.size $1 } }
  1496. alias -l tunban {
  1497. var %i = $trivia.banned($$1)
  1498. while ($getset(banned, $calc(%i + 1))) {
  1499. setset banned %i $getset(banned, $calc(%i + 1))
  1500. inc %i
  1501. }
  1502. setset banned %i
  1503. }
  1504. ;########################################################
  1505. ;# MISC. #
  1506. ;########################################################
  1507. alias timealias {
  1508. var %ticks = $ticks
  1509. echo -a ... $eval($ $+ $1,2) ... $calc(($ticks - %ticks) / 1000) ... $1
  1510. }
  1511. alias timealias2 {
  1512. var %ticks = $ticks, %i = 1, %result
  1513. while (%i <= $2) {
  1514. var %result = $eval($ $+ $eval($1-,2),2)
  1515. inc %i
  1516. }
  1517. return $calc(($ticks - %ticks) / (1000 * $2))
  1518. }
  1519. alias iden { return $iif($chan, $chan, $iif(%ident, %ident, $tchan(1))) }
  1520. alias idenn { return $iden $+ . $+ $ifd($network,irc) }
  1521. alias -l deleteplayer { if ($getvar($1)) { write -dl $+ $readn $scoresfil } }
  1522. alias -l hof.size { return $line($twin,0) }
  1523. alias -l hof { return $gettok($line($twin,$1),$2,59) }
  1524. alias -l scoresfil { return $nopath($ifd($thget(scores),$ifd($tchan($trivchan, 4), TriviaScores.fil))) }
  1525. alias -l user.score { return $getvar($1,$unit.prefix($2) $+ score) }
  1526. alias -l trivia.on { if (($timer(q $+ $idenn)) || ($timer(end $+ $idenn))) { return $true } }
  1527. alias -l question.on { if ($timer(end $+ $idenn)) { return $true } }
  1528. alias -l tokq { return $thget(tokq) }
  1529. alias -l tok { return $thget(tok $+ $1) }
  1530. alias -l question.time { return $calc(($ticks - $thget(Start)) / 1000) }
  1531. alias -l te { return $getset(team, $1 $+ $prop) }
  1532. alias -l teamscore { return $thget(Score $+ $1) }
  1533. alias -l max.hinted { return $iif($calc($thget(Temp.Hints) + 0) > $calc($thuser(Hint) + 0), $thget(Temp.Hints), $thuser(hint)) }
  1534. alias -l isteam { return $thget(Team. $+ $1) }
  1535. alias -l chkadate { return $iif($getset(status,adate), $+($gettok($1,2,$asc(/)),/,$gettok($1,1,$asc(/)),/,$gettok($1,3,$asc(/))), $1) }
  1536. alias -l team { if ($thget(team) == 1) { return $true } }
  1537. alias -l tempini { return triviascbb.ini }
  1538. alias -l lag { return $iif($thget(lag $+ $1), $thget(lag $+ $1), $getset(lag,$1)) }
  1539. alias -l slag { return $getset(lag,$1) }
  1540. alias -l tc { return $getset(color, $1 $+ $iif($prop == b, -bold) $+ $iif($prop == u, -underline)) }
  1541. alias -l triv { return $getset(trivia, $1) }
  1542. alias -l aw { return $getset(award, $1) }
  1543. ;########################################################
  1544. ;# MESSAGE COLOR CODE SETTING ALIASES. #
  1545. ;########################################################
  1546. alias e1 { return %c1 $+ $1- $+ %c1o }
  1547. alias e2 { return %c2 $+ $trivtran($1-) $+ %c2o }
  1548. alias trivtran {
  1549. if (!$triv(translate)) return $1-
  1550. if ($isfile($transfile)) {
  1551. var %tran = $read($transfile, wtn, $1- $+ ::=*)
  1552. if ($regex(%tran, /.*::=(.*))) { return $regml(1) }
  1553. if (#* iswm $read($transfile,n,1)) var %nowrite 1
  1554. }
  1555. if (!%nowrite) write $transfile $1- $+ ::= $+ $1-
  1556. return $1-
  1557. }
  1558. alias untrans {
  1559. if (!$triv(translate)) return $1-
  1560. if ($isfile($transfile)) {
  1561. var %tran = $read($transfile, wtn, *::= $+ $1-)
  1562. if ($regex(%tran, /(.*)::=.*)) { return $regml(1) }
  1563. }
  1564. return $1-
  1565. }
  1566. alias tranord { return $1 $+ $trivtran($remove($ord($1),$1)) }
  1567. alias transfile { return " $+ $triv(translate) $+ " }
  1568. ;########################################################
  1569. ;# MESSAGES. #
  1570. ;########################################################
  1571. alias -l msg.ping.reply { return $e1($nick) $+ $e2($chr(44) your ping is) $e1($calc(($ticks - % [ $+ ping. [ $+ [ $nick ] ] ] ) / 1000)) $e2(secs.) }
  1572. alias -l msg.answer.correct { return $iif($1,$msg.answer.correct2($2,$3,$4),$e2(Winner:) $e1($getmrank($nick) $nick) $iif(!$getset(status,shownone),$e2(Answer:) $e1($trivq.answer)) $iif(!$getset(hide,time),$e2(Time:) $e1($thget(Time))) $iif(!$getset(hide,streak),$e2(Streak:) $e1($getset(Var $+ $idenn, Row))) $iif(!$getset(hide,score),$e2(Points:) $e1($user.score($nick))) $iif(!$getset(hide,wpm),$e2(WPM:) $e1($int($2))) $iif(!$getset(hide,score),$e2(Rank:) $e1($tranord($3)) $iif($4,$e2(Previously:) $e1($tranord($4))))) }
  1573. alias -l msg.answer.correct2 { return $e1($getmrank($nick) $nick) $e2(got the answer) $+ $iif(!$getset(status,shownone),$e2(:) $e1($trivq.answer),$e2(.)) $iif(!$getset(hide,time),$e2(in) $e1($thget(Time)) $e2(seconds.)) $iif(!$getset(hide,score),$e2(Points:) $e1($user.score($nick))) $e2(Rank:) $e1($tranord($2)) }
  1574. alias -l msg.answer.timeout { return $e2(Time's up! The answer was:) $e1($trivq.answer) }
  1575. alias -l msg.answer.timeout.total { return $e2(Time's up! Remaining answers were:) $e1($left($gettotalremain,850)) }
  1576. alias -l msg.answer.timeout.wpm { return $e2(Time's up!) }
  1577. alias -l msg.answer.timeout.kaos { return $e2(Time's up!) $e1($total.answered) $e2(/) $e1($total.answers) $e2(answered) }
  1578. alias -l msg.answer.timeout.pick { return $e2(Time's up! The answer was:) $e1($left($get.picklist,850)) }
  1579. alias -l msg.answer.timeout2 { return $e2(Time's up!) }
  1580. alias -l msg.question.multi { return $iif($1, $e1($1) $+ $e2(:)) $e2(Multiple Choice:) $e1($right($tok(1),-7)) $+ $e2(;) $e1($get.multianswers) }
  1581. alias -l msg.question.wpm { return $iif($1, $e1($1) $+ $e2(:)) $e1(Type) $+ $e2(:) $e1($tok(2)) }
  1582. alias -l msg.question.total { return $iif($1, $e1($1) $+ $e2(:)) $e2(Give all correct responses:) $e1($right($tok(1),-7)) }
  1583. alias -l msg.question.kaos { return $iif($1, $e1($1) $+ $e2(:)) $e2(Kaos:) $e1($right($tok(1),-5)) }
  1584. alias -l msg.question.points { return $iif($1, $e1($1) $+ $e2(:)) $e2(For) $e1($ifd($thget(temp.points),0)) $e2(point $+ $iif($thget(temp.points) != 1,s) $+ :) $e1($get.question($2-)) }
  1585. alias -l msg.question.scramble { return $iif($1, $e1($1) $+ $e2(:)) $iif($getset(status, sayscramble),$e2(Unscramble the following:)) $iif($2,$e1($2) $+ $e2(:)) $e1($scramble($tok(2)) $+ ?) }
  1586. alias -l msg.question.standard { return $iif($1, $e1($1) $+ $e2(:)) $e1($get.question($ifd($2,$tok(1)))) }
  1587. alias -l msg.question.answer { return $e2(The answer to the last question was $+ :) $e1($thget(answer)) }
  1588. alias -l msg.trivia.stats { return $iif($getvar($1,$2 $+ score), $e1($getmrank($1,$iif(!$2,total,$2)) $1) $+ $e2(:) $iif(!$getset(hide,score),$e2(Rank:) $e1($tranord($getrank($1,$2))) $e2(out of) $e1($hof.size) $+ $e2(.) $e2(Current wins:) $e1($getvar($1,$2 $+ score)) $+ $e2(.)) $iif(!$getset(hide,streak),$e2(Best streak:) $e1($getvar($1,$2 $+ streak)) $+ $e2(.)) $iif(!$getset(hide,time),$e2(Best time:) $e1($getvar($1,$2 $+ time)) $e2(secs.)) $iif(!$getset(hide,wpm),$e2(WPM:) $e1($getvar($1,$2 $+ wpm)) $+ $e2(.)) $iif($getvar($1,lastwin), $e2(Last Win:) $e1($chkadate($getvar($1, lastwin))) $+ $e2(.)), $e2(No such user exists.)) }
  1589. alias -l msg.trivia.rank { return $iif($user.score($1), $e1($getmrank($1) $1) $+ $e2(:) $iif(!$getset(hide,score),$e2(Current wins:) $e1($user.score($1)) $+ $e2(.)) $iif(($mrankon) && ($getnextmrankat($user.score($1)) != 0),$e2(Next rank:) $e1($getnextmrank($user.score($1))) $iif(!$getset(hide,score),$e2(after:) $e1($calc($getnextmrankat($user.score($1)) - $user.score($1))) $e2(more points.))) $iif(!$getset(hide,score),$e2(Rank:) $e1($tranord($getrank($1,$unit.default))) $e2(out of) $e1($hof.size) $+ $e2(.) $iif(%getrank != 1,$e1($calc(%getnextrankat - $user.score($1))) $e2(points below) $e1(%getnextrankuser) $+ $e2(.))),$e2(Error.)) }
  1590. alias -l msg.trivia.state { return $msg.trivia.version $e2(is currently) $e1($trivon) $+ $e2(.) $iif($getset(status,champ),$e2(Champ Mode Set to) $e1($triv(reset)) $e2(Wins.)) $e2(Question file contains) $e1($numq) $e2(lines.) $e1($numl) $e2(questions. Trivia is:) $e1($trivia.onoff) $+ $e2(.) $iif($trivia.on, $iif($question.on,$e2(Time left:) $e1($calc($thget(lagtimedout) - $question.time))) $e2(Question:) $e1($thget(Current)) $+ $e2(/) $+ $e1($thget(Max)) $e2(Team Game:) $e1($team.onoff) $+ $e2(. Trivia Round started by) $e1($thget(SUser)) $e2(on) $e1($thget(STime))) $e2(Bot time is:) $e1($time) }
  1591. alias -l msg.trivia.enabled { return $e2(Enabling the trivia. Have an op type:) $e1($pre $+ $gtok(2)) $e2(to disable the bot.) }
  1592. alias -l msg.trivia.disabled { return $e2(Disabling the trivia. Have an op type:) $e1($pre $+ $gtok(3)) $e2(to enable the bot.) }
  1593. alias -l msg.trivia.victory { return $e2(The game has been beaten by) $e1($1) $e2(all hail the new champ whose name shall reign supreme!) }
  1594. alias -l msg.trivia.unactive { return $e2(The game has been disabled due to inactivity.) }
  1595. alias -l msg.trivia.emptyoff { return $e2(The game has been disabled due lack of players.) }
  1596. alias -l msg.trivia.pause { return $e2(Trivia paused.) $e1($pre $+ $gtok(8)) $e2(to resume.) }
  1597. alias -l msg.trivia.resume { return $e2(Trivia resumed.) }
  1598. alias -l msg.trivia.started { return $e2(Starting the trivia. Round of) $e1($iif($thget(Max) == Unlimited,$gtok(1,5),$thget(Max))) $e2(questions.) $e1($pre $+ $gtok(6)) $e2(to stop. Total:) $e1($numl) }
  1599. alias -l msg.trivia.stopped { return $e2(Stopping the trivia.) $e1($pre $+ $gtok(5) $iif(!$isdis(1),< $+ $trivtran(number) $+ >)) $e2(to restart.) }
  1600. alias -l msg.trivia.awarded { return $e1($1) $e2(was awarded) $e1($2) $e2(point $+ $iif($2 > 1,s) $+ . Current Wins:) $e1($user.score($1)) }
  1601. alias -l msg.trivia.deducted { return $e1($1) $e2(was deducted) $e1($calc($2 * -1)) $e2(point $+ $iif($2 < -1,s) $+ . Current Wins:) $e1($user.score($1)) }
  1602. alias -l msg.trivia.hof { return $msg.trivia.champ(1) $msg.trivia.topstats(score) }
  1603. alias -l msg.trivia.error.midq { return $e2(Cannot pause while trivia game has a question issued.) }
  1604. alias -l msg.trivia.banned { return $e2(You cannot play $+ $chr(44) you are banned.) }
  1605. alias -l msg.trivia.guessed.wpm { return $e2(You already made an attempt.) }
  1606. alias -l msg.trivia.guessed { return $e2(You already guessed) $e1($1) $e2(times.) }
  1607. alias -l msg.trivia.thanks { return $e2(Thank you for your contribution!) }
  1608. alias -l msg.trivia.totalover { return $e2(All correct responses have been given!) }
  1609. alias -l msg.trivia.version { return $e1($trivia.name $+ $chr(44) v $+ $trivia.version) }
  1610. alias -l msg.trivia.web { return $e2(Get your own copy of) $msg.trivia.version $e2(at) $e1($trivia.web) $e2(.) }
  1611. alias -l msg.trivia.onjoin { return $iif($getset(trivia,onjoin),$get.onjoin($getset(trivia,onjoin)),$e2(Welcome) $e1($getmrank($nick) $nick) $+ $e2($chr(44)) $e1($msg.trivia.version) $e2(is activated. Type ') $+ $e1($pre $+ $gtok(33)) $+ $e2(' for a list of commands or just ') $+ $e1($pre $+ $gtok(5)) $+ $e2(' to start a game!)) }
  1612. alias -l msg.trivia.records { return $iif(!$getset(hide,streak),$e2(Record streak:) $e1($recordstat(streak)) $e2(of) $e1($hof(1,4)) $+ $e2(.)) $iif(!$getset(hide,time),$e2(Record time:) $e1($recordstat(time)) $e2(of) $e1($hof(1,3)) $+ $e2(.)) $iif(!$getset(hide,wpm),$e2(Record wpm:) $e1($recordstat(WPM)) $e2(of) $e1($hof(1,5)) $+ $e2(.)) }
  1613. alias -l msg.trivia.themes { return $e2(Current themes are:) $e1($get.themes) }
  1614. alias -l msg.trivia.champ { return $iif($getset(status,champ), $e2(Current champ:) $e1($getset(Champ, $ini($trivini, Champ, 0))) $+ $e2(. $get.champ($1))) }
  1615. alias -l msg.trivia.showteams { return $msg.trivia.showteam(1) $msg.trivia.showteam(2) $iif($getset(team, 4-team), $msg.trivia.showteam(3) $msg.trivia.showteam(4)) }
  1616. alias -l msg.trivia.showteam { return $iif($get.showteams($1), $e2(Current members of) $e1($te($1)) $e2(are:) $e1($get.showteams($1))) }
  1617. alias -l msg.trivia.hintpaused { return $e2(You requested a $pre $+ $gtok(39) less than) $e1($triv(hintpause)) $e2(seconds ago.) }
  1618. alias -l msg.trivia.roundscores { return $e2(Current Round:) $e1($get.roundscores) }
  1619. alias -l msg.trivia.banlist { return $e2(The following people are banned:) $e1($get.banlist) }
  1620. alias -l msg.team.start { return $e2(Team Trivia: ') $+ $e1($pre $+ $gtok(34) 1) $+ $e2(' or ') $+ $e1($pre $+ $gtok(34) 2) $+ $iif($getset(team,4-team),$e2(' or ') $+ $e1($pre $+ $gtok(34) 3) $+ $e2(' or ') $+ $e1($pre $+ $gtok(34) 4)) $+ $e2(' to add to a team.) }
  1621. alias -l msg.team.add { return $e2(Team:) $e1($1) $e2(has a new member:) $e1($2) }
  1622. alias -l msg.team.joinover { return $e2(I am sorry no more people can join/change at this time.) }
  1623. alias -l msg.team.toomany { return $e2(That team currently has enough players.) }
  1624. alias -l msg.team.joinbefore { return $e2(Teams are no longer accepting player.) }
  1625. alias -l msg.team.alreadyon { return $e2(You are already on that team.) }
  1626. alias -l msg.team.score { return $e1($getmrank($nick) $nick) $e2(won. Point for) $e1($te($isteam($nick))) $+ $e2(.) $msg.team.cscore(1,2) $iif($getset(team,4-team), $msg.team.cscore(3,4)) }
  1627. alias -l msg.team.cscore { return $e1($te($1)) $e2(has) $e1($thget(Score $+ $1)) $e2(points.) $e1($te($2)) $e2(has) $e1($thget(Score $+ $2)) $e2(points.) }
  1628. alias -l msg.team.over { return %c2 $+ $replace($1-, *t1, %c2o $+ $e1($te(1)) $+ %c2,*t2, %c2o $+ $e1($te(2)) $+ %c2,*t3,%c2o $+ $e1($te(3)) $+ %c2,*t4,%c2o $+ $e1($te(4)) $+ %c2) $+ %c2o $+ $e2(!) }
  1629. alias -l msg.hint.words { return $e2(Here's $iif($getset(status,sayhintnum),your $tranord($ifd($thuser(hint),$thget(Temp.Hints))), a) hint $+ $chr(44)) $e2(there $iif($$get.hint(words) == 1,is,are)) $e1($$get.hint(words)) $e2(word $+ $iif($$get.hint(words) != 1,s) in the answer.) }
  1630. alias -l msg.hint.vowels { return $e2(Here's $iif($getset(status,sayhintnum),your $tranord($ifd($thuser(hint),$thget(Temp.Hints))), a) hint $+ $chr(44)) $e2(the vowels are:) $e1($$get.hint(vowels)) }
  1631. alias -l msg.hint.last { return $e2(Here's $iif($getset(status,sayhintnum),your $tranord($ifd($thuser(hint),$thget(Temp.Hints))), a) hint $+ $chr(44)) $e2(the last character in the answer is:) $e1($$get.hint(last)) }
  1632. alias -l msg.hint.space { return $e2(Here's $iif($getset(status,sayhintnum),your $tranord($ifd($thuser(hint),$thget(Temp.Hints))), a) hint $+ $chr(44)) $e2(answer space:) $e1($$get.hint(space)) }
  1633. alias -l msg.hint.scramble { return $e2(Here's $iif($getset(status,sayhintnum),your $tranord($ifd($thuser(hint),$thget(Temp.Hints))), a) hint $+ $chr(44)) $e2(scrambled:) $e1($$get.hint(scramble)) }
  1634. alias -l msg.hint.hint { return $e2(Here's $iif($getset(status,sayhintnum),your $tranord($ifd($thuser(hint),$thget(Temp.Hints))), a) hint $+ $chr(44)) $e1($$get.hint(hint,$1)) }
  1635. alias -l msg.features.built { return $e2(Trivia scores updated:) $e1($1) $e2(!) }
  1636. alias -l msg.trivia.hof.error { return $e1($pre $+ $gtok(14) < $+ $gtok(1,3) $+ $chr(124) $+ $gtok(2,3) $+ $chr(124) $+ $gtok(3,3) $+ $chr(124) $+ $gtok(4,3) $+ > < $+ $gtok(1,4) $+ $chr(124) $+ $gtok(2,4) $+ $chr(124) $+ $gtok(3,4) $+ $chr(124) $+ $gtok(4,4) $+ $chr(124) $+ $gtok(5,4) $+ >) $e2(to display the hall of fame table of your choice.) }
  1637. alias -l msg.trivia.stats.error { return $e1($pre $+ $gtok(11) < $+ $trivtran(player) $+ $chr(124) $+ $trivtran(number) $+ > < $+ $gtok(1,4) $+ $chr(124) $+ $gtok(2,4) $+ $chr(124) $+ $gtok(3,4) $+ $chr(124) $+ $gtok(4,4) $+ $chr(124) $+ $gtok(5,4) $+ >) $e2(to display stats on that individual.) }
  1638. alias -l msg.trivia.op.ban { return $e2(User is banned.) }
  1639. alias -l msg.trivia.error.ban { return $e2(You need to specify a user or address to ban.) }
  1640. alias -l msg.trivia.error.unban { return $e2(You need to specify a user or address to unban.) }
  1641. alias -l msg.trivia.op.unban { return $e2(User is unbanned.) }
  1642. alias -l msg.trivia.error.badnum { return $e2(You need to specify a valid question number to be asked.) }
  1643. alias -l msg.trivia.op.ask { return $e2(Question will be asked.) }
  1644. alias -l msg.trivia.error.noquestion { return $e2(You need append the question that is to be added directly into the question file.) }
  1645. alias -l msg.trivia.error.nodelim { return $e2(You need at least one delimiter to indicate: question $+ $triv(delimiter) $+ answer) }
  1646. alias -l msg.trivia.op.added { return $e2(Question has been added.) }
  1647. alias -l msg.trivia.error.nosearch { return $e2(You need at least some search text.) }
  1648. alias -l msg.trivia.op.find { return $iif($get.find($1-),$e1($get.find($1-)),$msg.trivia.error.find) }
  1649. alias -l msg.trivia.error.find { return $e2(That text was not found.) }
  1650. alias -l msg.trivia.error.topx { return $e2(Range too great.) }
  1651. alias -l msg.trivia.error.numberrequired { return $e2(You must specify a valid team number for) $e1($1-) $e2(.) }
  1652. alias -l msg.trivia.error.playerrequired { return $e2(You must specify a player.) }
  1653. alias -l msg.trivia.echoanswer { return $e2(Answer:) $e1($trivq.answer) }
  1654. ;########################################################
  1655. ;# Help structure. #
  1656. ;########################################################
  1657. alias -l givehelp {
  1658. if (!$1-) {
  1659. inform $e2(Commands:) $e1($pre $+ $gtok(6) $pre $+ $gtok(5) $pre $+ $gtok(39) $pre $+ $gtok(34) $pre $+ $gtok(29) $pre $+ $gtok(30) $pre $+ $gtok(31) $pre $+ $gtok(27) $pre $+ $gtok(28) $pre $+ $gtok(14) $pre $+ $gtok(19) $pre $+ $gtok(16) $pre $+ $gtok(21) $pre $+ $gtok(25) $pre $+ $gtok(38) $pre $+ $gtok(23) $pre $+ $gtok(26) $pre $+ $gtok(44) $pre $+ $gtok(37) $pre $+ $gtok(11) $pre $+ $gtok(1) $pre $+ $gtok(3) $pre $+ $gtok(2) $pre $+ $gtok(10) $pre $+ $gtok(41) $pre $+ $gtok(42) $pre $+ $gtok(43) $pre $+ $gtok(35) $pre $+ $gtok(36) $pre $+ $gtok(4) $pre $+ $gtok(7) $pre $+ $gtok(8) $pre $+ $gtok(62))
  1660. inform $e1($pre $+ $gtok(33) < $+ $trivtran(command) $+ >) $e2(for specific help. Some commands may be disabled.)
  1661. }
  1662. var %ctok = $iif($pre $+ * iswm $1, $ctok($right($1,$calc(-1 * $len($pre)))), $ctok($1))
  1663. if ((%ctok == 1)) { inform $e1($gtok(%ctok) -----) $e2(Displays the state of the bot) }
  1664. if ((%ctok == 6)) { inform $e1($gtok(%ctok) ---) $e2(Stops trivia) }
  1665. if ((%ctok == 3)) { inform $e1($gtok(%ctok) ----) $e2(Enables trivia bot) }
  1666. if ((%ctok == 2)) { inform $e1($gtok(%ctok) ---) $e2(Disables trivia bot) }
  1667. if ((%ctok == 7)) { inform $e1($gtok(%ctok) ----) $e2(Pauses trivia bot) }
  1668. if ((%ctok == 8)) { inform $e1($gtok(%ctok) ----) $e2(Resumes trivia bot) }
  1669. if ((%ctok == 4)) { inform $e1($gtok(%ctok) < $+ $trivtran(command) $+ > -) $e1($gtok(1,2)) $+ $e2($chr(44)) $e1($gtok(2,2)) $+ $e2($chr(44)) $e1($gtok(3,2)) $+ $e2($chr(44)) $e1($gtok(4,2)) $+ $e2($chr(44)) $e1($gtok(5,2)) $+ $e2($chr(44)) $e1($gtok(6,2)) $+ $e2($chr(44)) $e1($gtok(7,2)) $+ $e2($chr(44)) $e1($gtok(8,2)) $+ $e2($chr(44) commands to allow ops to control the trivia bot.) }
  1670. if ((%ctok == 5)) { inform $e1($gtok(%ctok) x --) $e2(Starts trivia, x can be a number, "unlimited", <theme> or "team" for team mode) }
  1671. if ((%ctok == 39)) { inform $e1($gtok(%ctok) ------) $e2(Gives a hint) }
  1672. if ((%ctok == 42)) { inform $e1($gtok(%ctok) ------) $e2(Gives the last character of the answer) }
  1673. if ((%ctok == 41)) { inform $e1($gtok(%ctok) ------) $e2(Gives the number of words in the answer) }
  1674. if ((%ctok == 43)) { inform $e1($gtok(%ctok) ------) $e2(Gives the vowels of the answer) }
  1675. if ((%ctok == 34)) { inform $e1($gtok(%ctok) x ----) $e2(Joins a team, must be in team mode, x can be a 1 or 2) }
  1676. if ((%ctok == 29)) { inform $e1($gtok(%ctok) -------) $e2(Allows you to add questions: $pre $+ $gtok(29) What is the square root of 4*two*2) }
  1677. if ((%ctok == 30)) { inform $e1($gtok(%ctok) ----) $e2(Lets you report problems with the questions: $pre $+ $gtok(30) The square root of 4 is also -2) }
  1678. if ((%ctok == 31)) { inform $e1($gtok(%ctok) -----) $e2(Checks your lag from the bot) }
  1679. if ((%ctok == 27)) { inform $e1($gtok(%ctok) ---) $e2(Displays the version of the bot) }
  1680. if ((%ctok == 28)) { inform $e1($gtok(%ctok) -------) $e2(Displays the web page for the bot) }
  1681. if ((%ctok == 14)) { inform $e1($gtok(%ctok) < $+ $gtok(1,3) $+ $chr(124) $+ $gtok(2,3) $+ $chr(124) $+ $gtok(3,3) $+ $chr(124) $+ $gtok(4,3) $+ > < $+ $gtok(1,4) $+ $chr(124) $+ $gtok(2,4) $+ $chr(124) $+ $gtok(3,4) $+ $chr(124) $+ $gtok(4,4) $+ $chr(124) $+ $gtok(5,4) $+ > -------) $e2(Displays the hall of fame, for requested entry) }
  1682. if ((%ctok == 19)) { inform $e1($gtok(%ctok) ---) $e2(Displays the record times. Same as $pre $+ $gtok(14) $gtok(2,3)) }
  1683. if ((%ctok == 16)) { inform $e1($gtok(%ctok) --) $e2(Displays the record streaks. Same as $pre $+ $gtok(14) $gtok(3,3)) }
  1684. if ((%ctok == 21)) { inform $e1($gtok(%ctok) ----) $e2(Displays the record words per minute. Same as $pre $+ $gtok(14) $gtok(4,3)) }
  1685. if ((%ctok == 25)) { inform $e1($gtok(%ctok) ---) $e2(Displays the record $gtok(2,3) & $gtok(3,3) & $gtok(4,3)) }
  1686. if ((%ctok == 23)) { inform $e1($gtok(%ctok) ----) $e2(Displays the bot's server) }
  1687. if ((%ctok == 26)) { inform $e1($gtok(%ctok) -----) $e2(Displays the champ stats) }
  1688. if ((%ctok == 36)) { inform $e1($gtok(%ctok)) $e2(Displays the scores for the current round.) }
  1689. if ((%ctok == 35)) { inform $e1($gtok(%ctok)) $e2(Displays the teams and which players are on each.) }
  1690. if ((%ctok == 44)) { inform $e1($gtok(%ctok) ----) $e2(Repeats the question) }
  1691. if ((%ctok == 37)) { inform $e1($gtok(%ctok) ----) $e2(Provides the answer to the last question to an op who requests it) }
  1692. if ((%ctok == 38)) { inform $e1($gtok(%ctok) ----) $e2(After half the time to answer has expired allows an instant timeout.) }
  1693. if ((%ctok == 10)) { inform $e1($gtok(%ctok) ----) $e2(Lists available themes) }
  1694. if ((%ctok == 11)) { inform $e1($gtok(%ctok) ------) $e2(Returns your current stats, or $pre $+ $gtok(11) <player> for somebody else) }
  1695. if ((%ctok == 62)) { inform $e1($gtok(%ctok) ----) $e2(Displays score required for next promotion.) }
  1696. }
  1697. ;########################################################
  1698. ;# MESSAGE PROCESSES. #
  1699. ;########################################################
  1700. alias -l get.question {
  1701. var %gq $1-
  1702. if (!$getset(status,noautoqm)) { var %aqm = 1 }
  1703. if ($right(%gq,1) isin :!?.-) { var %aqm = 0 }
  1704. if ($right(%gq,1) isin -) { var %gq = $left(%gq,-1) }
  1705. if ($thget(temp.bonus) == S) { %gq = $scramble(%gq) }
  1706. if ($thget(temp.bonus) == R) { %gq = $reverse(%gq) }
  1707. if ($thget(temp.bonus) == G) { %gq = $scatter(75,%gq) }
  1708. return %gq $+ $iif(%aqm,?)
  1709. }
  1710. alias -l get.banlist {
  1711. var %i = 1, %b.temp
  1712. while ($getset(banned,%i)) {
  1713. var %b.temp = %b.temp $getset(banned,%i)
  1714. inc %i
  1715. }
  1716. return %b.temp
  1717. }
  1718. alias -l get.roundscores {
  1719. if ($window(@round $+ $idenn)) { window -c @round $+ $idenn }
  1720. window -hn @round $+ $idenn
  1721. .timer 1 0 window -c @round $+ $idenn
  1722. var %i = 1
  1723. while ($hmatch(Trivia $+ $idenn, Score.*, %i)) {
  1724. var %j = $line(@round $+ $idenn,0)
  1725. while (( $hget(Trivia $+ $idenn, $hmatch(Trivia $+ $idenn, Score.*, %i)) > $thget(Score. $+ $line(@round $+ $idenn, %j))) && (%j >= 1)) { dec %j }
  1726. iline @round $+ $idenn $calc(%j + 1) $remove($hmatch(Trivia $+ $idenn, Score.*, %i),Score.)
  1727. inc %i
  1728. }
  1729. var %roundscores
  1730. %i = 1
  1731. while (%i <= 15) {
  1732. %roundscores = %roundscores $iif($line(@round $+ $idenn,%i),$line(@round $+ $idenn,%i) $+ - $+ $thget(Score. $+ $line(@round $+ $idenn,%i)))
  1733. inc %i
  1734. }
  1735. return %roundscores
  1736. }
  1737. alias sortroundscores {
  1738. var %j = 1
  1739. while (%j <= $line(@round $+ $idenn,0)) {
  1740. var %k = %j
  1741. while (%k <= $line(@round $+ $idenn,0)) {
  1742. if ($thget(Score. $+ $line(@round $+ $idenn, %j)) > $thget(Score. $+ $line(@round $+ $idenn, %k))) {
  1743. var %temp.name = $line(@round $+ $idenn, %j)
  1744. rline @round $+ $idenn %j $line(@round $+ $idenn, %k)
  1745. rline @round $+ $idenn %j %temp.name
  1746. }
  1747. inc %k
  1748. }
  1749. inc %j
  1750. }
  1751. }
  1752. alias get.showteams {
  1753. var %i = 1
  1754. while ($hmatch(Trivia $+ $idenn, Team.*, %i)) {
  1755. if ($isteam($remove($hmatch(Trivia $+ $idenn, Team.*, %i),Team.)) == $1) { var %temp.team = %temp.team $remove($hmatch(Trivia $+ $idenn, Team.*, %i),Team.) }
  1756. inc %i
  1757. }
  1758. return %temp.team
  1759. }
  1760. alias -l get.champ {
  1761. if (($setini(Champ,0) <= 0) || (!$getset(status,champ))) { return }
  1762. var %temp.champ, %i = $calc($ini($trivini, Champ, 0) - 1)
  1763. while ((%i >= 1) && (!$1)) {
  1764. var %temp.champ = %temp.champ $getset(Champ, %i)
  1765. dec %i
  1766. }
  1767. return %temp.champ
  1768. }
  1769. alias -l get.multianswers {
  1770. var %i 2, %answers.t
  1771. if ($window(@multianswer)) { window -c @multianswer }
  1772. window -h @multianswer
  1773. .timer 1 0 window -c @multianswer
  1774. while ($tok(%i)) {
  1775. aline @multianswer $tok(%i)
  1776. inc %i
  1777. }
  1778. filter -wwct 1 13 @multianswer @multianswer *
  1779. var %i 2
  1780. var %answers.t $line(@multianswer,1)
  1781. while ($line(@multianswer, %i)) { var %answers.t = %answers.t $+ , $line(@multianswer, %i), %i = $calc(%i + 1) }
  1782. return %answers.t
  1783. }
  1784. alias -l get.themes {
  1785. var %i = 1
  1786. while ($getset(triviamode $+ %i, name)) {
  1787. var %temp.themes = %temp.themes $getset(triviamode $+ %i, name)
  1788. inc %i
  1789. }
  1790. return $e1(%temp.themes)
  1791. }
  1792. alias -l get.onjoin {
  1793. return %c2 $+ $replace($1-,$chr(35),$+(%c2o,%c1,$chan,%c1o,%c2),*, $+(%c2o,%c1,$getmrank($nick) $nick,%c1o,%c2),@, $+(%c2o,%c1,$tranord($getrank($nick,$unit.default)),%c1o,%c2),^, $+(%c2o,%c1,$ifd($getvar($nick,score),0),%c1o,%c2)) $+ %c2o
  1794. }
  1795. alias -l get.picklist {
  1796. if ($tokq <= 2) return $tok(2)
  1797. var %i = 2, %picklist
  1798. while (%i <= $tokq) {
  1799. %picklist = %picklist $tok(%i)
  1800. if (%i < $calc($tokq - 1)) { %picklist = %picklist $+ $chr(44) }
  1801. if (%i == $calc($tokq - 1)) { %picklist = %picklist $trivtran(and) }
  1802. inc %i
  1803. }
  1804. return %picklist
  1805.  
  1806. }
  1807. ;########################################################
  1808. ;# HTML BUILD #
  1809. ;########################################################
  1810. alias bgcolor { return #000000 }
  1811. alias textcolor { return #339933 }
  1812. alias linkcolor { return #33FF00 }
  1813. alias alinkcolor { return #666600 }
  1814. alias vlinkcolor { return #666666 }
  1815.  
  1816. alias htmlbuild {
  1817. var %start.ticks = $ticks
  1818. set %htmlfile " $+ $mircdir $+ \ $+ $ifd($getset(build,genname),triv.htm) $+ "
  1819. sort score $unit.default
  1820. if ($exists(%htmlfile)) { .remove %htmlfile }
  1821. write %htmlfile <HTML><head><title> $+ $iden $iif($network,$trivtran(Trivia Scores on) $network) $+ </title></head>
  1822. write %htmlfile <body bgcolor=" $+ $bgcolor $+ " text=" $+ $textcolor $+ " link=" $+ $linkcolor $+ " alink=" $+ $alinkcolor $+ " vlink=" $+ $vlinkcolor $+ ">
  1823. write %htmlfile $trivtran(The scores file was compiled by:) $strip($msg.trivia.version) <br>
  1824. write %htmlfile $trivtran(This file was created on:) $time $chkadate($date) <br>
  1825. write %htmlfile <table BORDER COLS=5 WIDTH="80%" ><tr><tr>
  1826. write %htmlfile <th> $+ $trivtran(Ranking) $+ </th><th> $+ $trivtran(Name) $+ </th> $+ $iif(!$getset(hide,score),<th> $+ $trivtran(Score) $+ </th>) $+ $iif(!$getset(hide,time),<th> $+ $trivtran(Best Time) $+ </th>) $+ $iif(!$getset(hide,streak),<th> $+ $trivtran(Best Streak) $+ </th>) $+ $iif(!$getset(hide,wpm),<th> $+ $trivtran(Best WPM) $+ </th>) $+ </tr>
  1827. var %i = 1, %j = $hof.size
  1828. if ($getset(build,top) isnum 1 - %j) { %j = $getset(build,top) }
  1829. if ($version >= 6.15) {
  1830. set %count.num.t %i
  1831. filter -wkr %i $+ - $+ %j $twin htmlprocess
  1832. unset %count.num.t
  1833. }
  1834. else {
  1835. while (%i <= %j) {
  1836. write %htmlfile <tr><th> $+ %i $+ </th><td> $+ $hof(%i,1) $+ </td> $+ $iif(!$getset(hide,score),<td> $+ $hof(%i,$gttok($unit.mark $+ score)) $+ </td>) $+ $iif(!$getset(hide,time),<td> $+ $hof(%i,$gttok($unit.mark $+ time)) $+ </td>) $+ $iif(!$getset(hide,streak),<td> $+ $hof(%i,$gttok($unit.mark $+ streak)) $+ </td>) $+ $iif(!$getset(hide,wpm),<td> $+ $hof(%i,$gttok($unit.mark $+ wpm)) $+ </td>) $+ </tr>
  1837. inc %i
  1838. }
  1839. }
  1840. write %htmlfile </table><br>
  1841. write %htmlfile $trivtran(Made with) <a href=" $+ $trivia.web $+ " "target="_top"> $+ $strip($msg.trivia.version) $+ </a><br>
  1842. echo -a $e2(Finished:) $e1(%htmlfile) $e2(is written. In) $e1($calc(($ticks - %start.ticks) / 1000)) $+ $e2(secs.)
  1843. unset %htmlfile
  1844. }
  1845. alias htmlprocess {
  1846. write %htmlfile <tr><th> $+ %count.num.t $+ </th><td> $+ $gettok($1,1,59) $+ </td> $+ $iif(!$getset(hide,score),<td> $+ $gettok($1,$gttok($unit.mark $+ score),59) $+ </td>) $+ $iif(!$getset(hide,time),<td> $+ $gettok($1,$gttok($unit.mark $+ time),59) $+ </td>) $+ $iif(!$getset(hide,streak),<td> $+ $gettok($1,$gttok($unit.mark $+ streak),59) $+ </td>) $+ $iif(!$getset(hide,wpm),<td> $+ $gettok($1,$gttok($unit.mark $+ wpm),59) $+ </td>) $+ </tr>
  1847. inc %count.num.t
  1848. }
  1849.  
  1850. alias xmlbuild {
  1851. if ($version < 6.15) {
  1852. echo -a Update to a later version of mIRC. This code will not work with versions prior to 6.15.
  1853. return
  1854. }
  1855. var %start.ticks = $ticks
  1856. set %xmlfile " $+ $mircdir $+ \ $+ triv-rss-091.xml $+ "
  1857. sort score $unit.default
  1858. if ($exists(%xmlfile)) { .remove %xmlfile }
  1859.  
  1860. write %xmlfile <?xml version="1.0" ?>
  1861. write %xmlfile <rss version="0.91">
  1862. write %xmlfile <channel>
  1863. write %xmlfile <title> $trivia.name </title>
  1864. write %xmlfile <link> $trivia.web </link>
  1865. write %xmlfile <description>Latest Scores</description>
  1866. write %xmlfile <language>en-us</language>
  1867. write %xmlfile <copyright>Copyright $asctime(yyyy) $+ </copyright>
  1868. write %xmlfile <lastBuildDate> $asctime($gmt, ddd $+ $chr(44) dd mmm yyyy HH:nn:ss) GMT </lastBuildDate>
  1869.  
  1870. var %i = 1, %j = $hof.size
  1871. if ($getset(build,top) isnum 1 - %j) { %j = $getset(build,top) }
  1872. set %count.num.t %i
  1873. filter -wkr %i $+ - $+ %j $twin xmlprocess
  1874. unset %count.num.t
  1875.  
  1876. write %xmlfile </channel>
  1877. write %xmlfile </rss>
  1878.  
  1879. echo -a $e2(Finished:) $e1(%xmlfile) $e2(is written. In) $e1($calc(($ticks - %start.ticks) / 1000)) $+ $e2(secs.)
  1880. unset %xmlfile
  1881. }
  1882. alias xmlprocess {
  1883. write %xmlfile <item>
  1884. write %xmlfile <title> $+ $gettok($1,1,59) $+ </title>
  1885. write %xmlfile <description> Score: $gettok($1,$gttok($unit.mark $+ score),59) Record Time: $gettok($1,$gttok($unit.mark $+ time),59) Streak: $gettok($1,$gttok($unit.mark $+ streak),59) WPM: $gettok($1,$gttok($unit.mark $+ wpm),59) </description>
  1886. write %xmlfile <link> $+ $trivia.web $+ </link>
  1887. write %xmlfile </item>
  1888. inc %count.num.t
  1889. }
  1890. alias xmlbuildon { setset build xml 1 }
  1891. alias xmlbuildoff { setset build xml 0 }
  1892.  
  1893. alias unit.mark { return $iif($unit.default != total,$unit.default) }
  1894. alias htmltrigger {
  1895. if ($getset(build,xml)) { xmlbuild }
  1896. if ($getset(build,generate)) { htmlbuild }
  1897. if (($getset(build,auto)) && ($exists($+(",$triv(dir),\,ftpbatch.txt,")))) { run -n ftp $+(-s:,",$triv(dir),\,ftpbatch.txt") }
  1898. if (($getset(build,copy)) && ($exists(" $+ $getset(build,from) $+ ")) && ($exists(" $+ $getset(build,to) $+ "))) { .copy -o " $+ $getset(build,from) $+ " " $+ $getset(build,to) $+ \ $+ $nopath($getset(build,from)) $+ " }
  1899. if ($getset(build,web)) { tsay $msg.features.built($getset(build,web)) }
  1900. award HTMLUpdate 0
  1901. }
  1902. ;########################################################
  1903. ;# SPECIAL COMMANDS. #
  1904. ;# /find <text> : Finds the text in your current #
  1905. ;# question files for the channel. #
  1906. ;# /add <question> : directly adds the given question. #
  1907. ;# /ask <question|#> : Force asks a given question. #
  1908. ;# /sortfile : Sorts the selcted file alphanumerically. #
  1909. ;# /killdup : Kills exact duplicate questions in file. #
  1910. ;# /killfixdup : Uses internal fix routine to kill same #
  1911. ;# questions with a little more checking. #
  1912. ;# /reformfile <filename> <regex> <regex> : Uses the #
  1913. ;# regsub command to reform a file. For example: #
  1914. ;# /reformfile q.txt ([^\|]+)\|([^\*]+) \2*\1 #
  1915. ;# would change q.txt from answer|question form to #
  1916. ;# question*answer form. You need to know regex. #
  1917. ;# /tpurge <#> : Moves everybody with less that # point #
  1918. ;# to a secondary file called backburner. If they #
  1919. ;# score another point they will be restored. #
  1920. ;# /tdpurge <#> : Anybody who hasn't played in # days. #
  1921. ;# /copyentry <filefrom> <fileto> <nickname> : Copies. #
  1922. ;# /debackburn : Reverses effect of /tpurge commands. #
  1923. ;# /mergefiles <filefrom> <fileto> : Merges two score #
  1924. ;# files into one score file. #
  1925. ;# /tfind : finds score files that should be merged. #
  1926. ;# /tmerge <fromplayer> <toplayer> : merge player score #
  1927. ;# /trename <fromplayer> <toplayer> : renames player #
  1928. ;# /triviaad <#> <message> : displays message every <#> #
  1929. ;# of minutes. #
  1930. ;# /triviaad2 <#> <message> : Same but colored. #
  1931. ;# /truntimes <timeon> <timeoff> : turns bot on and off #
  1932. ;# only plays during the given times. #
  1933. ;########################################################
  1934. alias find { echo $get.find($1-) }
  1935. alias add { if ($exists($qfile(1))) write $qfile(1) $1- }
  1936. alias openquestions {
  1937. if ($exists($qfile(1))) run $qfile(1)
  1938. }
  1939. alias ask {
  1940. var %asknm = 1
  1941. while ($thget(Ask $+ %asknm)) { inc %asknm }
  1942. if ($hget(Trivia $+ $idenn)) { thset Ask $+ %asknm $iif($1-,$1-,$$?="Force which question number(#) or ask what question(Question*Answer)?") }
  1943. }
  1944. alias sortfile {
  1945. var %file = " $+ $sfile($mircdir) $+ "
  1946. filter -ffct 1 13 %file %file *
  1947. }
  1948. alias killdup {
  1949. var %file = " $+ $sfile($mircdir) $+ ", %i = 0
  1950. window -hn @temp.window
  1951. window -hn @temp.windowfile
  1952. filter -fwct 1 13 %file @temp.windowfile *
  1953. while ($line(@temp.windowfile,0) >= %i) {
  1954. var %line = $line(@temp.windowfile,%i)
  1955. if (%line) { aline -n @temp.window %line }
  1956. unset %line
  1957. inc %i
  1958. }
  1959. filter -wfc @temp.window %file *
  1960. window -c @temp.window
  1961. window -c @temp.windowfile
  1962. }
  1963. alias killfixdup {
  1964. var %file = $sfile($mircdir), %i = 0, %fixed = 0
  1965. window -hn @temp.windowfix
  1966. window -hn @temp.windowfile
  1967. .timer 1 0 window -c @temp.windowfix
  1968. .timer 1 0 window -c @temp.windowfile
  1969. filter -fwct 1 13 " $+ %file $+ " @temp.windowfile *
  1970. while ($line(@temp.windowfile,0) >= %i) {
  1971. if ($line(@temp.windowfile,%i)) {
  1972. aline -n @temp.windowfix $fix($line(@temp.windowfile,%i))
  1973. if (%fixed != $line(@temp.windowfix,0)) { write $nopath(%file) $+ .fix $line(@temp.windowfile,%i) }
  1974. var %fixed = $line(@temp.windowfix,0)
  1975. }
  1976. inc %i
  1977. }
  1978. echo -s Killed dups, saved as %file $+ .fix $+ !
  1979. }
  1980. alias reformfile {
  1981. if (!$exists($1)) { echo File not found. | return }
  1982. var %i = 1, %replace, %matchez = 0
  1983. while (%i <= $lines($1)) {
  1984. if ($regsub($read($1,%i),$2, $3, %replace)) { write $1 $+ .ref %replace | inc %matchez }
  1985. inc %i
  1986. }
  1987. echo Done, %matchez lines replaced, saved as $1 $+ .ref
  1988. }
  1989. alias tpurge {
  1990. var %i = 1
  1991. sort score
  1992. while ($hof(%i,1)) {
  1993. if ($hof(%i,2) <= $$1) { copyentry $$scoresfil $$tempfil $hof(%i,1) }
  1994. inc %i
  1995. }
  1996. }
  1997. alias tdpurge {
  1998. var %i = 1
  1999. sort score
  2000. while ($hof(%i,1)) {
  2001. if ($round($calc(($ctime($date) - $ctime($hof(%i,6)))/86400),0) > $$1) { copyentry $$scoresfil $$tempfil $hof(%i,1) }
  2002. inc %i
  2003. }
  2004. }
  2005. alias copyentry {
  2006. if (!$exists($1)) { echo -a $1 does not exist. | return }
  2007. if (!$exists($2)) { echo -a $2 does not exist. | return }
  2008. write $2 $$read($1, w, $3 $+ ;*)
  2009. write -dl $+ $$readn $1
  2010. }
  2011. alias debackburn { mergefiles $tempfil $scoresfil }
  2012. alias mergefiles {
  2013. echo Merging files $1 and $2
  2014. if (!$exists($1)) { echo -a $1 does not exist. | return }
  2015. if (!$exists($2)) { echo -a $2 does not exist. | return }
  2016. while ($lines($1) > 0) {
  2017. if ($numtok($read($1,1),$asc(;)) <= 1) { echo -a ERROR, file does not appear to be standard format. | return }
  2018. var %player = $gettok($read($1,1),1,$asc(;))
  2019. mergeentry $1 $2 %player
  2020. }
  2021. }
  2022. alias mergeentry {
  2023. if (!$exists($1)) { echo -a $1 does not exist. | return }
  2024. if (!$exists($2)) { echo -a $2 does not exist. | return }
  2025. var %merger = $read($1, wnt, $3 $+ ;*)
  2026. var %other = $read($2, wnt, $3 $+ ;*)
  2027. var %merger.line = $readn
  2028. if (%merger) {
  2029. if (%other) {
  2030. write $2 PlayerMoving= $+ %merger
  2031. write -d1 $+ %merger.line $1
  2032. tmergeplayers PlayerMoving= $+ $3 $3
  2033. }
  2034. else copyentry $1 $2 $3
  2035. }
  2036. }
  2037. alias tfind {
  2038. if ($exists($scoresfil)) {
  2039. echo -a Finding Duplicate Entries
  2040. window -h $twin
  2041. filter -fwc $scoresfil $twin
  2042. var %k = $line($twin,0)
  2043. while (%k > 0) {
  2044. %hostname = $replace($mask($gettok($line($twin,%k), $gttok(address), 59),2),.,\.,*,.*)
  2045. if (%hostname) {
  2046. var %j = 1
  2047. var %fline = $fline($twin,$str([^;]*;,7) $+ %hostname $+ ;.*,1,2)
  2048. while (%fline) {
  2049. if (%j == 2) {
  2050. echo -a Multiple references:
  2051. echo -a ... $gettok($line($twin,%prev.fline),1,59) ... $gettok($line($twin,%prev.fline),$gttok(address),59)
  2052. }
  2053. if (%j >= 2) {
  2054. echo -a ... $gettok($line($twin,%fline),1,59) ... $gettok($line($twin,%fline),$gttok(address),59)
  2055. dline $twin %prev.fline
  2056. }
  2057. inc %j
  2058. var %prev.fline = %fline
  2059. var %fline = $fline($twin,$str([^;]*;,7) $+ %hostname $+ ;.*,2,2)
  2060. }
  2061. }
  2062. dec %k
  2063. }
  2064. }
  2065. echo -a To combine entries use: /tmerge <from-nick> <to-nick>
  2066. window -c $twin
  2067. }
  2068. alias tmerge {
  2069. tmergeplayers $1 $2
  2070. tsay $msg.trivia.stats($2)
  2071. }
  2072. alias tmergeplayers {
  2073. if (($$getvar($$1,score)) && ($$getvar($$2,score))) {
  2074. var %i = $numtok($unit.tokens, $asc(.))
  2075. while (%i > 0) {
  2076. var %unit = $gettok($unit.tokens, %i, $asc(.))
  2077. if ($getvar($1, %unit) == $eval($ $+ get. $+ %unit,2)) {
  2078. if ($getvar($2, %unit) == $eval($ $+ get. $+ %unit,2)) {
  2079. setvar $2 %unit $+ score $calc($getvar($2,%unit $+ score) + $getvar($1,%unit $+ score))
  2080. if ($getvar($1, %unit $+ WPM) > $getvar($2,%unit $+ WPM)) { setvar $2 %unit $+ WPM $getvar($1, %unit $+ WPM) }
  2081. if ($getvar($1, %unit $+ streak) > $getvar($2,%unit $+ streak)) { setvar $2 %unit $+ streak $getvar($1, %unit $+ streak) }
  2082. if ($getvar($1, %unit $+ time) < $getvar($2,%unit $+ time)) { setvar $2 %unit $+ time $getvar($1, %unit $+ time) }
  2083. }
  2084. else {
  2085. setvar $2 %unit $+ score $getvar(%unit $+ score)
  2086. setvar $2 %unit $+ WPM $getvar(%unit $+ WPM)
  2087. setvar $2 %unit $+ streak $getvar(%unit $+ streak)
  2088. setvar $2 %unit $+ time $getvar(%unit $+ time)
  2089. }
  2090. }
  2091. dec %i
  2092. }
  2093. setvar $2 score $calc($getvar($2,score) + $getvar($1,score))
  2094. if ($getvar($1, wpm) > $getvar($2,wpm)) { setvar $2 wpm $getvar($1, wpm) }
  2095. if ($getvar($1, streak) > $getvar($2,streak)) { setvar $2 streak $getvar($1, streak) }
  2096. if ($getvar($1, time) < $getvar($2,time)) { setvar $2 time $getvar($1, time) }
  2097. setvar $2 admin $or($getvar($1,admin),$getvar($2,admin))
  2098. deleteplayer $1
  2099. }
  2100. }
  2101. alias trename {
  2102. setvar $1 name $2
  2103. tsay $msg.trivia.stats($2)
  2104. }
  2105. alias triviad {
  2106. if (($1 >= 1) && ($2)) { .timertriviaad 0 $calc($$1 * 60) timer.ad $chan $2- }
  2107. else { .timertriviaad off }
  2108. }
  2109. alias triviad2 {
  2110. if (($1 >= 1) && ($2)) { .timertriviaad 0 $calc($$1 * 60) msg $chan $e1($2-) }
  2111. else { .timertriviaad off }
  2112. }
  2113. alias truntimes {
  2114. if (($regex($1,/\d+:\d+/)) && ($regex($2,/\d+:\d+/))) {
  2115. .timertriviarunon -o $1 1 1 tboton $1
  2116. .timertriviarunoff -o $2 1 1 tbotoff $2
  2117. }
  2118. else { .timertriviarun* off }
  2119. }
  2120. alias tboton {
  2121. .timertriviarunon -o $1 1 1 tboton $1
  2122. setset status bot 1
  2123. trivia
  2124. }
  2125. alias askrotate {
  2126. set %askcount $calc((%askcount + 1) % $numq)
  2127. ask %askcount
  2128. }
  2129.  
  2130. alias tbotoff {
  2131. .timertriviarunoff -o $1 1 1 tbotoff $1
  2132. if ($trivia.on) { strivia }
  2133. setset status bot 0
  2134. }
  2135. alias tempfil { return backburner.txt }
  2136. alias timer.ad { if (!$trivia.on) { msg $1 $e1($2-) } }
  2137. ;########################################################
  2138. ;# DIALOGS. #
  2139. ;########################################################
  2140. dialog trivset {
  2141. title "Trivia Settings"
  2142. size -1 -1 912 544
  2143. option pixels
  2144. tab General, 1, 4 8 896 523
  2145. box Channels, 9, 12 36 502 108, tab 1
  2146. text Delimiter, 10, 22 443 68 20, tab 1
  2147. text Add/Report, 11, 18 405 92 20, tab 1
  2148. button Add, 24, 24 204 64 20, tab 1
  2149. edit , 30, 84 113 418 22, tab 1 autohs
  2150. edit $triv(delimiter), 31, 20 463 34 24, tab 1
  2151. edit $triv(additions), 32, 112 405 86 24, tab 1 autohs
  2152. edit $triv(report), 33, 204 405 86 24, tab 1 autohs
  2153. edit $triv(dir), 35, 100 371 402 24, tab 1 autohs
  2154. text Percent Hint, 14, 532 84 68 20, tab 1
  2155. edit $triv(perchint), 99, 676 84 40 26, tab 1
  2156. text Number of hints, 15, 532 66 136 20, tab 1
  2157. edit $triv(numhint), 861, 676 58 40 26, tab 1
  2158. text Hint Reduction, 16, 536 352 108 20, tab 1
  2159. edit $triv(DPH), 863, 704 356 48 24, tab 1
  2160. text Points per answer, 17, 536 326 148 20, tab 1
  2161. edit $triv(PPQ), 65, 704 326 48 24, tab 1
  2162. list 108, 82 48 424 64, tab 1 size
  2163. button Add, 115, 18 60 58 20, tab 1
  2164. button Remove, 119, 18 88 62 20, tab 1
  2165. text Channel:, 125, 16 116 62 20, tab 1
  2166. edit , 132, 96 300 398 24, tab 1 autohs
  2167. box "Points", 133, 520 308 308 76, tab 1
  2168. box "Global", 134, 12 344 496 152, tab 1
  2169. button "Scores", 141, 36 304 56 20, tab 1
  2170. button "Define", 20, 424 440 55 21, tab 1
  2171. check "Trivia Ranks", 148, 364 416 116 24, tab 1
  2172. check Crosshatch, 47, 532 124 116 20, tab 1
  2173. text Chr, 21, 652 124 31 26, tab 1
  2174. edit , 961, 684 124 28 26, tab 1
  2175. box "Hints", 80, 524 48 304 256, tab 1
  2176. radio "Scatter", 58, 612 196 75 20, group tab 1
  2177. radio "Plot", 129, 692 196 75 20, tab 1
  2178. radio "Basic", 130, 536 196 75 20, tab 1
  2179. text $hint.example, 199, 536 172 274 20, tab 1
  2180. check "Say Hint Number", 147, 532 144 160 24, tab 1
  2181. radio "Standard", 149, 532 248 92 20, group tab 1
  2182. radio "Last Letter", 150, 624 252 100 20, tab 1
  2183. radio "Vowels", 151, 536 276 72 20, tab 1
  2184. radio "Random", 152, 624 280 88 20, tab 1
  2185. text "First Hint Type", 153, 536 224 122 20, tab 1
  2186. button "Remove", 12, 24 272 64 20, tab 1
  2187. list 34, 92 200 410 92, tab 1 sort size
  2188. box "Channel Properties", 83, 12 144 498 192, tab 1
  2189. edit $triv(translate), 131, 232 464 272 24, tab 1 autohs
  2190. button "Translation File", 136, 108 468 115 20, tab 1
  2191. button "Trivia Dir", 13, 20 376 67 17, tab 1
  2192. text "Nick", 543, 28 168 34 20, tab 1
  2193. edit "", 544, 64 168 76 25, tab 1 autohs
  2194. text "Network", 66, 160 168 70 20, tab 1
  2195. edit "", 67, 236 164 116 25, tab 1 autohs
  2196. check Auto-Hint, 41, 532 103 132 20, tab 1
  2197. tab Options, 6
  2198. text questions, 18, 72 219 80 21, tab 6
  2199. check No-activity off, 88, 20 187 140 20, tab 6
  2200. edit $triv(naoff), 89, 16 215 50 32, tab 6
  2201. text seconds, 19, 250 211 76 25, tab 6
  2202. check Hint-Pause, 96, 200 185 140 20, tab 6
  2203. edit $triv(hintpause), 97, 198 211 50 32, tab 6
  2204. check Echo Answer, 40, 20 60 140 20, tab 6
  2205. check Timeout Answer, 45, 200 106 140 20, tab 6
  2206. check Join Message, 46, 12 336 120 20, tab 6
  2207. check Traditional win, 48, 20 105 140 20, tab 6
  2208. check Auto-Start, 49, 385 60 140 20, tab 6
  2209. check Say Scramble:, 53, 202 60 140 20, tab 6
  2210. check Showteam End, 55, 200 81 140 20, tab 6
  2211. check Answer Space, 56, 384 127 140 20, tab 6
  2212. check No Mid-Match, 57, 574 160 140 20, tab 6
  2213. check Show Matched, 59, 200 131 140 20, tab 6
  2214. check Use Adate, 60, 20 82 140 20, tab 6
  2215. check No ? end, 830, 574 60 140 20, tab 6
  2216. check No Spell Correct, 817, 574 140 140 20, tab 6
  2217. check "Monday Week", 126, 384 83 140 20, tab 6
  2218. check Limit Guesses, 51, 384 166 140 20, tab 6
  2219. edit $triv(limitguess), 144, 384 191 36 32, tab 6
  2220. check Round HoF, 52, 384 105 140 20, tab 6
  2221. edit , 22, 12 368 728 89, tab 6 read multi autovs
  2222. edit $triv(onjoin), 138, 148 336 596 29, tab 6 autohs
  2223. check No Partial Match, 43, 574 180 140 20, tab 6
  2224. text "tries", 146, 420 192 58 28, tab 6
  2225. check No Decheater, 44, 574 80 140 20, tab 6
  2226. check No Color Short, 61, 574 100 140 20, tab 6
  2227. check "Score", 106, 28 292 84 20, tab 6
  2228. check "Time", 169, 120 292 80 20, tab 6
  2229. check "Streak", 171, 204 292 80 20, tab 6
  2230. check "WPM", 173, 288 292 72 20, tab 6
  2231. box "Hide Stat", 174, 12 264 368 60, tab 6
  2232. check "No Catergories", 62, 574 120 140 20, tab 6
  2233. check "Empty Off", 54, 20 127 140 20, tab 6
  2234. check "No Bonus", 50, 574 200 140 20, tab 6
  2235. check "No Q number", 63, 574 220 140 20, tab 6
  2236. box Settings, 70, 8 40 732 288, tab 6
  2237. check "Keep Ask", 156, 20 150 140 20, tab 6
  2238. check "Show Nothing", 143, 200 156 140 20, tab 6
  2239. tab Defaults, 2
  2240. box , 23, 280 63 322 80, tab 2
  2241. box , 25, 602 67 174 76, tab 2
  2242. check Colors, 116, 280 48 88 20, tab 2 push
  2243. text Primary, 110, 286 74 60 17, tab 2
  2244. text Secondary, 120, 286 110 84 21, tab 2
  2245. edit $tc(1), 121, 372 74 35 28, tab 2 read
  2246. edit $tc(2), 122, 376 110 35 28, tab 2 read
  2247. edit $tc(3), 123, 607 74 43 28, tab 2 read
  2248. edit $tc(4), 124, 607 110 43 28, tab 2 read
  2249. check B, 117, 541 74 24 24, tab 2 push
  2250. check U, 118, 568 74 24 24, tab 2 push
  2251. check B, 127, 541 110 24 24, tab 2 push
  2252. check U, 128, 568 110 20 24, tab 2 push
  2253. combo 111, 412 74 124 240, tab 2 size drop
  2254. combo 112, 412 110 124 240, tab 2 size drop
  2255. combo 113, 652 74 120 240, tab 2 size drop
  2256. combo 114, 652 110 120 240, tab 2 size drop
  2257. box Time, 26, 12 188 264 244, tab 2
  2258. text Before Start, 27, 30 208 155 25, tab 2
  2259. text Between Questions (answered), 36, 30 342 155 25, tab 2
  2260. text Given to Answer, 37, 30 234 155 25, tab 2
  2261. text Before Auto-Hint, 38, 30 288 155 25, tab 2
  2262. text (timed-out), 39, 30 369 155 25, tab 2
  2263. text Before hint allowed, 862, 30 261 155 25, tab 2
  2264. text Between Ping Delay, 167, 30 398 155 25, tab 2
  2265. text Between Auto-Hints, 177, 30 315 155 25, tab 2
  2266. edit $slag(start), 135, 192 208 65 24, tab 2
  2267. edit $slag(answered), 145, 192 346 65 24, tab 2
  2268. edit $slag(timedout), 155, 192 234 65 24, tab 2
  2269. edit $slag(hint), 165, 192 290 65 24, tab 2
  2270. edit $slag(timed), 175, 192 374 65 24, tab 2
  2271. edit $slag(hintallow), 185, 192 262 65 24, tab 2
  2272. edit $slag(ping), 195, 192 402 65 28, tab 2
  2273. edit $slag(betweenhint), 205, 192 318 65 24, tab 2
  2274. box Questions, 64, 14 40 262 144, tab 2
  2275. text Default Round, 68, 120 54 78 17, tab 2
  2276. text Champ Goal, 69, 284 380 94 21, tab 2
  2277. text Team Round, 71, 120 102 70 17, tab 2
  2278. edit $triv(default), 299, 148 74 91 24, tab 2
  2279. edit $triv(reset), 215, 384 380 79 28, tab 2
  2280. edit $triv(dteam), 217, 164 122 71 24, tab 2
  2281. button $record.type($triv(Record)), 218, 82 150 149 20, tab 2
  2282. button Themes, 700, 374 304 68 20, tab 2
  2283. radio Unlimited, 201, 24 82 96 20, tab 2
  2284. radio Team, 202, 24 104 92 20, tab 2
  2285. radio Normal, 203, 24 60 84 20, tab 2
  2286. check Disable, 816, 284 300 80 20, tab 2
  2287. box , 8, 278 284 186 56, tab 2
  2288. check "Background", 158, 600 48 92 24, tab 2 push
  2289. check Champ Mode, 42, 284 356 136 21, tab 2
  2290. box , 179, 278 344 188 68, tab 2
  2291. box Score By, 178, 280 200 184 84, tab 2
  2292. check "Change", 182, 288 224 84 20, tab 2
  2293. combo 183, 288 248 128 100, tab 2 size drop
  2294. tab Teams, 3
  2295. box Names, 72, 12 80 872 140, tab 3
  2296. text Team 1, 73, 28 112 60 20, tab 3
  2297. text Team 2, 74, 28 152 60 20, tab 3
  2298. text Team 3, 308, 396 112 60 20, disable tab 3
  2299. text Team 4, 309, 396 152 60 20, disable tab 3
  2300. box Victories, 75, 20 220 868 220, tab 3
  2301. text Tied Message, 76, 32 256 66 20, tab 3
  2302. text Team 1 Wins, 77, 32 285 66 20, tab 3
  2303. text Team 2 Wins, 78, 32 314 66 20, tab 3
  2304. text Team 3 Wins, 303, 32 343 66 20, disable tab 3
  2305. text Team 4 Wins, 304, 32 372 66 20, disable tab 3
  2306. edit $te(1), 380, 92 112 280 27, tab 3 autohs
  2307. edit $te(2), 381, 92 152 280 27, tab 3 autohs
  2308. edit $te(4), 382, 468 152 280 27, disable tab 3 autohs
  2309. edit $te(3), 383, 468 112 280 27, disable tab 3 autohs
  2310. edit $te(0).victory, 320, 96 256 770 25, tab 3 autohs
  2311. edit $te(1).victory, 321, 96 285 770 25, tab 3 autohs
  2312. edit $te(2).victory, 322, 96 314 770 25, tab 3 autohs
  2313. edit $te(3).victory, 323, 96 343 770 25, disable tab 3 autohs
  2314. edit $te(4).victory, 324, 96 372 770 25, disable tab 3 autohs
  2315. check Limit Join Period, 330, 284 52 152 27, tab 3 push
  2316. edit $te(JoinBefore), 335, 440 51 112 27, tab 3
  2317. radio 2 Teams, 28, 48 48 92 20, tab 3
  2318. radio 4 Teams, 29, 152 52 84 20, tab 3
  2319. tab Awards, 4
  2320. box Awards, 79, 14 56 872 220, tab 4
  2321. button Delete, 411, 828 236 52 20, tab 4
  2322. button Add, 412, 828 84 52 20, tab 4
  2323. list 420, 19 72 800 190, tab 4 size
  2324. text "* is winner's nick.", 81, 398 425 144 25, tab 4
  2325. text "^ is value of trigger", 82, 554 425 156 25, tab 4
  2326. check Disable, 819, 20 36 84 21, tab 4
  2327. combo 137, 94 296 144 100, tab 4 size drop
  2328. edit "", 139, 432 300 68 25, tab 4
  2329. text "Award", 140, 26 392 62 24, tab 4
  2330. edit "", 142, 92 388 712 33, tab 4 autohs
  2331. text "Trigger on", 154, 32 296 58 24, tab 4
  2332. combo 159, 314 300 108 100, tab 4 size drop
  2333. text "and", 160, 518 300 30 20, hide tab 4
  2334. edit "", 161, 556 300 68 25, hide tab 4
  2335. text "points", 162, 480 324 46 20, tab 4
  2336. text "Do Action", 163, 36 348 50 24, tab 4
  2337. text "values", 164, 264 300 42 24, tab 4
  2338. combo 166, 90 348 144 120, tab 4 size drop
  2339. tab Status, 5
  2340. text Trivia Script version:, 84, 24 48 150 20, tab 5
  2341. text $strip($msg.trivia.version), 85, 184 48 150 20, tab 5
  2342. text Trivia bot is currently:, 86, 24 70 150 20, tab 5
  2343. text $trivon, 504, 184 70 80 20, tab 5
  2344. text Current mIRC version is:, 87, 24 92 150 20, tab 5
  2345. text $version, 90, 184 92 80 20, tab 5
  2346. text Current Trivia directory exists:, 91, 24 114 150 20, tab 5
  2347. text $trivia.dir, 92, 184 114 80 20, tab 5
  2348. text Currently in Trivia Channel:, 93, 24 136 150 20, tab 5
  2349. text $trivia.chan, 94, 184 136 80 20, tab 5
  2350. text Question file in Directory:, 95, 24 158 150 20, tab 5
  2351. text $trivia.file, 98, 184 158 80 20, tab 5
  2352. text Number of questions:, 103, 24 180 150 20, tab 5
  2353. text $numl, 104, 184 180 78 20, tab 5
  2354. button Delete Scores, 515, 280 104 128 20, tab 5
  2355. button Scores, 519, 280 76 124 20, tab 5
  2356. list 601, 26 210 284 114, tab 5 sort size
  2357. button Unban, 602, 314 296 80 20, tab 5
  2358. button Ban, 603, 314 218 80 20, tab 5
  2359. list 610, 18 336 292 154, tab 5 sort size
  2360. button Add Friend, 611, 314 342 80 20, tab 5
  2361. button Remove, 612, 318 468 80 20, tab 5
  2362. tab Commands, 7
  2363. box Command Limits, 105, 288 184 300 48, tab 7
  2364. combo 806, 300 200 276 132, disable tab 7 size drop
  2365. text Command Prefix, 107, 28 456 82 20, tab 7
  2366. edit %command-prefix, 850, 112 452 88 29, tab 7
  2367. text blank = default, 109, 32 484 170 24, tab 7
  2368. button "Build HTML Options", 157, 304 476 207 25, tab 7
  2369. list 800, 20 60 256 356, tab 7 size
  2370. text "Commands", 170, 20 40 102 16, tab 7
  2371. combo 809, 300 248 276 100, disable tab 7 size drop
  2372. box "Respond Method", 168, 288 232 300 48, tab 7
  2373. check "Disable", 801, 296 80 92 24, tab 7
  2374. text "Name", 172, 292 112 42 20, tab 7
  2375. edit "", 803, 344 112 236 21, tab 7 read
  2376. edit "", 802, 288 132 296 49, tab 7 read autovs
  2377. box "Default Respond Method", 180, 284 348 304 72, tab 7
  2378. combo 181, 300 364 280 136, tab 7 size drop
  2379. box "Command Attributes", 176, 284 56 308 292, tab 7
  2380. button Cancel, 101, 618 486 52 20, cancel
  2381. button OK, 100, 673 486 52 20, ok
  2382. button Apply, 102, 560 486 48 20
  2383. link $nopath($trivia.web), 518, 560 460 160 20
  2384. }
  2385. ;########################################################
  2386. ;# DIALOG EVENTS. #
  2387. ;########################################################
  2388. on *:dialog:trivset:init:*:{
  2389. var %i = 1
  2390. while ($getset(chan, %i)) {
  2391. did -a $dname 108 $gettok($getset(chan, %i), 1, 59)
  2392. inc %i
  2393. }
  2394. if ($did(108,1)) { did -c $dname 108 1 }
  2395. var %i = $numtok($status.toks, $asc(.))
  2396. while (%i >= 1) {
  2397. if ($getset(status, $gettok($status.toks, %i, $asc(.))) == 1) { did -c $dname $calc(39 + %i) }
  2398. dec %i
  2399. }
  2400. if (!$did(58).state) {
  2401. if (!$getset(status, plot)) { did -c $dname 130 }
  2402. else { did -c $dname 129 }
  2403. }
  2404. if ($getset(trivia,ranks) == 1) { did -c $dname 148 }
  2405. if ($getset(status,naoff) == 1) { did -c $dname 88 }
  2406. if ($getset(status,hintpause) == 1) { did -c $dname 96 }
  2407. if ($getset(status,autostart) == 1) { did -c $dname 49 }
  2408. if ($getset(status,monday) == 1) { did -c $dname 126 }
  2409. if ($getset(status,noautoqm) == 1) { did -c $dname 830 }
  2410. if ($getset(status,noawards) == 1) { did -c $dname 819 }
  2411. if ($getset(status,nospellfix) == 1) { did -c $dname 817 }
  2412. if ($getset(status,sayhintnum) == 1) { did -c $dname 147 }
  2413. if ($getset(status,keepask) == 1) { did -c $dname 156 }
  2414. if ($getset(status,shownone) == 1) { did -c $dname 143 }
  2415. did -c $dname $calc(149 + $getset(trivia,firsthint))
  2416. if ($getset(hide,score) == 1) { did -c $dname 106 }
  2417. if ($getset(hide,time) == 1) { did -c $dname 169 }
  2418. if ($getset(hide,streak) == 1) { did -c $dname 171 }
  2419. if ($getset(hide,wpm) == 1) { did -c $dname 173 }
  2420. if ($getset(color,on) == 1) { did -c $dname 116 }
  2421. if ($getset(color,bon) == 1) { did -c $dname 158 }
  2422. if ($getset(color,1-bold) == 1) { did -c $dname 117 }
  2423. if ($getset(color,1-underline) == 1) { did -c $dname 118 }
  2424. if ($getset(color,2-bold) == 1) { did -c $dname 127 }
  2425. if ($getset(color,2-underline) == 1) { did -c $dname 128 }
  2426. if ($getset(trivia,odefault) == Unlimited) { did -c $dname 201 }
  2427. elseif ($getset(trivia,odefault) == Team) { did -c $dname 202 }
  2428. else { did -c $dname 203 }
  2429. if ($getset(team,Joinbeforeon) == 1) { did -c $dname 330 }
  2430. if ($getset(team,4-team) == 1) {
  2431. trivset.teams 1
  2432. did -c $dname 29
  2433. }
  2434. else { did -c $dname 28 }
  2435. var %i = 0
  2436. while (%i <= 16) {
  2437. did -a $dname 111,112,113,114 $colorcode(%i)
  2438. inc %i
  2439. }
  2440. did -a $dname 806 Default
  2441. did -a $dname 806 User
  2442. did -a $dname 806 Voice
  2443. did -a $dname 806 Half-Op
  2444. did -a $dname 806 Op
  2445. did -a $dname 806 Friend
  2446. did -a $dname 806 Nobody
  2447. did -c $dname 806 1
  2448. did -a $dname 183 Day
  2449. did -a $dname 183 Week
  2450. did -a $dname 183 Month
  2451. did -a $dname 183 Year
  2452. did -a $dname 183 Total
  2453. did -c $dname 183 $ifd($getset(status,scoreby),5)
  2454. did -a $dname 181,809 Default
  2455. did -a $dname 181,809 Notice
  2456. did -a $dname 181,809 MSG Channel
  2457. did -a $dname 181,809 MSG User
  2458. did -a $dname 181,809 Describe Channel
  2459. did -c $dname 181 $ifd($getset(status,respondlevel),1)
  2460. did -c $dname 809 1
  2461. did -c $dname 111 $calc($did(121) + 1)
  2462. did -c $dname 112 $calc($did(122) + 1)
  2463. did -c $dname 113 $calc($did(123) + 1)
  2464. did -c $dname 114 $calc($did(124) + 1)
  2465. awards.load
  2466. var %i = 1
  2467. while ($setini(banned,%i)) {
  2468. did -a $dname 601 $getset(banned,%i)
  2469. inc %i
  2470. }
  2471. did -a $dname 961 $iif($chr($triv(ch)),$chr($triv(ch)),_)
  2472. disable.load
  2473. trivia.load.friends
  2474. check.toggle.multichan
  2475. check.toggle.options
  2476. check.color.toggle
  2477. check.awards.toggle
  2478. multichan.load
  2479. }
  2480. on *:dialog:trivset:sclick:100,102:{
  2481. setset trivia delimiter $did(31)
  2482. setset trivia additions $did(32)
  2483. setset trivia report $did(33)
  2484. setset trivia dir $did(35)
  2485. setset trivia translate $did(131)
  2486. setset status plot $did(129).state
  2487. setset status naoff $did(88).state
  2488. setset status monday $did(126).state
  2489. setset status noautoqm $did(830).state
  2490. setset status noawards $did(819).state
  2491. setset status nospellfix $did(817).state
  2492. setset status sayhintnum $did(147).state
  2493. setset status keepask $did(156).state
  2494. setset status shownone $did(143).state
  2495. setset hide score $did(106).state
  2496. setset hide time $did(169).state
  2497. setset hide streak $did(171).state
  2498. setset hide wpm $did(173).state
  2499. setset trivia naoff $did(89)
  2500. setset status hintpause $did(96).state
  2501. setset trivia hintpause $did(97)
  2502. setset trivia limitguess $did(144)
  2503. setset trivia perchint $did(99)
  2504. setset trivia numhint $did(861)
  2505. setset trivia DPH $did(863)
  2506. setset trivia PPQ $did(65)
  2507. var %i = 0
  2508. while (%i < 4) {
  2509. if ($did($calc(149 + %i)).state == 1) setset trivia firsthint %i
  2510. inc %i
  2511. }
  2512. setset trivia ranks $did(148).state
  2513. setset color on $did(116).state
  2514. setset color bon $did(158).state
  2515. setset color 1-bold $did(117).state
  2516. setset color 1-underline $did(118).state
  2517. setset color 2-bold $did(127).state
  2518. setset color 2-underline $did(128).state
  2519. setset team JoinBeforeon $did(330).state
  2520. setset team Joinbefore $did(335)
  2521. setset color 1 $int($did(121))
  2522. setset color 2 $int($did(122))
  2523. setset color 3 $int($did(123))
  2524. setset color 4 $int($did(124))
  2525. varcolors
  2526. var %i = 1
  2527. while (%i <= 8) {
  2528. setset lag $gettok(start.answered.timedout.hint.timed.hintallow.ping.betweenhint, %i, $asc(.)) $int($did($calc(125 + (%i * 10))))
  2529. inc %i
  2530. }
  2531. var %i = $numtok($status.toks, $asc(.))
  2532. while (%i >= 1) {
  2533. setset status $gettok($status.toks, %i, $asc(.)) $did($calc(39 + %i)).state
  2534. dec %i
  2535. }
  2536. setset trivia onjoin $did(138)
  2537. setset trivia default $int($did(299))
  2538. setset trivia odefault
  2539. if ($did(201).state == 1) { setset trivia odefault Unlimited }
  2540. if ($did(202).state == 1) { setset trivia odefault Team }
  2541. setset trivia reset $int($did(215))
  2542. setset trivia dteam $int($did(217))
  2543. setset award
  2544. var %i = 1
  2545. while (%i <= $did(420).lines) {
  2546. setset award %i $did(420,%i)
  2547. inc %i
  2548. }
  2549. setset team 1 $did(380)
  2550. setset team 2 $did(381)
  2551. setset team 3 $did(382)
  2552. setset team 4 $did(383)
  2553. setset team 0victory $did(320)
  2554. setset team 1victory $did(321)
  2555. setset team 2victory $did(322)
  2556. setset team 3victory $did(323)
  2557. setset team 4victory $did(324)
  2558. setset team 4-team $did(29).state
  2559. var %i = 1
  2560. setset trivia ch $asc($right($did(961),1))
  2561. %command-prefix = $did(850)
  2562. disable.save
  2563. setset status respondlevel $did(181).sel
  2564. setset status scoreby $did(183).sel
  2565. }
  2566. on *:dialog:trivset:sclick:816:{
  2567. setset disable 18.disable $did($did).state
  2568. check.toggle.options
  2569. }
  2570. on *:dialog:trivset:sclick:12:{
  2571. if ((!$did(34).sel) || (!$did(108).sel)) { return }
  2572. var %todel = $did(34).sel
  2573. did -d $dname 34 %todel
  2574. did -c $dname 34 %todel
  2575. save.qs
  2576. }
  2577. on *:dialog:trivset:sclick:24:{
  2578. var %temp.file = $$sfile($iif($isdir($did(35)),$did(35),$mircdir))
  2579. did -a $dname 34 $nopath(%temp.file)
  2580. did -ra $dname 35 $nofile(%temp.file)
  2581. save.qs
  2582. }
  2583. on *:dialog:trivset:edit:30:{
  2584. var %temp.num = $did(108).sel
  2585. tchan.set $did(108).sel 1 $did(30)
  2586. did -o $dname 108 $did(108).sel $did(30)
  2587. did -c $dname 108 %temp.num
  2588. }
  2589. on *:dialog:trivset:sclick:108:{ multichan.load }
  2590. on *:dialog:trivset:sclick:115:{
  2591. var %toadd = $$?="Add what channel?"
  2592. did -a $dname 108 %toadd
  2593. chan.add %toadd
  2594. }
  2595. on *:dialog:trivset:sclick:119:{
  2596. var %todel = $did(108).sel
  2597. chan.del %todel
  2598. did -d $dname 108 %todel
  2599. did -c $dname 108 %todel
  2600. did -r $dname 30,34,132
  2601. multichan.load
  2602. check.toggle.multichan
  2603. }
  2604. on *:dialog:trivset:sclick:136:{
  2605. var %temp.file = $$sfile(" $+ $mircdir $+ \ $+ *.txt $+ ", Choose a trivia translation file.)
  2606. did -ra $dname 131 $nopath(%temp.file)
  2607. }
  2608. on *:dialog:trivset:sclick:13:{
  2609. var %temp.file = $$sdir($mircdir, Choose a trivia directory.)
  2610. echo -s .... %temp.file
  2611. did -ra $dname 35 %temp.file
  2612. }
  2613. on *:dialog:trivset:edit:132:{ tchan.set $$did(108).sel 4 $$did(132) }
  2614. on *:dialog:trivset:edit:67:{ tchan.set $$did(108).sel 2 $$did(67) }
  2615. on *:dialog:trivset:edit:544:{ tchan.set $$did(108).sel 3 $$did(544) }
  2616. on *:dialog:trivset:sclick:141:{
  2617. did -ra $dname 132 $nopath($$sfile(" $+ $mircdir $+ \ $+ *.fil $+ ",Choose a scores file.))
  2618. tchan.set $$did(108).sel 4 $did(132)
  2619. }
  2620. ;########################################################
  2621. ;# MOUSE EVENTS. #
  2622. ;########################################################
  2623. on *:dialog:trivset:mouse:40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,88,96,106,126,143,156,169,171,173,817,830:{
  2624. if (%didt == $did) { return }
  2625. if ($did == 43) { exp Forbids any partial matches, for example if the answer is "truck" and you guess "not a truck" it won't take the answer. }
  2626. if ($did == 44) { exp Disables the decheater feature, which might produce blocks between words or odd characters on some fonts. Prevents people from using some cheating scripts. }
  2627. if ($did == 50) { exp Disables bonus. For example if a question is "2004: This picture won movie of the year-" the bot would take this question to be worth 2004 points. }
  2628. if ($did == 54) { exp If the room is empty the bot turns off. }
  2629. if ($did == 61) { exp Turns off the color shortening. Color shortening is a feature which reduces the amount of text sent by optimizing the colorcodes. }
  2630. if ($did == 62) { exp Turns off categories. If categories exist in a question file #Category after a list of questions, it doesn't look for or display it. }
  2631. if ($did == 106) { exp Hide score. Refuses to indicate how many more points any person has. }
  2632. if ($did == 169) { exp Hide time. Refuses to indicate how long it took for any person to answer. }
  2633. if ($did == 171) { exp Hide streak. Refuses to indicate the current or record streak. }
  2634. if ($did == 173) { exp Hide WPM. Refuses to indicate the Words Per Minute people achieve. }
  2635. if ($did == 40) { exp Echo's the answer so that you can see it after the question is read. }
  2636. if ($did == 60) { exp Uses the American dating style for the $pre $+ stats response. MM/DD/YY rather than DD/MM/YY. }
  2637. if ($did == 63) { exp Stops showing the number before the question in the question message. }
  2638. if ($did == 48) { exp Traditional win provides more less clinical information about the correct answer. }
  2639. if ($did == 56) { exp Provides the spacing of the answer directly after the question is read. }
  2640. if ($did == 46) { exp Gives a message to each person who joins the trivia channel, providing information about the bot. * = nick, $chr(35) = channel, @ = rank, ^ = score. eg: Welcome to #, * trivia bot is active... "!trivia" to start a game. Blank uses default. }
  2641. if ($did == 53) { exp For scramble questions, this forces the standard scramble category to read Unscramble the Following. }
  2642. if ($did == 57) { exp Rather than accept answers anywhere in a response, this feature forces the bot to ignore answered contained entirely inside a response. }
  2643. if ($did == 49) { exp This feature makes the bot start up as soon as you rejoin the trivia channel. }
  2644. if ($did == 42) { exp This allows for champ mode, when a specific score is reached the game resets the score and logs the winner. }
  2645. if ($did == 58) { exp Rather than start the hint from left to right it displays random letters in the hint. }
  2646. if ($did == 41) { exp This feature automaticly displays a hint to the channel after a time specified in Defaults. }
  2647. if ($did == 45) { exp This allows people to be told the correct answer after nobody in the room answered correctly. }
  2648. if ($did == 55) { exp When a team game is ends this provides a list of players on each team. }
  2649. if ($did == 59) { exp By default the bot displays the first answer in the answer file as correct. But, with this enabled the matched answer is displayed. }
  2650. if ($did == 88) { exp After a specified number of questions, the bot will turn itself off. }
  2651. if ($did == 96) { exp After a hint is requested this feature blocks the correct answer from being accepted from that person for a given amount of time. }
  2652. if ($did == 47) { exp This allows for unfinished part of a hint to use a specific character to indicate where letters are missing. }
  2653. if ($did == 51) { exp This option limits the number of guesses to the specific value. }
  2654. if ($did == 52) { exp This option makes a round hall of fame displayed along with the win messages throughout a trivia round. }
  2655. if ($did == 156) { exp This feature retains the hash table that scores the asked questions beyond one round of trivia. Make repeats happen less often. }
  2656. if ($did == 143) { exp After a win, this feature would will turn off any acknowledgement of the answer to the room. Protect questions. }
  2657. if ($did == 126) { exp In the United States and other countries the week starts on Sunday, this is default. This feature starts the week mark a day later. }
  2658. if ($did == 817) { exp Turns off the spell correction and only allows exact answers to be accepted. }
  2659. if ($did == 830) { exp Turns off the automatic ? at the end of each question. A - at the end of the question also does this. }
  2660. set -u5 %didt $did
  2661. }
  2662. alias exp { did -ra $dname 22 $$1- }
  2663. ;########################################################
  2664. ;# Stray. #
  2665. ;########################################################
  2666. on *:dialog:trivset:sclick:20:{ if (!$dialog(trivrank)) dialog -m trivrank trivrank }
  2667. on *:dialog:trivset:sclick:28,29:{ trivset.teams $iif($did != 28,1) }
  2668. alias hint.example { return This is an example of a hint }
  2669. on *:dialog:trivset:sclick:58,129,130:{
  2670. if ($did == 58) { did -ra $dname 199 $scatter(50,$hint.example) }
  2671. else if ($did == 129) { did -ra $dname 199 $plot(50,$hint.example) }
  2672. else { did -ra $dname 199 $standard(50,$hint.example) }
  2673. }
  2674. on *:dialog:trivset:sclick:111,112,113,114:{ did -ra $dname $calc($did + 10) $calc($did($did).sel - 1) }
  2675. on *:dialog:trivset:sclick:218:{
  2676. var %record = $calc($triv(Record) + 1)
  2677. if (%record == 9) { var %record = 1 }
  2678. did -ra $dname $did $record.type(%record)
  2679. setset Trivia Record %record
  2680. }
  2681. ;########################################################
  2682. ;# Awards. #
  2683. ;########################################################
  2684. on *:dialog:trivset:sclick:412:{
  2685. did -a $dname 420 0 0 0 0 0 Award
  2686. did -c $dname 420 $did(420).lines
  2687. check.award.click
  2688. }
  2689. on *:dialog:trivset:sclick:411:{ did -d $dname 420 $$did(420,1).sel | check.awards.toggle }
  2690. on *:dialog:trivset:sclick:420:{ check.award.click }
  2691. alias check.award.click {
  2692. check.awards.toggle
  2693. tokenize 32 $$did(420).seltext
  2694. did -c $dname 137 $calc($1 + 1)
  2695. did -c $dname 159 $calc($2 + 1)
  2696. did -c $dname 166 $calc($3 + 1)
  2697. did -ra $dname 139 $4
  2698. did -ra $dname 161 $5
  2699. did -ra $dname 142 $6-
  2700. check.award.range
  2701. }
  2702. alias check.award.range {
  2703. did $iif((($did(159).seltext == Between) || ($did(159).seltext == Random)),-v,-h) $dname 160,161
  2704. }
  2705. on *:dialog:trivset:sclick:137,159,166:{ award.modified }
  2706. on *:dialog:trivset:edit:139,142,161:{ award.modified }
  2707. alias award.modified {
  2708. if (!$did(420).sel) { return }
  2709. var %t.line = $did(420).sel
  2710. did -o $dname 420 $did(420).sel $calc($did(137).sel - 1) $calc($did(159).sel - 1) $calc($did(166).sel - 1) $did(139) $did(161) $did(142)
  2711. did -c $dname 420 %t.line
  2712. check.award.range
  2713. }
  2714. ;########################################################
  2715. ;# Settings. #
  2716. ;########################################################
  2717. on *:dialog:trivset:sclick:515:{
  2718. if ($?!="Are you sure you wish to delete all scores?") {
  2719. rename $scoresfil $asctime(yymmddhhmmss) $+ .bak
  2720. trivia.flush
  2721. }
  2722. }
  2723. on *:dialog:trivset:sclick:518:{ run $trivia.web }
  2724. on *:dialog:trivset:sclick:519:{ dialog -m triviascores triviascores }
  2725. on *:dialog:trivset:sclick:602:{
  2726. tunban $did(601,1).sel
  2727. did -d $dname 601 $$did(601,1).sel
  2728. }
  2729. on *:dialog:trivset:sclick:603:{
  2730. var %ban = $$?"Enter the nick or address (nick!ident@host) of a person to ban, note wildcards are permitted."
  2731. tban %ban
  2732. did -a $dname 601 %ban
  2733. }
  2734. on *:dialog:trivset:sclick:611:{
  2735. var %friend.add = $$?"Enter the nick or address (nick!ident@host) of a friend to add, note wildcards are permitted."
  2736. did -a $dname 610 %friend.add
  2737. triviafriend.add %friend.add
  2738. }
  2739. on *:dialog:trivset:sclick:612:{
  2740. triviafriend.del $$did(610).sel
  2741. trivia.load.friends
  2742. }
  2743. on *:dialog:trivset:sclick:700:{ if (!$dialog(triviatheme)) { dialog -m triviatheme triviatheme } }
  2744. on *:dialog:trivset:sclick:157:{ if (!$dialog(trivbuild)) { dialog -m trivbuild trivbuild } }
  2745. ;########################################################
  2746. ;# Disables #
  2747. ;########################################################
  2748. on *:dialog:trivset:sclick:800:{
  2749. disable.access
  2750. disable.check.disabled
  2751. }
  2752. on *:dialog:trivset:sclick:801:{
  2753. setset disable $$did(800).sel $+ .disable $did($did).state
  2754. did -oc $dname 800 $did(800).sel $gettok($disable.tokens,$did(800).sel,$asc(;)) $iif($getset(disable,$did(800).sel $+ .disable),( $+ Disabled $+ ))
  2755. disable.check.disabled
  2756. }
  2757. on *:dialog:trivset:sclick:806:{ setset disable $$did(800).sel $+ .limitlevel $did($did).sel }
  2758. on *:dialog:trivset:sclick:809:{ setset disable $$did(800).sel $+ .respondlevel $did($did).sel }
  2759. alias disable.access {
  2760. did $iif($getset(disable,$did(800).sel $+ .disable) == 1,-c,-u) trivset 801
  2761. did -ra trivset 802 $gettok($disable.info.tokens,$did(800).sel,$asc(;))
  2762. did -ra trivset 803 $did(800).seltext
  2763. did -c trivset 806 $ifd($getset(disable,$did(800).sel $+ .limitlevel),1)
  2764. did -c trivset 809 $ifd($getset(disable,$did(800).sel $+ .respondlevel),1)
  2765. }
  2766. alias disable.check.disabled { did $iif(!$did(801).state,-e,-b) $dname 802,803,806,809 }
  2767. alias disable.save { }
  2768. alias disable.load {
  2769. did -r trivset 800
  2770. tokenize $asc(;) $disable.tokens
  2771. var %i = 1
  2772. while (%i <= $0) {
  2773. did -a trivset 800 $eval($ $+ %i,2) $iif($getset(disable,%i $+ .disable),( $+ Disabled $+ ))
  2774. inc %i
  2775. }
  2776. }
  2777. alias disable.tokens { return trivia N;trivia unlimited;trivia team;trivia team N;pause/resume;op;op unban;hof;hoftime;hofstreak;hofwpm;records;op find;op ask;next;answer;ping;themes;add/report;op ban;disable/enable;hint;vowels;last;words;repeat;op add;trivia;strivia;promotion;join message;help;join N;op team }
  2778. alias disable.info.tokens { return Start N question game;Start unlimited Game;Start team game;Start team game for N questions;pause/resume;operator commands;op unban;hall of fame;hoftime;hofstreak;hofwpm;records;op find;op ask;End current question early;Answer to last question;ping;themes;add/report;op ban;disable/enable;hint;vowels;last;words;repeat;op add;trivia;strivia;promotion;join channel message;general help and command specific help;join team command;op team <player> <#>, sets team assignment }
  2779. alias isdis {
  2780. check.respond $1
  2781. if ($getset(disable, $1 $+ .disable) == 1) { return $true }
  2782. if (($chan) && ($nick) && (!$trivia.allowed($1))) { return $true }
  2783. }
  2784. alias -l trivia.allowed {
  2785. var %level = $getset(disable,$$1 $+ .limitlevel)
  2786. if ((!%level) || (%level == 1)) {
  2787. %level = 1
  2788. if ($1 == 6) %level = 4
  2789. }
  2790. if (%level == 7) { return }
  2791. if (($is.friend) && (%level <= 6)) { return $true }
  2792. if (($nick isop $chan) && (%level <= 5)) { return $true }
  2793. if (($nick ishelp $chan) && (%level <= 4)) { return $true }
  2794. if (($nick isvoice $chan) && (%level <= 3)) { return $true }
  2795. if (($nick ison $chan) && (%level <= 2)) { return $true }
  2796. }
  2797. alias -l check.respond {
  2798. unset %respond
  2799. var %respondlevel = $getset(disable,$1 $+ .respondlevel)
  2800. if (%respondlevel == 2) set -u2 %respond .notice $nick
  2801. else if (%respondlevel == 3) set -u2 %respond msg $iden
  2802. else if (%respondlevel == 4) set -u2 %respond .msg $nick
  2803. else if (%respondlevel == 5) set -u2 %respond describe $iden
  2804. }
  2805. ;########################################################
  2806. ;# DIALOG TOGGLES #
  2807. ;########################################################
  2808. on *:dialog:trivset:sclick:158,116:{ check.color.toggle }
  2809. on *:dialog:trivset:sclick:88,96,51,47,42,330,819,148,46,182:{ check.toggle.options }
  2810. alias check.toggle.options {
  2811. did $iif($did(88).state,-e,-b) $dname 89
  2812. did $iif($did(96).state,-e,-b) $dname 97
  2813. did $iif($did(51).state,-e,-b) $dname 144
  2814. did $iif($did(47).state,-e,-b) $dname 961,21
  2815. did $iif($did(42).state,-e,-b) $dname 215
  2816. did $iif($did(330).state,-e,-b) $dname 335
  2817. did $iif(!$did(816).state,-e,-b) $dname 700
  2818. did $iif($did(148).state,-e,-b) $dname 20
  2819. did $iif($did(46).state,-e,-b) $dname 138
  2820. did $iif($did(182).state,-e,-b) $dname 183
  2821. if (($did == 819) || (!$did)) {
  2822. did $iif(!$did(819).state,-e,-b) $dname 420,411,412
  2823. did -u $dname 420
  2824. check.awards.toggle
  2825. }
  2826. }
  2827. alias check.awards.toggle { did $iif($did(420).sel,-e,-b) $dname 137,159,166,139,142,161,140,154,160,162,163,164,81,82 }
  2828. alias check.toggle.multichan { did $iif($did(108).sel,-e,-b) $dname 12,24,30,34,132,141,544,67 }
  2829. alias check.color.toggle {
  2830. did $iif($did(116).state,-e,-b) $dname 23,25,120,110,121,122,123,124,117,118,127,128,111,112,113,114
  2831. if (!$did(158).state) did -b $dname 25,123,124,113,114
  2832. }
  2833. ;########################################################
  2834. ;# TRIVIA SETUP, alias expanded. #
  2835. ;########################################################
  2836. alias save.qs {
  2837. var %i = 1
  2838. tchan.noqs $$did(108).sel
  2839. while (%i <= $did(34).lines) {
  2840. tchan.set $did(108).sel $calc(4 + %i) $did(34,%i)
  2841. inc %i
  2842. }
  2843. }
  2844. alias status.toks { return echo.autohint.champ.exactmatch.nodecheater.showanswer.onjoin.cross.tradwin.autostart.nobonus.limitguess.rrs.sayscramble.emptyoff.noshowt.answers.nomid.scatter.showmatched.adate.nocolorshort.nocat.nosaycurrent }
  2845. alias chan.add { tchan.set $calc($setini(chan,0) + 1) 1 $1- }
  2846. alias chan.set {
  2847. var %chan.num = $tfindchan($1)
  2848. if (%chan.num) { tchan.set %chan.num $2 $3- }
  2849. }
  2850. alias chan.del {
  2851. var %i = $$1, %j = $setini(chan,0)
  2852. while (%i < %j) {
  2853. setset chan %i $getset(chan,$calc(%i + 1))
  2854. inc %i
  2855. }
  2856. setset chan %j
  2857. }
  2858. alias tchan.noqs { setset chan $1 $gettok($getset(chan, $1),1-4,59) }
  2859. alias tchan.set {
  2860. if ($3- != $null) {
  2861. var %nl = $getset(chan,$1)
  2862. if (!%nl) { %nl = $1 $+ ;*;*; $+ $scoresfil $+ ; $+ questions.txt }
  2863. if ($2 > $numtok(%nl,59)) %nl = %nl $+ $str(;0,$calc($2 - $numtok(%nl,59)))
  2864. %nl = $puttok(%nl,$3-,$2,59)
  2865. setset chan $1 %nl
  2866. }
  2867. }
  2868. alias tfindchan {
  2869. var %i = 1
  2870. while ($tchan(%i)) {
  2871. if (((!$1) || ($tchan(%i) == $1)) && ((!$2) || ($tchan(%i,3) iswm $2)) && ((!$3) || ($tchan(%i,2) iswm $3))) { return %i }
  2872. inc %i
  2873. }
  2874. }
  2875. alias multichan.load {
  2876. if (!$did(108).sel) { return }
  2877. did -r $dname 34
  2878. did -ra $dname 30 $tchan($did(108).sel)
  2879. did -ra $dname 67 $ifd($tchan($did(108).sel,2),*)
  2880. did -ra $dname 544 $ifd($tchan($did(108).sel,3),*)
  2881. did -ra $dname 132 $tchan($did(108).sel,4)
  2882. var %i = 5
  2883. while ($tchan($did(108).sel, %i)) {
  2884. did -a $dname 34 $tchan($did(108).sel,%i)
  2885. inc %i
  2886. }
  2887. check.toggle.multichan
  2888. }
  2889. alias awards.load {
  2890. var %i = 1
  2891. did -r $dname 420
  2892. while ($aw(%i)) {
  2893. did -a $dname 420 $aw(%i)
  2894. inc %i
  2895. }
  2896. did -r $dname 137,159,166
  2897. %i = 1
  2898. while ($gettok($award.on.tok, %i, $asc(.))) {
  2899. did -a $dname 137 $gettok($award.on.tok, %i, $asc(.))
  2900. inc %i
  2901. }
  2902. %i = 1
  2903. while ($gettok($award.val.tok, %i, $asc(.))) {
  2904. did -a $dname 159 $gettok($award.val.tok, %i, $asc(.))
  2905. inc %i
  2906. }
  2907. %i = 1
  2908. while ($gettok($award.do.tok, %i, $asc(.))) {
  2909. did -a $dname 166 $gettok($award.do.tok, %i, $asc(.))
  2910. inc %i
  2911. }
  2912. }
  2913. alias -l record.type { return $gettok(hof.streak.time.wpm.champ.web.roundscores.records, $ifd($1, 8), $asc(.)) }
  2914. alias -l trivset.teams { did $iif($1, -e, -b) $dname 308,309,303,304,382,383,323,324 }
  2915. alias triviafriend.del {
  2916. var %i = $$1, %j = $setini(friend,0)
  2917. while (%i < %j) {
  2918. setset friend %i $getset(friend,$calc(%i + 1))
  2919. inc %i
  2920. }
  2921. setset friend %j
  2922. }
  2923. alias triviafriend.add {
  2924. var %i = 1
  2925. while ($getset(friend, %i)) { inc %i }
  2926. setset friend %i $1-
  2927. }
  2928. alias triviafriend.clear { setset friend }
  2929. alias trivia.load.friends {
  2930. did -r $dname 610
  2931. var %i = 1
  2932. while ($getset(friend, %i)) {
  2933. did -a $dname 610 $getset(friend, %i)
  2934. inc %i
  2935. }
  2936. }
  2937. ;########################################################
  2938. ;# TRIVIA RANKS DIALOG. #
  2939. ;########################################################
  2940. dialog trivrank {
  2941. title "Trivia Ranks"
  2942. size -1 -1 180 104
  2943. option dbu
  2944. list 1, 2 12 146 50, size
  2945. text "Rank Name", 11, 4 66 31 8
  2946. edit "", 2, 46 64 74 10, autohs
  2947. text "Points Required", 10, 4 76 39 8
  2948. edit "", 3, 46 76 36 10, read autohs
  2949. button "Add", 4, 150 12 21 8
  2950. button "Del", 5, 150 24 21 8
  2951. button "Ok", 999, 114 78 17 8, ok
  2952. check "Trivia Ranks", 6, 4 4 50 6
  2953. }
  2954. ;########################################################
  2955. ;# DIALOG EVENTS. #
  2956. ;########################################################
  2957. on *:dialog:trivrank:init:*:{
  2958. if ($getset(trivia,ranks) == 1) { did -c $dname 6 }
  2959. check.toggle.ranks
  2960. var %i = $setini(ranks,0), %j = 1
  2961. while (%j <= %i) {
  2962. did -a $dname 1 $setini(ranks,%j) : $getset(ranks, $setini(ranks,%j))
  2963. inc %j
  2964. }
  2965. }
  2966. on *:dialog:trivrank:sclick:1:{
  2967. did -ra $dname 3 $setini(ranks, $did(1).sel)
  2968. did -ra $dname 2 $getset(ranks, $setini(ranks, $did(1).sel))
  2969. }
  2970. on *:dialog:trivrank:edit:2:{
  2971. if (!$did(1).sel) return
  2972. setset ranks $$did(3) $$did(2)
  2973. var %p = $did(1).sel
  2974. did -o $dname 1 %p $did(3) : $did(2)
  2975. did -c $dname 1 %p
  2976. }
  2977. on *:dialog:trivrank:sclick:4:{
  2978. var %r = $$?="What is the minimum amount points for this rank?"
  2979. if ((%r !isnum) || ($getset(ranks,%r))) return
  2980. var %n = $$?="What is this rank called?"
  2981. setset ranks %r %n
  2982. did -a $dname 1 %r : %n
  2983. }
  2984. on *:dialog:trivrank:sclick:5:{
  2985. var %p = $$did(1).sel
  2986. setset ranks $$setini(ranks, %p)
  2987. did -d $dname 1 %p
  2988. did -r $dname 2,3
  2989. }
  2990. on *:dialog:trivrank:sclick:6:{
  2991. setset trivia ranks $did(6).state
  2992. check.toggle.ranks
  2993. }
  2994. alias check.toggle.ranks { did $iif($did(6).state,-e,-b) $dname 1,2,3,4,5,10,11 }
  2995. ;########################################################
  2996. ;# TRIVIA BUILD DIALOG. #
  2997. ;########################################################
  2998. dialog trivbuild {
  2999. title "Build Html"
  3000. size -1 -1 200 232
  3001. option dbu
  3002. check Run FTP Batch, 1, 8 52 50 10
  3003. edit "", 2, 10 124 86 88, autohs autovs
  3004. button Ok, 99, 172 220 23 10, ok
  3005. radio Write All Scores, 3, 80 12 50 10
  3006. radio Write Top, 4, 132 12 34 10
  3007. edit 25, 5, 168 12 20 10
  3008. box Generate Scores File, 57, 76 4 118 35
  3009. text Password, 54, 104 172 25 8
  3010. box Ftp Batch Creator, 55, 100 124 84 88
  3011. text Username, 53, 104 160 25 8
  3012. text Ftp Site, 51, 104 136 25 8
  3013. edit "", 6, 136 136 46 10, autohs
  3014. text Port, 52, 104 148 25 8
  3015. edit "", 7, 136 148 46 10, autohs
  3016. edit "", 8, 136 160 46 10, autohs
  3017. edit "", 9, 136 172 46 10,i autohs
  3018. edit "triv.htm", 11, 136 196 46 10, autohs
  3019. text Filename, 56, 104 196 23 6
  3020. text Every, 58, 8 16 17 6
  3021. edit "", 13, 28 16 22 10, autohs
  3022. text Points, 14, 52 16 17 6
  3023. button "Cancel", 12, 144 220 23 10, cancel
  3024. text "Directory", 50, 104 184 25 8
  3025. edit "", 16, 136 184 46 10
  3026. check "Announce Update", 17, 8 68 54 10
  3027. edit "", 18, 92 48 98 10, autohs
  3028. text "URL", 20, 80 48 10 7
  3029. text "Batch File", 21, 12 116 29 8
  3030. check "Generate Scores File", 15, 8 36 62 10
  3031. box "On Trigger", 10, 4 4 70 102
  3032. box "Announce Update", 19, 76 40 118 22
  3033. check "Copy File", 22, 8 84 58 10
  3034. box "Copy File", 23, 76 64 118 42
  3035. edit "", 24, 100 72 90 10, autohs
  3036. button "File", 25, 80 72 17 8
  3037. button "Dir", 26, 80 92 17 8
  3038. edit "", 27, 100 92 90 10, autohs
  3039. text "TO", 28, 124 84 9 7
  3040. box "Run FTP Batch", 29, 4 108 190 110
  3041. edit "", 30, 116 24 74 10
  3042. text "Generate File", 31, 80 24 33 8
  3043. }
  3044. ;########################################################
  3045. ;# TRIVIA BUILD EVENTS. #
  3046. ;########################################################
  3047. on *:dialog:trivbuild:sclick:1,17,22,15,4,3:{ trivbuild.toggle.check }
  3048. on *:dialog:trivbuild:edit:13:{ trivbuild.toggle.check }
  3049. on *:dialog:trivbuild:edit:6,7,8,9,16,11:{ build.generate }
  3050. on *:dialog:trivbuild:sclick:25:{ did -ra $dname 24 $$sfile($mircdir) }
  3051. on *:dialog:trivbuild:sclick:26:{ did -ra $dname 27 $$sdir($mircdir) }
  3052. alias trivbuild.toggle.check {
  3053. did -b $dname 1,17,15,22,4,3,5,30,18,24,27,6,7,8,9,16,2,11
  3054. if (!$did(13)) { return }
  3055. did -e $dname 1,17,22,15
  3056. if ($did(1).state) {
  3057. did -e $dname 2,6,7,8,9,16,11
  3058. build.generate
  3059. }
  3060. if ($did(17).state) did -e $dname 17,18
  3061. if ($did(22).state) did -e $dname 24,27
  3062. if ($did(15).state) did -e $dname 3,4,30
  3063. if ($did(4).state) did -e $dname 5
  3064. }
  3065. on *:dialog:trivbuild:init:*:{
  3066. if ($getset(build,auto)) { did -c $dname 1 }
  3067. if ($getset(build,web)) { did -c $dname 17 }
  3068. if ($getset(build,copy)) { did -c $dname 22 }
  3069. if ($getset(build,generate)) { did -c $dname 15 }
  3070. did -c $dname $iif($getset(build,top),4,3)
  3071. did -ra $dname 5 $getset(build,top)
  3072. did -ra $dname 13 $getset(build,instabuild)
  3073. did -ra $dname 18 $getset(build,web)
  3074. did -ra $dname 30 $getset(build,genname)
  3075. did -ra $dname 24 $getset(build,from)
  3076. did -ra $dname 27 $getset(build,to)
  3077. if ($getset(build,host)) { did -ra $dname 6 $getset(build,host) }
  3078. if ($getset(build,port)) { did -ra $dname 7 $getset(build,port) }
  3079. if ($getset(build,user)) { did -ra $dname 8 $getset(build,user) }
  3080. if ($getset(build,pass)) { did -ra $dname 9 $decode($getset(build,pass),m) }
  3081. if ($getset(build,dir)) { did -ra $dname 16 $getset(build,dir) }
  3082. if ($getset(build,file)) { did -ra $dname 11 $getset(build,file) }
  3083. build.generate
  3084. trivbuild.toggle.check
  3085. }
  3086. on *:dialog:trivbuild:sclick:99:{
  3087. setset build instabuild $did(13)
  3088. setset build auto $did(1).state
  3089. setset build generate $did(15).state
  3090. setset build genname $did(30)
  3091. setset build copy $did(22).state
  3092. setset build web $iif($did(17).state, $did(18))
  3093. setset build from $did(24)
  3094. setset build to $did(27)
  3095. setset build host $did(6)
  3096. setset build port $did(7)
  3097. setset build user $did(8)
  3098. setset build pass $encode($did(9),m)
  3099. setset build dir $did(16)
  3100. setset build file $did(11)
  3101. setset build top $iif($did(4).state,$did(5))
  3102. setset build html $did(11)
  3103. build.generate
  3104. if ($did(2)) { filter -ifc $dname 2 $+(",$triv(dir),\,ftpbatch.txt,") * }
  3105. }
  3106. alias build.generate {
  3107. did -r $dname 2
  3108. did -i $dname 2 $did(2).lines open
  3109. did -i $dname 2 $did(2).lines $did(6) $did(7)
  3110. did -i $dname 2 $did(2).lines $did(8)
  3111. did -i $dname 2 $did(2).lines $did(9)
  3112. if ($did(16)) { did -i $dname 2 $did(2).lines cd $did(16) }
  3113. did -i $dname 2 $did(2).lines put $shortfn($mircdir $+ $did(11))
  3114. did -i $dname 2 $did(2).lines bye
  3115. }
  3116. ;########################################################
  3117. ;# TRIVIA THEMES DIALOG. #
  3118. ;########################################################
  3119. dialog triviatheme {
  3120. title "Trivia Themes"
  3121. size -1 -1 508 340
  3122. option pixels
  3123. list 1, 22 24 376 88, sort size
  3124. button Add, 2, 410 28 50 20
  3125. button Remove, 3, 410 62 50 20
  3126. text Name:, 30, 242 142 60 16
  3127. text Points per Question:, 33, 238 224 100 16
  3128. text Hint-Point Decrease:, 34, 238 250 100 16
  3129. edit , 11, 318 142 152 20, autohs
  3130. edit , 12, 318 168 156 20, autohs
  3131. edit , 13, 350 194 40 20, autohs
  3132. edit , 14, 350 224 40 20, autohs
  3133. edit , 15, 350 250 40 20, autohs
  3134. check Team Game, 16, 402 254 72 20, push
  3135. check Limit Guesses, 17, 402 224 72 20, push
  3136. check Roundscores, 18, 402 196 72 20, push
  3137. box Lag, 35, 8 124 220 208
  3138. text Before Start, 26, 18 150 96 20
  3139. text Between Questions (Answered), 37, 18 180 96 28
  3140. text Given to Answer, 38, 18 214 96 20
  3141. text Before Auto-Hint, 39, 18 244 88 20
  3142. text Between Question (Timed Out), 40, 18 274 88 28
  3143. edit , 19, 140 150 80 20
  3144. edit , 20, 140 180 80 20
  3145. edit , 21, 140 210 80 20
  3146. edit , 22, 140 240 80 20
  3147. edit , 23, 140 274 80 20
  3148. edit , 24, 140 304 80 20
  3149. button OK, 999, 430 310 40 20, ok
  3150. text "Before hint allowed", 5, 16 308 102 16
  3151. box "Themes", 6, 8 8 480 116
  3152. box "Theme Features", 7, 232 124 256 160
  3153. button "Question File", 8, 240 168 67 17
  3154. text "Number of Questions", 4, 240 196 102 16
  3155. }
  3156. ;########################################################
  3157. ;# TRIVIA THEMES EVENTS. #
  3158. ;########################################################
  3159. on *:dialog:triviatheme:init:*:{
  3160. var %i = 1
  3161. while ($getset(triviamode $+ %i, name)) {
  3162. did -a triviatheme 1 $+($getset(triviamode $+ %i, name),;,$getset(triviamode $+ %i, file),;,$getset(triviamode $+ %i, max),;,$getset(triviamode $+ %i, PPQ),;,$getset(triviamode $+ %i, DPH),;,$getset(triviamode $+ %i, team),;,$getset(triviamode $+ %i, guess),;,$getset(triviamode $+ %i, rrs),;,$getset(triviamode $+ %i, lagstart),;,$getset(triviamode $+ %i, laganswered),;,$getset(triviamode $+ %i, lagtimedout),;,$getset(triviamode $+ %i, laghint),;,$getset(triviamode $+ %i, lagtimed),;,$getset(triviamode $+ %i, laghintallow))
  3163. inc %i
  3164. }
  3165. }
  3166. on *:dialog:triviatheme:sclick:1:{
  3167. did -ra triviatheme 11 $gettok($did(1).seltext, 1, $asc(;))
  3168. did -ra triviatheme 12 $gettok($did(1).seltext, 2, $asc(;))
  3169. did -ra triviatheme 13 $gettok($did(1).seltext, 3, $asc(;))
  3170. did -ra triviatheme 14 $gettok($did(1).seltext, 4, $asc(;))
  3171. did -ra triviatheme 15 $gettok($did(1).seltext, 5, $asc(;))
  3172. did -u triviatheme 16,17,18
  3173. if ($gettok($did(1).seltext, 6, $asc(;))) { did -c triviatheme 16 }
  3174. if ($gettok($did(1).seltext, 7, $asc(;))) { did -c triviatheme 17 }
  3175. if ($gettok($did(1).seltext, 8, $asc(;))) { did -c triviatheme 18 }
  3176. did -ra triviatheme 19 $ifd($gettok($did(1).seltext, 9, $asc(;)),$slag(start))
  3177. did -ra triviatheme 20 $ifd($gettok($did(1).seltext, 10, $asc(;)),$slag(answered))
  3178. did -ra triviatheme 21 $ifd($gettok($did(1).seltext, 11, $asc(;)),$slag(timedout))
  3179. did -ra triviatheme 22 $ifd($gettok($did(1).seltext, 12, $asc(;)),$slag(hint))
  3180. did -ra triviatheme 23 $ifd($gettok($did(1).seltext, 13, $asc(;)),$slag(timed))
  3181. did -ra triviatheme 24 $ifd($gettok($did(1).seltext, 14, $asc(;)),$slag(hintallow))
  3182. }
  3183. on *:dialog:triviatheme:sclick:2:{
  3184. did -a triviatheme 1 $+(Themename,;,questions.txt,;,10,;,1,;,0,;,0,;,0,;,0,;,$slag(start),;,$slag(answered),;,$slag(timedout),;,$slag(hint),;,$slag(timed),;,$slag(hintallow))
  3185. triviatheme.save
  3186. }
  3187. on *:dialog:triviatheme:sclick:3:{
  3188. did -d triviatheme 1 $did(1).sel
  3189. triviatheme.save
  3190. }
  3191. on *:dialog:triviatheme:sclick:8:{
  3192. did -ra $dname 12 $nopath($$sfile(" $+ $mircdir $+ *.txt $+ ",Choose a question file.))
  3193. triviatheme.update
  3194. }
  3195. on *:dialog:triviatheme:edit:11,12,13,14,15,19,20,21,22,23,24:{ triviatheme.update }
  3196. on *:dialog:triviatheme:sclick:16,17,18:{ triviatheme.update }
  3197. on *:dialog:triviatheme:sclick:999:{ triviatheme.save }
  3198. alias triviatheme.update { if ($did(1).sel) { did -oc triviatheme 1 $did(1).sel $+($did(11),;,$did(12),;,$did(13),;,$did(14),;,$did(15),;,$did(16).state,;,$did(17).state,;,$did(18).state,;,$did(19),;,$did(20),;,$did(21),;,$did(22),;,$did(23),;,$did(14)) } }
  3199. alias triviatheme.save {
  3200. var %i = 1
  3201. while ($getset(triviamode $+ %i,name)) {
  3202. setset triviamode $+ %i
  3203. inc %i
  3204. }
  3205. %i = 1
  3206. while ($did(1,%i).text) {
  3207. setset triviamode $+ %i name $gettok($did(1, %i).text,1,59)
  3208. setset triviamode $+ %i file $gettok($did(1, %i).text,2,59)
  3209. setset triviamode $+ %i max $gettok($did(1, %i).text,3,59)
  3210. setset triviamode $+ %i ppq $gettok($did(1, %i).text,4,59)
  3211. setset triviamode $+ %i dph $gettok($did(1, %i).text,5,59)
  3212. setset triviamode $+ %i team $gettok($did(1, %i).text,6,59)
  3213. setset triviamode $+ %i guess $gettok($did(1, %i).text,7,59)
  3214. setset triviamode $+ %i rrs $gettok($did(1, %i).text,8,59)
  3215. setset triviamode $+ %i lagstart $gettok($did(1, %i).text,9,59)
  3216. setset triviamode $+ %i laganswered $gettok($did(1, %i).text,10,59)
  3217. setset triviamode $+ %i lagtimedout $gettok($did(1, %i).text,11,59)
  3218. setset triviamode $+ %i laghint $gettok($did(1, %i).text,12,59)
  3219. setset triviamode $+ %i lagtimed $gettok($did(1, %i).text,13,59)
  3220. setset triviamode $+ %i laghintallow $gettok($did(1, %i).text,14,59)
  3221. inc %i
  3222. }
  3223. }
  3224. ;########################################################
  3225. ;# TRIVIA SCORES DIALOG. #
  3226. ;########################################################
  3227. dialog triviascores {
  3228. title "Trivia Scores"
  3229. size -1 -1 452 288
  3230. option pixels
  3231. list 1, 5 20 100 200, size vsbar
  3232. list 2, 115 20 75 200, size vsbar
  3233. list 3, 200 20 75 200, size vsbar
  3234. list 4, 285 20 75 200, size vsbar
  3235. list 5, 370 20 75 200, size vsbar
  3236. button Delete, 10, 5 225 75 20
  3237. button Reset Score, 11, 115 225 75 20
  3238. button Reset Streak, 12, 200 225 75 20
  3239. button Reset Time, 13, 285 225 75 20
  3240. button Reset WPM, 14, 370 225 75 20
  3241. button Name, 20, 5 5 50 15
  3242. button Score, 21, 115 5 50 15
  3243. button Streak, 22, 200 5 50 15
  3244. button Time, 23, 285 5 50 15
  3245. button WPM, 24, 370 5 50 15
  3246. button Ok, 100, 398 258 45 20, ok
  3247. }
  3248. ;########################################################
  3249. ;# TRIVIA SCORES EVENTS. #
  3250. ;########################################################
  3251. on 1:dialog:triviascores:init:*: { sortscores score }
  3252. alias -l sortscores {
  3253. sort $1
  3254. loaddata.triviascores
  3255. }
  3256. alias -l loaddata.triviascores {
  3257. did -r $dname 1,2,3,4,5
  3258. var %i = 1
  3259. while ($hof(%i,1) != $null) {
  3260. did -a $dname 1 $hof(%i,1)
  3261. did -a $dname 2 $hof(%i,2)
  3262. did -a $dname 3 $hof(%i,4)
  3263. did -a $dname 4 $hof(%i,3)
  3264. did -a $dname 5 $hof(%i,5)
  3265. inc %i
  3266. }
  3267. }
  3268. on 1:dialog:triviascores:sclick:1,2,3,4,5:{ did -c $dname 1,2,3,4,5 $did($did).sel }
  3269. on 1:dialog:triviascores:sclick:20,21,22,23,24: { sortscores $gettok(name.score.streak.time.wpm, $calc($did - 19), $asc(.)) }
  3270. on 1:dialog:triviascores:sclick:10: {
  3271. deleteplayer $did(1).seltext
  3272. if ($did(1).sel) { did -d triviascores 1,2,3,4,5 $did(1).sel }
  3273. }
  3274. on 1:dialog:triviascores:sclick:11,12,13,14: {
  3275. setvar $did(1).seltext $gettok(score.streak.time.wpm, $calc($did - 10), 46) $iif($did == 13, 9999, 0)
  3276. if ($did(1).sel) { did -o triviascores $calc($did - 9) $did(1).sel 0 }
  3277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement