Aller au contenu
  • 0

Message de vote


XxFreez3

Question

Bonjour, j'ai un problème..

 

Je souhaiterai mettre un message lors de la création du personnage exemple : Lorsque le personnage est fini de crée le joueur valide son personnage, donc il arrive enfin en jeu puis un message d'infos apparaît et lui dis qu'il faut voter au moins une fois sinon il serra déconnecter du serveur.

 

Voilà, j'ai donc le message qui s'affiche tout ce passe bien le personnage ce fais déconnecter, donc je lui rajoute un vote et des points via la base de données. Je me reconnecte et hop le message réparait et redéconnecte le personnage comme s'il n'avait effectué aucuns votes !

 

J'aimerais donc un peu d'aide pour résoudre mon problème, merci !

Lien vers le commentaire
  • Réponses 7
  • Created
  • Dernière réponse

Top Posters For This Question

Popular Days

Top Posters For This Question

7 réponses à cette question

Messages recommandés

  • 0
  • Retraité

On  ne pourra absolument pas t'aider sans le code que tu as ajouté. Sinon, as-tu essayé de voter après t'être déconnecté ? Car si mes souvenirs sont exactes, la déconnexion d'un compte sauvegarde ce dernier sans tenir compte des modifications apportées en BDD non effectuées via l'ému ; toutes ces données sont donc écrasées.

 

P.S.: Le double-post est interdit, tu peux utiliser la fonction éditer.

Lien vers le commentaire
  • 0

J'ai repris le code de OnEmu et fait les modifs qu'il fallait  

if (Ancestra.CONFIG_ACTIVER_POPUP_VOTE) {		            if(Ancestra.CONFIG_ACTIVER_POPUP_VOTE_DECO);		             {		             _PopUpTimerFloodKick = new Timer();		                _PopUpTimerFloodKick.schedule(new TimerTask() {		                 		                    public void run() {		                     long currTime = System.currentTimeMillis();		                        for (Personnage P : World.getOnlinePersos()) {		                         if (P!=null && P.get_compte() != null && P.isOnline())		                         {		                             if(P.vote > 0 && P.vote <= currTime) 		                             {		                              P.vote = 0;		                              P.get_compte().getGameThread().kick();		                             }		                         }		                        }		                    }		                }, 1000 , 1000);		               		                   _PopUpTimerFlood = new Timer();		                   _PopUpTimerFlood.schedule(new TimerTask() {		                    public void run() {		                        long currTime = System.currentTimeMillis();		                           for (Personnage P : World.getOnlinePersos()) {		                                 if (P.vote <= 0 && P.get_compte().get_vote() == 0 &&P.isOnline())		                                    {		                                  SocketManager.PACKET_POPUP_VOTE(P, "Le vote est demandé !
"		                                    + "\n Vous n'avez effectué aucun vote"		                                    + "\n Cliquez ICI pour voter
"		                                    + "\n!! Attention !!"		                                    + "\nDéconnexion dans 10 secondes");		                                  P.vote = currTime + 10*1000;//IL a recu, on  peut kick dans 10 secs		                                		                                    }		                                		                                		                                }		                           		                           }		                    }, 18000, 18000);		             }		            _PopUpTimer = new Timer();//Popup chaque Ancestra.CONFIG_TIME_POPUP_VOTE pour demander de voter.		               _PopUpTimer.schedule(new TimerTask() {		                        public void run() {		                            for (Personnage P : World.getOnlinePersos()) {		                             if (P.isOnline() && P.get_compte().get_vote() > 0)		                             {		                                  SocketManager.PACKET_POPUP_VOTE(P, "Le vote est demandé toutes les "+Ancestra.CONFIG_TIME_POPUP_VOTE+"h00 !
"		                                            + "\n Votre nombre de votes: " + P.get_compte().get_vote() + " votes"		                                            + "\n Votre nombre de points: " + P.get_compte().get_points() + " points"		                                            + "\n Cliquez ICI pour voter
"		                                            + "\n!! Attention !!");		                             }		                            }		                        }		                    }, Ancestra.CONFIG_TIME_POPUP_VOTE*1000*60*60, Ancestra.CONFIG_TIME_POPUP_VOTE*1000*60*60);		           }

Lien vers le commentaire
  • 0
  • Retraité

Sinon, as-tu essayé de voter après t'être déconnecté ?

La réussite du système dans ce cas confirmerait le fait que l'émulateur écrase simplement les données en db actualisées hors ému. En fait, je suis pratiquement certain que c'est dû à ça. Du coup je ne vois que 2 solutions possibles :

  • Le plus simple mais aussi le plus lourd : Accéder à P.vote & P.get_account().get_vote() par des méthodes 'requettant' systèmatiquement la BDD afin d'être certains que les valeurs soient bien à jour
  • Plus difficile mais bien plus optimisé : Depuis le site, envoyer un paquet sur un nouveau serveur d'écoute de l'émulateur du même style que le serveur Com d'AR54 (il me semble) afin de mettre à jour la valeur des attributs concernant le vote d'un compte. Oui, PHP dispose de fonctions pour cela : http://php.net/manual/fr/function.socket-create.php

Lien vers le commentaire
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.