Lade dir die aktuelle SA-MP Version des Servers herunter und installiere diese.
http://sa-mp.com/download.php
Ebenso das Streamer Plugin:
http://forum.sa-mp.com/showthread.php?t=102865
Lade dir die aktuelle SA-MP Version des Servers herunter und installiere diese.
http://sa-mp.com/download.php
Ebenso das Streamer Plugin:
http://forum.sa-mp.com/showthread.php?t=102865
Das funktioniert unter bestimmten Bedingungen korrekt, ja. Allerdings nicht immer, und zwar dann, wenn der Spieler sowohl einen Report bei [0] hat, als auch bei [2] und die Listitems eine unterschiedliche Anzahl an anderen Listitems davor haben.
Ändere es deshalb wie oben geschrieben zu:
new counter;
ForEachPlayer(i)
{
if(IsPlayerConnected(i) && !IsPlayerNPC(i) && GetPVarInt(i,"Eingeloggt") == 1)
{
if(ReportListitem[i][rID][clickedlistitem] != -1)
{
if(counter == listitem)
{
listitem = i;
break;
}
counter++;
}
}
}
Dann sollte er, so wie du dein System aufgebaut hast, direkt die richtige Nummer (0 oder 2, oder eben andere) nehmen.
Nein, aber versuche es so, da du - wie ich sehe - alle über einen Dialog ansprichst:
if(ReportListitem[i][rID][0] != -1)
zu:
if(ReportListitem[i][rID][clickedlistitem] != -1)
Nur in dem Code ändern, den ich dir gegeben habe (Zeile 17).
Die neue Schleife die du hinzugefügt hast kannst du wieder weg machen.
Zeile 12 bis 27 in dem Code den ich dir gepostet habe auch dort einfügen, aber eben die [0] anpassen.
Nein, das ist keine Speicherfunktion.
Du musst das Fahrzeug mit einem UPDATE-Query speichern. Falls du sowas nicht hast, musst du es bei deinem Parken Befehl einbauen.
Ändere:
case DIALOG_REPORTANNAHME:
{
new clickedlistitem = Spieler[playerid][pReportSelect],string[1000],headerstring[64];
if(response == 0)
{
Spieler[playerid][pReportSelect] = 0;
CancelSelectTextDraw(playerid);
return 1;
}
else
{
if(!IsPlayerConnected(ReportListitem[listitem][rID][clickedlistitem]) || ReportListitem[listitem][rID][clickedlistitem] == -1)
zu:
case DIALOG_REPORTANNAHME:
{
new clickedlistitem = Spieler[playerid][pReportSelect],string[1000],headerstring[64];
if(response == 0)
{
Spieler[playerid][pReportSelect] = 0;
CancelSelectTextDraw(playerid);
return 1;
}
else
{
new counter;
ForEachPlayer(i)
{
if(IsPlayerConnected(i) && !IsPlayerNPC(i) && GetPVarInt(i,"Eingeloggt") == 1)
{
if(ReportListitem[i][rID][0] != -1)
{
if(counter == listitem)
{
listitem = i;
break;
}
counter++;
}
}
}
if(!IsPlayerConnected(ReportListitem[listitem][rID][clickedlistitem]) || ReportListitem[listitem][rID][clickedlistitem] == -1)
So wird das listitem zu dem eigentlichen "i" gesetzt, denn dort steht ja die ID drin.
Wenn nämlich erst der Spieler mit der ID 5 eine Frage geschrieben hat, dann steht dessen Frage bei listitem 0. Wenn du dann direkt mit listitem auf das Array zugreifst, dann wird der Wert von Spieler ID 0 ausgelesen, und nicht der von der ID 5.
Diese Anpassung musst du bei den anderen Reports auch machen.
Es wird gar kein UPDATE Query auf das Fahrzeug ausgeführt.
Mit welchem Code speicherst du denn die Fahrzeuge nach dem Parken?
Hat sich erledigt
Wie hast du das Problem behoben?
nach der regestrierung behaltet man den score 0 woran kann das liegen?
An einem fehlerhaften Code.
Ohne Code können wir dir da nichts weiteres sagen.
Beende bitte deinen Server, lösche dann den MySQL Log, starte den Server wieder und führe das aus, was die Warnung generiert hat.
Dann poste den kompletten MySQL Log.
Welche Reportdraw Nummer wählst du aus (in Klammer)?
diese meldung in der mysql log:
Es besteht keine Verbindung zur MySQL Datenbank.
Prüfe ob deine Daten korrekt sind, und ob vielleicht zuvor noch etwas anderes im MySQL Log steht.
Ändere mal:
new string[350],
hstate[5] = "Nein",
hrentstate[5] = "Nein",
str[50] = "",
str1[50] = "";
zu:
new string[350],
hstate[5],
hrentstate[5],
str[50],
str1[50];
hstate = "Nein";
hrentstate = "Nein";
Könntest du den Code bitte formatieren? Entweder über den PWN Button oder über den Code Button?
Suche nach UpdateHaus, dazu müsste es eine extra Funktion (ssteht extra, nicht in einem Befehl oder so) geben (gegebenenfalls stock oder public), poste diese bitte.
Poste bitte den Code, mit dem du den Report abschickst, und den Code, mit dem du die Kategorie auswählst, sowie den Code, der den falschen Namen anzeigt.
Könntest du uns bitte mitteilen, was du gemacht hast, um den Fehler zu beheben, bzw. was das Problem war, falls mal wieder jemand ein ähnliches Problem hat, und auf diesen Thread stößt? Wäre super! ![]()
if(diewaffe == messer)||diewaffe == Messer)
zu:
if(!strcmp(diewaffe, "messer", true))
Gleich bei den anderen Abfragen.
Das true bedeutet, dass die Groß-/Kleinschreibung nicht beachtet wird.
Prüfe deine MySQL Login Daten. Sollten die zu 100% korrekt sein, dann kontaktiere den Support deines Hosters, möglicherweise fehlen dir dann entsprechende Berechtigungen.
Bin grade auf der Arbeit aber ich bin mir sicher, dass es listitem 0 ist weil das bisher das einzigste im Navigationssystem ist.
Was wird dir so im Server Log ausgegeben?
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
printf("dialogid: %d", dialogid);
if(dialogid == DIALOG_NAVI)
{
printf("response: %d", response);
if(response)
{
printf("listitem: %d", listitem);
if(listitem == 0)
{
printf("in");
new tankid;
tankid = GetClosestFuelstation(playerid);
printf("tankid: %d", tankid);
printf("Size: %d", sizeof(nextTanke));
SetPlayerCheckpoint(playerid, nextTanke[tankid][Navi_X], nextTanke[tankid][Navi_Y], nextTanke[tankid][Navi_Z], 5);
SendClientMessage(playerid, GELB, "[NAVI] {FFFFFF}Die Route wird berechnet...");
printf("durch");
}
}
return 1;
}
Das bedeutet, dass du eine "möglicherweise ungewollte Zuweisung" hast. Eine Zuweisung ist eine Wertzuweisung wie diese:
tmp = 1;
In deinen if-Abfragen ist jeweils nur ein "=", das wäre eine Wertzuweisung wie oben. Du willst aber einen Wert prüfen, daher musst du zwei "=" setzen, also:
"=" zu "==" ändern.