Was ist denn die Zeile 2257 in der impl.inc?
Beiträge von Jeffry
-
-
Setze bitte mal nach dem mysql_query(query); einen print hin:
printf("query = %s", query);Was wird dir da im Server Log ausgegeben?
-
Sorry, hatte ich nicht gesehen.
Ich vermute mal stark, dass der Code - wenn du die prints einfügst - bis zur saveFrakCarToDB Zeile kommt.Teste das mal aus und poste, falls die Vermutung stimmt, deine saveFrakCarToDB Funktion.
-
1.)
dienst[playerid] scheint dann nicht 0 zu sein, setze das nach beenden des Jobs auf 0 zurück.2.)
format(string,sizeof(string),"Du gibst %0.1f Kubik Müll ab und erhälst %d",kubik[pMuellAuto[playerid]],floatround(geld));
zu:
format(string,sizeof(string),"Du gibst %0.1f Kubik Müll ab und erhälst %d",kubik[pMuellAuto[playerid]],geld); -
Poste bitte deine createFrakCar-Funktion.
Eventuell setzt du dort auch gleich noch weitere prints, zum schauen, bis zu welcher Zeile er dort kommt. -
Wäre es nicht so schlauer:
Nein, das sind dann X Anfragen an die Datenbank, anstatt einer. Das ist ressourcentechnisch nicht zu empfehlen.
Zwecks dem Fehler, du hast mysql_free_result vergessen:
public OnPlayerCarsLoad(playerid)
{
new query[128];
format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",PlayerInfo[playerid][pMySQLID]);
mysql_query(query);
SendClientMessage(playerid,COLOR_RED,"Bis hier geht es");
new num_rows = mysql_num_rows();
printf("%i num rows",num_rows);
for(new i=0; i<num_rows; i++)
{
new id=getFreeCarID();
SendClientMessage(playerid,COLOR_RED,"Bis hier geht es auch");
cInfo[i][carmodel] = mysql_GetIntByInt("autos","model","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][besitzer] = mysql_GetIntByInt("autos","besitzer","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][c_x] = mysql_GetFloatByInt("autos","x","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][c_y] = mysql_GetFloatByInt("autos","y","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][c_z] = mysql_GetFloatByInt("autos","z","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][c_r] = mysql_GetFloatByInt("autos","r","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][db_id] = mysql_GetIntByInt("autos","id","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][id_x]=CreateVehicle(cInfo[i][carmodel],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],-1,-1,-1);
}
mysql_free_result();
return 1;
} -
Füge dem Befehl hinzu:
GivePlayerMoney(playerid, geld);Zwecks den 30 Sekunden:
Zum anderen Befehl:
if(lastInvite[playerid]+30 > gettime()) return SendClientMessage(playerid, 0xFF0000FF, "Error: Warte 30 Sekunden.");
lastInvite[playerid] = gettime();
Unter den Includes:
new lastInvite[MAX_PLAYERS]; -
In OnPlayerEnterDynamicCP:
if(muellsacke[pMuellAuto[playerid]] == 1)
zu:
if(muellsacke[pMuellAuto[playerid]] <= 1)Füge dort drunter, nach dem Erstellen des Checkpoints, auch das ein:
new rand1 = 5+random(3);
muellsacke[pMuellAuto[playerid]] = rand1;
globalVar[playerid][0] = bmx1[rand][0];
globalVar[playerid][1] = bmx1[rand][1];
globalVar[playerid][2] = bmx1[rand][2];
globalVar[inviteID[playerid]][0] = bmx1[rand][0];
globalVar[inviteID[playerid]][1] = bmx1[rand][1];
globalVar[inviteID[playerid]][2] = bmx1[rand][2]; -
format(msg, 128, "%i.%i.%i %sti:%i;%i",year, month, day, std, mins, sek);
zu:
format(msg, 128, "%i.%i.%i %i:%i:%i",year, month, day, std, mins, sek); -
Das weiß ich nicht, ich kenne den ja nicht.
Möglicherweise war doch etwas minimal anders. -
Ah, so alt.
Dann:
new num_rows = mysql_num_rows();Jetzt haben wir alle Varianten durch

-
Dann hast du eine etwas ältere Version. Ändere es zu:
new num_rows, num_fields;
cache_get_data(num_rows, num_fields); -
new num_rows;
Zu
new num_rows = cache_num_rows(); -
Entferne das hier aus OnPlayerEnterDynamicCP:
new rand1 = 5+random(3);
muellsacke[pMuellAuto[playerid]] = rand1;
Und füge es in den Befehl ein. Sonst wird das jedes mal neu gesetzt, wenn du einen Müllsack aufnimmst. -
Hier ein Beispiel dazu:
[jTuT] Fraktions-Fahrzeug-System mit MySQL R39-2Stock oder Public macht für einen simplen Aufruf keinen wirklichen Unterschied.
-
Wird _GetLeader auch vor Ausführen des Befehls aufgerufen?
Wenn ja, dann wird möglicherweise die fLeaderName Variable durch irgendwas überschrieben. -
Kannst du mal ein Bild vom Chat schicken, wie es aussieht (oder den Log aus den eigenen Dateien), wenn du 5 Müllsäcke ablieferst?
-
Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/TextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.
Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24. -
Ändere die Deklaration dann zu:
new Float:globalVar[MAX_PLAYERS][3];Ich denke dafür war es gedacht, um den Checkpoint-Platz zwischenzuspeichern.
-
Für was stehen denn die Koordinaten?