2018-01-28 16:40:49 +00:00
< ? php
session_start ();
header ( " Cache-Control: no-cache " );
2018-02-15 20:58:37 +00:00
if ( ! isset ( $_SESSION [ 'uid' ])) {
echo " <script>top.window.location='index.php'</script> " ;
die ();
}
2018-02-13 23:13:16 +00:00
include_once 'config.php' ;
include_once 'functions.php' ;
2018-01-28 16:40:49 +00:00
2018-03-01 20:26:45 +00:00
db :: c () -> query ( 'UPDATE `online` SET `real_time` = ?i WHERE `id` = ?i' , time (), $u -> i ()[ 'id' ]);
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
//function tolink($buf) /*Штука, убивающая чужие ссылки*/
//{
// $x = explode(" ", $buf);
// $newbuf = '';
// for ($j = 0; $j < count($x); $j++) {
// if (preg_match("/(http:\\/\\/)?([a-z_0-9-.]+\\.oldcombats+\\.org(([ \"'>\r\n\t])|(\\/([^ \"'>\r\n\t]*)?)))/", $x[$j], $ok)) {
// $newbuf .= str_replace($ok[2], "<small><a href=http://$ok[2] target=_blank ><i>[Внутреняя ссылка]</i></a></small>", str_replace("http://", "", $x[$j])) . " ";
// } else {
// $newbuf .= $x[$j] . " ";
// }
// }
// return $newbuf;
//}
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
if ( isset ( $_GET [ 'online' ]) && $_GET [ 'online' ] != null ) {
if ( $_GET [ 'room' ] && ( int ) $_GET [ 'room' ] < 500 ) {
$user [ 'room' ] = ( int ) $_GET [ 'room' ];
2018-01-28 16:40:49 +00:00
}
2018-03-01 20:26:45 +00:00
if ( $u -> i ()[ 'caveleader' ] > 0 ) {
2018-03-01 21:26:13 +00:00
$data = db :: c () -> query ( '
2018-02-15 20:58:37 +00:00
SELECT
`align` ,
`u` . `id` ,
`klan` ,
`level` ,
`login` ,
`u` . `battle` AS `in_battle` ,
`o` . `date` ,
`u` . `invis` ,
( SELECT `id` FROM `effects` WHERE `type` = 2 AND `owner` = `u` . `id` LIMIT 1 ) AS `slp` ,
( SELECT `id` FROM `effects` WHERE ( `type` = 11 OR `type` = 12 OR `type` = 13 OR `type` = 14 ) AND `owner` = `u` . `id` LIMIT 1 ) AS `trv` ,
`deal`
FROM
`online` AS `o` ,
`users` AS `u`
WHERE
`o` . `id` = `u` . `id` AND
( `o` . `date` >= ' . (time() - 90) . ' OR `u` . `in_tower` = 1 ) AND
2018-03-01 20:26:45 +00:00
`o` . `room` = " ' . $u->i ()['room'] . ' " AND
`u` . `caveleader` = " ' . $u->i ()['caveleader'] . ' "
2018-02-15 20:58:37 +00:00
ORDER BY
`u` . `login`
' );
$ttl = " <span style= \" color: #8f0000; font-size: 10pt; \" ><b> " . $rooms [ $user [ 'room' ]] . " ( " . mysql_num_rows ( $data ) . " )</b></span> " ;
$ch1 = '_active' ;
$ch2 = '_passive' ;
$ch3 = '_passive' ;
$ch4 = '_passive' ;
$ch5 = '_passive' ;
} elseif ( $user [ 'room' ] == 760 ) {
2018-03-01 21:26:13 +00:00
$forest = db :: c () -> query ( 'SELECT `id`, `room`, `time`, `user`, `data` FROM `forest` WHERE `user` = "' . $user [ 'id' ] . '" LIMIT 1' ) -> fetch_assoc ();
$sp = db :: c () -> query ( 'SELECT `id`, `room`, `user` FROM `forest` WHERE `room` = "' . $forest [ 'room' ] . '"' );
while ( $pl = $sp -> fetch_assoc ()) {
2018-02-15 20:58:37 +00:00
$uss .= ', ' ;
$uss .= $pl [ 'user' ];
}
if ( $uss != '' ) {
$uss = ltrim ( $uss , ', ' );
}
2018-03-01 21:26:13 +00:00
$data = db :: c () -> query ( '
2018-02-15 20:58:37 +00:00
SELECT
`align` ,
`u` . `id` ,
`klan` ,
`action` ,
`level` ,
`login` ,
`u` . `battle` AS `in_battle` ,
`o` . `date` ,
`u` . `invis` ,
( SELECT `id` FROM `effects` WHERE `type` = 2 AND `owner` = `u` . `id` LIMIT 1 ) AS `slp` ,
( SELECT `id` FROM `effects` WHERE ( `type` = 11 OR `type` = 12 OR `type` = 13 OR `type` = 14 ) AND `owner` = `u` . `id` LIMIT 1 ) AS `trv` ,
`deal`
FROM
`online` AS `o` ,
`users` AS `u`
WHERE
`o` . `id` = `u` . `id` AND
( `o` . `date` >= ' . (time() - 90) . ' OR `u` . `in_tower` = 1 ) AND
`u` . `id` IN ( ' . $uss . ' )
ORDER BY
`u` . `login`
' );
$ttl = " <span style= \" color: #8f0000; font-size: 10pt; \" ><b> " . $var_map [ $forest [ 'room' ]] . " ( " . mysql_num_rows ( $data ) . " )</b></span> " ;
$ch1 = '_active' ;
$ch2 = '_passive' ;
$ch3 = '_passive' ;
$ch4 = '_passive' ;
$ch5 = '_passive' ;
} else {
2018-03-01 21:26:13 +00:00
$data = db :: c () -> query ( '
2018-02-15 20:58:37 +00:00
SELECT
`align` ,
`u` . `id` ,
`klan` ,
`action` ,
`level` ,
`login` ,
`u` . `battle` AS `in_battle` ,
`o` . `date` ,
`u` . `invis` ,
( SELECT `id` FROM `effects` WHERE `type` = 2 AND `owner` = `u` . `id` LIMIT 1 ) AS `slp` ,
( SELECT `id` FROM `effects` WHERE ( `type` = 11 OR `type` = 12 OR `type` = 13 OR `type` = 14 ) AND `owner` = `u` . `id` LIMIT 1 ) AS `trv` ,
`deal`
FROM
`online` AS `o` ,
`users` AS `u`
WHERE
`o` . `id` = `u` . `id` AND
( `o` . `date` >= ' . (time() - 90) . ' OR `u` . `in_tower` = 1 ) AND
`o` . `room` = " ' . $user['room'] . ' "
ORDER BY
`u` . `login`
' );
$ttl = " <span style= \" color: #8f0000; font-size: 10pt; \" ><b> " . $rooms [ $user [ 'room' ]] . " ( " . mysql_num_rows ( $data ) . " )</b></span> " ;
$ch1 = '_active' ;
$ch2 = '_passive' ;
$ch3 = '_passive' ;
$ch4 = '_passive' ;
$ch5 = '_passive' ;
2018-01-28 16:40:49 +00:00
}
2018-02-15 20:58:37 +00:00
?>
< html >
< head >
< link rel = " stylesheet " type = " text/css " href = " css/main.css " />
< meta charset = " utf-8 " >
< script >
function fastshow ( content ) {
var el = document . getElementById ( " mmoves " );
var o = window . event . srcElement ;
if ( content != '' && el . style . visibility != " visible " ) {
el . innerHTML = '<small>' + content + '</small>' ;
}
var x = window . event . clientX + document . documentElement . scrollLeft + document . body . scrollLeft + 3 ;
var y = window . event . clientY + document . documentElement . scrollTop + document . body . scrollTop + 5 ;
el . style . left = x + " px " ;
el . style . top = y + " px " ;
if ( el . style . visibility != " visible " ) {
el . style . visibility = " visible " ;
}
}
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
function hideshow () {
document . getElementById ( " mmoves " ) . style . visibility = 'hidden' ;
}
2018-01-28 16:40:49 +00:00
2018-02-16 00:11:49 +00:00
function w ( name , in_battle , align , klan , act , level , slp , trv , name2 ) {
2018-02-15 20:58:37 +00:00
if ( align . length > 0 ) {
align = '<img src="i/align_' + align + '.gif" title="Склонность персонажа" width=12 height=15>' ;
}
2018-02-16 00:11:49 +00:00
style = '' ;
2018-02-15 20:58:37 +00:00
if ( ! name2 ) name2 = name ;
if ( klan . length > 0 ) {
klan = '<img src="i/klan/' + klan + '.gif" title="' + klan + '">' ;
}
document . write ( '<A HREF="javascript:top.AddToPrivate(\'' + name + '\', top.CtrlPress)" target=refreshed><img src="i/' );
if ( in_battle > 0 ) {
document . write ( 'lock2.gif' );
} else {
document . write ( 'lock.gif' );
}
2018-02-16 00:11:49 +00:00
document . write ( '" title="Приват"></A>' + align + '<a href="(\'' + name + '\',true)"></a>' + klan + '' + act + '<a href="javascript:top.AddTo(\'' + name + '\')" target=refreshed style=\'' + style + '\'>' + name2 + '</a>[' + level + ']<a href="inf.php?' + name + '" target=_blank title="Инф. о ' + name + '">' + '<IMG SRC="i/inf.gif" WIDTH=12 HEIGHT=11 BORDER=0 ALT="Инф. о ' + name + '"></a>' );
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
if ( slp > 0 ) {
document . write ( ' <IMG SRC="i/sleep2.gif" WIDTH=24 HEIGHT=15 BORDER=0 ALT="Наложено заклятие молчания">' );
}
if ( trv > 0 ) {
document . write ( ' <IMG SRC="i/travma2.gif" WIDTH=24 HEIGHT=15 BORDER=0 ALT="Инвалидность">' );
}
if ( in_battle > 0 ) {
document . write ( ' <IMG SRC="i/b.jpg" WIDTH=15 HEIGHT=15 BORDER=0 title="Персонаж в поединке"></a>' );
}
document . write ( '<BR>' );
}
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
top . rld ();
</ script >
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
< title >< ? = $rooms [ $user [ 'room' ]], ' (' , mysql_num_rows ( $data ) ?> )</title>
</ head >
< body style = " margin: 0px; padding: 0px; background: #EEEEEE; " onscroll = " top.myscroll() "
onload = " document.body.scrollTop=top.OnlineOldPosition " >
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
< ? if ( $user [ 'first' ] != 99 ) { ?>
< center >
< div id = " mini_qsst " onclick = " top.frames['main'].location.href='kwest.php'; "
style = " cursor: pointer; display: block; " >< img src = " i/bot_q/mini_wm1.png " ></ div >
</ center >
< ? } ?>
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
< center >
< ? if ( ! $_GET [ 'rms' ]) { ?>
< div id = " fixednew "
style = " position: fixed; margin: 0px; padding: 0px; z-index: 9; width: 100%; text-align: center; overflow: auto; " >
< table border = " 0 " cellpadding = " 0 " cellspacing = " 0 " >
< tbody >
< tr >
< td >< img align = " left "
onclick = " this.src='i/buttons/ch1_passive.jpg'; location.href='ch.php?online='+Math.random(); "
src = " i/buttons/ch1<?= $ch1 ; ?>.jpg " /></ td >
< ? if ( ! empty ( $user [ 'klan' ])) { ?>
< td >< img align = " left " title = " Соклановцы " style = " cursor: pointer; "
onclick = " location.href='ch.php?online='+Math.random()+'&chview=5'; "
src = " i/buttons/ch5<?= $ch5 ; ?>.jpg " /></ td >
< ? } ?>
</ tr >
</ tbody >
</ table >
</ div >< br />< br />< br />
< ? } ?>
< div id = " mmoves "
style = " background-color: #FFFFCC; visibility:hidden; overflow: visible; position: absolute; border-color: #666666; border-style: solid; border-width: 0px; padding: 0px; white-space: nowrap; display: block; vertical-align: middle; word-wrap: break-word; " ></ div >
< ?
if ( ! $_GET [ 'room' ]) {
if ( ! isset ( $_GET [ 'chview' ]) || $_GET [ 'chview' ] == 1 ) {
echo '<input type=\'button\' onclick=\'location.href="ch.php?online=' . rand ( 100000 , 9999999 ) . '";\' value=\'Обновить\' />' ;
} else {
echo '<input type=\'button\' onclick=\'location.href="ch.php?online=' . rand ( 100000 , 9999999 ) . '&chview=' . ( int ) $_GET [ 'chview' ] . '";\' value=\'Обновить\' />' ;
}
}
?>
< ? echo '<br />' . $ttl . '<br />' ; ?>
</ center >
< table border = 0 >
< tr >
< td nowrap >
< script >
< ? php
2018-03-01 21:26:13 +00:00
while ( $row = $data -> fetch_assoc ()) {
2018-02-15 20:58:37 +00:00
if ( $row [ 'in_battle' ] > 0 ) {
$in_battle = 1 ;
} else {
$in_battle = 0 ;
}
if ( $row [ 'invis' ] > 0 && $row [ 'id' ] == $_SESSION [ 'uid' ]) {
$row [ 'login2' ] = $row [ 'login' ] . " </a> (невидимка) " ;
}
if ( $row [ 'invis' ] == 0 || $row [ 'id' ] == $_SESSION [ 'uid' ]) {
if ( ! empty ( $row [ 'action' ])) {
2018-07-02 15:35:25 +00:00
function stripslashes_deep ( $text )
{
while ( strstr ( $text , " \\ " )) {
$text = stripslashes ( $text );
}
return $text ;
}
2018-02-15 20:58:37 +00:00
$rrr = $row [ 'action' ];
$act = explode ( " <>:<> " , $rrr );
$aa = htmlspecialchars ( stripslashes_deep ( $act [ 1 ]));
2018-02-16 00:11:49 +00:00
$aa = preg_replace ( " /afk " , " " , $aa )
2018-02-15 20:58:37 +00:00
$aa = preg_replace ( " /dnd " , " " , $aa );
$aa = preg_replace ( " /buy " , " " , $aa );
$aa = preg_replace ( " /sell " , " " , $aa );
$act_line = " <span onmouseover= \" fastshow( \ ' $aa\ ') \" onmouseout= \" hideshow() \" ><b><small> { $act [ 0 ] } </small></b></span> " ;
} else $act_line = '' ;
echo 'w(\'' , $row [ 'login' ], '\',' , $row [ 'id' ], ',' , $in_battle , ',\'' , $row [ 'align' ], '\',\'' . ClanImage ( $row [ 'klan' ]) . '\', \'' . $act_line . '\',\'' , $row [ 'level' ], '\',\'' , $row [ 'slp' ], '\',\'' , $row [ 'trv' ], '\',\'' , ( int ) $row [ 'deal' ], '\',\'' , $row [ 'login2' ], '\');' ;
}
}
?>
</ script >
</ td >
</ tr >
</ table >
< ? php
if ( ! $_GET [ 'room' ]) {
?>
< SCRIPT > document . write ( '<INPUT TYPE=checkbox onclick="if(this.checked == true) { top.OnlineStop = false; } else { top.OnlineStop = true; }" ' + ( top . OnlineStop ? '' : 'checked' ) + '> Обновлять автомат.' )
</ SCRIPT ></ body ></ html >
< ? php
die ();
}
} elseif ( @ $_GET [ 'show' ] != null ) {
if ( $_SESSION [ 'sid' ] != $user [ 'sid' ]) {
$_SESSION [ 'uid' ] = null ;
die ( " <script>top.location.href='index.php';</script> " );
}
$cha = file ( " tmp/chat.txt " );
header ( 'Content-Type: text/html; charset=utf-8' );
echo " <script> " ;
$ks = 0 ;
foreach ( $cha as $k => $v ) {
preg_match ( " /: \ [(.*) \ ]: \ [(.*) \ ]: \ [(.*)]: \ [(.*) \ ]/ " , $v , $math );
if ( $math [ 1 ] > time () - 60 ) {
$math [ 3 ] = stripslashes ( $math [ 3 ]);
2018-01-28 16:40:49 +00:00
//echo "console.log($math[1]|$math[2]|$math[3]);";
2018-02-15 20:58:37 +00:00
if (( @ $math [ 2 ] == '{[]}' . $user [ 'login' ] . '{[]}' ) && ( @ $math [ 1 ] >= @ $user [ 'chattime' ])) {
echo " top.frames['chat'].document.all( \" mes \" ).innerHTML += '<span class=date2> " . date ( " H:i " , $math [ 1 ]) . " </span> " . $math [ 3 ] . " <BR>'; " ;
echo " top.frames['chat'].document.all( \" mes_system \" ).innerHTML += '<span class=date2> " . date ( " H:i " , $math [ 1 ]) . " </span> " . $math [ 3 ] . " <BR>'; " ;
echo " top.show_new( \" wtab1 \" ); top.show_new( \" wtab5 \" ); " ;
2018-01-28 16:40:49 +00:00
$ks ++ ;
2018-02-15 20:58:37 +00:00
$lastpost = $math [ 1 ];
} elseif ( substr ( $math [ 2 ], 0 , 4 ) == '{[]}' && ( @ $math [ 1 ] >= @ $user [ 'chattime' ])) {
//exit;
} elseif (( @ $math [ 2 ] == '!sys!!' ) && ( @ $math [ 1 ] >= @ $user [ 'chattime' ]) /*&& ($user['room']==$math[4])*/ && $_GET [ 'om' ] != 1 ) {
if ( $_GET [ 'sys' ] == 1 || strpos ( $math [ 3 ], " <img src=i/magic/ " ) !== FALSE ) {
echo " top.frames['chat'].document.all( \" mes \" ).innerHTML += '<span class=date> " . date ( " H:i " , $math [ 1 ]) . " </span> " . $math [ 3 ] . " <BR>'; " ;
echo " top.frames['chat'].document.all( \" mes_system \" ).innerHTML += '<span class=date> " . date ( " H:i " , $math [ 1 ]) . " </span> " . $math [ 3 ] . " <BR>'; " ;
echo " top.show_new( \" wtab5 \" ); " ;
2018-01-28 16:40:49 +00:00
$ks ++ ;
2018-02-15 20:58:37 +00:00
$lastpost = $math [ 1 ];
}
} elseif ( @ $math [ 2 ] == '!sys2all!!' && @ $math [ 1 ] >= @ $user [ 'chattime' ]) {
echo " top.frames['chat'].document.all( \" mes \" ).innerHTML += '<span class=date> " . date ( " H:i " , $math [ 1 ]) . " </span> " . $math [ 3 ] . " <BR>'; " ;
echo " top.frames['chat'].document.all( \" mes_system \" ).innerHTML += '<span class=date> " . date ( " H:i " , $math [ 1 ]) . " </span> " . $math [ 3 ] . " <BR>'; " ;
echo " top.show_new( \" wtab5 \" ); " ;
2018-01-28 16:40:49 +00:00
$ks ++ ;
2018-02-15 20:58:37 +00:00
$lastpost = $math [ 1 ];
} elseif (( @ $math [ 2 ] == '!cavesys!!' ) && ( @ $math [ 1 ] >= @ $user [ 'chattime' ]) && ( $user [ 'caveleader' ] == $math [ 4 ])) {
echo " top.frames['chat'].document.getElementById( \" mes \" ).innerHTML += '<span class=date> " . date ( " H:i " , $math [ 1 ]) . " </span> " . $math [ 3 ] . " <BR>'; " ;
echo " top.frames['chat'].document.all( \" mes_system \" ).innerHTML += '<span class=date> " . date ( " H:i " , $math [ 1 ]) . " </span> " . $math [ 3 ] . " <BR>'; " ;
echo " top.show_new( \" wtab5 \" ); " ;
2018-01-28 16:40:49 +00:00
$ks ++ ;
$lastpost = $math [ 1 ];
} elseif ( @ $math [ 1 ] >= @ $user [ 'chattime' ]) {
2018-02-15 20:58:37 +00:00
if ( strpos ( $math [ 3 ], " private [klan- { $user [ 'klan' ] } - " ) !== FALSE ) {
$pos = strpos ( $math [ 3 ], " [klan- { $user [ 'klan' ] } - " ) + strlen ( $user [ 'klan' ]) + 7 ;
} elseif ((( strpos ( $math [ 3 ], " private [help] " ) !== FALSE ))) {
$math [ 3 ] = preg_replace ( " /private \ [help]/Ue " , " " , $math [ 3 ]);
echo " top.frames['chat'].document.all( \" mes_help \" ).innerHTML += '<span class=date2> " . date ( " H:i " , $math [ 1 ]) . " </span> [<a href= \ 'javascript:top.AddTo( \" { $math [ 2 ] } \" ) \ '><span oncontextmenu= \ 'return OpenMenu(event, " . $user [ 'level' ] . " ) \ '> { $math [ 2 ] } </span></a>] " . $math [ 3 ] . " <BR>'; " ;
if ( $math [ 2 ] != $user [ 'login' ] && $user [ 'align' ] == 2.99 ) {
echo " top.show_new( \" wtab6 \" ); " ;
}
$ks ++ ;
$lastpost = $math [ 1 ];
} elseif ((( strpos ( $math [ 3 ], " private [trade] " ) !== FALSE ))) {
$math [ 3 ] = preg_replace ( " /private \ [trade]/Ue " , " " , $math [ 3 ]);
echo " top.frames['chat'].document.all( \" mes_trade \" ).innerHTML += '<span class=date2> " . date ( " H:i " , $math [ 1 ]) . " </span> [<a href= \ 'javascript:top.AddTo( \" { $math [ 2 ] } \" ) \ '><span oncontextmenu= \ 'return OpenMenu(event, " . $user [ 'level' ] . " ) \ '> { $math [ 2 ] } </span></a>] " . $math [ 3 ] . " <BR>'; " ;
if ( $math [ 2 ] != $user [ 'login' ]) {
echo " top.show_new( \" wtab8 \" ); " ;
}
$ks ++ ;
$lastpost = $math [ 1 ];
} elseif ( strpos ( $math [ 3 ], " private [pal] " ) !== FALSE ) {
if (( int ) $user [ 'align' ] == 1 || $user [ 'admin' ] == 1 ) {
$math [ 3 ] = preg_replace ( " /private \ [pal]/Ue " , " " , $math [ 3 ]);
echo " top.frames['chat'].document.all( \" mes_pal \" ).innerHTML += '<span class=date2> " . date ( " H:i " , $math [ 1 ]) . " </span> [<a href= \ 'javascript:top.AddTo( \" { $math [ 2 ] } \" ) \ '><span oncontextmenu= \ 'return OpenMenu(event, " . $user [ 'level' ] . " ) \ '> { $math [ 2 ] } </span></a>] " . $math [ 3 ] . " <BR>'; " ;
$ks ++ ;
$lastpost = $math [ 1 ];
}
} elseif ((( strpos ( $math [ 3 ], " private [klan- { $user [ 'klan' ] } ] " ) !== FALSE ))) {
if ( $user [ 'klan' ] != '' ) {
2018-01-28 16:40:49 +00:00
$math [ 3 ] = preg_replace ( " /private \ [klan \ - { $user [ 'klan' ] } \ ]/Ue " , " " , $math [ 3 ]);
2018-02-15 20:58:37 +00:00
echo " top.frames['chat'].document.all( \" mes_klan \" ).innerHTML += '<span class=date2> " . date ( " H:i " , $math [ 1 ]) . " </span> [<a href= \ 'javascript:top.AddTo( \" { $math [ 2 ] } \" ) \ '><span oncontextmenu= \ 'return OpenMenu(event, " . $user [ 'level' ] . " ) \ '> { $math [ 2 ] } </span></a>] " . $math [ 3 ] . " <BR>'; " ;
if ( $math [ 2 ] != $user [ 'login' ]) {
echo " top.show_new( \" wtab3 \" ); " ;
2018-01-28 16:40:49 +00:00
}
$ks ++ ;
2018-02-15 20:58:37 +00:00
$lastpost = $math [ 1 ];
}
} elseif ((( strpos ( $math [ 3 ], " private [ { $user [ 'login' ] } ] " ) !== FALSE ))) {
$sound = false ;
preg_match_all ( " /private \ [(.*) \ ]/siU " , $math [ 3 ], $mmm , PREG_PATTERN_ORDER );
foreach ( $mmm [ 1 ] as $res ) {
$res = trim ( $res );
2018-01-28 16:40:49 +00:00
$res = iconv ( " utf-8 " , " utf-8 " , $res );
2018-02-15 20:58:37 +00:00
if ( $sound == false ) $sound = ( $res == $user [ 'login' ]) ? true : false ;
if ( strlen ( $res ) < 3 || strlen ( $res ) > 120 || ! preg_match ( " /^[ёa-zA-Zа -яА-Я0-9-][ёa-zA-Zа -яА-Я0-9_ -]+[a-zA-Zа -яА-Я0-9ё-] $ / " , $res ) || preg_match ( " /__/ " , $res ) || preg_match ( " /--/ " , $res ) || preg_match ( " / / " , $res ) || preg_match ( " /(.) \\ 1 \\ 1 \\ 1/ " , $res )) {
$math [ 3 ] = str_replace ( $res , $user [ 'login' ], $math [ 3 ]);
}
}
$math [ 3 ] = preg_replace ( " /private \ [(.*) \ ]/Ue " , " '<a href='.chr(92).' \ 'javascript:top.AddToPrivate( \" '.((' \\ 1' != ' " . $user [ 'login' ] . " ')?' \\ 1':' " . $math [ 2 ] . " ').' \" ,false)'.chr(92).' \ ' class=private>private [ <span oncontextmenu= \" return OpenMenu(event, " . $user [ 'level' ] . " ) \" > \\ 1</span> ]</a>' " , $math [ 3 ]);
$sssss = " top.frames['chat'].document.all( \" mes \" ).innerHTML += '<span class=date2> " . date ( " H:i " , $math [ 1 ]) . " </span> [<a href= \ 'javascript:top.AddTo( \" { $math [ 2 ] } \" ) \ '><span oncontextmenu= \ 'return OpenMenu(event, " . $user [ 'level' ] . " ) \ '> { $math [ 2 ] } </span></a>] " . $math [ 3 ] . " <BR>'; " ;
echo " top.frames['chat'].document.all( \" mes_private \" ).innerHTML += '<span class=date2> " . date ( " H:i " , $math [ 1 ]) . " </span> [<a href= \ 'javascript:top.AddTo( \" { $math [ 2 ] } \" ) \ '><span oncontextmenu= \ 'return OpenMenu(event, " . $user [ 'level' ] . " ) \ '> { $math [ 2 ] } </span></a>] " . $math [ 3 ] . " <BR>'; " ;
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
if ( $sound == true ) {
$sssss .= " top.soundD(); " ;
}
echo $sssss ;
$ks ++ ;
$lastpost = $math [ 1 ];
2018-01-28 16:40:49 +00:00
unset ( $math [ 3 ]);
2018-02-15 20:58:37 +00:00
} elseif ( $math [ 2 ] == $user [ 'login' ]) {
$sound = false ;
preg_match_all ( " /private \ [(.*) \ ]/siU " , $math [ 3 ], $mmm , PREG_PATTERN_ORDER );
foreach ( $mmm [ 1 ] as $res ) {
$res = trim ( $res );
2018-01-28 16:40:49 +00:00
$res = iconv ( " utf-8 " , " utf-8 " , $res );
2018-02-15 20:58:37 +00:00
if ( $sound == false ) $sound = ( $res == $user [ 'login' ]) ? true : false ;
if ( strlen ( $res ) < 3 || strlen ( $res ) > 120 || ! preg_match ( " /^[ёa-zA-Zа -яА-Я0-9-][ёa-zA-Zа -яА-Я0-9_ -]+[a-zA-Zа -яА-Я0-9ё-] $ / " , $res ) || preg_match ( " /__/ " , $res ) || preg_match ( " /--/ " , $res ) || preg_match ( " / / " , $res ) || preg_match ( " /(.) \\ 1 \\ 1 \\ 1/ " , $res )) {
$math [ 3 ] = str_replace ( $res , $user [ 'login' ], $math [ 3 ]);
}
}
$math [ 3 ] = preg_replace ( " /private \ [(.*) \ ]/Ue " , " '<a href='.chr(92).' \ 'javascript:top.AddToPrivate( \" '.((' \\ 1' != ' " . $user [ 'login' ] . " ')?' \\ 1':' " . $math [ 2 ] . " ').' \" ,false)'.chr(92).' \ ' class=private>private [ <span oncontextmenu= \" return OpenMenu(event, " . $user [ 'level' ] . " ) \" > \\ 1</span> ]</a>' " , $math [ 3 ]);
$sssss = " top.frames['chat'].document.all( \" mes \" ).innerHTML += '<span class=date2> " . date ( " H:i " , $math [ 1 ]) . " </span> [<a href= \ 'javascript:top.AddTo( \" { $math [ 2 ] } \" ) \ '><span oncontextmenu= \ 'return OpenMenu(event, " . $user [ 'level' ] . " ) \ '> { $math [ 2 ] } </span></a>] " . $math [ 3 ] . " <BR>'; " ;
$sssss .= " top.frames['chat'].document.all( \" mes_private \" ).innerHTML += '<span class=date2> " . date ( " H:i " , $math [ 1 ]) . " </span> [<a href= \ 'javascript:top.AddTo( \" { $math [ 2 ] } \" ) \ '><span oncontextmenu= \ 'return OpenMenu(event, " . $user [ 'level' ] . " ) \ '> { $math [ 2 ] } </span></a>] " . $math [ 3 ] . " <BR>'; " ;
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
if ( $sound == true ) {
$sssss .= " top.soundD(); " ;
}
echo $sssss ;
$ks ++ ;
$lastpost = $math [ 1 ];
2018-01-28 16:40:49 +00:00
unset ( $math [ 3 ]);
2018-02-15 20:58:37 +00:00
} elseif (( strpos ( $math [ 3 ], " private " ) === FALSE ) /*&& ($user['room'] == $math[4])*/ ) {
$times = '' ;
2018-01-28 16:40:49 +00:00
$soundON = '' ;
2018-02-15 20:58:37 +00:00
if (( strpos ( $math [ 3 ], " [ " . $user [ 'login' ] . " ] " ) > 0 ) || ( $math [ 2 ] == $user [ 'login' ])) {
$times = 'date2' ;
$math [ 3 ] = str_replace ( " to [ " . $user [ 'login' ] . " ] " , " <b>to [ " . $user [ 'login' ] . " ]</b> " , $math [ 3 ]);
$soundON = 'top.soundD();' ;
} elseif ( $_GET [ 'om' ] != 1 ) {
$times = 'date' ;
}
if ( $_GET [ 'om' ] != 1 || $times == 'date2' ) {
echo $soundON . " top.frames['chat'].document.all( \" mes \" ).innerHTML += '<span class= { $times } > " . date ( " H:i " , $math [ 1 ]) . " </span> [<a href= \ 'top.AddTo( \" { $math [ 2 ] } \" ) \ '><span oncontextmenu= \ 'return OpenMenu(event, " . $user [ 'level' ] . " ) \ '> { $math [ 2 ] } </span></a>] " . $math [ 3 ] . " <BR>'; " ;
2018-01-28 16:40:49 +00:00
$ks ++ ;
2018-02-15 20:58:37 +00:00
$lastpost = $math [ 1 ];
}
}
}
}
}
if ( $ks > 0 ) {
2018-03-01 21:26:13 +00:00
db :: c () -> query ( " UPDATE `users` SET `chattime` = ' " . ( $lastpost + 1 ) . " ' WHERE `id` = { $user [ 'id' ] } LIMIT 1 " );
2018-02-15 20:58:37 +00:00
}
echo " </script><script>top.srld();</script> " ;
2018-03-01 21:26:13 +00:00
db :: c () -> query ( " UPDATE `online` SET `date` = " . time () . " WHERE `id` = { $user [ 'id' ] } LIMIT 1 " );
2018-02-15 20:58:37 +00:00
die ();
} else {
if ( strpos ( $_GET [ 'text' ], " private " ) !== FALSE && $user [ 'level' ] < 1 ) {
preg_match_all ( " / \ [(.*) \ ]/U " , $_GET [ 'text' ], $matches );
for ( $ii = 0 ; $ii < count ( $matches [ 1 ]); $ii ++ ) {
2018-03-01 21:26:13 +00:00
$dde = db :: c () -> query ( " SELECT `id` FROM `users` WHERE (`deal` = 1 OR (`align`>1 AND `align`<2)) AND `login` = ' " . trim ( $matches [ 1 ][ $ii ]) . " ' LIMIT 1 ; " ) -> fetch_assoc ();
2018-02-15 20:58:37 +00:00
if ( ! $dde [ 'id' ]) {
exit ();
}
}
}
if ( @ trim ( $_GET [ 'text' ]) != null ) {
2018-03-01 21:26:13 +00:00
$rr = db :: c () -> query ( " SELECT `id` FROM `effects` WHERE `type` = 2 AND `owner` = { $user [ 'id' ] } ; " ) -> fetch_assoc ();
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
# Ограничения на ввод символов в чат!
if ( ! isset ( $rr [ 'id' ])) {
$_GET [ 'text' ] = substr ( $_GET [ 'text' ], 0 , 1024 ); // Ограничние на символы в чате!
$_GET [ 'text' ] = str_replace ( '<' , '<' , $_GET [ 'text' ]);
$_GET [ 'text' ] = str_replace ( ']:[' , '] : [' , $_GET [ 'text' ]);
$_GET [ 'text' ] = str_replace ( '>' , '>' , $_GET [ 'text' ]);
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
$_GET [ 'text' ] = preg_replace ( '/private \[klan-([a-zA-Z]*)\]/' , '' , $_GET [ 'text' ]);
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
if ( $user [ 'klan' ] == '' ) {
$_GET [ 'text' ] = str_replace ( 'private [klan]' , '' , $_GET [ 'text' ]);
$_GET [ 'text' ] = str_replace ( 'private [klan]' , 'private [klan-' . $user [ 'klan' ] . ']' , $_GET [ 'text' ]);
} else {
$_GET [ 'text' ] = str_replace ( 'private [klan]' , 'private [klan-' . $user [ 'klan' ] . ']' , $_GET [ 'text' ]);
$_GET [ 'text' ] = preg_replace ( '/private \[klan-([1-9])\]/' , 'private [klan-' . $user [ 'klan' ] . ']' , $_GET [ 'text' ]);
$pos = strpos ( $_GET [ 'text' ], " [klan- { $user [ 'klan' ] } " ) + strlen ( $user [ 'klan' ]) + 7 ;
}
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
if ( $_GET [ 'chtype' ] == 6 && stristr ( $_GET [ 'text' ], 'private' ) === FALSE ) {
$_GET [ 'text' ] = 'private [help] ' . $_GET [ 'text' ];
} elseif ( $_GET [ 'chtype' ] == 8 && stristr ( $_GET [ 'text' ], 'private' ) === FALSE ) {
$_GET [ 'text' ] = 'private [trade] ' . $_GET [ 'text' ];
} elseif ( $_GET [ 'chtype' ] == 3 && $user [ 'klan' ] != '' ) {
$_GET [ 'text' ] = 'private [klan-' . $user [ 'klan' ] . '] ' . $_GET [ 'text' ];
} elseif ( $_GET [ 'chtype' ] == 4 && ((( int ) $user [ 'align' ] == 1 ) || $user [ 'admin' ] == 1 )) {
$_GET [ 'text' ] = 'private [pal] ' . $_GET [ 'text' ];
}
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
if (( int ) $user [ 'align' ] != 1 && $user [ 'admin' ] != 1 ) {
$_GET [ 'text' ] = str_replace ( 'private [pal]' , '' , $_GET [ 'text' ]);
}
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
unset ( $tmp );
# Упростил тот Адъ и Израиль до одной нормальной строчки, которая вырежет все ссылки.
2018-02-16 00:11:49 +00:00
if ( ! preg_match ( GAMEDOMAIN , $_GET [ 'text' ]) || ! preg_match ( " /imgur.com/ " , $_GET [ 'text' ])) {
2018-02-15 20:58:37 +00:00
$_GET [ 'text' ] = preg_replace ( " @((https?://)?([- \ w]+ \ .[- \ w \ .]+)+ \ w(: \ d+)?(/([- \ w/_ \ .]*( \ ? \ S+)?)?)*)@ " , '<i style="color:silver;"><РАП/Р В С ></i>' , $_GET [ 'text' ]);
}
$smiles = array ( " /:flowers:/ " , " /:inv:/ " , " /:hug:/ " , " /:horse:/ " , " /:str:/ " , " /:susel:/ " , " /:smile:/ " , " /:laugh:/ " , " /:fingal:/ " , " /:eek:/ " , " /:smoke:/ " , " /:hi:/ " , " /:bye:/ " , " /:king:/ " , " /:king2:/ " , " /:boks2:/ " , " /:boks:/ " , " /:gent:/ " , " /:lady:/ " , " /:tongue:/ " , " /:smil:/ " , " /:rotate:/ " , " /:ponder:/ " , " /:bow:/ " , " /:angel:/ " , " /:angel2:/ " , " /:hello:/ " , " /:dont:/ " , " /:idea:/ " , " /:mol:/ " , " /:super:/ " , " /:beer:/ " , " /:drink:/ " , " /:baby:/ " , " /:tongue2:/ " , " /:sword:/ " , " /:agree:/ " , " /:loveya:/ " , " /:kiss:/ " , " /:kiss2:/ " , " /:kiss3:/ " , " /:kiss4:/ " , " /:rose:/ " , " /:love:/ " , " /:love2:/ " , " /:confused:/ " , " /:yes:/ " , " /:no:/ " , " /:shuffle:/ " , " /:nono:/ " , " /:maniac:/ " , " /:privet:/ " , " /:ok:/ " , " /:ninja:/ " , " /:pif:/ " , " /:smash:/ " , " /:alien:/ " , " /:pirate:/ " , " /:gun:/ " , " /:trup:/ " , " /:mdr:/ " , " /:sneeze:/ " , " /:mad:/ " , " /:friday:/ " , " /:cry:/ " , " /:grust:/ " , " /:rupor:/ " , " /:fie:/ " , " /:nnn:/ " , " /:row:/ " , " /:red:/ " , " /:lick:/ " , " /:help:/ " , " /:wink:/ " , " /:jeer:/ " , " /:tease:/ " , " /:kruger:/ " , " /:girl:/ " , " /:Knight1:/ " , " /:rev:/ " , " /:smile100:/ " , " /:smile118:/ " , " /:smile149:/ " , " /:smile166:/ " , " /:smile237:/ " , " /:smile245:/ " , " /:smile28:/ " , " /:smile289:/ " , " /:smile314:/ " , " /:smile36:/ " , " /:smile39:/ " , " /:smile44:/ " , " /:smile70:/ " , " /:smile87:/ " , " /:smile434:/ " , " /:vamp:/ " );
$smiles2 = array ( " <img style= \" cursor:pointer; \" onclick=S( \" flowers \" ) src=i/smiles/flowers.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" inv \" ) src=i/smiles/inv.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" hug \" ) src=i/smiles/hug.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" horse \" ) src=i/smiles/horse.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" str \" ) src=i/smiles/str.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" susel \" ) src=i/smiles/susel.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" smile \" ) src=i/smiles/smile.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" laugh \" ) src=i/smiles/laugh.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" fingal \" ) src=i/smiles/fingal.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" eek \" ) src=i/smiles/eek.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" smoke \" ) src=i/smiles/smoke.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" hi \" ) src=i/smiles/hi.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" bye \" ) src=i/smiles/bye.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" king \" ) src=i/smiles/king.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" king2 \" ) src=i/smiles/king2.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" boks2 \" ) src=i/smiles/boks2.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" boks \" ) src=i/smiles/boks.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" gent \" ) src=i/smiles/gent.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" lady \" ) src=i/smiles/lady.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" tongue \" ) src=i/smiles/tongue.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" smil \" ) src=i/smiles/smil.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" rotate \" ) src=i/smiles/rotate.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" ponder \" ) src=i/smiles/ponder.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" bow \" ) src=i/smiles/bow.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" angel \" ) src=i/smiles/angel.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" angel2 \" ) src=i/smiles/angel2.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" hello \" ) src=i/smiles/hello.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" dont \" ) src=i/smiles/dont.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" idea \" ) src=i/smiles/idea.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" mol \" ) src=i/smiles/mol.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" super \" ) src=i/smiles/super.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" beer \" ) src=i/smiles/beer.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" drink \" ) src=i/smiles/drink.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" baby \" ) src=i/smiles/baby.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" tongue2 \" ) src=i/smiles/tongue2.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" sword \" ) src=i/smiles/sword.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" agree \" ) src=i/smiles/agree.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" loveya \" ) src=i/smiles/loveya.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" kiss \" ) src=i/smiles/kiss.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" kiss2 \" ) src=i/smiles/kiss2.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" kiss3 \" ) src=i/smiles/kiss3.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" kiss4 \" ) src=i/smiles/kiss4.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" rose \" ) src=i/smiles/rose.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" love \" ) src=i/smiles/love.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" love2 \" ) src=i/smiles/love2.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" confused \" ) src=i/smiles/confused.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" yes \" ) src=i/smiles/yes.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" no \" ) src=i/smiles/no.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" shuffle \" ) src=i/smiles/shuffle.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" nono \" ) src=i/smiles/nono.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" maniac \" ) src=i/smiles/maniac.gif> " , " <img style= \" cursor:pointer; \" onclick=S( \" privet \" ) src=i/smiles/privet.g
preg_match_all ( " / \ [(.*) \ ]/U " , $_GET [ 'text' ], $matches );
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
$_GET [ 'text' ] = preg_replace ( $smiles , $smiles2 , $_GET [ 'text' ], 3 );
$_GET [ 'text' ] = tolink ( $_GET [ 'text' ]);
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
if ( $user [ 'invis' ] == 1 ) {
2018-03-01 21:26:13 +00:00
$tme = db :: c () -> query ( " SELECT `time` FROM `effects` WHERE `owner` = ' $user[id] ' AND `type` = '1022' " ) -> fetch_assoc ();
2018-02-15 20:58:37 +00:00
$user [ 'login' ] = '</a><b><i>невидимка ' . substr ( $tme [ 0 ], strlen ( $tme [ 0 ]) - 4 ) . '</i></b>' ;
}
2018-01-28 16:40:49 +00:00
2018-02-15 20:58:37 +00:00
# Понять бы какого чёрта условия два… Инс.
if ( $action != 1 ) {
$file = 'tmp/chat.txt' ;
if ( filesize ( " tmp/chat.txt " ) > 100 * 1024 ) {
$line = " \r \n :[ " . time () . " ]:[ { $user [ 'login' ] } ]:[<font color= \" " . (( $user [ 'color' ]) ? $user [ 'color' ] : " #000000 " ) . " \" > " . ( $_GET [ 'text' ]) . " </font>]:[ " . $user [ 'room' ] . " ] \r \n " ;
// Пишем содержимое в файл,
// используя флаг FILE_APPEND flag для дописывания содержимого в конец файла
// и флаг LOCK_EX для предотвращения записи данного файла кем-нибудь другим в данное время
// а то заебали устаревшие функции использовать. Инс.
file_put_contents ( $file , $line , FILE_APPEND | LOCK_EX );
echo " 1 " ;
} else {
$line = " :[ " . time () . " ]:[ { $user [ 'login' ] } ]:[<font color= \" " . (( $user [ 'color' ]) ? $user [ 'color' ] : " #000000 " ) . " \" > " . ( $_GET [ 'text' ]) . " </font>]:[ " . $user [ 'room' ] . " ] \r \n " ;
file_put_contents ( $file , $line , FILE_APPEND | LOCK_EX );
echo " 2 " ;
}
}
}
die ( " <script>top.CLR1(); top.RefreshChat();</script> " );
}
2018-02-16 00:11:49 +00:00
}