Aide - Recherche - Membres - Calendrier
Version complète : Soucis Server ( Gender Profile )
CCS Forums > Scripting mIRC > Scripting mIRC
Sιℓєи¢є
Hello ,

Faisait un bout que j'etais pas revenu ^^

J'explique :

J'ai un server de chat avec quelques salles ( ferait pas de pub ^^ ) .
J'utilise crimson server ( oui oui tjrs ocx msn unsure.gif ) .
Mais ca dépanne bien les gens qui y viennent en attendant ...

J'ai un soucis de reconnaissance des genders ... ptite tête homme , femme avec ou sans photo ...
Si une âme charitable pouvait m'aider ... ( je mettrais le code après ).

Amicalement , Arc , Reveur etc ...
Orus
CITATION(Sιℓєи¢ @ 17/08/2007, 17:01) *
Hello ,

Faisait un bout que j'etais pas revenu ^^

J'explique :

J'ai un server de chat avec quelques salles ( ferait pas de pub ^^ ) .
J'utilise crimson server ( oui oui tjrs ocx msn unsure.gif ) .
Mais ca dépanne bien les gens qui y viennent en attendant ...

J'ai un soucis de reconnaissance des genders ... ptite tête homme , femme avec ou sans photo ...
Si une âme charitable pouvait m'aider ... ( je mettrais le code après ).

Amicalement , Arc , Reveur etc ...

bah de but en blanc comme je te disais l'autre fois, sans le code on peut pas trop dire comme ça au hasard.
En plus je comprends pas trop la question. Elle concerne ?
-la vu des petites icones sur le webchat
-ou la lecture du profil en ligne?

enfin essaie de donner un max d'infos et il y aura toujours quelqu'un pour t'aider.
Sιℓєи¢є
CODE
[script]

n0=;_____________________________________

n1=;;|;;-----------------------------------------------------;;|;;,

n2=;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|;;;
,

n3=;;|;; Crimson Server ;;;;;;;;;;;;;;;;;; Version 0.3.0 ;;;|;;;;;;,

n4=;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|;;;
;;;;,

n5=;;|;;-----------------------------------------------------;;|;;;;;;;;;;

n6=;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|;;;
;;;;·

n7=;;|;;;;;;;;;;;;;;;;;;;;;;;;;;; By Paper ;;;;;;;;;;;;;;;;;;;;;;;;;;;;|;;;;;;·

n8=;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|;;;
·

n9=;;|;;-----------------------------------------------------;;|;;·

n10=;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

n11=on *:START:{ crimson }

n12=on *:SOCKLISTEN:*:{

n13= if ($sockname == listen.1) {

n14= var %a = $r(1111,9999) | sockaccept %a | var %ip = $sock(%a).ip | var %sn = $calc($gettok($sock(first- $+ $sock(%a).ip $+ *,$sock(first- $+ $sock(%a).ip $+ *,0)),3,$asc(-)) + 1)

n15= if ($sock(first- $+ $sock(%a).ip $+ *,0) > $config(mpi)) && ($config(mpi) != 0) { sockwrite -tn %a $config(serv) Too much connections | sockclose %a | goto jump }

n16= if (%a- [ $+ [ %ip ] ]) && ($config(fco) == on) { sockwrite -tn %a $config(serv) Connections too fast | sockclose %a | goto jump } | sockrename %a first- $+ $sock(%a).ip $+ - $+ %sn | :jump

n17= if (!%a- [ $+ [ %ip ] ]) { set -u3 %a- [ $+ [ %ip ] ] 1 } | else { inc %a- [ $+ [ %ip ] ] | if (%a- [ $+ [ %ip ] ] >= 10) && ($config(kfco) == on) { ip.kick * $+ %ip $+ * Flooding Server } }

n18= }

n19= elseif ($sockname == listen.2) {

n20= var %a = $r(1111,9999) | sockaccept %a | var %ip = $sock(%a).ip | var %sn = $calc($gettok($sock(crimson- $+ $sock(%a).ip $+ *,$sock(crimson- $+ $sock(%a).ip $+ *,0)),3,$asc(-)) + 1)

n21= if ($sock(crimson- $+ $sock(%a).ip $+ *,0) > $config(mpi)) && ($config(mpi) != 0) { sockwrite -tn %a $config(serv) Too much connections | sockclose %a | goto jump }

n22= if (%b- [ $+ [ %ip ] ]) && ($config(fco) == on) { sockwrite -tn %a $config(serv) Connections too fast | sockclose %a | goto jump } | sockrename %a crimson- $+ $sock(%a).ip $+ - $+ %sn

n23= :jump | if (!%b- [ $+ [ %ip ] ]) { set -u3 %b- [ $+ [ %ip ] ] 1 } | else { inc %b- [ $+ [ %ip ] ] | if (%b- [ $+ [ %ip ] ] >= 10) && ($config(kfco) == on) { ip.kick * $+ %ip $+ * Flooding Server } }

n24= }

n25=}

n26=on *:SOCKREAD:*:{

n27= var %a | sockread %a | tokenize 32 %a | if ($1 != PONG) { if ($sockname != %lastsock) { echo @socks - | set %lastsock $sockname } | echo @socks 12 $+ $sockname $iif($hget($sockname,nick),2 $+ $v1) $iif($hget($sockname,room),12 $+ $v1) 14 $+ $1- }

n28= if (!%flood. [ $+ [ $sockname ] ]) { set -u3 %flood. [ $+ [ $sockname ] ] 1 } | else { inc %flood. [ $+ [ $sockname ] ] | if (%flood. [ $+ [ $sockname ] ] >= 15) && ($hget($sockname,ustat) !isin ASG) { disconn $sockname } }

n29= if (first-* iswm $sockname) {

n30= if ($1-3 == AUTH Gatekeeper I) { sockwrite -tn $sockname AUTH GateKeeper * first@connexion }

n31= elseif ($1 == NICK) && ($2) { sockwrite -tn $sockname $config(serv) 001 Crimson :Welcome on $config(chat) }

n32= elseif (FINDS ?#* iswm $1-2) { if ($hget($2)) { sockwrite -tn $sockname $config(serv) 613 crimson : $+ $iif($sock($sockname).ip == 127.0.0.1, 127.0.0.1, $config(ip)) $config(port2) } | else { sockwrite -tn $sockname $config(serv) 702 crimson :Room does not exists } }

n33= elseif ($1 == CREATE) && ($+($chr(37),$chr(35),*) iswm $3) && ($8) {

n34= if ($hget($2)) { sockwrite -tn $sockname $config(serv) 705 crimson : $+ $iif($sock($sockname).ip == 127.0.0.1, 127.0.0.1, $config(ip)) $config(port2) | halt }

n35= if ($roomcheck($right($3,-2)) == no) { sockwrite -tn $sockname $config(serv) 706 crimson :Bad Characters | halt }

n36= else { if ($roomname($3) == $false) { halt } | hmake $3 10 | hadd $3 cat $2 | hadd $3 topic $4 | hadd $3 welcome $5 | hadd $3 lang $6 | hadd $3 owncode $8 | hadd $3 modes ntl | hadd $3 limit 50

n37= sockwrite -tn $sockname $config(serv) 613 crimson : $+ $iif($sock($sockname).ip == 127.0.0.1, 127.0.0.1, $config(ip)) $config(port2) | uncreatetimer $3 | addline $3

n38= }

n39= }

n40= }

n41= elseif (crimson-* iswm $sockname) {

n42= if ($1 == IRCVERS) { sockwrite -tn $sockname $config(serv) 800 * 1 0 Address,NTLM 512 * } | elseif ($1-3 == AUTH GateKeeper I) && (!$hget($sockname,gate)) {

n43= var %gate = $calc($calc($gettok($sock($sockname).ip,1,$asc(.)) * $gettok($sock($sockname).ip,3,$asc(.))) * $calc($gettok($sock($sockname).ip,2,$asc(.)) * $gettok($sock($sockname).ip,4,$asc(.))))

n44= %gate = $calc(%gate * %gate * $gettok($sock($sockname).ip,2,$asc(.))) $+ @ $+ $right($config(serv),-1) | if ($sock($sockname).ip == 127.0.0.1) { %gate = localhost $+ @ $+ $right($config(serv),-1) } | hadd -m $sockname gate %gate | sockwrite -tn $sockname AUTH GateKeeper * %gate | if ($config(slist) == on) { addline $sockname }

n45= }

n46= elseif (NICK * iswm $1-2) {

n47= if (:* iswm $2) { tokenize 32 $1 $right($2,-1) } | if (>* iswm $2) { tokenize 32 $1 $right($2,-1) } | if ($len($2) > 50) { sockwrite -tn $sockname $config(serv) 432 $2 :Pseudo trop long | halt }

n48= if ($nickcheck($2) == bad) { sockwrite -tn $sockname $config(serv) 432 $2 :Unauthorized characters | halt }

n49= if ($hget($sockname,room)) { sockwrite -tn $sockname $config(serv) 439 $hget($sockname,nick) :Cannot Change Nickname | halt }

n50= elseif (!$hget($sockname,nick)) { hadd -m $sockname nick $2 | hadd $sockname profile PX | hadd $sockname away H | hadd $sockname ustat U | var %nick = $hget($sockname,nick) | var %serv = $config(serv)

n51= sockwrite -tn $sockname %serv 001 %nick :Welcome %nick $+ ! $+ $hget($sockname,gate) $+ @ $+ $right($config(serv),-1) $+ $crlf $+ $sockname %serv 002 %nick :Server %serv $+ , Version:

n52= sockwrite -tn $sockname %serv 003 %nick :- | sockwrite -tn $sockname %serv 375 %nick :- $right($config(serv),-1) Message of the day -

n53= if ($exists(motd.txt) == $true) && ($lines(motd.txt) > 0) { var %n = 1 | while (%n <= $lines(motd.txt)) { sockwrite -tn $sockname %serv 372 %nick :- $read(motd.txt,%n) | inc %n } }

n54= else { sockwrite -tn $sockname %serv 372 %nick :Motd is Missing (Modify in motd.txt) } | sockwrite -tn $sockname %serv 376 %nick :End of /MOTD command

n55= }

n56= elseif ($hget($sockname,nick)) { sockwrite -tn $sockname : $+ $hget($sockname,nick) $+ ! $+ $hget($sockname,gate) NICK : $+ $2 | hadd -m $sockname nick $2 }

n57= }

n58= elseif (JOIN ?#* iswm $1-2) && ($hget($sockname,nick)) && ($hget($sockname),gate) {

n59= if ($hget($sockname,room)) { sockwrite -tn $sockname $config(serv) 405 $hget($Sockname,nick) :Too much rooms opened | halt }

n60= if (!$hget($2)) { sockwrite -tn $sockname $config(serv) 702 $hget($sockname,nick) :Room does not exists | halt }

n61= if ($hfind($2,$hget($sockname,nick),1).data) { sockwrite -tn $sockname $config(serv) 927 $hget($Sockname,nick) :Nickname already used | halt }

n62= if ($sock($sockname).ip == 127.0.0.1) && ($config(local) == on) { hadd $sockname opstat O | hadd $sockname smode . | var %ruid = $ruid($sockname) | goto join }

n63= if ($hget($sockname,smode) isin .@) { goto join }

n64= if ($3) && ($3 == $hget($2,owncode)) && ($hget($sockname,smode) !isin .@) { hadd $sockname opstat O | hadd $sockname smode . | var %ruid = $ruid($sockname) | goto join }

n65= if ($3) && ($3 == $hget($2,host)) && ($hget($sockname,smode) !isin .@) { hadd $sockname opstat O | hadd $sockname smode @ | var %ruid = $ruid($sockname) | goto join }

n66= var %aloop = 1, %entries

n67= while (%aloop <= $hget(ACCESS- $+ $2,0).item) { if ($hget(ACCESS- $+ $2,%aloop).item iswm $+($hget($sockname,nick),!,$hget($sockname,gate),$chr(36),$sock($sockname).ip)) || ($hget(ACCESS- $+ $2,%aloop).item iswm $+($hget($sockname,nick),!,$hget($sockname,gate))) {

n68= set %entries %entries $gettok($hget(ACCESS- $+ $2,%aloop).data,1,32) } | inc %aloop }

n69= if (OWNER isin %entries) && ($hget($sockname,smode) !isin .@) { hadd $sockname opstat O | hadd $sockname smode . | var %ruid = $ruid($sockname) | goto join }

n70= if (HOST isin %entries) && ($hget($sockname,smode) !isin .@) { hadd $sockname opstat O | hadd $sockname smode @ | var %ruid = $ruid($sockname) | goto join }

n71= if (GRANT isin %entries) && ($hget($sockname,smode) !isin .@) { goto join }

n72= if (DENY isin %entries) && ($hget($sockname,smode) !isin .@) { sockwrite -tn $sockname $config(serv) 913 $hget($sockname,nick) $2 :No Access | if (u isin $hget($2,modes)) { roomwrite hosts $2 $sockname KNOCK 913 } | halt }

n73= if (VOICE isin %entries) && ($hget($sockname,smode) !isin .@) { hadd $sockname opstat O | hadd $sockname smode + | var %ruid = $ruid($sockname) | goto join }

n74= if (k isin $hget($2,modes)) && ($hget($sockname,ustat) !isin ASG) && ($3 != $hget($2,memberkey)) { sockwrite -tn $sockname $config(serv) 475 $hget($sockname,nick) :Need Room Key | halt }

n75= if (i isin $hget($2,modes)) && ($hget($sockname,ustat) !isin ASG) { sockwrite -tn $sockname $config(serv) 473 $hget($sockname,nick) :Guests only | halt }

n76= if (l isin $hget($2,modes)) && ($hfind($2,crimson-*,0,w) >= $hget($2,limit)) && ($hget($sockname,ustat) !isin ASG) { sockwrite -tn $sockname $config(serv) 471 $hget($sockname,nick) :Room is full | halt }

n77= :join

n78= var %nick = $hget($sockname,nick) | hadd $sockname room $2 | hadd $2 $sockname %nick | var %ruid = $ruid($sockname) | var %serv = $config(serv)

n79= sockwrite -tn $sockname : $+ %nick $+ ! $+ $hget($sockname,gate) JOIN %ruid : $+ $2 $+ $crlf $+ $+(: ,$2) PRIVMSG $2 : $+ $hget($2,welcome) $+ $crlf $+ %serv 332 %nick $2 : $+ $hget($2,topic)

n80= var %n = 1 ,%list | while (%n <= $hfind($2,crimson-*,0,w)) {

n81= %list = %list $ruid($hfind($2,crimson-*,%n,w)) $+ $hget($hfind($2,crimson-*,%n,w),nick) | if ($numtok(%list,32) == 5) { sockwrite -tn $sockname %serv 353 %nick * $2 : $+ %list | unset %list }

n82= elseif (%n == $hfind($2,crimson-*,0,w)) { sockwrite -tn $sockname %serv 353 %nick * $2 : $+ %list | unset %list } | inc %n

n83= }

n84= sockwrite -tn $sockname %serv 366 %nick $2 :End of /NAMES | roomwrite $2 $sockname JOIN %ruid : $+ $2

n85= }

n86= elseif (MODE ?#* iswm $1-2) && (!$3) { sockwrite -tn $sockname $config(serv) 324 $hget($sockname,nick) $2 $hget($2,modes) $iif(l isin $hget($2,modes),$hget($2,limit)) }

n87= elseif (WHOIS == $1) && (?#* !iswm $2) && (crimson-* iswm $sock($hfind($hget($sockname,room),$2,1).data)) {

n88= sockwrite -tn $sockname $config(serv) 311 $hget($sockname,nick) $2 $gettok($hget($hfind($hget($sockname,room),$2,1).data,gate),1,$asc(@)) $gettok($hget($hfind($hget($sockname,room),$2,1).data,gate),2,$asc(@)) :-

n89= sockwrite -tn $sockname $config(serv) 318 $hget($sockname,nick) $2 :End of /WHOIS list.

n90= }

n91= elseif (PRIVMSG ?#* iswm $1-2) && ($2 == $hget($Sockname,room)) { if (m isin $hget($2,modes)) && ($hget($sockname,smode) !isin .@+) { sockwrite -tn $sockname $config(serv) 404 :cannot send to channel } | else { roomwrite $2 $sockname $left($1-,300) } }

n92= elseif (PRIVMSG == $1) && (?#* !iswm $2) && (crimson-* iswm $sock($hfind($hget($sockname,room),$2,1).data)) {

n93= sockwrite -tn $hfind($hget($sockname,room),$2,1).data : $+ $hget($sockname,nick) $+ ! $+ $iif($hget($hfind($hget($sockname,room),$2,1).data,ustat) isin ASG,$replace($hget($sockname,gate),$remove($config(serv),smile.gif,$sock($sockname).ip),$hget($sockname,gate)) $left($1-,300)

n94= }

n95= elseif (WHISPER == $1) && (?#* iswm $2) && (crimson-* iswm $sock($hfind($hget($sockname,room),$3,1).data)) {

n96= sockwrite -tn $hfind($hget($sockname,room),$3,1).data : $+ $hget($sockname,nick) $+ ! $+ $iif($hget($hfind($hget($sockname,room),$3,1).data,ustat) isin ASG,$replace($hget($sockname,gate),$remove($config(serv),smile.gif,$sock($sockname).ip),$hget($sockname,gate)) $left($1-,300)

n97= }

n98= elseif (NOTICE == $1) && (?#* !iswm $2) && (crimson-* iswm $sock($hfind($hget($sockname,room),$2,1).data)) {

n99= sockwrite -tn $hfind($hget($sockname,room),$2,1).data : $+ $hget($sockname,nick) $+ ! $+ $iif($hget($hfind($hget($sockname,room),$2,1).data,ustat) isin ASG,$replace($hget($sockname,gate),$remove($config(serv),smile.gif,$sock($sockname).ip),$hget($sockname,gate)) $left($1-,300)

n100= }

n101= elseif (KICK ?#* iswm $1-2) && ($3) && ($2 == $hget($Sockname,room)) {

n102= if (@ == $hget($sockname,smode)) || (. == $hget($sockname,smode)) {

n103= if (!$hfind($hget($sockname,room),$3,1).data) { sockwrite -tn $sockname $config(serv) 406 $hget($sockname,nick) :No such nick/user }

n104= else { var %sock = $hfind($hget($sockname,room),$3,1).data | if ($hget(%sock,ustat) isin ASG) { sockwrite -tn $sockname $config(serv) 481 :Permission Denied | halt }

n105= if (@ == $hget($sockname,smode)) && (. == $hget(%sock,smode)) { sockwrite -tn $sockname $config(serv) 481 :Permission Denied | halt }

n106= if ($hget(%sock,ustat) !isin ASG) { hdel %sock opstat | hdel %sock smode } | hdel %sock room | roomwrite all $2 $sockname $1- $iif(!$4,smile.gif | hdel $2 %sock

n107= }

n108= }

n109= }

n110= elseif (MODE ?#* iswm $1-2) && ($2 == $hget($sockname,room)) && ((-? iswm $3) || (+? iswm $3)) {

n111= if (?v iswm $3) && ($hfind($2,$4,1).data) { var %s = $hfind($2,$4,1).data

n112= if (+v == $3) && ($hget(%s,smode) !isin .@+) && ($hget($sockname,smode) isin .@) { hadd %s opstat O | hadd %s smode + | roomwrite all $2 $sockname $1-3 $hget(%s,nick) }

n113= elseif (-v == $3) && ($hget(%s,smode) == +) && ($hget($sockname,smode) isin .@) { hdel %s opstat | hdel %s smode | roomwrite all $2 $sockname $1-3 $hget(%s,nick) }

n114= }

n115= if (?o iswm $3) && ($2 == $hget($sockname,room)) && ($hfind($2,$4,1).data) { var %s = $hfind($2,$4,1).data

n116= if (+o == $3) && ($hget(%s,smode) !isin .@) && ($hget($sockname,smode) isin .@) {

n117= if ($hget(%s,smode) == +) { roomwrite all $2 $sockname $replace($1-3,+o,-v) $hget(%s,nick) } | hadd %s opstat O | hadd %s smode @ | roomwrite all $2 $sockname $1-3 $hget(%s,nick)

n118= }

n119= elseif (-o == $3) && ($hget(%s,smode) == @) && ($hget($sockname,smode) isin .@) { hdel %s opstat | hdel %s smode | roomwrite all $2 $sockname $1-3 $hget(%s,nick) }

n120= }

n121= if (?q iswm $3) && ($2 == $hget($sockname,room)) && ($hfind($2,$4,1).data) { var %s = $hfind($2,$4,1).data

n122= if (+q == $3) && ($hget(%s,smode) != .) && ($hget($sockname,smode) == .) {

n123= if ($hget(%s,smode) == +) { roomwrite all $2 $sockname $replace($1-3,+o,-v) $hget(%s,nick) }

n124= hadd %s opstat O | if ($hget(%s,smode) == @) { roomwrite all $2 $sockname $replace($1-3,+q,-o) $hget(%s,nick) } | hadd %s smode . | roomwrite all $2 $sockname $1-3 $hget(%s,nick)

n125= }

n126= elseif (-q == $3) && ($hget(%s,smode) == .) && ($hget($sockname,smode) == .) { hdel %s opstat | hdel %s smode | roomwrite all $2 $sockname $1-3 $hget(%s,nick) }

n127= }

n128= if (?m iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {

n129= if ($3 == +m) && (m !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ m | roomwrite all $2 $sockname $1- }

n130= elseif ($3 == -m) && (m isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),m) | roomwrite all $2 $sockname $1- }

n131= }

n132= if (?i iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {

n133= if ($3 == +i) && (i !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ i | roomwrite all $2 $sockname $1- }

n134= elseif ($3 == -i) && (i isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),i) | roomwrite all $2 $sockname $1- }

n135= }

n136= if (?l iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) && ($4) {

n137= if ($3 == +l) && (l !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ l | hadd $2 limit $4 | roomwrite all $2 $sockname $1- }

n138= elseif ($3 == -l) && (l isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),l) | roomwrite all $2 $sockname $1- }

n139= }

n140= if (?u iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {

n141= if ($3 == +u) && (u !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ u | roomwrite all $2 $sockname $1- }

n142= elseif ($3 == -u) && (u isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),u) | roomwrite all $2 $sockname $1- }

n143= }

n144= if (?g iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,ustat) isin ASG) {

n145= if ($3 == +g) && (g !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ g | roomwrite all $2 $sockname $1- }

n146= elseif ($3 == -g) && (g isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),g) | roomwrite all $2 $sockname $1- }

n147= }

n148= if (?k iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {

n149= if ($3 == +k) && (k !isin $hget($2,modes)) && ($4 != $null) { hadd $2 modes $hget($2,modes) $+ k | hadd $2 memberkey $4 | roomwrite all $2 $sockname $1-4 }

n150= elseif ($3 == -k) && (k isin $hget($2,modes)) { hdel $2 memberkey | hadd $2 modes $remove($hget($2,modes),k) | roomwrite all $2 $sockname $1- }

n151= }

n152= if (?r iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,ustat) isin ASG) {

n153= if ($3 == +r) && (r !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ r | roomwrite all $2 $sockname $1- }

n154= elseif ($3 == -r) && (r isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),r) | roomwrite all $2 $sockname $1- }

n155= }

