Hallo,
ich probiere mich momentan ein bisschen an einem Kampfscript. Das Problem handelt sich allerdings nicht primär um den Kampf, sondern eher um die Datenverwaltung.
Problem: 20 User sind im Kampf angemeldet. Jeder User trifft auf einen anderen. Es müssen ziemlich viel Berechnungen erledigt werden (Waffen, Erfahrung, Skillung etc.). Sobald ein User auf einen anderen getroffen ist, werden diese beide aus der Tabelle für den Kampf in der Datenbank gelöscht. Bis hierher alles wunderbar. Sollte es nur noch ein User geben und keinen Gegner mehr, so bekommt der eine Entschädigung und eine entsprechende Nachricht zugesendet. Nun passiert es aber AB UND ZU (ich vermute das könnte an der Serverauslastung liegen) das der User zweimal diese Nachricht bekommt inklusive der Entschädigung (auch doppelte Erfahrungspunkte etc.), das heißt der Scriptteil wird doppelt ausgeführt. Alle Variablen etc. sind 100% richtig gesetzt, da ich es auf meinen lokalen Server schon hundert mal laufen lasse hab... Dieses "Phänomän" habe ich auch schon in anderen Scripten gehabt, in welchem ziemlich viel Funktionen ausgeführt werden. Ich schließe einen direkten Scriptfehler aus, ich vermute das es am MySQL liegt. Mit Funktionen wie Begin und Commit hab ich mich auch schon beschäftigt, bin mir aber nicht ganz sicher ob dies Abhilfe schaffen würde bzw. ob es nicht alternativen gibt. Ich habe auch auf InnoDB umgestellt.
Also die eigentlichen Fragen lauten eigentlich: kennt ihr dieses Problem? Woran könnte dies liegen? Habt ihr einen Lösungsvorschlag oder Hinweis?