%s `ID` int(11) NOT NULL,
Ändere die Zeile doch einfach zu:
%s `ID` int(11) NOT NULL,
Ändere die Zeile doch einfach zu:
Was ist an der Abfrage falsch?
Wenn ich diese benutze kommt die SERVER_KEINADMIN Message aber ich kann trotzdem den Befehl eingeben wenn ich kein admin bin.
stock IsAdmin(playerid, ar)
{
if(sI[playerid][pAdmin] < ar)return SendClientMessage(playerid, COLOR_FEHLER, SERVER_KEINADMIN);
return 1;
}
Mach lieber so etwas:
#define IsNoAdmin(%0,%1) (sI[%0][pAdmin] < (%1))
#define NO_ADMIN SendClientMessage(playerid, COLOR_FEHLER, SERVER_KEINADMIN)
//Und dann im Skript:
if(IsNoAdmin(playerid, 3)) return NO_ADMIN;
Wenn du es lieber auf deine Art machen willst, dann musst du unterschiedliche Werte returnen
Was ist an der Abfrage falsch?
Das Problem ist, dass SendClientMessage 1 zurück gibt, wenn die Nachricht gesendet wurde.
Siehe hier: http://wiki.sa-mp.com/wroot/in…unction:SendClientMessage
Return Values:
- 1: The function executed successfully. Success is reported when the string is over 144 characters, but the message won't be sent.
- 0: The function failed to execute. The player is not connected.
Daher gibt deine IsAdmin Funktion beides mal 1 zurück.
Da du dir das return im Befehl sparen willst - nehme ich an - kannst du es so schreiben:
stock IsAdmin(playerid, ar)
{
if(sI[playerid][pAdmin] >= ar) return 1;
SendClientMessage(playerid, COLOR_FEHLER, SERVER_KEINADMIN);
return 0;
}
Dann im Befehl:
if(IsAdmin(playerid, 3))
{
//Hier darf er den Befehl ausführen
}
Die Nachricht wird dann automatisch gesendet, wenn der Spieler nicht zugelassen ist.
Warum wird der Primary Key bei ID nicht gesetzt?
stock CreateAccountTabelle()
{
new query[2048];
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `"SQL_DTAG"accounts` (");
format(query, sizeof(query), "%s `ID` int(11) NOT NULL PRIMARY KEY,", query);
format(query, sizeof(query), "%s `Spielername` varchar(32) NOT NULL,", query);
format(query, sizeof(query), "%s `Passwort` varchar(65) NOT NULL,", query);
format(query, sizeof(query), "%s `Geschlecht` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Geburtsdatum` varchar(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Tutorial` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Level` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Geld` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `SpawnChange` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Skin` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Admin` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Perso` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Fraktion` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `FraktionRang` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `LastIP` varchar(16) NOT NULL", query);
format(query, sizeof(query), "%s) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;", query);
mysql_pquery(handle, query);
return 1;
}
Alles anzeigen
Existiert die Tabelle schon? Wenn ja, dann musst du sie vorher löschen, sonst wird sie mit diesem Befehl nicht neu erstellt.
Ja sie ist exestiert noch nicht. Der Primary key wird jedoch nicht eingetragen ebenfalls wird AUTO INCREMENT nicht eingetragen.
stock CreateAccountTabelle()
{
new query[2048];
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `"SQL_DTAG"accounts` (");
format(query, sizeof(query), "%s `ID` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,", query);
format(query, sizeof(query), "%s `Spielername` varchar(32) NOT NULL,", query);
format(query, sizeof(query), "%s `Passwort` varchar(65) NOT NULL,", query);
format(query, sizeof(query), "%s `Geschlecht` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Geburtsdatum` varchar(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Tutorial` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Level` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Geld` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `SpawnChange` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Skin` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Admin` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Perso` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Fraktion` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `FraktionRang` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `LastIP` varchar(16) NOT NULL", query);
format(query, sizeof(query), "%s) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;", query);
mysql_pquery(handle, query);
return 1;
}
Alles anzeigen
meine Accounts werden nicht gespeichert. Kann mir da jemand helfen?
Es sollte alles richtig gespeichert werden (laut dem print) aber nicht in die Tabelle eingetragen
stock SaveUserStats(playerid)
{
if(SpielerInfo[playerid][uLoggedIn] == false) return 1;
print("SPEICHERN");
new query[256];
mysql_format(handle, query, sizeof(query), "UPDATE accounts SET Level = '%d', Geld = '%d', Ban ='%d', Adminlevel = '%d', Neuling = '%d' WHERE id = '%d'",
SpielerInfo[playerid][uLevel],SpielerInfo[playerid][uGeld],SpielerInfo[playerid][uBan],SpielerInfo[playerid][uAdmin],SpielerInfo[playerid][uNeuling],SpielerInfo[playerid][uID]);
printf(query);[b][/b]
print("SPEICHERN MITTE");
mysql_pquery(handle, query);
print("SPEICHERN FERTIG");
return 1;
}
erledigt
Moin wollte ein Bild in SAMP einfügen mit diesem Code:
//FBI-Logo
new FBI999= CreateDynamicObject(19378, 1861.8004, -1394.7531, 23.2172, 0, 0, 0);
CreateDynamicArt3(image,FBI999, 1861.8004, -1394.7531, 23.2172, 0, 0, 0);
aber dann kommt das:
error 029: invalid expression, assumed zero
Selfmade.pwn(50351) : error 029: invalid expression, assumed zero
Selfmade.pwn(50351) : warning 215: expression has no effect
Selfmade.pwn(50350) : warning 204: symbol is assigned a value that is never used: "FBI999"
Da ich nicht so der Pro im Scripten bin sondern mich mehr aufs Mappen fokussiert habe weiß ich leider keine Lösung :3
Also seid bei den Antworten nicht so hart :3
Ja sie ist exestiert noch nicht. Der Primary key wird jedoch nicht eingetragen ebenfalls wird AUTO INCREMENT nicht eingetragen.
Das sollte dann klappen.
Sicher, dass du vor dem Starten des Servers die Tabelle wieder gelöscht hast (DROP TABLE)?
meine Accounts werden nicht gespeichert. Kann mir da jemand helfen?
Was sagt der MySQL Log?
Moin wollte ein Bild in SAMP einfügen mit diesem Code:
In welchem Callback (public) steht der Code?
Was sagt der MySQL Log?
Mir wird keine log datei ausgegeben.
mysql_log(ALL);
Stimmt doch so unter OnGameModeInit, oder?
Stimmt doch so unter OnGameModeInit, oder?
Anstatt ALL müsste es LOG_ALL heißen, außer du hast das umbenannt.
Welche MySQL Version nutzt du?
Sagt der Server Log irgendwas, wenn das MySQL Plugin startet?
Anstatt ALL müsste es LOG_ALL heißen, außer du hast das umbenannt.Welche MySQL Version nutzt du?
Sagt der Server Log irgendwas, wenn das MySQL Plugin startet?
aber hier wird ja auch ALL angegeben. umbenannt habe ich es nicht und wenn ich LOG_ALL einsetzte kommt "undefined symbol"
nutze R41
Er sagt nur, dass das plugin geladen wurde und eine Verbindung hergestellt wurde
aber hier wird ja auch ALL angegeben. umbenannt habe ich es nicht und wenn ich LOG_ALL einsetzte kommt "undefined symbol"
Stimmt, das hat sich in der R40 auch geändert, habe ich nicht dran gedacht. Da du die R41 nutzt erklärt sich das. "ALL" passt also.
Er sagt nur, dass das plugin geladen wurde und eine Verbindung hergestellt wurde
Du müsstest im Ordner "logs" -> "plugins" eine Datei "mysql.txt" haben, die den Log enthält.
Stimmt, das hat sich in der R40 auch geändert, habe ich nicht dran gedacht. Da du die R41 nutzt erklärt sich das. "ALL" passt also.
Du müsstest im Ordner "logs" -> "plugins" eine Datei "mysql.txt" haben, die den Log enthält.
Hab den Fehler gefunden: Habe die Spalte Ban in der Tabelle nicht eingetragen. Speichert nun wieder, danke für die Hilfe
Hallo,
ich möchte das ein Spieler den Motor von einem Admincar nicht starten kann.
Momentan geht es. Woran liegt es.
Aktueller Code:
Oben im Script:
new SupCar[MAX_PLAYERS];
SupCar Befehl:
ocmd:supcar(playerid, params[])
{
if(IstSpielerAdmin(playerid, 1))return NO_ADMIN;
new Float:x, Float:y, Float:z, Float:r;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, r);
SupCar[playerid] = CreateVehicle(411, x, y, z, r, 1, 2, -1);
return 1;
}
Motor Befehl:
ocmd:motor(playerid,params[])
{
if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return 0;
new vID=GetPlayerVehicleID(playerid), tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective;
for(new i; i < MAX_PLAYERS; i++)
if(vID == SupCar[i] && IstSpielerAdmin(playerid, 0))return SendClientMessage(playerid, COLOR_FEHLER, "* Du kannst den Motor von einem SupCar nicht starten!");
GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
if(tmp_engine == 1)
{
tmp_engine = 0;
GameTextForPlayer(playerid, ""HTML_WEIS"Motor "HTML_ROT"ausgeschaltet!", 5000, 1);
}
else
{
tmp_engine = 1;
GameTextForPlayer(playerid, ""HTML_WEIS"Motor "HTML_GREEN"angeschaltet!", 5000, 1);
}
SetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
return 1;
}
Alles anzeigen
Warum kann ich mit Admin Rang 0 den Motor starten?
@Marcel_Colbetti Nur ganz grob erklärt:
Du setzt zwar eine variable, allerdings müsstest du eine weitere Variable an die VehicleID setzen ungefähr so AdminVeh[SupCar[playerid]] = true;. Ganz oben natürlich noch AdminVeh[MAX_VEHICLES]; - wenn es MAX_VEHICLES war. Dann beim /motor Befehl abfragen ob das Fahrzeug ein Adminfahrzeug ist. Mit new veh = GetPlayerVehicleID(playerid) bekommst du die ID des Fahrzeuges zurück und kannst dann mit if(AdminVeh[veh] == true) abfragen.
Wie immer: Ich habe lange nichts mehr mit Pawn gemacht und so wäre es halt richtig, laut meinem Gedächtnis.
warum kommt in der Zeile tag mismatch?
cache_get_value_name_float(i, "X", bI[i][bX]);