blocco locazioni in base all'utenza postato il 05/06/2009 02:28:48 nel forum programmazione, gdrcd e open source
Salve ragazzi, vorrei sapere se esiste un modo per bloccare l'accesso in una locazione in base al tempo trascorso in gioco ? per esempio, gioco da un ora e non posso entrare nella stanza #2 perchè mi richiede 2 ore di gioco....
Ringrazio in anticipo ^^
05/06/2009 08:04:08
vabbè in php sarebbe
if($Oratrascorsanelgdr == 2) { header("Location: main.php?Dir="); } else { echo "<SCRIPT>alert('Hai bisogno di due ore di gioco per entrare')</SCRIPT>"; exit(); }
dovrebbe andare...
05/06/2009 09:08:17
Devo pero' ricordarti che questo tipo di meccaniche e' contrario ad alcune delle licenze degli os ed e' generalmente osteggiato dal codice morale dei giochi online.
Comunque il problema dell'accesso non e' tanto il controllo da fare sulla stanza, quanto il modo di conteggiare le 2 ore al giocatore.
Non che sia un problema, basta che ogni volta che aggiorni la tabella dei presenti scrivi qualcosa come +3 (i minuti del refresh) su un qualche campo della tabella personaggio.
Del tipo, il personaggio ha il campo "connectiontime" nella tabella, ogni volta che aggiorni i presenti fai un update di personaggio con connectiontime = connectiontime + 3.
Cosi' pero' rischi che la gente si accorga che refreshando a ufo si aumenta artificiosamente i punti.
Un'alternativa, anche piu' parca di risorse, potrebbe essere registrare in sessione l'ora di ingresso dell'utente cosi', quando l'utente fa la logout, conteggi l'ora di logout meno quella di login (attento al cambio di data a cavallo della mezzanotte) del tipo ((giorno uscita - giorno entrata)*24 + ora uscita) - ora ingresso.
Ne segue che un giocatore per vedersi conteggiare le ore deve uscire dall'apposito link e non chiudere bruscamente la funestra, ma questo e' comunque buon costume.
05/06/2009 12:57:29
05/06/2009 13:05:14
non basterebbe mettere una legge con eventuale pena per questo e stabilire dei tempi di percorrenza...?
05/06/2009 13:18:42
05/06/2009 13:31:00 e modificato da orientia il 05/06/2009 13:55:26
Secondo me, inserendo un controllo "a tempo di connessione" in stile carisma, per quello che vuoi fare tu insorgono complicanze quando uno si logga e finisce per dover aspettare un'ora per spostarsi dalla mappa principale ad un'altra mappa nella quale vuole giocare oppure vuole fare un giro delle isole per decidere dove fermarsi e per spostarsi dall'una all'altra deve attendere un'ora. Meglio mettere una regola, come ti diceva qualcun altro: non puoi controllare tutti ma quelli che becchi li sanzioni.
Altrimenti, è un po' laborioso ma, potresti inserire un controllo in input.php dopo aver diviso le chat in gruppi ad esempio dall'ID 100 a 200 isola 1 da 200 a 300 isola2 e così via andando a pescare l'orario dell'ultima azione scritta dal player e l'ID della chat in cui è stata scritta l'azione , con un if vedi se l'ID della chat in cui sta tentando di scrivere è compreso tra i due estremi dell'isola in cui giocava prima (o in alternativa se è uguale ad uno degli ID di quell'isola se non sono ordinate per numero) e se non lo è fai un secondo if che verifica che l'orario dell'ultima azione sia inferiore a quello attuale meno il tempo che vuoi che trascorra per fare il salto d'isola...
(Credo tu debba anche escludere i sussurri dal controllo altrimenti uno si trova bloccato su una mappa solo perchè ha chiesto "giochi?!" a un parcheggiatore. E le azioni dei master fati perchè non è incoerente che si spostino masterando da una zona all'altra.)
05/06/2009 15:08:33
05/06/2009 15:11:45
nooo ho letto una citazione di lot.. che l'eretica sia data al rogo xdxd
sia chiaro.. non ho nulla contro lot.. però dai.. fare una lot due nooo.. anzi una lot 3 xd
05/06/2009 15:16:50
Il problema del "teletrasporto" è abbastanza diffuso, sono parecchie le land che hanno ambientazioni di gioco molto ampie e i cui gestori vorrebbero trovare un buon modo per evitare che i personaggi si spostini a chilometri di distanza in tre secondi. Il concetto è che è abbastanza irrispettoso impedire ad un giocatore di girare liberamente e completamente le chat pubbliche solo perchè il suo personaggio è attualmente in un altro posto, è un concetto equiparabile a quello per il cui un personaggio arrestato in On viene bloccato alle prigioni e pertanto il giocatore è impossibilitato anche solo a seguire le giocate degli altri.
Tuttavia, ha un senso a mio parere ottimo dividere le due questioni: devi avere una gestione diversa tra quello che sta guardando un giocatore, che può muoversi liberamente per le chat, e dove ha giocato l'ultima volta il suo personaggio. Ci vogliono sensatamente due ore per andare da A a B (i tempi vanno comunque ristretti, chiariamoci)? Ok, se dall'ultima azione fatta in A non sono passate almeno due ore, se io vado nella chat B potrò normalmente vedere e seguire il gioco degli altri, ma mi sarà inibito il form di invio in chat. Lo stesso concetto lo consiglio a tutti quei gestori che hanno la pessima abitudine di ingabbiare tecnicamente i personaggi quando vengono arrestati in On.
Tecnicamente da sviluppare è complesso: va costruita una tabella in cui ogni locazione è incrociata con tutte le altre per definire correttamente il tempo minimo tra l'ultima azione fatta nella locazione A e la prima da poter fare nella locazione B, in modo che i giocatori possano comunque avere piena libertà di azione.
Buon divertimento.
05/06/2009 15:55:59
Discussione seguita da
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
I dati del generatore di rank sono stati aggiornati!