Seite 1 von 1

Vorschlag für Codeänderung beim Heimzauber

Verfasst: 22. Jan 2012, 11:29
von Starship Trooper
Ich habe folgendes zwar gelesen, möchste meinen Vorschlag aber dennoch unterbreiten.
Bug: Ein User verlässt das Feld und danach bekommt er ein Zauber ab, etwas zugesteckt, stirbt oder sonstwas.
Lösung: Die Chatnachrichten haben keine bestimmte Reihenfolge. Jedoch passiert dies nicht oft.
Grund für meinen Post ist folgende Beobachtung:
Bild

Ich habe mir Gedanken über mögliche Gründe für diesen Bug gemacht und vermute daher, dass beim Heimzauber zuerst die Änderung des Feldtextes angestoßen und erst anschließend die Position des Spielers aktualisiert wird, weshalb die Angriffsfunktion bei der Überprüfung noch die Anwesenheit des Angegriffenen ergab.

Zugegebenermaßen ist das rein spekulativ da ich die Codebasis nicht kenne, sollte ich aber richtig liegen ist eine Änderung wohl keine große Sache. :wink:

Re: Vorschlag für Codeänderung beim Heimzauber

Verfasst: 22. Jan 2012, 12:11
von Blizz
Es liegt nicht am Heimzauber, der Chat spuckt die Informationen nur falsch aus, der obige Beispielkampf lief in Wirklichkeit so ab :


Silent schießt einen Kaktuspfeil auf Pandorum ab Aktion 1
Pando wird getroffen Aktion 2
Silent killt Pando Aktion 3
Pando aktiviert nach dem er gestorben ist seinen Heimzauber Aktion 4

Nur der Server zeigt halt manchmal die falsche Reihenfolge an, in Wirklichkeit wurde der Heimzauber aber am Heimatort angewendet.

Re: Vorschlag für Codeänderung beim Heimzauber

Verfasst: 22. Jan 2012, 22:47
von Cembon
man könnte ja auch den ms-timestamp statt nem normalen timestamp speichern, dann solte es seltener werden :)

Re: Vorschlag für Codeänderung beim Heimzauber

Verfasst: 24. Jan 2012, 14:30
von bwoebi
(int)(microtime(1)*1000) @snigg… (ms => MilliSekunden)

Re: Vorschlag für Codeänderung beim Heimzauber

Verfasst: 24. Jan 2012, 20:20
von itgchris
Cembon hat geschrieben:man könnte ja auch den ms-timestamp statt nem normalen timestamp speichern, dann solte es seltener werden :)
es gibt keinen speziellen "ms-timestamp" ein timestamp ist immer in sekunden. das was du meinst wäre die "microtime" oder in java java.util.Date.getTime()
Problem macht hierbei PHP, dass nur synchron Übertragen kann und deshalb bei mehrerern Requests (Nebenläufigkeit) Probleme machen kann. Wir leben nunmal in einer Zeit wo PUSH oder auch Polling eben noch nicht ausgereift genug ist um es auf das HTTP Protokoll loszulassen.

Re: Vorschlag für Codeänderung beim Heimzauber

Verfasst: 26. Jan 2012, 12:03
von Sotrax
Das ganze ist einfach nur ein simpler Transaktionsfehler. Der Chat besitzt keinerlei Transaktionssicherheit, weil das da nicht wirklich nötig ist (und komplett Transaktionssicherheit sehr viel Performance kostet).

Re: Vorschlag für Codeänderung beim Heimzauber

Verfasst: 26. Jan 2012, 15:44
von Cembon
itgchris hat geschrieben:es gibt keinen speziellen "ms-timestamp" ein timestamp ist immer in sekunden. das was du meinst wäre die "microtime"
Ja..und was kommt bei microtime raus? wohl ein timestamp in millisekunden..ich kenn mich da schon aus^^