GDRCD 5.5 colore testo chat
GDRCD 5.5 colore testo chat postato il 01/08/2021 14:28:52 nel forum programmazione, open source e hosting
salve; vorrei poter cambiare colore in base al sesso del player nella azioni parlate quanto si utilizzano le parentesi quadre: [testo]
attualmente la funzione si rende conto del testo tra parentesi e gli cambia di colore , vorrei integrare la condizione del sesso, il player maschio quando scrive del testo tra parentesi quadre questo vorrei che fosse azzurro e rosa per i player donna.
function gdrcd_chatcolor($str) {
$search = [
'#\<(.+?)\>#is',
'#\[(.+?)\]#is',
];
$replace = [
'<span class="color2"><$1></span>',
'<span class="color2"><$1></span>',
];
return preg_replace($search, $replace, $str);
}
questa è la funzione, come faccio a passargli la variabile sesso dell'azione per costruire la condizione?
Pagine → 1
02/08/2021 09:58:09
aik ha scritto: ...
Devi per forza aggiornare questa funzione in includes/functions.inc.php, permettendo la possibilità che vi sia il sesso come parametro.
Una cosa del genere:
function gdrcd_chatcolor($str, $gender) {
$genderClass = $gender == 'm' ? 'color2m' : 'color2f';
$search = [
'#\<(.+?)\>#is',
'#\[(.+?)\]#is',
];
$replace = [
'<span class="color2"><$1></span>',
'<span class="'.$genderClass.'"><$1></span>',
];
return preg_replace($search, $replace, $str);
}
Non è proprio la soluzione più elegante, ma dovrebbe funzionare allo scopo ( o quanto meno, farti capire l'idea) .
Quindi, in ref_header.inc.php dove vai ad utilizzare la funzione gdrcd_chatcolor() a quel punto passerai anche il genere del Personaggio.
Kasa.
02/08/2021 13:03:16
kasa ha scritto: [quote]aik ha scritto: ...
Devi per forza aggiornare questa funzione in includes/functions.inc.php, permettendo la possibilità che vi sia il sesso come parametro.
Una cosa del genere:
function gdrcd_chatcolor($str, $gender) {
$genderClass = $gender == 'm' ? 'color2m' : 'color2f';
$search = [
'#\<(.+?)\>#is',
'#\[(.+?)\]#is',
];
$replace = [
'<span class="color2"><$1></span>',
'<span class="'.$genderClass.'"><$1></span>',
];
return preg_replace($search, $replace, $str);
}
Non è proprio la soluzione più elegante, ma dovrebbe funzionare allo scopo ( o quanto meno, farti capire l'idea) .
Quindi, in ref_header.inc.php dove vai ad utilizzare la funzione gdrcd_chatcolor() a quel punto passerai anche il genere del Personaggio.
Kasa.[/quote]
prezioso come sempre, grazie mille a breve ti dico se funziona ma dando un occhiata veloce non dovrebbe far capricci...
p.s appena ho 10 minuti porto a conoscenza di alcune delle criticità del codice, una è in registrazione, posso, forzando id, effettuare la registrazione di un player con razze non disponibili alla registrazione...
02/08/2021 13:36:15
aik ha scritto: prezioso come sempre, grazie mille a breve ti dico se funziona ma dando un occhiata veloce non dovrebbe far capricci...
Ripeto, non è la soluzione più elegante.
Sicuramente può essere migliorata ed anche ampliata in base all'occorrenza. Ma usa come base logica!
aik ha scritto: p.s appena ho 10 minuti porto a conoscenza di alcune delle criticità del codice, una è in registrazione, posso, forzando id, effettuare la registrazione di un player con razze non disponibili alla registrazione...
Ogni segnalazione è preziosissima!
Usa pure il thread dedicato alla nuova versione di GDRCD (questo, nello specifico: https://www.gdr-online.com/readforum.asp?id=249065 ↗ ) per tutti gli errori che hai riscontrato.
Kasa.
02/08/2021 13:40:49
ho appena ampliato la funzione e individuato nel file ref_header.inc.php la linea che richiama la funzione per l'azione parlata "P"
$add_chat .= '<span class="chat_msg_p" >'.gdrcd_chatme($_SESSION['login'], gdrcd_chatcolor(gdrcd_filter('out', $row['testo']))).'</span>';
come dovrei passare la variabile sesso?
02/08/2021 13:49:57
aik ha scritto: ...
In ref_header.inc.php, poco sopra alla riga che tu hai riportato, dovrebbe essere la query che va a raccogliere i dati a DB per ogni singola azione. Questa, nello specifico:
$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');
A questa, basta che aggiungi ai dati selezionati anche il genere del Personaggio. In questo modo:
$query = gdrcd_query(" SELECT chat.id, chat.imgs, chat.mittente, chat.destinatario, chat.tipo, chat.ora, chat.testo, personaggio.url_img_chat, personaggio.sesso, 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');
In grassetto la colonna aggiuntiva.
Poi, nella riga che tu hai riportato, non fai altro che aggiungere ai parametri della funzione gdrcd_chatcolor() il sesso del Personaggio, in questo modo:
$add_chat .= '<span class="chat_msg">'.gdrcd_chatme($_SESSION['login'], gdrcd_chatcolor(gdrcd_filter('out', $row['testo']), gdrcd_filter('out', $row['sesso']))).'</span>';
E così hai passato la variabile.
Kasa.
02/08/2021 14:25:34
perfetto funge, l'unico accorgimento che ho fatto è questo
$replace = [
'<span class="color2"><$1></span>',
'<span class="'.$genderClass.'"><$1></span>',
];
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!
Seconda Era ↗
World of Warship ↗
RAID Shadow Legends ↗
World of Tanks ↗
Tiles Survive ↗
Foundation Galactic Frontier ↗