alias points.import {
if (!$exists(Points.ini)) return
rename Points.ini Points.old.ini
filter -k Points.old.ini points.filter *
unset %prev
}
alias points.filter {
var %line = $1-
if (%line == $null) return
if ($regex(%line,^Points=(\d+))) {
var %points = $regml(1)
if ($regex(%prev,/^\[(#.+?)\.(.+?)\]/)) {
var %chan = $regml(1)
var %nick = $regml(2)
add.pts %chan %nick %points
}
}
%prev = %line
}
on *:text:!taskai:#:{
if (%floodtaskai || $($+(%, floodtaskai., $nick), 2)) {
return
}
set -u3 %floodtaskai On
set -u45 %floodtaskai. $+ $nick On
PRIVMSG $nick Tu turi $get.pts(#,$nick) tasku.
}
on !*:join:#:{
$+(.timerpoints.,#,.,$nick) 0 1800 add.pts # $nick
set.login # $nick
}
on !*:part:#:{
$+(.timerpoints.,#,.,$nick) off
set.login # $nick
}
on me:*:join:#:{
noop $hash.load(login. $+ #,Login.ini,#)
noop $load.pts(points. $+ #,Points.ini,#)
}
on me:*:part:#:{
set.login.channel #
}
on *:disconnect:{
var %i = 1
while ($chan(%i)) {
var %chan = $v1, %table = points. $+ %chan
if ($hget(%table) != $null) {
set.login.channel %chan
}
inc %i
}
}
on *:exit:{
save.pts
}
alias clean.pts {
var %chan = $$1, %login.table = login. $+ %chan, %points.table = points. $+ %chan
var %login.file = Login.ini, %points.file = Points.ini
var %limit = 432000, %i = 1
var %threshold = $ctime - %limit
noop $hash.load(%login.table,%login.file,%chan)
noop $load.pts(%points.table,%points.file,%chan)
while ($hget(%points.table,%i).item) {
var %nick = $v1, %login = $hget(%login.table,%nick)
if (%nick ison %chan) || (%login == $null) {
set.login %chan %nick $ctime
}
elseif (%login < %threshold) {
hdel %login.table %nick
hdel %points.table %nick
}
inc %i
}
hsave -i %login.table %login.file %chan
hsave -i %points.table %points.file %chan
}
alias -l set.login {
var %chan = $$1, %nick = $$2, %time = $iif($3,$3,$ctime), %table = login. $+ %chan, %file = Login.ini
if (!$get.pts(%chan,%nick)) return
noop $hash.load(%table,%file,%chan)
hadd -m %table %nick %time
.timerset.login $+ %chan 1 5 hsave -i %table %file %chan
}
alias -l set.login.channel {
var %chan = $1, %table = login. $+ %chan, %file = Login.ini, %i = 1
while ($nick(%chan,%i)) {
set.login %chan $v1 $ctime
inc %i
}
hsave -i %table %file %chan
}
alias -l hash.load {
var %table = $1, %file = $2, %topic = $3
if (!$hget(%table)) {
hmake %table
if ($ini(%file,%topic)) hload -i %table %file %topic
}
}
alias -l add.pts {
var %chan = $$1, %nick = $$2, %points = $3, %table = points. $+ %chan, %file = Points.ini
noop $load.pts(%table,%file,%chan)
hinc %table %nick %points
.timeradd.pts. $+ %chan 1 5 hsave -i %table %file %chan
}
alias -l get.pts {
var %chan = $$1, %nick = $$2, %table = points. $+ %chan, %file = Points.ini
noop $load.pts(%table,%file,%chan)
return $hget(%table,%nick)
}
alias -l load.pts {
var %table = $1, %file = $2, %topic = $3
if (!$hget(%table)) {
hmake %table
hadd -m points.meta %table %topic
hsave -i points.meta %file meta
if ($ini(%file,%topic)) hload -i %table %file %topic
}
}
alias -l save.pts {
var %file = Points.ini, %i = 1
while ($hget(points.meta,%i).item) {
var %table = $v1, %topic = $hget(points.meta,%table)
hsave -i %table %file %topic
inc %i
}
}
on *:text:!permit:#:{
if (%floodpermitas || $($+(%, floodpermitas., $nick), 2)) {
return
}
set -u10 %floodpermitas On
set -u45 %floodpermitas. $+ $nick On
if ($get.pts(#,$nick) >= 20) {
add.pts # $nick -20)
hadd -m $+(taskai., #) $nick 1
msg # !permit $nick
}
else {
msg # Sry $nick $+ , tu neturi pakankamai tasku. Tau reikia 20 tasku.
}
}
on *:text:!pirkti permit:#:{
if (%floodpermitas2 || $($+(%, floodpermitas2., $nick), 2)) {
return
}
set -u10 %floodpermitas2 On
set -u45 %floodpermitas2. $+ $nick On
if ($get.pts(#,$nick) >= 20) {
add.pts # $nick -20)
hadd -m $+(taskai., #) $nick 1
msg # !permit $nick
}
else {
msg # Sry $nick $+ , tu neturi pakankamai tasku. Tau reikia 20 tasku.
}
}