//Includio i parametri, la configurazione, la lingua e le funzioni require 'includes/constant_values.inc.php'; require 'config.inc.php'; require 'vocabulary/'.$PARAMETERS['languages']['set'].'.vocabulary.php'; require 'includes/functions.inc.php';
//Eseguo la connessione al database $handleDBConnection = gdrcd_connect(); //Ricevo il tempo di reload $i_ref_time = gdrcd_filter_get($_GET['ref']);
/**********************************************************************************/ if((gdrcd_filter_get($_REQUEST['chat'])=='yes')&&(empty($_SESSION['login'])===FALSE)) { /*Aggiornamento chat*/ /*Se ho inviato un azione*/ if ((gdrcd_filter('get',$_POST['op'])=='take_action')&&(($PARAMETERS['mode']['skillsystem']=='ON')||($PARAMETERS['mode']['dices']=='ON'))) { $actual_healt = gdrcd_query("SELECT salute FROM personaggio WHERE nome = '".$_SESSION['login']."'");
if (gdrcd_filter('get',$_POST['id_ab'])!='no_skill') { if ($actual_healt['salute']>0) { $skill = gdrcd_query("SELECT nome, car FROM abilita WHERE id_abilita = ".gdrcd_filter('num',$_POST['id_ab'])." LIMIT 1");
$car = gdrcd_query("SELECT car".gdrcd_filter('num',$skill['car'])." AS car_now FROM personaggio WHERE nome = '".$_SESSION['login']."' LIMIT 1");
$bonus = gdrcd_query("SELECT SUM(oggetto.bonus_car".gdrcd_filter('num',$skill['car']).") as bonus FROM oggetto JOIN clgpersonaggiooggetto ON clgpersonaggiooggetto.id_oggetto=oggetto.id_oggetto WHERE clgpersonaggiooggetto.nome='".$_SESSION['login']."' AND clgpersonaggiooggetto.posizione > 1");
$racial_bonus = gdrcd_query("SELECT bonus_car".gdrcd_filter('num',$skill['car'])." AS racial_bonus FROM razza WHERE id_razza IN (SELECT id_razza FROM personaggio WHERE nome='".$_SESSION['login']."')");
$rank = gdrcd_query("SELECT grado FROM clgpersonaggioabilita WHERE id_abilita=".gdrcd_filter('num',$_POST['id_ab'])." AND nome='".$_SESSION['login']."' LIMIT 1");
$car = gdrcd_query("SELECT car".gdrcd_filter('num',$id_stats[1])." AS car_now FROM personaggio WHERE nome = '".$_SESSION['login']."' LIMIT 1");
$racial_bonus = gdrcd_query("SELECT bonus_car".gdrcd_filter('num',$id_stats[1])." AS racial_bonus FROM razza WHERE id_razza IN (SELECT id_razza FROM personaggio WHERE nome='".$_SESSION['login']."')");
} else if (gdrcd_filter('get',$_POST['id_item'])!='no_item') { $item=explode('-', gdrcd_filter('in',$_POST['id_item'])); if ($item[1]==1) { $query="DELETE FROM clgpersonaggiooggetto WHERE nome ='".$_SESSION['login']."' AND id_oggetto='".gdrcd_filter('num',$item[0])."' LIMIT 1"; } elseif ($item[1]>1) { $query="UPDATE clgpersonaggiooggetto SET cariche = cariche -1 WHERE nome ='".$_SESSION['login']."' AND id_oggetto='".gdrcd_filter('num',$item[0])."' LIMIT 1"; } gdrcd_query($query);
if($type < "5") { if(!empty($_POST['message'])){ //E' un messaggio. /*Verifico il tipo di messaggio*/ if (($type=="4")||($first_char=="@")) { /*Sussurro*/ $m_type='S'; if($type!='4') { $dest_end = strpos(substr($chat_message, 1), "@"); if ($dest_end === FALSE) { /*Se il destinatario e' mal formattato lo prendo come parlato*/ $m_type='P'; } else { $tag_n_beyond=gdrcd_capital_letter(substr($chat_message, 1, $dest_end)); $chat_message=substr($chat_message, $dest_end+2); } }//if if ($m_type=='S') {/*Se il sussurro e' inviato correttamente*/
$r_check_dest = gdrcd_query("SELECT nome FROM personaggio WHERE DATE_ADD(ultimo_refresh, INTERVAL 2 MINUTE) > NOW() AND ultimo_luogo = ".$_SESSION['luogo']." AND nome = '".$tag_n_beyond."' LIMIT 1", 'result');
if($PARAMETERS['mode']['exp_by_chat']=='ON') { if (($m_type == 'A' || $m_type == 'P' || $m_type == 'M') && ($msg_length>=$char_needed)) { $chat_id = gdrcd_query("SELECT * FROM mappa where id = '".$_SESSION['luogo']."'" ); if ($chat_id['privata']==1) {} else {
gdrcd_query("UPDATE personaggio SET esperienza = esperienza + ".$PARAMETERS['settings']['exp_by_chat']['number_increment_xp']." WHERE nome = '".$_SESSION['login']."' LIMIT 1"); /*$PARAMETERS['settings']['exp_by_chat']['number_increment_xp'] /// gdrcd_filter('num', $PARAMETERS['settings']['exp_by_chat']['number'])*/ } /*$PARAMETERS['settings']['exp_by_chat']['number_increment_xp'] $PARAMETERS['settings']['exp_by_chat']['max24h']*/ } }
include '../lavoro_chat.inc.php';
} } else { //Altrimenti e' un comando di stanza privata. $info = gdrcd_query("SELECT invitati, nome, proprietario FROM mappa WHERE id=".$_SESSION['luogo']."");
$ok_command=FALSE; if($info['proprietario']==$_SESSION['login']) { $ok_command=TRUE; } if(strpos($_SESSION['gilda'],$info['proprietario'])!=FALSE) { $ok_command=TRUE; } if (($type=="5")&&($ok_command===TRUE)) { //invita gdrcd_query("UPDATE mappa SET invitati = '".$info['invitati'].','.gdrcd_capital_letter(strtolower(gdrcd_filter('in', $tag_n_beyond)))."' WHERE id=".$_SESSION['luogo']." LIMIT 1");
/*Carico i nuovi messaggi*/ if(empty($last_message)) $last_message = 0;
/** * Scorrimento dei messaggi in chat, verifico se non č stato invertito il flusso, in caso modifico l'ordinamento della query * @author Blancks */ $typeOrder = 'ASC';
if ($PARAMETERS['mode']['chat_from_bottom']=='ON') { $typeOrder = 'DESC'; }
/** * Controllo per impedire il print in chat delle azioni dei precedenti proprietari di una stanza privata * Per stanze non private ora_prenotazione equivarrŕ ad un tempo sempre inferiore all'orario dell'azione inviata * facendo risultare quindi sempre veritiero il controllo in questo caso.
* @author Blancks */ $query= gdrcd_query(" SELECT chat.id, chat.imgs, chat.mittente, chat.destinatario, chat.tipo, chat.ora, chat.testo, personaggio.url_img_chat, mappa.ora_prenotazione FROM chat INNER JOIN mappa ON mappa.id = chat.stanza LEFT JOIN personaggio ON personaggio.nome = chat.mittente WHERE chat.id > ".$last_message." AND stanza = ".$_SESSION['luogo']." AND chat.ora > IFNULL(mappa.ora_prenotazione, '0000-00-00 00:00:00') AND DATE_SUB(NOW(), INTERVAL 30 MINUTE) < ora ORDER BY id ". $typeOrder, 'result');
while ($row = gdrcd_query($query, 'fetch')) { //Impedisci XSS nelle immagini $row['url_img_chat']=gdrcd_filter('fullurl', $row['url_img_chat']);
/** * Fix problema visualizzazione spazi vuoti con i sussurri * @author eLDiabolo */ if ($PARAMETERS['mode']['chat_avatar']=='ON') $add_chat .= '<br style="clear:both;" />';
$add_chat.= '</div>';
break;
case 'S': if ($_SESSION['login']==$row['destinatario']) { /** * Fix problema visualizzazione spazi vuoti con i sussurri * @author eLDiabolo */ $add_chat.= '<div class="chat_row_'.$row['tipo'].'">';
/** * Gestione intelligente della scrollbar * Forza lo scroll solo quando ci sono nuovi messaggi * @author Blancks */ if (!empty($add_chat)) echo 'parent.document.getElementById(\'pagina_chat\').scrollTop = scrolling;';