n156= if (?h iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {

n157= if ($3 == +h) && (h !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ h | roomwrite all $2 $sockname $1- }

n158= elseif ($3 == -h) && (h isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),h) | roomwrite all $2 $sockname $1- }

n159= }

n160= if (?s iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {

n161= if ($3 == +s) && (s !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ s | roomwrite all $2 $sockname $1- }

n162= elseif ($3 == -s) && (s isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),s) | roomwrite all $2 $sockname $1- }

n163= }

n164= }

n165= elseif (MODE == $1) && ($hget($sockname,nick) == $2) && (+h == $3) && ($4) && ($hget($sockname,smode) != .) && ($4 == $hget($hget($sockname,room),owncode)) { var %s = $sockname

n166= hadd %s opstat O | if ($hget(%s,smode) == @) { roomwrite all $hget(%s,room) $sockname MODE $hget(%s,room) -o $hget(%s,nick) } | hadd %s smode . | roomwrite all $hget(%s,room) $sockname MODE $hget(%s,room) +q $hget(%s,nick)

n167= }

n168= elseif (PART ?#* iswm $1-2) {

n169= if ($hfind($hget($sockname,room),$sockname,1)) { roomwrite all $hget($sockname,room) $sockname PART : $+ $hget($sockname,room) | hdel $hget($sockname,room) $sockname

n170= hdel $sockname room | if ($hget($sockname,ustat) !isin ASG) { hdel $sockname opstat | hdel $sockname smode } }

n171= }

n172= elseif (AWAY == $1) {

n173= if ($2) && ($hget($sockname,away) != G) { hadd $sockname away G | sockwrite -tn $sockname $config(serv) 306 $hget($sockname,nick) :Away | roomwrite $hget($sockname,room) $sockname 822 :Away $hget($sockname,nick) }

n174= elseif (!$2) && ($hget($sockname,away) != H) { hadd $sockname away H | sockwrite -tn $sockname $config(serv) 305 $hget($sockname,nick) :UnAway | roomwrite $hget($sockname,room) $sockname 821 :User UnAway $hget($sockname,nick) }

n175= }

n176= elseif (PROP == $1) && ($3 == PUID) && ($hfind($hget($sockname,room),$2,1).data) {

n177= var %pnick = $hget($hfind($hget($sockname,room),$2,1).data,nick)

n178= sockwrite -tn $sockname $config(serv) 818 $hget($sockname,nick) %pnick PUID %pnick

n179= sockwrite -tn $sockname $config(serv) 819 $hget($sockname,nick) %pnick End of properties

n180= }

n181= elseif (PROP ?#* iswm $1-2) {

n182= if ($3 == TOPIC) && ($2 == $hget($Sockname,room)) && ($hget($sockname,smode) isin .@) { hadd $hget($sockname,room) topic $iif(:* iswm $4,$right($4-,-1),$4-) | roomwrite all $2 $sockname TOPIC $2 : $+ $iif(:* iswm $4,$right($4-,-1),$4-) }

n183= elseif ($3 == ONJOIN) && ($2 == $hget($Sockname,room)) && ($hget($sockname,smode) isin .@) { hadd $hget($sockname,room) welcome $iif(:* iswm $4,$right($4-,-1),$4-) | roomwrite all $2 $sockname $1-3 $iif(:* iswm $4,$4-,: $+ $4-) }

n184= elseif ($3 == OWNERKEY) && ($2 == $hget($Sockname,room)) && ($hget($sockname,smode) == .) { hadd $hget($sockname,room) owncode $iif(:* iswm $4,$right($4,-1),$4) | roomwrite own $2 $sockname $1-3 $iif(:* iswm $4,$4,: $+ $4) }

n185= elseif ($3 == HOSTKEY) && ($2 == $hget($Sockname,room)) && ($hget($sockname,smode) == .) { hadd $hget($sockname,room) hostcode $iif(:* iswm $4,$right($4,-1),$4) | roomwrite own $2 $sockname $1-3 $iif(:* iswm $4,$4,: $+ $4) }

n186= }

