[GDRCD 5.3] Salva Chat - migliorie
[GDRCD 5.3] Salva Chat - migliorie postato il 04/07/2022 09:53:51 nel forum programmazione, open source e hosting e modificato da staff shadowland il 04/07/2022 09:54:30
Soffermandomi solo adesso sul modulo di salvataggio giocate in Chat, ho notato che quando si effettua il download, praticamente compare una codifica "strana" che non va ad indicare nell'effettivo la data di inizio e fine di una role. Ho provato anche ad inserire il luogo ma, ovviamente, mi richiama l'id della chat ma non il nome ad essa assegnato.
Non che sia una cosa prioritaria o importantissima da fare, però credo che aiuterebbe i giocatori nell'archiviare le role.
La parte interessata è la seguente che va richiamando la data che però non viene codificata come dovrebbe:
$start=gdrcd_format_datetime_cat($start_time);
$end=gdrcd_format_datetime_cat($end_time);
Questa è la stringa che compare nella barra nel momento del download dalla chat:
$file = $_SESSION['login']."-".$start."-".$end."-".$_SESSION['luogo'].".html";
Ho cambiato giusto l'ordine dei campi poiché preferivo che il nome del personaggio figurasse per primo ed in seguito ora di inizio e fine giocata + l'aggiunta del nome della chat (che però non riesco a convertire in nome)
Idee su come riuscire a rendere la cosa più performante?
Grazie per l'attenzione, prometto che non aprirò post per le prossime settimane >.<
Pagine → 1 2
04/07/2022 11:02:41 e modificato da haruka il 04/07/2022 11:12:38
Ciao, per quel che riguarda il nome del file che include il luogo, io ho fatto questa robina qua, vedi se ti funziona:
/* Scrivo tutto in un file di testo */
$resultluogo = gdrcd_query("SELECT mappa.nome, mappa.descrizione, mappa.descrizioneestesa, mappa.stato, mappa.immagine, mappa.stanza_apparente, mappa.scadenza, mappa_click.meteo FROM mappa_click LEFT JOIN mappa ON mappa_click.id_click = mappa.id_mappa WHERE id = ".$_SESSION['luogo'],'result');
$record_exists = gdrcd_query($resultluogo, 'num_rows');
$record = gdrcd_query($resultluogo, 'fetch');
date_default_timezone_set('Europe/Rome');
$start = gdrcd_format_datetime_cat($start_time);
$end = gdrcd_format_datetime_cat($end_time);
/* Scrivo tutto in un file di testo */
$file = $start . "-" . $end . "-" . $_SESSION['login'];
$rand = rand(1, 10000000);
$file = md5($file . $rand);
$file = $file . ".html";
$file = date('Y-m-d(H-i-s)') . '_' . $_SESSION['login'] . '_' . $record['nome'] . ".html";
04/07/2022 16:49:15
oh!! grazie mille!! *-* posto qui la versione che ho adoperato:
/* Scrivo tutto in un file di testo */
$resultluogo = gdrcd_query("SELECT nome FROM mappa WHERE id = ".$_SESSION['luogo'],'result');
$record_exists = gdrcd_query($resultluogo, 'num_rows');
$record = gdrcd_query($resultluogo, 'fetch');
date_default_timezone_set('Europe/Rome');
$start = gdrcd_format_datetime_cat($start_time);
$end = gdrcd_format_datetime_cat($end_time);
/* Scrivo tutto in un file di testo */
$file = $start . "-" . $end . "-" . $_SESSION['login'];
$rand = rand(1, 10000000);
$file = md5($file . $rand);
$file = $file . ".html";
$file = date('d-m-Y_(H-i-s)') . '_' . $_SESSION['login'] . ' Chat_' . $record['nome'] . ".html";
Sempre spulciando questa cosa del salva chat, chiedo a voi che magari la usate da più tempo. Ma non è stata implementata la possibilità di permettere soltanto a chi sta ruolando di poter salvare la role? Perchè credo che senza alcun filtro simile, alla fine i vari regolamenti del non stare in Back Chat ecc. possano servire a poco se, il furbetto di turno, attende che una role sia conclusa per poi andare in chat e salvarla per leggerla con calma.
04/07/2022 17:11:14 e modificato da haruka il 04/07/2022 17:12:00
Ti dico la verità, noi di recentissimo abbiamo deciso di orientarci verso una circolazione un po' più libera delle notizie dato lo spazio ristretto della nave. E' un approccio nostro unico al metagaming, ma tolto ciò, io stessa mi ero fatta la tua stessa domanda mesi fa.
Quindi sotto il codice che hai postato tu, avevo messo questa parte di codice:
if ($PARAMETERS['mode']['chatsave_link'] == 'ON')
{
$file = "giocate/" . $file;
$fp = fopen($file, 'wb');
$message = str_replace("#stop#", "\r\n", $add_chat);
fwrite($fp, $message, strlen($message));
fclose($fp);
echo '<a href="' . $file . '">Link giocata</a>';
$file2 = '<a href="' . $file . '">' . $file . '</a>';
$resultluogo = gdrcd_query("SELECT mappa.nome, mappa.descrizione, mappa.descrizioneestesa, mappa.stato, mappa.immagine, mappa.stanza_apparente, mappa.scadenza, mappa_click.meteo FROM mappa_click LEFT JOIN mappa ON mappa_click.id_click = mappa.id_mappa WHERE id = ".$_SESSION['luogo'],'result');
$record_exists = gdrcd_query($resultluogo, 'num_rows');
$record = gdrcd_query($resultluogo, 'fetch');
gdrcd_query("INSERT INTO log (autore, nome_interessato, data_evento, codice_evento, descrizione_evento) VALUES ('".$_SESSION['login']."', '".$_SESSION['login']."', NOW(), ".SALVACHAT.", 'Ha salvato una giocata avvenuta nella chat " . $record['nome'] . " | ". $file2 ." ')");
}
chiaramente per funzionare ha bisogno che crei un nuovo log SALVACHAT in constantvalues, se mi ricordo bene dove va.
Non è una soluzione pulita, ma meglio di niente...
04/07/2022 17:36:50
una delle cose che potresti implementare è un "log" di quando le persone cliccano sul tastino Salva chat, salvandoti pg, chat e orario dell'evento.
Così diciamo che puoi avere un minimo di controllo se vuoi fare dei controlli randomici di chi salva cosa.
Quando studiai un metodo di log chat altrove (non gdrcd), col discorso di permettere di salvarlo solo se si è partecipato alla giocata, avevo messo un controllo in testa prima di salvare il log che verificava se nell'array delle azioni inviate era presente il pg che richiedeva il salvataggio.
04/07/2022 17:40:02
Grazie per le dritte ma credo sia fuori dalla mia portata realizzare qualcosa inerente il secondo suggerimento ^^'
04/07/2022 18:01:28
staff shadowland ha scritto: Grazie per le dritte ma credo sia fuori dalla mia portata realizzare qualcosa inerente il secondo suggerimento ^^'
Prova se riesci a mettere il log. Se hai difficoltà ti do una mano non è una cosa difficile ;)
Almeno hai comunque una forma di controllo, anche se solo a posteriori. Non vai del tutto allo sbaraglio, ecco.
Magari puoi anche valutare di abbassare l'intervallo di tempo in cima al file. Dovresti avere una cosa del genere:
WHERE stanza = " . $_SESSION['luogo'] . " AND DATE_SUB(NOW(), INTERVAL 240 MINUTE) < ora ORDER BY id " . $typeOrder, 'result');
Dipende da quanto durano o meno le giocate nella tua land ;)
04/07/2022 22:10:27
staff shadowland ha scritto: Grazie per le dritte ma credo sia fuori dalla mia portata realizzare qualcosa inerente il secondo suggerimento ^^'
In realtà, non è così complicato.. devi solo metter giù il "progetto" e definire cosa serve:
- una tabella (e i relativi campi)
- query di insert sulla tabella quando accade un evento (in questo caso, quando viene usato il salva chat)
- paginetta in gestione con magari qualche filtrino per data/personaggio
Come dice Haruka, possiamo darti qualche dritta eventualmente. Concettualmente, non è complicato da metter giù
05/07/2022 13:31:21
Ringrazio entrambe! Se riesco a cavare un ragno dal buco, ovviamente posto qui i progressi.
Dunque dovrei partire dal duplicare il log chat se ho capito bene, o almeno questo sarebbe il primo step, giusto?
05/07/2022 13:35:49
Ciao, no no aspetta, quello che ti propone anneth è una cosa diversa da quella che ti suggerivo io.
In gdr-cd 5.3 esiste la funzione Log Eventi? E' una cosa associata alla gestione che permette di visualizzare alcune operazioni fatte dai player, tipo lo scambio di oggetti e monete.
05/07/2022 14:25:49
Credo ci sia il Log per le transazioni sì, però non mi ci sono ancora focalizzata su a dirla tutta. Quindi è quello il tipo di Log a cui fare riferimento?
Discussione seguita da
Pagine → 1 2
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
World of Warship ↗
Tibia ↗
Project Entropy ↗
War Thunder ↗
The Coven ↗
World of the Sea Battle ↗
Hero Wars ↗