Nuovo controllo Punti postato il 20/04/2013 13:51:16 nel forum programmazione, gdrcd, open source, hosting
Buongiorno a tutti,
vi scrivo per un problema di programmazione, che in realtà è composto da più parti...
L'idea: Creare una pagina php, che verrà richiamata con un chronjob una volta al giorno, che controllo la data degli ultimi punti esperienza ricevuti da ogni PG e inserisce, nel caso la data sia più vecchia di una settimana, un malus (-1 punto esperienza) a quel PG.
Il motivo: I Punti esperienza in gioco "equivalgono" al grado di preparazione fisico e mentale dei PG. Essendo un'ambientazione militare, ci si addestra, ci si allena, si impara a sparare e si cerca di mantenere l'allenamento. A rigor di logica, se i punti salgono, man mano che il PG "migliora" in riflessi, forza fisica, prontezza ecc ecc sarebbe solo logico che se un PG non si muove per 2 settimane, questo sia "meno preparato" fisicamente e mentalmente di quanto non fosse prima.
Come fare: Il GDR è basato su GDR-CD, anche se ormai ben poco è rimasto del vecchio codice, cmq, la struttura della Tabella "Punti" non è cambiata moltissimo. Ci sono alcuni campi in più, ma per ora ignoriamoli e diamo per contato che i campi che ci interessano sono:
"Nome" (Il nome del personaggio), "DataEvento" (La data dell'ultima assegnazione dei punti) e "Esperienza" (I punti esperienza assegnati).
Il controllo dovrebbe essere:
if DataEvento < NOW-7gg
INSERT nuova riga con Nome = NomePG controllato, DataEvento = NOW e Esperienza = -1
I problemi:
- Come controllo TUTTI i PG iscritti?
- Come inserisco il valore di ID (La chiave primaria della tabella Punti) che deve "autoincrementarsi"?
Grazie a tutti ^^
20/04/2013 13:58:11
Ultima considerazione:
Pensavo di lavorare su qualcosa tipo:
20/04/2013 13:58:45 e modificato da overlord il 20/04/2013 14:07:03
Mi viene da pensare ad una soluzione migliore, perché invece di scomodare i job a tempo, non fai il controllo al login dell'utente? Non consumeresti neanche query in più. Quando richiami dal DB tutti i dati per la verifica che l'utente è vero, con un Join richiami anche la data ultimo evento di assegnazione PX, poi fai una verifica con IF (ovviamente XD) su questo valore, e se più vecchio di tot tempo, assegni il malus.
20/04/2013 14:12:37 e modificato da leoblacksoul il 20/04/2013 14:21:32
Una query per domarli:
20/04/2013 14:43:07 e modificato da sgc carter il 20/04/2013 14:46:47
OK...
Ora però, mi sono "reso conto" che inserire una riga in "Punti" non è l'unica cosa che devo fare... C'è da "togliere" un punto anche alla voce "Esperienza" della tabella "Personaggio" dove il "Nome" equivale al nome del PG "fuori allenamento" XD
Quindi,
uso un INSERT nella tabella Punti affinché il prossimo "punto" lo toglie quando passa un'altra settimana dall'ultimo controllo. E va bene
E poi devo togliere un punto exp dalla Tabella Personaggio...Any hint?
Quanto a:
"Devono aver ricevuto almeno una volta dei punti exp" certo... se non ne hanno nessuno, non possono ricevere sottrazioni, va bene.
"Non possono scendere sotto lo 0" Beh, tencicamente possono... non è un valore utile, ma in teoria, potrebbero.
20/04/2013 14:59:05 e modificato da leoblacksoul il 20/04/2013 15:00:55
una è un'update, l'altra è una insert, non si possono fare nella stessa query. Quindi devi necessariamente farle in due passi.
Fai prima:
20/04/2013 15:01:20
Quando fai l'INSERT del -1 lanci anche un UPDATE della tabella personaggio per sottrarre 1 al suo valore totale di esperienza, e che ci vuole :D
20/04/2013 15:05:09 e modificato da sgc carter il 20/04/2013 15:11:35
Hmm, quindi inserendo questo:
20/04/2013 15:14:14 e modificato da leoblacksoul il 20/04/2013 15:15:10
Si esatto. Io la farei in un cron però, al login viene eseguita molte più volte di quanto sia necessario e le query aggregate sono pesantucce.
Ricordati di testarle prima metterle per davvero sul tuo gdr, io non le ho testate per davvero ;)
20/04/2013 15:16:51
Sto testando or ora e...
Funziona la parte dell'inserimento della riga in "punti" ma non sottrae il punto al Personaggi nella tabella Personaggio...
20/04/2013 15:42:02
Domanda... ma perché proprio in quell'ordine?
Ho controllato i vari dati, nome tabella, nomi campi ecc ecc, e sono tutti giusti... può essere che il problema sia nel "Join" dei dati?
Discussione seguita da
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
World of Warship: Aggiornamento 13.11: anteprima
gdr-online.com ha risposto alla discussione: Parere su BrowserGame
CRSED: F.O.A.D. → Brutale sparatutto MMO in cui vince l'ultimo giocatore che resta in vita nell'arena! Ogni giocatore sarà accompagnato da armi realistiche e magie!
W40K Dathyar: Specializzazioni
NosTale: Ora nel NosMall: dolcissimi mini-pet
DarkOrbit: Aggiorna la scatola dell'Apocalisse!
I dati del generatore di rank sono stati aggiornati!
Storie di Agarthi → Un Varco si apre davanti a te, un mondo tra i mondi è a portata di mano. Lasciati alle spalle le certezze, diventa quello che hai sempre cercato.
aik ha aperto una nuova discussione: Parere su BrowserGame
eXtremelot: La Bussola dei Cartografi di Lot
Dallas Black Gold: [Trama] JFK Memorial
Hero Wars: Artefatti dei Titani!
World of Warship → MMO gratuito con frenetiche battaglie navali ambientate nel ventesimo secolo. Salpa con la tua nave ed affronta i nemici!
bother ha recensito Never Have I Ever: Mysteries of Laconia Bay
Games of Thrones Winter is Coming: #giveaways codice regalo! 🥳
Enlisted: Migliorare e ottimizzare le ombre
Road to Hamartia: CACCIA: Sarà uno o tre?
Pandora Upside Down High School → La prima scuola per sovrannaturali al mondo vi attende! Scoprite il vostro cammino Ancestrale relazionandovi con i compagni e le attività dei club
Ignis Fatuus Gdr - Intervista alla gestione del play by chat urban fantasy Ignis Fatuus Gdr
Le Streghe - Interessante tesi di laura dal titolo: La Strega Smascherata
Critica ai GDR - Critica sui giochi di ruolo online pubblicata da Punto Informatico
Sottogeneri Cyberpunk - Scopriamo assieme tutti i sottogeneri del Cyberpunk e dello Steampunk!
Stargate Command - Stargate Command Online, un gioco da gaters presentato da Fantascienza.com
Popmundo - Browser game: Popmundo dove i giocatori competono per ottenere fama nell'industria musicale virtuale!