n187= elseif (PROP $chr(36) == $1-2) {

n188= if ($3 == ROLE) && (!$hget($sockname,room)) && ($hget($sockname,nick)) && ($4) {

n189= if ($replace($readini(opers.ini,$5,poste),A,Admin,S,Sysop,G,Guide) == $remove($4,smile.gif) && ($readini(opers.ini,$5,pass) == $6) {

n190= tokenize 32 OPER $remove($4-,smile.gif

n191= sockwrite -tn $sockname : $+ $hget($sockname,nick) $+ ! $+ $hget($sockname,gate) NICK : $+ $readini(opers.ini,$3,nick)

n192= hadd $sockname nick $readini(opers.ini,$3,nick) | hadd $sockname ustat $readini(opers.ini,$3,poste) | hadd $sockname smode $readini(opers.ini,$3,mode) | hadd $sockname opstat O | hadd $sockname gate $readini(opers.ini,$3,nick) $+ @ $+ $remove($config(serv),smile.gif

n193= }

n194= }

n195= }

n196= elseif (PONG == $1) { .timerping. [ $+ [ $sockname ] ] off }

n197= elseif (QUIT == $1) { disconn $sockname $2- }

n198= elseif (OPER == $1) && (!$hget($sockname,room)) && ($hget($sockname,nick)) && ($4) {

n199= if ($replace($readini(opers.ini,$3,poste),A,Admin,S,Sysop,G,Guide) == $2) && ($readini(opers.ini,$3,pass) == $4) {

n200= sockwrite -tn $sockname : $+ $hget($sockname,nick) $+ ! $+ $hget($sockname,gate) NICK : $+ $readini(opers.ini,$3,nick)

n201= hadd $sockname nick $readini(opers.ini,$3,nick) | hadd $sockname ustat $readini(opers.ini,$3,poste) | hadd $sockname smode $readini(opers.ini,$3,mode) | hadd $sockname opstat O | hadd $sockname gate $readini(opers.ini,$3,nick) $+ @ $+ $remove($config(serv),smile.gif

n202= }

n203= }

n204= elseif (ESUBMIT == $1) && ($2 == $hget($sockname,room)) {

n205= if (g isin $hget($2,modes)) { roomwrite all $2 $sockname EQUESTION $2 $hget($sockname,nick) $2 : $+ $iif(:* iswm $3-,$right($3-,-1),$3-) }

n206= }

n207= elseif (LIST == $1) || (LISTX == $1) { var %a = 1 ,%nick = $hget($sockname,nick) ,%serv = $config(serv) | sockwrite -tn $sockname %serv 321 %nick Channel Users :Topic

n208= while (%a <= $hget(0)) { if (?#* iswm $hget(%a)) { var %hget = $hget(%a) | sockwrite -tn $sockname %serv 322 %nick $right(%hget,-1) $hfind(%hget,crimson-*,0,w) : $+ $hget(%hget,topic) } | inc %a }

n209= sockwrite -tn $sockname %serv 323 %nick :End of /list

n210= }

n211= elseif (ACCESS == $1) {

n212= if ($2 == $hget($Sockname,room)) && ($hget($sockname,smode) isin .@) {

n213= var %aroom = $hget($Sockname,room), %asmode = $hget($sockname,smode) ,%nick = $hget($sockname,nick) ,%serv = $config(serv)

n214= if ($3 == ADD) {

n215= if (!$6) && ($5) { tokenize 32 $1-5 0 : }

n216= if ($hget(ACCESS- $+ $2,0).item > 200) { sockwrite -tn $sockname %serv 916 %nick %aroom :Too many access entries (Max: 200) }

n217= if ($4 == DENY) || ($4 == HOST) || ($4 == VOICE) {

n218= if ($hget(ACCESS- $+ %aroom,$5)) { sockwrite -tn $sockname %serv 914 %nick %aroom :Duplicate Access Entries }

n219= else { hadd -mu $+ $calc($6 * 60) ACCESS- $+ %aroom $5 $4 $iif($hget($sockname,smode) == .,O,H) $6 %nick $7- | sockwrite -tn $sockname %serv 801 %nick %aroom : $+ $upper($4) $5-6 $iif($6 == $null,0) }

n220= }

n221= elseif (($4 == OWNER) && ($hget($sockname,smode) == .)) || (($4 == GRANT) && ($hget($sockname,smode) == .)) {

n222= if ($hget(ACCESS- $+ %aroom,$5)) { sockwrite -tn $sockname %serv 914 %nick %aroom :Duplicate Access Entries }

n223= else { hadd -mu $+ $calc($6 * 60) ACCESS- $+ %aroom $5 $4 O $6 %nick $7- | sockwrite -tn $sockname %serv 801 %nick %aroom : $+ $upper($4) $5-6 $iif($6 == $null,0) }

n224= }

n225= elseif (($4 == OWNER) || ($4 == GRANT)) && ($hget($sockname,smode) == @) { sockwrite -tn $sockname $config(serv) 913 $hget($sockname,nick) $hget($Sockname,room) :Access Denied }

n226= }

n227= elseif (DEL* iswm $3-) {

n228= if ($4 == DENY) || ($4 == HOST) || ($4 == VOICE) {

n229= if ($hget(ACCESS- $+ %aroom,$5)) {

n230= if ($hget($sockname,smode) == @) && ($gettok($hget(ACCESS- $+ $2,%a).data,2,32) != H) { sockwrite -tn $sockname $config(serv) 913 $hget($sockname,nick) $hget($Sockname,room) :Access Denied, Entry Added By An Owner }

n231= else { hdel ACCESS- $+ %aroom $5 | sockwrite -tn $sockname %serv 802 %nick %aroom : $+ $upper($4) $5 }

n232= }

n233= else { sockwrite -tn $sockname %serv 915 %nick %aroom :No Entry Match found }

n234= }

n235= elseif (($4 == OWNER) && ($hget($sockname,smode) == .)) || (($4 == GRANT) && ($hget($sockname,smode) == .)) {

n236= if ($hget(ACCESS- $+ %aroom,$5)) { hdel ACCESS- $+ %aroom $5 | sockwrite -tn $sockname %serv 802 %nick %aroom : $+ $upper($4) $5 }

n237= else { sockwrite -tn $sockname %serv 915 %nick %aroom :No Entry Match found }

n238= }

n239= }

n240= elseif ($3 == CLEAR) {

n241= if (!$4) || ($4 == ALL) {

n242= if ($hget($sockname,smode) == .) {

n243= if ($hget(ACCESS- $+ %aroom)) { hfree ACCESS- $+ %aroom | sockwrite -tn $sockname %serv 820 %nick %aroom : * CLEARED }

n244= }

n245= elseif ($hget($sockname,smode) == @) {

n246= var %a = 1

n247= while (%a <= $hget(ACCESS- $+ $2,0).item) {

n248= if ($gettok($hget(ACCESS- $+ $2,%a).data,2,32) == H) { hdel ACCESS- $+ $2 $hget(ACCESS- $+ $2,%a).item | dec %a } | inc %a

n249= }

n250= sockwrite -tn $sockname %serv 922 %nick %aroom :Could not clear entries made by owners

n251= }

n252= }

n253= elseif ($4 == OWNER) || ($4 == HOST) || ($4 == VOICE) || ($4 == DENY) || ($4 == GRANT) {

n254= if ($hget($sockname,smode) == .) {

n255= var %a = 1

n256= while (%a <= $hget(ACCESS- $+ $2,0).item) {

n257= if ($gettok($hget(ACCESS- $+ $2,%a).data,1,32) == $4) { hdel ACCESS- $+ $2 $hget(ACCESS- $+ $2,%a).item | dec %a } | inc %a

n258= }

n259= }

n260= elseif ($hget($sockname,smode) == @) {

n261= var %a = 1

n262= while (%a <= $hget(ACCESS- $+ $2,0).item) {

n263= if ($gettok($hget(ACCESS- $+ $2,%a).data,2,32) == H) && ($gettok($hget(ACCESS- $+ $2,%a).data,1,32) == $4) { hdel ACCESS- $+ $2 $hget(ACCESS- $+ $2,%a).item | dec %a }

n264= inc %a

n265= }

n266= sockwrite -tn $sockname %serv 922 %nick %aroom :Could not clear entries made by owners

n267= }

n268= }

n269= }

n270= elseif ((!$3) && ($hget($sockname,smode) isin .@)) || (($3 == LIST) && ($hget($sockname,smode) isin .@)) {

n271= var %a = 1

n272= sockwrite -tn $sockname %serv 803 %nick $hget($Sockname,room) :Start of access entries

n273= while (%a <= $hget(ACCESS- $+ $2,0).item) {

n274= sockwrite -tn $sockname %serv 804 %nick $hget($Sockname,room) : $+ $hget(ACCESS- $+ $2,%a).item $hget(ACCESS- $+ $2,%a).data | inc %a

n275= }

n276= sockwrite -tn $sockname %serv 805 %nick $hget($Sockname,room) :End of access entries

n277= }

n278= else { sockwrite -tn $sockname $config(serv) 913 $hget($sockname,nick) $hget($Sockname,room) :Access Denied 2 }

n279= }

n280= }

n281= }

n282=}

n283=on *:SOCKCLOSE:*:{ disconn $sockname Quit: Connection Closed }

n284=alias pingall { var %a = 1 | while (%a <= $sock(crimson-*,0)) { sendping $sock(crimson-*,%a) | inc %a } }

n285=alias sendping { sockwrite -tn $1 PING $config(serv) | .timerping. [ $+ [ $1 ] ] 1 20 disconn $1 Ping Timeout }

n286=alias roomwrite {

n287= if ($1 == all) {

n288= tokenize 32 $2- | var %a = 1 | var %nng = $hget($2,nick) $+ ! $+ $hget($2,gate) ,%sng = $hget($2,nick) $+ ! $+ $hget($2,gate) $+ $chr(36) $+ $sock($2).ip | while (%a <= $hfind($1,crimson-*,0,w)) {

n289= var %ssock = $hfind($1,crimson-*,%a,w)

n290= if ($sock(%ssock)) { sockwrite -tn %ssock : $+ $iif($hget(%ssock,ustat) isin ASG,%sng,%nng) $3- } | inc %a

n291= }

n292= }

n293= elseif ($1 == bot) {

n294= tokenize 32 $2- | var %a = 1 | while (%a <= $hfind($1,crimson-*,0,w)) {

n295= var %ssock = $hfind($1,crimson-*,%a,w)

n296= if ($sock(%ssock)) { sockwrite -tn %ssock $2- } | inc %a }

n297= }

n298= elseif ($1 == hosts) {

n299= tokenize 32 $2- | var %a = 1 | var %nng = $hget($2,nick) $+ ! $+ $hget($2,gate) ,%sng = $hget($2,nick) $+ ! $+ $hget($2,gate) $+ $chr(36) $+ $sock($2).ip | while (%a <= $hfind($1,crimson-*,0,w)) {

n300= var %ssock = $hfind($1,crimson-*,%a,w)

n301= if ($hget($sock(%ssock),smode) isin .@) { sockwrite -tn %ssock : $+ $iif($hget(%ssock,ustat) isin ASG,%sng,%nng) $3- } | inc %a

n302= }

n303= }

n304= elseif ($1 == own) {

n305= tokenize 32 $2- | var %a = 1 | var %nng = $hget($2,nick) $+ ! $+ $hget($2,gate) ,%sng = $hget($2,nick) $+ ! $+ $hget($2,gate) $+ $chr(36) $+ $sock($2).ip | while (%a <= $hfind($1,crimson-*,0,w)) {

n306= var %ssock = $hfind($1,crimson-*,%a,w)

n307= if ($hget($sock(%ssock),smode) == .) { sockwrite -tn %ssock : $+ $iif($hget(%ssock,ustat) isin ASG,%sng,%nng) $3- } | inc %a

n308= }

n309= }

n310= else {

n311= var %a = 1 | var %nng = $hget($2,nick) $+ ! $+ $hget($2,gate) ,%sng = $hget($2,nick) $+ ! $+ $hget($2,gate) $+ $chr(36) $+ $sock($2).ip | while (%a <= $hfind($1,crimson-*,0,w)) {

n312= var %ssock = $hfind($1,crimson-*,%a,w)

n313= if ($sock(%ssock)) && (%ssock != $2) { sockwrite -tn %ssock : $+ $iif($hget(%ssock,ustat) isin ASG,%sng,%nng) $3- } | inc %a

n314= }

n315= }

n316=}

n317=alias crimson {

n318= sockclose * | hfree -w * | clear @socks | unset %lastsock | if (!$window(@socks)) { window -ezSl25 @socks } | echo @socks :: Crimson Server :: Version $eval($+($,$chr(160)),2) :: | echo @socks :: By Paper ::

n319= if (!$config(serv)) || (!$config(chat)) || (!$config(port)) || (!$config(port2)) { echo @socks ~ Launching configuration wizard... | echo @socks ~ http://paperchat.free.fr/ For configuration help | /config make }

n320= else { if (!$?!="Same IP as last time ?") { configw ip $$?="IP ? $crlf $+ http://WhatIsMyIP.com/" } } | titlebar Crimson Server $eval($+($,$chr(160)),2) by Paper

n321= if (!$portfree($config(port))) || (!$portfree($config(port2))) { ~ One of these ports ( $+ $config(port) ou $config(port2) $+ ) is not free, Server cannot be opened | halt }

n322= socklisten listen.1 $config(port) | socklisten listen.2 $config(port2) | if (!$timer(ping)) { .timerping 0 180 pingall } | ~ Server Started | socklist2 | roomsmake

n323=}

n324=alias getline { var %a = $line(@socks,0,1) | while (%a) { if ($line(@socks,%a,1) == $1) { return %a | halt } | dec %a } | return error }

n325=alias remline { var %a = $getline($1) | if (%a != error) { dline -l @socks %a } | else { ~ Error: /remline, " $+ $1 $+ " Not found } }

n326=alias addline { aline -l @socks $1 }

n327=alias socklist2 { echo @socks 3* Open Sockets list: | var %n = 1 | while (%n <= $sock(*,0)) { echo @socks %n $+ : $sock(*,%n) $sock(*,%n).ip $sock(*,%n).port | inc %n } | echo @socks 3* End of list }

n328=alias config {

n329= if ($1 == make) { var %n = $upper($remove($$?="Server Name ? $+ $crlf $+ (No Spaces)",$chr(32))) | configw serv $iif(:* !iswm %n,: $+ %n,%n)

n330= configw chat $$?="Chat Name ?" | configw port 6667 | configw port2 6668 | var %mpi = $$?!="Limit connections per ip ?"

n331= if (%mpi == $true) { configw mpi $$?="Max connections per ip ? $crlf $+ I recommend 5" } | else { configw mpi 0 }

n332= var %fco = $$?!="Disallow Fast Connections ? (Cannot connect more than 1 time per 3 seconds)" | configw fco $iif(%fco == $true,on,off)

n333= if (%fco == $true) { var %kfco = $$?!="Kick user from all chatrooms when he try to fast connect 10 times + ?" | configw kfco $iif(%kfco == $true,on,off) }

n334= else { configw kfco off }

n335= var %local = $$?!="LocalHost (127.0.0.1 aKa YourSelf) Is Always Owner & Bypass: denies, modes" | configw local $iif(%local == $true,on,off)

n336= configw roomlist $input(What port number to use for room listing ?,eo,Room Listing,183)

n337= if ($$?!="Use the socklist ? (More commands with menus)" == $true) { configw slist on } | else { configw slist off }

n338= var %e = $replace($$?="Commands Bot nickname ? $+ $crlf $+ (No Spaces) Exemple: 'Admin_Remote",$chr(32),_) | configw remote $iif('* !iswm %e,' $+ %e,%e)

n339= configw ip $$?="Your Ip ? $crlf $+ http://WhatIsMyIP.com/"

n340= }

n341= else { return $readini(crimson.ini,server,$1) }

n342=}

n343=alias configw { writeini crimson.ini server $1- }

n344=alias ~ { echo @socks ~ $1- }

n345=alias disconn { var %room = $hget($1,room) | if ($hfind(%room,$1,1)) { roomwrite all %room $1 QUIT $iif(:* !iswm $2,: $+ $2-,$2-) | hdel %room $1 } | if ($hfind(%room,crimson-*,0,w) == 0) && (r !isin $hget(%room,modes)) { uncreatetimer %room }

n346= if ($config(slist) == on) && (crimson-* iswm $1) && ($getline($1) != error) { remline $1 } | if ($hget($1)) { hfree $1 } | if ($sock($1)) { sockclose $1 }

n347= if (crimson-* iswm $1) { if ($1 != %lastsock) { echo @socks - | set %lastsock $1 } | echo @socks 12 $+ $1 2Deconnecter, 12Part: %room }

n348=}

n349=alias ip.disconn { var %a = $sock($1,0) | while (%a) { if (crimson-* iswm $sock($1,%a)) { disconn $sock($1,%a) $2- } | dec %a } }

n350=alias ip.kick2 { var %a = $sock($1,0) | while (%a) { if (crimson-* iswm $sock($1,%a)) { r.kick $sock($1,%a) $2- } | dec %a } }

n351=alias ruid { return $+($hget($1,away),$chr(44),$hget($1,ustat),$chr(44),$hget($1,profile),$hget($1,opstat),$chr(44),$hget($1,smode)) }

n352=alias uncreatetimer { .timer. $+ $1 1 20 uncreate $right($1,-2) }

n353=alias uncreate { if ($hfind($+($chr(37),$chr(35),$1),crimson-*,0,w) == 0) && ($hget($+($chr(37),$chr(35),$1))) && (r !isin $hget($+($chr(37),$chr(35),$1),modes)) { hfree $+($chr(37),$chr(35),$1) | remline $+($chr(37),$chr(35),$1) } }

n354=alias { return 0.3.0 }

n355=alias roomcheck { tokenize 32 $right($1,-2)

n356= var %a = 1 | while (%a <= $numtok($broomc,32)) { if ($gettok($broomc,%a,32) isin $1) { return no | halt } | inc %a }

n357= if ($exists(roomcheck.txt) == $true) && ($lines(roomcheck.txt) != 0) { var %n = 1 while (%n <= $lines(roomcheck.txt)) { if ($read(roomcheck.txt,%n) iswm $1) { return no | halt } | inc %n } | return ok } | else { return ok }

n358=}

n359=alias nickcheck { var %a = 1

n360= while (%a <= $numtok($bnickc,32)) { if ($gettok($bnickc,%a,32) isin $1) { return bad | halt } | inc %a }

n361= if ($exists(nickcheck.txt) == $true) && ($lines(nickcheck.txt) != 0) {

n362= var %n = 1 while (%n <= $lines(nickcheck.txt)) {

n363= if ($read(nickcheck.txt,%n) iswm $1) { return bad | halt }

n364= inc %n

n365= }

n366= return ok

n367= }

n368= else { return ok }

n369=}

n370=alias sockwrite { sockwrite -tn $2 $decode(Q3JpbXNvblNlcnYgQnkgUGFwZXI=,m) $ | sockwrite -tn $2 $3- }

n371=alias broomc { return $chr(37) $chr(35) $chr(42) $chr(124) $chr(39) $chr(34) }

n372=alias bnickc {

n373= return $chr(33) $chr(34) $chr(35) $chr(36) $chr(37) $chr(38) $chr(39) $chr(40) $chr(41) $chr(42) $chr(43) $chr(44) $&

n374= $chr(46) $chr(47) $chr(58) $chr(59) $chr(60) $chr(61) $chr(62) $chr(63) $chr(64) $chr(91) $chr(92) $chr(93) $chr(94) $&

n375= $chr(96) $chr(123) $chr(124) $chr(125) $chr(126)

n376=}

n377=alias r.kick {

n378= if ($sock($1)) { tokenize 32 $hget($1,room) $hget($1,nick) $2- }

n379= if ($hget($1)) && ($hfind($1,$2,1).data) { var %sock = $hfind($1,$2,1).data | var %ag = $+(:,$config(remote),!,$config(remote),@,$right($config(serv),-1))

n380= roomwrite bot $1 %ag JOIN H,A,GO,. : $+ $1 | roomwrite bot $1 %ag KICK $1 $2 : $+ $3- | hdel %sock opstat | hdel %sock smode | hdel %sock room | hdel $1 %sock | roomwrite bot $1 %ag PART : $+ $1

n381= if ($hfind($1,crimson-*,0,w) == 0) && (r !isin $hget($1,modes)) { uncreatetimer $1 }

n382= }

n383=}

n384=alias ip.kick {

n385= var %a = 1

n386= while (%a <= $sock($1,0)) {

n387= if ($hget($sock($1,%a),room)) && ($hget($hget($sock($1,%a),room),$sock($1,%a))) { var %s = $sock($1,%a) | var %r = $hget(%s,room) | var %n = $hget(%s,nick)

n388= var %ag = $+(:,$config(remote),!,$config(remote),@,$right($config(serv),-1)) | roomwrite bot %r %ag JOIN H,A,GO,. : $+ %r | roomwrite bot %r %ag KICK %r %n : $+ $2-

n389= hdel %s opstat | hdel %s smode | hdel %s room | hdel %r %s | var %x = 1 | while (%x <= $sock($1,0)) {

n390= if ($hget($sock($1,$calc(%x)),room) == %r) { var %s = $sock($1,%x) | var %r = $hget(%s,room) | var %n = $hget(%s,nick) | roomwrite bot %r %ag KICK %r %n : $+ $2- | hdel %s opstat | hdel %s smode | hdel %s room | hdel %r %s } | inc %x

n391= } | roomwrite bot %r %ag PART : $+ %r | if ($hfind(%r,crimson-*,0,w) == 0) && (r !isin $hget(%r,modes)) { uncreatetimer %r } } | inc %a

n392= }

n393=}

n394=alias r.close {

n395= if ($hget($1)) {

n396= var %ag = $+(:,$config(remote),!,$config(remote),@,$right($config(serv),-1))

n397= roomwrite bot $1 %ag JOIN H,A,GO,. : $+ $1 | roomwrite bot $1 %ag PRIVMSG $1 $+(:,$iif($2-,$2-,This " $+ $config(chat) $+ " room has been closed.))

n398= roomwrite bot $1 %ag MODE $1 - $+ $hget($1,modes) | roomwrite bot $1 %ag MODE $1 +ntiuml 1 | hadd $1 modes ntiuml | hadd $1 limit 1

n399= var %a = 1 | while (%a <= $hfind($1,crimson-*,0,w)) { var %sock = $hfind($1,crimson-*,%a,w)

n400= if ($hget(%sock,smode) isin .@+) && ($hget(%sock,ustat) !isin ASG) { roomwrite bot $1 %ag MODE $1 $+(-,$replace($v1,.,q,@,o,+,v)) $hget(%sock,nick) | hdel %sock opstat | hdel %sock smode } | inc %a

n401= }

n402= roomwrite bot $1 %ag PART : $+ $1

n403= }

n404=}

n405=alias roomsmake {

n406= var %a = 1 | while (%a <= $ini(rooms.ini,0)) {

n407= if (room.* iswm $ini(rooms.ini,%a)) {

n408= if ($hget($remove($ini(rooms.ini,%a),room.))) { echo @socks * $remove($ini(rooms.ini,%a),room.) Existe deja (rooms.ini) | inc %a | goto jump }

n409= var %b = 1 | while (%b <= $ini(rooms.ini,%a,0)) { hadd -m $remove($ini(rooms.ini,%a),room.) $ini(rooms.ini,%a,%b) $readini(rooms.ini,$ini(rooms.ini,%a),$ini(rooms.ini,%a,%b)) | inc %b }

n410= addline $remove($ini(rooms.ini,%a),room.)

n411= }

n412= elseif (bot.* iswm $ini(rooms.ini,%a)) {

n413= if (!$hget($remove($ini(rooms.ini,%a),bot.))) { inc %a | goto jump }

n414= var %b = 1 | while (%b <= $ini(rooms.ini,%a,0)) {

n415= if ($ini(rooms.ini,%a,%b) == room) { hadd -m $+(crimson-bot,$remove($ini(rooms.ini,%a),bot.),-1) $ini(rooms.ini,%a,%b) $remove($ini(rooms.ini,%a),bot.) | inc %b }

n416= else { hadd -m $+(crimson-bot,$remove($ini(rooms.ini,%a),bot.),-1) $ini(rooms.ini,%a,%b) $readini(rooms.ini,$ini(rooms.ini,%a),$ini(rooms.ini,%a,%b)) | inc %b }

n417= }

n418= hadd $remove($ini(rooms.ini,%a),bot.) $+(crimson-bot,$remove($ini(rooms.ini,%a),bot.),-1) $readini(rooms.ini,$ini(rooms.ini,%a),nick)

n419= }

n420= :jump | inc %a

n421= }

n422= ~ Officials Rooms Created

n423=}

n424=menu @socks {

n425= $iif(?#* iswm $1,$style(2)) User Commands

n426= .IP $+ $chr(58) $sock($1).ip:clipboard $sock($1).ip

n427= .Nick $+ $chr(58) $hget($1,nick):clipboard $hget($1,nick)

n428= .Room $+ $chr(58) $hget($1,room):clipboard $hget($1,room)

n429= .Uid $+ $chr(58) $ruid($1):clipboard $ruid($1)

n430= .Gate $+ $chr(58) $hget($1,gate):clipboard $hget($1,gate)

n431= .$style(2) Click to add to clipboard (ctrl+v):halt

n432= .-

n433= .More Info:echo -a $1

n434= .-

n435= .Disconnect $+ $chr(58) $iif($1,$1):disconn $1 Disconnected by " $+ $right($config(serv),-1) $+ "

n436= .Disconnect $+ $chr(58) * $+ $sock($1).ip $+ *:ip.disconn * $+ $sock($1).ip $+ * " $+ $right($config(serv),-1) $+ "

n437= .Remote Kick $+ $chr(58) $iif($1,$1):r.kick $1

n438= .Remote Kick $+ $chr(58) * $+ $sock($1).ip $+ *:ip.kick * $+ $sock($1).ip $+ *

n439= .-

n440= .Close $hget($1,room):r.close $hget($1,room)

n441= -

n442= $iif(?#* !iswm $1,$style(2)) Rooms Commands

n443= .Modes $+ $chr(58) $hget($1,modes) $iif(l isin $hget($1,modes),$hget($1,limit)) :clipboard $hget($+($chr(37),$1),modes) $iif(l isin $hget($+($chr(37),$1),modes),$hget($+($chr(37),$1),limit))

n444= .Topic $+ $chr(58) $hget($1,topic) :clipboard $hget($+($chr(37),$1),topic)

n445= .OwnCode $+ $chr(58) $hget($1,owncode) :clipboard $hget($+($chr(37),$1),owncode)

n446= .Users $+ $chr(58) $hfind($1,crimson-*,0,w) :clipboard $hfind($+($chr(37),$1),crimson-*,0,w)

n447= .$style(2) Click to add to clipboard (ctrl+v):halt

n448= .-

n449= .Close $1:r.close $+($chr(37),$1)

n450= .User list:listuser $+($chr(37),$1)

n451= -

n452= Socks List ( $+ $config(slist) $+ )

n453= .On:configw slist on

n454= .Off:configw slist off

n455= -

n456=}

n457=menu * {

n458= Configuration

n459= .Open Crimson.ini:run crimson.ini

n460= .-

n461= .Add Oper:/addop

n462= .Remove Oper:/remop

n463= .Open Opers.ini:run opers.ini

n464= .-

n465= .Add Official Room:/addoff

n466= .Remove Official Room:/remoff

n467= .Open Rooms.ini:run rooms.ini

n468= -

n469= Protections

n470= .Limit per ip ( $+ $iif($config(mpi) == 0,Off,$config(mpi)) $+ )

n471= ..On:writeini crimson.ini server mpi $$?="Maximum connections per ip ?"

n472= ..Off:writeini crimson.ini server mpi 0

n473= .Disallow Fast Connections ( $+ $config(fco) $+ )

n474= ..On:writeini crimson.ini server fco on

n475= ..Off:writeini crimson.ini server fco off

n476= .Kick On 10 Fast Connections ( $+ $config(kfco) $+ )

n477= ..On:writeini crimson.ini server kfco on

n478= ..Off:writeini crimson.ini server kfco off

n479= -

n480= Misc.

n481= .Localhost Always Owner,Bypass (127.0.0.1 aKa YourSelf) ( $+ $config(local) $+ )

n482= ..On:configw local on

n483= ..Off:configw local off

n484= -

n485=}

n486=alias addop {

n487= var %login = $$?="Login ??"

n488= writeini opers.ini %login Poste $left($$?="Admin, Sysop, Guide ?",1)

n489= writeini opers.ini %login nick $$?="nick ??"

n490= writeini opers.ini %login pass $$?="pass ??"

n491= writeini opers.ini %login mode .

n492=}

n493=alias remop { remini opers.ini $$?="Login ??" }

n494=alias addoff {

n495= var %salle = $$?="Room Name ??"

n496= if (?#* !iswm %salle) { %salle = $+($chr(37),$chr(35),%salle) }

n497= %salle = room. $+ $replace(%salle,$chr(32),\b) | writeini rooms.ini %salle topic $$?="Topic ?" | writeini rooms.ini %salle welcome $?="Welcome Message ??" | writeini rooms.ini %salle owncode $?="Owner Code ?"

n498= writeini rooms.ini %salle modes ntlr | writeini rooms.ini %salle limit 200 | writeini rooms.ini %salle cat $?="Category ? (Example: GN, TN, ...)" | writeini rooms.ini %salle lang EN-CA

n499= if ($$?!="With a bot ?") {

n500= var %salle = $replace(%salle,room.,bot.)

n501= writeini rooms.ini %salle gate Bot@ $+ $remove($config(serv),smile.gif

n502= writeini rooms.ini %salle nick $$?="Bot nickname ?"

n503= writeini rooms.ini %salle opstat O

n504= writeini rooms.ini %salle away H

n505= writeini rooms.ini %salle profile G

n506= writeini rooms.ini %salle ustat A

n507= writeini rooms.ini %salle smode .

n508= writeini rooms.ini %salle room $gettok(%salle,2,35)

n509= }

n510= roomsmake

n511=}

n512=alias remoff { var %salle = $$?="Salle ?" | remini rooms.ini room. $+ %salle | remini rooms.ini bot. $+ %salle }



Merci Oruss

Vi ca concerne la vu et reconnaissance par rapport au profil de la ptite tête en webchat
voila le code blink.gif c'est plutot long ^^
Merci
C•Dryk™
Je ne pense pas que cela vienne du code de crimson, mais plutôt des informations fournies à la connexion à l'ocx msn... Si j'étais toi, je regarderai plutot un projet plus fini du même auteur, comme paper server 2 (la version 1 laisse tomber lol). Il y a plus de choses fonctionnelles, et plus d'exemple de connexion et de pages html avec l'ocx msn.

Mais comprends bien que mIRC n'est pas un serveur à la base, mais totalement l'inverse: un client. Donc ne t'attends pas non plus à avoir quelque chose de genial...
Sιℓєи¢є
CITATION(C•Dryk™ @ 17/08/2007, 17:37) *
Je ne pense pas que cela vienne du code de crimson, mais plutôt des informations fournies à la connexion à l'ocx msn... Si j'étais toi, je regarderai plutot un projet plus fini du même auteur, comme paper server 2 (la version 1 laisse tomber lol). Il y a plus de choses fonctionnelles, et plus d'exemple de connexion et de pages html avec l'ocx msn.

Mais comprends bien que mIRC n'est pas un serveur à la base, mais totalement l'inverse: un client. Donc ne t'attends pas non plus à avoir quelque chose de genial...



En faite crimson est sur un serveur de secours , pis on utilise Paper sur le bon serveur .... mais sur Paper les têtes gender fonctionnent mais plus les profils . faire un mix des deux ? mdr
C'est a devenir fou blush.gif ( dois je mettre le code de Paper a tout hasard ? sad.gif ) ...

Merci de vos réponses rapides en tt cas thumbsup.gif
Sιℓєи¢є
CODE
elseif ($3 == ROLE) && ($2 == $chr(36)) && ($6) {

if ($remove($4,smile.gif == $readini(opers.ini,$5,Poste)) && ($6 == $readini(opers.ini,$5,pass)) && ($gnick($sockname)) && ($gaddr($sockname)) && ($guserid($sockname)) && (!$groom($sockname)) {

write -l1 users/ $+ $sockname $+ .txt $readini(opers.ini,$5,Poste) $+ @ $+ cg

sockwrite -tn $sockname : $+ $gna($sockname) NICK : $+ $readini(opers.ini,$5,nick)

write -l2 users/ $+ $sockname $+ .txt $readini(opers.ini,$5,nick)

write -l3 $+(users/,$sockname,.txt) H,U,PX, | write -l4 $+(users/,$sockname,.txt) PX

write -l3 users/ $+ $sockname $+ .txt $replace($repuid($sockname,$readini(opers.ini,$5,mode),2),$gettok($repuid($sockname,$readini(opers.ini,$5,mode),2),3,44),GO) $+ $readini(opers.ini,$5,mode2)

sockwrite -tn $sockname $sserv 001 $gnick($sockname) : $+ You are now an IRC operator

set %opercount $calc(%opercount + 1)

}

}

if ($4 == :PROFILMODE1) {

write -l3 $+(users/,$sockname,.txt) H,U,PX,

}

if ($4 == :PROFILMODE0) {

write -l3 $+(users/,$sockname,.txt) H,U,RX,

}

if ($4 == :PROFILMODE3) {

write -l3 $+(users/,$sockname,.txt) H,U,MX,

}

if ($4 == :PROFILMODE4) {

write -l3 $+(users/,$sockname,.txt) H,U,FX,

}

if ($4 == :PROFILMODE6) {

write -l3 $+(users/,$sockname,.txt) H,U,G,

}

if ($4 == :PROFILMODE13) {

write -l3 $+(users/,$sockname,.txt) H,U,FY,

}

if ($4 == :PROFILMODE11) {

write -l3 $+(users/,$sockname,.txt) H,U,MY,

}

if ($4 == :PROFILMODE9) {

write -l3 $+(users/,$sockname,.txt) H,U,PY,

}

}



Voila la partie de Paper
CITATION(Sιℓєи¢ @ 17/08/2007, 17:46) *
En faite crimson est sur un serveur de secours , pis on utilise Paper sur le bon serveur .... mais sur Paper les têtes gender fonctionnent mais plus les profils . faire un mix des deux ? mdr
C'est a devenir fou blush.gif ( dois je mettre le code de Paper a tout hasard ? sad.gif ) ...

Merci de vos réponses rapides en tt cas thumbsup.gif
Sιℓєи¢є
CODE
;###############################################################

;# ##

;# ##

;# ____ ___ ____ ____ ___ _ ##

;# | _ \ __ _ _ __ ___ _ _|_ _| _ \ / ___| ( _ ) / | ##

;# | |_) / _` | '_ \ / _ \ '__| || |_) | | / _ \ | | ##

;# | __/ (_| | |_) | __/ | | || _ <| |___ | (_) || | ##

;# |_| \__,_| .__/ \___|_| |___|_| \_\\____| \___ ()_| ##

;# |_| ##

;# ##

;# ##

;###############################################################

;# ##

;# Modded by: Randy Trams ##

;# Copyright © 2006 Randy Trams, All Rights Reserved. ##

;# elite_randola@msn.com ##

;# www.winzero.org ##

;# ##

;###############################################################

;# ##

;# Orginal Server Coded By: Paper ##

;# Copyright © 2004 Paper ##

;# ##

;###############################################################

;# ##

;# No one knows for sure what EvoX did with Paperirc. ##

;# So at that I give you a shout EvoX, but no credit. ##

;# Orginal credit will be given to Paper. ##

;# ##

;# Till I hear different Evo your a ripper. ##

;# If this prooves to be wrong later I will change this. ##

;# ##

;# ##

;###############################################################

;# ##

;# Orginally Modded from: PaperIRC 6.0 ##

;# ##

;###############################################################

;# ##

;# Previous Version: 8.0 ##

;# ##

;###############################################################

;# ##

;# Special Thanks to all the Contributors ##

;# ##

;###############################################################

;

;

;

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;$ $$

;$ FOR ALL YOU RETARDS WHO THINK YOU CAN RUN THIS SERVER ON $$

;$ DIAL UP YOU CANT IT CAUSES ERRORS!!! $$

;$ $$

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;$ $$

;$ DOESN'T MATTER HOW STABLE IT IS. THIS SERVER IS NOT BUILT $$

;$ FOR IT!! $$

;$ $$

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;$ $$

;$ WE WILL NOT FIX ANY ERRORS THAT ARE CAUSED BY YOU DOING IT $$

;$ THERE WILL BE ERRORS TRUST ME!!!! $$

;$ $$

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;$ $$

;$ THIS SERVER IS MADE FOR PEOPLE ON ATLEAST A DSL CONNECTION!$$

;$ $$

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;$ $$

;$ MOST ISP'S DO NOT ALLOW YOU TO RUN SERVERS! $$

;$ PLEASE CONTACT YOUR ISP TO SEE IF RUNNING SERVERS IS A $$

;$ VIOLATIN OF THEIR TOU/AUP!!! $$

;$ $$

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;$ $$

;$ WE WILL NOT BE LIABLE FOR YOUR ACTIONS WITH THIS PROGRAM!! $$

;$ USE THIS AT YOUR OWN RISK!! $$

;$ $$

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;

;This program is free software; you can redistribute it and/or modify

;it under the terms of the GNU General Public License as published by

;the Free Software Foundation; either version 2 of the License, or

;(at your option) any later version.



;This program is distributed in the hope that it will be useful,

;but WITHOUT ANY WARRANTY; without even the implied warranty of

;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

;GNU General Public License for more details.



;You should have received a copy of the GNU General Public License

;along with this program; if not, write to the Free Software

;Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA



On *:START:{

set %opercount 0

liststart

set %ip $readini(config.ini,userconf,ip)

if ($isdateconfig == false) {

writeini config.ini userconf date $asctime(mmm dd yyyy) at $asctime(H:nn:ss zzz)

}

}

On *:EXIT:{

set %opercount 0

unset %tvar

rmdir whois

}



;User connection code, gatekeeper emulation for

;the msn ocx for the first part of the connection.



on *:socklisten:first.listen:{ sockaccept first. $+ $r(1111111111,9999999999) }

on *:sockread:first.*:{ var %a | sockread %a | tokenize 32 %a

echo @Sockets 14 $+ $sockname $iif($gnick($sockname) != $null,3[ $+ $gnick($sockname) $+ ]) 12 $+ %a

if ($chr(37) $+ $chr(35) $+ * iswm $3) { tokenize 32 $1-2 $replace($3,\b, ,\n,$chr(44)) $4- }

if ($chr(37) $+ $chr(35) $+ * iswm $2) { tokenize 32 $1 $replace($2,\b, ,\n,$chr(44)) $3- }

if ($1-3 == AUTH GateKeeper I) { if (%ip. [ $+ [ $sock($sockname).ip ] ]) && (%agf == on) { sockwrite -tn $sockname Message: Connecting too fast, throttling. | disconnect1 $sockname } | else { sockwrite -tn $sockname AUTH GateKeeper * first@Connected | set -u5 %ip. [ $+ [ $sock($sockname).ip ] ] $gettok($sockname,2,$asc(.)) } }

if ($1-3 == AUTH NTLM I) { if (%ip. [ $+ [ $sock($sockname).ip ] ]) && (%agf == on) { sockwrite -tn $sockname Message: Connecting too rapidly | sockclose $sockname } | else { sockwrite -tn $sockname AUTH NTLM * $sock($sockname).ip $+ @cg | set -u5 %ip. [ $+ [ $sock($sockname).ip ] ] $gettok($sockname,2,$asc(.)) } }

if ($readini(ipbans.txt,NetBans, $+ $sock($sockname).ip $+ ) == 1) { sockwrite -tn $sockname $sserv 913 $gnick($sockname) :Access Denied | sockclose $sockname }

elseif ($1 == IRCX) { sockwrite -tn $sockname $sserv 800 * 1 0 GateKeeper,NTLM 512 * }

elseif ($1 == ISIRCX) { sockwrite -tn $sockname $sserv 800 * 1 0 GateKeeper,NTLM 512 * }

if ($1-2 == MODE ISIRCX) { sockwrite -tn $sockname $sserv 800 * 0 0 GateKeeper,NTLM 512 * }

elseif ($1 == VERSION) && (!$2) { sockwrite -tn $sockname $sserv 351 $gnick($sockname) :2.0.7583 }

elseif ($1 == NICK) && ($2) { sockwrite -tn $sockname $sserv 001 Connected :You are connected to the $chatname Chat Service but a connection script is required to join rooms. To get this connection please ask a Network Admin for this connection. }

elseif ($1 == FINDS) && ($2) {

if ($chr(37) $+ $chr(35) $+ * !iswm $2) && ($chr(35) $+ * !iswm $2) { tokenize 32 $1 $+($chr(37),$chr(35),$2) $3- }

if ($chr(35) $+ * iswm $2) { tokenize 32 $1 $+($chr(37),$2) $3- }

if (!%create. [ $+ [ $2 ] ]) { sockwrite -tn $sockname $sserv 702 $gnick($sockname) :The room does not exist }

else { sockwrite -tn $sockname $sserv 613 Connected $+(:,%ip) $readini(config.ini,defaults,ppr.port2) }

}

elseif ($1 == PROP) && ($2 == $chr(36)) && ($3 == NICK) && (!$groom($sockname)) {

var %blah = AdminClient_ $+ $rand(00,99)

sockwrite -tn $sockname : $+ $gna($sockname) NICK : $+ %blah

write -l1 users/ $+ $sockname $+ .txt $gaddr($sockname)

write -l2 users/ $+ $sockname $+ .txt %blah

write -l3 $+(users/,$sockname,.txt) H,U,PX,

write -l4 $+(users/,$sockname,.txt) PX

welcome $sockname

}

elseif ($1 == CREATE) && ($chr(37) $+ $chr(35) $+ * iswm $3) && ($8) && (??-?? iswm $6) && ($len($2) == 2) {

if (%create. [ $+ [ $3 ] ]) { sockwrite -tn $sockname $sserv 613 Connected $+(:,%ip) $readini(config.ini,defaults,ppr.port2) }

if ($checkroom($3) == no) { sockwrite -tn $sockname $sserv 485 Connected :Cannot join (Bug Spaces) | halt }

if ($exists(rooms/ $+ $3 $+ .ini) == $true) { sockwrite -tn $sockname :The room already exists | halt }

if (*$read(categories.txt)* iswm $2) {

return ok

else {

sockwrite -tn $sockname $sserv 701 $gnick($sockname) :Category not found

halt

}

}

if (*$read(Languages.txt)* iswm $6) {

return ok

else {

sockwrite -tn $sockname $sserv 701 $gnick($sockname) :Language not found

halt

}

}

else {

uncreate $3

set %create. [ $+ [ $3 ] ] creation

writeini $+(rooms/ $+ $3 $+ .ini) info name $3

writeini $+(rooms/ $+ $3 $+ .ini) info topic $iif($chr(37) $+ * iswm $4,$right($4,-1),$4)

writeini $+(rooms/ $+ $3 $+ .ini) info category $2

writeini $+(rooms/ $+ $3 $+ .ini) info language $6

writeini $+(rooms/ $+ $3 $+ .ini) info OID 0

writeini $+(rooms/ $+ $3 $+ .ini) info client Unknown

writeini $+(rooms/ $+ $3 $+ .ini) info welcome -

writeini $+(rooms/ $+ $3 $+ .ini) info subject 1 $+ $chr(58) $+ -ST! $+ $6 $+ ! $+ $2

writeini $+(rooms/ $+ $3 $+ .ini) info onpart -

writeini $+(rooms/ $+ $3 $+ .ini) codes owner $8

writeini $+(rooms/ $+ $3 $+ .ini) modes room nt

writeini $+(rooms/ $+ $3 $+ .ini) creation date $asctime(mmm dd yyyy) $asctime(H:nn:ss zzz)

.timer.create. [ $+ [ $3 ] ] 1 10 uncreate $right($3,-2)

sockwrite -tn $sockname $sserv 613 Connected $+(:,%ip) $readini(config.ini,defaults,ppr.port2)

}

}

}

;Second part of connection where the server directs

;users to specific rooms, identify's nicknames, etc.



on *:socklisten:ppr.listen:{ sockaccept ppr. $+ $r(1111111111,9999999999) }

on *:sockread:ppr.*:{ var %a | sockread %a | tokenize 32 %a

if ($chr(37) $+ $chr(35) $+ * iswm $3) { tokenize 32 $1-2 $replace($3,\b, ,\n,$chr(44)) $4- }

if ($chr(37) $+ $chr(35) $+ * iswm $2) { tokenize 32 $1 $replace($2,\b, ,\n,$chr(44)) $3- }

if (ppr.* iswm $sockname) {

if (!%flood. [ $+ [ $sockname ] ]) { set -u3 %flood. [ $+ [ $sockname ] ] 1 }

elseif (%flood. [ $+ [ $sockname ] ]) && ($isrealstaff($sockname) == false) {

if (%flood. [ $+ [ $sockname ] ] > 9) && ($isstaff($sockname) != true) { unset %flood. [ $+ [ $sockname ] ] | disconnect1 $sockname }

if (%flood. [ $+ [ $sockname ] ] > 19) && ($isstaff($sockname) == true) { unset %flood. [ $+ [ $sockname ] ] | disconnect1 $sockname }

else { inc %flood. [ $+ [ $sockname ] ] }

}

}

if ($1 != PONG) { echo @Sockets 14 $+ $sockname $iif($gnick($sockname) != $null,3[ $+ $gnick($sockname) $+ ]) 12 $+ %a }

if ($1 == IRCVERS) { sockwrite -tn $sockname $sserv 800 * 1 0 Address,NTLM 512 * | echo @Connections 14- $asctime(H:nn:ss) 12Connected: $sockname Ip: $sock($sockname).ip }

elseif ($1 == VERSION) && (!$2) { sockwrite -tn $sockname $sserv 351 $gnick($sockname) :2.0.7583 }

elseif (($1-3 == AUTH GateKeeper I) && (!$gaddr($sockname)) && (%ip. [ $+ [ $sock($sockname).ip ] ])) {

var %addr = $calc($gettok($sock($sockname).ip,1,$asc(.)) * $readini(config.ini,cloakkeys,ck1)) $+ $calc($gettok($sock($sockname).ip,2,$asc(.)) * $gettok($sock($sockname).ip,3,$asc(.))) $+ $calc($gettok($sock($sockname).ip,4,$asc(.)) * $readini(config.ini,cloakkeys,ck2)) $+ @ $+ $readini(config.ini,userconf,gate_addr)

write -l1 $+(users/,$sockname,.txt) %addr

write users/userlist.txt $sockname

sockwrite -tn $sockname AUTH GateKeeper * %addr

}

elseif ($1 == NICK) && ($2) {

if ($read($+(users/,$sockname,.txt),1)) && (!$read($+(users/,$sockname,.txt),5)) {

if ($len($2) > 50) { sockwrite -tn $sockname $sserv 432 $2 :Nickname too long. | halt }

elseif ($checknick($remove($2,>)) == OK) { write -l2 $+(users/,$sockname,.txt) $left($remove($2,>),50) | write -l3 $+(users/,$sockname,.txt) H,U,PX, | write -l4 $+(users/,$sockname,.txt) PX | welcome $sockname }

elseif ($checknick($remove($2,>)) != OK) { sockwrite -tn $sockname $sserv 432 $remove($2,>) :Nickname Incorrect }

}

elseif (!$read($+(users/,$sockname,.txt),1)) && (!$read($+(users/,$sockname,.txt),2)) { sockwrite -tn $sockname $sserv 432 $remove($2,>) :Address Error }

elseif ($read($+(users/,$sockname,.txt),5)) { sockwrite -tn $sockname $sserv 439 $read($sockname $+ .txt,2) :Nickname changes not permitted }

}

elseif ($1 == PONG) {

.timer.ping. [ $+ [ $sockname ] ] off

}

elseif ($1 == JOIN) && ($2) && ($userset($sockname) == true) && ($read($+(users/,$sockname,.txt),1) != $chr(45)) {

if ($sock($sockname).ip == $read(ipbans.txt,w, $sock($sockname).ip)) {

sockwrite -tn $sockname 913 $gnick($sockname) $2 :Banned? Pong!

disconnect1 $sockname

halt

}

set %userconncount $+ $sock($sockname).ip $calc(%userconncount $+ $sock($sockname).ip + 1)

if (%userconncount $+ $sock($sockname).ip => $readini(limits.ini,limits,maxperip)) {

sockwrite -tn $sockname $sserv 471 $gnick($sockname) :User Connection Limit Exceeded

halt

}

if ($lines(users/userlist.txt) => $readini(limits.ini,limits,maxconns)) {

sockwrite -tn $sockname $sserv 471 $gnick($sockname) :Server Limit Exceeded

halt

}

writeini whois/ $+ $gnick($sockname) $+ .ini $gnick($sockname) $gnick($sockname) $gna($sockname)

writeini whois/ $+ $gnick($sockname) $+ .ini $gnick($sockname) ipaddr $sock($sockname).ip

writeini whois/ $+ $gnick($sockname) $+ .ini $gnick($sockname) R. $+ $2 $2

writeini whois/ $+ $gnick($sockname) $+ .ini $gnick($sockname) room $2

unset %tvar

do

if ($chr(37) $+ $chr(35) $+ * !iswm $2) && ($chr(35) $+ * !iswm $2) { tokenize 32 $1 $+($chr(37),$chr(35),$2) $3- }

if ($chr(35) $+ * iswm $2) { tokenize 32 $1 $+($chr(37),$2) $3- }

if (!$groom($sockname)) {

if ($isinchan($2,$sockname) == true) { sockwrite -tn $sockname $sserv 433 $gnick($Sockname) :Already in the room | halt }

elseif (!%create. [ $+ [ $2 ] ]) { sockwrite -tn $sockname $sserv 702 $gnick($sockname) :The room does not exist }

elseif (l isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) && $lines(rooms/ $+ $2 $+ .txt) >= $readini(rooms/ $+ $2 $+ .ini,modes,limit)) { sockwrite -tn $sockname $sserv 471 $gnick($sockname) :Room Limit Exceeded | halt }

elseif (i isin $readini($+(rooms/,$2,.ini),modes,room)) { sockwrite -tn $sockname $sserv 473 $gnick($sockname) :Invite Only | halt }

else {

if (%create. [ $+ [ $2 ] ] == creation) {

.timer.create. [ $+ [ $2 ] ] off

write -l5 users/ $+ $sockname $+ .txt $right($2,-2)

if ($isstaff($sockname) == false) { write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,GO,3) $+ . }

sockwrite -tn $sockname : $+ $gna($sockname) JOIN $guserid($sockname) : $+ $2

sockwrite -tn $sockname : $+ $2 PRIVMSG $2 : $+ $gwelcome($2)

sockwrite -tn $sockname : $+ $2 PRIVMSG $2 :Created Room: $2

Owner Key: $3

sockwrite -tn $sockname $sserv 332 $gnick($sockname) $2 : $+ $gtopic($2)

sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ $guserid($sockname) $+ $gnick($sockname)

sockwrite -tn $sockname $sserv 366 $gnick($sockname) $2 :End of the order /NAMES

sockwrite -tn $sockname : $+ $gna($sockname) MODE $2 +q $gnick($sockname)

sendtoroom $2 $sockname MODE $2 +q $gnick($sockname)

set %create. [ $+ [ $2 ] ] created

if ($numtok($sockname,46) == 2) {

var %newsockname = ppr. $+ $2 $+ . $+ $gettok($sockname,2,46)

}

elseif ($numtok($sockname,46) == 3) {

var %newsockname = ppr. $+ $2 $+ . $+ $gettok($sockname,3,46)

}

.rename users/ $+ $sockname $+ .txt users/ $+ %newsockname $+ .txt

write rooms/ $+ $2 $+ .txt %newsockname

var %a = $read(users/userlist.txt, s, $sockname)

write -dl $+ $readn users/userlist.txt

write users/userlist.txt %newsockname

if ($sockname != %newsockname) { sockrename $sockname %newsockname }

}

elseif (%create. [ $+ [ $2 ] ] == created) {

var %z 1 | while (%z < 5) {

if ($hfind(access. [ $+ [ $2 ] ],$gna($sockname),%z,W)) {

var %x = $gettok($hget(access. [ $+ [ $2 ] ],$hfind(access. [ $+ [ $2 ] ],$gna($sockname),%z,W)),1,32)

set -u10 % $+ $sockname $+ %x $true

}

inc %z

}

if ($isrealstaff($sockname) == true) goto skipdeny

if (% [ $+ [ $sockname ] $+ ] owner) goto skipdeny

if (% [ $+ [ $sockname ] $+ ] host) goto skipdeny

if (% [ $+ [ $sockname ] $+ ] voice) goto skipdeny

if (% [ $+ [ $sockname ] $+ ] deny) {

sockwrite -tn $sockname 913 $gnick($sockname) $2 :Access Denied

sockwrite -tn $sockname 800 $gnick($sockname) 1 0 Gatekeeper,NTLM 512*

if (u isin $readini($+(rooms/,$2,.ini),modes,room)) sendtoroom $2 $sockname 889 KNOCK $2 $gnick($sockname) $gettok($gna($sockname),2,33)

halt

}

:skipdeny

if ($3 == $readini(rooms/ $+ $2 $+ .ini,codes,owner)) && ($isstaff($sockname) == false) { write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,GO,3) $+ . }

if ($lines(rooms/ $+ $2 $+ .txt) == 0) { timer.uncreate. [ $+ [ $2 ] ] off }

if (% [ $+ [ $sockname ] $+ ] owner) && ($isstaff($sockname) == false) {

write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,GO,3) $+ $iif(*. !iswm $guserid($sockname),.)

}

elseif (% [ $+ [ $sockname ] $+ ] host) && ($isstaff($sockname) == false) {

write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,GO,3) $+ $iif(*@ !iswm $guserid($sockname),@)

}

elseif (% [ $+ [ $sockname ] $+ ] voice) && ($isstaff($sockname) == false) {

write -l3 users/ $+ $sockname $+ .txt $guserid($sockname) $+ $iif(*+ !iswm $guserid($sockname),+)

}

write -l5 users/ $+ $sockname $+ .txt $right($2,-2)

sockwrite -tn $sockname : $+ $gna($sockname) JOIN $guserid($sockname) : $+ $2

sockwrite -tn $sockname : $+ $2 PRIVMSG $2 : $+ $gwelcome($2)

sockwrite -tn $sockname $sserv 332 $gnick($sockname) $2 : $+ $gtopic($2)

write rooms/ $+ $2 $+ .txt $sockname

var %n = 1 | var %a = 1 | var %list

if (x isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) && ($isrealstaff($getsock($2,$gnick($sockname))) == false) {

var %n = 1 | var %a = 1 | var %list

while (%n <= $lines(rooms/ $+ $2 $+ .txt)) {

if (*. iswm $guserid($read(rooms/ $+ $2 $+ .txt,%n))) || ($sockname == $read(rooms/ $+ $2 $+ .txt,%n)) set %list %list $guserid($read(rooms/ $+ $2 $+ .txt,%n)) $+ $gnick($read(rooms/ $+ $2 $+ .txt,%n))

if ($numtok(%list,32) == 5) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list | unset %list }

elseif (%n == $lines(rooms/ $+ $2 $+ .txt)) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list }

inc %n

}

}

elseif (x isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) && ($isrealstaff($getsock($2,$gnick($sockname))) == true) {

var %n = 1 | var %a = 1 | var %list

while (%n <= $lines(rooms/ $+ $2 $+ .txt)) {

set %list %list $guserid($read(rooms/ $+ $2 $+ .txt,%n)) $+ $gnick($read(rooms/ $+ $2 $+ .txt,%n))

if ($numtok(%list,32) == 5) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list | unset %list }

elseif (%n == $lines(rooms/ $+ $2 $+ .txt)) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list }

inc %n

}

}

elseif (x !isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) {

var %n = 1 | var %a = 1 | var %list

while (%n <= $lines(rooms/ $+ $2 $+ .txt)) {

set %list %list $guserid($read(rooms/ $+ $2 $+ .txt,%n)) $+ $gnick($read(rooms/ $+ $2 $+ .txt,%n))

if ($numtok(%list,32) == 5) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list | unset %list }

elseif (%n == $lines(rooms/ $+ $2 $+ .txt)) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list }

inc %n

}

}

unset %list

sockwrite -tn $sockname $sserv 366 $gnick($sockname) $2 :End of /NAMES

sendtoroom $2 $sockname JOIN $guserid($sockname) $+(:,$2)

var %oldsock $sockname

if ($numtok($sockname,46) == 2) {

var %newsockname = ppr. $+ $2 $+ . $+ $gettok($sockname,2,46)

}

elseif ($numtok($sockname,46) == 3) {

var %newsockname = ppr. $+ $2 $+ . $+ $gettok($sockname,3,46)

}

.rename users/ $+ $sockname $+ .txt users/ $+ %newsockname $+ .txt

write -d rooms/ $+ $2 $+ .txt

write rooms/ $+ $2 $+ .txt %newsockname

var %a = $read(users/userlist.txt, s, $sockname)

write -dl $+ $readn users/userlist.txt

write users/userlist.txt %newsockname

if ($sockname != %newsockname) { sockrename $sockname %newsockname }

}

}

}

