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 Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
audentia ha risposto alla discussione: Alternativa alla sindrome del gioco che non c'è.
I dati del generatore di rank sono stati aggiornati!
Entropia Universe → Lascia che il tuo avatar esplori nuovi mondi e viaggi tra i pianeti in questo stupendo MmoRpg Sci-Fi Free to Play!
piscotto ha risposto alla discussione: Che fine hanno fatto le belle Land Crime pbc?
blackmoon88 ha risposto alla discussione: Opèra GDR
Games of Thrones Winter is Coming: Codice regalo speciale!
Game of Thrones → Pronto a diventare il Signore dei Sette Regni? Guida la tua grande casata in epiche battaglie PvP ed esplora il mondo di Westeros!
cnozzo ha risposto alla discussione: W40K Dathyar
Pirates of the Caribbean: Tides of War: Vincitori Torneo Annuale! ☠️
Enlisted: Aggiornamento 0.6.4.48
World of Tanks → Lanciati in epiche battaglie spalla a spalla con altri giocatori. Conquista la supremazia nel mondo dei Carri Armati!
World of Warship: Aggiornamento 13.11: celebrazioni delle feste
Vi presentiamo OperaGX: il browser per gamers!
Storie di Esperia: Dal Trionfo alla Guerra
World of Warship → MMO gratuito con frenetiche battaglie navali ambientate nel ventesimo secolo. Salpa con la tua nave ed affronta i nemici!
Ambientazioni GDR - La seconda lista di ambientazioni non sfruttate dai gestori di giochi di ruolo. Utile per avere spunti per un nuovo gdr!
Automi - Tesi di laurea dal titolo: Automi e invenzioni fra utopia e distopia
Naruto Garden - Intervista al founder di Naruto Garden il play by forum dei Ninja!
Principato di Midgar - Intervista al gestore del GdR play by chat fantasy Principato di Midgar
Epic Quests - Epic quests: la popolarità dei temi fantasy nei giochi online
Google Chrome Https - Google Chrome 56 introduce un controllo aggiuntivo sull'utilizzo dei protocolli sicuri. Vediamo un pò che succede.