000
07.07.2004, 15:16
Barney_Roxx
|
hallo leute
leider ist mir kein besserer titel eingefallen. ich schreibe zur zeit an einer dll mit zahlreichen features. unteranderem auch eine score engine. sie ist ähnlich wie die HL score tabelle, nur das die frags und deads bei einem spieler-reconnect nicht wieder 0 / 0 sind, sondern nach einer session dazu addiert werden. verstanden? anbei mal der code dieser funktion:
void Add_Session(int WONid) //parameter.. naja sollte klar sein wozu { for(int x = 0; x < 249; x++) { //aWONid ist ein int array wo die bereits vorhandenen wonid's enthalten sind if(aWONid[x] != 0) { if(WONid == aWONid[x]) { //afSession ist ein int array das die frags der session dazu bekommt += (beim verlassen des spiels) afSession[x] += aFrag[x]; //adSession ist ein int array das die deads der session dazu bekommt += (beim verlassen des spiels) adSession[x] += aDead[x]; break; } } else { break; } } }
sieht doch eigentlich gut aus oder? oder gibt es hier bereits einen fehler? weil jetzt kommt mein problem. ich rufe diese funktion in der hl bzw. mp.dll auf und zwar wie folgt:
multiplayer_gamerules.cpp - void CHalfLifeMultiplay :: ClientDisconnected( edict_t *pClient )
Add_Session(GETPLAYERWONID(pPlayer->edict())); html_ScoreSave();
das problem ist nun folgendes: zwar funktioniert alles, der aufruf und die frags/deads auf der anschliessenden html tabelle sind (manchmal) korrekt. die betaonung liegt auf "manchmal", das ist eben mein problem. ich bin jetzt am überlegen an was das liegt. eventuell das wenn gleich zwei, drei spieler disconnecten die funktion dann von einem aufgerufen wird und dann gleich vom anderen spieler ohne das gewartet wurde bis die funktion beim ersten spieler zuende war? irgendwie sowas müsste es sein. im source code selber kann ich keinen fehler erkennen.
ich hoffe ihr könnt mir helfen warum manchmal die werte nicht stimmen (zuviele frags/deads).
--
|
|
Profil || Suche
|