Guten Abend, Ich habe mal eine frage unswa wollte ich die Admins aus der Tabelle ausleben aber stehe aufm Schlauch wie :|.
Weil ich wollte alle auslesen die über 0 sind sprich 1,2,3,..... und wollte sie dann in der Tabelle auswählen aber das denke ich kriege ich hin.
[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
-
-
mysql_format(handle, query, sizeof(query), "SELECT * FROM `Accounts` WHERE admin > 0");
So einfach kannst du das auch in einer SQL Query verwenden. -
Hallo Breadfish
Kennt jemand vielleicht die Animation von Getränk/Snack Automat???
MFG
-
-
Beitrag von Studs ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: fixed (). -
Danke dir Kaliber
-
Mir wird hier nur der erste Bann je nachdem wie oft der Spieler gebannt wird angezeigt,
Schau dir nochmal ein paar MySQL Tutorials an.
Du musst hier einen Callback verwenden, damit du dort dann die cache Funktionen verwenden kannst.
Du kannst (bzw solltest) das nicht direkt darunter nutzen.
So solltest du das machen:
C
Alles anzeigenocmd:checkban(playerid, params[]) { // if(!IsPlayerAdmin(playerid)) return 0; if(IsNull(params)) return SendClientMessage(playerid, USAGE,"Usage: /checkban [Name]"); new str[128]; mysql_format(handle, str, sizeof(str), "SELECT * FROM Banned WHERE BannedUser = '%e'",params); mysql_tquery(handle, str, "CheckBans", "i", playerid); return 1; } forward CheckBans(playerid); public CheckBans(playerid) { new count = cache_num_rows(); if(!count) return SendClientMessage(playerid, RED, "There are currently no Bans!"); SendClientMessage(playerid, USAGE, "Banlist:"); new BanAdmin[25], BannedUser[25], BanID, BannedOn[25], BannedWhy[25],BanDuration[25], shosbans[145]; for(new i; i < count; i++) { cache_get_value_name_int(0, "BanID", BanID); cache_get_value_name(0, "BanAdmin", BanAdmin); cache_get_value_name(0, "BannedUser", BannedUser); cache_get_value_name(0, "BannedOn", BannedOn); cache_get_value_name(0, "BannedWhy", BannedWhy); cache_get_value_name(0, "BanDuration", BanDuration); format(shosbans, sizeof(shosbans), "[#%d] (%s) %s has banned %s, for: %s! [Reason: %s]", BanID, BannedOn, BanAdmin, BannedUser, BanDuration,BannedWhy); SendClientMessage(playerid, COOLRED, shosbans); } }
Danke dir Kaliber
Dafür gibt es die Like Funktion
-
Hey,
Frage spontan ob ich GTA 2 mal laufen lassen kann um bestimmte Sachen zu testen, geht so etwas?Ich will das mein Tankstand nicht nur in Liter angezeigt wird sondern auch mit nach Komma Stellen wie mache ich das am besten?
Also anstatt 2/40 Liter 2.49/40 Liter ( Also nochmal das der Max Tank nicht in einer Float angezeigt wird. )
Codeif((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER)) { new vid = GetPlayerVehicleID(playerid); new string[128], modelid = GetVehicleModel(GetPlayerVehicleID(playerid)), idx = modelid-400; format(string, sizeof(string), "%d/%dLiter", vehData[vid][e_fuel],vehDefaultData[idx][e_maxFuel]); PlayerTextDrawSetString(playerid, textdraw[5][playerid], string); } //Textdraw wo es angezeigt wird
Code
Alles anzeigen{ new vehicleid,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective,string[128],idx; for(new i=0; i<MAX_PLAYERS; i++) { if(!IsPlayerConnected(i) || !IsPlayerInAnyVehicle(i)) continue; vehicleid = GetPlayerVehicleID(i); GetVehicleParamsEx(vehicleid, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); if(tmp_engine == 1) { if(vehData[vehicleid][e_fuel] < 1) { tmp_engine = 0; SetVehicleParamsEx(vehicleid, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); } else { if(GetPlayerState(i) == PLAYER_STATE_DRIVER) { vehData[vehicleid][e_fuel]--; } idx = GetVehicleModel(vehicleid)-400; if(idx < 0) continue; format(string, sizeof(string), "%d/%dLiter", vehData[vehicleid][e_fuel],vehDefaultData[idx][e_maxFuel]); PlayerTextDrawSetString(i, textdraw[5][i], string); } } } for(new i=0; i<MAX_VEHICLES; i++) { if(IsAnyDriverInVehicle(i)) continue; GetVehicleParamsEx(i, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); if(tmp_engine == 1) { if(vehData[i][e_fuel] < 1) { tmp_engine = 0; SetVehicleParamsEx(i, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); } else { vehData[i][e_fuel]--; } } } return 1; }
Also ich weiß das ich dann einen Timer erstelle der dann 0.01 immer abzieht, aber das umzusetzen schaffe ich nicht, es ist kompliziert.
@Jeffry
@KaliberDas habe ich auch noch im Script gefunden und weiß nicht was es macht (?)
Nach meinem Auge wenn der Tank auf -1 ist macht er ihn wieder voll aber das passiert nie. -
Hey,
Frage spontan ob ich GTA 2 mal laufen lassen kann um bestimmte Sachen zu testen, geht so etwas?Ich will das mein Tankstand nicht nur in Liter angezeigt wird sondern auch mit nach Komma Stellen wie mache ich das am besten?
Also anstatt 2/40 Liter 2.49/40 Liter ( Also nochmal das der Max Tank nicht in einer Float angezeigt wird. )
Codeif((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER)) { new vid = GetPlayerVehicleID(playerid); new string[128], modelid = GetVehicleModel(GetPlayerVehicleID(playerid)), idx = modelid-400; format(string, sizeof(string), "%d/%dLiter", vehData[vid][e_fuel],vehDefaultData[idx][e_maxFuel]); PlayerTextDrawSetString(playerid, textdraw[5][playerid], string); } //Textdraw wo es angezeigt wird
Code
Alles anzeigen{ new vehicleid,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective,string[128],idx; for(new i=0; i<MAX_PLAYERS; i++) { if(!IsPlayerConnected(i) || !IsPlayerInAnyVehicle(i)) continue; vehicleid = GetPlayerVehicleID(i); GetVehicleParamsEx(vehicleid, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); if(tmp_engine == 1) { if(vehData[vehicleid][e_fuel] < 1) { tmp_engine = 0; SetVehicleParamsEx(vehicleid, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); } else { if(GetPlayerState(i) == PLAYER_STATE_DRIVER) { vehData[vehicleid][e_fuel]--; } idx = GetVehicleModel(vehicleid)-400; if(idx < 0) continue; format(string, sizeof(string), "%d/%dLiter", vehData[vehicleid][e_fuel],vehDefaultData[idx][e_maxFuel]); PlayerTextDrawSetString(i, textdraw[5][i], string); } } } for(new i=0; i<MAX_VEHICLES; i++) { if(IsAnyDriverInVehicle(i)) continue; GetVehicleParamsEx(i, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); if(tmp_engine == 1) { if(vehData[i][e_fuel] < 1) { tmp_engine = 0; SetVehicleParamsEx(i, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); } else { vehData[i][e_fuel]--; } } } return 1; }
Also ich weiß das ich dann einen Timer erstelle der dann 0.01 immer abzieht, aber das umzusetzen schaffe ich nicht, es ist kompliziert.
@Jeffry
@KaliberDas habe ich auch noch im Script gefunden und weiß nicht was es macht (?)
Nach meinem Auge wenn der Tank auf -1 ist macht er ihn wieder voll aber das passiert nie.mach es mal so:
Codeif((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER)) { new vid = GetPlayerVehicleID(playerid); new string[128], modelid = GetVehicleModel(GetPlayerVehicleID(playerid)), idx = modelid-400; format(string, sizeof(string), "%0.2f/%dLiter", vehData[vid][e_fuel],vehDefaultData[idx][e_maxFuel]); PlayerTextDrawSetString(playerid, textdraw[5][playerid], string); } //Textdraw wo es angezeigt wird
Code
Alles anzeigen{ new vehicleid,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective,string[128],idx; for(new i=0; i<MAX_PLAYERS; i++) { if(!IsPlayerConnected(i) || !IsPlayerInAnyVehicle(i)) continue; vehicleid = GetPlayerVehicleID(i); GetVehicleParamsEx(vehicleid, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); if(tmp_engine == 1) { if(vehData[vehicleid][e_fuel] < 1) { tmp_engine = 0; SetVehicleParamsEx(vehicleid, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); } else { if(GetPlayerState(i) == PLAYER_STATE_DRIVER) { vehData[vehicleid][e_fuel]--; } idx = GetVehicleModel(vehicleid)-400; if(idx < 0) continue; format(string, sizeof(string), "%0.2f/%dLiter", vehData[vehicleid][e_fuel],vehDefaultData[idx][e_maxFuel]); PlayerTextDrawSetString(i, textdraw[5][i], string); } } } for(new i=0; i<MAX_VEHICLES; i++) { if(IsAnyDriverInVehicle(i)) continue; GetVehicleParamsEx(i, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); if(tmp_engine == 1) { if(vehData[i][e_fuel] < 1) { tmp_engine = 0; SetVehicleParamsEx(i, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); } else { vehData[i][e_fuel]--; } } } return 1; }
-
Frage spontan ob ich GTA 2 mal laufen lassen kann um bestimmte Sachen zu testen, geht so etwas?
https://forum.sa-mp.com/showthread.php?t=586819 <- So
Oder das SAMP Addon installieren: https://gtaforums.com/topic/760017-samp-addon/ -
Er rechnet jetzt immer +1 pro Timer aufruf
er sollte aber - 0.01 machen -
Er rechnet jetzt immer +1 pro Timer aufruf
er sollte aber - 0.01 machendann probier mal bitte folgendes:
MfG
XonarZ -
jetzt zieht er gar nichts ab, selber Code wie du geschickt hast mit Verbesserung im letzten Post
-
jetzt zieht er gar nichts ab, selber Code wie du geschickt hast mit Verbesserung im letzten Post
Hast du wie oben erwähnt daraus ein Float:e_fuel gemacht im enum ?
hast du beim:
gemacht?
-
Frage spontan ob ich GTA 2 mal laufen lassen kann um bestimmte Sachen zu testen, geht so etwas?
Du kannst alternativ auch folgende Variante nutzen, dazu musst du nichts installieren oder anpassen.
Du kannst an deinem PC zwei Benutzerkonten einrichten und dich mit beiden Benutzerkonten auf deinen Server verbinden. Das Benutzerkonto wechselst du einfach über Benutzer wechseln, dann bleibt die Session bestehen.Der Rest ist weitaus mehr als einen kleine Frage und gehört somit hier nicht rein.
-
Warum wird nachdem ich durch ersten checkpoint gefahren bin direkt der letzte checkpoint?
Code
Alles anzeigennew StrasenreinigerLinie1CP1[MAX_PLAYERS]; new StrasenreinigerLinie1CP2[MAX_PLAYERS]; new StrasenreinigerLinie1CP3[MAX_PLAYERS]; new StrasenreinigerLinie1CP4[MAX_PLAYERS]; new StrasenreinigerLinie1CP5[MAX_PLAYERS]; new StrasenreinigerLinie1CP6[MAX_PLAYERS]; new StrasenreinigerLinie1CP7[MAX_PLAYERS]; new StrasenreinigerLinie1CP8[MAX_PLAYERS]; new StrasenreinigerLinie1CP9[MAX_PLAYERS]; new StrasenreinigerLinie1CP10[MAX_PLAYERS]; case DIALOG_STRASENREINIGER: { if(!response)return 1; switch(listitem) { case 0: //Route 1 { Spieler[playerid][pIsInJob] = true; SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Bitte fahre die Checkpoints ab."); StrasenreinigerLinie1CP1[playerid] = CreateDynamicCP(1747.1191,-1701.9718,13.1079, 5, -1, -1, playerid); } } } public OnPlayerEnterCheckpoint(playerid) { if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP1[playerid])) { DestroyDynamicCP(StrasenreinigerLinie1CP1[playerid]); StrasenreinigerLinie1CP2[playerid] = CreateDynamicCP(1807.0380,-1734.5571,13.1156, 5, -1, -1, playerid); SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint. [1/10]"); } if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP2[playerid])){ DestroyDynamicCP(StrasenreinigerLinie1CP2[playerid]); StrasenreinigerLinie1CP3[playerid] = CreateDynamicCP(1845.6852,-1754.7279,13.1079, 5, -1, -1, playerid); SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint. [2/10]"); } if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP3[playerid])){ DestroyDynamicCP(StrasenreinigerLinie1CP3[playerid]); StrasenreinigerLinie1CP4[playerid] = CreateDynamicCP(1959.2983,-1772.2649,13.1079, 5, -1, -1, playerid); SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint. [3/10]"); } if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP4[playerid])){ DestroyDynamicCP(StrasenreinigerLinie1CP4[playerid]); StrasenreinigerLinie1CP5[playerid] = CreateDynamicCP(2015.0427,-1814.3308,13.1078, 5, -1, -1, playerid); SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint. [4/10]"); } if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP5[playerid])){ DestroyDynamicCP(StrasenreinigerLinie1CP5[playerid]); StrasenreinigerLinie1CP6[playerid] = CreateDynamicCP(2079.1382,-1853.1117,13.1079, 5, -1, -1, playerid); SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint. [5/10]"); } if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP6[playerid])){ DestroyDynamicCP(StrasenreinigerLinie1CP6[playerid]); StrasenreinigerLinie1CP7[playerid] = CreateDynamicCP(1987.8251,-1929.8328,13.1079, 5, -1, -1, playerid); SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint. [6/10]"); } if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP7[playerid])){ DestroyDynamicCP(StrasenreinigerLinie1CP7[playerid]); StrasenreinigerLinie1CP8[playerid] = CreateDynamicCP(1824.4017,-1857.2285,13.1391, 5, -1, -1, playerid); SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint. [7/10]"); } if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP8[playerid])){ DestroyDynamicCP(StrasenreinigerLinie1CP8[playerid]); StrasenreinigerLinie1CP9[playerid] = CreateDynamicCP(1810.0348,-1729.9315,13.1159, 5, -1, -1, playerid); SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint. [8/10]"); } if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP9[playerid])){ DestroyDynamicCP(StrasenreinigerLinie1CP9[playerid]); StrasenreinigerLinie1CP10[playerid] = CreateDynamicCP(1758.0972,-1700.6636,13.2167, 5, -1, -1, playerid); SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint. [9/10]"); } if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP10[playerid])){ DestroyDynamicCP(StrasenreinigerLinie1CP10[playerid]); new vID = GetPlayerVehicleID(playerid); RemovePlayerFromVehicle(playerid); SetVehicleToRespawn(vID); SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Du hast deine Linie beendet. [10/10]"); new gehalt; gehalt = randomEx(750, 1300); new String[256]; format(String, sizeof(String), "Job"HTML_WEIS": Du hast %d$ verdient.", gehalt); Spieler[playerid][pJobLohn] = gehalt; SendClientMessage(playerid, COLOR_GELB, String); Spieler[playerid][pIsInJob] = false; } return 1; }
-
Nutze OnPlayerEnterDynamicCP.
https://github.com/samp-incogn…mer-plugin/wiki/CallbacksDann kannst du das IsPlayerInDynamicCP mit einer Abfrage gegen die checkpointid ändern.
Nutze dann außerdem if, else if, else if,... anstatt nur if, if, if. Der Spieler kann ja nur in einem Checkpoint sein.Außerdem darfst du nur ein Array für die Checkpoint ID nehmen, in die schreibst du immer den Checkpoint rein, der erstellt wird. Ein zweites Array nimmst du, um den Schritt (1, 2, 3,...) rein zu schreiben, damit kannst du dann Abfragen, bei welchem Schritt der Spieler grade ist.
-
Ich hab da so ein weiteres problem... Ich komm mir richtig dumm vor ehrlich xD
Ich habe einen enter befehl:
Codeocmd:enter(playerid, params[]){ for(new i = 0; i < sizeof(tInfo[]); i++){ //ZEILE 787 -> if(!tInfo[i][id_x]) continue; if(tInfo[i][enter_x] == 0.0) continue; if(!IsPlayerInRangeOfPoint(playerid, 5, tInfo[i][enter_x], tInfo[i][enter_y], tInfo[i][enter_z])) continue; break; } return 1; }
Wenn ich das So Compile gibts keine Fehler, wenn ich allerdings ingame dann /enter eingebe, kommt folgendes in der Serverlog:Code[11:11:09] [debug] Run time error 5: "Invalid memory access" [11:11:09] [debug] AMX backtrace: [11:11:09] [debug] #0 0000f74c in public ocmd_enter (playerid=0, params[]=@0006efd4 " ") at ... gamemodes\selfmade.pwn:787 [11:11:09] [debug] #1 native CallLocalFunction () in samp-server.exe [11:11:09] [debug] #2 000073e0 in public OnPlayerCommandText (playerid=0, cmdtext[]=@0006efb8 "/enter") at ... pawno\include\ocmd.inc:78
Ich kann mich dunkel erinnern, dass ich schon mal son Invalid Memory Access hatte, allerdings finde ich den Beitrag gerade nicht mehr und komm auch nicht mehr drauf was war
-
Du musst hier sizeof (tInfo) verwenden
#Handy
-
Du musst hier sizeof (tInfo) verwenden
#Handy
Wenn ich das mache, dann bekomm ich beim Compilen ein Warning, ich vermute weil in meiner ersten Klammer beim "new tInfo..." keine Zahl drinne steht ...
Ich lasse die Informationen aus der MySQL Datenbank in ein Enum speichern ...
also musst ich bestimmt noch bei tInfo[][ENUMDATA] eine Zahl einfügen: tInfo[50][VEHDATA] oder?
MfG
XonarZ