Advertisement
Guest User

sadsaddas

a guest
Jan 18th, 2011
496
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 54.13 KB | None | 0 0
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;; PZEliten Gather bot
  3. ;; #pzeliten.2 @ QuakeNet
  4. ;;
  5. ;;
  6.  
  7.  
  8. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  9. ;; Admin   - 100 ( 2/3/3/10 - 75 )
  10. ;; Manager -  90 ( 0/2/2/10 - 65 )
  11. ;; Voucher -  70 ( 0/0/0/5  - 65 )
  12. ;; Censor  -  50 ( 0/0/0/3  - 20 )
  13. ;; Leader  -  30
  14. ;; User    -  10
  15. ;;
  16.  
  17. ;############################## ON START #############################
  18. ;#####################################################################
  19.  
  20. on *:LOAD: {
  21.   set %game.daymax 0
  22.   set %max.xpgained 0
  23.   set %max.xplost 0
  24. }
  25.  
  26. on *:INVITE:*: {
  27.   if ( $nick == Q ) {
  28.     join $chan
  29.   }
  30. }
  31.  
  32. on *:INVITE:*: {
  33.   if ( $nick == zhn ) {
  34.     join $chan
  35.   }
  36. }
  37.  
  38. on *:START: {
  39.   hmake userdata 1000
  40.   hload userdata userdata.txt
  41.   timer 0 180 hsave userdata userdata.txt
  42.   hmake pendata 1000
  43.   hload pendata pendata.txt
  44.   timer 0 180 hsave pendata pendata.txt
  45.   hmake gamedata 1000
  46.   hload gamedata gamedata.txt
  47.   timer 0 180 hsave gamedata gamedata.txt
  48.   hmake vouchdata 1000
  49.   hload vouchdata vouchdata.txt
  50.   timer 0 180 hsave vouchdata vouchdata.txt
  51.   hmake herodata 100
  52.   hload herodata herodata.txt
  53.   timer 0 180 hsave herodata herodata.txt
  54.   timer 0 180 save -rv script\vars.nns
  55.   ;; timer 0 7200 rank.sortexp
  56.   timer -oi 00:00 1 61 daychange
  57.   timersyncvoice 0 180 sync.voice
  58.   timer 0 180 /nick PZELITEN
  59. }
  60.  
  61. on *:EXIT: {
  62.   hsave userdata userdata.txt
  63.   hsave gamedata gamedata.txt
  64.   hsave vouchdata vouchdata.txt
  65.   hsave herodata herodata.txt
  66.   hsave pendata pendata.txt
  67.   save -rv script\vars.nns
  68. }
  69.  
  70. on *:START: {
  71.   hmake fdata 1000
  72.   hload fdata fdata.txt
  73.   timer 0 180 hsave fdata fdata.txt
  74.   hmake pendata 1000
  75.   hload pendata pendata.txt
  76.   timer 0 180 hsave pendata pendata.txt
  77.   hmake pendata 1000
  78.   hload pendata pendata.txt
  79.   timer 0 180 hsave pendata pendata.txt
  80.   hmake edata 1000
  81.   hload edata edata.txt
  82.   timer 0 180 hsave edata edata.txt
  83.   hmake ldban 1000
  84.   hload ldban ldban.txt
  85.   timer 0 180 hsave ldban ldban.txt
  86. }
  87.  
  88. on *:EXIT: {
  89.   hsave fdata fdata.txt
  90.   hsave pendata pendata.txt
  91.   hsave pendata pendata.txt
  92.   hsave edata edata.txt
  93.   hsave ldban ldban.txt
  94. }
  95.  
  96. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  97. ;;;;;;HJORT COMMANDS;;;;;;;;;
  98. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  99.  
  100. on *:TEXT:.adminreplace*:#: {
  101.   if ($userlvl($nick) < 70) { .describe %ch You havent enough access to use this command | return }
  102.   if (!$3) { .describe %ch Syntax Error; .adminreplace <user-in-game> <newuser> | return }
  103.   var %ru = $getid($2)
  104.   if (!$user(%ru).gamenum) { .describe %ch Can not found $iif(%ru,%ru,$2) ingame | return }
  105.   var %gn = $user(%ru).gamenum
  106.   var %u = $getid2($nick)
  107.   var %nu = $getid($3)
  108.   if ($istok($($+(%,game.auths_,%gn),2),%nu,46)) { .describe %ch %nu already is in game %gn | return }
  109.   if (!$istok($($+(%,game.auths_,%gn),2),%ru,46)) { .describe %ch Can not found: %ru is in game %gn | return }
  110.   if (!$hget(userdata,%nu)) { .describe %ch $iif($getid($3),$getid($3),$3) isn`t vouched | return }
  111.   if ($hget(gamedata,%gn)) { return }
  112.   if ( $($+(%,game.replace.votes_,%gn,_,%ru,_,%nu),2) >= 1 ) { return }
  113.   if ($userlvl($nick) >= 70) {
  114.     echo -ag REPLACED
  115.     var %pos = $findtok($($+(%,game.auths_,%gn),2),%ru,1,46)
  116.     set %game.auths_ $+ %gn $puttok($($+(%,game.auths_,%gn),2),%nu,%pos,46)
  117.     set %player.game_ $+ %ru 0
  118.     set %player.game_ $+ %nu %gn
  119.     describe %ch Player $getname(%ru) Successfully replaced to $getname(%nu) in $get.gamename($($+(%,game.mode_,%gn),2),%gn) by Administrator $getname(%u) $+ .
  120.   }
  121. }
  122.  
  123. on *:TEXT:.adminexclude *:%ch: {
  124.   var %u = $getid2($nick)
  125.   if ( $userlvl(%u) >= $adminlvl ) {
  126.     var %gn = $user(%eu).gamenum
  127.     var %eu = $getid($2)
  128.     inc %game.exclude.votes_ $+ %gn $+ _ $+ %eu
  129.     set %game.exclude.voted_ $+ %gn $+ _ $+ %eu $instok($($+(%,game.exclude.voted_,%gn,_,%eu),2),%u,10,46)
  130.     if ( $($+(%,game.exclude.votes_,%gn,_,%eu),2) == 1 ) {
  131.       echo -ag EXCLUDED
  132.       set %game.exclude_ $+ %gn $addtok($($+(%,game.exclude_,%gn),2),%eu,46)
  133.       AddPenalty $botname %eu Exclude
  134.       describe %ch Player $getname(%eu) excluded from $get.gamename($($+(%,game.mode_,%gn),2),%gn)
  135.     }
  136.   }
  137. }
  138.  
  139. on *:text:.setvent*:#: {
  140.   if ( $userlvl($auth($nick)) >= 100 ) {
  141.     set %vent $2-
  142.   }
  143. }
  144.  
  145. on *:text:.setggc*:#: {
  146.   if ( $userlvl($auth($nick)) >= 100 ) {
  147.     set %ggc $2-
  148.   }
  149. }
  150.  
  151. on *:text:.setmap*:#: {
  152.   if ( $userlvl($auth($nick)) >= 100 ) {
  153.     set %c.gameversion $2-
  154.   }
  155. }
  156.  
  157. on *:text:.settopic*:#: {
  158.   if ( $userlvl($auth($nick)) >= 100 ) {
  159.     set %ihltopic $2-
  160.     topic %ch $topicwelcome
  161.   }
  162. }
  163.  
  164. on *:text:.map:#: {
  165.   msg $chan %c.gameversion
  166. }
  167.  
  168.  
  169. on *:text:.ggc:#: {
  170.   msg $chan %ggc
  171. }
  172.  
  173. on *:text:admin:#: {
  174.   msg $chan If an admin dosn't respond within 1minute(s), please contact one, via private message, Thank you.
  175. }
  176.  
  177. on *:text:zhn:#: {
  178.   msg $chan <3 zhn
  179. }
  180.  
  181. on *:text:elijd:#: {
  182.   msg $chan <3 elijd
  183. }
  184.  
  185.  
  186. on *:text:.vt:#: {
  187.   msg $chan %vent
  188. }
  189.  
  190. on *:text:.setstream*:#: {
  191.   if ( $userlvl($auth($nick)) >= 70 ) {
  192.     set %stream $2-
  193.   }
  194. }
  195.  
  196. on *:text:.stream:#: {
  197.   if ( $userlvl($auth($nick)) >= 70 ) {
  198.     /timerstream 1 1 msg #dota.no %stream live på GGTV snart: .lastgame for å se hvem som spiller
  199.     /timerstream2 3 900 msg #dota.no %stream live på GGTV: .lastgame for info
  200.   }
  201. }
  202.  
  203. on *:text:.stopstream:#: {
  204.   if ( $userlvl($auth($nick)) >= 70 ) {
  205.     /timerstream off
  206.     /timerstream2 off
  207.     msg #dota.no %stream FINISHED
  208.   }
  209. }
  210.  
  211. alias getname {
  212.   if ( $1 != hjortbot ) {
  213.     var %n = $gettok($hget(userdata,$getid($1)),10,46)
  214.     ;;if (%n == sacco) { return 13sacco03 }
  215.     ;elseif (%n == hjortbot) { return 04hjortbot03 }
  216.     ;else { return %n }
  217.     return %n
  218.   }
  219.   else { return IHL }
  220. }
  221.  
  222. On $*:Text:/^[@!.](Calculator|Calc)/Si:#: {
  223.   if ($mainbot ison $chan) && ($me != $mainbot) { halt }
  224.   elseif (!$2) {
  225.     set %ctarg1 $iif($left($1,1) == @, msg $chan, describe %ch)
  226.     %ctarg1 $logo(error) Please give me some numbers to calculate.
  227.     unset %ctarg1
  228.   }
  229.   else {
  230.     set %ctarg2 $iif($left($1,1) == @, msg $chan, describe %ch)
  231.     %ctarg2 $logo(calc) $2- = $bytes($calc($replace($2-,k,*1000,m,*1000000,pi,$pi)),bd)
  232.     unset %ctarg2
  233.   }
  234. }
  235.  
  236. on *:TEXT:!addh:#dota.no: {
  237.   if (!%game.on) { return }
  238.   if ($userlvl2($nick) < 10) { return }
  239.   msg %ch $nick Added on #dota.no when there is a game on #ihl.no
  240.   msg $nick Why do you add when there is a game on #ihl.no?
  241. }
  242.  
  243. on *:TEXT:.stats*:#: {
  244.   if ($chan) { var %target = $chan }
  245.   else { var %target = $nick }
  246.   if ($2) { var %u = $getid($2) }
  247.   else { var %u = $getid2($nick) }
  248.   if (!$hget(userdata,%u)) { describe %target User not found! | return }
  249.   var %line = $getname(%u) has $user(%u).win wins, $user(%u).lost losses, $user(%u).exp experience, $iif($user(%u).inactive != $true,ranked $user(%u).rank $+ $chr(44) Rated $enclose($get.exprank(%u)) $+ ;,Inactive;)
  250.   var %line = %line $iif($get.streakrank($user(%u).spree),$ifmatch), ; Longest streak $user(%u).bspree wins;
  251.   var %r = $get.cfrank($user(%u).conf)
  252.   var %c = $calc($user(%u).win + $user(%u).lost)
  253.   var %cu = $calc($user(%u).exp experience)
  254.   var %cum = 1000
  255.   var %cur = $calc %cu - %cum
  256.   var %cut = $calc %cur / %c
  257.   %c = $round(%c,2)
  258.   %cu = $round(%cu,2)
  259.   %cum = $round(%cum,2)
  260.   %cur = $round(%cur,2)
  261.   %cut = $round(%cut,2)
  262.   describe %target %line %r
  263.   describe %target Avg.experience per game: %cut Experience
  264.  
  265. }
  266. else {
  267.   if ( $userlvl2($nick) < 50 ) {
  268.     describe $nick %line
  269.     $iif($get.cfrank($user(%u).conf),$ifmatch)
  270.   }
  271.   else {
  272.     describe %target %line
  273.     $iif($get.cfrank($user(%u).conf),$ifmatch)
  274.   }
  275. }
  276.  
  277. on *:TEXT:.noob:%ch: {
  278.   var %game = $user(%u).gamenum
  279.   var %lol = $gettok($game(%game).plist,1-5,46)
  280.   msg %ch %lol
  281. }
  282.  
  283. on *:TEXT:.commands:#: {
  284.   describe %ch .sign, .out, .startgame(all), .challenge(leaders), .top, .stats, .whois, .whoami, .compare, .vt, .info <gamenum>, .ggc (prize)
  285. }
  286.  
  287. ;########################### ALIAS DAYCHANGE #########################
  288. ;#####################################################################
  289.  
  290. alias botversion {
  291.   return 2.20
  292. }
  293.  
  294. alias daychange {
  295.   unset %cen.today_*
  296.   var %i = 1
  297.   var %l = %rank.users
  298.   while ( %i <= %l ) {
  299.     var %u = $sort.getuser(%i)
  300.     var %lg = $user(%u).lastgame
  301.     if ( $calc($ctime - $game(%lg).time) > 1728000 ) {
  302.       var %e = $user(%u).exp
  303.       if ( %e > 1000 ) {
  304.         if ( $calc($ctime - $user(%u).lastdecay ) > 1728000 ) {
  305.           set %last.decay_ $+ %u $ctime
  306.           var %decay = $round($calc( %e * -0.04 ),0)
  307.           noop $xsetuser(%u,%decay).exp
  308.           AddPenalty $botname %u Decayed %decay
  309.         }
  310.       }
  311.     }
  312.     if ( $calc($ctime - $game(%lg).time) <= 1728000 ) {
  313.       if ( $user(%u).conf < 1000 ) {
  314.         noop $xsetuser(%u,5).conf
  315.       }
  316.     }
  317.     inc %i
  318.   }
  319.   var %ctime = $ctime
  320.   mkdir backup\ $+ %ctime
  321.   copy userdata.txt $+(backup\,%ctime,\userdata.txt)
  322.   copy gamedata.txt $+(backup\,%ctime,\gamedata.txt)
  323.   copy vouchdata.txt $+(backup\,%ctime,\vouchdata.txt)
  324.   copy herodata.txt $+(backup\,%ctime,\herodata.txt)
  325.   copy pendata.txt $+(backup\,%ctime,\pendata.txt)
  326.  
  327.   copy script\vars.nns $+(backup\,%ctime,\vars.nns)
  328.  
  329.   ;;;;
  330.   if (%game.today >= %game.daymax) {
  331.     set %game.daymax %game.today
  332.     set %game.daymax.time $ctime
  333.   }
  334.   set %game.today 0
  335.   ;;;;
  336.   timer -oi 00:00 1 61 daychange
  337. }
  338.  
  339. ;################################ INVITE #############################
  340. ;#####################################################################
  341.  
  342. alias timebanned {
  343.   return $($+(%,timeban_,$1),2)
  344. }
  345.  
  346. alias banned {
  347.   return $hget(pendata,$+(ban.,$1))
  348. }
  349.  
  350. alias lvlcheck {
  351.   return $iif($hget(userdata,$+(level.,$1)),$v1,0)
  352. }
  353. ;; ($hget(userdata,$+(level.,$getid2($1))))
  354. alias inviteuser {
  355.   var %auth = $qauth($1)
  356.   echo -ag %auth -- $lvlcheck(%auth)
  357.   if (!%auth) { msg $1 Access denied! | return }
  358.   if ($user(%auth).conf <= 250) { msg $1 Your confidence factor is too low. You are banned! | return }
  359.   if ($lvlcheck(%auth) < 10) { msg $1 Access denied! | return }
  360.   if ($calc($timebanned(%auth) - $ctime) > 0 ) { msg $1 You are banned! Expires: $asctime($timebanned(%auth),HH:nn:ss dd/mm/yy) | return }
  361.   if ($calc($banned(%auth) - $ctime) > 0 ) { msg $1 You are banned! Expires: $asctime($banned(%auth),HH:nn:ss dd/mm/yy) | return }
  362.   invite $1 %ch
  363.   msg $1 Auth verification successful, you are free to join the channel $chr(35) $+ $channelname
  364. }
  365.  
  366. alias opuser {
  367.   var %auth = $qauth($1)
  368.   if ($userlvl(%auth) >= 70) { mode %ch +o $1 }
  369.   if (($user(%auth).ig) || ($user(%auth).signed)) {
  370.     mode %ch +v $1
  371.   }
  372.   if ($user(%auth).conf <= 250) { kick %ch $1 Your confidence factor is too low. You are banned! }
  373. }
  374.  
  375. alias voiceuser {
  376.   var %auth = $qauth($1)
  377.  
  378.   if ($user(%auth).conf <= 250) { kick %ch $1 Your confidence factor is too low. You are banned! }
  379.   if ($calc($timebanned(%auth) - $ctime) > 0 ) { kick %ch $1 You are banned! Expires: $asctime($timebanned(%auth),HH:nn:ss dd/mm/yy) | return }
  380.   if ($calc($banned(%auth) - $ctime) > 0 ) { Kick %ch $1 You are banned! Expires: $asctime($banned(%auth),HH:nn:ss dd/mm/yy) | return }
  381. }
  382.  
  383.  
  384. on *:text:.i:?: {
  385.   /invite $nick %ch
  386.   msg $nick You are free to join %ch
  387. }
  388.  
  389.  
  390. on *:JOIN:%ch: {
  391.   timer 1 0 opuser $nick
  392. }
  393.  
  394. ;###################### BASIC ALIASES ( returns ) ####################
  395. ;#####################################################################
  396.  
  397. on *:text:.setvent*:#: {
  398.   if ( $userlvl($auth($nick)) == 100 ) {
  399.     set %vent $2-
  400.   }
  401. }
  402.  
  403. on *:text:.vent:#: {
  404.   msg $chan %vent
  405. }
  406.  
  407.  
  408. alias botname {
  409.   return hjortbot
  410. }
  411.  
  412. alias adminlvl {
  413.   return 70
  414. }
  415.  
  416. alias managerlvl {
  417.   return 90
  418. }
  419.  
  420. alias describe {
  421.   if ( $len($2-) < 400 ) { describe $1 $2- }
  422.   else {
  423.     var %line = $2-
  424.     var %l = $numtok(%line,32)
  425.     var %i = 1
  426.     var %r
  427.     while ( %i <= %l ) {
  428.       if ( $len(%r) > 400 ) { describe $1 %r [more...] | var %r = $null }
  429.       var %r = %r $gettok(%line,%i,32)
  430.       inc %i
  431.     }
  432.     describe $1 %r
  433.   }
  434. }
  435.  
  436. alias enclose {
  437.   return $chr(91) $+ $1 $+ $chr(93)
  438. }
  439.  
  440. alias enclose2 {
  441.  
  442. }
  443.  
  444. alias enclose3 {
  445.   return < $+ $1 $+ >
  446. }
  447.  
  448. alias getauth {
  449.   return $hget(userdata,$+(id.,$1))
  450. }
  451.  
  452. alias getid {
  453.   if ($auth($1)) { return $v1 }
  454.   elseif ($hget(userdata,$1)) { return $1 }
  455.   elseif ($hget(userdata,$+(id.,$1))) { return $v1 }
  456.   else { return $null }
  457. }
  458.  
  459. alias getid2 {
  460.   if ($auth($1)) { return $v1 }
  461.   else { return $null }
  462. }
  463.  
  464.  
  465. alias getname {
  466.   if ( $1 != hjortbot ) {
  467.     var %n = $gettok($hget(userdata,$getid($1)),10,46)
  468.     ;;if (%n == sacco) { return 13sacco03 }
  469.     ;elseif (%n == hjort) { return 04hjort03 }
  470.     ;else { return %n }
  471.     return %n
  472.   }
  473.   else { return IHCS-PROBOT }
  474. }
  475.  
  476. alias userlvl {
  477.   if ($hget(userdata,$+(level.,$getid($1)))) { return $v1 }
  478.   else { return 0 }
  479. }
  480.  
  481. alias userlvl2 {
  482.   if ($hget(userdata,$+(level.,$getid2($1)))) { return $v1 }
  483.   else { return 0 }
  484. }
  485.  
  486. alias spam.censure {
  487.   ;;describe %ch Nezabudnite ze .censure je moznost ako vyjadrit osobnu nespokojnost so spravanim niektorych ludi. Nema to nic spolocne s pravidlami, preto ak citite ze sa niekto nesprava tak ako by sa mal, nevahajte tento prikaz pouzit! ( prikaz mozete pouzit po ukonceni spolocnej hry s hracom ktoremu chcete censure udelit. Funguje aj cez PM botovi - anonymne )
  488. }
  489.  
  490. ;register format: win.lost.draw.exp.lastexp.spree.bestspree.lastgame.conf.name
  491. ;id format: id.USERNAME -> AUTH
  492.  
  493. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  494. ;; GET STUFF ABOUT USER
  495.  
  496. alias user {
  497.   if (!$1) { return }
  498.   ;var %n = $getid($1)
  499.   var %n = $1
  500.   if ( $prop == win ) {
  501.     return $gettok($hget(userdata,%n),1,46)
  502.   }
  503.   if ( $prop == lost ) {
  504.     return $gettok($hget(userdata,%n),2,46)
  505.   }
  506.   if ( $prop == draw ) {
  507.     return $gettok($hget(userdata,%n),3,46)
  508.   }
  509.   if ( $prop == exp ) {
  510.     return $gettok($hget(userdata,%n),4,46)
  511.   }
  512.   if ( $prop == lastexp ) {
  513.     return $gettok($hget(userdata,%n),5,46)
  514.   }
  515.   if ( $prop == spree ) {
  516.     return $gettok($hget(userdata,%n),6,46)
  517.   }
  518.   if ( $prop == bspree ) {
  519.     return $gettok($hget(userdata,%n),7,46)
  520.   }
  521.   if ( $prop == lastgame ) {
  522.     return $gettok($hget(userdata,%n),8,46)
  523.   }
  524.   if ( $prop == conf ) {
  525.     return $gettok($hget(userdata,%n),9,46)
  526.   }
  527.   if ( $prop == name ) {
  528.     return $gettok($hget(userdata,%n),10,46)
  529.   }
  530.   if ( $prop == game ) {
  531.     return $calc($gettok($hget(userdata,%n),1,46) + $gettok($hget(userdata,%n),2,46) + $gettok($hget(userdata,%n),3,46))
  532.   }
  533.   if ( $prop == winp ) {
  534.     return $round($calc($gettok($hget(userdata,%n),1,46) * 100 / $calc($gettok($hget(userdata,%n),1,46) + $gettok($hget(userdata,%n),2,46) + $gettok($hget(userdata,%n),3,46))),0)
  535.   }
  536.   if ( $prop == lostp ) {
  537.     return $round($calc($gettok($hget(userdata,%n),2,46) * 100 / $calc($gettok($hget(userdata,%n),1,46) + $gettok($hget(userdata,%n),2,46) + $gettok($hget(userdata,%n),3,46))),0)
  538.   }
  539.   if ( $prop == drawp ) {
  540.     return $round($calc($gettok($hget(userdata,%n),3,46) * 100 / $calc($gettok($hget(userdata,%n),1,46) + $gettok($hget(userdata,%n),2,46) + $gettok($hget(userdata,%n),3,46))),0)
  541.   }
  542.   if ( $prop == ig ) {
  543.     return $($+(%,player.game_,%n),2)
  544.   }
  545.   if ( $prop == signed ) {
  546.     return $istok(%c.gameauths,%n,46)
  547.   }
  548.   if ( $prop == gamenum ) {
  549.     return $($+(%,player.game_,%n),2)
  550.   }
  551.   if ( $prop == vouchedby ) {
  552.     return $gettok($hget(vouchdata,$+(info.,%n)),1,46)
  553.   }
  554.   if ( $prop == promoteby ) {
  555.     return $gettok($hget(vouchdata,$+(info.,%n)),2,46)
  556.   }
  557.   if ( $prop == vouchinfo ) {
  558.     return $hget(vouchdata,$+(info.,%n))
  559.   }
  560.   if ( $prop == voucheddate ) {
  561.     return $hget(vouchdata,$+(date.,%n))
  562.   }
  563.   if ( $prop == rank ) {
  564.     return $($+(%,rank_,%n),2) $+ / $+ %ranked.users
  565.   }
  566.   if ( $prop == rankonly ) {
  567.     return $($+(%,rank_,%n),2)
  568.   }
  569.   if ( $prop == lastdecay ) {
  570.     if ($($+(%,last.decay_,%n),2)) { return $v1 }
  571.     else { return 0 }
  572.   }
  573.   if ( $prop == inactive ) {
  574.     var %lg = $gettok($hget(userdata,%n),8,46)
  575.     var %g = $calc($gettok($hget(userdata,%n),1,46) + $gettok($hget(userdata,%n),2,46) + $gettok($hget(userdata,%n),3,46))
  576.     if ((%g == 0) || ($calc($ctime - $game(%lg).time) > 2592000)) {
  577.       return $true
  578.     }
  579.   }
  580. }
  581.  
  582. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  583. ;; SET VALUE TO $2
  584.  
  585. alias setuser {
  586.   if (!$1) { return }
  587.   ;var %n = $getid($1)
  588.   var %n = $1
  589.   if ($2 isnum) { var %p = $int($2) }
  590.   if ( $prop == win ) {
  591.     var %a = $puttok($hget(userdata,%n),%p,1,46)
  592.     var %canset = 1
  593.   }
  594.   if ( $prop == lost ) {
  595.     var %a = $puttok($hget(userdata,%n),%p,2,46)
  596.     var %canset = 1
  597.   }
  598.   if ( $prop == draw ) {
  599.     var %a = $puttok($hget(userdata,%n),%p,3,46)
  600.     var %canset = 1
  601.   }
  602.   if ( $prop == exp ) {
  603.     var %a = $puttok($hget(userdata,%n),%p,4,46)
  604.     var %canset = 1
  605.   }
  606.   if ( $prop == lastexp ) {
  607.     var %a = $puttok($hget(userdata,%n),%p,5,46)
  608.     var %canset = 1
  609.   }
  610.   if ( $prop == spree ) {
  611.     var %a = $puttok($hget(userdata,%n),%p,6,46)
  612.     var %canset = 1
  613.   }
  614.   if ( $prop == bspree ) {
  615.     var %a = $puttok($hget(userdata,%n),%p,7,46)
  616.     var %canset = 1
  617.   }
  618.   if ( $prop == lastgame ) {
  619.     var %a = $puttok($hget(userdata,%n),%p,8,46)
  620.     var %canset = 1
  621.   }
  622.   if ( $prop == conf ) {
  623.     var %a = $puttok($hget(userdata,%n),%p,9,46)
  624.     var %canset = 1
  625.   }
  626.   if ( $prop == name ) {
  627.     var %a = $puttok($hget(userdata,%n),$2,10,46)
  628.     var %canset = 1
  629.   }
  630.   if (%canset) {
  631.     hadd userdata %n %a
  632.     return 0
  633.   }
  634. }
  635.  
  636. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  637. ;; SET VALUE TO <value> + $2
  638.  
  639. alias xsetuser {
  640.   if (!$1) { return }
  641.   ;var %n = $getid($1)
  642.   var %n = $1
  643.   if ($2 isnum) { var %p = $int($2) }
  644.   else { return 0 }
  645.   if ( $prop == win ) {
  646.     var %a = $puttok($hget(userdata,%n),$calc($user(%n).win + %p),1,46)
  647.     var %canset = 1
  648.   }
  649.   if ( $prop == lost ) {
  650.     var %a = $puttok($hget(userdata,%n),$calc($user(%n).lost + %p),2,46)
  651.     var %canset = 1
  652.   }
  653.   if ( $prop == draw ) {
  654.     var %a = $puttok($hget(userdata,%n),$calc($user(%n).draw + %p),3,46)
  655.     var %canset = 1
  656.   }
  657.   if ( $prop == exp ) {
  658.     var %a = $puttok($hget(userdata,%n),$calc($user(%n).exp + %p),4,46)
  659.     var %canset = 1
  660.   }
  661.   if ( $prop == lastexp ) {
  662.     var %a = $puttok($hget(userdata,%n),$calc($user(%n).lastexp + %p),5,46)
  663.     var %canset = 1
  664.   }
  665.   if ( $prop == spree ) {
  666.     var %a = $puttok($hget(userdata,%n),$calc($user(%n).spree + %p),6,46)
  667.     var %canset = 1
  668.   }
  669.   if ( $prop == bspree ) {
  670.     var %a = $puttok($hget(userdata,%n),$calc($user(%n).bspree + %p),7,46)
  671.     var %canset = 1
  672.   }
  673.   if ( $prop == lastgame ) {
  674.     var %a = $puttok($hget(userdata,%n),$calc($user(%n).lastgame + %p),8,46)
  675.     var %canset = 1
  676.   }
  677.   if ( $prop == conf ) {
  678.     var %a = $puttok($hget(userdata,%n),$calc($user(%n).conf + %p),9,46)
  679.     var %canset = 1
  680.   }
  681.   if (%canset) {
  682.     hadd userdata %n %a
  683.     return 0
  684.   }
  685. }
  686.  
  687. ;########################### USER MANAGEMENT #########################
  688. ;#####################################################################
  689.  
  690. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  691. ;; Admin   - 100 ( 1/3/3/10 - 50 )
  692. ;; Manager -  90 ( 0/2/2/10 - 40 )
  693. ;; Voucher -  70 ( 0/0/0/5  - 40 )
  694. ;; Censor  -  50 ( 0/0/0/3  - 15 )
  695. ;; Leader  -  30
  696. ;; User    -  10
  697.  
  698. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  699. ;; VOUCH DATA STRUCTURE
  700. ;; info.ID
  701. ;; vouched_by.promoted_by
  702. ;;
  703. ;; m.ID
  704. ;; manager
  705. ;; promoted by nick
  706. ;; v.ID
  707. ;; voucher1.voucher2.voucher3
  708. ;; promoted by nick
  709. ;; c.ID
  710. ;; censor1.censor2.censor3
  711. ;; promoted by nick
  712. ;; l.ID
  713. ;; leader1-10
  714. ;; leaders promoted by nick
  715. ;; u.ID
  716. ;; number of users vouched.
  717.  
  718.  
  719. /*
  720. ;; Admin   - 100 ( 2/3/3/10 - 75 )
  721. ;; Manager -  90 ( 0/2/2/10 - 65 )
  722. ;; Voucher -  70 ( 0/0/0/5  - 65 )
  723. ;; Censor  -  50 ( 0/0/0/3  - 20 )
  724. */
  725.  
  726. alias maxvouch {
  727.   if ( $2 == user ) {
  728.     if ( $1 >= 100 ) { return 300 }
  729.     elseif ( $1 >= 90 ) { return 100 }
  730.     elseif ( $1 >= 70 ) { return 50 }
  731.     elseif ( $1 >= 50 ) { return 7 }
  732.     else { return 0 }
  733.   }
  734.   if ( $2 == leader ) {
  735.     if ( $1 >= 100 ) { return 100 }
  736.     elseif ( $1 >= 90 ) { return 100 }
  737.     elseif ( $1 >= 70 ) { return 10 }
  738.     elseif ( $1 >= 50 ) { return 3 }
  739.     else { return 0 }
  740.   }
  741.   if ( $2 == censor ) {
  742.     if ( $1 >= 100 ) { return 100 }
  743.     elseif ( $1 >= 90 ) { return 100 }
  744.     else { return 0 }
  745.   }
  746.   if ( $2 == voucher ) {
  747.     if ( $1 >= 100 ) { return 100 }
  748.     elseif ( $1 >= 90 ) { return 100 }
  749.     else { return 0 }
  750.   }
  751.   if ( $2 == manager ) {
  752.     if ( $1 >= 100 ) { return 100 }
  753.     else { return 0 }
  754.   }
  755.   if ( $2 == administrator ) {
  756.     return 0
  757.   }
  758. }
  759.  
  760. alias nextlevel {
  761.   if ( $1 >= 100 ) { return 100 }
  762.   elseif ( $1 >= 90 ) { return 100 }
  763.   elseif ( $1 >= 70 ) { return 90 }
  764.   elseif ( $1 >= 50 ) { return 70 }
  765.   elseif ( $1 >= 30 ) { return 50 }
  766.   elseif ( $1 >= 10 ) { return 30 }
  767.   else { return 0 }
  768. }
  769.  
  770. alias prevlevel {
  771.   if ( $1 >= 100 ) { return 90 }
  772.   elseif ( $1 >= 90 ) { return 70 }
  773.   elseif ( $1 >= 70 ) { return 50 }
  774.   elseif ( $1 >= 50 ) { return 30 }
  775.   elseif ( $1 >= 30 ) { return 10 }
  776.   else { return 0 }
  777. }
  778.  
  779. /*
  780. change this to change OUTPUT
  781. */
  782. /*
  783. Marshal (root), General (Administrator), Colonel ( Super Mod ),
  784. Major ( moderator ), Captain ( Captain ), Officer ( Host )
  785. */
  786. alias level.str {
  787.   if ( $1 >= 101 ) { return root }
  788.   elseif ( $1 >= 100 ) { return Head Admin }
  789.   elseif ( $1 >= 90 ) { return Admin }
  790.   elseif ( $1 >= 70 ) { return Voucher }
  791.   elseif ( $1 >= 50 ) { return Censor }
  792.   elseif ( $1 >= 30 ) { return Leader }
  793.   elseif ( $1 >= 10 ) { return User }
  794.   else { return unknown }
  795. }
  796.  
  797. alias level.strc {
  798.   if ( $1 >= 101 ) { return Root }
  799.   elseif ( $1 >= 100 ) { return Administrator }
  800.   elseif ( $1 >= 90 ) { return Manager }
  801.   elseif ( $1 >= 70 ) { return Voucher }
  802.   elseif ( $1 >= 50 ) { return Censor }
  803.   elseif ( $1 >= 30 ) { return Leader }
  804.   elseif ( $1 >= 10 ) { return User }
  805.   else { return unknown }
  806. }
  807.  
  808. alias voucher {
  809.   if ( $2 == user ) {
  810.     if ($hget(vouchdata,$+(u.,$getid($1)))) { return $v1 }
  811.     else { return 0 }
  812.   }
  813.   if ( $2 == leader ) {
  814.     return $numtok($hget(vouchdata,$+(leader.,$getid($1))),46)
  815.   }
  816.   if ( $2 == censor ) {
  817.     return $numtok($hget(vouchdata,$+(censor.,$getid($1))),46)
  818.   }
  819.   if ( $2 == voucher ) {
  820.     return $numtok($hget(vouchdata,$+(voucher.,$getid($1))),46)
  821.   }
  822.   if ( $2 == manager ) {
  823.     return $numtok($hget(vouchdata,$+(manager.,$getid($1))),46)
  824.   }
  825.   if ( $2 == administrator ) {
  826.     return 0
  827.   }
  828.   if ( $2 == leaderlist ) {
  829.     if ($hget(vouchdata,$+(leader.,$getid($1)))) { return $v1 }
  830.     else { return . }
  831.   }
  832.   if ( $2 == censorlist ) {
  833.     if ($hget(vouchdata,$+(censor.,$getid($1)))) { return $v1 }
  834.     else { return . }
  835.   }
  836.   if ( $2 == voucherlist ) {
  837.     if ($hget(vouchdata,$+(voucher.,$getid($1)))) { return $v1 }
  838.     else { return . }
  839.   }
  840.   if ( $2 == managerlist ) {
  841.     if ($hget(vouchdata,$+(manager.,$getid($1)))) { return $v1 }
  842.     else { return . }
  843.   }
  844. }
  845.  
  846. ;;;;;;;;;;;;;;;;;;;;;;;;;;;
  847. ;; Format .vouch <q-auth> <nick>
  848.  
  849. on $*:TEXT:/^\.vouch\s.*/:*: {
  850.   var %u = $getid2($nick)
  851.   if ($chan) { var %target = $chan }
  852.   else { var %target = $nick }
  853.   var %ulvl = $userlvl2($nick)
  854.   if ( %ulvl >= 50 ) {
  855.     if ( $maxvouch(%ulvl,user) > $voucher($nick,user) ) {
  856.       if ($3) {
  857.         if ( $userlvl($getid($2)) != 1 ) {
  858.           if (($hget(userdata,$+(id.,$3))) || ($hget(userdata,$+(id.,$2)))) { notice $nick User $2 $+ / $+ $3 is already registred! | return }
  859.           if (($hget(userdata,$2)) || ($hget(userdata,$3))) { notice $nick User $2 $+ / $+ $3 is already registred! | return }
  860.         }
  861.         elseif ( $getname($2) != $3 ) { notice $nick Qauth and username do not match! | return }
  862.         if ( $3 == x ) { notice $nick "x" is not a valid username! | return }
  863.         if ( . isin $3 ) { notice $nick This is not a valid username! | return }
  864.         if ( $userlvl($getid($2)) != 1 ) {
  865.           hadd userdata $2 0.0.0.1000.0.0.0.0.500. $+ $3
  866.           hadd userdata $+(id.,$3) $2
  867.           var %re = 1
  868.         }
  869.         else { var %re = 0 }
  870.         hadd userdata $+(level.,$2) 10
  871.         hadd vouchdata $+(info.,$2) $getid($nick) $+ . $+ x
  872.         hadd vouchdata $+(date.,$2) $ctime
  873.         hinc vouchdata $+(u.,$getid($nick)) 1
  874.         describe %target $nick  has $iif(%re,vouched,revouched) $2 with username $3 $+ .
  875.         describe #nihl.staff $nick  has $iif(%re,vouched,revouched) $2 with username $3 $+ .
  876.         AddRecord %u .vouch has $iif(%re,vouched,revouched) $2 with username $3 $+ .
  877.  
  878.       }
  879.       else { notice $nick You have to specify Qauth and username! }
  880.     }
  881.     else { notice $nick You can't vouch more people! }
  882.   }
  883. }
  884.  
  885. on *:TEXT:.unvouch *:*: {
  886.   var %u = $getid2($nick)
  887.   if ($chan) { var %target = $chan }
  888.   else { var %target = $nick }
  889.   var %ulvl = $userlvl2($nick)
  890.   if ( %ulvl >= 50 ) {
  891.     if ($2) {
  892.       var %u = $getid($2)
  893.       var %un = $getname(%u)
  894.       var %v = $user(%u).vouchedby
  895.       if (( %v == $getid($nick) ) || ( %ulvl >= $userlvl(%v) )) {
  896.         if (($userlvl(%v) < 50) && (%ulvl < 70)) { notice $nick You need at least Voucher rank to unvouch this player! | return }
  897.         if ( $userlvl(%u) == 10 ) {
  898.           if ($hget(userdata,%u)) {
  899.             ;hdel userdata $+(id.,%un)
  900.             ;hdel userdata $+(level.,%u)
  901.             hadd userdata $+(level.,%u) 1
  902.             ;hdel userdata %u
  903.             hdel vouchdata $+(info.,%u)
  904.             hdel vouchdata $+(leader.,%u)
  905.             hdel vouchdata $+(censor.,%u)
  906.             hdel vouchdata $+(voucher.,%u)
  907.             hdel vouchdata $+(manager.,%u)
  908.             ;hdel vouchdata $+(u.,%u)
  909.             hdec vouchdata $+(u.,%v) 1
  910.             describe %target User %un has been unvouched!
  911.             describe #nihl.staff $nick has unvouched %un
  912.             AddRecord %u .unvouch User %un has been unvouched!
  913.  
  914.           }
  915.           else { notice $nick User not found! }
  916.         }
  917.         else { notice $nick You have to demote user to [user] rank before unvouching him! }
  918.       }
  919.       else { notice $nick You can't remove another's voucher users unless you are higher-level then (s)he! }
  920.     }
  921.     else { notice $nick You have to specify nick/qauth/username! }
  922.   }
  923. }
  924.  
  925. on *:TEXT:.voiduser *:*: {
  926.   if ($chan) { var %target = $chan }
  927.   else { var %target = $nick }
  928.   var %ulvl = $userlvl2($nick)
  929.   if ( %ulvl > $adminlvl ) {
  930.     var %vu = $getid($2)
  931.     if ($userlvl(%vu) == 1) {
  932.       if ($hget(userdata,%vu)) {
  933.         var %vun = $getname(%vu)
  934.         hdel userdata level. $+ %vu
  935.         hdel userdata id. $+ %vun
  936.         hdel userdata %vu
  937.         ;;var %voucher = $user(%vu).vouchedby
  938.         ;;hdec vouchdata $+(u.,%voucher) 1
  939.         hdel vouchdata info. $+ %vu
  940.         describe %target User %vun has been completely removed from database!
  941.       }
  942.       else { describe %target User not found! }
  943.     }
  944.     else { notice $nick Use .unvouch before .voiduser! }
  945.   }
  946. }
  947.  
  948. on *:TEXT:.changename *:*: {
  949.   if (!$3) { return }
  950.   if ($chan) { var %target = $chan }
  951.   else { var %target = $nick }
  952.   var %u = $getid2($nick)
  953.   var %ulvl = $userlvl(%u)
  954.   if ( %ulvl >= $adminlvl ) {
  955.     ;echo -ag OK
  956.     if (($hget(userdata,$+(id.,$2))) && (!$hget(userdata,$+(id.,$3)))) {
  957.       ;echo -ag OK
  958.       if ((!$hget(userdata,$3)) || ($getid($2) == $3)) {
  959.         ;echo -ag OK
  960.         var %cu = $getid($2)
  961.         var %rec = $hget(userdata,%cu)
  962.         hadd userdata $+(id.,$3) %cu
  963.         hdel userdata $+(id.,$2)
  964.         hadd userdata %cu $puttok(%rec,$3,10,46)
  965.         describe %target Username $2 changed to $3 successfully!
  966.       }
  967.     }
  968.   }
  969. }
  970.  
  971. on *:TEXT:.promote*:*: {
  972.   if (!$2) { return }
  973.   if ($chan) { var %target = $chan }
  974.   else { var %target = $nick }
  975.   var %u = $getid($2)
  976.   var %ulvl = $userlvl2($nick)
  977.   if ( %ulvl >= 50 ) {
  978.     var %plvl = $userlvl(%u)
  979.     var %orank = $level.strc(%plvl)
  980.     var %nrank = $level.strc($nextlevel(%plvl))
  981.     var %orankr = $level.str(%plvl)
  982.     var %nrankr = $level.str($nextlevel(%plvl))
  983.     if ( $maxvouch(%ulvl,%nrank) > $voucher($nick,%nrank) ) {
  984.       if ( $user(%u).promoteby == $getid($nick) || $user(%u).promoteby == x ) {
  985.         if ( %orank != user ) {
  986.           var %olist = $voucher($nick,$+(%orank,list))
  987.           var %nlist = $voucher($nick,$+(%nrank,list))
  988.           hadd vouchdata $+(%orank,.,$getid($nick)) $remtok(%olist,%u,1,46)
  989.           hadd vouchdata $+(%nrank,.,$getid($nick)) $addtok(%nlist,%u,46)
  990.           hadd vouchdata $+(info.,%u) $puttok($user(%u).vouchinfo,$getid($nick),2,46)
  991.           hadd userdata $+(level.,%u) $nextlevel(%plvl)
  992.         }
  993.         else {
  994.           var %nlist = $voucher($nick,$+(%nrank,list))
  995.           echo -ag %nrank %nlist
  996.           hadd vouchdata $+(%nrank,.,$getid($nick)) $addtok(%nlist,%u,46)
  997.           hadd vouchdata $+(info.,%u) $puttok($user(%u).vouchinfo,$getid($nick),2,46)
  998.           hadd userdata $+(level.,%u) $nextlevel(%plvl)
  999.         }
  1000.         describe %target User $getname(%u) promoted from $enclose(%orankr) to $enclose(%nrankr)
  1001.         if ((%nrank == manager) || (%nrank == administrator)) {
  1002.           noop $setuser(%u,1000).conf
  1003.         }
  1004.       }
  1005.       else { notice $nick User was first promoted by another staff member! Only (s)he can promote the user further! }
  1006.     }
  1007.     else { notice $nick You can't promote (more) %orank $+ s to %nrank $+ s! }
  1008.   }
  1009. }
  1010.  
  1011. on *:TEXT:.demote *:*: {
  1012.   if (!$2) { return }
  1013.   if ($chan) { var %target = $chan }
  1014.   else { var %target = $nick }
  1015.   var %u = $getid($2)
  1016.   var %ulvl = $userlvl2($nick)
  1017.   var %tlvl = $userlvl($getid($2))
  1018.   if ( %tlvl >= %ulvl ) { notice $nick What are you trying to do, BITCH!?! | return }
  1019.   if ( %ulvl >= 50 ) {
  1020.     var %plvl = $userlvl(%u)
  1021.     var %orank = $level.strc(%plvl)
  1022.     var %orankr = $level.str(%plvl)
  1023.     var %nrank = $level.strc($prevlevel(%plvl))
  1024.     if ( %nrank != unknown ) {
  1025.       if ( %plvl >= 50 ) {
  1026.         var %prank = %nrank
  1027.         var %pplvl = $prevlevel(%plvl)
  1028.         while ( %prank != user ) {
  1029.           var %i = 1
  1030.           var %l = $numtok($voucher(%u,$+(%prank,list)),46)
  1031.           echo -ag %prank -- %l
  1032.           while (%i <= %l) {
  1033.             var %dnick = $gettok($voucher(%u,$+(%prank,list)),%i,46)
  1034.             hadd userdata $+(level.,%dnick) 10
  1035.             hadd vouchdata $+(info.,%dnick) $puttok($user(%dnick).vouchinfo,x,2,46)
  1036.             var %list = $addtok(%list,%dnick,46)
  1037.             ;echo -ag DEMOTED: %dnick
  1038.             ;echo -ag %list
  1039.             inc %i
  1040.           }
  1041.           hdel vouchdata $+(%prank,.,%u)
  1042.           %pplvl = $prevlevel(%pplvl)
  1043.           %prank = $level.strc(%pplvl)
  1044.         }
  1045.         if (%list) {
  1046.           describe %target Users demoted: $replace(%list,.,$chr(44) $+ $ch(32)))
  1047.         }
  1048.       }
  1049.       var %v = $user(%u).promoteby
  1050.       while (( $maxvouch(%ulvl,%nrank) <= $voucher(%v,%nrank)) && ( %nrank != user )) {
  1051.         %plvl = $prevlevel(%plvl)
  1052.         %nrank = $level.strc($prevlevel(%plvl))
  1053.       }
  1054.       if ((( $user(%u).promoteby == $getid($nick)) || ($user(%u).promoteby == x )) || ( $userlvl($nick) >= $userlvl(%v))) {
  1055.         var %olist = $voucher(%v,$+(%orank,list))
  1056.         var %nlist = $voucher(%v,$+(%nrank,list))
  1057.         hadd vouchdata $+(%orank,.,%v) $remtok(%olist,%u,1,46)
  1058.         if ( %nrank != user ) {
  1059.           hadd vouchdata $+(info.,%u) $puttok($user(%u).vouchinfo,%v,2,46)
  1060.           hadd vouchdata $+(%nrank,.,%v) $addtok(%nlist,%u,46)
  1061.         }
  1062.         else {
  1063.           hadd vouchdata $+(info.,%u) $puttok($user(%u).vouchinfo,x,2,46)
  1064.         }
  1065.         hadd userdata $+(level.,%u) $prevlevel(%plvl)
  1066.         describe %target User $getname(%u) demoted from $enclose(%orankr) to $enclose($level.str($userlvl(%u)))
  1067.         if ((%orank == manager) || (%orank == administrator)) {
  1068.           noop $setuser(%u,700).conf
  1069.         }
  1070.       }
  1071.       else { notice $nick User was first promoted by another staff member( $+ $getname(%v) $+ )! Only (s)he or higher-level staff members can demote the user! }
  1072.     }
  1073.     else { notice $nick Use .unvouch to further demote player! }
  1074.   }
  1075. }
  1076.  
  1077. on *:TEXT:.giveadmin *:*: {
  1078.   if (!$2) { return }
  1079.   if ($chan) { var %target = $chan }
  1080.   else { var %target = $nick }
  1081.   var %u = $getid2($nick)
  1082.   var %gu = $getid($2)
  1083.   if (!$hget(userdata,%gu)) { describe %target User not found! | return }
  1084.   if ($userlvl(%gu) != 10) { describe %target User have to have rank [User] before promoting to admin! | return }
  1085.   if ($userlvl(%u) < 101) { describe %target You don't have sufficient rights to appoint new admin! | return }
  1086.   if ($user(%gu).vouchedby != %u) { describe %target You can only promote new admins from among users you have vouched! | return }
  1087.   hadd userdata level. $+ %gu 100
  1088.   hadd vouchdata info. $+ %gu %u $+ . $+ %u
  1089.   noop $setuser(%gu,700).conf
  1090.   describe %target User $2 has been promoted to admin!
  1091. }
  1092.  
  1093. on *:TEXT:.giveroot *:*: {
  1094.   if (!$2) { return }
  1095.   if ($chan) { var %target = $chan }
  1096.   else { var %target = $nick }
  1097.   var %u = $getid2($nick)
  1098.   var %gu = $getid($2)
  1099.   if (!$hget(userdata,%gu)) { describe %target User not found! | return }
  1100.   if ($userlvl(%gu) != 10) { describe %target User have to have rank [User] before promoting to admin! | return }
  1101.   if ($userlvl(%u) < 101) { describe %target You don't have sufficient rights to appoint new admin! | return }
  1102.   if ($user(%gu).vouchedby != %u) { describe %target You can only promote new admins from among users you have vouched! | return }
  1103.   hadd userdata level. $+ %gu 101
  1104.   hadd vouchdata info. $+ %gu %u $+ . $+ %u
  1105.   noop $setuser(%gu,700).conf
  1106.   describe %target User $2 has been promoted to root!
  1107. }
  1108.  
  1109. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1110. ;; takes token, returns token separated by ", "
  1111. alias get.usernamelist {
  1112.   var %i = 1
  1113.   var %l = $numtok($1,46)
  1114.   var %list
  1115.   while ( %i <= %l ) {
  1116.     var %list = $addtok(%list,$getname($gettok($1,%i,46)),46)
  1117.     inc %i
  1118.   }
  1119.   var %list = $replace(%list,.,$chr(44) $+ $chr(32))
  1120.   return %list
  1121. }
  1122.  
  1123. on $*:TEXT:/^(\.whois\s\S*|\.whoami$)/:%ch, #ihl.no, #nihl.no-staff: {
  1124.   if ((!%canreply) && ($userlvl2($nick) < 50 )) { return }
  1125.   if ($chan) { var %target = $chan }
  1126.   else { var %target = $nick }
  1127.   if ( $2 == dasik ) {
  1128.     describe %target I am hjortbot lololol
  1129.     return
  1130.   }
  1131.   if ($2) { var %u = $getid($2) }
  1132.   else { var %u = $getid2($nick) }
  1133.   if ($1 = .whoami) { var %u = $getid2($nick) }
  1134.   echo -ag %u $userlvl(%u)
  1135.   if ((!%u) || (!$userlvl(%u))) { describe %target User not found! | return }
  1136.   var %level = $userlvl(%u)
  1137.   var %rank = $level.str(%level)
  1138.   var %line = $getname(%u) $+ $enclose(%rank) $+ : $iif(%level != 1,Vouched by $getname($user(%u).vouchedby) $+ $iif( $user(%u).voucheddate > 1 ,$enclose2($asctime($ifmatch,HH:nn:ss dd/mm/yy))) $+ $iif($user(%u).promoteby != x,$chr(44) Promoted by $getname($user(%u).promoteby)) $+ ;,Unvouched;)
  1139.   var %line = %line $iif($user(%u).inactive != $true,$iif($userlvl(%u) != 1,Rated $get.exprank(%u) $+ ( $+ $user(%u).rank $+ );),Inactive;)
  1140.   var %line = %line $iif($user(%u).rankonly != 0,Last game: $get.gamenamen($user(%u).lastgame) $+ ;)
  1141.   if ( %level >= 100 ) {
  1142.     %line = %line $level.str(90) $+ s: $iif($voucher(%u,manager) > 0,$get.usernamelist($voucher(%u,managerlist))) $+ $chr(91) $+ $voucher(%u,manager) $+ / $+ $maxvouch(%level,manager) $+ $chr(93) $+ .
  1143.     %line = %line $level.str(70) $+ s: $iif($voucher(%u,voucher) > 0,$get.usernamelist($voucher(%u,voucherlist))) $+ $chr(91) $+ $voucher(%u,voucher) $+ / $+ $maxvouch(%level,voucher) $+ $chr(93) $+ .
  1144.     %line = %line $level.str(50) $+ s: $iif($voucher(%u,censor) > 0,$get.usernamelist($voucher(%u,censorlist))) $+ $chr(91) $+ $voucher(%u,censor) $+ / $+ $maxvouch(%level,censor) $+ $chr(93) $+ .
  1145.     %line = %line $level.str(30) $+ s: $iif($voucher(%u,leader) > 0,$get.usernamelist($voucher(%u,leaderlist))) $+ $chr(91) $+ $voucher(%u,leader) $+ / $+ $maxvouch(%level,leader) $+ $chr(93) $+ .
  1146.     %line = %line $iif($voucher(%u,user),$voucher(%u,user),0) $+ / $+ $maxvouch(%level,user) vouchees.
  1147.   }
  1148.   elseif ( %level >= 90 ) {
  1149.     %line = %line $level.str(70) $+ s: $iif($voucher(%u,voucher) > 0,$get.usernamelist($voucher(%u,voucherlist))) $+ $chr(91) $+ $voucher(%u,voucher) $+ / $+ $maxvouch(%level,voucher) $+ $chr(93) $+ .
  1150.     %line = %line $level.str(50) $+ s: $iif($voucher(%u,censor) > 0,$get.usernamelist($voucher(%u,censorlist))) $+ $chr(91) $+ $voucher(%u,censor) $+ / $+ $maxvouch(%level,censor) $+ $chr(93) $+ .
  1151.     %line = %line $level.str(30) $+ s: $iif($voucher(%u,leader) > 0,$get.usernamelist($voucher(%u,leaderlist))) $+ $chr(91) $+ $voucher(%u,leader) $+ / $+ $maxvouch(%level,leader) $+ $chr(93) $+ .
  1152.     %line = %line $iif($voucher(%u,user),$voucher(%u,user),0) $+ / $+ $maxvouch(%level,user) vouchees.
  1153.   }
  1154.   elseif ( %level >= 70 ) {
  1155.     %line = %line $level.str(30) $+ s: $iif($voucher(%u,leader) > 0,$get.usernamelist($voucher(%u,leaderlist))) $+ $chr(91) $+ $voucher(%u,leader) $+ / $+ $maxvouch(%level,leader) $+ $chr(93) $+ .
  1156.     %line = %line $iif($voucher(%u,user),$voucher(%u,user),0) $+ / $+ $maxvouch(%level,user) vouchees.
  1157.   }
  1158.   elseif ( %level >= 50 ) {
  1159.     %line = %line $level.str(30) $+ s: $iif($voucher(%u,leader) > 0,$get.usernamelist($voucher(%u,leaderlist))) $+ $chr(91) $+ $voucher(%u,leader) $+ / $+ $maxvouch(%level,leader) $+ $chr(93) $+ .
  1160.     ;;%line = %line $iif($voucher(%u,user),$voucher(%u,user),0) $+ / $+ $maxvouch(%level,user) vouchees.
  1161.   }
  1162.   describe %target %line
  1163.   $iif($get.cfrank($user(%u).conf),$ifmatch)
  1164. }
  1165.  
  1166. on *:TEXT:.nick*:#: {
  1167.   if ((!%canreply) && ($userlvl2($nick) < 50 )) { return }
  1168.   if ($chan) { var %target = $chan }
  1169.   else { var %target = $nick }
  1170.   if ($2) { var %n = $2 }
  1171.   else { var %n = $nick }
  1172.   msg %target $iif($getname($getid2(%n)), $v1, User is not online)
  1173. }
  1174.  
  1175. on *:TEXT:.name*:#: {
  1176.   if ((!%canreply) && ($userlvl2($nick) < 50 )) { return }
  1177.   if ($chan) { var %target = $chan }
  1178.   else { var %target = $nick }
  1179.   if ($2) {
  1180.     var %n = $2
  1181.     var %n = $getid(%n)
  1182.   }
  1183.   else {
  1184.     var %n = $nick
  1185.     var %n = $getid2(%n)
  1186.   }
  1187.   msg %target $iif($nauth(%n), $v1, User is not online)
  1188. }
  1189.  
  1190.  
  1191. on *:TEXT:.whoareyou:#: {
  1192.   if ((!%canreply) && ($userlvl2($nick) < 50 )) { return }
  1193.   if ($chan) { var %target = $chan }
  1194.   else { var %target = $nick }
  1195.   describe %target I am The PZEliten BOT
  1196. }
  1197.  
  1198. ;########################
  1199. ;##########################
  1200. ;#######################
  1201. ; DISALBEEEEEEEEEEEEEEEEED
  1202. ;
  1203. ;
  1204. ;##########################
  1205.  
  1206. alias mvouchees {
  1207.   if ($1) { var %u = $getid($1) }
  1208.   else { var %u = $getid2($nick) }
  1209.   write -c maelk.txt
  1210.   var %l = $hget(vouchdata,0).item
  1211.   var %i = 1
  1212.   var %n = 0
  1213.   var %un = 1
  1214.   while ( %i <= %l ) {
  1215.     var %item = $hget(vouchdata,%i).item
  1216.     if ( info. isin %item) {
  1217.       if ( $gettok($hget(vouchdata,%i).data,1,46) == %u ) {
  1218.         write maelk.txt $gettok(%item,2,46)
  1219.       }
  1220.     }
  1221.     inc %i
  1222.   }
  1223. }
  1224.  
  1225. on $*:TEXT:/^\.vouchee(s|s\s.*)$/:#: {
  1226.   if ((!%canreply) && ($userlvl2($nick) < 70 )) { return }
  1227.   if ($chan) { var %target = $chan }
  1228.   else { var %target = $nick }
  1229.   if ($2) { var %u = $getid($2) }
  1230.   else { var %u = $getid2($nick) }
  1231.   if ( $userlvl(%u) < 70 ) { return }
  1232.   var %man = $voucher(%u,managerlist)
  1233.   var %vou = $voucher(%u,voucherlist)
  1234.   var %cen = $voucher(%u,censorlist)
  1235.   var %lea = $voucher(%u,leaderlist)
  1236.   var %manl, %voul, %cenl, %leal, %usrl1, %adml
  1237.   var %l = $hget(vouchdata,0).item
  1238.   var %i = 1
  1239.   var %n = 0
  1240.   var %un = 1
  1241.   while ( %i <= %l ) {
  1242.     var %item = $hget(vouchdata,%i).item
  1243.     if ( info. isin %item) {
  1244.       if ( $gettok($hget(vouchdata,%i).data,1,46) == %u ) {
  1245.         var %name = $mid(%item,6,$calc($len(%item)-5))
  1246.         if ($userlvl(%name) >= 100 ) { var %adml = %adml $getname(%name) $+ $enclose(A) }
  1247.         elseif ($istok(%man,%name,46)) { var %manl = %manl $getname(%name) $+ $enclose(SM) }
  1248.         elseif ($istok(%vou,%name,46)) { var %voul = %voul $getname(%name) $+ $enclose(M)  }
  1249.         elseif ($istok(%cen,%name,46)) { var %cenl = %cenl $getname(%name) $+ $enclose(C)  }
  1250.         elseif ($istok(%lea,%name,46)) { var %leal = %leal $getname(%name) $+ $enclose(H)  }
  1251.         else {
  1252.           if ($len($($+(%,usrl,%un),2)) > 400) {
  1253.             inc %un
  1254.             set %usrl $+ %un $null
  1255.           }
  1256.           ;;echo -ag UN -- NAME: %un -- $getname(%name)
  1257.           set %usrl $+ %un $($+(%,usrl,%un),2) $getname(%name)
  1258.         }
  1259.         inc %n
  1260.       }
  1261.     }
  1262.     inc %i
  1263.   }
  1264.   echo -ag ADDING LISTS
  1265.   var %listtokens = adml.manl.voul.cenl.leal.usrl1
  1266.   var %i = 2
  1267.   while (%i <= %un) {
  1268.     var %listtokens = $addtok(%listtokens,$+(usrl,$(%un)),46)
  1269.     inc %i
  1270.   }
  1271.   ;;;;;;;;;;;;;;;;;
  1272.   ;;echo -ag LISTTOKENS: %listtokens
  1273.   ;;;;;;;;;;;;;;;;;
  1274.   var %i = 1
  1275.   var %j = 1
  1276.   var %stop = 1
  1277.   var %l = $numtok(%listtokens,46)
  1278.   ;;;;;;;;;;;;;;;;;
  1279.   ;;echo -ag LIMIT %l
  1280.   ;;;;;;;;;;;;;;;;;
  1281.   var %list = $getname(%u) $+ 's vouchees $+ ( $+ %n $+ ):
  1282.   while (%i <= %l) {
  1283.     if (%stop > 10000) { return }
  1284.     var %curl = $($+(%,$gettok(%listtokens,%i,46)),2)
  1285.     ;;echo -ag CURL: %curl
  1286.     var %j = 1
  1287.     var %ll = $numtok(%curl,32)
  1288.     while (%j <= %ll) {
  1289.       if (%stop > 10000) { return }
  1290.       if ($len(%list) >= 780) {
  1291.         describe %target %list [more...]
  1292.         echo -ag -- %list [more...]
  1293.         var %list = $null
  1294.       }
  1295.       var %list = %list $gettok(%curl,%j,32)
  1296.       inc %j
  1297.       inc %stop
  1298.     }
  1299.     inc %i
  1300.     inc %stop
  1301.   }
  1302.   describe %target %list
  1303.   echo -ag -- %list
  1304.   ;;var %list = %adml %manl %voul %cenl %leal %usrl
  1305.   ;;describe %target $getname(%u) $+ 's vouchees $+ ( $+ %n $+ ): %list
  1306. }
  1307.  
  1308. /*
  1309. while (%i <= %l) {
  1310.   if ($len(%list) >= 780) {
  1311.     describe %target %list [more...]
  1312.     var %list = $null
  1313.   }
  1314.   var %list = %list $enclose($pen(%pu,%i).type by $getname($pen(%pu,%i).author) - $pen(%pu,%i).date)
  1315.   inc %i
  1316. }
  1317. describe %target %list
  1318. */
  1319.  
  1320. /*
  1321. 1000 - Newbie
  1322. 1050 - Fair
  1323. 1100 - Acceptable
  1324. 1150 - Trustable
  1325.  
  1326. 1250 - Great
  1327. 1300 - Incredible
  1328. 1350 - Violence
  1329. 1400 - Rapist
  1330. 1450 - HolyCrap
  1331. 1500 - Satanic
  1332. 1550 - Ohmygod
  1333. 1600 - Godlike
  1334. 1650 - DotaMaster
  1335. 1700 - Zokky
  1336.  
  1337. negative
  1338. Lousy - Inefficient - Sickening - Burden - Jinx - wastred - Freelose - Getreadyforunvouch - Sucide
  1339.  
  1340. deluxe has 21 wins, 30 losses, 1084 experience, ranked 121/521, Rated [Moderate];
  1341. Current winning streak: 1 Confidence factor: Average
  1342. */
  1343.  
  1344. alias get.exprank {
  1345.   if ( $1 == pimpoo ) { return Baca }
  1346.   if ( $1 == Matoha ) { return Chobot }
  1347.   if ( $1 == tenerd-cz ) { return kicknator }
  1348.   if ( $1 == Kukajda ) { return the-basher-man }
  1349.   if ( $1 == slambik ) { return iR-HATER }
  1350.   if ( $1 == reifik ) { return Bilej pes }
  1351.   if ( $1 == NsNk ) { return Moralni vitez }
  1352.   if ( $1 == ervss ) { return LEGENDARY }
  1353.   if ( $1 == sundelin ) { return Svett }
  1354.   if ( $1 == Bergie ) { return fake afk }
  1355.   if ( $1 == thanzi ) { return fake afk }
  1356.   if ( $1 == Knuttiface ) { return Jack Bauer }
  1357.   var %g = $user($1).game
  1358.   if ( %g <= 8 ) {
  1359.     return Beginner
  1360.   }
  1361.  
  1362.   /*
  1363.   Promising - Reliable - Competent - Impressive -Talented - Skilled - Great
  1364.   - Unstoppable - Gifted - Phenominal - Masterful - Rapist - Godlike - Royalty - Badman
  1365.  
  1366.   Moderate - Weak - Poor - Feeder - Pathetic - hans2 - Maelk - Freelose - Cocksucker
  1367.   */
  1368.  
  1369.   var %e = $user($1).rank
  1370.   if ( %e <= 02 ) { return Sylar }
  1371.   elseif ( %e <= 03 ) { return Peter Petrelli }
  1372.   elseif ( %e <= 04 ) { return Michael Scofield }
  1373.   elseif ( %e <= 05 ) { return Hiro Nakamura }
  1374.   elseif ( %e <= 06 ) { return Claire Bennet }
  1375.   elseif ( %e <= 07 ) { return Matt Parkman }
  1376.   elseif ( %e <= 08 ) { return Niki Sanders }
  1377.   elseif ( %e <= 09 ) { return MacGyver }
  1378.   elseif ( %e <= 10 ) { return Hannibal }
  1379.   elseif ( %e <= 11 ) { return Lincoln Burrows }
  1380.   elseif ( %e <= 12 ) { return Isaac Mendez }
  1381.   elseif ( %e <= 13 ) { return Micah Sanders }
  1382.   elseif ( %e <= 14 ) { return Sayid Jarrah }
  1383.   elseif ( %e <= 15 ) { return T-Bag }
  1384.   elseif ( %e <= 16 ) { return Sucre }
  1385.   elseif ( %e <= 17 ) { return Sara Tancredi }
  1386.   elseif ( %e <= 18 ) { return Brad Bellick }
  1387.   elseif ( %e <= 19 ) { return Alex Mahone }
  1388.   elseif ( %e <= 20 ) { return Paul Kellerman }
  1389.   elseif ( %e <= 21 ) { return LJ }
  1390.   elseif ( %e <= 22 ) { return C-Note }
  1391.   elseif ( %e <= 23 ) { return Gretchen }
  1392.   elseif ( %e <= 24 ) { return General }
  1393.   elseif ( %e <= 25 ) { return Veronica Donovan }
  1394.   elseif ( %e <= 26 ) { return Henry Pope }
  1395.   elseif ( %e <= 27 ) { return Don Self }
  1396.   elseif ( %e <= 28 ) { return Louis Patterson }
  1397.   elseif ( %e <= 29 ) { return Abruzzi }
  1398.   elseif ( %e <= 30 ) { return Ari Gold }
  1399.   elseif ( %e <= 31 ) { return E }
  1400.   elseif ( %e <= 32 ) { return Nick Savrinn }
  1401.   elseif ( %e <= 33 ) { return Jin Soo Kwon }
  1402.   elseif ( %e <= 34 ) { return Keith Stolte }
  1403.   elseif ( %e <= 35 ) { return Caroline Reynolds }
  1404.   elseif ( %e <= 36 ) { return Bill Kim }
  1405.   elseif ( %e <= 37 ) { return Lloyd }
  1406.   elseif ( %e <= 38 ) { return James Whistler }
  1407.   elseif ( %e <= 39 ) { return McGrady }
  1408.   elseif ( %e <= 40 ) { return Noah Bennet }
  1409.   elseif ( %e <= 41 ) { return Doctor Suresh }
  1410.   elseif ( %e <= 42 ) { return Ando Masahashi }
  1411.   elseif ( %e <= 43 ) { return Nathan Petrelli }
  1412.   elseif ( %e <= 44 ) { return Angela Petrelli }
  1413.   elseif ( %e <= 45 ) { return Sandra Bennet }
  1414.   elseif ( %e <= 46 ) { return Hawkins }
  1415.   elseif ( %e <= 47 ) { return Daphne Millbrook }
  1416.   elseif ( %e <= 48 ) { return Molly Walker }
  1417.   elseif ( %e <= 49 ) { return Maya Herrera }
  1418.   elseif ( %e <= 50 ) { return Simone Deveaux }
  1419.   elseif ( %e <= 51 ) { return Adam Monroe }
  1420.   elseif ( %e <= 52 ) { return Elle Bishop }
  1421.   elseif ( %e <= 53 ) { return Kaito Nakamura }
  1422.   elseif ( %e <= 54 ) { return Bob Bishop }
  1423.   elseif ( %e <= 55 ) { return Linderman }
  1424.   elseif ( %e <= 56 ) { return Sarah Walker }
  1425.   elseif ( %e <= 57 ) { return Morgan Grimes }
  1426.   elseif ( %e <= 58 ) { return John Casey }
  1427.   elseif ( %e <= 59 ) { return Big Mike }
  1428.   elseif ( %e <= 60 ) { return Faceman }
  1429.   elseif ( %e <= 61 ) { return Turtle }
  1430.   elseif ( %e <= 62 ) { return Mr. T }
  1431.   elseif ( %e <= 63 ) { return Johnny drama }
  1432.   elseif ( %e <= 64 ) { return John Dorian }
  1433.   elseif ( %e <= 65 ) { return Bob Kelso }
  1434.   elseif ( %e <= 66 ) { return Perry Cox }
  1435.   elseif ( %e <= 67 ) { return Chris Turk }
  1436.   elseif ( %e <= 68 ) { return Jack Shephard }
  1437.   elseif ( %e <= 69 ) { return Sawyer }
  1438.   else { return Chuck Bartowski }
  1439.  
  1440. }
  1441.  
  1442. alias get.streakrank {
  1443.   if ( $1 >= 11 ) { var %r = Serial Killer }
  1444.   elseif ( $1 >= 9 ) { var %r = UNSTOPPABLE! }
  1445.   elseif ( $1 >= 7 ) { var %r = AWESOMENESS }
  1446.   elseif ( $1 >= 5 ) { var %r = Annihilation }
  1447.   elseif ( $1 >= 3 ) { var %r = Hattrick! }
  1448.   elseif ( $1 > -3 ) { var %r = $null }
  1449.   elseif ( $1 > -5 ) { var %r = Feeding Spree }
  1450.   elseif ( $1 > -7 ) { var %r = Humiliating }
  1451.   elseif ( $1 > -9 ) { var %r = Mega-Feed }
  1452.   elseif ( $1 > -11 ) { var %r = Cursed }
  1453.   else { var %r = Hopeless }
  1454.   if ( $1 > 0 ) { return Current winning streak: $1 $iif(%r,$enclose(%r)) }
  1455.   elseif ( $1 < 0 ) { return Current losing streak: $1 $iif(%r,$enclose(%r)) }
  1456.   else { return $null }
  1457. }
  1458.  
  1459. ;Lousy ,Poor, Fair, Average, Very good, Great, Heroic
  1460. ;200    300    400      500     600        700    800
  1461.  
  1462. alias get.cfrank {
  1463.   if ( $1 >= 800 ) { var %r = Heroic (800+) }
  1464.   elseif ( $1 >= 700 ) { var %r = Great (700+) }
  1465.   elseif ( $1 >= 600 ) { var %r = Very Good (600+) }
  1466.   elseif ( $1 >= 500 ) { var %r = Average (500+) }
  1467.   elseif ( $1 >= 400 ) { var %r = Fair (400+) }
  1468.   elseif ( $1 >= 300 ) { var %r = Poor (300+) }
  1469.   elseif ( $1 >= 200 ) { var %r = Lousy (200+) }
  1470.   else { var %r = Unvouched }
  1471.   return Confidence factor: %r
  1472. }
  1473.  
  1474.  
  1475.  
  1476. ;#########################################################
  1477. ;#########################################################
  1478.  
  1479. alias update.online.status {
  1480.   write -c lastupdate.txt $calc($ctime) $crlf
  1481.   ;32376 -- 3576
  1482.   write lastupdate.txt $nick(#das.pickup,0)
  1483.   write lastupdate.txt $numtok(%gamelist,46)
  1484.   run status.bat
  1485. }
  1486.  
  1487. on *:TEXT:!devoice:%ch: {
  1488.   if ($userlvl($auth($nick)) > 50 ) {
  1489.     sync.voice
  1490.   }
  1491. }
  1492.  
  1493. alias reinvite {
  1494.   var %l = $nick(#das.net,0)
  1495.   var %i = 1
  1496.   while (%i <= %l ) {
  1497.     if ( $auth($nick(#das.net,%i)) >= 10 ) {
  1498.       if ( $nick(#das.net,%i) !ison %ch ) {
  1499.         timer 1 $calc(%i * 2) invite $nick(#das.net,%i) %ch
  1500.       }
  1501.     }
  1502.     inc %i
  1503.   }
  1504. }
  1505.  
  1506. ;;;;;;;;;;;;;;;; set sig
  1507. on *:TEXT:.setsig *:#: {
  1508.   var %u = $getid2($nick)
  1509.   if ($userlvl(%u) >= 10 ) {
  1510.     set %user.img_ $+ %u $2
  1511.     notice $nick Signature for user $getname(%u) set to theme $chr(35) $+ $2
  1512.   }
  1513. }
  1514.  
  1515. ;#########################################################
  1516. ;#########################################################
  1517. ; TIME BAN
  1518.  
  1519. on *:TEXT:.timeban *:%ch, #nihl.no-staff: {
  1520.   var %u = $getid2($nick)
  1521.   if ($userlvl(%u) < $adminlvl ) { return }
  1522.   var %bu = $getid($2)
  1523.   if ($userlvl(%u) < $userlvl(%bu) ) { return }
  1524.   if (!%bu) { return }
  1525.   if ($3) { var %time = $int($3) }
  1526.   else { var %time = 10 }
  1527.   var %time = $calc(%time * 60)
  1528.   var %bantime = $calc($ctime + %time)
  1529.   set %timeban_ $+ %bu $calc($ctime + %time)
  1530.   describe #nihl.no-staff User $getname(%bu) has been banned. $iif($4,Reason: $4)
  1531.   if ($nauth(%bu)) {
  1532.     var %nick = $v1
  1533.     kick %ch %nick You are banned ( $+ Expires: $asctime(%bantime,HH:nn:ss dd/mm/yy) $+ )
  1534.   }
  1535. }
  1536.  
  1537. on *:TEXT:.ban *:#: {
  1538.   var %u = $getid2($nick)
  1539.   if ($userlvl(%u) < $adminlvl ) { return }
  1540.   var %bu = $getid($2)
  1541.   if ($userlvl(%u) < $userlvl(%bu) ) { return }
  1542.   if (!%bu) { return }
  1543.   if ($3) { var %time = $int($3) }
  1544.   else { var %time = 7 }
  1545.   AddPenalty %u %bu Ban %time $4-
  1546.   var %time = $calc(%time * 86400)
  1547.   var %bantime = $calc($ctime + %time)
  1548.   hadd pendata $+(ban.,%bu) %bantime
  1549.   describe #nihl.no-staff User $getname(%bu) has been banned. $iif($4,Reason: $4-)
  1550.   if ($nauth(%bu)) {
  1551.     var %nick = $v1
  1552.     kick %ch %nick You are banned ( $+ Expires: $asctime(%bantime,HH:nn:ss dd/mm/yy) $+ )
  1553.   }
  1554. }
  1555.  
  1556. on *:TEXT:battyboy:%ch: {
  1557.   var %u = $getid2($nick)
  1558.   /kick #ihl.no %u
  1559. }
  1560.  
  1561. on *:TEXT:.unban *:#: {
  1562.   if ($chan) { var %target = $chan }
  1563.   else { var %target = $nick }
  1564.   var %u = $getid2($nick)
  1565.   if ($userlvl(%u) < $adminlvl ) { return }
  1566.   var %bu = $getid($2)
  1567.   if (!%bu) { return }
  1568.   AddPenalty %u %bu Unban $ctime
  1569.   hadd pendata $+(ban.,%bu) $ctime
  1570.   describe %target User $getname(%bu) has been unbanned
  1571. }
  1572.  
  1573. on *:TEXT:.banlist:#: {
  1574.   if ($chan) { var %target = $chan }
  1575.   else { var %target = $nick }
  1576.   var %u = $getid2($nick)
  1577.   if ( $userlvl(%u) < $adminlvl ) { return }
  1578.   var %i = 1
  1579.   var %l = $hfind(pendata,ban.*,0,w)
  1580.   var %list = $null
  1581.   while ( %i <= %l ) {
  1582.     var %item = $hfind(pendata,ban.*,%i,w)
  1583.     var %data = $hget(pendata,$hfind(pendata,ban.*,%i,w))
  1584.     var %bu = $getname($right(%item,-4))
  1585.     var %bt = %data
  1586.     if ($ctime < %bt) {
  1587.       var %list = %list $enclose(%bu - $asctime(%bt,HH:nn:ss dd/mm/yy))
  1588.     }
  1589.     inc %i
  1590.   }
  1591.   Describe %target %list
  1592. }
  1593.  
  1594. on *:TEXT:.record*:%ch: {
  1595.   if ($2 == streaks) {
  1596.     var %i = 1
  1597.     var %l = $hget(userdata,0).item
  1598.     while ( %i < %l ) { if ( $user($hget(userdata,%i).item).spree >= 5 ) { write sorting.txt $user($hget(userdata,%i).item).spree $user($hget(userdata,%i).item).name } | inc %i } | sortqdb sorting.txt sorting2.txt | $getstrkq | describe %ch Top Streaks: $iif(%getstr,%getstr,No Records) (Total: $lines(sorting2.txt) $+ ) | unset %getstr | write -c sorting2.txt
  1599.   }
  1600.   if ($2 == -streaks) {
  1601.     var %i = 1
  1602.     var %l = $hget(userdata,0).item
  1603.     while ( %i < %l ) { if ( $user($hget(userdata,%i).item).spree <= -5 ) { write sorting.txt $user($hget(userdata,%i).item).spree $user($hget(userdata,%i).item).name } | inc %i } | sortqdb sorting.txt sorting2.txt | $getstrkq2 | describe %ch Top -Streaks: $iif(%getstr2,%getstr2,No Records) (Total: $lines(sorting2.txt) $+ ) | unset %getstr2 | write -c sorting2.txt
  1604.   }
  1605. }
  1606.  
  1607. alias gosu {
  1608.   sockclose gosu
  1609.   sockopen gosu www.gosugamers.net 80
  1610.   if ($hget(gosu)) hfree $v1
  1611.   .enable #gosu
  1612. }
  1613.  
  1614. on *:sockopen:gosu: {
  1615.   sockwrite -n $sockname GET /dota HTTP/1.0
  1616.   sockwrite -n $sockname Host: www.gosugamers.net
  1617.   sockwrite -n $sockname $crlf
  1618. }
  1619.  
  1620. #gosu off
  1621. on *:sockread:gosu: {
  1622.   var %r | sockread %r
  1623.   if (*<div class="last_top_alt">* iswm %r) && (!$sock($sockmark).mark) { sockmark $sockname 1 | hinc -m gosu match }
  1624.   elseif (*<div id='box_latest_gosubets_started_gosubets' >* iswm %r) && ($sock($sockname).mark) { .disable #gosu }
  1625.  
  1626.   if ($sock($sockname).mark) {
  1627.     if (*<img src="/bilder/flags_long/* iswm %r) { hadd -m gosu $hget(gosu,match) $+ .team $+ $hfind(gosu,$hget(gosu,match) $+ .team*,0,w) $remove($gettok(%r,-1,32),   ) }
  1628.     elseif (*<div style="float:clear;font-size:10px;">* iswm %r) { hadd -m gosu $hget(gosu,match) $+ .time $remove(%r,<div style="float:clear;font-size:10px;">,</div>, ) | hinc -m gosu match }
  1629.   }
  1630. }
  1631. #gosu end
  1632. on *:SOCKCLOSE:gosu:{
  1633.   var %x = 1
  1634.   while ($hget(gosu,%x $+ .team0)) {
  1635.     .describe %ch 4 $+ $hget(gosu,%x $+ .team0) 6vs1.12 $hget(gosu,%x $+ .team1) 6time:3 $hget(gosu,%x $+ .time)
  1636.     inc %x
  1637.   }
  1638. }
  1639. on *:TEXT:.gosugamers*:%ch: {
  1640.   if ($auth($me) == IHL-NO1) && (!$timer(gosuabuse)) { gosu | .timergosuabuse 1 20 //echo done }
  1641. }
  1642.  
  1643. ################################################################################################
  1644.  
  1645. alias gosutm {
  1646.   sockclose gosutm
  1647.   sockopen gosutm www.gosugamers.net 80
  1648.   if ($hget(gosutm)) hfree $v1
  1649.   .enable #gosutm
  1650. }
  1651.  
  1652. on *:sockopen:gosutm: {
  1653.   sockwrite -n $sockname GET /dota HTTP/1.0
  1654.   sockwrite -n $sockname Host: www.gosugamers.net
  1655.   sockwrite -n $sockname $crlf
  1656. }
  1657.  
  1658. #gosutm off
  1659. on *:sockread:gosutm: {
  1660.   var %r | sockread %r
  1661.   if (*<div class="last_top_alt">* iswm %r) && (!$sock($sockmark).mark) { sockmark $sockname 1 | hinc -m gosutm match }
  1662.   elseif (*<div id='box_latest_gosubets_started_gosubets' >* iswm %r) && ($sock($sockname).mark) { .disable #gosutm }
  1663.  
  1664.   if ($sock($sockname).mark) {
  1665.     if (*<img src="/bilder/flags_long/* iswm %r) { hadd -m gosutm $hget(gosu,match) $+ .team $+ $hfind(gosu,$hget(gosutm,match) $+ .team*,0,w) $remove($gettok(%r,-1,32),   ) }
  1666.     elseif (*<div style="float:clear;font-size:10px;">* iswm %r) { hadd -m gosutm $hget(gosu,match) $+ .time $remove(%r,<div style="float:clear;font-size:10px;">,</div>,   ) | hinc -m gosutm match }
  1667.   }
  1668. }
  1669. #gosutm end
  1670. on *:SOCKCLOSE:gosutm:{
  1671.   var %x = 1
  1672.   while ($hget(gosu,%x $+ .team0)) {
  1673.     .describe #dota.tm 4 $+ $hget(gosu,%x $+ .team0) 6vs1.12 $hget(gosu,%x $+ .team1) 6time:3 $hget(gosu,%x $+ .time)
  1674.     inc %x
  1675.   }
  1676. }
  1677. on *:TEXT:.gosu:#dota.tm: {
  1678.   if ($auth($me) == IHL-NO1) && (!$timer(gosutmabuse)) { gosutm | .timergosutmabuse 1 1 //echo done }
  1679. }
  1680.  
  1681. on *:TEXT:.noob:#: {
  1682.   /describe %ch The only noob here is QUITY^-^
  1683. }
  1684.  
  1685. ;#########################################################
  1686. ;#########################################################
  1687. ; CHANNEL MSG
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement