gdrcd 5.1 | dadi chat
gdrcd 5.1 | dadi chat postato il 06/02/2014 20:25:54 nel forum programmazione, open source e hosting
Salve a tutti! Premetto che non sono un programmatore, quindi la mia domanda potrebbe far ridere molti di voi (...)
Ma comunque, il mio problema riguarda la chat di gioco, nello specifico la pagina è fram_chat.inc
Quello che vorrei fare è eliminare completamente le opzioni a tendina dei dadi e lanciarli con i comandi comuni che si vedono in alcune land (es. &&vol e $dx)
Ho provato a tentare con quei comandi, scrinvendoli direttamente nel posto per l'azione, ma niente. Suppongo che dovrebbe esserci qualche comando -tipo come quello dei sussurro e del MS- da modificare?
Inoltre ho anche provato a togliere il dado di abilità nel file ref_header ma se vado a togliere la barra con il menù a scelta dell'abilità e tiro il dado su caratteristica mi esce:
Test usa : 7, dado 0, 0, totale 7
(il rango l'ho eliminato e ne sono consapevole, si)
Pagine → 1
07/02/2014 18:05:44
In GDRCD 5 il comando per lanciare i dadi dalla chat è:
#dN
dove N è il numero delle facce del dado da tirare
Oppure
#MdN
dove M è il numero di dadi da tirare e N è il numero delle facce dei dadi.
Per far sparire il menù dei dadi dalla chat basta mettere
$PARAMETERS['mode']['dices']='OFF'
nel config, non c'è bisogno di modificare il codice
08/02/2014 12:51:16 e modificato da scleroparecchio il 08/02/2014 13:25:18
no, purtroppo se scrivo quel comando continua a non darmi il dado T_T
aiuterebbe se incollassi il file "ref_header"?
08/02/2014 14:26:38
Se l'hai modificato proviamo a vedere quali parti hai modificato.
Nell'ultima versione sicuramente quel comando da chat funziona, perchè l'ho appena provato (ha un bug, ma lo correggerò tra poco)
08/02/2014 16:08:25 e modificato da gdr-online.com il 04/06/2019 09:44:46
mh, allora incollo il file ref_header:
<?php session_start();
header('Content-Type:text/html; charset=UTF-8');
$last_message = $_SESSION['last_message'];
//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");
/** * Bug Fix: Con skill on e dadi off, il dado lanciava sempre 1 modificando il conteggio finale
* @author Blancks
*/
if ($PARAMETERS['mode']['dices']=='ON')
{
mt_srand((double)microtime()*1000000);
$die = mt_rand(1,(int)$_POST['dice']);
$chat_dice_msg = gdrcd_filter('in', $MESSAGE['chat']['commands']['use_skills']['die']).' '.gdrcd_filter('num',$die).',';
}else
{
$chat_dice_msg = '';
$die = 0;
}
gdrcd_query("INSERT INTO chat ( stanza, imgs, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", '".$_SESSION['sesso'].";".$_SESSION['img_razza']."', '".$_SESSION['login']."', '', NOW(), 'C', '".$_SESSION['login'].' '.gdrcd_filter('in',$MESSAGE['chat']['commands']['use_skills']['uses']).' '.gdrcd_filter('in',$skill['nome']).': '.gdrcd_filter('in',$PARAMETERS['names']['stats']['car'.$skill['car'].'']).' '.gdrcd_filter('num',$car['car_now']+$racial_bonus['racial_bonus']).', '.$chat_dice_msg.' '.gdrcd_filter('in',$MESSAGE['chat']['commands']['use_skills']['ramk']).' '.gdrcd_filter('num',$rank['grado']).', '.gdrcd_filter('in',$MESSAGE['chat']['commands']['use_skills']['items']).' '.gdrcd_filter('num',$bonus['bonus']).', '.gdrcd_filter('in',$MESSAGE['chat']['commands']['use_skills']['sum']).' '.(gdrcd_filter('num',$car['car_now']+$racial_bonus['racial_bonus'])+gdrcd_filter('num',$die)+gdrcd_filter('num',$rank['grado'])+gdrcd_filter('in',$bonus['bonus']))."')");
}else
{
gdrcd_query("INSERT INTO chat ( stanza, imgs, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", '".$_SESSION['sesso'].";".$_SESSION['img_razza']."', '".$_SESSION['login']."', '".gdrcd_capital_letter(gdrcd_filter('in', $_SESSION['login']))."', NOW(), 'S', '".
gdrcd_filter('in',$MESSAGE['status_pg']['exausted'])."')");
}
/** * Tiro su caratteristica
* @author Blancks
*/
} else if (gdrcd_filter('get', $_POST['id_stats']) != 'no_stats' && gdrcd_filter('get',$_POST['dice']) != 'no_dice')
{
mt_srand((double)microtime()*1000000);
$die=mt_rand(1,gdrcd_filter('num', (int)$_POST['dice']));
$id_stats = explode('_', $_POST['id_stats']);
$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']."')");
gdrcd_query("INSERT INTO chat ( stanza, imgs, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", '".$_SESSION['sesso'].";".$_SESSION['img_razza']."', '".$_SESSION['login']."', '', NOW(), 'C', '".$_SESSION['login'].' '.gdrcd_filter('in',$MESSAGE['chat']['commands']['use_skills']['uses']).' '.gdrcd_filter('in',$PARAMETERS['names']['stats']['car'.$id_stats[1]]).': '.gdrcd_filter('in',$PARAMETERS['names']['stats']['car'.$id_stats[1].'']).' '.gdrcd_filter('num',$car['car_now']+$racial_bonus['racial_bonus']).', '.gdrcd_filter('in', $MESSAGE['chat']['commands']['use_skills']['die']).' '.gdrcd_filter('num',$die).', '.gdrcd_filter('in',$MESSAGE['chat']['commands']['use_skills']['sum']).' '.(gdrcd_filter('num',$car['car_now']+$racial_bonus['racial_bonus'])+gdrcd_filter('num',$die)+gdrcd_filter('num',$rank['grado'])+gdrcd_filter('in',$bonus['bonus']))."')");
} else if (gdrcd_filter('get',$_POST['dice'])!='no_dice'){
mt_srand((double)microtime()*1000000);
$die=mt_rand(1,gdrcd_filter('num',$_POST['dice']));
gdrcd_query("INSERT INTO chat ( stanza, imgs, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", '".$_SESSION['sesso'].";".$_SESSION['img_razza']."', '".$_SESSION['login']."', '', NOW(), 'D', '".$_SESSION['login'].' '.gdrcd_filter('in',$MESSAGE['chat']['commands']['die']['cast']).gdrcd_filter('num',$_POST['dice']).': '.gdrcd_filter('in',$MESSAGE['chat']['commands']['die']['sum']).' '.gdrcd_filter('num',$die)."')");
} 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);
gdrcd_query("INSERT INTO chat ( stanza, imgs, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", '".$_SESSION['sesso'].";".$_SESSION['img_razza']."', '".$_SESSION['login']."', '', NOW(), 'O', '".$_SESSION['login'].' '.gdrcd_filter('in',$MESSAGE['chat']['commands']['die']['item']).': '.gdrcd_filter('in',$item[2])."')");
}
}
/*Se ho inviato un messaggio*/
/** * Fix controllo per impedire messaggi inviati a vuoto
* @author Blancks
*/
if (gdrcd_filter('get',$_POST['op'])=='new_chat_message' && !empty($_POST['message']))
{
$actual_healt = gdrcd_query("SELECT salute FROM personaggio WHERE nome = '".$_SESSION['login']."'");
$chat_message=gdrcd_filter('in', gdrcd_angs($_POST['message']));
$tag_n_beyond=gdrcd_filter('in',$_POST['tag']);
$type=gdrcd_filter('in',$_POST['type']);
$first_char=substr($chat_message,0,1);
if($type < "5"){ //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 (gdrcd_query($r_check_dest, 'num_rows') < 1){
$chat_message=$tag_n_beyond.' '.gdrcd_filter('in',$MESSAGE['chat']['whisper']['no']);
$tag_n_beyond=$_SESSION['login'];
}
} else { $tag_n_beyond=$_SESSION['tag']; }
} elseif (($type=="1")||($first_char=="+")){ /*Azione*/
if ($actual_healt['salute']>0){
if ($first_char=="+"){$chat_message=substr($chat_message, 1);}
$m_type='A';
$_SESSION['tag']=$tag_n_beyond;
} else {
$m_type='S';
$tag_n_beyond=$_SESSION['login'];
$chat_message=gdrcd_filter('in',$MESSAGE['status_pg']['exausted']);
}
} elseif ((($type=="2")||($first_char=="§")||($first_char=="-")||($first_char=="*"))&&
($_SESSION['permessi']>=GAMEMASTER)) { /*Master*/
$m_type='M';
if(($first_char=="§")||($first_char=="-")){$chat_message=substr($chat_message, 1);}
if($first_char=="*"){$chat_message=substr($chat_message, 1); $m_type='I';}
} elseif (($type=="3")&&($_SESSION['permessi']>=GAMEMASTER)) { /*PNG*/
$m_type='N';
$_SESSION['tag']=$tag_n_beyond;
} else if (($type=="0") || (empty($type)===TRUE)){ /*Parlato*/
if ($actual_healt['salute']>0){
$m_type='P';
$_SESSION['tag']=$tag_n_beyond;
} else {
$m_type='S';
$tag_n_beyond=$_SESSION['login'];
$chat_message=gdrcd_filter('in',$MESSAGE['status_pg']['exausted']);
}
} //elseif
/*Inserisco il messaggio*/
gdrcd_query("INSERT INTO chat ( stanza, imgs, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", '".$_SESSION['sesso'].";".$_SESSION['img_razza']."', '".$_SESSION['login']."', '".gdrcd_capital_letter(gdrcd_filter('in', $tag_n_beyond))."', NOW(), '".$m_type."', '".$chat_message."')");
} 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");
gdrcd_query("INSERT INTO chat ( stanza, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", 'System message', '".$_SESSION['login']."', NOW(), 'S', '".gdrcd_capital_letter(gdrcd_filter('in', $tag_n_beyond)).' '.$MESSAGE['chat']['warning']['invited']."')");
if(empty($_POST['tag'])===FALSE)
{
gdrcd_query("INSERT INTO messaggi ( mittente, destinatario, spedito, letto, testo ) VALUES ('System message', '".gdrcd_capital_letter(gdrcd_filter('in',$_POST['tag']))."', NOW(), 0, '".$_SESSION['login'].' '.$MESSAGE['chat']['warning']['invited_message'].' '.$info['nome']."')");
}
} else if (($type=="6")&&($ok_command===TRUE)){ //caccia
$scaccia=str_replace(','.gdrcd_capital_letter(gdrcd_filter('in', $tag_n_beyond)), '',$info['invitati']);
gdrcd_query("UPDATE mappa SET invitati = '".$scaccia."' WHERE id=".$_SESSION['luogo']." LIMIT 1");
gdrcd_query("INSERT INTO chat ( stanza, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", 'System message', '".$_SESSION['login']."', NOW(), 'S', '".gdrcd_capital_letter(gdrcd_filter('in', $tag_n_beyond)).' '.$MESSAGE['chat']['warning']['expelled']."')");
} else if ($ok_command===TRUE){ //elenco
$ospiti=str_replace(',', '', $info['invitati']);
gdrcd_query("INSERT INTO chat ( stanza, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", 'System message', '".$_SESSION['login']."', NOW(), 'S', '".$MESSAGE['chat']['warning']['list'].': '.$ospiti."')");
}//else
}//else
/** * Fix ricomparsa tag di locazione in caso di messaggio inviato a vuoto
* @author Blancks
*/
}else//if(op)
{
$_SESSION['tag'] = gdrcd_filter('in',$_POST['tag']);
}
/*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'))
{
if ($PARAMETERS['mode']['chaticons']=='ON')
{
$icone_chat=explode(";",gdrcd_filter('out', $row['imgs']));
$add_icon = '<span class="chat_icons"> <img class="presenti_ico" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/races/'.$icone_chat[1].'"><img class="presenti_ico" src="imgs/icons/testamini'.$icone_chat[0].'.png"> </span>';
}
$add_chat.= '<div class="chat_row_'.$row['tipo'].'">';
switch ($row['tipo'])
{
case 'P':
/** * Avatar di chat
*@author Blancks
*/
if ($PARAMETERS['mode']['chat_avatar']=='ON' && !empty($row['url_img_chat']))
{
$add_chat .='<img src="'.$row['url_img_chat'].'" class="chat_avatar" style="width:'.$PARAMETERS['settings']['chat_avatar']['width'].'px; height:'.$PARAMETERS['settings']['chat_avatar']['height'].'px;" />';
}
$add_chat.= '<span class="chat_time">'.gdrcd_format_time($row['ora']).'</span>';
if ($PARAMETERS['mode']['chaticons']=='ON')
{
$add_chat.= $add_icon;
}
$add_chat.= '<span class="chat_name"><a href="#" onclick="Javascript: document.getElementById('tag').value=''.$row['mittente'].''; document.getElementById('type')[2].selected = '1'; document.getElementById('message').focus();">'.$row['mittente'].'</a>';
if(empty ($row['destinatario']) === FALSE )
{
$add_chat.= '<span class="chat_tag"> ['.gdrcd_filter('out',$row['destinatario']).']</span>';
}
$add_chat.=': </span> ';
$add_chat.= '<span class="chat_msg">'.gdrcd_chatcolor(gdrcd_filter('out',$row['testo'])).'</span>';
break;
case 'A':
/** * Avatar di chat
*@author Blancks
*/
if ($PARAMETERS['mode']['chat_avatar']=='ON' && !empty($row['url_img_chat']))
{
$add_chat .='<img src="'.$row['url_img_chat'].'" class="chat_avatar" style="width:'.$PARAMETERS['settings']['chat_avatar']['width'].'px; height:'.$PARAMETERS['settings']['chat_avatar']['height'].'px;" />';
}
$add_chat.= '<span class="chat_time">'.gdrcd_format_time($row['ora']).'</span>';
if ($PARAMETERS['mode']['chaticons']=='ON')
{
$add_chat.= $add_icon;
}
$add_chat.= '<span class="chat_name"><a href="#" onclick="Javascript: document.getElementById('tag').value=''.$row['mittente'].''; document.getElementById('type')[2].selected = '1'; document.getElementById('message').focus();">'.$row['mittente'].'</a>';
if(empty ($row['destinatario']) === FALSE )
{
$add_chat.= '<span class="chat_tag"> ['.gdrcd_filter('out',$row['destinatario']).']</span>';
}
$add_chat.='</span> ';
$add_chat.= '<span class="chat_msg">'.gdrcd_chatcolor(gdrcd_filter('out',$row['testo'])).'</span>';
break;
case 'S':
if ($_SESSION['login']==$row['destinatario'])
{
$add_chat.= '<span class="chat_name">'.$row['mittente'].' '.$MESSAGE['chat']['whisper']['by'].': </span> ';
$add_chat.= '<span class="chat_msg">'.gdrcd_filter('out',$row['testo']).'</span>';
} else if ($_SESSION['login']==$row['mittente'])
{
$add_chat.= '<span class="chat_msg">'.$MESSAGE['chat']['whisper']['to'].' '.gdrcd_filter('out',$row['destinatario']).': </span>';
$add_chat.= '<span class="chat_msg">'.gdrcd_filter('out',$row['testo']).'</span>';
} else if (($_SESSION['permessi']>=MODERATOR)&&($PARAMETERS['mode']['spyprivaterooms']=='ON'))
{
$add_chat.= '<span class="chat_msg">'.$row['mittente'].' '.$MESSAGE['chat']['whisper']['from_to'].' '.gdrcd_filter('out',$row['destinatario']).' </span>';
$add_chat.= '<span class="chat_msg">'.gdrcd_filter('out',$row['testo']).'</span>';
}
break;
case 'N':
$add_chat.= '<span class="chat_time">'.gdrcd_format_time($row['ora']).'</span>';
$add_chat.= '<span class="chat_name">'.$row['destinatario'].'</span> ';
$add_chat.= '<span class="chat_msg">'.gdrcd_chatcolor(gdrcd_filter('out',$row['testo'])).'</span>';
break;
case 'M':
$add_chat.= '<span class="chat_master">'.gdrcd_filter('out',$row['testo']).'</span>';
break;
case 'I':
$add_chat.= '<img class="chat_img" src="'.gdrcd_filter('out',$row['testo']).'" />';
break;
case 'C':
$add_chat.= '<span class="chat_time">'.gdrcd_format_time($row['ora']).'</span>';
$add_chat.= '<span class="chat_msg">'.gdrcd_filter('out',$row['testo']).'</span>';
break;
case 'D':
$add_chat.= '<span class="chat_time">'.gdrcd_format_time($row['ora']).'</span>';
$add_chat.= '<span class="chat_msg">'.gdrcd_filter('out',$row['testo']).'</span>';
break;
case 'O':
$add_chat.= '<span class="chat_time">'.gdrcd_format_time($row['ora']).'</span>';
$add_chat.= '<span class="chat_msg">'.gdrcd_filter('out',$row['testo']).'</span>';
break;
}
if ($PARAMETERS['mode']['chat_avatar']=='ON')
$add_chat .= '<br style="clear:both;" />';
$add_chat.= '</div>';
if ($row['id'] > (int)$last_message)
$last_message=$row['id'];
}
gdrcd_query($query, 'free');
$_SESSION['last_message']=$last_message;
}//if
?>
<html>
<head>
<?php if(gdrcd_filter('get',$_REQUEST['chat'])=='yes'){
echo '<script type="text/javascript"> function echoChat(){';
/** * Gestione dell'ordinamento
* @author Blancks
*/
if ($PARAMETERS['mode']['chat_from_bottom']=='OFF')
{
echo 'parent.document.getElementById('pagina_chat').innerHTML+= ''.addslashes($add_chat).'';';
echo 'scrolling = parent.document.getElementById('pagina_chat').scrollHeight;';
}elseif ($PARAMETERS['mode']['chat_from_bottom']=='ON')
{
echo 'parent.document.getElementById('pagina_chat').innerHTML= ''.addslashes($add_chat).''+parent.document.getElementById('pagina_chat').innerHTML;';
echo 'scrolling = 0;';
}
/** * 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;';
if ((gdrcd_filter('get',$_POST['op'])=='take_action')||(gdrcd_filter('get',$_POST['op'])=='new_chat_message')){
if($PARAMETERS['mode']['skillsystem']=='ON'){
echo 'parent.document.getElementById('chat_form_actions').reset();';
}
echo 'parent.document.getElementById('chat_form_messages').reset();
parent.document.getElementById('chat_form_messages').elements["tag"].value=''.$_SESSION["tag"].'';';
}//if
echo '}</script>';
} ?>
<!--meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="refresh" content="<?php echo $i_ref_time; ?>">
<link rel="stylesheet" href="../themes/<?php echo $PARAMETERS['themes']['current_theme'];?>/presenti.css" TYPE="text/css">
<link rel="stylesheet" href="../themes/<?php echo $PARAMETERS['themes']['current_theme'];?>/main.css" TYPE="text/css">
<link rel="stylesheet" href="../themes/<?php echo $PARAMETERS['themes']['current_theme'];?>/chat.css" TYPE="text/css">
</head>
<body class="transparent_body" <?php if(gdrcd_filter('get',$_REQUEST['chat'])=='yes'){ echo 'onLoad="echoChat();"';} ?> >
<?php
//controlla sessione
//controlla esilio
?>
quello che sono sicura di aver toccato (sob) è frame_chat e, nel dubbio, incollo anche questo:
<?php /* HELP: Frame della chat */
/* Tipi messaggio: (A azione, P parlato, N PNG, M Master, I Immagine, S sussurro, D dado, C skill check, O uso oggetto) */
/*Seleziono le info sulla chat corrente*/
$info = gdrcd_query("SELECT nome, stanza_apparente, invitati, privata, proprietario, scadenza FROM mappa WHERE id=".$_SESSION['luogo']." LIMIT 1");
?>
<div class="pagina_frame_chat">
<div class="page_body">
<?php
//e' una stanza privata?
if ($info['privata']==1) {
$allowance=FALSE;
if ( (($info['proprietario']==gdrcd_capital_letter($_SESSION['login'])) || (strpos($_SESSION['gilda'], $info['proprietario'])!=FALSE) || (strpos($info['invitati'], gdrcd_capital_letter($_SESSION['login']))!=FALSE) ||
(($PARAMETERS['mode']['spyprivaterooms']=='ON')&&($_SESSION['permessi']>MODERATOR))) && ($info['scadenza']>strftime('%Y-%m-%d %H:%M:%S')) ) {$allowance=TRUE;}
} else {$allowance=TRUE;}
//se e' privata e l'utente non ha titolo di leggerla
if ($allowance === FALSE) {
echo '<div class="warning">'.$MESSAGE['chat']['whisper']['privat'].'</div>';
//echo $info['invitati']; echo gdrcd_capital_letter($_SESSION['login']);
} else {
?>
<?php $_SESSION['last_message']=0; ?>
<div style="height: 1; width: 1;">
<iframe src ="pages/chat.inc.php?ref=30&chat=yes" class="iframe_chat" id="chat_frame" name="chat_frame" frameborder="0" allowtransparency="true">
</iframe>
</div>
<div id='pagina_chat' class="chat_box">
</div>
<div class="panels_box"><div class="form_chat">
<!-- Form messaggi -->
<div class="form_row">
<form action="pages/chat.inc.php?ref=10&chat=yes" method="post" target="chat_frame" id="chat_form_messages">
<div class="casella_chat">
<select name="type" id="type">
<option value="0"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][0]);//parlato ?></option>
<option value="1"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][1]);//azione ?></option>
<option value="4"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][4]);//sussurro ?></option>
<?php if($_SESSION['permessi']>=GAMEMASTER){ ?>
<option value="2"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][2]);//master ?></option>
<option value="3"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][3]);//png ?></option>
<?php } ?>
<?php if(($info['privata']==1)&&(($info['proprietario']==$_SESSION['login'])||((is_numeric($info['proprietario'])===TRUE)&&(strpos($_SESSION['gilda'], ''.$info['proprietario']))))){ ?>
<option value="5"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][5]);//invita ?></option>
<option value="6"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][6]);//caccia ?></option>
<option value="7"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][7]);//elenco ?></option>
<?php }//if ?>
</select>
<br/><span class="casella_info"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type']['info']);?></span>
</div>
<div class="casella_chat">
<input name="tag" id="tag" value="" />
<br/><span class="casella_info">
<?php echo gdrcd_filter('out',$MESSAGE['chat']['tag']['info']['tag'].$MESSAGE['chat']['tag']['info']['dst']);
if($_SESSION['permessi']>=GAMEMASTER){echo gdrcd_filter('out',$MESSAGE['chat']['tag']['info']['png']);} ?>
</span>
</div>
<div class="casella_chat">
<input name="message" id="message" value="" />
<br/><span class="casella_info">
<?php echo gdrcd_filter('out',$MESSAGE['chat']['tag']['info']['msg']); ?>
</span>
</div>
<div class="casella_chat">
<input type="submit" value="<?php echo gdrcd_filter('out',$MESSAGE['interface']['forms']['submit']); ?>" />
<input type="hidden" name="op" value="new_chat_message" />
</div>
</form>
</div>
<!-- Form messaggi -->
<?php if(($PARAMETERS['mode']['skillsystem']=='ON')||($PARAMETERS['mode']['dices']=='ON')){ ?>
<div class="form_row">
<form action="pages/chat.inc.php?ref=30&chat=yes" method="post" target="chat_frame" id="chat_form_actions">
<?php if($PARAMETERS['mode']['skillsystem']=='ON'){ ?>
<div class="casella_chat">
<?php $result = gdrcd_query("SELECT id_abilita, nome FROM abilita WHERE id_razza=-1 OR id_razza IN (SELECT id_razza FROM personaggio WHERE nome = '".$_SESSION['login']."') ORDER BY nome", 'result'); ?>
<select name="id_ab" id="id_ab">
<option value="no_skill"></option>
<?php while($row = gdrcd_query($result, 'fetch'))
{ ?>
<option value="<?php echo $row['id_abilita']; ?>">
<?php echo gdrcd_filter('out',$row['nome']); ?>
</option>
<?php }//while
gdrcd_query($result, 'free');
?>
</select>
<br/><span class="casella_info"><?php echo gdrcd_filter('out',$MESSAGE['chat']['commands']['skills']);?></span>
</div>
<div class="casella_chat">
<?php $result = gdrcd_query("SELECT id_abilita, nome FROM abilita WHERE id_razza=-1 OR id_razza IN (SELECT id_razza FROM personaggio WHERE nome = '".$_SESSION['login']."') ORDER BY nome", 'result'); ?>
<select name="id_stats" id="id_stats">
<option value="no_stats"></option>
<?php
/** * Questo modulo aggiunge la possibilità di eseguire prove col dado e caratteristica.
* Pertanto sono qui elencate tutte le caratteristiche del pg.
* @author Blancks
*/
foreach ($PARAMETERS['names']['stats'] as $id_stats => $name_stats)
{
if (is_numeric(substr($id_stats, 3)))
{
?>
<option value="stats_<?php echo substr($id_stats, 3); ?>"><?php echo $name_stats; ?><?php echo gdrcd_filter('out',$row['nome']); ?>
</option>
<?php
gdrcd_query($result, 'free');
}
}
?>
</select>
<br/><span class="casella_info"><?php echo gdrcd_filter('out',$MESSAGE['chat']['commands']['stats']);?></span>
</div>
<?php } else { echo '<input type="hidden" name="id_ab" id="id_ab" value="no_skill">';}?>
<?php if($PARAMETERS['mode']['dices']=='ON'){ ?>
<div class="casella_chat">
<select name="dice" id="dice">
<option value="no_dice"></option>
<?php
/** * Tipi di dado personalizzati da config
* @author Blancks
*/
foreach ($PARAMETERS['settings']['skills_dices'] as $dice_name => $dice_value)
{
?>
<option value="<?php echo $dice_value; ?>"><?php echo $dice_name; ?></option>
<?php
}
?>
</select>
<br/><span class="casella_info"><?php echo gdrcd_filter('out',$MESSAGE['chat']['commands']['dice']);?></span>
</div>
<?php } else { echo '<input type="hidden" name="dice" id="dice" value="no_dice">';}?>
<?php if($PARAMETERS['mode']['skillsystem']=='ON'){ ?>
<div class="casella_chat">
<?php
$result = gdrcd_query("SELECT clgpersonaggiooggetto.id_oggetto, oggetto.nome, clgpersonaggiooggetto.cariche FROM clgpersonaggiooggetto JOIN oggetto ON clgpersonaggiooggetto.id_oggetto = oggetto.id_oggetto WHERE clgpersonaggiooggetto.nome = '".$_SESSION['login']."' AND posizione > 0 ORDER BY oggetto.nome", 'result'); ?>
<select name="id_item" id="id_item">
<option value="no_item"></option>
<?php while($row=gdrcd_query($result, 'fetch')){ ?>
<option value="<?php echo $row['id_oggetto'].'-'.$row['cariche'].'-'.gdrcd_filter('out',$row['nome']); ?>">
<?php echo $row['nome']; ?>
</option>
<?php }//while
gdrcd_query($result, 'free');
?>
</select>
<br/><span class="casella_info"><?php echo gdrcd_filter('out',$MESSAGE['chat']['commands']['item']);?></span>
</div>
<?php } else { echo '<input type="hidden" name="id_item" id="id_item" value="no_item">';} ?>
<div class="casella_chat">
<input type="submit" value="<?php echo gdrcd_filter('out',$MESSAGE['interface']['forms']['submit']); ?>" />
<input type="hidden" name="op" value="take_action">
</div>
</form>
</div>
<?php } ?>
</div></div>
<?php }//else?>
</div><!-- Page-Body -->
</div><!-- Pagina -->
08/02/2014 19:29:37
ah....a quanto pare gdrcd5.1 non include alcun comando per i dadi in chat.
Mi sa che quella modifica è stata aggiunta in gdrcd5.2
per aggiungerla dovresti prendere questa riga in ref_header
} elseif (($type=="1")||($first_char=="+")){ /*Azione*/
separare la parentesi graffa iniziale dall'elseif, mettendolo su una nuova riga, e inserire tra di loro questo:
else if($first_char == "#"){ //Dado
$m_type ='C';
$chat_message = substr($chat_message, 1);
if (preg_match("/^d+([0-9]+)$/si", $chat_message,$matches)){
$nstring = $matches[1];
$die = mt_rand(1,(int)$nstring);
$chat_message = "A ".$_SESSION['login']." esce ".$die." su ".$nstring;
}
else if (preg_match("/^([0-9]+)d+([0-9]+)$/si", $chat_message,$matches)){
$numero = (int)$matches[1];
$dado = (int)$matches[2];
$x = 0;
$chat_message = "A ".$_SESSION['login']." esce ";
for($x = 0; $x < $numero; $x++){
$die = mt_rand(1,$dado);
$chat_message .= $die." su ".$dado.", ";
}
$chat_message = substr($chat_message, 0, -2);
}
}
e metti $PARAMETERS['mode']['dices']='OFF';
08/02/2014 20:03:17
ooh *_* funziona! grazie mille!
e per quanto riguarda i dadi caratteristica? sempre con i comandi..
posso trovare il codice nel gdrcd 5.2?
09/02/2014 12:38:16
Non esiste alcun sistema per fare tiri su abilità da comandi testuali su GDRCD5.
Come dovrebbero essere strutturati questi comandi?
09/02/2014 13:18:01
:(
in alcune land ho visto che bastava un comando tipo: &&Men, &&Vol, e così via..
in pratica un comando che richiami la caratteristica. per esempio, nel mio caso:
car0 = forza
car1 = mente
car2 = costituzione
car3 = agilità
car4 = riflessi
car5 = volontà
(ho come la sensazione che sta cosa serva, boh?)
e quando io tiro il dado, vorrei che fosse già di suo un d20, ma su quella caratteristica. quindi:
x lancia su riflessi (tipo se ho 6, 6)6, dado x = totale x
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Imperion ↗
CRSED: F.O.A.D. ↗
Tiles Survive ↗
State of Survival ↗
Storie di Agarthi ↗
World of the Sea Battle ↗