Jetzt kann keine connection zum MySQL Server aufgebaut werden
Wie sieht die Fehlermeldung dazu aus?
Jetzt kann keine connection zum MySQL Server aufgebaut werden
Wie sieht die Fehlermeldung dazu aus?
Lass dir das Query mal ausgeben und poste dann, was im Server Log steht:
print(query);
Ich bekomme keinen Error soweit, aber im MySQL-Log ist ein String abgeschnitten, liegt es eventuell daran ?
Nein, das ist nur von der Anzeige her begrenzt.
Hast du die Ansicht in der Datenbank aktualisiert?
Stimmt die Spaltenbezeichnung von "nname" so, oder muss es "name" heißen?
Scheint so als rufst du LoadVehs vor dem mysql_connect auf.
Ändere
CharInfo[nr][cnname] = name;
zu:
format(CharInfo[nr][cnname], 32, name);
Das wird aber nichts mit dem Problem zu tun haben.
Bekommst du eine Meldung im MySQL Log zwecks Warnung oder Error? Soweit sieht es nämlich korrekt aus.
Dann muss der stock so aussehen:
stock IsBusinessOwned(businessid)
{
new query[200];
format(query, sizeof(query), "SELECT Besitzer FROM `firma` WHERE ID = %i", businessid);
new Cache:result = mysql_query(dbhandle, query);
new rows = cache_num_rows();
if(!rows)
{
cache_delete(result);
return false;
}
cache_get_field_content(0,"Besitzer",query,dbhandle);
cache_delete(result);
if(!strcmp(query, "None")) return false;
else return true;
}
bInfo[i][b_besitzer] = cache_get_field_content(i,"Besitzer",des,dbhandle);
zu:
cache_get_field_content(i,"Besitzer",bInfo[i][b_besitzer],dbhandle,32);
stock IsBusinessCreated(businessid)
{
new query[200];
format(query, sizeof(query), "SELECT ID FROM `firma` WHERE ID = %i", businessid);
new Cache:result = mysql_query(dbhandle, query);
new rows = cache_num_rows();
cache_delete(result);
if(!rows) return false;
else return true;
}
Analog für den anderen stock.
Ich habe das * zu ID geändert, da es reicht, wenn ein Feld ausgelesen wird, anstatt der ganzen Zeile.
Welche MySQL Plugin Version nutzt du?
Müssen die Abfragen in den stock's bleiben? Man kann es zwar auch mit dem neusten Plugin so machen, ist aber (auch von mir) nicht empfohlen, da der Performancevorteil an der Stelle nicht greift. Kommt aber hier auf die Verwendung drauf an, eventuell muss es so sein. Poste, falls du dir nicht sicher bist, mal den Code, der die stock's aufruft.
Welche ID hat der Blitzer in der Datenbank bekommen?
(error #1054) Unknown column 'name' in 'where clause'
In deiner Tabelle "users" existiert keine Spalte "name". Füge diese hinzu.
if(sscanf(params, "s[52]", lAction))
zu:
if(sscanf(params, "s[52]I(-1)U(-1)", lAction, lGeschwindigkeit, giveplayerid))
Wie in Post #11 geschrieben.
format(string,sizeof(string),"SELECT * FROM `betacode` WHERE Code=%s",Code);
zu:
format(string,sizeof(string),"SELECT * FROM `betacode` WHERE Code='%s'",Code);
Dann solltest du diese erst mal entfernen, eventuell liegt der Error an dieser Stelle einfach nur daran, dass bereits vorher oder woanders Fehler sind.
Vor alle strcmp's die zu den Aktionen gehören ein ! setzen, da strcmp 0 zurück gibt, wenn die Strings übereinstimmen.
Was meinst du?
Ist der Fehler weg, wenn du diese Zeile auskommentierst?
Wenn ich die Query an eine Public Function weiter geben möchte, wird diese nicht ausgeführt.
Kannst du mal nachschauen, was dir im MySQL Log ausgegeben wird, wenn du dich registrierst?
Schalte, falls nichts ausgegeben wird, den Debug Modus ein (Zeile 333 in obigem Code).
Gebe die beiden hinteren Parameter als optional im ersten sscanf an, so werden sie gesplitten falls angegeben und die unteren strcmp's funktionieren.
if(!strcmp(cmd, "/blitzer", true))
{
if(!IsPlayerInFraktion(playerid, 5)) return SendStrukturMessage(playerid, MSG_FEHLER, "Du darfst diesen Befehl nicht benutzen!");
if(PlayerInfo[playerid][pDienst] == 0) return SendStrukturMessage(playerid, MSG_FEHLER, "Du musst im Dienst sein um diesen Befehl zu benutzen!");
if(PlayerInfo[playerid][pRang] < 4) return SendStrukturMessage(playerid, MSG_FEHLER, "Du benötigst mindestens Rang 4!");
new lAction[52], lGeschwindigkeit;
if(sscanf(params, "s[52]I(-1)U(-1)", lAction, lGeschwindigkeit, giveplayerid))
{
SendStrukturMessage(playerid, MSG_BENUTZUNG, "/blitzer [Aktion]");
SendStrukturMessage(playerid, MSG_BENUTZUNG, "Verfügbare Aktionen: Aufstellen, Entfernen, EntfernAll, Check, Zählen");
return 1;
}
if(!strcmp(lAction, "aufstellen", true))
{
if(sscanf(params, "s[52]iu", lAction, lGeschwindigkeit, giveplayerid))
{
SendStrukturMessage(playerid, MSG_BENUTZUNG, "/blitzer Aufstellen [Geschwindigkeit] [Spieler ID]");
SendStrukturMessage(playerid, MSG_BENUTZUNG, "Info: Die Messposition des Blitzers ist die Position der Spieler ID!");
return 1;
}
if(IsPlayerInAnyVehicle(playerid)) return SendStrukturMessage(playerid, MSG_FEHLER, "Du kannst in einem Fahrzeug keinen Blitzer aufstellen!");
if(lGeschwindigkeit < 10 || lGeschwindigkeit > 200) return SendStrukturMessage(playerid, MSG_FEHLER, "Die Geschwindigkeit darf nicht weniger als 10 und nicht mehr als 200 betragen!");
if(!IsPlayerConnectedEx(giveplayerid) || giveplayerid == INVALID_PLAYER_ID) return SendStrukturMessage(playerid, MSG_FEHLER, "Unbekannte Spieler ID!");
if(CountBlitzer() >= 10) return SendStrukturMessage(playerid, MSG_FEHLER, "Es sind bereits 10 Blitzer in San Andreas aufgestellt!");
if(GetPlayerFraktion(giveplayerid) != 5) return SendClientMessage(playerid, COLOR_GRAU, "Dieser Spieler ist nicht im Ordnungsamt!");
if(playerid == giveplayerid) return SendClientMessage(playerid, COLOR_GRAU, "Du kannst keinen Blitzer mit dir selber aufstellen!");
if(!ProxDetectorS(30, playerid, giveplayerid)) return SendClientMessage(playerid, COLOR_GRAU, "Dieser Spieler ist zu weit entfernt!");
CreateBlitzer(playerid, giveplayerid, lGeschwindigkeit);
}
else if(!strcmp(lAction, "entfernen", true))
{
Beachte, dass es !strcmp heißen muss.
stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
{
new l_name[MAX_PLAYER_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(!strcmp(l_name,l_PlayerName, true)) return i;
}
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(strfind(l_name,l_PlayerName,true)!=-1) return i;
}
}
return INVALID_PLAYER_ID;
}
Benenne den stock falls du willst zu ReturnUser um.