Gdrcd 5.2.1 - Presenti estesi postato il 08/09/2015 22:18:42 nel forum programmazione, gdrcd, open source, hosting
Sera a tutti, premetto che ho spulciato il forum a lungo ma non ho trovato quello che cercavo nello specifico.
Come detto nel titolo uso la versione 5.2.
Lavoricchiando al codice dei presenti estesi mi è venuta la fissa della tabella che ho visto in molti pbc e fin qui tutto bene perchè l'ho fatta, ho incasellato ogni tipologia di icona che deve apparire e ho aggiunto anche l'avatar. Felice della cosa però non avevo notato una cosa che nelle ultime settimane mi tormenta e non sono, a conti fatti, in grado di risolvere. In sostanza quando si connettono più pg di prova, se si trovano nella stessa identica mappa tutto bene ma quando si dividono in due mappe differenti i titoli della mappe rimangono in alto uno sotto l'altro e i pg presenti slittano sotto il titolo dell'ultima mappa anziché posizionarsi nella mappa corrente in cui sono. Vorrei riuscire a risolvere la cosa se possibile. Qualcuno sa illuminarmi a riguardo?
Se l'argomento è già stato affrontato e c'è la spiegazione della soluzione, magari mi è sfuggito, mi basterebbe anche un linkaggio.
Grazie
Pagine → 1
08/09/2015 22:22:00
Vedrai che di sicuro c'è un errore nella tabella. Un <td> o un <tr> non chiuso, da qualche parte.
08/09/2015 22:32:18
Può essere perchè mi è già capitato con altre cose di perdermi i pezzi. Spero in effetti.
08/09/2015 22:36:12
Scusa sandorclegane non ti avevo letto. Non ho praticità con queste cose. Postato così va bene?
<div class="presenti_estesi">
<?php
/** * Abilitazione tooltip
* @author Blancks
*/
if ($PARAMETERS['mode']['user_online_state'] == 'ON')
echo '<div id="descriptionLoc"></div>';
//Carico la lista presenti.
/** * Fix della query per includere l'uso dell'orario di uscita per capire istantaneamente quando il pg non è più connesso
* @author Blancks
*/
$query = "SELECT personaggio.nome, personaggio.cognome, personaggio.permessi, personaggio.url_img_chat, personaggio.sesso, personaggio.id_razza, razza.sing_m, razza.sing_f, razza.icon, personaggio.disponibile, personaggio.online_status, personaggio.is_invisible, personaggio.ultima_mappa, personaggio.ultimo_luogo, personaggio.posizione, personaggio.ora_entrata, personaggio.ora_uscita, personaggio.ultimo_refresh, mappa.stanza_apparente, mappa.nome as luogo, mappa_click.nome as mappa FROM personaggio LEFT JOIN mappa ON personaggio.ultimo_luogo = mappa.id LEFT JOIN mappa_click ON personaggio.ultima_mappa = mappa_click.id_click LEFT JOIN razza ON personaggio.id_razza = razza.id_razza WHERE personaggio.ora_entrata > personaggio.ora_uscita AND DATE_ADD(personaggio.ultimo_refresh, INTERVAL 4 MINUTE) > NOW() ORDER BY personaggio.is_invisible, personaggio.ultima_mappa, personaggio.ultimo_luogo, personaggio.nome";
$result = gdrcd_query($query, 'result');
echo '<ul class="elenco_presenti">';
echo '</tr>';
echo '<table style="border:1px solid #59919e" width="500" cellpadding="1" margin-left="150">';
echo '<tr>';
echo '<td style="border:1px dotted #f3ecdc" bgcolor="#212121" width="35"><font color="#c34640">L</font><font color="#f3ecdc">og</font></td>';
echo '<td style="border:1px dotted #f3ecdc" bgcolor="#212121" width="45"><font color="#c34640">C</font><font color="#f3ecdc">arica</td>';
echo '<td style="border:1px dotted #f3ecdc" bgcolor="#212121" width="45"><font color="#c34640">S</font><font color="#f3ecdc">tato</td>';
echo '<td style="border:1px dotted #f3ecdc" bgcolor="#212121" ><font color="#c34640">V</font><font color="#f3ecdc">olto</td>';
echo '<td style="border:1px dotted #f3ecdc" bgcolor="#212121" width="45"><font color="#c34640">S</font><font color="#f3ecdc">esso</td>';
echo '<td style="border:1px dotted #f3ecdc" bgcolor="#212121" width="45"><font color="#c34640">R</font><font color="#f3ecdc">azza</td>';
echo '<td style="border:1px dotted #f3ecdc" bgcolor="#212121" width="100"><font color="#c34640">M</font><font color="#f3ecdc">&</font><font color="#c34640">G</font></td>';
echo '<td style="border:1px dotted #f3ecdc" bgcolor="#212121" width="200"><font color="#c34640">P</font><font color="#f3ecdc">ersonaggio</td>';
echo '</tr>';
$ultimo_luogo_corrente='';
$mappa_corrente='';
while ($record = gdrcd_query($result, 'fetch'))
{
//Stampo il nome del luogo
if($record['is_invisible']==1)
{
$luogo_corrente = $MESSAGE['status_pg']['invisible'][1];
} else
{
if ($record['mappa']!=$mappa_corrente)
{
$mappa_corrente = $record['mappa'];
echo '<li class="mappa">'.gdrcd_filter('out',$mappa_corrente).'</li>';
}//if
if (empty($record['stanza_apparente']))
{
$luogo_corrente = $record['luogo'];
} else
{
$luogo_corrente = $record['stanza_apparente'];
}//else
}
//Stampo il nome del luogo solo per il primo PG che vi e' posizionato
if (empty($luogo_corrente)===TRUE){
#echo 'ok';
/*if ($record['mappa']>=0){
$luogo_corrente = $PARAMETERS['names']['maps_location'];
} else {
$luogo_corrente = $PARAMETERS['names']['base_location'];
}//else*/
if ($ultimo_luogo_corrente!=$luogo_corrente){
$ultimo_luogo_corrente=$luogo_corrente;
echo '<li class="luogo">'.gdrcd_filter('out',$luogo_corrente).'</li>';
} //if
} else if ($ultimo_luogo_corrente!=$luogo_corrente){
$ultimo_luogo_corrente=$luogo_corrente;
if ($record['is_invisible']==0){
if(($PARAMETERS['mode']['mapwise_links']=='OFF')){ #||($record['ultima_mappa']==$_SESSION['mappa'])
echo '<li class="luogo"><a href="main.php?dir='.$record['ultimo_luogo'].'&map_id='.$record['ultima_mappa'].'">'.gdrcd_filter('out',$luogo_corrente).'</a></li>';
} else {
echo '<li class="luogo">'.gdrcd_filter('out',$luogo_corrente).'</li>';
}
} else {
echo '<li class="luogo">'.gdrcd_filter('out',$luogo_corrente).'</li>';
}//else
}//if
/** * Parametro di personalizzazione di uno stato online via tooltip
* @author Blancks
*/
$online_state = '';
if ($PARAMETERS['mode']['user_online_state']=='ON' && !empty($record['online_status']) && $record['online_status'] != NULL)
{
$record['online_status'] = trim(nl2br(gdrcd_filter('in',$record['online_status'])));
$record['online_status'] = strtr($record['online_status'], array("
" => '', "
" => '', "
" => '', '"' => '"'));
$online_state = 'onmouseover="show_desc(event, ''.$record['online_status'].'');" onmouseout="hide_desc();""';
}
//Stampo il PG
echo '<li class="presente"'. $online_state .'>';
echo '</tr>';
echo '<tr>';
echo '<td style="border:1px dotted #c34640" width="35">';
//Entrata, uscita PG
//Controllo da quanto il pg e' loggato
$activity = gdrcd_check_time ($record['ora_entrata']);
//Se e' loggato da meno di 2 minuti
if ($activity <= 2){
//Lo segnalo come appena entrato
echo '<img class="presenti_ico" src="decorazioni/icons/enter.png" alt="'.gdrcd_filter('out',$MESSAGE['status_pg']['enter']).'" title="'.gdrcd_filter('out',$MESSAGE['status_pg']['enter']).'" />';
} else {
//Altrimenti, se si e' sloggato da piu' di 2 minuti lo segnalo come uscito
$activity = gdrcd_check_time ($record['ultimo_refresh']);
if ($activity > 3){
echo '<img class="presenti_ico" src="decorazioni/icons/exit.png" alt="'.gdrcd_filter('out',$MESSAGE['status_pg']['exit']).'" title="'.gdrcd_filter('out',$MESSAGE['status_pg']['exit']).'" />';
} else {
//Altrimenti e' semplicemente loggato
echo '<img class="presenti_ico" src="decorazioni/icons/blank.png" alt="'.gdrcd_filter('out',$MESSAGE['status_pg']['logged']).'" title="'.gdrcd_filter('out',$MESSAGE['status_pg']['logged']).'" />';
}//else
}//else
switch ($record['permessi']){
case USER: $alt_permessi = ''; break;
case GUIDE: $alt_permessi = $PARAMETERS['names']['guide']['sing']; break;
case CAPOGILDA: $alt_permessi = $PARAMETERS['names']['capogilda']['sing']; break;
case CAPORAZZA: $alt_permessi = $PARAMETERS['names']['caporazza']['sing']; break;
case GAMEMASTER: $alt_permessi = $PARAMETERS['names']['master']['sing']; break;
case MODERATOR: $alt_permessi = $PARAMETERS['names']['moderators']['sing']; break;
case SUPERUSER: $alt_permessi = $PARAMETERS['names']['administrator']['sing']; break;
}//else
echo '</td>';
echo '<td style="border:1px dotted #c34640" width="45">';
//Livello di accesso del PG (utente, master, admin, superuser)
echo '<img class="presenti_ico" src="decorazioni/icons/permessi'.$record['permessi'].'.png" alt="'.gdrcd_filter('out',$alt_permessi).'" title="'.gdrcd_filter('out',$alt_permessi).'" />';
echo '</td>';
echo '<td style="border:1px dotted #c34640" width="45">';
//Icona stato di disponibilità. E' sensibile se la riga che sto stampando corrisponde all'utente loggato.
$change_disp=($record['disponibile']+1)%3;
echo '<img class="presenti_ico" src="decorazioni/icons/disponibile'.$record['disponibile'].'.png" alt="'.gdrcd_filter('out',$MESSAGE['status_pg']['availability'][$record['disponibile']]).'" title="'.gdrcd_filter('out',$MESSAGE['status_pg']['availability'][$record['disponibile']]).'" />';
echo '</td>';
echo '<td style="border:1px dotted #c34640" width="50" height="50" >';
//Immagine avatar
echo '<img class="avatar" src="'.gdrcd_filter('fullurl',$record['url_img_chat']).'" width="50px" heigh="50px" />';
echo '</td>';
echo '<td style="border:1px dotted #c34640" width="45">';
//Icona del genere del pg
echo '<img class="presenti_ico" src="decorazioni/icons/testamini'.$record['sesso'].'.png" alt="'.gdrcd_filter('out',$MESSAGE['status_pg']['gender'][$record['sesso']]).'" title="'.gdrcd_filter('out',$MESSAGE['status_pg']['gender'][$record['sesso']]).'" />';
echo '</td>';
echo '<td style="border:1px dotted #c34640" width="45">';
//Icona della razza pg
if($record['icon']==''){$record['icon']='standard_razza.png';}
echo '<img class="presenti_ico" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/races/'.$record['icon'].'" alt="'.gdrcd_filter('out',$record['sing_'.$record['sesso']]).'" title="'.gdrcd_filter('out',$record['sing_'.$record['sesso']]).'" />';
echo '</td>';
echo '<td style="border:1px dotted #c34640" width="100">';
// Modifica Light far apparire il simbolo della gilda
$query2 = "SELECT * FROM clgpersonaggioruolo where clgpersonaggioruolo.personaggio='".$record['nome']."'";
$result2 = gdrcd_query($query2, 'result');
$cont_mest=0;
while ($record2 = gdrcd_query($result2, 'fetch'))
{
$query3 = "SELECT ruolo.nome_ruolo, ruolo.immagine FROM ruolo where ruolo.id_ruolo=".$record2['id_ruolo']."";
$result3 = gdrcd_query($query3, 'result');
while ($record3 = gdrcd_query($result3, 'fetch'))
{
echo '';
$cont_mest++;
print '<img class="presenti_ico" src="../themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/'.$record3['immagine'].'" alt="'.gdrcd_filter('out',$record3['nome_ruolo']).'" title="'.gdrcd_filter('out',$record3['nome_ruolo']).'" />';
}
}
echo '</td>';
echo '<td style="border:1px dotted #c34640" width="200">';
//Nome pg e link alla sua scheda
echo ' <a href="main.php?page=scheda&pg='.$record['nome'].'" class="link_sheet">'.gdrcd_filter('out',$record['nome']);
if (empty($record['cognome'])===FALSE){echo ' '.gdrcd_filter('out',$record['cognome']);}
echo '</a> ';
echo '</td>';
echo '</tr>';
}//while
echo '</li>';
echo '</table>';
gdrcd_query($result, 'free');
echo '</ul>';
?>
</div>
</div>
<!-- Chiusura finestra del gioco -->
08/09/2015 23:11:46
Non so. Ho ricontrollato quello che mi hai detto e ho eliminato i tr di troppo. Ora ci sono quello per i titoletti e quello per il contenimento dei td. Doppio div sparito ma il problema sussiste. O li ho posizionati sbagliati io o boh, non capisco. Se sposto il tr dei titoli sopra ul presenti mi va in pappa spostandosi sulla sinistra e mostrando quindi le mappe ad elencazione.
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
Planethos GdR: Una nuova profezia
Metin2: Informazioni sul server migliorate
World of Warship → MMO gratuito con frenetiche battaglie navali ambientate nel ventesimo secolo. Salpa con la tua nave ed affronta i nemici!
Age of Crystals: Rallentamenti estivi
dbzgdr ha risposto alla discussione: Dragon Ball Z Gdr
Titan Revenge: Calendario eventi fino a fine mese online!
Storie di Agarthi → Un Varco si apre davanti a te, un mondo tra i mondi è a portata di mano. Lasciati alle spalle le certezze, diventa quello che hai sempre cercato.
Enlisted: Modifiche al sistema di aggiornamento
pyro72 ha aperto un annuncio di ricerca: World Without Heroes ricerca Giocatore
World Without Heroes: News GDR: Pubblicazione e Nuovo Inizio
Entropia Universe → Lascia che il tuo avatar esplori nuovi mondi e viaggi tra i pianeti in questo stupendo MmoRpg Sci-Fi Free to Play!
I dati del generatore di rank sono stati aggiornati!
Il gestore di Nexi Generation ha risposto alla recensione di deanna
Brightest Star: Che (dis)grazia questo campeggio!
Lineage II → Entra in uno sconfinato mondo fantasy dominato da razze in contrasto tra loro. Scatena i tuoi poteri in uno dei Mmo più famosi al mondo!
L'Isola di Mon - Recensione di uno dei primi giochi di ruolo online fantasy in Italia
Shadow of the Darkness - Intervista al creatore di Shadow of the Darkness il PbC ambientato nel mondo cyberpunk-fantasy di Shadowrun
The Deathly Hallows - Intervista al gestore del play by forum potteriano The Deathly Hallows GdR
Meccanica dei Gdr - Scopri come sviluppare una meccanica per giochi di ruolo online con questi utili consigli
Accent RPG Engine - Scarica gratuitamente Accent RPG Engine open source per realizzare GdR Play by Chat
Abisso Oscuro - Recensione del GDR fantasy Abisso Oscuro