Referenzen sind mit CallRemoteFunction nicht möglich.
Du musst mit einer zweiten CallRemoteFunction die Daten wieder zurückschicken, so wie du sie her schickst.
Beiträge von Jeffry
-
-
Wie sieht dein Speicher Code jetzt aus? Hast du ihn zu dem was ich dir gegeben habe verändert?
-
-
-
-
-
Ich glaube es geht aber so nicht. @Jeffry so wie alle anderen die Helfen können wäre ich sehr dankbar.
Schau dir mal dieses Tutorial an:
http://forum.sa-mp.com/showthread.php?t=95034Dort wird gut erklärt, wie du deinen ersten NPC erstellen kannst.
Gehe das mal ganz genau Schritt für Schritt durch. -
a = GangZoneCreate(2628.429687,-1148.999633,3046.229248,-962.181335);
-1148 ist kleiner als -962, deshalb so rum.
-
Lasse dir das Query per print ausgeben, nachdem du dir das Admin Level und das Geld hoch gesetzt hast:
print(query);Was steht dann im Server Log?
-
Ah, so machst du das. Das sieht mir dann aber korrekt aus.
Was mir da eigentlich nur in den Sinn kommt ist, dass du die pID irgendwo überschreibst.Versuche es doch mal so:
stock SpielerSpeichern(playerid)
{
if(sInfo[playerid][pEingeloggt] == 0)return 1;
new query[1024], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
format(query, sizeof(query), "UPDATE user SET Age='%i', Geschlecht='%i', AdminLevel='%i', Mapper='%i', Scripter='%i', Premium='%i', Level='%i', Respektpunkte='%i', ",
sInfo[playerid][pAge], sInfo[playerid][pSex], sInfo[playerid][pAdminLevel], sInfo[playerid][pMapper], sInfo[playerid][pScripter],
sInfo[playerid][pPremium], sInfo[playerid][pLevel], sInfo[playerid][pRespektpunkte]);
format(query, sizeof(query), "%sBarGeld='%i', BankKonto='%i', BankGeld='%i',Skin='%i', Fraktion='%i', FraktionRang='%i', Spawn='%i', Handy='%i', Handynummer='%i', ",
query, GetPlayerMoney(playerid), sInfo[playerid][pBankKonto], sInfo[playerid][pBankGeld],sInfo[playerid][pSkin], sInfo[playerid][pFraktion],
sInfo[playerid][pFraktionRang], sInfo[playerid][pSpawn], sInfo[playerid][pHandy], sInfo[playerid][pHandynummer]);
format(query, sizeof(query), "%sPayDay='%i', Spielzeit='%i', Jail='%i', JailTime='%i', Prison='%i', PrisonCheckpoints='%i' WHERE username='%s'",
query, sInfo[playerid][pPayDay], sInfo[playerid][pSpielzeit], sInfo[playerid][pJail], sInfo[playerid][pJailTime],
sInfo[playerid][pPrison], sInfo[playerid][pPrisonCheckpoints], name);
mysql_function_query(Handle, query, false, "", "");
return 1;
}Dann dürfte die Bedingung auf jeden Fall korrekt sein, da über den Name zugegriffen wird.
-
Wie sieht denn dein Query aus, das du beim Login abschickst?
Den stock musst du auf jeden Fall in ein public mit forward ändern.
-
Poste bitte die Funktion mit der du den Spieler einloggst, sprich die Daten lädst.
-
Ja, die Daten eben, die in der Tabelle stehen (erster Button in phpMyAdmin).
@Jony
Ließ dir bitte den Thread von letztem mal nochmal durch, deine Ansicht dass dies falsch ist ist falsch. Mehr sage ich dazu nicht mehr. Das Query ist mit den Ticks absolut korrekt. -
In der Änderung sind 0 Datensätze betroffen, sprich die WHERE Bedingung passt nicht.
Das Query ist korrekt.
Poste bitte den Screenshot der Daten aus der Tabelle, also das wo du den Name und das Passwort siehst.
-
Erstmal sind alle Werte auf 0, daher wird wohl auch in der Datenbank alles auf 0 sein.
-
Du hast das Query falsch zusammenformatiert.
Versuche es so:
stock SpielerSpeichern(playerid)
{
if(sInfo[playerid][pEingeloggt] == 0)return 1;
new query[1024];
format(query, sizeof(query), "UPDATE user SET Age='%i', Geschlecht='%i', AdminLevel='%i', Mapper='%i', Scripter='%i', Premium='%i', Level='%i', Respektpunkte='%i', ",
sInfo[playerid][pAge], sInfo[playerid][pSex], sInfo[playerid][pAdminLevel], sInfo[playerid][pMapper], sInfo[playerid][pScripter],
sInfo[playerid][pPremium], sInfo[playerid][pLevel], sInfo[playerid][pRespektpunkte]);
format(query, sizeof(query), "%sBarGeld='%i', BankKonto='%i', BankGeld='%i',Skin='%i', Fraktion='%i', FraktionRang='%i', Spawn='%i', Handy='%i', Handynummer='%i', ",
query, GetPlayerMoney(playerid), sInfo[playerid][pBankKonto], sInfo[playerid][pBankGeld],sInfo[playerid][pSkin], sInfo[playerid][pFraktion],
sInfo[playerid][pFraktionRang], sInfo[playerid][pSpawn], sInfo[playerid][pHandy], sInfo[playerid][pHandynummer]);
format(query, sizeof(query), "%sPayDay='%i', Spielzeit='%i', Jail='%i', JailTime='%i', Prison='%i', PrisonCheckpoints='%i' WHERE id='%i'",
query, sInfo[playerid][pPayDay], sInfo[playerid][pSpielzeit], sInfo[playerid][pJail], sInfo[playerid][pJailTime],
sInfo[playerid][pPrison], sInfo[playerid][pPrisonCheckpoints], sInfo[playerid][pID]);
mysql_function_query(Handle, query, false, "", "");
return 1;
} -
Was wird dir im Server Log ausgegeben, wenn du es so schreibst?
ocmd:fraktion(playerid, params[])
{
printf("Fraktion: %d", sInfo[playerid][pFraktion]);
printf("Name: %s", fInfo[sInfo[playerid][pFraktion]][f_name]);
printf("Rang: %s", fInfo[sInfo[playerid][pFraktion]][f_rang1]);
printf("ID: %d", fInfo[sInfo[playerid][pFraktion]][f_id]);
new str[145];
format(str, sizeof(str), "* Hinweis: "HTML_WEIS"Du bist in der Fraktion %s, dein Rang heißt %s, und die Frakid ist %d.", fInfo[sInfo[playerid][pFraktion]][f_name], fInfo[sInfo[playerid][pFraktion]][f_rang1], fInfo[sInfo[playerid][pFraktion]][f_id],Handle);
SendClientMessage(playerid, COLOR_ROT, str);
return 1;
} -
-
@SebMcpepp
Wenn du dem Spieler das Geld bei OnPlayerSpawn gibst, dann musst du ihm es aber vorher mit ResetPlayerMoney zurücksetzen, sonst verdoppelt sich sein Geld jedes mal wenn er spawnt.Ich schätze allerdings, dass du irgendwo zwischen Login und Spawn das schon drin hast, und der Spieler deshalb das Geld nicht bekommt, denn wenn du dir den Cache Wert des Geldes direkt nach dem Auslesen ausgibst, dann steht da der korrekte Wert drin (da er ja auch bei OnPlayerSpawn korrekt ist und dazwischen nicht verändert wird).
@Markuslobicher für was denn? Das wichtigste ist ja dass es funktioniert, egal wer die Lösung oder den Hinweis bringt, wie im Fußball

-
@Markuslobicher GivePlayerMoney benötigt die playerid als ersten Parameter, dein Vorschlag wird also nicht klappen.
Der Grund warum es nicht geht ist, dass erst das Geld gegeben wird und dann der Cache gelesen wird. Somit ist die Variable immer 0.
Lösche
new geld = PlayerInfo[playerid][pMoney];Und füge
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
nach
PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0, "money", handle);
ein, dann klappt es.