Valore postato il 20/06/2011 20:27:53 nel forum programmazione, gdrcd e open source
Domanda, allora mettiamo il caso che io ad ogni azione scritta in chat ho un valore X che automaticamente mi diminuisce, poi smetto di giocare e vorrei che questo ogni tot minuti si rigeneri di 1 Punto come devo fare? Inoltre non vorrei che questo valore salga oltre il limite stabilito ovvero 100.
Esempio Pratico:
Ho 100/100 di Resistenza, inizio a giocare in un chat e alla prima azione la resistenza diventa 99, alla seconda azione 98, ecc. ecc. Ora questo lo so fare però come posso fare che dopo che smetto di giocare il valore salga fino a recuperare i suoi 100/100 e non vada oltre?
Pagine → 1 2
20/06/2011 20:38:33 e modificato da vino_veritas il 20/06/2011 20:40:40
Ci sono molti modi per farlo, te ne dico un paio "al volo".
Il primo è scrivere una funzione javascript che tramite la funzione setTimeout controlla ad ogni minuto il valore del parametro e lo abbassa (attenzione, detta così funziona solo lato client, ovvero sul browser dell'utente, per aggiornare il valore su db dovresti usare una chiamata asincrona). Il secondo è farlo lato server (esclusivamente via php, intendo), ovvero ad ogni refresh di chat, calcolare il tempo trascorso dall'ultimo aggiornamento, e aggiornare il parametro in maniera sincrona.
Edit: scusa, non avevo visto che la tua richiesta era un'altra. Puoi semplicemente fare in modo che al login del pg il valore ritorni normale, se è trascorso un lasso di tempo considerevole dall'ultimo logoff (in questa maniera eviti i furbacchioni che fanno logout/login apposta per farsi ritornare il valore al massimo).
20/06/2011 20:42:25
La mia soluzione era in PHP ovvero ad ogni Refresh per come ho fatto ti controlla se c'è un'attività di gioco del PG, se c'è non dovrebbe aumentare se c'è all'azione piglia e scala il valore. Ora per scalare è facile, fatto per aumentare e per rigeneralo come faccio? PHP please anche se mi spiegato solo il meccanismo :(
20/06/2011 21:30:16
Tieni in sessione l'ora dell'ultima azione in formato datetime. Al refresh verifica quanto tempo e' passato ed eventualmente aggiungi.
20/06/2011 21:51:33
Dunque il problema di verifica se c'è o meno l'azione in chat ho risolto, l'unica cosa che non sto riuscendo a fare è quella di far aumentare il valore fino alla soglia massima :(
Suggerimenti?
20/06/2011 22:06:05
Puoi spiegarmi un pò, solo esempio non andiamo sulle cose tecniche, come faresti?
21/06/2011 00:35:29
Aspetta, ti riferisci al "Come faccio a capire qual è la soglia di punteggio a cui far ritornare il valore?" Perchè se è quello, è ovvio che da qualche parte glielo devi salvare, il valore a cui deve tornare la caratteristica. Altrimenti non ho capito qual è il problema :-)
21/06/2011 10:20:35
Dunque io ho messo così, lo spiego proprio in parole povere:
Se il PG gioca in Chat, controlla la sessione di gioco e toglie 1 di caratteristica ogni Azione fatta.
Fino a qui nulla da dire, funziona magnificamente.
Ora volevo fare un'altra cosa ovvero, quando il PG non gioca più in Chat volevo che questoa Caratteristica aumenti da sola chessò ogni ora di 1 punto, pensate così possa andare?
$now=time();
$MySql = "SELECT ultimaexp FROM user WHERE nome = '".$user."'";
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
$exp=$rs[ultimaexp]+36;
if($exp<$now){
$MySql = "UPDATE user SET salute = salute + '0.01', ultimaexp = '".$now."' WHERE nome = '".$user."'";
$Result = mysql_query($MySql);
}
$rs->close;
?
inoltre affinchè il valore si ricarichi fino a 100 suo massimale come posso fare?
21/06/2011 11:35:47
Come ottimizzazione ti conviene calcolare l'ammontare della caratteristica solo a ogni evento utile. Per esempio, guardo la scheda del tizio e il sistema conteggia quanto tempo e' passato dall'ultimo aggiornamento della caratteristica incrementandola di conseguenza e aggiornando l'ultimo aggiornamento
Discussione seguita da
Pagine → 1 2
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
nick nightingale ha risposto alla discussione: Perché non avete più voglia di giocare?