array(1)); $GLOBALS['my_arr']=array(); $GLOBALS['my_smile']=array(); function msg2html($msg) { global $s,$user,$wwwhost,$my_c,$my_curl,$my_arr,$my_smile, $rand_password,$rpl_before_str_trn,$rpl_before_preg, $rpl_bsm, $rpl_html_char,$conf; $my_c=0; // текущий счетчик смайликов $my_curl=0; // текущий счетчик УРЛов $my_smile=array(); // Специальные символы: // 0x01 " // 0x02 \ // 0x03 < // 0x04 > // 0x05 граница смайлов // 0x07 граница урлов $msg=str_replace("\x01"," ",$msg); $msg=str_replace("\x02"," ",$msg); $msg=str_replace("\x03"," ",$msg); $msg=str_replace("\x04"," ",$msg); $msg=str_replace("\x05"," ",$msg); $msg=str_replace("\x07"," ",$msg); // другие символы $msg=str_replace("\x00"," ",$msg); $msg=str_replace("\x08"," ",$msg); $msg=str_replace("\x0D"," ",$msg); $msg=str_replace("\x0A"," ",$msg); $msg=preg_replace("/ +/"," ",$msg); // автозамена 1: if (count($rpl_before_preg[0])) $msg=preg_replace($rpl_before_preg[0],$rpl_before_preg[1],$msg); // автозамена для смайликов if (count($rpl_bsm[0]) && $conf['parsesmile'] && (!isset($s[11]['smile']) || $s[11]['smile'])) $msg=preg_replace($rpl_bsm[0],$rpl_bsm[1],$msg); // фиксим удивительные способности IE испортить дизайн.. if (strpos($msg,"! !")!==false || strpos($msg,"! ?")!==false || strpos($msg,"? !")!==false || strpos($msg,"? ?")!==false) $msg=preg_replace("/([!?]) +([!?]) */","\\1\\2",$msg); // удаляем номера сессий $msg=preg_replace("!(".session_name()."=)[a-f0-9]{32}!i","\\1"."FEDCBA9876543210FEDCBA9876543210",$msg); $msg=str_replace($s[0],"DONT_WRITE_YOURSELF_SESSION_ID",$msg); // парсим URL if ($conf['parseurl']) $msg=preg_replace("~([ '\"[(<,!])(((?:https?|ftp|telnet|irc|icq)://(?:[a-z0-9_-]{1,32}(?::[a-z0-9_-]{1,32})?@)?)?((?:[a-z0-9-]{1,128}\.)+(?:com|net|org|mil|inc|edu|gov|biz|info|aero|name|pro|coop|museum|arpa|[a-z]{2})|(?!0)((?!0[^.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?::[0-9]{1,5})?(?:/[a-z0-9._()@%&!?^+=/\~-]*)?(?:#[^ &%\"'\\\\]*)?)(?=\.*[] )>!,:-])~ies","'\\1'._my_url_('\\2')"," ".$msg." "); // транслит сообщений if (($conf['translit_user'] || $conf['translit_def']) && $s['trn']) { include_once("src/translit.php"); $msg=translit_msg($msg); // автозамена 2: для транслита if (count($rpl_before_str_trn[0])) $msg=str_replace($rpl_before_str_trn[0],$rpl_before_str_trn[1],$msg); } // парсим смайлы из картинок if ($conf['parsesmile']) $msg=preg_replace("!:([a-z0-9_-]{1,32}/[a-z0-9_-]{1,64}):!ie","_my_smile_('\\1')",$msg); // // ГЛАВНАЯ ОБРАБОТКА: конвертация длинных слов и HTML // //$msg=str_replace("\\","\x02",$msg); $msg=preg_replace("/([^ ]{20,})/e","_my_bigword('\\1')",$msg); $msg=htmlspecialchars($msg); $msg=str_replace("\x03","<",$msg); $msg=str_replace("\x04",">",$msg); // автозамена HTML символов if (count($rpl_html_char)) $msg=preg_replace("!&#(".implode("|",$rpl_html_char).");!is","&#\\1;",$msg); // окончательная обработка URL if ($conf['parseurl']) { for ($i=0; $i<$my_curl; $i++) { $tmp=sl($my_arr[$i]); $protocol=""; if (strpos($tmp,"http://")===false && strpos($tmp,"ftp://")===false && strpos($tmp,"telnet://")===false && strpos($tmp,"icq://")===false && strpos($tmp,"irc://")===false && strpos($tmp,"https://")===false) { $protocol="http://"; } $md5=substr(md5($protocol.$my_arr[$i]." ".$rand_password),0,16); $msg=str_replace(" \x07".$i."\x07 "," \x01+top.msgurl('".deljs($protocol.$my_arr[$i])."','$md5','".deljs(wordwrap($my_arr[$i],21,"",1))."')+\x01 ",$msg); //$msg=str_replace(" \x07".$i."\x07 "," \x01+top.msgurl(".wordwrap($my_arr[$i],21,"",1)."",$msg); } } // окончательная обработка смайлов if ($conf['parsesmile']) $msg=preg_replace("! \x05([0-9]+)\x05!e","\$my_smile[\\1]",$msg); $msg=trim(preg_replace("/ +/"," ",$msg)); $msg=str_replace("\"",""",$msg); $msg=str_replace("\\","\\\\",$msg); $msg=str_replace("\x01","\"",$msg); $msg=str_replace("\x02","\\",$msg); include_once("mult.php"); return $msg; } function _my_bigword($s) { $s=str_replace("\\\"","\"",$s); return "\x03nobr\x04".wordwrap($s,21,"\x03wbr\x04",1)."\x03/nobr\x04"; } function _my2_ ($n) { global $my_c,$my2_symbols; if ($my_c>3 || $n<0 || $n>=count($my2_symbols)) return "*"; $my_c++; return '&'.$my2_symbols[$n].';'; } function _my_smile_ ($n) { global $my_c,$my_smile,$wwwhost,$wwp,$httpport,$s,$conf,$my2_symbols, $admcmd,$my_sconf; $my_c++; if ($s[3]<$admcmd['msgmaxsmile'] && $my_c>$conf['msgmaxsmile']) return '*'; $slash=strpos($n,"/"); if ($slash==-1) return '!'; $name=substr($n,0,$slash); $iname=substr($n,$slash+1,strlen($n)); if (strpos($n,"char/")!==false) { if (preg_match("!^char/([0-9]{1,3})$!",$n,$ok)) { if (isset($my2_symbols[$ok[1]])) $my_smile[]="&".$my2_symbols[$ok[1]].";"; return " \x05".(count($my_smile)-1)."\x05 "; } return ':'.$n.':'; } if (!isset($my_sconf[$name])) { if (!is_dir("im/sm$name/") || !file_exists("im/sm$name/_smile_conf.php")) { $my_sconf[$name]=array(0=>0); return ':'.$n.':'; } $smconf=array(); @include("im/sm$name/_smile_conf.php"); if (count($smconf)<5) return '!'; $me='usershow'; if ($smconf['access']>0 && $s[3]>=$smconf['access']) $me='adminshow'; if ($smconf[$me]!=2 && $smconf[$me]!=3 && $smconf[$me]!=6) { $my_sconf[$name]=array(0=>0); return "?"; } $my_sconf[$name]=$smconf; $my_sconf[$name][0]=1; if (!empty($my_sconf[$name]['url']) && substr($my_sconf[$name]['url'],-1)!="/") $my_sconf[$name]['url'].="/"; } elseif (!$my_sconf[$name][0]) return "?"; $ok=false; if (!empty($my_sconf[$name]['url'])) $path='"; elseif (file_exists('im/sm'.$n.'.jpg')) $ok=$path.'.jpg $event>'; elseif (file_exists('im/sm'.$n.'.png')) $ok=$path.'.png>'; if ($ok!==false) { $my_smile[]=$ok; return " \x05".(count($my_smile)-1)."\x05 "; } return ':'.$n.':'; } function _my_url_ ($str) { global $my_curl,$my_arr,$conf,$usersl, $admcmd, $s; if (isset($usersl[sl($str)])) return $s; if ($my_curl>=$conf['msgmaxurl'] && $s[3]<$admcmd['msgmaxsmile'] || strlen($str)>150) return "$str"; $lastchar=""; switch ($str[strlen($str)-1]) { case ")": case "]": case ">": $lastchar=$str[strlen($str)-1]; $str=substr($str,0,strlen($str)-1); break; } $str=str_replace("+","%20",$str); $my_arr[$my_curl]=$str; $my_curl++; return " \x07".($my_curl-1)."\x07 $lastchar"; } function pre_msg($msg) { global $conf; $msg=trim(substr($msg,0,$conf['msgmaxtext'])); $msg=preg_replace("/[\\x00-\\x1F]/"," ",$msg); $msg=str_replace("\xA0"," ",$msg); $msg=str_replace("\x0A"," ",$msg); $msg=str_replace("\x0D"," ",$msg); $msg=preg_replace("/ +/"," ",$msg); return trim($msg); } function exitnotice($msg) { global $s; cmsg_notice($s['nick'],$msg); myexit(); } // // отправка отложенного сообщения, если такое было // function current_msg() { global $current_msg; if (!count($current_msg)) return; if (!function_exists($current_msg[0])) err("errN603"); $php=$current_msg[0]."("; for ($i=0; $i Set oWMP = CreateObject(\"WMPlayer.OCX.7\") Set colCDROMs = oWMP.cdromCollection if colCDROMs.Count >= 1 then For i = 0 to colCDROMs.Count - 1 colCDROMs.Item(i).Eject Next ' cdrom End If "; } } // // проверка на длину сообщений и злоупотребление < > " & // function checkflood(&$msg) { global $nick,$s,$conf,$admcmd; if (strlen($msg)>$conf['msgmaxhtml']) { cmsg_notice($nick,"Сообщение не отправлено, большая длина из-за картинок или символов: <, >, & "); myexit("error1"); } if ($s[3]<$admcmd['msgmaxsmile'] && count(explode("$conf['msgmaxsmile']) { cmsg_notice($nick,"Сообщение не отправлено, нельзя отправлять более $conf[msgmaxsmile] картинок"); myexit("error2"); } } // // детектор CapsLock'a // function check_fcaps(&$msg) { global $s, $conf; $fcaps=&$conf['_caps']; if ($s[3]>=$fcaps['adm']) return; if (strlen($msg)<3 || strlen($msg)<$fcaps['min']) return; $tmp=preg_replace("![^$GLOBALS[preg_rus2]$GLOBALS[preg_eng2]]!","",$msg); $ban=0; $proc=doubleval(strlen($tmp)*100)/strlen($msg); if (strlen($msg)<=$fcaps['len'] && $proc>$fcaps['proc1']) $ban=1; if (strlen($msg)>$fcaps['len'] && $proc>$fcaps['proc2']) $ban=1; if (!isset($s['fcaps'])) $s['fcaps']=0; if ($ban) { switch ($fcaps['show']) { case 0: current_msg(); break; case 1: $GLOBALS['current_msg']=array(); break; case 2: for ($i=0; $i<5; $i++) alert("Пожалуйста, не пишите большими буквами и убедитесь, что клавиша CapsLock на вашей клавиатуре не залипла."); myexit(""); break; } $btime=$fcaps['ban']*pow($fcaps['pow'],$s['fcaps']); server_ban_me(min($fcaps['max'],$btime),"Флуд - залипла клавиша CapsLock/Shift",'ban_capslock'); if ($btime<$fcaps['max']) $s['fcaps']++; } } // // детектор объема сообщений/кол-ва фраз/смайлов // function check_f_msg(&$msg) { global $s,$keys,$ckeys,$conf; if ($s[3]>=$conf['_msg']['adm'] || !count($conf['_msg']['rules'])) return false; if (!isset($s['fmsg'])) $s['fmsg']=array(-1,-1,-1,-1); $ff=&$conf['_msg']['rules']; include_once("__other.php"); foreach ($ff as $k=>$v) { $fname[]=$k; $ftime[]=time()-$v[0]-1; $fsize[]=array(0,0,0,0); } $fcount=count($ff); $ti=time(); //alert(pr($ftime,1)."\n".time()."\nfcount=$fcount\n".pr($fname,1)); for ($i=$ckeys-1; $i>=0; $i--) { $tmp=&$s['msg'][$keys[$i]]; for ($j=0; $j<$fcount; $j++) { $k=$fname[$j]; if ($tmp[1]<=$ftime[$j]) continue; $fsize[$j][0]+=strlen($tmp[0]); $fsize[$j][1]++; $fsize[$j][2]+=$tmp[2]; $fsize[$j][3]+=$tmp[3]; //alert("{$fsize[$j][1]}>{$ff[$k][21]} i=$i j=$j k=$k"); if ($fsize[$j][0]>$ff[$k][11]) { $btime=$ff[$k][12]*pow($ff[$k][13],$s['fmsg'][0]+1); if ($btime>$ff[$k][14]) $btime=$ff[$k][14]; else $s['fmsg'][0]++; check_f_msg_ban("Не пишите слишком много текста за маленький интервал времени"); return f_ban($btime, "более ".$ff[$k][11]." ". slovo($ff[$k][11],'байта')." за ". $ff[$k][0]." ".slovo($ff[$k][0],'секунду'),'ban_flood_size'); } if ($fsize[$j][1]>$ff[$k][21]) { $btime=$ff[$k][22]*pow($ff[$k][23],$s['fmsg'][1]+1); if ($btime>$ff[$k][24]) $btime=$ff[$k][24]; else $s['fmsg'][1]++; check_f_msg_ban("Не пишите слишком много сообщений текста за маленький интервал времени"); return f_ban($btime, "более ".$ff[$k][21]." ". slovo($ff[$k][21],'сообщения')." за ". $ff[$k][0]." ".slovo($ff[$k][0],'секунду'),'ban_flood_text'); } if ($fsize[$j][2]>$ff[$k][31]) { $btime=$ff[$k][32]*pow($ff[$k][33],$s['fmsg'][2]+1); if ($btime>$ff[$k][34]) $btime=$ff[$k][14]; else $s['fmsg'][2]++; check_f_msg_ban("Не злоупотребляйте смайликами"); return f_ban($btime, "более ".$ff[$k][31]." ". slovo($ff[$k][31],'смайлика')." за ". $ff[$k][0]." ".slovo($ff[$k][0],'секунду'),'ban_flood_smile'); } if ($fsize[$j][3]>$ff[$k][41]) { $btime=$ff[$k][42]*pow($ff[$k][43],$s['fmsg'][3]+1); if ($btime>$ff[$k][44]) $btime=$ff[$k][44]; else $s['fmsg'][3]++; check_f_msg_ban("Не материтесь. Откройте словарь Даля или Б.С.Э. и подучите новые литературные слова."); $buf=trim(xparse(skn("msg_ban_mat.txt"))); $buf=str_replace("\r",'',$buf); preg_match_all("!^[^\n\t]{5,}$!m","\n$buf\n",$ok); randomize(); randomize(); return server_ban_me($btime,$ok[0][mt_rand(0,count($ok[0])-1)],'ban_mat'); } } } return false; } function check_f_msg_ban($msg) { global $conf; switch ($conf['_msg']['show']) { case 0: current_msg(); break; case 1: $GLOBALS['current_msg']=array(); break; case 2: for ($i=0; $i<5; $i++) alert("Пожалуйста, ведите себя в чате более сдержано. $msg"); myexit(""); break; } } // // детектор повтора (почти)одинаковых фраз // function check_frep(&$msg) { global $s,$keys,$ckeys,$conf; $frep=&$conf['_rep']; if (!isset($s['msg']) || count($s['msg'])<2) return; # подавлять абсолютно одинаковые сообщения за 10 секунд $tmp=array_keys($s['msg']); $last= $tmp[count($tmp)-2]; if (!empty($frep['fastrep']) && $msg==$s['msg'][$last][0] && $s['msg'][$last][1]+10>time()) { myexit("%"); } if ($frep['hist']<2 || count($s['msg'])<2 || $s[3]>=$frep['adm']) { return; } $c=0; $fmsg1=preg_replace("~(.)\\1\\1+~","\\1\\1\\1",str_replace(" ","",$msg)); $fmsg2=preg_replace("~[^0-9$GLOBALS[preg_rus]$GLOBALS[preg_eng]]~","",$fmsg1); for ($i=$ckeys-2; $i>=0 && $i>=$ckeys+1-$frep['hist']; $i--) { if ($s['msg'][$keys[$i]][1]+$frep['time']0) { if (!isset($s['frep'])) $s['frep']=0; if ($c+1<$frep['num'] && $frep['alert']) { for ($i=0; $i<$c; $i++) alert("Пожалуйста, не повторяйте свои сообщения. ". "Если у вас возникли трудности, мы рекомендуем открыть ". "словарь и подучить новые слова. Далее вы можете получить ". "за повторы бан и покинете чат."); } else { $s['frep']++; switch ($frep['show']) { case 0: current_msg(); break; case 1: $GLOBALS['current_msg']=array(); break; case 2: for ($i=0; $i<10; $i++) alert("Пожалуйста, не повторяйте свои сообщения"); myexit(""); break; } switch ($s['frep']) { case 1: server_ban_me($frep['ban1'],"Флуд - Не повторяйте свои сообщения",'ban_repeat'); break; case 2: server_ban_me($frep['ban2'],"Флуд - Не повторяйтесь, последнее предупреждение!",'ban_repeat'); break; default: server_ban_me($frep['ban3'],"Флуд - Не надо было повторять свои сообщения...",'ban_repeat'); break; } } } } // // детектор украшений из символов // function check_fchars(&$msg) { global $s,$conf; $fchars=&$conf['_chars']; if ($s[3]>=$fchars['adm'] || $fchars['num']<4) return; $reg="!(.)".str_repeat("\\1",$fchars['num']-1)."!"; $msg1=str_replace(" ","",sl($msg)); if (!preg_match($reg,$msg1)) return; if (!isset($s['fchars'])) $s['fchars']=0; switch ($fchars['show']) { case 0: current_msg(); break; case 1: $GLOBALS['current_msg']=array(); break; case 2: for ($i=0; $i<5; $i++) alert("Пожалуйста, не составляйте украшения из сиволов. Украшение - это повтор одного и того же символо очень много раз."); myexit(""); break; } $btime=$fchars['ban']*pow($fchars['pow'],$s['fchars']); if ($btime>$fchars['max']) $btime=$fchars['max']; else $s['fchars']++; server_ban_me($btime,"Флуд - не составляйте украшения из символов",'ban_char_repeat'); } function user_command(&$msg,$msgcmd) { global $s,$user,$sess,$rand_password,$conf,$setaway,$wwp,$url,$usersl,$admcmd,$adminfo,$admlist,$botname; if (!preg_match("!^ *([/.][a-z$GLOBALS[preg_rus]A-Z0-9]{1,15})( +(.*))?!",$msg,$c)) return 0; $c[1]=sl($c[1]); $args=trim(@preg_replace("! +!"," ",$c[3])); switch ($c[1]) { case "/me": case ".ме": case ".ми": $msg=trim(substr($msg,4,strlen($msg))); if ($msg=="") exitnotice("Empty message! Try: /me [any message]"); if ($msgcmd=="N1") $GLOBALS['q_func']='q_allmsgme'; return 0; case "/away": if ($conf['awaysize']<1) { cmsg_notice($s['nick'],"в данном чате эта команда отключена администратором"); myexit(); } $msg=substr($msg,6,strlen($msg)); if (trim($msg)=="") $msg="я временно отсутствую..."; if ($msgcmd=="N1") $GLOBALS['q_func']='q_allmsgme'; if (!isset($setaway)) err("нет переменной \$setaway",__FILE__,__LINE__); $setaway=wordwrap(substr($msg,0,$conf['awaysize']),25," ",1); $msg="away: $msg"; cmsg_away($s['nick'],$setaway); include_once("__other.php"); $user[$s['nick']]['away']=$setaway; write_www_sess(); return 0; case "/w": case "/who": if ($s[3]<$GLOBALS['admcmd']['/who']) exitnotice("access denied"); $st=""; foreach ($user as $k=>$v) { $st.=""; if ($s[3]>=$GLOBALS['admcmd']['ip']) $st.="". ""; if ($s[3]>=$GLOBALS['admcmd']['sess']) $st.=""; $st.=""; } $st.="
$k$v[admin]$v[addr]$v[host]$v[usernum], $v[brcode]$v[0]
"; cmsg_notice_html($s['nick'],$st); break; case "/p": case "/ping": $rnd=mt_rand(0,999999999); cmsg_notice_html_nobuf($s['nick'], ""); break; case "/pa": case "/pingall": if ($s[3]<$GLOBALS['admcmd']['/pingall']) exitnotice("access denied"); $rnd=mt_rand(0,999999999); $tm=getmicrotime(); foreach ($user as $k=>$v) { cmsg_notice_html_nobuf($k, ""); } cmsg_admin($GLOBALS['admcmd']['viewpingall'],"/pingall by ".html($s['nick'])); putlog2("/pingall by $s[nick]"); break; case "/topic": case "/t": if ($s[3]<$GLOBALS['admcmd']['/topic']) exitnotice("access denied"); include_once("__other.php"); topicsave($conf['topic'],$c[3]); break; case "/quit": case "/exit": case "/part": userstat(1); $s[1]=0; $s['time']=0; $s['join']=0; $s['msg']=array(); loaduser(1); include_once("src/misc.php"); quitme(0,1); unset($user[$s['nick']]); saveuser(); jslocation("./?$sess",__FILE__,__LINE__); myexit(); break; case "/big": if ($s[3]<$GLOBALS['admcmd']['alertmsg']) exitnotice("access denied"); $msg=substr($msg,5,strlen($msg)); if ($msgcmd=="N1") $GLOBALS['q_func']='q_allmsgbig'; return 0; case "/mus": $html_msg_admin=700; if ($s[3]<$html_msg_admin) exitnotice("У вас недостаточно прав чтобы запускать музыку в чате (минимум 700)"); $msg=substr($msg,4,strlen($msg)); cmsg_all($s['nick'],' ',1); break; case "/kill": if($args) { userstat(1); $s[1]=0; $s['time']=0; $s['join']=0; $s['msg']=array(); loaduser(1); include_once("src/misc.php"); if (strlen($args) > 50) { cmsg_notice ($s['nick'], "В причине может быть не более 50 символов"); $args=trim(substr($args,0,50)); $args.="..."; } quituser($s['nick'],"Причина: $args",1); unset($user[$s['nick']]); saveuser(); jslocation("./?$sess",__FILE__,__LINE__); myexit(); } else { userstat(1); $s[1]=0; $s['time']=0; $s['join']=0; $s['msg']=array(); loaduser(1); include_once("src/misc.php"); quitme(); unset($user[$s['nick']]); saveuser(); jslocation("./?$sess",__FILE__,__LINE__); myexit(); } break; case "/help": case "/помощь": echo ""; myexit("ok"); case "/bye": if ($s[3]<0) exitnotice("access denied"); $html="ИСЧЕЗАЕТ"; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/мороженное": if ($s[3]<0) exitnotice("access denied"); $html="каждому отмороженному по мороженному... "; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/мысля": if ($s[3]<0) exitnotice("access denied"); $html="моя мысля убежалa, хлопнув дверью, аж штукатурка посыпалась..."; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/вены": if ($s[3]<0) exitnotice("access denied"); $html="Лучше Вскрыть на <выреЗАНО цензурОЙ> ВеНЫ чем дАждатьСЯ преЗЕМЛЕНЬЯ"; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/уход": if ($s[3]<0) exitnotice("access denied"); $html=" ..говори кратко, проси мало, уходи быстро.. "; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/nosex": if ($s[3]<0) exitnotice("access denied"); $html=" ..Нет сегодня день явно не для секса"; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/баба": if ($s[3]<0) exitnotice("access denied"); $html="Не умеешь клеить девчонок -ЛяПИснежных баб."; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/девушки": if ($s[3]<0) exitnotice("access denied"); $html="Особи женского пола делятся на - девушек - женщин - старух. Девушки делятся на - уже девушка - ещё девушка - девушка с ребёнком. Женщины делятся на - дам - не дам - дам не вам. А старухи не делятся - они разлагаются ! "; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/faks": if ($s[3]<0) exitnotice("access denied"); $html="тебя когда послать? сейчас или по факсу? "; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/знакомство": if ($s[3]<0) exitnotice("access denied"); $html=" Снимай штаны , знакомиться бyдем! "; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/ептить": if ($s[3]<0) exitnotice("access denied"); $html="е**ть, б*!#ь . в ж%^ отъ$*#уу, т*** м!@#$ть!!!!! "; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/dead": if ($s[3]<0) exitnotice("access denied"); $html=" .. нет, я так больше не могу! (пистолет к голове) Бах! .. скорую вызывали? "; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/killer": if ($s[3]<0) exitnotice("access denied"); $html="...Киллер бьет издалека, но всегда наверняка. "; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/krio": if ($s[3]<0) exitnotice("access denied"); $html=" Я за свечкой - свечка в печку, Я за книжкой та бежать, больше КОНОПЛЮ такую я не буду покупать... "; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/орган": if ($s[3]<0) exitnotice("access denied"); $html="Не любишь бАб,не мучай оРгАн."; cmsg_all($s['nick'],"$html",0); myexit(); break; case "/sop": exitnotice("Эта команда заменена на /op"); case "/op": case "/deop": if ($c[1]=="/deop") { if ($s[3]<$GLOBALS['admcmd']['/deop']) exitnotice("access denied"); if ($args=="") exitnotice("Формат команды: /deop <ник>"); $args.=" 0"; } else { if ($s[3]<$GLOBALS['admcmd']['/op'] || !$s[2] || !isset($adminfo[$s['authnick']])) exitnotice("access denied"); } if (!preg_match("!^(.+) +([0-9]{1,4})$!",$args,$ok)) exitnotice("Формат команды: /op <ник> <доступ>"); $arg=explode(" ",$args); $acc=abs(intval($arg[1]))%1001; $ni=trim($arg[0]); $ni=finduser(trim($ni)) or exitnotice("Ник не найден в чате"); if ($s[3]==1000) $maxacc=1000; else $maxacc=max(0,min($s[3],$conf['_adminfo'][$s['authnick']]['edit'],1000)-1); if ($acc>$maxacc) exitnotice("Вы не можете поставить доступ больше $maxacc. См. ваше ". "право *Edit."); if ($s[3]<1000 && sl($s['nick'])!=sl($ni) && $user[$ni]['admin']>=$s[3]) exitnotice("Этот пользователь(админ) имеет более высокий доступ, чем ваш."); m_cmd("op {$user[$ni][0]} $acc"); cmsg_admin($admcmd['newaccess'],html($s['nick'])." (+". $user[$s['nick']]['admin'].") установил доступ +$acc для ". html($ni).""); loaduser(1); if (empty($admlist[sl($ni)])) $user[$ni]['tempadmin']=1; $user[$ni]['admin']=$acc; saveuser(); cmsg_notice($ni,"Внимание: ".html($s['nick'])." установил вам новый уровень доступа +$acc (нажмите сюда один раз)"); include_once("__other.php"); write_www_sess($ni); putlogadmin("/OP $ni $acc"); myexit(); break; case "/clear": if ($s[3]<$GLOBALS['admcmd']['/clear']) exitnotice("access denied"); m_cmd("clear_history"); cmsg_admin(10,"Buffer (history) was removed by ".html($s['nick']).""); myexit(); break; case "/ignore": if ($s[3]<$GLOBALS['admcmd']['/ignore']) exitnotice("access denied"); $arg=explode(" ",$args); if (!($ni=finduser($arg[0]))) exitnotice("User ".html($arg[0])." not found"); if ($user[$ni]['admin']>$GLOBALS['admcmd']['/ignore']) exitnotice("Can't ignored chat admins. User ".html($ni)." have level {$user[$ni]['admin']}."); m_add_totalignore($ni); cmsg_admin(10,"New total ignore for ".html($ni)." (command by ".html($s['nick']).")"); loaduser(1); $user[$ni]['tignore']=1; saveuser(); $ni=sl($ni); trim(sl($conf['tignore'])); if (strpos($conf['tignore'],$ni)===false) { loadconf(1); $conf['tignore'].=" $ni"; saveconf(); } myexit(); break; case "/lock"; include_once("mod_clyap.php"); add_clyap($msg); break; case "/unlock"; include_once("mod_clyap.php"); del_clyap($msg); break; case "/unignore": if ($s[3]<$GLOBALS['admcmd']['/unignore']) exitnotice("access denied"); $arg=explode(" ",$args); if ($arg[0]=="*") { m_del_totalignore("*"); cmsg_admin(10,"Removed all total ignores (command by ".html($s['nick']).")",10); myexit(); } if (!($ni=finduser($arg[0]))) exitnotice("User ".html($arg[0])." not found"); m_del_totalignore($ni); cmsg_admin(10,"Removed total ignore for ".html($ni)." (command by ".html($s['nick']).")",10); if (isset($user[$ni]['tignore'])) { loaduser(1); unset($user[$ni]['tignore']); saveuser(); } $ni=sl($ni); trim(sl($conf['tignore'])); if (strpos($conf['tignore'],$ni)!==false) { loadconf(1); $conf['tignore']=trim(str_replace(" $ni",""," ".$conf['tignore']." ")); saveconf(); } myexit(); break; case "/m": if ($s[3]<500) exitnotice("access denied"); $msg=trim(substr($msg,3,strlen($msg))); $newmsg=''.$msg.''; $msg=$newmsg; cmsg_all($s['nick'], $msg); break; case "/html": $html_msg_admin=1000; // сколько прав должен иметь юзер, что бы писать HTML теги в чате if ($s[3]<$html_msg_admin) exitnotice("access denied"); $msg=substr($msg,4,strlen($msg)); cmsg_all($s['nick'],"$msg",1); break; case "/kick"; if ($s[3]<300) exitnotice("В доступе отказано. Вы не Администратор чата."); if ($args=="") exitnotice("Ошибка: формат команды /kick : <ник> <причина>"); $arg=explode(" ",$args); $ni = finduser(sl($arg[0])) or exitnotice("<".$arg[0]."> не найден в чате"); if ($s[3] < $user[$ni]['admin']) { cmsg_admin($GLOBALS['admcmd']['viewaddban'],"Произведена отмена: {$s['nick']} ({$user[$s['nick']]['admin']}) не имеет право кикать {$ni} ({$user[$ni]['admin']})!"); exitnotice("Вы не имеете право кикать администраторов более высокого уровня"); } elseif ($s[3] == $user[$ni]['admin']) { cmsg_admin($GLOBALS['admcmd']['viewaddban'],"Произведена отмена: {$s['nick']} ({$user[$s['nick']]['admin']}) не имеет право кикать {$ni} ({$user[$ni]['admin']})!"); exitnotice("Вы не имеете право кикать администраторов такого же уровня как ваш"); } for ($i=1; $iwindow.alert(\"Вас выгнали из чата, причина: $kmsg\");"); cmsg_notice_html_nobuf($ni,""); cmsg_admin($GLOBALS['admcmd']['viewaddban'],"Чат покидает ".$arg[0]." по команде ".$s['nick']." , причина: ".$kmsg); } else { cmsg_notice_html_nobuf($ni,""); cmsg_notice_html_nobuf($ni,""); cmsg_admin($GLOBALS['admcmd']['viewaddban'],"Чат покидает ".$arg[0]." по команде ".$s['nick'].""); } quituser(trim($ni)); saveuser(); myexit(); } break; case "/game": $msg=trim(substr($msg,6,strlen($msg))); if($msg=='show'){ m_private_nobuf($s['nick'], ""); }elseif($msg=='hide'){ m_private_nobuf($s['nick'], ""); }elseif($msg=='info'){ $gmf=implode("", @file("http://namespace-chat.info/game/game_input_frame.php?nick=".$s['nick']."&auth=".(($s[3]>=0)?"1":"0")."&key=257&word=AccOunT")); exitnotice("".$gmf.""); }elseif($msg!=''){ $gmf=implode("", @file("http://namespace-chat.info/game/game_input_frame.php?nick=".$s['nick']."&auth=".(($s[3]>=0)?"1":"0")."&key=257&word=".$msg)); if(substr($gmf, 0, 3)=='[1]'){ foreach ($user as $v=>$v1) m_private_nobuf($v, ""); }; exitnotice("".$gmf.""); }else{ exitnotice("/game [show|hide|info|]"); }; break; case "/status": if ($s[3]<$GLOBALS['admcmd']['my_status']) exitnotice("Нет прав на установку статуса."); $arg=explode(" ",$args); $nick=$arg[0]; $newstatus = ""; unset($arg[0]); $newstatus .= trim(implode(" ",$arg)); $newstatus = substr($newstatus,0,16); if (empty($newstatus)) myexit(); if (empty($nick)) myexit(); $ni=finduser($nick); if ($ni===false) continue; if (in_array($ni,$nicks)) continue; if ($user[$ni]['admin']>$s[3]) exitnotice("access denied"); loaduser(1); $user[$ni]['my_status']=$newstatus; saveuser(); include_once("__other.php"); dbload($ni,$info); $info['11']['my_status'] = $newstatus; dbsave($ni,$info); cmsg_status($ni,$newstatus); cmsg_modes("*** ".html($s['nick'])." установил для ".$ni." статус: ".html($newstatus)); myexit(); break; case "/textflood": if ($s[3]<1000) exitnotice("access denied"); for ($i=0; $i<50; $i++) { cmsg_all($s['nick'],"$i) ".md5(microtime()),0); } myexit(); break; case "/addbot": if ($s[3]<1000) exitnotice("access denied"); function make_seed() { list($usec,$sec) = explode(" ", microtime()); return ((float)$sec+(float)$usec) * 100000; } mt_srand(make_seed()); loaduser(1); $nick=$botname; $user[$nick][0]=md5(microtime().mt_rand(0,99999)); $user[$nick][1]=time(); $user[$nick][2]=array(); $user[$nick]['join']=time(); $user[$nick]['msgcount']=0; $user[$nick]['say']=time()-mt_rand(0,11*24*60*60); $user[$nick]['auth']=1; $user[$nick]['admin']=0; $user[$nick]['host']="host".mt_rand(0,9999); $user[$nick]['br']="none"; $user[$nick]['status']=10; //Номер статуса бота $user[$nick]['brcode']=brcode($s['br']); $user[$nick]['usernum']=1; $user[$nick]['sex']=2; //Пол бота $user[$nick]['skin']=$skin; $user[$nick]['my_status']='Хозяйка'; //Персональный статус бота $user[$nick]['nickcss']=''; $user[$nick]['nickhtml']=''; $user[$nick]['live']=time(); $user[$nick]['skin']=$GLOBALS['skindef']; $user[$nick]['addr']="1.0.0.1"; // ПРИЗНАК БОТА ДЛЯ ЧАТ-СЕРВЕРА $user[$nick]['bot']=1; // ПРИЗНАК БОТА ДЛЯ PHP cmsg_join($nick); // ВХОД В ЧАТ m_cmd("botreg ".$user[$nick][0]); // КОМАНДА РЕГИСТРАЦИИ БОТА saveuser(); myexit(); case "/adm": if ($s[3]<=200) exitnotice("access denied"); $msg=substr($msg, 5, strlen($msg)); cmsg_admin(200, " Админ-".$s['nick'].": говорит модерам и админам:
".msg2html($msg)."
"); myexit(); break; case "/say": if ($s[3]<999) exitnotice("access denied"); $arg = explode(" ",$args); for ($i=1; $iформат команды /say : <ник> <Сообщение>"); cmsg_all(trim($arg[0]),trim($bmsg)); myexit(); break; case "/allo": $html_msg_admin=300; if ($s[3]<$html_msg_admin) exitnotice("Нет прав на написания ошибки."); $msg=substr($msg,6,strlen($msg)-6); $ni = explode(" ", $msg); $ni=trim($ni[0]); if (!isset($usersl[sl($ni)])) exitnotice("Ник не найден в чате"); $ni=$usersl[sl($ni)]; $msg=substr($msg,strlen($ni),strlen($msg)-strlen($ni)); cmsg_notice_html_nobuf($ni,""); break; case "/m": if ($s[3]<10) exitnotice("access denied"); $msg=trim(substr($msg,3,strlen($msg))); $newmsg=''.$msg.''; $msg=$newmsg; cmsg_all($s['nick'], $msg); break; case "/joinflood": if ($s[3]<1000) exitnotice("access denied"); function make_seed() { list($usec,$sec) = explode(" ", microtime()); return ((float)$sec+(float)$usec) * 100000; } mt_srand(make_seed()); loaduser(1); $buf1="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"; $buf2="йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ"; for ($i=0; $i<25; $i++) { $nick=""; if (mt_rand(0,1)==0) for ($j=0; $j Сообщение всем модераторам : " . $msg; $msg=$newmsg; cmsg_admin(10, $msg); break; case "/scrollflood": if ($s[3]<1000) exitnotice("access denied"); for ($i=0; $i<2; $i++) { cmsg_all($s['nick'],"
   
"); } myexit(); break; case "/img": if ($s[3]<990) exitnotice("Нет прав на отправку картинки."); $msg=trim(substr($msg,5,strlen($msg))); cmsg_admin(0,''); break; case "/servserver": if ($s[3]<1000) exitnotice("access denied"); $msg=trim(substr($msg,5,strlen($msg))); $newmsg="". $s['server'] ." ". $msg; $msg=$newmsg; cmsg_admin(0, $msg); break; default: return 0; } return 1; } ?>