Vielleicht wenn du bei der Variable die abgefragt wird i benutzt statt playerid?
[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
-
-
-
Ich glaube hier müsstest du 2 Schleifen anwenden, da du so für jeden Spieler (erste Schleife) jeden anderen Spieler (zweite Schleife) unsichtbar / sichtbar machen könntest
-
Hey ich habe mir gestern ein BetaKey System gescriptet aber das Problem ist wenn der Code bereits Existiert wird er trotzdem erstellt ?
Nachdem ich 1 Code Erstellt habe habe ich mir ein TestBefehl gemacht wo genau der Gleiche Code ist und er wird einfach erstellt ?Codeif(!strcmp(cmd, "/createbetacodet", true)) { new code[30]; format(code,sizeof(code),"9883-5740-0778-9927"); format(string,sizeof(string),"SELECT * FROM `betacode` WHERE Code=%s",code); mysql_function_query(sqlHandle,string,true,"CheckBetaCode","is",playerid,code); }
CodeCodeformat(string,sizeof(string),"SELECT * FROM `betacode` WHERE Code=%s",Code); mysql_function_query(sqlHandle,string,true,"CheckBetaCode","is",playerid,Code);
Code
Alles anzeigenforward CheckBetaCode(playerid,code[]); public CheckBetaCode(playerid,code[]) { new rows,fields; cache_get_data(rows,fields); if(rows > 0) { SendClientMessage(playerid,COLOR_YELLOW,"Der Code Existiert bereits versuch es erneut"); } else if(!rows){ printf("%s",code); new lQuery[200]; format(lQuery, sizeof(lQuery), "INSERT INTO `betacode` (`Code`) VALUES ('%s')",code); mysql_function_query(sqlHandle, lQuery, false, "", ""); } return 1; }
-
format(string,sizeof(string),"SELECT * FROM `betacode` WHERE Code=%s",Code);
zu:
format(string,sizeof(string),"SELECT * FROM `betacode` WHERE Code='%s'",Code); -
Hey, hab ein kleines Problem. Wenn ich auf den OK Button klicke, erscheint immer das Dialog von case 0..
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == D_EVENTCFG)
{
if(response)
{
switch(listitem)
{
case 0: ShowPlayerDialog(playerid, D_HEALTHCFG, DIALOG_STYLE_INPUT, "Event Health", "Please set the Event Health.", "OK", "");
case 1: ShowPlayerDialog(playerid, D_ARMOURCFG, DIALOG_STYLE_INPUT, "Event Armour", "Please set the Event Armour.", "OK", "");
case 2: ShowPlayerDialog(playerid, D_SKINCFG, DIALOG_STYLE_INPUT, "Event Skin", "Please set the Event Skin.", "OK", "");
case 3: ShowPlayerDialog(playerid, D_EVENTHPREGAIN, DIALOG_STYLE_INPUT, "Event HP Regain", "Set an amount of Health the player receive if he kill someone.", "OK", "");
case 4: ShowPlayerDialog(playerid, D_EVENTVEHICLES, DIALOG_STYLE_LIST, "Event Vehicles", "{80FF00}Enable Vehicles\n{FF0000}Disable Vehicles\n\t", "OK", "");
case 5: ShowPlayerDialog(playerid, D_EVENTSTATUS, DIALOG_STYLE_LIST, "Event Status", "{80FF00}Start Event\n{FF0000}Stop Event\n\t", "OK", "");
}
}
return 1;
} -
Entferne if(response) { ... }.
-
Nur if(response) entfernen oder auch z.B. hier if(dialogid == D_HEALTHCFG && response == 1) ?
-
Code
Alles anzeigenpublic OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == D_EVENTCFG) { if(!response)return 1; // ggf. entfernen - ich weiß ja nicht wie der code wirklich aussieht. switch(listitem) { case 0: ShowPlayerDialog(playerid, D_HEALTHCFG, DIALOG_STYLE_INPUT, "Event Health", "Please set the Event Health.", "OK", ""); case 1: ShowPlayerDialog(playerid, D_ARMOURCFG, DIALOG_STYLE_INPUT, "Event Armour", "Please set the Event Armour.", "OK", ""); case 2: ShowPlayerDialog(playerid, D_SKINCFG, DIALOG_STYLE_INPUT, "Event Skin", "Please set the Event Skin.", "OK", ""); case 3: ShowPlayerDialog(playerid, D_EVENTHPREGAIN, DIALOG_STYLE_INPUT, "Event HP Regain", "Set an amount of Health the player receive if he kill someone.", "OK", ""); case 4: ShowPlayerDialog(playerid, D_EVENTVEHICLES, DIALOG_STYLE_LIST, "Event Vehicles", "{80FF00}Enable Vehicles\n{FF0000}Disable Vehicles\n\t", "OK", ""); case 5: ShowPlayerDialog(playerid, D_EVENTSTATUS, DIALOG_STYLE_LIST, "Event Status", "{80FF00}Start Event\n{FF0000}Stop Event\n\t", "OK", ""); } return 1; } }
-
Irgendwie fangen auf einmal an auf dem Server bestimmte (wohlgemerkt: selbst eingefügte Teile im Skript) Maps einfach unsichtbar zu werden. So wird z.B. nur noch 15 % von dem eigentlichen Bank Interior angezeigt. Dieses Problem kam erst auf, als ich ein neues Jail ins Skript gefügt habe.
Ich denke also mal dass es an zu vielen(?) Objekten liegt. Ich benutze den Incognito Streamer (v. 2.8.2 - aktuellster laut Github). Was kann ich noch probieren? Andere Streamer ausprobieren?Irgend jemand eine Idee, was ich dort machen kann? Ist ein ziemlich blödes Problem, kann kaum etwas testen deswegen.
-
Weiss jemand ob Bots auch von ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL); betroffen sind?
Die MapIcons verschwinden nämlich nachdem man genug weit von den Bots weg ist, was eben ja nicht sein sollte mit PLAYER_MARKERS_MODE_GLOBAL. Kann das mit Playern gerade nicht testen.
-
Habe mal vor ein kleines MySQL Datenbank Fahrzeugsystem selber zu erschaffen da ich mal sehen will was ich noch kann und wie gut es geht.
Da habe ich aber noch ein paar Fragen bevor ich richtig Anfange:
Wenn ich jedes Fahrzeug spawnen will, was in der Datenbank ist, wie mache ich das denn am besten? Ne Schleife machen die jede ID in der Datenbank einmal auf und ab spawnt? Wie verhindere ich dass es dieselben Fahrzeuge auf einmal spawnt? -
Habe mal vor ein kleines MySQL Datenbank Fahrzeugsystem selber zu erschaffen da ich mal sehen will was ich noch kann und wie gut es geht.
Da habe ich aber noch ein paar Fragen bevor ich richtig Anfange:
Wenn ich jedes Fahrzeug spawnen will, was in der Datenbank ist, wie mache ich das denn am besten? Ne Schleife machen die jede ID in der Datenbank einmal auf und ab spawnt? Wie verhindere ich dass es dieselben Fahrzeuge auf einmal spawnt?new num_felder,num_reihen;
cache_get_data(num_felder,num_reihen,dbhandle);
if(!num_reihen)return 1;
for(new i = 0; i < num_reihen; i++)
{
}durch cache_get_data fragst du die reihen und felder ab uns interessieren nur die reihen die vorhanden sind und die schleife die dafür da ist die FAhrzeuge zu erstellen ruft nur solange ab bis die maximale anzahl an reihen vorhanden sind ab.
dadurch läd er nur das was vorhanden ist aus
konnte ich es einigermaßen verständlich rüber bringen xD?
-
Ich würde es so abfragen:
Code
Alles anzeigenmysql_tquery(SQLhandle, "SELECT * FROM tablename", "OnSQLCarsLoad",""); public OnSQLCarsLoad() { new rows, field; cache_get_data(rows, fields, SQLhandle); for(new i=0;i<rows;i++) { CreateVehicle(cache_get_field_content_int(i, "model", SQLhandle, cache_get_field_content_float(i, "posx", SQLhandle); } }
//Edit: Mist, Mnx war schneller
-
wenn ich da jedes mal dieses cache_get_field und son kram vor dem Feld machen muss dann wird das ne verdammt lange reihe xD
-
wenn ich da jedes mal dieses cache_get_field und son kram vor dem Feld machen muss dann wird das ne verdammt lange reihe xD
Das machst du in der Schleife
-
wärs da auch möglich ein eher mehr dynamisches system zu machen wie z.B. das MySQL tutorial bei Jeffry bloß als Fahrzeug?
Kann ja nicht einfach [MAX_PLAYERS] durch MAX_VEHICLES ersetzen da das Fahrzeug ja noch gar nicht existiert, brauche nämlich Fahrzeug-Daten aus der MySQL datenbank die zum Fahrzeug verlinkt sind ingame, am besten ohne dann immer ne endlos lange zeile mit cache_get und son kram
z.B. Fraktions-ID bzw. Besitzer, Tank, KM-Stand
-
wenn ich da jedes mal dieses cache_get_field und son kram vor dem Feld machen muss dann wird das ne verdammt lange reihe xD
Ne eig garnet
Code
Alles anzeigenstock LoadVehs() { new rows,fields; new Cache:Vehs = mysql_query(mysql_handle, "SELECT * FROM `Fahrzeuge`",true); cache_get_data(rows,fields); for(new i=0;i<rows;i++) { Vehicle[i][VID] = cache_get_field_content_int(i, "ID"); Vehicle[i][ModelID] = cache_get_field_content_int(i, "Modell"); Vehicle[i][vPosX] = cache_get_field_content_float(i, "X"); Vehicle[i][vPosY] = cache_get_field_content_float(i, "Y"); Vehicle[i][vPosZ] = cache_get_field_content_float(i, "Z"); Vehicle[i][vPosA] = cache_get_field_content_float(i, "A"); Vehicle[i][Color1] = cache_get_field_content_int(i, "Farbe1"); Vehicle[i][Color2] = cache_get_field_content_int(i, "Farbe2"); Vehicle[i][Color2] = cache_get_field_content_int(i, "Car_Destroyed"); cache_get_field_content(i,"Besitzer", Vehicle[i][Ownername],mysql_handle,32); cache_get_field_content(i,"Second_Key", Vehicle[i][Second_Owner],mysql_handle,32); cache_get_field_content(i,"Nummernschild", Vehicle[i][Plate],mysql_handle,32); SetVehicleParamsEx(i, false, false, false, false, false, false, false); new cCarID = CreateVehicle(Vehicle[i][ModelID],Vehicle[i][vPosX],Vehicle[i][vPosY],Vehicle[i][vPosZ],Vehicle[i][vPosA],Vehicle[i][Color1],Vehicle[i][Color1], CAR_RESPAWN_TIME,0); SetVehicleNumberPlate(cCarID, Vehicle[i][Plate]); } cache_delete(Vehs); return 1; }
Trag die Daten direkt in ein Enum ein, falls du sie später noch brauchst...^^
-
wärs da auch möglich ein eher mehr dynamisches system zu machen wie z.B. das MySQL tutorial bei Jeffry bloß als Fahrzeug?
Kann ja nicht einfach [MAX_PLAYERS] durch MAX_VEHICLES ersetzen da das Fahrzeug ja noch gar nicht existiert, brauche nämlich Fahrzeug-Daten aus der MySQL datenbank die zum Fahrzeug verlinkt sind ingame, am besten ohne dann immer ne endlos lange zeile mit cache_get und son kram
z.B. Fraktions-ID bzw. Besitzer, Tank, KM-Stand
die Grenze muss im Script festgelegt sein. daran hab ich auch mal gedacht aber ich wurde des besseren belehrt
-
Ne eig garnet
Code
Alles anzeigenstock LoadVehs() { new rows,fields; new Cache:Vehs = mysql_query(mysql_handle, "SELECT * FROM `Fahrzeuge`",true); cache_get_data(rows,fields); for(new i=0;i<rows;i++) { Vehicle[i][VID] = cache_get_field_content_int(i, "ID"); Vehicle[i][ModelID] = cache_get_field_content_int(i, "Modell"); Vehicle[i][vPosX] = cache_get_field_content_float(i, "X"); Vehicle[i][vPosY] = cache_get_field_content_float(i, "Y"); Vehicle[i][vPosZ] = cache_get_field_content_float(i, "Z"); Vehicle[i][vPosA] = cache_get_field_content_float(i, "A"); Vehicle[i][Color1] = cache_get_field_content_int(i, "Farbe1"); Vehicle[i][Color2] = cache_get_field_content_int(i, "Farbe2"); Vehicle[i][Color2] = cache_get_field_content_int(i, "Car_Destroyed"); cache_get_field_content(i,"Besitzer", Vehicle[i][Ownername],mysql_handle,32); cache_get_field_content(i,"Second_Key", Vehicle[i][Second_Owner],mysql_handle,32); cache_get_field_content(i,"Nummernschild", Vehicle[i][Plate],mysql_handle,32); SetVehicleParamsEx(i, false, false, false, false, false, false, false); new cCarID = CreateVehicle(Vehicle[i][ModelID],Vehicle[i][vPosX],Vehicle[i][vPosY],Vehicle[i][vPosZ],Vehicle[i][vPosA],Vehicle[i][Color1],Vehicle[i][Color1], CAR_RESPAWN_TIME,0); SetVehicleNumberPlate(cCarID, Vehicle[i][Plate]); } cache_delete(Vehs); return 1; }
Trag die Daten direkt in ein Enum ein, falls du sie später noch brauchst...^^
Was hast du das bei i im new; vom enum verwendet? new Vehicle[MAX_VEHICLES][fDataEnum]; so als Beispiel?