Salve a tutti!Sto lavorando ad un progetto su GDRCD, e volevo automatizzare il processo di stipendio. Mi spiego meglio: in "banca", si può ritirare ogni giorno lo stipendio, ovvero premere il pulsante per avere l'accredito. Volevo automatizzare questo processo per farlo accadere automaticamente tutti i giorni alla stessa ora. Come posso fare? A me viene in mente un cron job, ma non so se sia fattibile su Altervista... grazie in anticipo!
Pagine → 1 [2]
10/09/2018 14:46:30
misfit_toys_gdr ha scritto: il cron job su altervista non va, mi sembra, però puoi fare una cosa, ovvero, toccando la pagina del login, invece che farlo ritirare ogni giorno alla stessa ora, ad ogni login.potrebbe essere una alternativa. dove trovi la scritta$login1 = ucwords(strtolower($login1));io ho il codice modificato un po' quindi spero che tu abbia questo, dovrebbe esserci, sotto... ci metti/*Carico dal database il profilo dell'account (personaggio)*/$record = gdrcd_query("SELECT personaggio.nome, personaggio.ultimo_stipendio, personaggio.cognome, personaggio.permessi, personaggio.sesso, personaggio.ultima_mappa, personaggio.ultimo_luogo, personaggio.id_razza, personaggio.ultimo_messaggio, personaggio.blocca_media, personaggio.ora_entrata, personaggio.ora_uscita, personaggio.ultimo_refresh, razza.sing_m, razza.sing_f, razza.icon AS url_img_razza FROM personaggio LEFT JOIN razza ON personaggio.id_razza = razza.id_razza WHERE nome = '".gdrcd_filter('in',$login1)."' AND pass = '".gdrcd_filter('in',$pass1)."' LIMIT 1");$ultimo=$record['ultimo_stipendio']; $query="SELECT ruolo.stipendio FROM clgpersonaggioruolo LEFT JOIN ruolo on clgpersonaggioruolo.id_ruolo = ruolo.id_ruolo WHERE clgpersonaggioruolo.personaggio = '".gdrcd_filter('in',$login1)."'";$result=gdrcd_query($query, 'result');$stipendio=0;while($row=gdrcd_query($result, 'fetch')){if ($row['stipendio']<=0) { $stipendietto=0;} else { $stipendietto=gdrcd_filter('num',$row['stipendio']);}gdrcd_query($result, 'free');if($ultimo != strftime("%Y-%m-%d")){ gdrcd_query("UPDATE personaggio SET banca = banca + ".$stipendietto.", ultimo_stipendio = NOW() WHERE nome = '".gdrcd_filter('in',$login1)."' AND ultimo_stipendio < NOW() LIMIT 1");}}ho sistemato, spero di non aver fatto cappellate, che noi abbiamo anche lo stipendio proporzionato alle risorse, ma dovrebbe essere corretto il codice xD
$login1 = ucwords(strtolower($login1));
/*Carico dal database il profilo dell'account (personaggio)*/$record = gdrcd_query("SELECT personaggio.nome, personaggio.ultimo_stipendio, personaggio.cognome, personaggio.permessi, personaggio.sesso, personaggio.ultima_mappa, personaggio.ultimo_luogo, personaggio.id_razza, personaggio.ultimo_messaggio, personaggio.blocca_media, personaggio.ora_entrata, personaggio.ora_uscita, personaggio.ultimo_refresh, razza.sing_m, razza.sing_f, razza.icon AS url_img_razza FROM personaggio LEFT JOIN razza ON personaggio.id_razza = razza.id_razza WHERE nome = '".gdrcd_filter('in',$login1)."' AND pass = '".gdrcd_filter('in',$pass1)."' LIMIT 1");$ultimo=$record['ultimo_stipendio']; $query="SELECT ruolo.stipendio FROM clgpersonaggioruolo LEFT JOIN ruolo on clgpersonaggioruolo.id_ruolo = ruolo.id_ruolo WHERE clgpersonaggioruolo.personaggio = '".gdrcd_filter('in',$login1)."'";$result=gdrcd_query($query, 'result');$stipendio=0;while($row=gdrcd_query($result, 'fetch')){if ($row['stipendio']<=0) { $stipendietto=0;} else { $stipendietto=gdrcd_filter('num',$row['stipendio']);}gdrcd_query($result, 'free');if($ultimo != strftime("%Y-%m-%d")){ gdrcd_query("UPDATE personaggio SET banca = banca + ".$stipendietto.", ultimo_stipendio = NOW() WHERE nome = '".gdrcd_filter('in',$login1)."' AND ultimo_stipendio < NOW() LIMIT 1");}}
03/12/2019 00:49:24
Scusate se uppo questo post, ma ho provato il codice e funziona, sì, però a ogni login nella stessa giornata, riaccredita lo stipendio. (ho un pg che ha uno stipendio di 5 monete al giorno, ma se nell'arco delle 24 ore loggo più volte, ogni volta lo stipendio del pg aumenta di 5 monete ) Uso GDRCD 5.4.1 - hosting Altervista - Versione MySQL: 5.6Per favore qualcuno sa dirmi come fare in modo che una volta preso lo stipendio non lo assegni più fino al giorno successivo? per quel poco che so di PHP, controllando la stringa di codice non mi sembra di vedere errori o logiche strane. Però sono appunto abbastanza incapace. Grazie in anticipo per chiunque avrà la bontà di rispondermi
03/12/2019 08:47:04
Prova a modificare il $record in questo modo:
$record = gdrcd_query("SELECT personaggio.*, razza.sing_m, razza.sing_f, razza.icon AS url_img_razza FROM personaggio LEFT JOIN razza ON personaggio.id_razza = razza.id_razza WHERE nome = '".gdrcd_filter('in',$login1)."' AND pass = '".gdrcd_filter('in',$pass1)."' LIMIT 1");
Discord: https://discord.gg/8KjbuS3
03/12/2019 09:41:36
staff shadowland ha scritto: Prova a modificare il $record in questo modo:$record = gdrcd_query("SELECT personaggio.*, razza.sing_m, razza.sing_f, razza.icon AS url_img_razza FROM personaggio LEFT JOIN razza ON personaggio.id_razza = razza.id_razza WHERE nome = '".gdrcd_filter('in',$login1)."' AND pass = '".gdrcd_filter('in',$pass1)."' LIMIT 1");
03/12/2019 10:34:47
Essendo un codice che ho modificato davvero molto tempo fa, non ricordo nell'esattezza le pagine modificate, se non erro c'è qualcosa da mettere a posto anche nella pagina dedicata alla banca o comunque dove viene inserita la paga giornaliera.Il codice da inserire nella pagina login dovrebbe essere il seguente, posto dopo di:
*//** * Magari però facciamolo meglio 😉 * @author Blancks*/$login1 = ucwords(strtolower($login1));
/*Carico dal database il profilo dell'account (personaggio) modificato con stipendio auto in base alle risorse*/$record = gdrcd_query("SELECT personaggio.*, razza.sing_m, razza.sing_f, razza.icon AS url_img_razza FROM personaggio LEFT JOIN razza ON personaggio.id_razza = razza.id_razza WHERE nome = '".gdrcd_filter('in',$login1)."' AND pass = '".gdrcd_filter('in',$pass1)."' LIMIT 1");$ultimo=$record['ultimo_stipendio'];$query="SELECT ruolo.stipendio FROM clgpersonaggioruolo LEFT JOIN ruolo on clgpersonaggioruolo.id_ruolo = ruolo.id_ruolo WHERE clgpersonaggioruolo.personaggio = '".gdrcd_filter('in',$login1)."'";$result=gdrcd_query($query, 'result');$stipendio=0;while($row=gdrcd_query($result, 'fetch')){if ($row['stipendio']<=0) { $stipendietto=0;} else { $stipendietto=gdrcd_filter('num',$row['stipendio']);}gdrcd_query($result, 'free');if($ultimo != strftime("%Y-%m-%d")){ gdrcd_query("UPDATE personaggio SET soldi = soldi + ".$stipendietto.", ultimo_stipendio = NOW() WHERE nome = '".gdrcd_filter('in',$login1)."' AND ultimo_stipendio < NOW() LIMIT 1");}}
/*Se esiste un personaggio corrispondente al nome ed alla password specificati*//** * Aggiunti i controlli sugli orari di connessione e disconnessione per impedire i doppi login con gli stessi account * Se si esce non correttamente dal gioco, sarà possibile entrare dopo 5 minuti dall'ultimo refresh registrato *@author Blancks*/
03/12/2019 10:40:05
In realtà ho trovato questo thread poco fa https://www.gdr-online.com/readforum.asp?id=211877 e usando quel codice non in login ma in main, la funzione va che è una meraviglia. Aggiunge i soldi direttamente nel campo "soldi in tasca" del pg al posto che in banca, ma è facilmente modificabile per farglieli mettere sul conto bancario, se si preferisce così! Non ho dovuto modificare nient'altro!
03/12/2019 10:48:12
Se è più facile così direi che va benissimo, ti consiglio sempre di fare qualche test comunque =)
03/12/2019 10:51:26
staff shadowland ha scritto: Se è più facile così direi che va benissimo, ti consiglio sempre di fare qualche test comunque =)
03/12/2019 12:28:51
No assolutamente, intendevo prova a fare qualche test anche per quanto riguarda lo spostamento di denaro ecc. non si sa mai!
03/12/2019 12:32:14
ah ok, allora sì, dai servizi bancari tutto a posto!
Discussione seguita da: » rt1978 » rossidaidioti » ingchat » moonspell