[GDRCD 5.3] Limite PX giornalieri
31/05/2020 21:31:30
animeanddragons ha scritto: Salve ragazzi, riprendo questa discussione avendo fatto mille prove ma nella mia ignoranza aver fallito miseramente e ho bisogno di risolvere la cosa in modo ESTREMO ç_ç
Vado per gradi dunque.
in config.inc ho questi valori
$PARAMETERS['settings']['exp_by_chat']['number'] = '500';
// Numero di caratteri necessari al fine di aggiungere X punti esperienza.
$PARAMETERS['settings']['exp_by_chat']['max24h'] = '20';
// Imposta il massimo dei punti esperienza che si possono ottenere nell´arco di 24ore di gioco. Questo per scoraggiare web forcing.
In ref_header ho questa parte di codice:
/*Inserisco il messaggio*/
gdrcd_query("INSERT INTO chat ( stanza, imgs, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", '".$_SESSION['sesso'].";".$_SESSION['img_razza']."', '".$_SESSION['login']."', '".gdrcd_capital_letter(gdrcd_filter('in', $tag_n_beyond))."', NOW(), '".$m_type."', '".$chat_message."')");
if($PARAMETERS['mode']['exp_by_chat']=='ON')
{
if (($m_type == 'A' || $m_type == 'P' || $m_type == 'M') && ($msg_length>=$char_needed))
{
gdrcd_query("UPDATE personaggio SET esperienza = esperienza + 10 WHERE nome = '".$_SESSION['login']."' LIMIT 1"); /*$PARAMETERS['settings']['exp_by_chat']['number_increment_xp'] /// gdrcd_filter('num', $PARAMETERS['settings']['exp_by_chat']['number'])*/
}
}
VI PREGO VI SUPPLICO come devo inserire bene l'if affinchè mi imposti che il limite massimo di esperienza ogni 24 h non deve superare il valor eimpsotato in $PARAMETERS['settings']['exp_by_chat']['max24h']? Vi prego ne ho un bisogno miciadiale pensavo di esserci riuscito ma non era così e ho riportato il codice a livello "pulito" ç_ç
Mi pare di aver gia letto e risposto a una domanda tua per questa cosa,
non è possibile gestire queste cose se non fai un controllo dell'esperienza giornaliera.
Bisogna mettere un controllo (un record per ogni personaggio) dove viene marcato quanta exp ha già ricevuto il personaggio, e "pulire" questo record ogni giorno.
Aveva consigliato breaker di fare una pulizia al login del primo utente del giorno, in modo che il record torni zero ogni giorno, e ricomincia a riempirsi man mano che i player giocano, fino al massimale voluto.
31/05/2020 21:54:07
Si assolutamente vero e me ne scuso, non ne sono capace :(
05/06/2020 01:34:37 e modificato da animeanddragons il 05/06/2020 01:35:43
Qualcosa del genere potrebbe...? Ce la sto mettendo tutta, ma non riesco. Qualche suggerimento? Anche solo per dirmi se sono sulla buona strada per piacere
gdrcd_query("INSERT INTO chat ( stanza, imgs, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", '".$_SESSION['sesso'].";".$_SESSION['img_razza']."', '".$_SESSION['login']."', '".gdrcd_capital_letter(gdrcd_filter('in', $tag_n_beyond))."', NOW(), '".$m_type."', '".$chat_message."')");
$sql= gdrcd_query("SELECT count(*) max_day FROM chat where ora between concat(left(now(),10)) and concat(left(now(),11),'23:59:59') and nome='".$_SESSION['login']."'");
if($PARAMETERS['mode']['exp_by_chat']=='ON')
{
if (($m_type == 'A' || $m_type == 'P' || $m_type == 'M') && ($msg_length>=$char_needed) && $sql['max_day']<=$PARAMETERS['settings']['exp_by_chat']['max24h'])
{
gdrcd_query("UPDATE personaggio SET esperienza = esperienza + 10 WHERE nome = '".$_SESSION['login']."' LIMIT 1");
}
}
05/06/2020 12:24:36
$sql= gdrcd_query("SELECT max_day FROM personaggio nome='".$_SESSION['login']."'");
if($PARAMETERS['mode']['exp_by_chat']=='ON') {
if (($m_type == 'A' || $m_type == 'P' || $m_type == 'M') && ($msg_length>=$char_needed) && $sql['max_day']<=$PARAMETERS['settings']['exp_by_chat']['max24h'])
{
gdrcd_query("UPDATE personaggio SET esperienza = esperienza + 10 WHERE nome = '".$_SESSION['login']."' LIMIT 1");
}
}
prova un approccio del genere
06/06/2020 02:25:55
Grazie a tutti, davvero. Il problema credo sia nel fatto che su phpmyadmin si, ho creato un record chiamato max_day, ma il problema è che non so fare ciò che avete suggerito sopra.
non è possibile gestire queste cose se non fai un controllo dell'esperienza giornaliera.
Bisogna mettere un controllo (un record per ogni personaggio) dove viene marcato quanta exp ha già ricevuto il personaggio, e "pulire" questo record ogni giorno.
Aveva consigliato breaker di fare una pulizia al login del primo utente del giorno, in modo che il record torni zero ogni giorno, e ricomincia a riempirsi man mano che i player giocano, fino al massimale voluto.
06/06/2020 10:10:35
sei su altervista oppure altro hosting che ti permette di avere un cronjob?
07/06/2020 20:57:18
altervista (grazie, come sempre).
07/06/2020 22:52:40
Ad esempio metti un file in /jobs/reset_exp.php
all'interno crei uno script molto semplice
<?php
include ('./../includes/required.php');
gdrcd_query("UPDATE personaggio SET campo_da_azzerrare = 0");
vai nel pannello di amministrazione, nuovo cron job. Esecuzione giornaliera alle 00. url da richiamare metti lo script che devi richiamare nel nostro esempio /jobs/reset_exp.php
Questa e' la teoria, la pratica vorrebbe che tu implementassi un qualche sistema di sicurezza altrimenti rischi che chiunque scriva sul tuo browser www.land.com/jobs/reset_exp.php lancia lo script.
Un modo molto semplice e' aggiungere un parametro allo script, ad esempio come url metti www.land.com/jobs/reset_exp.php?str=sadnFgsg3aSFhdgdg3ydfg43a
il codice lo modifichi in
<?php
include ('./../includes/required.php');
if($_GET['str'] === 'sadnFgsg3aSFhdgdg3ydfg43a') {
gdrcd_query("UPDATE personaggio SET campo_da_azzerrare = 0");
}
e' un sistema basilare, ma dubito che qualcuno si metta a trovare sia la parola che la stringa corretta solo per azzerare il tuo campo. Nel caso volessi un sistema più solido potresti salvare il giorno dell'ultimo azzeramento e fare un check su quello
16/06/2020 01:37:46
Provato alla lettera tutto (grazie!), ma quando si pigia invio in chat l'azione non viene stampata a schermo se non quando si pigia il pulsante per aggiornarla, e non aumenta i px in nessun campo, ne in quello nella tabella personaggio esperienza ne in quello max_day.
16/06/2020 22:52:56
posta il codice perché quello che ti ho scritto sopra era solo a scopo illustrativo, non può essere usato per un caso reale in quanto devi adattarlo al tuo codice
Discussione seguita da
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Enlisted ↗
State of Survival ↗
Tiles Survive ↗
RAID Shadow Legends ↗
Imperion ↗
Tibia ↗
World of Tanks ↗
Storie di Agarthi ↗
Neverness to Everness ↗