Moin zusammen eine kleine Frage hab ich da und zwar ist es möglich bei einem DIALOG_LIST_ITEM auszugeben und in einer Variable zu speichern und später abzufragen welche er angeklickt hat?
Wie zeigst du die Liste an (Code)?
Moin zusammen eine kleine Frage hab ich da und zwar ist es möglich bei einem DIALOG_LIST_ITEM auszugeben und in einer Variable zu speichern und später abzufragen welche er angeklickt hat?
Wie zeigst du die Liste an (Code)?
Du prüfst dort ob der Spieler die Maske auf 1 hat, falls ja speicherst du mit dem Name der in der PVar steht, falls nicht, mit dem normalen Name.
Dann ändere mal
if(sscanf(cmdtext[7],"d",mID))
Zu
if(sscanf(cmdtext,"sd",name, mID))
Name wird hier nur als Dummy genutzt, es wird ja später eh überschrieben.
Nutzt du das sscanf Plugin oder die Funktion im Code?
Eventuell wird der Befehl gar nicht aufgerufen.
Debugge es bitte mal so, was steht im Server Log, wenn du den Befehl ausführst?
printf("cmdtext: %s", cmdtext);
if(strcmp(cmdtext, "/maske", true, 6) == 0)
{
printf("Im Befehl");
new mID, name[MAX_PLAYER_NAME];
if(PlayerInfo[playerid][pMember] == 25 || PlayerInfo[playerid][pLeader] == 25)
{
printf("Ist Member");
if(sscanf(cmdtext[7],"d",mID)) return SendClientMessage(playerid,COLOR_RED,"Benutze: /maske [ID]");
printf("mID: %d", mID);
if(Maske[playerid] == 1)
{
printf("Abgenommen.");
GetPVarString(playerid,"RealName",name,sizeof(name));//Laden des Originalen Namen wenn die Maske abgenommen wird
SetPlayerName(playerid,name);
Maske[playerid] = 0;
SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Du hast deine Maske abgenommen.");
}
else
{
printf("Aufgesetzt.");
GetPlayerName(playerid,name,sizeof(name));
SetPVarString(playerid,"RealName",name);
format(name, sizeof(name), "Unbekannter_%d", mID);
printf("name: %s", name);
SetPlayerName(playerid,name);
Maske[playerid] = 1;
SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Du hast deine Maske aufgesetzt.");
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Du kannst keine Maske aufsetzen!");
}
return 1;
}
Poste die neue Fehlermeldung bitte mal. Dort müsste die Zeile dabei stehen.
Datei anlegen, Inhalt rein schreiben und dann speichern.
Dann die pawno.exe öffnen und den Gamemode auswählen.
Kompilieren.
Server beenden und neu starten.
Dann den Fehler reproduzieren und dann steht im Server Log die Meldung mit Zeilenangabe.
if(strcmp(cmdtext, "/maske", true) == 0)
zu:
if(strcmp(cmdtext, "/maske", true, 6) == 0)
if(sscanf(cmdtext,"d",mID))
zu:
if(sscanf(cmdtext[7],"d",mID))
Wobei es eventuell besser ist einen Command Prozessor zu nutzen, z.B. ocmd.
Dann hast du es nicht richtig gemacht. Gehe die Schritte nochmal genau durch, das klappt schon.
Was hat es mit dem Code auf sich?
Kommt die Nachricht im Chat?
Was gibst du denn ein, was passiert dann, und was sollte passieren?
Super!
Wenn du willst, kannst du es ja hier posten, ich denke da ist es einfacher zu finden und passt zum Kontext.
Der Code nach dem Fehlerhaften Zugriff wird nicht mehr ausgeführt.
Ob das schlimm ist hängt von deinem Code ab.
Um die Zeile herauszufinden gehe nach Punkt 1.5 vor:
Tipps: Scripting-Probleme richtig erklären
Ein Leerzeichen darf in einem Name nicht vorkommen (SetPlayerName).
Nutze anstatt dem Leerzeichen einen Underscore (_).
Ah, sorry.
if(busline[i] == vID)
Zu
if(BusVehs[i] == vID)
Da haben wir doch den Grund, du musst den Index und nicht die vehicleid als Index nutzen.
Ändere:
Update3DTextLabelText(busline[vID],COLOR_WHITE,"Leerfahrt");
zu:
new i = 0;
for(i = 0; i < sizeof(busline); i++) if(busline[i] == vID) break;
if(i < sizeof(busline)) Update3DTextLabelText(busline[i],COLOR_WHITE,"Leerfahrt");
Gebe den beiden Dialogen unterschiedliche IDs. Zum Beispiel 10 und 11.
Nein, es geht um das hier:
Update3DTextLabelText(busline[i],COLOR_TURQUOISE,blInfo[buslinie][name]);
Erster Parameter, das Array heißt "busline". Die Variable "buslinie" ist was anderes.
sodass bei der "if(cpID >= sizeof(bsInfo)
bsInfo[cpID][lid] != linie)" nur noch "if(cpID >= sizeof(bsl1Info)" stehen muss
Mache das nicht, das ist schon korrekt so wie es ist.
Poste wie gesagt bitte die Deklaration von "busline", die fehlt noch immer. Ich frage aus dem Grund danach, da dort ein Array gesprengt wird, und ich dieses Array in seiner Deklaration nicht kenne.
Zudem:
Das ganze mit der "Station"-Variable und stID kannst du dir sparen, das kannst du komplett entfernen und:
format(text,sizeof(text),"Nächste Haltestelle: %s",bsInfo[stID][stationname]);
zu:
format(text,sizeof(text),"Nächste Haltestelle: %s",bsInfo[cpID][stationname]);
Sonst zeigt es dir immer nur die Namen von Linie 1 an.
Wie ist denn das "busline" Array deklariert? Kannst du das bitte mal posten?