; Wakecheck-script (Nattävling) av Jocke "Firetech" Andersson 2004 ; ================================================================ ; Ersätt alla förekomster av "#wcchan" (utan citat) med kanalen som scriptet ska köras i. alias -l wcversion { return 1.4.2 } alias -l notcomps { return L Q S $me Vulgaer } ;--- alias -l directcomms { return start stop restart stat check } alias -l offcomms { return start } alias -l anystatcomms { return stat } alias -l opcomms { return start stop restart check draw } ;--- alias -l sendcomms { if (($$1 isop #wcchan) || ($usrlvl($$1) >= 5)) { notice $$1 Användning: !nt.|drawme|stat|about> } else { notice $$1 Användarkommandon: !nt. } } alias -l sendabout { notice $$1 • Nattävling: Powered by Wakecheck $wcversion $+ . © Copyright $asctime(yyyy) Jocke "Firetech" Andersson. } alias -l sendinfo { if ($timer(wakecheck)) { notice $$1 • Nattävling pågår. Om du är idle i mer än 30 minuter (inte säger nåt (vanligt eller /me) i #wcchan $+ ) åker du ut, koll görs var femte minut. De med voice är med i tävlingen. (Om du inte vill vara med, skriv !nt.drawme.) } else { notice $$1 • Nattävling ej igång. Information om nattävling är irrelevant när tävlingen inte är igång. } } ;--- alias kommaoch { var %i = $numtok($$1-,32),%j = 2,%t = $gettok($$1-,1,32) while (%j <= %i) { if (%j < %i) { %t = %t $+ , $gettok($$1-,%j,32) } elseif (%j == %i) { %t = %t och $gettok($$1-,%j,32) } inc %j } return $replace(%t,§,$chr(32)) } on 1:TEXT:!nt*:#wcchan: { var %command,%comm = $right($1,-4) if ((($istok($opcomms,%comm,32)) && (($nick isop $chan) || ($usrlvl($nick) >= 5))) || (!$istok($opcomms,%comm,32))) { if ($istok($directcomms,%comm,32)) { %command = $right($1-,-4) } elseif (%comm == about) { sendabout $nick } elseif (%comm == info) { sendinfo $nick } elseif (%comm == drawme) { wakecheck -d $nick } elseif (%comm == draw) { wakecheck -d $$2 $nick } else { sendcomms $nick } if (%command) { var %run = $iif($istok($offcomms,%comm,32),$iif($timer(wakecheck),$false,$true),$iif($timer(wakecheck),$true,$false)) if ((%run) || ($istok($anystatcomms,%comm,32))) { wakecheck %command } else { notice $nick Nattävling $iif($timer(wakecheck),pågår redan,ej igång) $+ . } } } else { notice $nick Du måste vara op eller minst botmaster för att kunna utföra detta kommando! } } alias wakecheck { if ($network == Quakenet) { if ($1 == stat) { if ($timer(wakecheck)) { var %comps,%i = $nick(#wcchan,0,v) while (%i >= 1) { if (!$istok($notcomps,$nick(#wcchan,%i,v),32)) { %comps = $sorttok($addtok(%comps,$nick(#wcchan,%i,v),32),32,a) } dec %i } msg #wcchan • Nattävling pågår. Tävlande: $kommaoch(%comps) $+ . } else { var %winner = $read(wc-lastwinner.txt,1) msg #wcchan • Nattävling ej igång. $iif(%winner,Senaste vinnare: %winner $+ $iif($numtok(%winner,32) >= 3,$chr(32) $+ (Oavgjort)) $+ .) } } elseif ($me isop #wcchan) { if ($1 == -d) { if (!$timer(wakecheck)) { notice $iif($3,$3,$$2) Nattävling ej igång. echo -a $timestamp • Nattävling ej igång. Kan ej dra ut tävlande. halt } if ($2 isvoice #wcchan) { mode #wcchan -v $$2 hdel wc-lastsay $$2 if (!$3) { notice $$2 • Nattävling: Du har nu dragit ut dig själv ut tävlingen. } else { notice $3 • Nattävling: Du har nu dragit ut $$2 ur tävlingen. notice $$2 • Nattävling: $3 har dragit ut dig ur tävlingen. Ev. klagomål hänvisas till $3 $+ . } } else { notice $iif($3,$3 $$2,$$2 Du) är inte med i tävlingen. } } elseif ($1 == restart) { if (!$timer(wakecheck)) { echo -a $timestamp • Nattävling ej igång. Kan ej starta om. (Använd start) halt } .timerwakecheck off var %i = $nick(#wcchan,0,v),%runs while (%i >= 1) { if (!$istok($notcomps,$nick(#wcchan,%i,v),32)) { %runs = $sorttok($addtok(%runs,$nick(#wcchan,%i,v),32),32,a) } dec %i } msg #wcchan • Nattävling avbruten för omstart. $iif(%runs,$iif($numtok(%runs,32) >= 2,Oavgjort mellan $kommaoch(%runs) $+ .,Vinnare: %runs $+ .)) echo -s $timestamp • Nattävling avbruten för omstart. } if ($istok(start restart ,$1,32)) { if ($timer(wakecheck)) { echo -a $timestamp • Nattävling pågår. Kan ej starta ny. (Använd restart) halt } if ($2 != -nomode) { fixmode } if ($file(wc-lastwinner.txt)) { .remove wc-lastwinner.txt } if ($hget(wc-lastsay)) { hfree wc-lastsay } var %i = $nick(#wcchan,0) hmake wc-lastsay $calc($round($calc(%i / 10),0) + 1) while (%i >= 1) { if (!$istok($notcomps,$nick(#wcchan,%i),32)) { hadd wc-lastsay $nick(#wcchan,%i) $ctime } dec %i } msg #wcchan • Nattävling startad. Skriv !nt.info för info. .timerwakecheck $asctime($calc($ctime + 240),HH:nn) 1 61 /wakecheck echo -s $timestamp • Nattävling startad. } elseif ($1 == stop) { if (!$timer(wakecheck)) { echo -a $timestamp • Nattävling ej igång. Kan ej avsluta. halt } .timerwakecheck off var %i = $nick(#wcchan,0,v),%runs while (%i >= 1) { if (!$istok($notcomps,$nick(#wcchan,%i,v),32)) { %runs = $sorttok($addtok(%runs,$nick(#wcchan,%i,v),32),32,a) } dec %i } msg #wcchan • Nattävling avbruten. $iif(%runs,$iif($numtok(%runs,32) >= 2,Oavgjort mellan $kommaoch(%runs) $+ .,Vinnare: %runs $+ .)) write -c wc-lastwinner.txt $kommaoch(%runs) hfree wc-lastsay echo -s $timestamp • Nattävling avbruten. } else { if (!$timer(wakecheck)) { echo -a $timestamp • Nattävling ej igång. Kan ej utföra kontroll. halt } .timerwakecheck $asctime($calc($ctime + 240),HH:nn) 1 61 /wakecheck var %i = $nick(#wcchan,0),%n = 0,%ni,%wcdevoice while (%i >= 1) { if (!$istok($notcomps,$nick(#wcchan,%i),32)) { if ($nick(#wcchan,%i) isvoice #wcchan) { if ($hget(wc-lastsay,$nick(#wcchan,%i)) <= $calc($ctime - 1801)) { %wcdevoice = $addtok(%wcdevoice,$nick(#wcchan,%i),32) hdel wc-lastsay $nick(#wcchan,%i) } } } dec %i } %i = $nick(#wcchan,0,v) while (%i >= 1) { if ((!$istok(%wcdevoice,$nick(#wcchan,%i,v),32)) && (!$istok($notcomps,$nick(#wcchan,%i,v),32))) { inc %n %ni = $nick(#wcchan,%i,v) } dec %i } if (((%n == 0) && ($numtok(%wcdevoice,32) >= 2)) || (%n == 1)) { var %nick = $iif(%n == 1,%ni,$kommaoch($sorttok(%wcdevoice,32,a))) msg #wcchan • Nattävling avslutad. $iif(%n == 1,Vinnare:,Oavgjort mellan) %nick $+ . write -c wc-lastwinner %nick hfree wc-lastsay .timerwakecheck off } if ((%wcdevoice) && (%n >= 1)) { wcdevoice %wcdevoice } echo -s $timestamp • Nattävling: Kontroll utförd. } } else { msg #wcchan • Nattävling - Fel: Nattävlingsscriptet kräver att $me har op. (Endast för voice/devoice.) } } } alias fixmode { var %i = $nick(#wcchan,0),%j = %i,%d = 0,%x,%y ;--- while (%i) { if (!$istok($notcomps,$nick(#wcchan,%i),32)) { if (($nick(#wcchan,%i) isop #wcchan) && ($nick(#wcchan,%i) !isvoice #wcchan)) { %x = $addtok(%x,$nick(#wcchan,%i),32) } if ($numtok(%x,32) == $modespl) { $iif(%d,.timermode. $+ $cid $+ fm1 $+ %d 1 %d) mode #wcchan - $+ $str(v,$modespl) %x inc %d 2 %x = "" } } dec %i } if (%x) { $iif(%d,.timermode. $+ $cid $+ fm1 $+ %d 1 %d) mode #wcchan - $+ $str(v,$numtok(%x,32)) %x inc %d 2 } ;--- while (%j) { if (!$istok($notcomps,$nick(#wcchan,%j),32)) { if (($nick(#wcchan,%j) !isvoice #wcchan) || ($nick(#wcchan,%j) isop #wcchan)) { %y = $addtok(%y,$nick(#wcchan,%j),32) } if ($numtok(%y,32) == $modespl) { $iif(%d,.timermode. $+ $cid $+ fm2 $+ %d 1 %d) mode #wcchan + $+ $str(v,$modespl) %y inc %d 2 %y = "" } } dec %j } if (%y) { $iif(%d,.timermode. $+ $cid $+ fm2 $+ %d 1 %d) mode #wcchan + $+ $str(v,$numtok(%y,32)) %y } } alias -l wcdevoice { var %i = $numtok($$1-,32),%d = 0,%x while (%i) { %x = $addtok(%x,$gettok($$1-,%i,32),32) if ($numtok(%x,32) == $modespl) { $iif(%d,.timermode. $+ $cid $+ wc $+ %d 1 %d) mode #wcchan - $+ $str(v,$modespl) %x %x = "" inc %d 2 } dec %i } if (%x) { $iif(%d,.timermode. $+ $cid $+ wc $+ %d 1 %d) mode #wcchan - $+ $str(v,$numtok(%x,32)) %x } } on *:TEXT:*:#wcchan: lastsay on *:ACTION:*:#wcchan: lastsay alias -l lastsay { if ((!$istok($notcomps,$nick,32)) && ($timer(wakecheck))) { if ($nick isvoice $chan) { hadd wc-lastsay $nick $ctime } } } on *:NICK: { if (($timer(wakecheck)) && ($newnick ison #wcchan) && ($hget(wc-lastsay,$nick))) { hadd wc-lastsay $newnick $hget(wc-lastsay,$nick) hdel wc-lastsay $nick } }