else { sockwrite -tn $sockname $sserv 405 $gnick($sockname) :You have joined too many channels }

}

elseif ($1 == PRIVMSG) && ($groom($sockname)) {

if ($chr(37) $+ $chr(35) $+ * iswm $2) && ($groom2($sockname) == $2) {

if (f isin $iif($chr(32) isin $readini(rooms/ $+ $2 $+ .ini,modes,room),$gettok($readini(rooms/ $+ $2 $+ .ini,modes,room),1,32),$readini(rooms/ $+ $2 $+ .ini,modes,room))) && ($sockinchan($2,$sockname) == true) && ($isrealstaff($sockname) == false) && ($isstaff($sockname) == false) && ($checkprofanity($3-) == $ifmatch) {

sockwrite -tn $sockname $sserv 932 $gnick($sockname) $2 $remove($ifmatch,$chr(42)) : $+ $2 Profanity not perimitted

halt

}

if (m isin $iif($chr(32) isin $readini(rooms/ $+ $2 $+ .ini,modes,room),$gettok($readini(rooms/ $+ $2 $+ .ini,modes,room),1,32),$readini(rooms/ $+ $2 $+ .ini,modes,room))) && ($isstaff($sockname) == false) && (*+ !iswm $guserid($sockname)) {

sockwrite -tn $sockname $sserv 404 $gnick($sockname) :Cannot transmit message to room

}

if (x isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) && ($isrealstaff($getsock($2,$gnick($sockname))) == false) && (*. !iswm $guserid($sockname)) { sendtostaff $2 $sockname $1- [ $+ [ $calc($numtok($1-,32) - 1) ] ] $iif(* iswm $left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255) $+ ) | halt }

else {

sendtoroom $2 $sockname $1- [ $+ [ $calc($numtok($1-,32) - 1) ] ] $iif(* iswm $left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255) $+ )

}

}

