Ah sorry, beim crashdetect war es sie erste Stelle. Das nativechecker Plugin muss an die letzte Stelle.
Eigentlich kannst du es auch komplett entfernen, da das crashdetect Plugin das selbe kann.
[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 habe eben mal eine kleine Frage, wie kann ich es machen das wenn jetzt spieler x eine Service anfrage an mich sendet und ich diese annehme, das nur wir zwei schreiben können und es auch beide sehen können und keine anderen?
-
Beim Printen von meinem /fpark Befehl wird fdb_id immer als 1 angegeben, obwohl ich im 2ten Fahrzeug (ist auch richtig als id=2 in der DB) bin. Es liegt also irgendwo dadran. Wo allerdings? Ich sehe nirgends irgendwo Fehler...
// fdb_id ist als letztes im fcarenum.
// /fpark befehl selbst mit printf wo die falsche fdb_id geprinted wird.
new id=GetPlayerVehicleID(GetVehicleModel(id));
new fID=pInfo[playerid][fraktion];
for(new i=0;i<sizeof(fcInfo);i++)
{
if(fcInfo[i][fbesitzer]==fID)
{
printf("%i ist fbesitzer und %i ist Player's Fraktid",fcInfo[i][fbesitzer],fID);
GetVehiclePos(fcInfo[i][id_x],fcInfo[i][fc_x],fcInfo[i][fc_y],fcInfo[i][fc_z]);
GetVehicleZAngle(fcInfo[i][id_x],fcInfo[i][fc_r]);
new query[256];
format(query,sizeof(query),"UPDATE fraktautos SET x='%f',y='%f',z='%f',r='%f' WHERE besitzer='%i' AND id='%i'",fcInfo[i][fc_x],fcInfo[i][fc_y],fcInfo[i][fc_z],fcInfo[i][fc_r],fID,fcInfo[i][fdb_id]);
mysql_function_query(dbhandle,query,false,"","");
printf("X: %f, Y: %f, Z: %f, R: %f, Besitzer: %i, DB_ID: %i",fcInfo[i][fc_x],fcInfo[i][fc_y],fcInfo[i][fc_z],fcInfo[i][fc_r],fID,fcInfo[i][fdb_id]);
SendClientMessage(playerid,CLR_BLUE,"Erfolgreich umgeparkt. Euer Fraktauto wird nun immer hier spawnen!");public frakCarSavedToDB(fcarid)
{
fcInfo[fcarid][fdb_id]=cache_insert_id(dbhandle);
return 1;
}new id=getFreeFrakCarID();
fcInfo[id][fmodel]=cache_get_field_content_int(i,"model",dbhandle);
fcInfo[id][ffarbe]=cache_get_field_content_int(i,"ffarbe",dbhandle);
fcInfo[id][fbesitzer]=cache_get_field_content_int(i,"besitzer",dbhandle);
fcInfo[id][fc_x]=cache_get_field_content_float(i,"x",dbhandle);
fcInfo[id][fc_y]=cache_get_field_content_float(i,"y",dbhandle);
fcInfo[id][fc_z]=cache_get_field_content_float(i,"z",dbhandle);
fcInfo[id][fc_r]=cache_get_field_content_float(i,"r",dbhandle);
fcInfo[id][fdb_id]=cache_get_field_content_int(i,"id",dbhandle);
fcInfo[id][id_x]=CreateVehicle(fcInfo[id][fmodel],fcInfo[id][fc_x],fcInfo[id][fc_y],fcInfo[id][fc_z],fcInfo[id][fc_r],fcInfo[id][ffarbe],-1,-1);
}
return 1;
}getFreeFrakCarID()
{
for(new i=0;i<sizeof(fcInfo);i++)
{
if(fcInfo[i][id_x]==0)return i;
}
return 0;
}mfg
-
hallo,
versuche einzustellen, dass wenn der Server gestartet wird Tabellen erstellt die noch nicht existieren.
So habe ich es versucht:Code
Alles anzeigenstock CreateTable() { new query[9000]; format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `TestData` ("); format(query, sizeof(query), "%s `Name` var(35) NOT NULL PRIMARY KEY,", query); format(query, sizeof(query), "%s `Test1` var(50) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `Test2` var(50) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `Test3` var(50) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `Test4` var(50) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `Test5` var(50) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `Test6` var(50) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `Test7` var(50) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `Test8` var(50) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `Test9` var(50) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `Test10` var(50) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s) ENGINE=InnoDB DEFAULT CHARSET=latin1;", query); mysql_tquery(dbhandle, query); return 1; }
[ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'var(35) NOT NULL PRIMARY KEY, `Test1` var(50) NOT NULL DEFAULT '0', Test2` va' at line 1Was habe ich denn falsch gemacht?
Liegt das bei var(50) ?Vielen Dank im vorraus
-
Ändere "var" zu "VARCHAR".
Außerdem ist 9000 Zeichen für das Query etwas viel, das kannst du kleiner machen. -
@Jeffry, danke ich teste es sofort mit dem VARCHAR.
Ähm ich kann die Zeichen runtersetzen aber ich möchte 25-26 Spalten erstellen lassen.
Gelten die Zeichen nur für die Spaltennamen, wenn ja dann kann ich es wahrscheinlich auf 500 setzen//Edit:
habe nur eine Fehlermeldung ...
(error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ENGINE=InnoDB DEFAULT CHARSET=latin1' at line 1Das sind die letzten Zeilen:
-
Hier ist ein Komma zu viel:
format(query, sizeof(query), "%s `Test24` VARCHAR(50) NOT NULL DEFAULT '0',", query);
zu:
format(query, sizeof(query), "%s `Test24` VARCHAR(50) NOT NULL DEFAULT '0'", query);Gelten die Zeichen nur für die Spaltennamen, wenn ja dann kann ich es wahrscheinlich auf 500 setzen
Die Zeichen, die das Query enthält, also die Länge des Textes. Wenn du "VARCHAR(500)" angibst, dann sind das keine 500 Zeichen im Query. Die Länge bezieht sich nur auf die Zeichenanzahl, die du tippst.
-
Hallo, wofür steht >>> 8 in
GetPlayerColor(playerid) >>> 8)Ändert sich etwas wenn ich das auslasse?
-
Ändert sich etwas wenn ich das auslasse?
Ja
Das ist ein bitshift Operator.Er shiftet die Zahl 8 Bits nach rechts.
new a=0b111111111;
printf("%09b (%d) | %09b (%d)",a,a,a >>> 8,a >>> 8);
//Output: 111111111 (511) | 000000001 (1)//Edit: Falls du dich fragst wieso man das hier macht:
Man will den Alpha Wert entfernen:
new a=0xFF4800FF;
printf("%09b (%x) | %09b (%x)",a,a,a >>> 8,a >>> 8);
//Output: 11111111010010000000000011111111 (FF4800FF) | 111111110100100000000000 (FF4800)Wie du siehst wird aus 0xFF4800FF = 0xFF4800
-
Wie machte ich ein InGame-Tutorial, habe dafür einen Thread erstellt & auch was versucht, aber das hat nicht funktioniert & habs wieder gelöscht.
-
-
Wie machte ich ein InGame-Tutorial, habe dafür einen Thread erstellt & auch was versucht, aber das hat nicht funktioniert & habs wieder gelöscht.
new Tut[MAX_PLAYERS];
und dann bei deinem Loginsystem "Tut[playerid] = 1;" und bei jedem neuem Schritt "Tut[playerid] = 2;".
Mit "if(Tut[playerid] == 1)" abfragen.
-
Hi, ich habe eine Funktion womit Spieler, die in einer Liste eingetragen sind, Befehle ausführen können.
Meine Frage ist, gibt's irgendwie die Möglichkeit die Namen der Spieler in einem enum einzutragen anstatt so wie es aktuell ist? Falls ja, könnt ihr mir ein Beispiel machen?stock CheckAdminName(playerid) //Admin List
{
if(!strcmp(SpielerName(playerid), "[LnD]JustMe.77"))return 1;
else if(!strcmp(SpielerName(playerid), "testname12")) return 1;
return 0;
}CMD:kick(playerid,params[])
{
if(IsPlayerAdmin(playerid) || CheckAdminName(playerid))
//Beispiel..
return 1;
} -
new Tut[MAX_PLAYERS];
und dann bei deinem Loginsystem "Tut[playerid] = 1;" und bei jedem neuem Schritt "Tut[playerid] = 2;".Mit "if(Tut[playerid] == 1)" abfragen.
Wo muss ich das denn reinpacken, wenn ich mir das jetzt machen will?
Mit Timer, ohne Timer, eigenes Public / reicht eine Variable? -
Hi, ich habe eine Funktion womit Spieler, die in einer Liste eingetragen sind, Befehle ausführen können.
Meine Frage ist, gibt's irgendwie die Möglichkeit die Namen der Spieler in einem enum einzutragen anstatt so wie es aktuell ist? Falls ja, könnt ihr mir ein Beispiel machen?Wenn du nur Namen eintragen willst, dann reicht ein einfaches Array doch aus. So z.B. könnte man das machen (Script ist ungetestet)
new Admins[5][MAX_PLAYER_NAME] = { "John", "Micheal", "Peter", "Frederik", "Johannes" }
stock CheckAdminName(p) {
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
for(new i=0; i<sizeof(Admins); i++) {
if(!strcmp(name, Admins[i], true)) {
return 1;
}
}
return 0;
} -
Ist ressourcentechnisch gesehen aber nicht zu empfehlen, da wäre die einfache - ich nenne es mal Liste - besser.
Alternativ, falls die Namen sich im laufenden Betrieb ändern können, müsste es über eine Datei/Datenbank realisiert werden, dass die Namen dort gespeichert und von dort geladen werden. -
hab ne kleine frage was ist daran falsch ?
public beispieltimer(playerid)
{
for(new i=1;i<5;i++)
{
SendClientMessageToAll(COLOR_RED,i);
}
return 1;
}
der fehler error 035: argument type mismatch (argument 2) -
public beispieltimer(playerid)
{
for(new i=1;i<5;i++)
{
new str[2];
format(str, sizeof str, "%i", i);
SendClientMessageToAll(COLOR_RED,str);
}
return 1;
}Du kannst nicht einfach eine Zahl senden, du musst dass erstmal zum string machen
-
Kleiner Hinweis dazu noch:
Es ist nicht zu empfehlen die Deklaration einer Variable innerhalb einer Schleife zu machen, das kann unter Umständen zu Fehlern im Programmablauf führen.
Daher besser so:
public beispieltimer(playerid)
{
new str[2];
for(new i=1;i<5;i++)
{
format(str, sizeof(str), "%i", i);
SendClientMessageToAll(COLOR_RED,str);
}
return 1;
} -
Hallo,
kann mir jemand Helfen?
Versuche einen "Aufzug" zu machen sprich wenn man an bestimmten Punkten ist soll man dann geportet werden,
dass Problem ist nur das wenn ich aufm Dach bin kann ich nicht runter weil ich immer Fehlermeldung bekomme das ich angeblich schon da wäre...Code
Alles anzeigenif(dialogid == DIALOG_GARAGE) { if(response) { if(listitem == 0) {// LSPD Hof if(IsPlayerInRangeOfPoint(playerid, 6.0, /* LSPD Interior */) || IsPlayerInRangeOfPoint(playerid, 6.0, 1549.0814, -1673.4092, 44.8531/* LSPD Heliplatz */)) { SetPlayerPos(playerid, 1572.7601, -1646.0165, 13.5639); CreateBox(playerid, "", "~w~Du ~g~bist~w~ nun am LSPD Hof."); } else SendClientMessage(playerid, COLOR_WHITE, "Du befindest dich {FF8484}bereits{FFFFFF} im LSPD Hof!"); } if(listitem == 1) {// LSPD Heliplatz if(IsPlayerInRangeOfPoint(playerid, 6.0, 1572.7601, -1646.0165, 13.5639/* LSPD Hof */)) || IsPlayerInRangeOfPoint(playerid, 6.0, 1560.5579, -1689.9689, 25.5188/* LSPD Interior */)) { SetPlayerPos(playerid, 1549.0814, -1673.4092, 44.8531); CreateBox(playerid, "", "~w~Du ~g~bist~w~ nun am LSPD Heliplatz."); } else SendClientMessage(playerid, COLOR_WHITE, "Du befindest dich {FF8484}bereits{FFFFFF} im LSPD Heliplatz!"); } if(listitem == 2) {// LSPD Präsidium if(IsPlayerInRangeOfPoint(playerid, 6.0, 1572.7601, -1646.0165, 13.5639/* LSPD Hof */) || IsPlayerInRangeOfPoint(playerid, 6.0, 1549.0814, -1673.4092, 44.8531/* LSPD Heliplatz */)) { SetPlayerPos(playerid, 1560.5579, -1689.9689, 25.5188); CreateBox(playerid, "","~w~Du ~g~bist~w~ nun im LSPD Praesidium."); } else SendClientMessage(playerid, COLOR_WHITE, "Du befindest dich {FF8484}bereits{FFFFFF} im Präsidium!"); } } else SendClientMessage(playerid, COLOR_WHITE, "{FF8484}Abgebrochen{FFFFFF}."); }
Es ist 100% ein Denkfehler, aber ich finde den nicht habe sogar extra alle Koordinaten neu gesetzt...
Könnte mir einer weiterhelfen, wie gesagt mir fällt der Denkfehler nicht auf... -
Welcher Abschnitt ist denn mit "Dach" gemeint?