Wie lade ich eine Boolean Variable aus der MySQL Datenbank?
Mit cache_get_field_content_int(... bekomme ich immer tag mismatch. Wird es mit cache_get_field_content(... funktionieren?
Beiträge von malE
-
-
-
Es wird nur ein Fahrzeug gespeichert also der Infernus, der Sultan wird nicht gespeichert.
-
-
Eigentlich soll geprüft werden ob das Fahrzeug dem Spieler gehört.
Die Variablen werden mit der cache-id der Datenbank definiert.
-
Mein Fehler! Normalerweise muss es so aussehen.
if(VehicleInfo[i][v_Besitzer] != PlayerInfo[playerid][p_ID])continue;Weil in der Variable VehicleInfo[i][v_ID] wird die cache-id gespeichert.
-
-
Vielen dank Jeffry!
Dann wollen wir mal zurück zum eigentlichen
-
Ja würde es.
-
@[LnD]JustMe.77 meinst du ein Callback der vor einem Befehl Aufgerufen wird?
Beispiel: Du gibst ein Befehl ein, Callback wird aufgerufen ( evtl. Abfragen ausgeführt im Callback ), dann wird Befehl zu Ende ausgeführt.
Dieses Callback gibt es aber nur beim Command-Prozessor: ocmd, sobald ich weiß.
Habe ich aber auch nur durch Jeffry kennengelernt. -
Du musst die zuvor gespeicherten Spieler-Variablen den Spieler wiedergeben.
C
Alles anzeigenCMD:eleave(playerid,params[]) { new name[MAX_PLAYER_NAME], string[100]; GetPlayerName(playerid, name, sizeof(name)); if(inEvent[playerid] != true)return SendClientMessage(playerid, WHITE, "{FF1717}ERROR:{FFFFFF} You're not in an event. Use {FF1717}/ejoin{FFFFFF} to join one."); format(string, sizeof(string), "{FF1717}[EVENT]:{FFFFFF}{%06x} %s{FFFFFF} has left the Event - {FF1717}/eleave", GetPlayerColor(playerid) >>> 8,name); SendClientMessageToAll(0xC4C4C4FF, string); inEvent[playerid] = false; // Setzt den Spieler die zuvor gespeicherten Variablen zurück. SetPlayerPos(playerid, PlayerInfo[playerid][p_X], PlayerInfo[playerid][p_Y], PlayerInfo[playerid][p_Z]); SetPlayerFacingAngle(playerid, PlayerInfo[playerid][p_A]); SetPlayerInterior(playerid, PlayerInfo[playerid][p_Interior]); SetPlayerVirtualWorld(playerid, PlayerInfo[playerid][p_VirtualWorld]); SetPlayerHealth(playerid, PlayerInfo[playerid][p_Health]); SetPlayerArmour(playerid, PlayerInfo[playerid][p_Armour]); return 1; } CMD:erem(playerid,params[]) { for(new i = 0; i < MAX_PLAYERS; i++) { if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue; if(IsPlayerInRangeOfPoint(i, 5, 1869.0564,-2499.7913,5048.4761)) { //SetPlayerPos(i, 1857.0629,-2477.5789,5048.4761); SendClientMessage(i,WHITE,"{FF1717}Wrong answer!"); PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0); // Setzt den Spieler die zuvor gespeicherten Variablen zurück. SetPlayerPos(i, PlayerInfo[i][p_X], PlayerInfo[i][p_Y], PlayerInfo[i][p_Z]); SetPlayerFacingAngle(i, PlayerInfo[i][p_A]); SetPlayerInterior(i, PlayerInfo[i][p_Interior]); SetPlayerVirtualWorld(i, PlayerInfo[i][p_VirtualWorld]); SetPlayerHealth(i, PlayerInfo[i][p_Health]); SetPlayerArmour(i, PlayerInfo[i][p_Armour]); } } return 1; }
-
Müsste so funktionieren.
Unter den VariablenC
Alles anzeigenenum Enum_Player { Float:p_Health, Float:p_Armour, Float:p_X, Float:p_Y, Float:p_Z, Float:p_A, p_Interior, p_VirtualWorld } new PlayerInfo[MAX_PLAYERS][Enum_Player];
OnPlayerConnectC
Alles anzeigenpublic OnPlayerConnect(playerid) { PlayerInfo[playerid][p_Health] = 0.0; PlayerInfo[playerid][p_Armour] = 0.0; PlayerInfo[playerid][p_X] = 0.0; PlayerInfo[playerid][p_Y] = 0.0; PlayerInfo[playerid][p_Z] = 0.0; PlayerInfo[playerid][p_A] = 0.0; PlayerInfo[playerid][p_Interior] = 0; PlayerInfo[playerid][p_VirtualWorld] = 0; return 1; }
Dein Befehl
C
Alles anzeigenCMD:ejoin(playerid,params[]) { new name[MAX_PLAYER_NAME], string[100]; GetPlayerName(playerid, name, sizeof(name)); if(inEvent[playerid] != false)return SendClientMessage(playerid, COLOR_GREY, "Error: Du bist schon in einem Event."); // Übersetzen new Float:HP, Float:Pos[4], Float:Armour; GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]); GetPlayerFacingAngle(playerid, Pos[3]); GetPlayerHealth(playerid, HP); GetPlayerArmour(playerid, Armour); PlayerInfo[playerid][p_Health] = HP; PlayerInfo[playerid][p_Armour] = Armour; PlayerInfo[playerid][p_X] = Pos[0]; PlayerInfo[playerid][p_Y] = Pos[1]; PlayerInfo[playerid][p_Z] = Pos[2]; PlayerInfo[playerid][p_A] = Pos[3]; PlayerInfo[playerid][p_Interior] = GetPlayerInterior(playerid); PlayerInfo[playerid][p_VirtualWorld] = GetPlayerVirtualWorld(playerid); if(zaehler >= sizeof(RandomSpawns)) zaehler = 0; SetPlayerPos(playerid, RandomSpawns[zaehler][0], RandomSpawns[zaehler][1], RandomSpawns[zaehler][2]); format(string, sizeof(string), "{FF1717}[EVENT]:{FFFFFF}{%06x} %s{FFFFFF} joined the Event - {FF1717}/ejoin", GetPlayerColor(playerid) >>> 8,name); SendClientMessageToAll(0xC4C4C4FF, string); zaehler++; inEvent[playerid] = true; return 1; }
Wenn das Event vorbei ist, musst du dann nur noch die Variablen auf den Spieler überschreiben.
Also mit SetPlayerPos(... und so weiter.// Edit
Habe etwas im Befehl geändert, musst du bei bedarf noch bei dir umändern. -
Meinst du mit zurücksetzen, alle Variablen auf 0 bzw leer.
Oder den Spielern den Werten der Variablen wiedergeben? -
Habe nun einige Callbacks Schritt für Schritt ausgeklammert, aber es hat sich leider nichts getan.
-
@Jeffry darf ich dir eine PN mit dem Script (1300 Zeilen) schicken, damit du es dir mal selbst anschauen kannst ? -
-
Ich habe keine Schleifen im public OnPlayerConnect.
Das einzigste was drin ist, sind Variablen Zurücksetzungen, die TextDraws meines Tachos und kleinere Dinge.Ansonsten habe ich einige Sachen vom Plugin TSConnector ausgeklammert, weil das Plugin den Serverstart auf einige Sekunden verlangsamt hat.
Da mein public. Aber ich denke nicht das es daran liegen könnte.
Ich habe ja auch schon bisschen nach dem Problem gegoogelt.C
Alles anzeigenpublic OnPlayerConnect(playerid) { SetPlayerColor(playerid, 0xFFFFFFFF); PlayerInfo[playerid][p_ID] = 0; PlayerInfo[playerid][p_LoggedIn] = false; PlayerInfo[playerid][p_TSOnline] = false; PlayerInfo[playerid][p_Level] = 0; PlayerInfo[playerid][p_Schritt] = 0; PlayerInfo[playerid][p_Bargeld] = 0; PlayerInfo[playerid][p_Kills] = 0; PlayerInfo[playerid][p_Deaths] = 0; PlayerInfo[playerid][p_Skin] = 0; PlayerInfo[playerid][p_Bankkonto] = 0; PlayerInfo[playerid][p_Admin] = 0; PlayerInfo[playerid][p_Name] = 0; Supmobil[playerid] = -1; GetPlayerName(playerid, PlayerInfo[playerid][p_Name], MAX_PLAYER_NAME); format(PlayerInfo[playerid][p_UID], 28, ""); new log[145]; format(log, sizeof(log), "%s ist nun mit "S_NAME" verbunden.", GetName(playerid)); Log("ConnectedPlayers", log); Tacho[playerid][0] = CreatePlayerTextDraw(playerid, 2.666665, 146.844390, "Name:"); PlayerTextDrawLetterSize(playerid, Tacho[playerid][0], 0.196999, 0.965332); PlayerTextDrawAlignment(playerid, Tacho[playerid][0], 1); PlayerTextDrawColor(playerid, Tacho[playerid][0], -1); PlayerTextDrawSetShadow(playerid, Tacho[playerid][0], 0); PlayerTextDrawSetOutline(playerid, Tacho[playerid][0], 1); PlayerTextDrawBackgroundColor(playerid, Tacho[playerid][0], 51); PlayerTextDrawFont(playerid, Tacho[playerid][0], 1); PlayerTextDrawSetProportional(playerid, Tacho[playerid][0], 1); PlayerTextDrawHide(playerid, Tacho[playerid][0]); Tacho[playerid][1] = CreatePlayerTextDraw(playerid, 89.333335, 165.766662, "usebox"); PlayerTextDrawLetterSize(playerid, Tacho[playerid][1], 0.000000, 1.619136); PlayerTextDrawTextSize(playerid, Tacho[playerid][1], -0.333333, 0.000000); PlayerTextDrawAlignment(playerid, Tacho[playerid][1], 1); PlayerTextDrawColor(playerid, Tacho[playerid][1], 0); PlayerTextDrawUseBox(playerid, Tacho[playerid][1], true); PlayerTextDrawBoxColor(playerid, Tacho[playerid][1], 102); PlayerTextDrawSetShadow(playerid, Tacho[playerid][1], 0); PlayerTextDrawSetOutline(playerid, Tacho[playerid][1], 0); PlayerTextDrawFont(playerid, Tacho[playerid][1], 0); PlayerTextDrawHide(playerid, Tacho[playerid][1]); Tacho[playerid][2] = CreatePlayerTextDraw(playerid, 8.666681, 167.585174, "Motor"); PlayerTextDrawLetterSize(playerid, Tacho[playerid][2], 0.162666, 1.031703); PlayerTextDrawAlignment(playerid, Tacho[playerid][2], 1); PlayerTextDrawColor(playerid, Tacho[playerid][2], -1); PlayerTextDrawSetShadow(playerid, Tacho[playerid][2], 0); PlayerTextDrawSetOutline(playerid, Tacho[playerid][2], 1); PlayerTextDrawBackgroundColor(playerid, Tacho[playerid][2], 51); PlayerTextDrawFont(playerid, Tacho[playerid][2], 1); PlayerTextDrawSetProportional(playerid, Tacho[playerid][2], 1); PlayerTextDrawHide(playerid, Tacho[playerid][2]); Tacho[playerid][3] = CreatePlayerTextDraw(playerid, 36.333320, 167.585174, "Licht"); PlayerTextDrawLetterSize(playerid, Tacho[playerid][3], 0.162665, 1.031170); PlayerTextDrawAlignment(playerid, Tacho[playerid][3], 1); PlayerTextDrawColor(playerid, Tacho[playerid][3], -1); PlayerTextDrawSetShadow(playerid, Tacho[playerid][3], 0); PlayerTextDrawSetOutline(playerid, Tacho[playerid][3], 1); PlayerTextDrawBackgroundColor(playerid, Tacho[playerid][3], 51); PlayerTextDrawFont(playerid, Tacho[playerid][3], 1); PlayerTextDrawSetProportional(playerid, Tacho[playerid][3], 1); PlayerTextDrawHide(playerid, Tacho[playerid][3]); Tacho[playerid][4] = CreatePlayerTextDraw(playerid, 59.666675, 167.585174, "Tueren"); PlayerTextDrawLetterSize(playerid, Tacho[playerid][4], 0.162665, 1.031170); PlayerTextDrawAlignment(playerid, Tacho[playerid][4], 1); PlayerTextDrawColor(playerid, Tacho[playerid][4], -1); PlayerTextDrawSetShadow(playerid, Tacho[playerid][4], 0); PlayerTextDrawSetOutline(playerid, Tacho[playerid][4], 1); PlayerTextDrawBackgroundColor(playerid, Tacho[playerid][4], 51); PlayerTextDrawFont(playerid, Tacho[playerid][4], 1); PlayerTextDrawSetProportional(playerid, Tacho[playerid][4], 1); PlayerTextDrawHide(playerid, Tacho[playerid][4]); return 1; }
-
-
Ändert sich leider nichts.
PC habe ich auch schon neugestartet und am Script habe ich so eig. nichts weiteres verändert. -
-
Bekomme diese Warnings
CodeC:\Users\\Desktop\Dokumente\samp scripting\gamemodes\yrp.pwn(295) : warning 202: number of arguments does not match definition C:\Users\\Desktop\Dokumente\samp scripting\gamemodes\yrp.pwn(295) : warning 202: number of arguments does not match definition C:\Users\\Desktop\Dokumente\samp scripting\gamemodes\yrp.pwn(297) : warning 202: number of arguments does not match definition C:\Users\\Desktop\Dokumente\samp scripting\gamemodes\yrp.pwn(297) : warning 202: number of arguments does not match definition
-
Die Fahrzeuge der Spieler werden nach dem Disconnect nicht gespeichert.
Es wird nur Step 1 & 2 geprintet.Falls die Frage kommt: VehicleInfo[i][v_XID] = CreateVehicle(...
OnPlayerDisconnect
C
Alles anzeigenprint("Step 1"); for(new i=0; i < sizeof(VehicleInfo); i++) { print("Step 2"); if(VehicleInfo[i][v_XID] == 0)continue; print("Step 3"); if(VehicleInfo[i][v_ID] != PlayerInfo[playerid][p_ID])continue; print("Step 4"); new Float:health; GetVehiclePos(VehicleInfo[i][v_XID], VehicleInfo[i][v_X], VehicleInfo[i][v_Y], VehicleInfo[i][v_Z]); GetVehicleZAngle(VehicleInfo[i][v_XID], VehicleInfo[i][v_R]); GetVehicleHealth(VehicleInfo[i][v_XID], health); DestroyVehicle(VehicleInfo[i][v_XID]); VehicleInfo[i][v_XID] = 0; print("Step 5"); new query[256]; mysql_format(handle, query, sizeof(query), "UPDATE vehicles SET x='%f', y='%f', z='%f', r='%f', health='%f' WHERE id='%d'", VehicleInfo[i][v_X], VehicleInfo[i][v_Y], VehicleInfo[i][v_Z], VehicleInfo[i][v_R], health, i); mysql_pquery(handle, query); print("Step 6"); printf("[USERVEH] Fahrzeug (ID: %i) vom Spieler (ID: %d) wurde entfernt.", VehicleInfo[i][v_XID], PlayerInfo[playerid][p_ID]); }
Wenn ich die beiden Abfragen ausklammere, wird die Speicherung ausgeführt. -> Ergo: Es muss irgendetwas an den Abfragen falsch sein?
Dabei taucht natürlich aber das Problem auf das, dass selbe Fahrzeug mehrmals entfernt wird, was nicht gewollt ist.
Und es wird auch nur das erste Spieler-Fahrzeug gespeichert.