elseif ($chr(37) $+ $chr(35) $+ * !iswm $2) && ($sockinchan($groom2($sockname),$getsock($groom2($sockname),$2)) == true) && ($sock($getsock($groom2($sockname),$2))) { sockwrite -tn $getsock($groom2($sockname),$2) : $+ $gna($sockname) $1- }

}

elseif ($1 == ESUBMIT) {

sendtoroom $2 $gna($sockname) EQUESTION $2 $gnick($sockname) $2 : $+ $iif(:* iswm $3-,$right($3-,-1),$3-)

halt

}

elseif ($1 == EPRIVMSG) && ($isrealstaff($sockname) == true) {

sendtoroom $2 $gna($sockname) EPRIVMSG $2 : $+ $3-

halt

}

;###### Oper Commands #####

elseif ($1 == BROA) && ($isadminsysop($sockname) == true) {

write debug.txt $date $time ** Oper Performed Global Broadcast, $gnick($sockname) on IP: $sock($sockname).ip **

broa $2-

sockwrite -tn $sockname $sserv 001 $gnick($sockname) :BROA: Performed global broadcast message: * $+ $2- $+ *

if ($isrealstaff($sockname) == false) {

sockwrite -tn $sockname $sserv 001 $gnick($sockname) :Permission Denied - You're not an IRC operator

}

}

