[ GDRCD 5.4 ] Autodecremento cariche oggetti indossati su invio azione
[ GDRCD 5.4 ] Autodecremento cariche oggetti indossati su invio azione postato il 08/08/2017 17:05:57 nel forum programmazione, open source e hosting e modificato da sadly-noob il 08/08/2017 17:06:37
Buonanf, sera a tutti.
Vorrei appellarmi alla vostra saggezza e chiedere un riscontro sulla soluzione che m'è venuta in mente per raggiungere il seguente obiettivo:
Devo fare in modo che il parametro 'cariche' degli oggetti indossati (quindi presenti negli slot dell'omino bianco) decrementi in automatico ogni volta che il giocatore invia la sua prima azione in chat. Questo per simularne naturalmente un consumo coerente agli utilizzi effettivi che vengono fatti degli oggetti in questione.
Come nabbazza incompetente non ho ancora tentato di scrivere del codice in merito - ho fatto però un ragionamento su come potrebbe, ehmn, essere? Un'idea di questo genere:
Se il parametro "cariche" degli oggetti presenti nelle slot è maggiore o uguale a 0 e sono trascorse più di otto ore dall'ultimo invio azione:
-> quando utilizzo l'invio azione (input) faccio un update al database per sottrarre un punto al totale del parametro "cariche" per gli oggetti che sono all'interno delle slot in quel momento
altrimenti ..
-> Se il parametro "cariche" degli oggetti presenti nelle slot è minore di 0 elimino l'oggetto
Nella prima parte, il fatto che le cariche dell'oggetto debbano essere maggiori o uguali a zero si deve al fatto che .. Non saprei come risolvere diversamente la seguente situazione:
- Il mio oggetto 'spada' è rimasto con 1 carica.
- Vado in chat ed invio l'azione, quindi il sistema procede a togliere 1 punto alle cariche.
- Le cariche scendono da 1 a 0 e l'oggetto viene cancellato immediatamente.
Questo non va bene naturalmente, perché il giocatore non ha modo di sfruttare quell'ultima carica rimasta.
Devo inoltre indagare in merito al fatto che il parametro cariche possa scendere sotto lo zero. Mi sa di no, ewr.
Dando per scontato che non si possa fare, si potrebbe forse ripiegare con lo stesso ragionamento sul parametro 'Quantità', convertendolo in una roba tipo 'Usura'.
Non mi sento di considerare soluzioni come l'impostazione di una scadenza temporale per certi oggetti perché non ho assolutamente le competenze per farlo, quindi perché mi trovo in ogni caso a preferire un sistema che privilegi il 'consumo effettivo' al 'usalo quanto ti pare fino a data X'.
.. E questo è il mio dilemma: quanto fa schifo questa pensata da 1 a https://i.pinimg.com/736x/c9/51/f7/c951f75d38ea7a3d631eeed3cab6cf92--music-quotes-dark-art.jpg ↗? Ci sono elementi che sto trascurando rischiando di compromettere il funzionamento di altre cose?
Vi ringrazio per il vostro tempo/attenzione, msigh.
Pagine → 1
08/08/2017 20:15:46
Noi abbiamo un sistema di consumo cariche completamente differente, ovvero devono essere consumate solo quando l'oggetto viene fisicamente utilizzato.
Nel tuo caso, così a naso mi viene da dirti.
fatti una tabella dove ogni carica consumata fai un update su un campo datetime.
Poi ti fai una funzioncina che verifica le cariche rimaste e il tempo trascorso dall'ultimo update. Se sono passate più di X ore, elimini l'oggetto.
09/08/2017 01:56:02
Ciao Ray, mi sa che è un po' oltre le mie capacità, non saprei bene come gestirla.
Avendo già un componente (non scritto da me, uhe) che fa una update per ogni azione inviata ogni otto ore speravo biecamente di sfruttare quel codice per ottenere il medesimo risultato sugli oggetti.
Rimugino un po' sulle tue indicazioni comunque, magari riesco a venirne a capo - grazie mille per la dritta!
09/08/2017 02:53:56
Se hai già qualcosa che ogni 8 ore esegue l'update sull'invio dell'azione, puoi sfruttarlo.
quasi sicuramente hai uno statement prima della query di insert dell'azione.
All'interno di quello statement usi l'id del personaggio e ti fai una query per recuperare l'oggetto equipaggiato.
recuperato l'oggetto ti fai una query sulla tabella delle cariche per recuperare le cariche residue e l'ultimo update.
se l'ultimo update è di almeno 8 ore prima e le cariche sono uguali a 0, lanci il delete dell'oggetto (di cui hai già l'id)
Questa è la soluzione più semplificata che mi viene da suggerirti.
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
World of the Sea Battle ↗
AlterEgo ↗
Project Entropy ↗