[Risolto] Assegnazione punti esperienza decimali GDRCD 5.6
[Risolto] Assegnazione punti esperienza decimali GDRCD 5.6 postato il 14/01/2025 18:36:44 nel forum programmazione, open source e hosting e modificato da gdr-online.com il 14/01/2025 19:45:34
Buonasera a tutti sto impazzendo con l'assegnazione dei punti esperienza.
Per farla breve il risultato che vorrei ottenere è assegnare 0.2 punti esperienza per azioni superiori a 1200 caratteri. Quindi ho modificato il codice in questo modo.
In config.inc.php ho sistemato così
/** * Parametri per l'incremento dell'esperienza tramite caratteri scritti
*/
$PARAMETERS['mode']['exp_by_chat'] = 'ON';
//ON: abilita l'incremento dei punti esperienza tramite i caratteri scritti in chat.
//OFF: disabilita l'incremento dei punti esperienza tramite i caratteri scritti in chat.
$PARAMETERS['settings']['exp_by_chat']['number'] = '1200';
// Numero di caratteri necessari al fine di aggiungere punti esperienza.
// Se l'incremento dell'esperienza è abilitato e il numero caratteri è 0 allora si aggiungono punti esperienza ogni volta che si scrive un carattere.
$PARAMETERS['settings']['exp_by_chat']['value'] = '0.20';
//Numero di punti da assegnare quando si superano i caratteri necessari.
//Impostare 0 nel caso si vuole dare 1 punto ogni volta che si raggiungono i caratteri dichiarati prima.
mentre in ref.header.inc.php ho settato in questo modo
$first_char = substr($chat_message, 0, 1);
// Se è stata settata l'esperienza per azione, allora avvio la procedura per il calcolo dell'esperienza
if($PARAMETERS['mode']['exp_by_chat'] == 'ON') {
// Ottengo la lunghezza del messaggio inviato
$msg_length = strlen($chat_message);
// Determino il numero di caratteri necessari per ottenere un bonus
$char_needed = gdrcd_filter('num', $PARAMETERS['settings']['exp_by_chat']['number']);
// Determino il bonus da assegnare
$exp_assign = gdrcd_filter('num', $PARAMETERS['settings']['exp_by_chat']['value']);
// Se il numero di caratteri necessari è maggiore di 0, allora il bonus viene dato se il messaggio è lungo almeno quanto il numero di caratteri necessari
if ($char_needed > 0) {
$exp_bonus = ($exp_assign <= 0) ? $msg_length / $char_needed : ( $msg_length >= $char_needed ? $exp_assign : 0);
}
// Altrimenti il bonus viene assegnato sempre
else {
$exp_bonus = $exp_assign;
}
}
ok perfetto. Al di là del fatto che mi assegna px OGNI 1200 caratteri (e vi prego aiutatemi a correggere anche questo) non mi assegna 0.20 manco per il cavolo ma, dal calcolo assegna 1.08 o 0.85 ora non ricordo con esattezza ho provato a modificarlo ottocento volte senza risultati. Grazie un sacco a chi mi darà una manina <3
Pagine → 1
14/01/2025 18:40:23
A memoria perché mi è capitato di recente una situazione simile, il problema non è il php, ma che nel mysql la tabella arrotonda il valore alla cifra intera più vicina.
Prova a vedere se in effetti modificando la struttura del database risolvi ;)
14/01/2025 18:44:05
Guarda ho già provato mannaggia a tutto e ho messo addirittura 5 cifre decimali
La struttura è questa al momento
esperienza decimal(12,5) Sì 0.00000
e ho provato ora mi assegna ben 1.07917punti
14/01/2025 19:07:33
Grazie super, risolto <3
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!
World of the Sea Battle ↗
Neverness to Everness ↗
Fallen Gods ↗
Enlisted ↗