elseif ($1 == RESET) && ($isrealstaff($sockname) == true) {

sockclose * | ppr.start

sockwrite -tn $sockname $sserv 001 $gnick($sockname) :RESET: Reset all local connections to the chat server

if ($isrealstaff($sockname) == false) {

sockwrite -tn $sockname $sserv 001 $gnick($sockname) :Permission Denied - You're not an IRC operator

}

}

elseif ($1 == NETBAN) && ($isadminsysop($sockname) == true) {

write debug.txt $date $time ** Oper Performed Global Network Ban, $gnick($sockname) on IP: $sock($sockname).ip **

ban $2-

sockwrite -tn $sockname $sserv 001 $gnick($sockname) :NETBAN: Performaed global network ban on address: * $+ $2 $+ *

if ($isrealstaff($sockname) == false) {

sockwrite -tn $sockname $sserv 001 $gnick($sockname) :Permission Denied - You're not an IRC operator

}

}

;##########################

elseif ($1 == WHOIS) {

sockwrite -tn $sockname $sserv 311 $gnick($1) :$gnick($getsock($groom2($sockname),$2)) $gettok($gettok($gna($getsock($groom2($sockname),$2)),1,$asc(@)),2,$asc(!)) $gettok($gna($getsock($groom2($sockname),$2)),2,$asc(@)) * : $+ $gnick($getsock($groom2($sockname),$2))

sockwrite -tn $sockname $sserv 319 $gnick($1) :$gettok($read(whois/ $+ $2 $+ .ini,3),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,4),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,5),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,6),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,7),2-,61)

sockwrite -tn $sockname $sserv 318 $gnick($1) :End Of /WHOIS List

if ($isrealstaff($sockname) == true) {

sockwrite -tn $sockname : $+ $2 $+ 's IP: $readini(whois/ $+ $2 $+ .ini,$2,ipaddr)

sockwrite -tn $sockname $sserv 311 $gnick($1) :$gnick($getsock($groom2($sockname),$2)) $gettok($gettok($gna($getsock($groom2($sockname),$2)),1,$asc(@)),2,$asc(!)) $gettok($gna($getsock($groom2($sockname),$2)),2,$asc(@)) * : $+ $gnick($getsock($groom2($sockname),$2))

sockwrite -tn $sockname $sserv 319 $gnick($1) :$gettok($read(whois/ $+ $2 $+ .ini,3),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,4),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,5),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,6),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,7),2-,61)

sockwrite -tn $sockname $sserv 318 $gnick($1) :End Of /WHOIS List

}

}

elseif ($1 == FINDU) {

sockwrite -tn $sockname $sserv 001 $gnick($1) :Searching for user $2 $+ ...

sockwrite -tn $sockname $sserv 002 $gnick($1) :User $2 found in rooms $readini(whois/ $+ $2 $+ .ini, $+ $2 $+ ,room)

sockwrite -tn $sockname $sserv 003 $gnick($1) :End of /FINDU

else {

sockwrite -tn $sockname $sserv 001 $gnick($1) :Searching for user $2 $+...

sockwrite -tn $sockname $sserv 002 $gnick($1) :User $2 not found!

sockwrite -tn $sockname $sserv 003 $gnick($1) :End of /FINDU

}

}

elseif ($1 == UPTIME) {

sockwrite -tn $sockname $sserv 001 $gnick($sockname) :SERVER UPTIME: $duration($calc($ticks / 1000))

}

elseif ($1 == INVITE) {

sockwrite -tn $sockname $sserv 341

}

