GDRCD 5.4 Lista Presenti estesi - Problema con visualizzazione Luoghi
GDRCD 5.4 Lista Presenti estesi - Problema con visualizzazione Luoghi postato il 30/04/2020 01:23:12 nel forum programmazione, open source e hosting
Ciao a tutti i professionisti programmatori 🖐
Mi rivolgo a voi con un problema che ho riscontrato e che mi sta regalando tanti momenti di irritazione e frustrazione che ne avrò per tutta l'avventura. Ho cercato per settimane (e non per qualche minuto) in lungo e in largo nel forum, cercando una soluzione per non creare un doppione, man non ho trovato niente, solo un post senza però la soluzione che cercavo.
Premesso questo, cerco il vostro aiuto per venire a capo di questo problema. Vi informo che non sono molto pratica di codici, anzi per niente, vado più per alto provando e invocando la santa misericordia che mi faccia la grazia di azzeccarla al primo tentativo. Quindi scrivetemi come se fossi una nabbona (ops lo sono! XD) Cmq, a parte le chiacchiere... andiamo alla parte tecnica.
Ho creato una bella tabellina in presenti estesi e ci ho buttato dentro tutto quello di cui avevo bisogno, avatar, disponibilità, razza ecc ecc e poi due celle per i luoghi in cui si trova il caro utente (sulla stessa linea della riga, non sopra come di default). Fino a li tutto è filato liscio, ma con i luoghi invece, mi sono bloccata e non riesco ad andare avanti da settimane, facendomi dannare in tutti i sensi.
Ho trovato nel codice, il pezzo che dice: Stampo il nome del luogo solo per il primo PG che vi e' posizionato. E infatti mi stampa solo una volta il luogo mentre io ho bisogno di aggiungere ad ogni utente dove si trova.
Faccio un esempio:
Utente X e Utente Y sono insieme sulla mappa principale ma mi viene stampato solo su Utente X che si trova in quella specifica mappa, l'utente Y ha il vuoto completo nelle celle. Io però voglio che anche su utente Y venga scritto, che è sulla mappa principale.
Stessa cosa se si mettono tutt'e due nella stessa chat: viene indicato al primo utente dove si trova, il secondo utente no. Ma io voglio che si veda.
Qualcuno di buona volontà può spiegarmi cosa fare? Ho cercato di capire il codice, ma niente, non riesco proprio a prendere il pezzo giusto o non riesco a capire come modificare.
Copio e incollo il pezzo in questione:
//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
Grazie per l'attenzione e grazie per ogni piece of info che potete darmi.
Pagine → 1
30/04/2020 15:26:46
Ciao,
immagino tu ti riferisca alla pagina presenti_estesi.inc.php ?
Se sì nel ciclo while che inizia con
while ($record = gdrcd_query($result, 'fetch'))
la prima cosa che fa è impostare in una variabile il nome del luogo del personaggio attuale (ed eventualmente stampare il nome della mappa attuale)
//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
}
Nella tabella che hai creato ti basterà quindi stampare solo la variabile $luogo_corrente, magari passando dalla funzione standard di gdrcd
gdrcd_filter('out', $luogo_corrente)
Spero di esserti stato utile!
Ciao
02/05/2020 00:59:54
Prima di tutto grazie per aver risposto, sei stato gentilissimo e la spiegazione è stata chiara.
Volevo prima provare tutte le varianti possibili, prima di dire che funziona o meno.
Funziona si, ma solo in parte e cioè solo nei luoghi, quelli cliccabili, ma non per le mappe.
Appena aggiungo nel codice "mappa1" la piccola stringa che mi hai copiato, ha dei comportamenti molto strani e che non sono riuscita a risolvere.
Mi spiego: ho "mappa1" e "mappa2" rispettivamente mappa1 è la mappa principale mentre "mappa2" è il luogo, la chat di gioco.
Mappa2 mi stampa tranquillamente una sotto l'altra la chat. Se il giocatore A gioca in mappa "Strada", allora anche giocatore B avrà su presenti che gioca su "Strada".
Su Mappa1 invece, succede solo in parte. Prima di tutto continua a non mostrarmi la scritta della mappa principale, se ci sono due piazzati li. Il primo giocatore A avrà "Mappa principale" e giocatore B non ha niente. E già li non si risolve il problema.
Poi, se mi sposto in chat es. "Mercato", mi ristampa la scritta Mappa principale SE tutti e due i giocatori si trovano nella stessa chat. Ma a me li serve solo il nome della mappa in cui mi trovo.
se invece due giocatori sono in chat differenti (uno va al mercato, l'altro in locanda), mi stampa la scritta "Mercato" per tutti e due come mappa, anche se uno si trova in "Locanda". Non so bene se mi spiego.
Copio e incollo qui sotto le modifiche fatte, sono sicura che sbaglio qualcosa io ma non riesco proprio a capire dove. Sono due giorni che ci lavoro e non riesco proprio a risolvere...
// Celle Mappa 1 e Mappa 2
echo '<td class="pre2">'.gdrcd_filter('out', $mappa_corrente);
//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
}
echo '</td>';
echo '<td class="pre2"><a href="main.php?dir='.$record['ultimo_luogo'].'&map_id='.$record['ultima_mappa'].'">'.gdrcd_filter('out',$luogo_corrente).'</a>';
//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"></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
echo '</td>';
echo '</tr>';
Comincio ad essere disperata, magari mi puoi dire dove esattamente inserire il codice giusto?
Grazie in anticipo per l'aiuto
02/05/2020 10:01:39
Ciao,
se ho capito bene buoi una tabella che stampi ad esempio:
Nome PG | Mappa | Luogo
Nome PG | Mappa | Luogo
ecc ecc
Prima di tutto nel codice ci sono alcuni errori di HTML, non devi stampare un <li> direttamente in una <td>, non serve, puoi usare un tag alternativo o aggiungere le classi css direttamenente alla td.
Inoltre da quello che vedo, senza offesa, ti manca la comprensione di quello che quel codice sta facendo.
Se ho capito bene il tuo problema tutto si "lega" a questa riga
if ($record['mappa']!=$mappa_corrente)
che dice solamente che se il valore nella variabile nell'array $recod[mappa] è diversa dal valore della variabile $mappa_corrente allora esegue il codice inserito (appunto stampa il nome della mappa)
Inoltre hai dei crossi problemi di codice inutile o effettivamente errato anche nella stampa del nome del luogo (soprattutto per quelle casistiche in cui l'utente non deve comparire in quel luogo.
In questa stringa
echo '<td class="pre2"><a href="main.php?dir='.$record['ultimo_luogo'].'&map_id='.$record['ultima_mappa'].'">'.gdrcd_filter('out',$luogo_corrente).'</a>';
stai stampando la variabile $luogo_corrente che potrebbe essere diversa da quella contenuta nel $record perchè viene gestite nel blocco di if/else successivo
Per affrontare questa tabella la prima cosa che farei è esattamente capire cosa c'è nella variabile $record, stamparmi una tabella in html statico per capire nella parte che poi viene visualizzata dall'utente come vorrei che apparisse e infine aggiungere la logica cel ciclo per le tr, in modo da renderla dinamica.
Purtroppo a tentativi non puoi riuscire (e se riesci potrebbero esserci molti errori che vanno a pregiudicare il funzionamento, senza contare la quantità di tempo impiegato) a realizzare quello che vuoi.
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!
AlterEgo ↗
Wuthering Waves ↗
CRSED: F.O.A.D. ↗
Fallen Gods ↗