[RISOLTO][GDRCD 5.4] Automatizzare stipendio
[RISOLTO][GDRCD 5.4] Automatizzare stipendio postato il 10/09/2018 12:24:37 nel forum programmazione, open source e hosting e modificato da drfebusinc il 10/09/2018 14:54:02
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
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
Innanzitutto grazie per la risposta!
L'idea che avevo, in effetti, era proprio di uno stipendio proporzionato alle risorse! A quel punto, quando accedi, puoi verificare quanto tempo è passato e, in base a quello, inserire tutti i soldi che avresti dovuto avere...
Grazie! :D
03/12/2019 00:49:24 e modificato da rt1978 il 03/12/2019 00:51:21
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.6
Per 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");
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));
va inserito questo pezzo
/*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");
}
}
e dopo dovrebbe esserci
/*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
*/
Servirebbe anche il codice dedicato alla pagina della banca, se lo posti magari gli si dà un occhio.
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 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:39:49
Grazie mille, ora tutto risolto mettendo il codice menzionato nell'altro post in main.php
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!
Tiles Survive ↗
World of the Sea Battle ↗
Exclusive Villa GdR ↗
AlterEgo ↗
Hero Wars ↗
CRSED: F.O.A.D. ↗
Raja Dunia ↗