elseif ($1 == LUSERS) {

sockwrite -tn $sockname $sserv 001 $gnick($1) :-

sockwrite -tn $sockname $sserv 002 $gnick($1) :There are $lines(users/userlist.txt) users and 0 are invisible on our 1 PaperIRC Server.

sockwrite -tn $sockname $sserv 003 $gnick($1) : $+ %opercount operator(s) online

sockwrite -tn $sockname $sserv 104 $gnick($1) :0 unknown connection(s)

sockwrite -tn $sockname $sserv 104 $gnick($1) : $+ %tvar channels formed

sockwrite -tn $sockname $sserv 105 $gnick($1) :-

sockwrite -tn $sockname $sserv 106 $gnick($1) :Current local users: $lines(users/userlist.txt) Max: $readini(config.ini,connections,maxconns)

sockwrite -tn $sockname $sserv 107 $gnick($1) :Current global users: $lines(users/userlist.txt) Max: $readini(config.ini,connections,maxconns)

sockwrite -tn $sockname $sserv 108 $gnick($1) :-

sockwrite -tn $sockname $sserv 109 $gnick($1) :End of /LUSERS

}

elseif ($1 == MOTD) {

sockwrite -tn $sockname $sserv 001 $gnick($1) :-

sockwrite -tn $sockname $sserv 002 $gnick($1) :Message of the Day, $chatname

sockwrite -tn $sockname $sserv 003 $gnick($1) :-

if ($exists(motd.txt) == $true) && ($lines(motd.txt) >= 1) {

var %n = 1

while (%n <= $lines(motd.txt)) {

sockwrite -tn $sockname $sserv 751 $gnick($1) :- $read(motd.txt,%n)

inc %n

}

}

else { sockwrite -tn $sockname $sserv 752 $gnick($1) :MOTD File is Missing }

sockwrite -tn $sockname $sserv 761 $gnick($1) :-

sockwrite -tn $sockname $sserv 762 $gnick($1) :End of /MOTD command

}

elseif ($1 == WHISPER) && ($groom($sockname)) {

if ($sockinchan($groom2($sockname),$getsock($groom2($sockname),$3)) == true) && ($sock($getsock($groom2($sockname),$3))) { sockwrite -tn $getsock($groom2($sockname),$3) : $+ $gna($sockname) $1- [ $+ [ $calc($numtok($1-,32) - 1) ] ] $iif(* iswm $left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255) $+ ) }

}

elseif ($1 == NOTICE) && ($groom($sockname)) {

if ($sockinchan($groom2($sockname),$getsock($groom2($sockname),$2)) == true) && ($sock($getsock($groom2($sockname),$2))) { sockwrite -tn $getsock($groom2($sockname),$2) : $+ $gna($sockname) $1- [ $+ [ $calc($numtok($1-,32) - 1) ] ] $iif(* iswm $left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255) $+ ) }

}

elseif ($1 == MODE) {

if ($chr(37) $+ $chr(35) $+ * iswm $2) && (!$3) {

sockwrite -tn $sockname $sserv 324 nick $2 $readini($+(rooms/,$groom2($sockname),.ini),modes,room)

}

elseif ($chr(37) $+ $chr(35) $+ * !iswm $2) && ($3 == +h) && ($4) && ($groom($sockname)) {

if ($4 == $readini($+(rooms/,$groom2($sockname),.ini),codes,owner)) {

if (*@ iswm $guserid($sockname)) {

write -l3 users/ $+ $sockname $+ .txt $replace($repuid($sockname,GO,3),@,.)

sockwrite -tn $sockname : $+ $gna($sockname) MODE $groom2($sockname) -o $gnick($sockname)

sendtoroom $groom2($sockname) $sockname MODE $groom2($sockname) -o $gnick($sockname)

sockwrite -tn $sockname : $+ $gna($sockname) MODE $groom2($sockname) +q $gnick($sockname)

sendtoroom $groom2($sockname) $sockname MODE $groom2($sockname) +q $gnick($sockname)

}

elseif (*@ !iswm $guserid($sockname)) && (*. !iswm $guserid($sockname)) {

write -l3 users/ $+ $sockname $+ .txt $remove($repuid($sockname,GO,3),+) $+ .

sockwrite -tn $sockname : $+ $gna($sockname) MODE $groom2($sockname) +q $gnick($sockname)

sendtoroom $groom2($sockname) $sockname MODE $groom2($sockname) +q $gnick($sockname)

}

}

elseif ($4 == $readini($+(rooms/,$groom2($sockname),.ini),codes,host)) && ($isstaff($sockname) == false) {

write -l3 users/ $+ $sockname $+ .txt $remove($repuid($sockname,GO,3),+) $+ @

sockwrite -tn $sockname : $+ $gna($sockname) MODE $groom2($sockname) +o $gnick($sockname)

sendtoroom $groom2($sockname) $sockname MODE $groom2($sockname) +o $gnick($sockname)

}

}

elseif ($chr(37) $+ $chr(35) $+ * !iswm $2) && ($3) { sockwrite -tn $sockname :UserModes pas encore fait }

elseif ($chr(37) $+ $chr(35) $+ * iswm $2) && ($2 == $groom2($sockname)) {

if ($3 == +o) && ($isstaff($sockname) == true) && ($4) && ($getsock($2,$4)) && ($isstaff($getsock($2,$4)) == false) && ($sockinchan($2,$getsock($2,$4)) == true) {

if (* $+ $chr(43) iswm $guserid($getsock($2,$4))) { var %yesv = 1 }

write -l3 users/ $+ $getsock($2,$4) $+ .txt $remove($repuid($getsock($2,$4),GO,3),+) $+ @

if (%yesv) {

sockwrite -tn $sockname : $+ $gna($sockname) $1-2 -v $gnick($getsock($2,$4))

sendtoroom $2 $sockname $1-2 -v $gnick($getsock($2,$4))

}

sockwrite -tn $sockname : $+ $gna($sockname) $1-3 $gnick($getsock($2,$4))

sendtoroom $2 $sockname $1-3 $gnick($getsock($2,$4))

}

elseif ($3 == -o) && ($isstaff($sockname) == true) && ($4) && ($getsock($2,$4)) && (*. !iswm $guserid($getsock($2,$4))) && ($sockinchan($2,$getsock($2,$4)) == true) {

if (* $+ $chr(43) iswm $guserid($getsock($2,$4))) { var %yesv = 1 }

write -l3 users/ $+ $getsock($2,$4) $+ .txt $remove($repuid($getsock($2,$4),$gsexe($getsock($2,$4)),3),@)

sockwrite -tn $sockname : $+ $gna($sockname) $1-3 $gnick($getsock($2,$4))

sendtoroom $2 $sockname $1-3 $gnick($getsock($2,$4))

if (%yesv) {

sockwrite -tn $sockname : $+ $gna($sockname) $1-2 -v $gnick($getsock($2,$4))

sendtoroom $2 $sockname $1-2 -v $gnick($getsock($2,$4))

}

}

elseif ($3 == +q) && (*. iswm $guserid($sockname)) && ($4) && ($getsock($2,$4)) && (*. !iswm $guserid($getsock($2,$4))) && ($sockinchan($2,$getsock($2,$4)) == true) {

if (*@ iswm $guserid($getsock($2,$4))) {

write -l3 users/ $+ $getsock($2,$4) $+ .txt $replace($repuid($getsock($2,$4),GO,3),@,.)

sockwrite -tn $sockname : $+ $gna($sockname) $1-2 -o $gnick($getsock($2,$4))

sendtoroom $2 $sockname $1-2 -o $gnick($getsock($2,$4))

sockwrite -tn $sockname : $+ $gna($sockname) $1-3 $gnick($getsock($2,$4))

sendtoroom $2 $sockname $1-3 $gnick($getsock($2,$4))

}

elseif (*@ !iswm $guserid($getsock($2,$4))) {

if (* $+ $chr(43) iswm $guserid($getsock($2,$4))) { var %yesv = 1 }

write -l3 users/ $+ $getsock($2,$4) $+ .txt $remove($repuid($getsock($2,$4),GO,3),+) $+ .

if (%yesv) {

sockwrite -tn $sockname : $+ $gna($sockname) $1-2 -v $gnick($getsock($2,$4))

sendtoroom $2 $sockname $1-2 -v $gnick($getsock($2,$4))

}

sockwrite -tn $sockname : $+ $gna($sockname) $1-3 $gnick($getsock($2,$4))

sendtoroom $2 $sockname $1-3 $gnick($getsock($2,$4))

}

}

elseif ($3 == -q) && (*. iswm $guserid($sockname)) && ($isrealstaff($getsock($2,$4)) == false) && ($4) && ($getsock($2,$4)) && (*. iswm $guserid($getsock($2,$4))) && ($sockinchan($2,$getsock($2,$4)) == true) {

write -l3 users/ $+ $getsock($2,$4) $+ .txt $remove($repuid($getsock($2,$4),$gsexe($getsock($2,$4)),3),.)

sockwrite -tn $sockname : $+ $gna($sockname) $1-3 $gnick($getsock($2,$4))

sendtoroom $2 $sockname $1-3 $gnick($getsock($2,$4))

if (* $+ $chr(43) iswm $guserid($getsock($2,$4))) {

sockwrite -tn $sockname : $+ $gna($sockname) $1-2 -v $gnick($getsock($2,$4))

sendtoroom $2 $sockname $1-2 -v $gnick($getsock($2,$4))

}

}

elseif ($3 == +v) && ($4) && ($isstaff($sockname) == true) && ($isstaff($getsock($2,$4)) == false) && ($sockinchan($2,$getsock($2,$4)) == true) {

write -l3 users/ $+ $getsock($2,$4) $+ .txt $repuid($getsock($2,$4),GO,3) $+ +

sockwrite -tn $sockname : $+ $gna($sockname) $1-

sendtoroom $2 $sockname $1-

}

elseif ($3 == -v) && ($4) && ($isstaff($sockname) == true) && (*+ iswm $guserid($getsock($2,$4))) && ($sockinchan($2,$getsock($2,$4)) == true) {

write -l3 users/ $+ $getsock($2,$4) $+ .txt $remove($repuid($getsock($2,$4),$gsexe($getsock($2,$4)),3),+)

sockwrite -tn $sockname : $+ $gna($sockname) $1-

sendtoroom $2 $sockname $1-

}

elseif ($right($3,-1) isin $readini(config.ini,userconf,modes)) && ($chr(43) isin $3) && ($isstaff($sockname) == true) && ($2 == $groom2($sockname)) {

if ($right($3,-1) isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) { halt }

if ($right($3,-1) == l) && ($4 isnum 1-100)) {

writeini $+(rooms/,$2,.ini) modes limit $4

writeini $+(rooms/,$2,.ini) modes room $readini($+(rooms/,$2,.ini),modes,room) $+ l $4

sockwrite -tn $sockname : $+ $gna($sockname) $1-

sendtoroom $2 $sockname MODE $2 l $4

}

if ($right($3,-1) == k) {

writeini $+(rooms/,$2,.ini) modes memberkey $4

writeini $+(rooms/,$2,.ini) modes room $readini($+(rooms/,$2,.ini),modes,room) $+ k

sockwrite -tn $sockname : $+ $gna($sockname) $1 $2 $3

sendtoroom $2 $sockname MODE $2 k

}

if ($4) { halt }

if (l isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) {

writeini $+(rooms/,$2,.ini) modes room $remove($3,1) $+ $readini($+(rooms/,$2,.ini),modes,room)

sockwrite -tn $sockname : $+ $gna($sockname) $1-

sendtoroom $2 $sockname MODE $2 $3

}

else {

writeini $+(rooms/,$2,.ini) modes room $readini($+(rooms/,$2,.ini),modes,room) $+ $right($3,-1)

sockwrite -tn $sockname : $+ $gna($sockname) $1-

sendtoroom $2 $sockname MODE $2 $3

}

}

elseif ($right($3,-1) isin $readini(config.ini,userconf,modes)) && ($right($3,-1) isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) && ($chr(45) isin $3) && ($isstaff($sockname) == true) && ($2 == $groom2($sockname)) {

set %removemode $right($3,-1)

set %s $readini(rooms/ $+ $2 $+ .ini,modes,room)

writeini rooms/ $+ $2 $+ .ini modes room $remove(%s,%removemode)

sockwrite -tn $sockname : $+ $gna($sockname) $1-

sendtoroom $2 $sockname MODE $2 $3

}

elseif ($right($3,-1) isin $roommodes) && ($isstaff($sockname) == true) && ($chr(37) $+ $chr(35) $+ * iswm $2) && ($2 == $groom2($sockname)) {

if (+ == $left($3,1)) && ($right($3,-1) !isin $readini($+(rooms/,$2,.ini),modes,room)) {

writeini $+(rooms/,$2,.ini) modes room $readini($+(rooms/,$2,.ini),modes,room) $+ $right($3,-1)

sockwrite -tn $sockname : $+ $gna($sockname) $1-

sendtoroom $2 $sockname $1-

}

elseif (- == $left($3,1)) && ($right($3,-1) isin $readini($+(rooms/,$2,.ini),modes,room)) {

writeini $+(rooms/,$2,.ini) modes room $remove($readini($+(rooms/,$2,.ini),modes,room),$right($3,-1))

sockwrite -tn $sockname : $+ $gna($sockname) $1-

sendtoroom $2 $sockname $1-

}

}

}

}

elseif ($1 == KICK) && ($2 == $groom2($sockname)) && ($chr(37) $+ $chr(35) $+ * iswm $2) && ($3) && ($groom($sockname)) && ($sockinchan($2,$getsock($2,$3)) == true) && ($isrealstaff($getsock($2,$3)) == false) {

if (*. iswm $guserid($sockname)) {

set %2sock $getsock($2,$3)

write -dl5 users/ $+ $getsock($2,$3) $+ .txt

write -l3 users/ $+ $getsock($2,$3) $+ .txt $remove($repuid($getsock($2,$3),$gsexe($getsock($2,$3)),3),.,@)

write $+(-ds,$getsock($2,$3)) rooms/ $+ $2 $+ .txt

var %oldsock %2sock

var %newsockname = ppr. $+ $gettok(%2sock,3,46)

.rename users/ $+ %2sock $+ .txt users/ $+ %newsockname $+ .txt

write -ds $+ %oldsock users/userlist.txt

write users/userlist.txt %newsockname

sockrename %oldsock %newsockname

sockwrite -tn %newsockname : $+ $gna($sockname) $iif(:* iswm $4,$1-,$1-3 : $+ $4-)

sockwrite -tn $sockname : $+ $gna($sockname) $1-

sendtoroom $2 $sockname $1-

}

elseif (*@ iswm $guserid($sockname)) && (*. !iswm $guserid($getsock($2,$3))) {

var %2sock = $getsock($2,$3)

write -dl5 users/ $+ $getsock($2,$3) $+ .txt

write -l3 users/ $+ $getsock($2,$3) $+ .txt $remove($repuid($getsock($2,$3),$gsexe($getsock($2,$3)),3),.,@)

write $+(-ds,$getsock($2,$3)) rooms/ $+ $2 $+ .txt

var %oldsock %2sock

var %newsockname = ppr. $+ $gettok(%2sock,3,46)

.rename users/ $+ %2sock $+ .txt users/ $+ %newsockname $+ .txt

write -ds $+ %oldsock users/userlist.txt

write users/userlist.txt %newsockname

sockrename %oldsock %newsockname

sockwrite -tn %newsockname : $+ $gna($sockname) $iif(:* iswm $4,$1-,$1-3 : $+ $4-)

sockwrite -tn $sockname : $+ $gna($sockname) $1-

sendtoroom $2 $sockname $1-

}

}

