Das ist -1 wenn alle Indizes (MAX_VEHICLES) voll sind. Ist nur zur Sicherheit, das sollte eigentlich nicht vorkommen.
Beiträge von Jeffry
-
-
Du darfst den print erst in OnFrakKasseLoad ausgeben lassen, am besten vor dem return 1 darin.
Zwecks dem Code:
Du musst den Code über den "Quellcode" Editor posten (erster BB Button (Kästchen vor den Pfeilen)).
Oder du nimmst den </> Button und wählst C-Code. -
Versuche es mit dem stock:
stock IsStringCorrect(str[])
{
for(new i = 0, j = strlen(str); i < j; i++)
{
switch(str[i])
{
case 'a'..'z', 'A'..'Z', '0'..'9': continue;
default: return 0;
}
}
return 1;
} -
Setze bitte mal nach dem Query in der Speicher-Funktion einen "print" hin und lass dir das Query ausgeben.
print(query);
Poste diesen Print dann bitte mal.Zwecks der Warnung:
Das sieht so aus als wird der Server vorher beendet (mysql_close) und erst danach will das Plugin das Query ausführen. Du gibst ja in dem Befehl die Millisekunden an. Gebe da mal 5000 an. -
Ich kann es entfernen, aber wird die mysql Verbindung dann gar nicht mehr geschlossen?
Hast du danach noch MySQL Code der ausgeführt wird?
Die Warnung kommt nämlich nur nachdem die Funktion aufgerufen wurde. -
loadFrakKasse(fraktid)
{
new query[128];
format(query,sizeof(query),"SELECT * FROM fraktkasse WHERE besitzer='%i'",frakid);
mysql_function_query(dbhandle,query,true,"OnFrakKasseLoad","i",frakid);
return 1;
}Und dann woanders, zum Beispiel bei OnGameModeInit:
loadFrakKasse(0);
loadFrakKasse(1);
Oder:
for(new i = 0; i < sizeof(fInfo); i++) loadFrakKasse(i); -
Ja, das Fahrzeug ist auf einer Hebebühne oben und der Spieler ist dann unter dem Fahrzeug, sprich liegend
Versuche es so:
new id = GetClosestVehicleID(playerid, 500);
if(id != INVALID_VEHICLE_ID)
{
new Float:X, Float:Y, Float:Z;
new Float:px, Float:py, Float:pz;
GetVehiclePos(id);
GetPlayerPos(playerid, px, py, pz);
if(IsPlayerInRangeOfPoint(playerid, 3.0, X, Y, Z - 2.0) && pz < Z) //Die - 2.0 eventuell anpassen
{
SendClientMessage(playerid, COLOR_WHITE, "Super Funktioniert :)");
return 1;
}
}
else SendClientMessage(playerid, COLOR_WHITE, "Du bist nicht in der Nähe eines Fahrzeuges."); -
Immer noch das gleich Problem wie vorher das die Zeit da steht
Komisch. Möglicherweise ein Fehler im Plugin.
Versuche es so zu umgehen:
ocmd:spielerinfo(playerid,params[])
{
new str[145], name[MAX_PLAYER_NAME], lastjoin[64], gebannt;
if(sscanf(params, "s", name)) return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/spielerinfo [Name]");
mysql_real_escape_string(name,name);
format(str, sizeof(str),"SELECT LastJoin, Gebannt FROM `accounts` WHERE `Name`='%s'",name);
mysql_query(str);
mysql_store_result();
if(mysql_num_rows() == 0)
{
mysql_free_result();
return SendClientMessage(playerid,ROT,"Spieler existiert nicht.");
}
format(str, sizeof(str), "Der Spieler %s war zuletzt online am:",name);
mysql_fetch_field("LastJoin",lastjoin);
format(str, sizeof(str), "%s %s", str, lastjoin);
SendClientMessage(playerid, 0xFFFFFFFF, str);
mysql_fetch_field("Gebannt",str);
gebannt = strval(str);
mysql_free_result();
if(gebannt != 0) SendClientMessage(playerid, 0xFFFFFFFF,"Der Spieler ist gebannt.");
else SendClientMessage(playerid, 0xFFFFFFFF,"Der Spieler ist nicht gebannt.");
return 1;
} -
Was genau meinst du?
Die IDs wären hier der Index im Array, also:
new fInfo[][fraktEnum] = {
{"Zivilist", 1108.7543, -1796.4539, 16.5938, 88.3845, 0, 0, CLR_WHITE}, //ID 0
{"LSPD", 254.2813, 78.9334, 1003.6406, 180.7323, 6, 0, CLR_BLUE} //ID 1
};Somit kannst du bei deinem ? oben einfach "frakid" einfügen.
loadFrakKasse rufst du dann für alle Indizies (0 - 1) auf. -
[00:04:06] [DEBUG] mysql_close - connection: 1
[00:04:06] [DEBUG] CMySQLConnection::Disconnect - connection was closedDu rufst hier mysql_close(); auf. Das beendet die Verbindung.
Prüfe wo das im Code steht und entferne es. -
Nutze diesen stock:
stock GetEmptyPlayerCarID()
{
for(new i = 0; i < sizeof(PlayerCar); i++)
{
if(PlayerCar[i] == 0) return i;
}
return -1;
}new id = GetEmptyPlayerCarID();
if(id == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Kein Fahrzeug mehr möglich.");
PlayerCar[id] = CreateVehicle(Buycars[Cars[playerid]][modelid],2148.3618,-1138.3479,25.1614,270.5389,SuchtFarbe[playerid],SuchtFarbe2[playerid],0); -
<Bilder>
Ah, da dort die Zeit noch dabei steht war der String zu klein.
Versuche es so:
ocmd:spielerinfo(playerid,params[])
{
new str[145], name[MAX_PLAYER_NAME], lastjoin[11], gebannt;
if(sscanf(params, "s", name)) return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/spielerinfo [Name]");
mysql_real_escape_string(name,name);
format(str, sizeof(str),"SELECT LastJoin, Gebannt FROM `accounts` WHERE `Name`='%s'",name);
mysql_query(str);
mysql_store_result();
if(mysql_num_rows() == 0)
{
mysql_free_result();
return SendClientMessage(playerid,ROT,"Spieler existiert nicht.");
}
mysql_fetch_field("LastJoin",lastjoin);
mysql_fetch_field("Gebannt",str);
gebannt = strval(str);
mysql_free_result();
format(str, sizeof(str), "Der Spieler %s war zuletzt am Spieler: %s",name,lastjoin);
SendClientMessage(playerid, 0xFFFFFFFF, str);
if(gebannt != 0) SendClientMessage(playerid, 0xFFFFFFFF,"Der Spieler ist gebannt.");
else SendClientMessage(playerid, 0xFFFFFFFF,"Der Spieler ist nicht gebannt.");
return 1;
}@J0a9
Unter dem Auto? Direkt drunter liegend? -
mysql_function_query(dbhandle,query,true,"OnUserChck","i",playerid);
Zu
mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);Außerdem ist es empfehlenswert, den Code bei OnPlayerRequestClass auszuführen, da bei OnPlayerConnect der Dialog eventuell nicht immer angezeigt wird (musst du ausprobieren).
-
Bei mir wird der name nicht ausgegeben da steht dann auch das datum wie hinten
Kannst du von der Nachricht einen Screenshot posten, und von dem was in der Datenbank steht?
-
Es Klappt nicht... Könntest du es vllt über Teamviewer 11 machen?
Kannst du bitte mal dein OnPlayerSpawn posten? Das komplette.
Außerdem wäre es gut zu wissen, wo du spawnst. Ist das ein gewollter Ort?
Zwecks TeamViewer: Die Gründe warum ich auf die Scripting Base verweise
-
Wirf bitte auch mal einen Blick in den MySQL Log (ist ein extra Log) ob dort irgendwelche Fehler ausgegeben werden.
Stelle eventuell auch mal den Debug Modus auf alles:
mysql_log(LOG_ALL); -
Du kannst es aber auch so schreiben:
Das wäre nicht zu empfehlen, wenn man davon ausgeht, dass er mehrere Positionen zu dem Befehl hinzufügen will.
-
Klar ist der string groß genug. Hätte aber gern das mit den Floates etc entbuggt
Wäre gut, wenn du den Code dazu postest und einen Screenshot aus der Datenbank der die Daten zeigt.
Deswegen wundert es mich ja genauso, auch weil er die Daten ausliest.
Setze mal einen Print an die Speicherung und prüfe, ob der Print zur gleichen Zeit im Log steht, wie die Warnung. So kannst du feststellen, ob es wirklich davon kommt.
-
ocmd:job(playerid,params[])
{
if(IsPlayerInRangeOfPoint(playerid,2.0,362.1261,173.7344,1008.3828))
{
ShowMenuForPlayer(Stadthalle, playerid);
FreezePlayer(playerid);
return 1;
}
return 1;
}Wenn der Spieler sonst nicht in der Nähe wäre, würde kein Wert zurück gegeben werden.
-
Wird die Verbindung korrekt hergestellt? Die Warnung sagt ja aus, dass keine Verbindung besteht, zu dem Zeitpunkt.