Du setzt doch beim Beantworten des Dialogs die Variable Spieler[playerid][pTaxiDuty] = 1;. Setzt du sie beim Aussteigen oder anderswo wieder auf 0?
Brauche Hilfe mit Dialog
- luiluiboy014
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Jup Hier
case DIALOG_TAXIPICE:
{
if (!response)
RemovePlayerFromVehicle(playerid); // Den Spieler aus dem Fahrzeug werfen, wenn er abbrechen drückt
else
{
new taxifare = strval(inputtext);
if (taxifare > 150 taxifare < 50) // Ein maximales und minimales Limit für den Preis?
{
// Der Spieler kann es nochmal versuchen:
ShowPlayerDialog(playerid, DIALOG_TAXIPICE, DIALOG_STYLE_INPUT, "{FFFF00}Taxi - Preis festlegen", "{FFFFFF}Lege den Preis für die Taxifahrt fest:", "Ok", "Abbrechen");
return SCM(playerid, 0xFF0000FF, "[TAXI] Der Preis muss zwischen 50 und 150$ liegen.");
}SetPVarInt(playerid, "taxifare", taxifare);
new string[128],vehicleid = GetPlayerVehicleID(playerid);
Spieler[playerid][pTaxiDuty] = 1;
PlayerTextDrawShow(playerid,TAXOdraw[playerid][1]);
format(string,sizeof(string),"Dienstpreis: %i$",taxifare);
PlayerTextDrawSetString(playerid,TAXOdraw[playerid][1],string);
format(string,sizeof(string),"Taxifahrer/in %s ist im Dienst. Kosten %i$",SpielerName(playerid),taxifare);
SCMALL(SYSTEMGELB,string);
VehicleOnDuty[GetPlayerVehicleID(playerid)] = true;
format(string,sizeof(string),"San Andreas Taxi \nTaxifahrer/in: %s\nDienstpreis: %i$",SpielerName(playerid),taxifare);
UpdateDynamic3DTextLabelText(vFahrzeug[vehicleid][VehText], TAXIFARBESYSTEM, string);
PlayerTextDrawShow(playerid,TAXOdraw[playerid][0]);
PlayerTextDrawSetString(playerid,TAXOdraw[playerid][0],"Frei...");
PlayerTextDrawShow(playerid,TAXOdraw[playerid][2]);
PlayerTextDrawSetString(playerid,TAXOdraw[playerid][2],"Frei...");
PlayerTextDrawShow(playerid,TAXOdraw[playerid][3]);
PlayerTextDrawSetString(playerid,TAXOdraw[playerid][3],"Frei...");
format(string, sizeof(string), "[TAXI] Du hast den Preis auf %d$ festgelegt.", taxifare);
return SCM(playerid, 0xFFFF00FF,string);
}
} -
Und wo setzt du sie wieder auf 0? Und wie ist pTaxiDuty definiert?
-
Hier
if(IsVehicleATaxi(vehicleid))
{
if(isPlayerInJob(playerid,17))
{
if(Spieler[playerid][pTaxiDuty] == true)
{
Spieler[playerid][pTaxiDuty] = 0;
}
}
} -
Und an welcher Stelle steht das? Die Frage ist ja, wann der Spieler den Job beenden soll. Per Befehl? Wenn er aussteigt? Wenn er eine bestimmte Zeit lang ausgestiegen ist?
-
in public OnPlayerExitVehicle(playerid,vehicleid)
-
ne ich meine das der dialog nicht kommt wenn ich schon duty bin MfG Lui
nö Geht nicht wenn ich austeige und wieder einsteige kommt der wieder MfG Lui
Ja ist doch logisch, wenn du den Dienst beendest, wenn der Spieler das Fahrzeug verlässt...
-
auch ohne den hier geht das nicht
if(IsVehicleATaxi(vehicleid))
{
if(isPlayerInJob(playerid,17))
{
if(Spieler[playerid][pTaxiDuty] == true)
{
Spieler[playerid][pTaxiDuty] = 0;
}
}
} -
Wie ist denn das Array Spieler und pTaxiDuty definiert?
-
so pTaxiDuty, Mehr nicht
-
-
Na pTaxiDuty soll ja ein Wert, wahrscheinlich in einem Enum sein oder zumindest definiert, als Index über den man auf das Array zugreift. Wenn du das nicht definiert hast, würde der Compiler einen Fehler ausgeben.
-
er Steckt in enum unter accounts
-
Dann weiß ich auch nicht weiter, wenn du die Variable beim Beantworten des Dialogs auf 1 setzt, danach nirgendwo auf 0 setzt und bei der Abfrage der Variable aber trotzdem wieder false kommt. Ich würde dir empfehlen, nochmal deine Gedanken zu ordnen, wie du es eigentlich haben willst und dann Schritt für Schritt nochmal die Funktionen und Variablen die gesetzt werden müssen durchzugehen.
-
Da du mir zwei Nachrichten diesbezüglich geschrieben hast:
Was @Madd92 schreibt ist korrekt.Da du das pTaxiDuty auf 1 setzt, wenn der Preis eingegeben wurde, muss die Abfrage auch funktionieren, wenn du erneut in das Taxi einsteigst.
Dies klappt allerdings nicht, wenn du beim Aussteigen das pTaxiDuty auf 0 setzt. Suche danach und entferne den entsprechenden Code.Du kannst vor der Abfrage auch prüfen, welchen Wert das pTaxiDuty hat. Solange es dort 0 ist, wird der Dialog angezeigt.
if(IsVehicleATaxi(vehicleid))
{
if(Spieler[playerid][pJob] != 17)
{
TextDrawShowForPlayer(playerid,InfoSign);
PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~r~Info:~w~~n~Du besitzt nicht den jeweiligen Job.");
PlayerTextDrawShow(playerid,INFOdraw[playerid][2]);
SetTimerEx("HideInfoBox",3000,0,"i",playerid);
return RemovePlayerFromVehicle(playerid);
}
printf("pTaxiDuty: %d", Spieler[playerid][pTaxiDuty]);
if(Spieler[playerid][pTaxiDuty] == 0)
{
ShowPlayerDialog(playerid, DIALOG_TAXIPICE, DIALOG_STYLE_INPUT, "{FFFF00}Taxi - Preis festlegen", "{FFFFFF}Lege den Preis für die Taxifahrt fest:", "Ok", "Abbrechen");
}
}Solange dir dort 0 angezeigt wird, siehst du den Dialog.
Setze dir beim Setzen auf 1 bitte auch einen Print, zum prüfen, ob das dort auch auf 1 gesetzt wird. Wenn ja, dann musst du anschließend alle Stellen prüfen, an denen pTaxiDuty im Wert verändert wird (print setzen) und dann die Stelle im Code anpassen, welche den Wert wieder auf 0 setzt (das findest du durch die prints raus).Dann klappt es auch.
-
Danke Dir Jeffry Habe Es Gefunden
Habe noch ne Frage wie kann ich das so machen wenn ich aus dem taxi der duty ist austeige und ein anderen nehme das da der dialog kommt und der andere taxi wieder zurück spawnt wie kann ich das machen MfG Lui
-
Beim Beantworten des Dialogs die Fahrzeug-ID auslesen und speichern. Und davor eben abfragen, ob eine Fahrzeug-ID gespeichert ist und diese dann respawnen.
-
kann ich beispiel bekommen MfG
-
C
Alles anzeigenif (taxifare > 150 || taxifare < 50) { ShowPlayerDialog(playerid, DIALOG_TAXI_ENTER, DIALOG_STYLE_INPUT, "{FFFF00}Taxi - Preis festlegen", "{FFFFFF}Lege den Preis für die Taxifahrt fest:", "Ok", "Abbrechen"); return SendClientMessage(playerid, 0xFF0000FF, "[TAXI] Der Preis muss zwischen 50 und 150$ liegen."); } new oldvehicleid = GetPVarInt(playerid, "taxiid"); new vehicleid = GetPlayerVehicleID(playerid); if (oldvehicleid > 0 && vehicleid != oldvehicleid) SetVehicleToRespawn(oldvehicleid); SetPVarInt(playerid, "taxiid", vehicleid); SetPVarInt(playerid, "taxifare", taxifare);
Allerdings kann es dann natürlich passieren, dass in der Zeit jemand anderes das alte Taxi nutzt, man muss also viele Dinge dabei noch beachten.
-
geht nicht was du mir jetzt geschikt hast
-
"Geht nicht" reicht mir nicht, was geht nicht?