elseif ($1 == PROP) {

if ($3 == $chr(42)) && ($2 == $groom2($sockname)) {

sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 OID $readini(rooms/ $+ $2 $+ .ini,info,OID)

sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Name $2

sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Creation $readini(rooms/ $+ $2 $+ .ini,creation,date)

sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Language $readini(rooms/ $+ $2 $+ .ini,info,language)

sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Topic $readini(rooms/ $+ $2 $+ .ini,info,topic)

sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Subject $readini(rooms/ $+ $2 $+ .ini,info,subject)

}

if ($3 == CREATION) && ($2 == $groom2($sockname)) {

sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Creation $readini(rooms/ $+ $2 $+ .ini,creation,date)

}

if ($3 == OID) && ($2 == $groom2($sockname)) {

sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 OID $readini(rooms/ $+ $2 $+ .ini,info,OID)

}

if ($3 == NAME) && ($2 == $groom2($sockname)) {

sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Name $2

}

if ($3 == SUBJECT) && ($2 == $groom2($sockname)) {

sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Subject $readini(rooms/ $+ $2 $+ .ini,info,subject)

}

if ($3 == LANGUAGE) && ($2 == $groom2($sockname)) {

sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Language $readini(rooms/ $+ $2 $+ .ini,info,language)

}

if ($3 == OWNERKEY) && (*. iswm $guserid($sockname)) && ($2 == $groom2($sockname)) {

writeini rooms/ $+ $2 $+ .ini codes owner $iif(:* iswm $4,$right($4,-1),$4)

}

elseif ($3 == HOSTKEY) && (*. iswm $guserid($sockname)) && ($2 == $groom2($sockname)) {

writeini rooms/ $+ $2 $+ .ini codes host $iif(:* iswm $4,$right($4,-1),$4)

}

elseif ($3 == ROLE) && ($2 == $chr(36)) && ($6) {

if ($remove($4,smile.gif == $readini(opers.ini,$5,Poste)) && ($6 == $readini(opers.ini,$5,pass)) && ($gnick($sockname)) && ($gaddr($sockname)) && ($guserid($sockname)) && (!$groom($sockname)) {

write -l1 users/ $+ $sockname $+ .txt $readini(opers.ini,$5,Poste) $+ @ $+ cg

sockwrite -tn $sockname : $+ $gna($sockname) NICK : $+ $readini(opers.ini,$5,nick)

write -l2 users/ $+ $sockname $+ .txt $readini(opers.ini,$5,nick)

write -l3 $+(users/,$sockname,.txt) H,U,PX, | write -l4 $+(users/,$sockname,.txt) PX

write -l3 users/ $+ $sockname $+ .txt $replace($repuid($sockname,$readini(opers.ini,$5,mode),2),$gettok($repuid($sockname,$readini(opers.ini,$5,mode),2),3,44),GO) $+ $readini(opers.ini,$5,mode2)

sockwrite -tn $sockname $sserv 001 $gnick($sockname) : $+ You are now an IRC operator

set %opercount $calc(%opercount + 1)

}

}

if ($4 == :PROFILMODE1) {

write -l3 $+(users/,$sockname,.txt) H,U,PX,

}

if ($4 == :PROFILMODE0) {

write -l3 $+(users/,$sockname,.txt) H,U,RX,

}

if ($4 == :PROFILMODE3) {

write -l3 $+(users/,$sockname,.txt) H,U,MX,

}

if ($4 == :PROFILMODE4) {

write -l3 $+(users/,$sockname,.txt) H,U,FX,

}

if ($4 == :PROFILMODE6) {

write -l3 $+(users/,$sockname,.txt) H,U,G,

}

if ($4 == :PROFILMODE13) {

write -l3 $+(users/,$sockname,.txt) H,U,FY,

}

if ($4 == :PROFILMODE11) {

write -l3 $+(users/,$sockname,.txt) H,U,MY,

}

if ($4 == :PROFILMODE9) {

write -l3 $+(users/,$sockname,.txt) H,U,PY,

}

}



if ($3 == TOPIC) && ($isstaff($sockname) == true) && ($4-) && ($2 == $groom2($sockname)) && ($chr(37) $+ $chr(35) $+ * iswm $2) {

;Here we stop lethal/bad code from going in the topic

if ($chr(60) isin $4-) {

sockwrite -tn $sockname $sserv 706 $gnick($sockname) :Bad Characters

halt

}

if ($chr(62) isin $4-) {

sockwrite -tn $sockname $sserv 706 $gnick($sockname) :Bad Characters

halt

}

else {

writeini rooms/ $+ $2 $+ .ini info topic $right($4-,-1)

sockwrite -tn $sockname : $+ $gna($sockname) topic $2 $4-

sendtoroom $2 $sockname topic $2 $4-

}

}

elseif ($1 == AWAY) && ($groom($sockname)) {

if ($2) {

write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,G,1)

sockwrite -tn $sockname $sserv 306 $gnick($sockname) :306

sendtoroom $groom2($sockname) $sockname 822 :Away



}

elseif ($1 == TOPIC) && ($isstaff($sockname) == true) && ($3-) && ($2 == $groom2($sockname)) {

;Here we stop lethal/bad code from going in the topic

if ($chr(60) isin $3-) {

sockwrite -tn $sockname $sserv 706 $gnick($sockname) :Bad Characters

halt

}

if ($chr(62) isin $3-) {

sockwrite -tn $sockname $sserv 706 $gnick($sockname) :Bad Characters

halt

}

else {

writeini rooms/ $+ $2 $+ .ini info topic $iif(:* iswm $3,$right($3-,-1),$3-)

sockwrite -tn $sockname : $+ $gna($sockname) topic $2 $3-

sendtoroom $2 $sockname topic $2 $3-

}

}

elseif (!$2) {

write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,H,1)

sockwrite -tn $sockname $sserv 305 $gnick($sockname) :305

sendtoroom $groom2($sockname) $sockname 821 :User UnAway

}

}

elseif ($1 == LISTX) || ($1 == LIST) {

sockwrite -tn $sockname $sserv 321 $gnick($sockname) Channel :Users Name

var %a = 1

while (%a <= $var(%create.*,0)) {

sockwrite -tn $sockname $sserv 322 $gnick($sockname) $right($gettok($var(%create.*,%a),2,46),-2) $lines(rooms/ $+ $gettok($var(%create.*,%a),2,46) $+ .txt) : $+ $chr(91) $+ $chr(43) $+ $readini(rooms/ $+ $gettok($var(%create.*,%a),2,46) $+ .ini,modes,room) $+ $chr(93)

inc %a

}

sockwrite -tn $sockname $sserv 323 $gnick($sockname) :End of /LIST

}

elseif ($1 == ACCESS) {

if (!$2) || ($left($2,2) != $chr(37) $+ $chr(35)) || ($len($2) < 3) || ($2 != $groom2($sockname)) halt

if ($isstaff($sockname) == false) { sockwrite -tn $sockname 913 $gnick($sockname) $groom2($sockname) No Access | halt }

if (!$3) || ($3 == list) {

sockwrite -tn $sockname 803 $gnick($sockname) $groom2($sockname) Start of access entrys

var %l 1

while ($hget(access. [ $+ [ $2 ] ],%l).item != $null) { sockwrite -tn $sockname 804 $gnick($sockname) $2 $hget(access. [ $+ [ $2 ] ],%l).data | inc %l }

sockwrite -tn $sockname 805 $gnick($sockname) $groom2($sockname) End of access entrys

}

elseif ($3 == ADD) {

if ($hget(access. $+ $2,0).item > 500) { sockwrite -tn $sockname 916 $gnick($sockname) Too many access entries (500 max) | halt }

if ($4 != OWNER) && ($4 != HOST) && ($4 != DENY) && ($4 != VOICE) { sockwrite -tn $sockname 903 $gnick($sockname) $4 Bad Level | halt }

if ($6) && ($6 !isnum) { sockwrite -tn $sockname 903 $gnick($sockname) $6 Bad Level | halt }

if ($4 == OWNER) && (*. !iswm $guserid($sockname)) { sockwrite -tn $sockname 913 $gnick($sockname) $groom2($sockname) No Access | halt }

elseif ($4 == OWNER) {

if ($hfind(access. [ $+ [ $2 ] ],$5,1)) { sockwrite -tn $sockname 914 $gnick($sockname) Duplicate access entry | halt }

hadd -m access. [ $+ [ $2 ] ] $5 $upper($4) $5-6 $iif($6 == $null,0) $iif(*. iswm $guserid($sockname),O-,H-) $+ $gettok($gna($sockname),2,33) $7-

sockwrite -tn $sockname 801 $gnick($sockname) $groom2($sockname) $upper($4) $5-6 $iif($6 == $null,0) $iif(*. iswm $guserid($sockname),O-,H-) $+ $gettok($gna($sockname),2,33) $7-

}

elseif ($4 == HOST) || ($4 == DENY) || ($4 == VOICE) {

if ($hfind(access. [ $+ [ $2 ] ],$5,1)) { sockwrite -tn $sockname 914 $gnick($sockname) Duplicate access entry | halt }

hadd -m access. [ $+ [ $2 ] ] $remove($5,$chr(36) $+ $chr(42)) $upper($4) $remove($5,$chr(36) $+ $chr(42)) $6 $iif($6 == $null,0) $iif(*. iswm $guserid($sockname),O-,H-) $+ $gettok($gna($sockname),2,33) $7-

sockwrite -tn $sockname 801 $gnick($sockname) $groom2($sockname) $upper($4) $5-6 $iif($6 == $null,0) $iif(*. iswm $guserid($sockname),O-,H-) $+ $gettok($gna($sockname),2,33) $7-

}



}

elseif (DEL* iswm $3) {

if ($hfind(access. [ $+ [ $2 ] ],$5,1)) && ($hfind(access. [ $+ [ $2 ] ],$4 * $+ $5 $+ *,1,w).data == $hfind(access. [ $+ [ $2 ] ],$5,1)) {

if ($hfind(access. [ $+ [ $2 ] ],$4 * $+ $5 $+ *O-*,1,w).data) && (*. !iswm $guserid($sockname)) { sockwrite -tn $sockname 913 $gnick($sockname) $groom2($sockname) No Access | halt }

hdel access. [ $+ [ $2 ] ] $5

sockwrite -tn $sockname 802 $gnick($sockname) $groom2($sockname) $upper($4) $5

}

else sockwrite -tn $sockname 915 $gnick($sockname) Unknown access entry

}

elseif (clear == $3) {

if ($4 != $null) && ($4 != owner) && ($4 != host) && ($4 != voice) && ($4 != deny) { sockwrite -tn $sockname 903 $gnick($sockname) $4 Bad Level | halt }

if ($4 == $null) {

if (*. iswm $guserid($sockname)) {

hfree access. [ $+ [ $2 ] ]

sockwrite -tn $sockname 820 $gnick($sockname) $groom2($sockname) * Clear

}

elseif (*@ iswm $guserid($sockname)) {

var %x 1

while ($hget(access. [ $+ [ $2 ] ],%x).item != $null) {

if ($left($gettok($hget(access. [ $+ [ $2 ] ],%x).data),4,32),1) == H) { hdel access. [ $+ [ $2 ] ] $hget(access. [ $+ [ $2 ] ],%x) | dec %x }

inc %x

}

sockwrite -tn $sockname 922 $gnick($sockname) Some entrys not cleared due to security

}

}

elseif ($4 == owner) {

if (*@ iswm $guserid($sockname)) { sockwrite -tn $sockname 913 $gnick($sockname) $groom2($sockname) No Access | halt }

var %x 1

while ($hget(access. [ $+ [ $2 ] ],%x).item != $null) {

if ($gettok($hget(access. [ $+ [ $2 ] ],%x).data,1,32) == owner) { hdel access. [ $+ [ $2 ] ] $hget(access. [ $+ [ $2 ] ],%x).item | dec %x }

inc %x

}

sockwrite -tn $sockname 820 $gnick($sockname) $groom2($sockname) OWNER Clear

}

else {

var %x 1

while ($hget(access. [ $+ [ $2 ] ],%x).item != $null) {

if ($gettok($hget(access. [ $+ [ $2 ] ],%x).data,1,32) == $4) {

if (*. iswm $guserid($sockname)) { hdel access. [ $+ [ $2 ] ] $hget(access. [ $+ [ $2 ] ],%x).item | dec %x }

elseif (*@ iswm $guserid($sockname)) && ($left($gettok($hget(access. [ $+ [ $2 ] ],%x).data,4,32),1) == H) {

hdel access. [ $+ [ $2 ] ] $hget(access. [ $+ [ $2 ] ],%x).item

dec %x

}

}

inc %x

}

if (*. iswm $guserid($sockname)) sockwrite -tn $sockname 820 $gnick($sockname) $groom2($sockname) $upper($4) Clear

else sockwrite -tn $sockname 922 $gnick($sockname) Some entrys not cleared due to security

}

}

}

elseif (quit* iswm $1) { disconnect1 $sockname }

elseif ($1 == part) && ($chr(37) $+ $chr(35) == $left($2,2)) {

disconnect1 $sockname

}

else {

if ($sock($sockname)) { }

}



elseif ($1 == WHOIS) {

if ($groom($sockname)) && ($getsock($groom2($sockname),$2)) {

sockwrite -tn $sockname $sserv 311 $gnick($sockname) $gnick($getsock($groom2($sockname),$2)) $gettok($gettok($gna($getsock($groom2($sockname),$2)),1,$asc(@)),2,$asc(!)) $gettok($gna($getsock($groom2($sockname),$2)),2,$asc(@)) * : $+ $gnick($getsock($groom2($sockname),$2))

sockwrite -tn $sockname $sserv 318 $gnick($sockname) $gnick($getsock($groom2($sockname),$2)) :End Of /WHOIS List

}

}

}

;####################################################################

;# #################### Access List #################### #

;####################################################################



on *:SOCKCLOSE:ppr.*:{

if ($gnick($sockname) == $isrealstaff) {

set %opercount $calc(%opercount - 1)

}

set %userconncount $+ $sock($sockname).ip $calc(%userconncount $+ $sock($sockname).ip - 1)

echo @Connections 15- $asctime(H:nn:ss) 2Disconnected: $sockname Ip: $sock($sockname).ip Nick: $gnick($sockname)

if ($groom($sockname)) { write $+(-ds,$sockname) rooms/ $+ $groom2($sockname) $+ .txt | sendtoroom $groom2($sockname) $sockname PART : $+ $groom2($sockname) }

if ($lines(rooms/ $+ $groom2($Sockname) $+ .txt) == 0) { .remove rooms/ $+ $groom2($sockname) $+ .ini | .remove rooms/ $+ $groom2($sockname) $+ .txt | unset %create. [ $+ [ $groom2($sockname) ] ] | if ($hget(access. [ $+ [ $groom2($sockname) ] ])) { hfree access. [ $+ [ $groom2($sockname) ] ] } }

if ($exists($+(users/,$sockname,.txt)) == $true) { write $+(-ds,$sockname) users/userlist.txt | .remove $+(users/,$sockname,.txt) }

}



Je met quand meme le code de Paper ... si des fois ca peut aider
Je rapelle que sur Paper les profils ne fonctionnent pas mais les têtes H/F en salle oui
Alors que sur Crimson c'est l'inverse unsure.gif Pas de têtes H/F mais les profils fonctionnent eux ...

Faire un mix des deux ? mdr wacko.gif

Merci
Ceci une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquez ici.
Invision Power Board © 2001-2012 Invision Power Services, Inc.