Visualizzazione risultati 1 fino 11 di 11

Discussione: Aggiornamento

  1. #1
    Guest

    Predefinito Aggiornamento

    Salve a tutti :-).
    Questo messaggio non è affatto per sponsor al sito che citerò + sotto,è appunto per fare un esempio per farvi capire meglio!!!.

    Premesso questo,allora inizio col dire...
    Io dovrei fare in modo che il personaggio di un mio utente registrato al mio sito anke se non collegato (al sito -> scritto in php e mysql) dovrebbe aggiornarsi.
    Tipo,conoscete il gioco TRAVIAN?(Browser game mmorpg).
    Beh,un utente produce una certa quantità di ferro,legno,argilla e grano all'ora.
    Ora,se un utente non è collegato al sito,la quantità di risorse disponibile dall'utente si aggiorna(quindi le risorse aumentano in base alla produzione) automaticamente...quindi per esempio quando un utente durante la nottata non è collegato,quando si sveglia la mattina seguente si troverà le risorse aumentate!!!(Quindi senza essere collegato).
    Ciò non so come sia possibile,xk il sito è scritto in php,e io non trovo spiegazione a questo mio quesito..
    Voi sapete indicarmi come fare?
    Grazie mille..

    Nando
    Ultima modifica di millennio : 29-12-2009 alle ore 00.51.07

  2. #2
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Basta che salvi quanto ferro aveva prima e salvi il timestamp.
    Poi, quando l'utente torna per sapere il calcolo moltiplichi la produzione delle miniere al secondo con i secondi trascorsi!.

    I secondi trascorsi li trovi sottraendo al timestamp attuale (time()) quello che avevi salvato prima.

    ...Questa è una mia idea, poi forse i programmatori usano metodi più efficienti

    Ciao!

  3. #3
    Guest

    Predefinito

    Si,però 'è un problema.
    Quando l'utente x non è collegato,come detto,le risorse si aggiornano.
    Ma se nel contempo è collegato un'altro utente y ...il quale vuole prelevare le risorse dal utente x , egli preleverà le risorse dell'utente x di quando si scollegato + le risorse che l'utente x ha ottenuto quando questo non era collegato!!!...
    Capito?...>.<

  4. #4
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Rifarai il calcolo!

    Ad esempio se usi la programmazione ad oggetti, per sapere quanto ferro ha, invochi (ad esempio):

    nome_giocatore.getFerro();

    ...Poi il metodo si preoccuperà a fare quello che ti ho detto prima... Indopendentemente se è collegato o no l'utente principale!

    ...ripeto: sono idee che mi vengono in mente adesso per adesso... sicuramente si possono migliorare

    Ciao!

    EDIT: scusa, non sono abituato a programmare ad oggetti in php: invece di
    Codice PHP:
    nome_giocatore.getFerro();
    è:
    Codice PHP:

    $nome_giocatore
    ->getFerro();
    Ultima modifica di alemoppo : 29-12-2009 alle ore 01.10.08

  5. #5
    Guest

    Predefinito

    mo che ci penso.
    Se c'è almeno un utente collegato in tutto il sito,dovrei fare in modo ke tt la tabella nel db si aggiornasse ad ogni movimento dell'utente
    così ottengo sempre la produzione di una persona anke se quella non è collegata,xk almeno una persona c'è!!!...
    o no O.O''..
    I tuoi consigli però nn sono male >.<..ma forse qualcosa di meglio c'è...non so,xk come detto io poi il sito andrebbe TROPPO lento!!!

  6. #6
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Citazione Originalmente inviato da millennio Visualizza messaggio
    mo che ci penso.
    Se c'è almeno un utente collegato in tutto il sito,dovrei fare in modo ke tt la tabella nel db si aggiornasse ad ogni movimento dell'utente
    così ottengo sempre la produzione di una persona anke se quella non è collegata,xk almeno una persona c'è!!!...
    o no O.O''..
    I tuoi consigli però nn sono male >.<..ma forse qualcosa di meglio c'è...non so,xk come detto io poi il sito andrebbe TROPPO lento!!!
    ASSOLUTAMENTE NO!

    Te se vuoi sapere le risorse di un utente invochi il metodo SOLO per quell'utente, quindi aggiorni SOLO il campo che ti interessa... non so se ho reso l'idea...

  7. #7
    Guest

    Predefinito

    Il sistema che usa alemoppo è quello che poi viene adottato da tutti i software. Anche perché è l'unica via possibile, a meno che non usi cron, ma è una cosa scomodissima, e poi su AlterVista neanche lo puoi fare. Cerco di spiegartelo un po' meglio.

    Nella tabella degli utenti avrai bisogno di un campo di tipo intero che segni l'ultimo UNIX time in cui le risorse di un utente sono state aggiornate. Mettiamo caso, ad esempio, che si chiami lastupdate.

    Quando vengono richieste le risorse di un utente oppure quando l'utente aggiorna la pagina tu recuperi dalla tabella degli utenti il valore di lastupdate e lo sottrai all'attuale UNIX time. In questa maniera hai la differenza tra l'ora corrente e quella dell'ultimo aggiornamento.

    A questo punto controlli che la differenza sia superiore a 3600 (un'ora, oppure il numero di secondi ogni quanto vuoi che siano aggiornato le risorse), se è così allora aggiungi all'utente le risorse calcolate dalla differenza tra le due date diviso 3600 (o il tempo ogni quanto si aggiornano). L'algoritmo quindi sarà qualcosa di questo tipo: (UNIX time - lastupdate) / 3600 * numero_risorse_per_ora.

    Fatto questo calcolo non ti resta che aggiornare il numero delle risorse dell'utente nel database e lo UNIX time dell'ultima "riscossione" di risorse dell'utente. Non ti dimenticare quest'ultimo passaggio, altrimenti l'utente continuerà ad accumulare risorse per cifre esorbitanti!

    Spero di averti un po' chiarito le idee. Per qualsiasi problema o dubbio fammi sapere.

  8. #8
    Guest

    Predefinito

    si vbb....allora questo è l'unico metodo..
    Farò così^^..
    Comunque un'altra cosa.
    Io ho due datetime ora per fare tutto questo,xk quando esegue la sottrazione mi sottrae solo l'anno :-D?
    Tipo c'ho

    ( 05/03/2009 12:05:04 ) - ( 05/03/2009 12:05:03 )
    ora eseguendo la sottrazione mi sottrae solo l'anno...
    E non mi fa rimanere con 1...
    Potete spiegarmi?..Risolto questo ho risolto tutto :-D


    ..Ale.un'ultimacosa puoi aggiungermi su msn??
    djnen_smoke@hotmail.it

  9. #9
    Guest

    Predefinito

    Non si fanno le sottrazioni tra date, devi usare i timestamp.
    Vedi: strtotime().

  10. #10
    Guest

    Predefinito

    È per questo che ti avevo detto di usare gli UNIX time (secondi trascorsi dal 1 gennaio 1970, 00:00:00) invece delle date assolute. È molto più semplice, con l'algoritmo che ti ho spiegato, lavorare con gli UNIX time invece che con le date.

  11. #11
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Citazione Originalmente inviato da alessandro1997 Visualizza messaggio
    È per questo che ti avevo detto di usare gli UNIX time (secondi trascorsi dal 1 gennaio 1970, 00:00:00) invece delle date assolute. È molto più semplice, con l'algoritmo che ti ho spiegato, lavorare con gli UNIX time invece che con le date.
    Anche io to parlato di timestamp.

    @millennio: Per avere il timestamp corrente, usa time() !

    Ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •