[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 decimaliLa struttura è questa al momento esperienza decimal(12,5) Sì 0.00000e 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!