Timer Spostamenti postato il 28/06/2007 00:31:28 nel forum programmazione, gdrcd e open source
Dopo averne discusso con un utente e nella chat durante la serata, ed aver analizzato i pro e i contro di questa cosa vi vorrei chiedere come poter implementare, nel mio gdr (in fase di costruzione e non ancora pubblico in quanto non vorrei attirarmi l`ira di Mr_Faber) un timer per le mappe in modo che i PG non saltino da una location all`altra senza rispettare un minimo di coerenza. Ho una mappa generale che si suddivide in 8 sottomappe (tutte immagini) a cui son state collegate poi le varie chat.
In poche parole vorrei creare questo timer che memorizzi la 1a posizione in cui un PG inizia a ruolare e la 2a, quella a cui vuole accedere, in modo che non possa entrare o comunque ruolare senza aver aspettato un determinato tempo, ovviamente non per tutte le chat, in quanto credo che sia un lavoro disumano, ma solo per le 8 mappe...
Pagine → 1 2
28/06/2007 01:17:17
Come sempre c`e` molti modi di gestirla, l`ottimo e`, secondo me, registrare in sessioe l`ora dell`ultimo spostamento, magari per semplificare la gestione inserisci in due elementi distinti del vettore sessione l`ora e il minuto. In refresh.php o in mappa.php fai il controllo, e non fai apparire input.php finche` non e` passato tot minuti (funzioni di timer) dall`ultimo spostamento.
28/06/2007 09:30:37
oppure secondo me con più semplità
invece che fare un link diretto alla pagina fai il link ad una funzine javascript che ha un timer prima di reinderizzare alla pagina
oppure lo metti in php una funzincina che ritardi di un attimo la visualizzazine delle pagine simulando il viaggio
28/06/2007 12:47:01
Secondo me è controproducente.
Se uno poi vuole vedere una giocata in un`altra sottomappa? I master poi come fanno a spostarsi se li blocchi? devi impostare delle eccezzioni ossia impedire di SCRIVERE fino a quando nn si consuma un tot di tempo nn di spostarsi
28/06/2007 14:09:56
Secondo me la soluzione è molto semplice nel caso della richiesta. Basta usare Ajax in questo caso senza crearsi chiamate assurde implementare qualcosa con prototype. Questa libreria ha già implementata alcuni tipi di Timer e potrebbero essere usati per "modificare" dinamicamente il contenuto dei Link (per esempio settare a "#" invece dell`indirizzo corretto). Per cose più complesse andrebbe bene la soluzione delle sessioni/db. E nonostante l`overhead che tu citi black io invece spesso nelle mie applicazioni registro un timestamp dell`attività dell`utente in un db(e anche il SID di sessione) anche se è presente una sessione questo per motivi di sicurezza. Il tutto rientrerebbe poi in un discorso di tabella online.
un`altro modo è usare un input hidden facendo tutto con ajax senza passare da una sessione.
Detto questo non c`è altro da dire mi pare XD.
29/06/2007 12:07:01
ok, qui mi sento nettamente inferiore.. visto che l'ajax non me lo sono ancora imparato e quando ci ho provato o rinunciato perche' purtroppo non mi ci riesco a dedicare(e studiare nelle pause pranzo 10 min al giorno la vedo dura :P)
In ogni caso senza usare sessioni o ajax o altro, ma basandomi sulla mia conoscenza di sqle php, la prima idea che a me veniva in mente per fare il controllo del genere era creare una tabella delle distanze.
ovvero avvere una tabella con le possibili combinazioni degli spostamenti, per esempio
citta1 -> citta2 = 10min
citta3 -> citta8 = 1h
citta4 -> citta8 = 30min
e si fa il controllo in base all'ultima citta' visitata e a quella che si vuole accedere..
ora chiedo.. e' MOLTO piu' pesante e inutile delle soluzioni da voi proposte?
29/06/2007 14:11:07
in effetti per lo spostamento tra città non ha molto senso piuttosto fai pagare un dazio all'ingresso di questa in modo che disincentivi e per per gli spostamenti tra locazioni tipo tra piazza e municipio
29/06/2007 14:41:15
ad un sistema di permessi ed altro avevo pensato anche io, che poi volevo sfruttare anche per dei motivi di sistema commericale interno..
ma come sistema tra citta lontane io non la vedo cosi' inutile.. un conto e' se in una land le citta' sono intese come quartieri, o comunque luoghi in on molto simili..ma se come nel mio caso le citta' sono disposte in uno stato a centinaia di chilometri e il mezzo piu' veloce e' il cavallo.. credo che per un minimo di realismo non sia una cosa da gettare..
29/06/2007 15:00:48
questo e' vero, i tempi 30 min 1 h etc li avevo messi li un po a caso, in fin dei conti e' piu' una rottura di balle per l'utente, ma neanke che dopo 5 minuti che passeggiavi in un boschetto in trentino ti ritrovo in bikini sulle coste della tunisia :P
29/06/2007 19:34:08
Applicandolo al gdr cd la cosa più semplice sarebbe farlo inserendo il codice nella pagina cambiastanza.php o alternativamente alla main.php
Però ha il grave problema che poi uno deve "azzeccare" la chat nella quale vuole ruolare al primo colpo ... cosa improbabile :P
Allora come detto sopra da qualcun altro, io inserirei il codice nella pagina input.php
- Creo 2 campi in presenti che si chiamano 'OraInvio' e 'StanzaInvio'
- Le faccio resettare nella Insert presente in Login.php con il valore 0
- Nella pagina input.php ogni qualvolta eseguo la query INSERT INTO Chat ... sotto aggiungo una
UPDATE Presenti SET OraInvio = NOW(), StanzaInvio = '$Stanza' // che è già valorizzata.
- Verso l'inizio della pagina input.php metti questa condizione
dopo aver fatto una selezione di quello che tieni in presenti (anche se probabilmente ci sta un modo migliore per richiamare prima questi dati con la sessione stessa ...BHO)
/* $OraAttuale mi sfugge se c'è una funzione predefinita per richiamarla immediatamente */
$TempoSceltoDaTe = 30; // decidi tu
$StanzaInvio = $rs["StanzaInvio"];
$OraInvio = $rs["OraInvio"];
$OraAttuale - $OraInvio = $TempoAttesa;
if ($Stanza > 0) AND ($Stanza != $StanzaInvio) AND ( $TempoAttesa < $TempoSceltoDaTe) {
echo "stanza riservata";
} else {
tutto il resto della pagina
}
Così dovresti in pratica leggere ma non scrivere.
Bella anche se più complicata anche l'idea di una tabella mappa con le distanze in termini di minuti ^^
Se ci provate fatemi sapere se funziona, sono curioso :)
29/06/2007 22:16:14
Premetto di essermi letto solamente l'unica parte iniziale del topic e non volendo banalizzare ulteriormente, proporrei di requisire unicamente la chat ovvero il form di input ad una certa scadenza. i giocatori non saranno condizionati a non poter leggere le giocate, ma semplicemente impossibilitati a ruolare in tale locazione.
Per quanto riguarda la funzione io non ci vedo molti problemi: le opzioni sono due!!
-> o lo si fa in Ajax [sconsigliatissimo il js puro... Ajax concorre bene]
-> o lo si fa in PHP [ richiede un attimo di tempo in piu' a completarsi sintatticamente ]
entrambe fattibili... ma a mio parere davvero inutili!!
Per quanto io sappia, è del buon senso dello staff che un gioco di ruolo puo' vantare che deve effettuare tali controlli sporadicamente istruendo i propri utenti^^ :P troppi tools confondono l'utente intendendolo un bug :D
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?