Das ist auch richtig so, da das der Sinn ist von einem PRIMARY Key mit AUTO_INCREMENT.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Das ist auch richtig so, da das der Sinn ist von einem PRIMARY Key mit AUTO_INCREMENT.
Heißt, man kann das nicht ändern und müsste somit einfach einen weiteren ID Wert zuweisen, der dann die HausID wieder annimmt, die gerade frei ist?
-
Du solltest dir hier mal die Antworten durchlesen: https://stackoverflow.com/ques…in-auto-incremenet-fields
-
C:\Users\User\Desktop\Script\gamemodes\Script-reallife.pwn(6737) : warning 202: number of arguments does not match definition
Code
Alles anzeigenpublic LoadBizes() { new rows, fields, count; cache_get_row_count(rows); cache_get_field_count(fields); for(new i=0;i<rows;i++) { new bizID = cache_get_value_name_int(i, "id"); //6737 if(bizID < MAX_BIZ) { Biz[bizID][bCreated] = 1; cache_get_value_name_int(i, "id", Biz[bizID][bdbID]); cache_get_value_name_int(i, "Type", Biz[bizID][bType]); cache_get_value_name_float(i, "EnterX", Biz[bizID][bEnterX]); cache_get_value_name_float(i, "EnterY", Biz[bizID][bEnterY]); cache_get_value_name_float(i, "EnterZ", Biz[bizID][bEnterZ]); cache_get_value_name_float(i, "ExitX", Biz[bizID][bExitX]); cache_get_value_name_float(i, "ExitY", Biz[bizID][bExitY]); cache_get_value_name_float(i, "ExitZ", Biz[bizID][bExitZ]); cache_get_value_name_int(i, "Interior", Biz[bizID][bInterior]); cache_get_value_name_int(i, "Level", Biz[bizID][bLevel]); cache_get_value_name_int(i, "Preis", Biz[bizID][bPreis]); cache_get_value_name_int(i, "Owned", Biz[bizID][bOwned]); cache_get_value_name_int(i, "Kasse", Biz[bizID][bKasse]); cache_get_value_name_int(i, "Lock", Biz[bizID][bLock]); cache_get_value_name_int(i, "Eintritt", Biz[bizID][bEintritt]); cache_get_value_name_int(i, "Produkte", Biz[bizID][bProdukte]); cache_get_value_name_int(i, "MaxProdukte", Biz[bizID][bMaxProdukte]); cache_get_value_name_int(i, "ProdPreis", Biz[bizID][bProdPreis]); cache_get_value_name(i, "Besitzer", Biz[bizID][bBesitzer], 64); cache_get_value_name(i, "Teilhaber", Biz[bizID][bTeilhaber], 64); cache_get_value_name(i, "Beschreibung", Biz[bizID][bBeschreibung], 64); Biz[bizID][bText] = CreateDynamic3DTextLabel("Laedt ...", COLOR_WHITE, Biz[bizID][bEnterX], Biz[bizID][bEnterY], Biz[bizID][bEnterZ], 20.0); if(Biz[bizID][bOwned] == 1) { Biz[bizID][bPickup] = CreatePickup(BIZ_OWNER_PICKUP, 1, Biz[bizID][bEnterX], Biz[bizID][bEnterY], Biz[bizID][bEnterZ], 0); } else if(Biz[bizID][bOwned] == 0) { Biz[bizID][bPickup] = CreatePickup(NO_BIZ_OWNER_PICKUP, 1, Biz[bizID][bEnterX], Biz[bizID][bEnterY], Biz[bizID][bEnterZ], 0); } UpdateBizLabel(bizID, Biz[bizID][bOwned]); count++; } } printf("[LOAD] BIZes geladen: %d/%d", count, MAX_BIZ); return 1; }Kann mir einer sagen wo da der fehler liegt?
-
Alles anzeigen
C:\Users\User\Desktop\Script\gamemodes\Script-reallife.pwn(6737) : warning 202: number of arguments does not match definition
Code
Alles anzeigenpublic LoadBizes() { new rows, fields, count; cache_get_row_count(rows); cache_get_field_count(fields); for(new i=0;i<rows;i++) { new bizID = cache_get_value_name_int(i, "id"); //6737 if(bizID < MAX_BIZ) { Biz[bizID][bCreated] = 1; cache_get_value_name_int(i, "id", Biz[bizID][bdbID]); cache_get_value_name_int(i, "Type", Biz[bizID][bType]); cache_get_value_name_float(i, "EnterX", Biz[bizID][bEnterX]); cache_get_value_name_float(i, "EnterY", Biz[bizID][bEnterY]); cache_get_value_name_float(i, "EnterZ", Biz[bizID][bEnterZ]); cache_get_value_name_float(i, "ExitX", Biz[bizID][bExitX]); cache_get_value_name_float(i, "ExitY", Biz[bizID][bExitY]); cache_get_value_name_float(i, "ExitZ", Biz[bizID][bExitZ]); cache_get_value_name_int(i, "Interior", Biz[bizID][bInterior]); cache_get_value_name_int(i, "Level", Biz[bizID][bLevel]); cache_get_value_name_int(i, "Preis", Biz[bizID][bPreis]); cache_get_value_name_int(i, "Owned", Biz[bizID][bOwned]); cache_get_value_name_int(i, "Kasse", Biz[bizID][bKasse]); cache_get_value_name_int(i, "Lock", Biz[bizID][bLock]); cache_get_value_name_int(i, "Eintritt", Biz[bizID][bEintritt]); cache_get_value_name_int(i, "Produkte", Biz[bizID][bProdukte]); cache_get_value_name_int(i, "MaxProdukte", Biz[bizID][bMaxProdukte]); cache_get_value_name_int(i, "ProdPreis", Biz[bizID][bProdPreis]); cache_get_value_name(i, "Besitzer", Biz[bizID][bBesitzer], 64); cache_get_value_name(i, "Teilhaber", Biz[bizID][bTeilhaber], 64); cache_get_value_name(i, "Beschreibung", Biz[bizID][bBeschreibung], 64); Biz[bizID][bText] = CreateDynamic3DTextLabel("Laedt ...", COLOR_WHITE, Biz[bizID][bEnterX], Biz[bizID][bEnterY], Biz[bizID][bEnterZ], 20.0); if(Biz[bizID][bOwned] == 1) { Biz[bizID][bPickup] = CreatePickup(BIZ_OWNER_PICKUP, 1, Biz[bizID][bEnterX], Biz[bizID][bEnterY], Biz[bizID][bEnterZ], 0); } else if(Biz[bizID][bOwned] == 0) { Biz[bizID][bPickup] = CreatePickup(NO_BIZ_OWNER_PICKUP, 1, Biz[bizID][bEnterX], Biz[bizID][bEnterY], Biz[bizID][bEnterZ], 0); } UpdateBizLabel(bizID, Biz[bizID][bOwned]); count++; } } printf("[LOAD] BIZes geladen: %d/%d", count, MAX_BIZ); return 1; }Kann mir einer sagen wo da der fehler liegt?
new bizID = cache_get_value_name_int(i, "id");zu
new bizID;
cache_get_value_name_int(i, "id", bizID);[wiki]MySQL/R40#cache_get_value_name_int[/wiki]
-
Beitrag von Dr. Frauenarzt ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Gefunden (). -
format(query, sizeof(query), "DELETE FROM `server_houses` WHERE id = '%d'", pCreateHouse[playerid]);
mysql_function_query(MySqlConnection, query, false, "", "");mysql_free_result();
zu was wurde das bei MysQL R40?
-
-
-
Du kannst es auch weglassen.
Ein PRIMARY Key ist automatisch AUTO_INCREMENT.
Aber AUTO_INCREMENT ist nicht automatisch ein PRIMARY Key.
-
Kann mich jemand aufklären, ob so etwas sein muss?
Muss nicht, empfiehlt sich aber um einen eindeutigen und einzigartigen Datensatz identifizieren zu können.
-
Danke Jungs!
http://prntscr.com/o5d87m
Das steht in meiner Konsole, irgendwie wird das geladen, irgendwie aber auch nicht.
Im Log steht ja das er den Wert bzw. den Namen herausgefunden hat.Hole ich mir den Wert falsch?
Sonst funktioniert das, wenn ich mir das nicht herausladen lasse. -
Du musst bei cache_get_value_name die Länge der Variable angeben, in die der String gespeichert wird, wenn du es in einem Array speicherst.
-
Alles anzeigen
Danke Jungs!
http://prntscr.com/o5d87m
Das steht in meiner Konsole, irgendwie wird das geladen, irgendwie aber auch nicht.
Im Log steht ja das er den Wert bzw. den Namen herausgefunden hat.Hole ich mir den Wert falsch?
Sonst funktioniert das, wenn ich mir das nicht herausladen lasse.Probier mal bitte
cache_get_value_name(garageid, "Besitzer_Name", gInfo[garageid][gBesitzer], MAX_PLAYER_NAME); -
-
Dort wird ja auch eine normale Variable verwendet, und nicht in einem Array gespeichert.
Bei einer normalen Variable kannst du es auch weglassen. -
Oh, ich bin dumm dachte Array wäre, wenn man die Stirng-Länge angibt :X
http://prntscr.com/o5dr8w
Warum wird der Wet 2x gespeichert??
Der Stock wird ganz normal beim Disconnect aufgerufen.Und irgendwie auch falsch? -1 ist der Wert der in der Datenbank steht und 0 der, der gespeichert werden soll
Code
Alles anzeigenstock SpielerSpeichern(playerid) { new query[700]; mysql_format(handle,query,sizeof(query),"UPDATE `user` SET `Skin`='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ `Garage`='%d', \ ``='%d',", GetPlayerSkin(playerid), pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][pGarage], pInfo[playerid][]); printf("GaragePID = %d",pInfo[playerid][pGarage]); printf("RandomWert = %d",pInfo[playerid][pGeld]); mysql_format(handle,query,sizeof(query),"%s \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d', \ ``='%d'", query, pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][], pInfo[playerid][]); mysql_format(handle,query,sizeof(query),"%s \ WHERE `ID`=%d", query, pInfo[playerid][db_id]); return 1; } -
Oh, ich bin dumm dachte Array wäre, wenn man die Stirng-Länge angibt :X
Das stimmt auch quasi, da in PAWN ein String einfach nur ein Array ist in dem die Buchstaben einzelnd gespeichert werden.
Die Query kann so garnicht funktionieren
und sollte eigentlich einen Fehler ausgeben, da du vor dem WHERE ID = %d ein Komma zu viel hast. Nach dem letzten Wert der eingetragen werden soll, darf kein Komma folgen.
Merke beim schreiben gerade, dass du die Query auch nirgendwo ausführst.Und bist du sicher, dass du es nur einmal bei OnPlayerDisconnect ausrufst und sonst nirgends? Zeig uns mal den Codeteil.
-
In Zeile 55. ist kein Komma. Das Komma kommt nach "
Wie gesagt, beim Disconnect:
SpielerSpeichern(playerid);Oh, ja die Query wird jetzt auch ausgeführt.
Jetzt updatet der Wert auch.Warum es da doppelt kommt weiß ich allerdings nicht

-
STRG + F und mal gucken ob du sicher auch nirgendwo anders SpielerSpeichern ausführst?
