GDRCD - Progettazione pacchetto weekly reward
GDRCD - Progettazione pacchetto weekly reward postato il 29/09/2020 16:50:40 nel forum programmazione, open source e hosting e modificato da haruka il 29/09/2020 16:51:09
A sto giro sono proprio in alto mare, anche a livello concettuale.
L'idea sarebbe di creare un premio su base settimanale, se il pg si collega ogni giorno, tipica routine che si trova un po' in tutti i giochini per smartphone, ultimamente.
Tradotto
1° giorno = primo premio
8° giorno consecutivo di connessione = secondo premio
15° giorno consecutivo di connessione = terzo premio
22° giorno consecutivo di connessione = quarto premio
29° giorno consecutivo di connessione = quinto premio e reset
Se la continuità degli ingressi viene interrotta, si riparte da zero.
Il problema è: concettualmente, come conteggiare la continuità?
Stavo pensando che nella tabella personaggio ci sono i campi "ora_entrata" e "ora_uscita". Userei onestamente il primo, perché magari qualcuno chiude frettolosamente la land uscendo dal browser.
Mi viene in mente che dovrei aggiungere un campo "giorniconsecutivi" e lì andrebbero memorizzati i giorni + 1 se in effetti l'ingresso avviene nel giorno successivo a quello segnato in ora_entrata.
Ma non sono neanche sicura di star facendo il ragionamento in maniera corretta 🙃
Qualche spunto?
Pagine → 1
29/09/2020 19:26:35
Io farei una tabella nuova con nome, data e contatore e lavorei su quella aggiornando data e contatore, poi farei una tabella premi con il contatore che va in join con il contatore del giocatore e tira fuori ilpremio
29/09/2020 19:42:56
Sì io farei più o meno come te, aggiungerei una nuova colonna nel db, anche stesso alla tabella del personaggio, che tiene conto della data dell'ultimo ingresso del pg. Poi aggiungerei una seconda colonna che tiene il conto dei giorni successivi di ingresso in land.
Quindi farei un controllo sull'ultimo ingresso così che, se son passate le 24h ti aggiunge un punto alla colonna che tiene conto dei giorni successivi e ti aggiorna anche la data di ingresso.
Metti delle soglie e se si raggiunge il numero di giorni necessario per il regalo lo fai accreditare.
30/09/2020 12:24:22 e modificato da haruka il 30/09/2020 12:25:42
Allora, sto abbozzando il codice e questa prima parte funziona.
Cosa ho fatto:
1) ho aggiunto la colonna "giorniconsecutivi" alla tabella personaggio, dopo "ora_uscita" deve essere INT e bastano due cifre (2)
2) nel file login.php ho modificato:
/*Carico dal database il profilo dell'account (personaggio)*/
$record = gdrcd_query("SELECT personaggio.pass, personaggio.nome, 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)."' LIMIT 1");
con
/*Carico dal database il profilo dell'account (personaggio)*/
$record = gdrcd_query("SELECT personaggio.pass, personaggio.nome, 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.giorniconsecutivi, personaggio.banca, 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)."' LIMIT 1");
Ovvero, aggiungendo personaggio.giorniconsecutivi, personaggio.banca, dopo personaggio.ora_uscita
3) dopo
$_SESSION['sesso'] = $record['sesso'];
ho aggiunto
$_SESSION['giorniconsecutivi'] = $record['giorniconsecutivi'];
4) dopo:
/*Redirigo alla pagina del gioco*/
header('Location: main.php?dir='.$_SESSION['luogo'], true);
}
ho aggiunto
/*conto i giorniconsecutivi e se sono 29, riparto da 0*/
if($_SESSION['giorniconsecutivi'] > 28)
{
gdrcd_query("UPDATE personaggio SET giorniconsecutivi = 0 WHERE nome = '".$_SESSION['login']."'");
}
else
/*altrimenti aggiungo +1 ai giorniconsecutivi */
{
gdrcd_query("UPDATE personaggio SET giorniconsecutivi = giorniconsecutivi +1 WHERE nome = '".$_SESSION['login']."'");
}
/*elargisco i premi in MO in funzione dei giorni trascorsi */
if($_SESSION['giorniconsecutivi'] == 0) {
gdrcd_query("UPDATE personaggio SET banca = banca + 1 WHERE nome = '".$_SESSION['login']."' LIMIT 1");
}
else if($_SESSION['giorniconsecutivi'] == 7) {
gdrcd_query("UPDATE personaggio SET banca = banca + 8 WHERE nome = '".$_SESSION['login']."' LIMIT 1");
}
else if($_SESSION['giorniconsecutivi'] == 14) {
gdrcd_query("UPDATE personaggio SET banca = banca + 15 WHERE nome = '".$_SESSION['login']."' LIMIT 1");
}
else if($_SESSION['giorniconsecutivi'] == 29) {
gdrcd_query("UPDATE personaggio SET banca = banca + 30 WHERE nome = '".$_SESSION['login']."' LIMIT 1");
}
Per ora, e per tener semplice la cosa, il codice funziona così:
1° giorno = 1 MO
8° giorno consecutivo = +8 MO
15° giorno consecutivo = +15 MO
30° giorno consecutivo = +30 MO e reset counter
Forse non sarà il massimo del codice, ma scritto così fino a qui funziona.
Problema, ad ogni login adesso il counter aggiunge +1 a giorniconsecutivi, e quindi non va bene.
Devo mettere tutto sotto un if che in qualche modo paragoni "ora_entrata" con... le 24 ore prima e solo se il giorno è stato superato, ovvero l'if deve prevedere che se siamo oltre la 00:01 del giorno successivo E comunque non sono passate più di 24 ore dall'ultimo ingresso registrato in ora_entrata, faccia partire il loop, altrimenti - e questo è facile - resetterà di nuovo "giorniconsecutivi" a 0.
01/10/2020 16:58:22
Mi auto rispondo: dovrei essere riuscita a fare tutto.
Come per le fasi lunari, lo testo da noi in land (e per essere tranquilla direi che vorrei vederlo in azione almeno con i premi delle prime due settimane) e poi se funziona tutto come dovuto, faccio il pacchetto per il portale :)
01/10/2020 23:22:06
mathramstaff ha scritto:
😊 Gli imbranati come me ringraziano, le fasi lunari erano perfette!
Meno male perché smanettona sì, programmatrice vera no - sto imparando :P
Le fasi lunari erano leggermente più semplici di questa cosa qui, quindi controllo da noi che sia tutto a posto e poi preparo il pacchetto.
Alla fine, gdrcd è un'ottima palestra e tutti noi dobbiamo tanto a chi l'ha distribuito. Se in qualche modo si può condividere, si cresce tutti e nulla più :)
02/10/2020 09:25:20
haruka ha scritto: Mi auto rispondo: dovrei essere riuscita a fare tutto.
Come per le fasi lunari, lo testo da noi in land (e per essere tranquilla direi che vorrei vederlo in azione almeno con i premi delle prime due settimane) e poi se funziona tutto come dovuto, faccio il pacchetto per il portale :)
Bello leggere queste cose. Purtroppo la tendenza dei gestori che utilizzano GDRCD (il 90%?) di non condividere eventuali codici, patch, add-ons è sicuramente il male peggiore per il progetto GDRCD. Fortunatamente oltre al lavoro di Breaker, Dyrr ecc. i tuoi ultimi contributi (l'addons Fasi lunari ad esempio) dimostrano che è possibile creare e condividere con gli altri giocatori/gestori in un clima di hobby comune e non di guerricciola.
Bravissima.. 👍
02/10/2020 14:13:12 e modificato da haruka il 02/10/2020 14:17:54
Ma guarda, quando a fine maggio/inizio giugno con la mia attuale gestione ci siamo seduti a un tavolo virtuale e abbiamo deciso di provare a costruire una land diversa da quelle che ci sono in giro addesso (mi riferisco all'aspetto rinascimentale), abbiamo dovuto fare i conti col fatto che nessuno di noi è un programmatore di professione.
Quindi la prima cosa che abbiamo fatto è stata venire qui e prendere il pacchetto GDRCD, dopo di che, ci siamo messi a spulciare il forum e non so più quante patch, pacchetti e discussioni abbiamo scaricato, letto, modificato... E quando non è bastato il forum, siamo andati a pescare su stackoverflow.com et simili.
Se non ci fosse stato GDRCD, Leggendra non sarebbe qui. Se non ci fossero stati i pacchetti, Leggendra sarebbe qui ma non sarebbe quella di adesso. Quindi per me restituire qualcosa alla community vuol dire ripagare quello che ho ricevuto e non mi costa davvero nulla.
Non riesco ad essere gelosa di un "pezzo di codice", come lo sono invece della nostra ambientazione tanto per dire. E questo per il semplice fatto che credo che i nostri pbc, lato codice, non siano altro che laboratori dove permettere ai giocatori di esprimere la loro fantasia. Il successo di una land io lo misuro nella comunità che gli si crea intorno, nel tempo e nelle energie che i giocatori spendono ogni giorno, nei loro contributi al gioco, che si tratti della creazione di un oggetto o di una trama in qualità di fato.
Non credo che regalare, anzi, restituire alla community di gdr-online qualcosa metta a rischio la mia land, o la privi di qualcosa, o aumenti la concorrenza e quindi porti via giocatori (che, ripeto, in un pbc sono la cosa più importante). E la dimostrazione pratica di quanto dico è che Lot, a parte la chiusura temporanea, continua a fare numeri impressionanti nonostante i cloni che nel tempo gli sono stati costruiti intorno.
Come gestori, penso che abbiamo l'obbligo di fare il possibile per facilitare l'esperienza ludica di chi sceglie il nostro progetto, e questo si può fare migliorando i codici e le funzionalità. Con la speranza che magari, anche parlandone qui, cambi un po' la mentalità e la condivisione torni ad essere una prassi. Per la serie, oggi condivido qualcosa io, domani lo farà Mathran, dopodomani qualcun altro e tutti noi avremo la possibilità di migliorare i nostri giochi :)
09/10/2020 16:06:25
Al giorno 8 dello sviluppo, la funzione ha fatto il suo dovere :P
Attendiamo giusto sta settimana per scrupolo, ma inizio a preparare il pacchetto.
15/10/2020 12:16:26
Add-on inviato due minuti fa :)
🤞
15/10/2020 14:28:29
Ricevuta Haruka grazie! :)
Pubblichiamo il pacchetto per il prossimo aggiornamento del 21/10
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!
Seconda Era ↗
Cafuné ↗
State of Survival ↗
AlterEgo ↗
The Coven ↗
Sea of Conquest ↗
Project Entropy ↗
Wuthering Waves ↗
World of the Sea Battle ↗