Jo Leute,
habe heute mal versucht das Textdraw der clientseitigen Geldanzeige zu überdecken, habe ich auch mit nem eigenen Textdraw jetzt gemacht.
Jedoch soll ja jetzt das aktuelle Geld immer beim Textdraw angezeigt werden. Dazu habe ich GivePlayerMoney ersetzt durch die, mit den serverseitigen Variablen.
Jedoch wird das Geld nie richtig angezeigt. Ich glaube auch, dass ich es falsch lade, denn nach dem speichern ist es in der Datenbank wieder automatisch auf 0.
Das Crashdetect Plugin spuckt mir das aus:
Zitat[14:06:12] [debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
[14:06:12] [debug] Stack pointer (STK) is 0xF1B6C, heap pointer (HEA) is 0xF1B40
[14:06:12] [debug] #806 0002ed18 in public OnPlayerLoaded () from efrp.amx
Jedoch gebe ich da nur das Geld:
Und zwar so:
cache_get_row(0,4,data); SpielerInfo[playerid][pGeld] = strval(data);
Speichern tue ich so:
format(query,sizeof query,"UPDATE `accounts` SET `Name` = '%s',`Passwort` = '%s',`Level` ='%d',`Kills` ='%d',`Tode` ='%d',`Fraktion` ='%d',`Leader` ='%d',`Banned` ='%d',`Admin` ='%d',`Geld` ='%d',",SpielerInfo[playerid][pName],SpielerInfo[playerid][pPasswort],SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pFraktion],SpielerInfo[playerid][pLeader],SpielerInfo[playerid][pBanned],SpielerInfo[playerid][pAdmin],SpielerInfo[playerid][pGeld]);
format(query2,sizeof query2,"`Tutorial` = '%d',`Alter` = '%d',`Geschlecht` = '%d',`Banner` = '%s',`Grund` = '%s',`GPCI` = '%s',`Timebann` = '%d',Muted ='%d' WHERE `Name` = '%s'",SpielerInfo[playerid][pTutorial],SpielerInfo[playerid][pAlter],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pBanner],SpielerInfo[playerid][pGrund],SpielerInfo[playerid][pGpci],SpielerInfo[playerid][pTimebann],SpielerInfo[playerid][pMuted],SpielerInfo[playerid][pName]);
strcat(query,query2);
mysql_function_query(mysql_connectionhandle,query,false,"","");
Meine "Ersetzen" Funktionen:
stock LA_SetPlayerMoney(playerid,amount) {
SpielerInfo[playerid][pGeld] = amount;
GivePlayerMoney(playerid,amount);
new str[40];
format(str,sizeof str,"%d Euro",SpielerInfo[playerid][pGeld]);
TextDrawSetString(GeldAnzeige[playerid],str);
return true;
}
stock LA_GivePlayerMoney(playerid,amount) {
SpielerInfo[playerid][pGeld] += amount;
GivePlayerMoney(playerid,SpielerInfo[playerid][pGeld]);
new str[40];
format(str,sizeof str,"%d Euro",SpielerInfo[playerid][pGeld]);
TextDrawSetString(GeldAnzeige[playerid],str);
return 1;
}
stock LA_ResetPlayerMoney(playerid) {
SpielerInfo[playerid][pGeld] = 0;
ResetPlayerMoney(playerid);
new str[40];
format(str,sizeof str,"%d Euro",SpielerInfo[playerid][pGeld]);
TextDrawSetString(GeldAnzeige[playerid],str);
return 1;
}
stock LA_GetPlayerMoney(playerid) {
return SpielerInfo[playerid][pGeld];
}
Ich hoffe ihr könnt helfen.
Mfg