Parametro che si aggiorna in automatico postato il 17/01/2015 13:10:20 nel forum programmazione, gdrcd, open source, hosting
Salve!
Vorrei creare un parametro che si aggiorna in automatico.
Per la precisione, vorrei fare in modo che il parametro "salute", che si trova nella tabella "personaggio", aumentasse di uno ogni giorno. In tal modo i punti ferita aumenterebbero di uno ad ogni giorno, e così ci sarebbe una sorta di guarigione automatica. Con qualche "if" magari si potrebbe mettere anche qualche correzione, ed evitare l'update a quei personaggi che già hanno la salute al massimo.
Informandomi in rete, ho capito che per realizzare questa cosa devo creare un update, ma non mi è chiarissimo come. Devo associarlo per forza ad una data, tipo un orario? O non ho capito una cippa?
Non so bene neanche qual è il modo più corretto per creare questa cosa: conviene inserirlo in una pagina creata ex-novo (da mettere non so, nella cartella "pages" o è meglio aggiungere qualche riga alla pagina "header.inc.php"?
Pagine → 1 2
17/01/2015 13:40:58
Dipende da come lo vuoi, se lo vuoi fare tipo: al primo login giornaliero ottiene 1 punto salute (obbligandolo a loggare) ti basta inserire una query nella pagina di login tipo UPDATE personaggio SET salute = salute + 1 AND ultimo_up_salute = '$oggi' WHERE nome = $_SESSION['login']
Aggiungendo il campo ultimo_up_salute in modo da limitarlo ad una volta al giorno.
Altrimenti usi un semplice cronjob e metti che alle 00:01 di ogni giorno fa un UPDATE personaggio SET salute = salute + 1
17/01/2015 13:56:20
Grazie Breaker. La seconda soluzione la vedo un po' più vantaggiosa, perché non è necessario dover effettuare per forza il login (così se uno è assente per tre giorni non perde tre punti di recupero) e non è necessario creare un nuovo campo nel database.
Ma questo piccolo script dove conviene crearlo? Il mio fine è quello di rendere la cosa completamente automatica, senza che ci sia bisogno di effettuare un login giornaliero o di dover premere un tasto.
Serve una pagina da creare ex novo, o basta aggiungere qualche riga da qualche parte?
17/01/2015 14:18:32
devi vedere se il tuo hosting prevede il cronjob, poi lo script lo puoi mettere ovunque
17/01/2015 14:57:15
Questo non lo so, pensavo di usare altervista e magari in un secondo momento aruba, ma non lo so.
E se utilizzassi strftime per creare un'ipotesi? Qualcosa del tipo "Se l'ora è "0" ed i minuti "01" aggiorna salute di +1", potrebbe funzionare? O è una cavolata?
17/01/2015 15:06:11
il problema è che uno script php si esegue solo quando viene richiamato. Se nessuno chiama quella pagina quello script non si esegue, ti servirebbe qualcuno che alle 00:01 vai sul browser e digita dominio.it/script.php
Cosa non fattibile, quindi o vai di cronjob oppure usi qualche workaround tipo metti uno script globale ed il primo che logga (in assoluto) aggiorna la salute di tutti, questo nella speranza che almeno 1 logghi ogni giorno
17/01/2015 15:13:56
Che cosa particolare... E se questo script si trovasse in una pagina che ha un refresh? Anche in questo caso servirebbe almeno il login di qualcuno? (le sto pensando tutte per evitarlo, 'sto login! XD)
17/01/2015 15:28:01
dovresti avere qualcuno che tiene il pc sempre accesso su quella pagina in modo che il refresh abbia senso. Ma conviene tenere il pc accesso sempre per uno script che deve essere eseguito 1 volta al giorno?
17/01/2015 15:52:27
Ovviamente non conviene XD
Grazie per questa spiegazione, approfondirò meglio il discorso legato al cronjob.
18/01/2015 17:24:39
magari se fai una ricerca in rete trovi un qualche crawler/bot programmabile che ti visita la pagina una volta al giorno (ovviamente deve essere raggiungibile senza login)
19/01/2015 13:12:23
Mi documenterò anche su questo argomento, ma temo sia molto complicato (già non saprei come fare ad evitare il login).
Sul cronjob invece adesso ho un'idea un po' più chiara.
Innanzitutto, Altervista ha solo server Linux, quindi sarebbe una cosa fattibile. Fornisce questo servizio a pagamento, ma la cifra è molto bassa (vende vari "pacchetti" di operazioni, se intendo fare un aggiornamento al giorno vuol dire che mi serviranno 365/366 operazioni. Il prezzo dei vari pacchetti non è proibitivo).
Su Araba invece si può scegliere tra un server linux o un server windows, o addirittura entrambi. Anche qui c'è la possibilità di fare cron jobs, ma i prezzi sono un po' più alti e non ho capito che limiti ci sono sui cron.
Ultimamente però sto rivalutando la prima ipotesi di breaker: l'aggiornamento al login.
Il fatto è che facendo queste ricerche ho scoperto che si possono fare delle operazioni con le date. Questo cambia tutto, perché in tal modo potrei calcolare, ad esempio, quanti giorni sono passati dall'ultimo login. I dati già ci sono, perché esistono i campi "ora_entrata" ed "ora_uscita", in qualche modo potrei usare questi per calcolare i giorni, e così poter attribuire più di un punto se uno è stato assente per più di un giorno.
Dovrei però inserire anche un altro parametro, mi sa. Perché spesso capita che un giocatore nell'arco della giornata si colleghi più volte, e questo azzererebbe il conteggio delle 24h (ora ho capito perché breaker consigliava la creazione del campo "ultimo_up_salute").
Insomma, è un po' più complessa questa soluzione, ma non è impossibile, e forse è anche più coerente: mettiamo che on game uno è stato ferito proprio a mezzanotte, e perde un punto vita. Con il cron job, miracolosamente lo recupera subito. Con l'update al prossimo login, invece lo recupera appena entra di nuovo nella land ed in tal caso potrebbe anche giocarsi il recupero.
Ho un po' più chiare le due soluzioni, ma sono di nuovo al punto morto di non sapere che fare, in sostanza XD
Discussione seguita da
Pagine → 1 2
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
Cleveland City: Si chiude il caso del “Serial Killer - il Giudice”
New Orleans: Il Social che non ti aspetti
Sponsorizzati con noi! → Sponsorizza il tuo gioco su GDR-online! Trova nuovi giocatori fra i migliaia di appassionati che ogni giorno visitano il portale!
fox ha risposto alla discussione: Gioco investigativo e politico
Hikaru No Tohei - Le Luci di Tohei: Butad-ON - È iniziato Harouin (pure quest'anno) 🎃
lubeck ha risposto alla discussione: IA e gdr: idee di sviluppo
Portus: Harry Potter Gioco di Ruolo: Flash News: crisi ministeriale ad Hogwarts
World of Tanks → Lanciati in epiche battaglie spalla a spalla con altri giocatori. Conquista la supremazia nel mondo dei Carri Armati!
Dalemyr: La crescita delle tensioni
World of Tanks: Girls und Panzer torna a splendere in WoT!
RAID Shadow Legends: Chance Artefatti X3
I dati del generatore di rank sono stati aggiornati!
Crossout → Tuffati nel mondo di Crossout, il gioco MMO d'azione post apocalittico! Costruisci le tue speciali macchine da combattimento!
mathrim ha recensito La Tana del Ladro
Star Trek Horizon: QuestLog: Il mondo di smeraldo
Dominion Gdr: Aggiornamenti tecnici➡️
RAID Shadow Legends: RAID Digest di oggi! 🛡️
Enlisted → Guida la tua squadra di soldati in combattimenti su larga scala, con fanteria, veicoli corazzati e aerei della IIa Guerra Mondiale!
UberSuggest - Ubersuggest come funziona e come sfruttarlo? Scopriamo qualcosa di più su questo tool gratuito!
Histats - Scopri il sistema di statistiche web per il tuo gioco! Histats è gratuito!
Corvi Clamor - Intervista alla gestrice di Corvi Clamor: play by chat potteriano ambientato in Scandinavia!
Eternal GdR - Intervista alla gestrice di Eternal GDR, il play forum bastato sulle relazioni sentimentali
Arcana Domine - LARP Isola dei Dannati: il GDR ad altissima risoluzione!
Schede PG - Alcuni consigli di Romeo Gentile su come fare una buona scheda personaggio
Film Sci-Fi - I dieci film fantascientifici imperdibili per chi vuole iniziare a giocare di ruolo!