wenn ich einsteige kommt der dialog dann gehe ich duty dann steige ich aus gehe in ein anderen taxi kommt kein diralog ändert sich auch nix MfG Lui
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
-
-
Der Codeschnipsel führt nicht dazu, dass kein Dialog mehr angezeigt wird.
-
Wie Kann ich das machen MfG
-
Entschuldige die späte Antwort, ich hatte unter der Woche leider keine Zeit.
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
Dann musst du den Code hierzu anpassen:
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)
{
Spieler[playerid][pTaxiVeh] = vehicleid;
ShowPlayerDialog(playerid, DIALOG_TAXIPICE, DIALOG_STYLE_INPUT, "{FFFF00}Taxi - Preis festlegen", "{FFFFFF}Lege den Preis für die Taxifahrt fest:", "Ok", "Abbrechen");
}
else if(vehicleid != Spieler[playerid][pTaxiVeh])
{
SetVehicleToRespawn(Spieler[playerid][pTaxiVeh]);
Spieler[playerid][pTaxiVeh] = vehicleid;
ShowPlayerDialog(playerid, DIALOG_TAXIPICE, DIALOG_STYLE_INPUT, "{FFFF00}Taxi - Preis festlegen", "{FFFFFF}Lege den Preis für die Taxifahrt fest:", "Ok", "Abbrechen");
}
}
Im enum noch "pTaxiVeh" aufnehmen.EDIT:
Habe den Code nochmal ausgebessert, bitte so verwenden. -
ein problem ist da noch wenn ich aussteige und wieder in den selben taxi einsteige kommt der dialog wieder ob wohl ich duty bin
-
Hast du die Anpassung nach meinem Edit übernommen? Wenn nicht, kopiere bitte den Code von oben nochmal.
-
Hey Leute das mit dem Dialog geht ja schon mall gans gut habe aber noch da ne frage wenn kein fahrer im taxi sietzt und hinten einer einsteigt wie kann ich das machen das der dan wieder raus geworden wird weil kein fahrer drin ist wie kann ich das machen Mfg Lui
if(newstate == PLAYER_STATE_PASSENGER)
{
SetPlayerArmedWeapon(playerid,0);
if(IsVehicleATaxi(vehicleid))
{
new driver = GetVehicleDriver(vehicleid);
if(Spieler[driver][pTaxiDuty] == 1)
{
if((GetACMoney(playerid) - taxifare) < 0)
{
TextDrawShowForPlayer(playerid,InfoSign);
PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~r~Info:~w~~n~Nicht genug Geld.");
PlayerTextDrawShow(playerid,INFOdraw[playerid][2]);
SetTimerEx("HideInfoBox",3000,0,"i",playerid);
return RemovePlayerFromVehicle(playerid);
}
Spieler[playerid][pTaxiBeifahrerPreis] = 0;
PlayerTextDrawShow(playerid,TAXOdraw[playerid][0]);
PlayerTextDrawShow(playerid,TAXOdraw[playerid][1]);
PlayerTextDrawSetString(playerid,TAXOdraw[playerid][0],"Fahrpreis: 0$");
format(string,sizeof(string),"Dienstpreis: %i$",taxifare);
PlayerTextDrawSetString(playerid,TAXOdraw[playerid][1],string);
format(string,sizeof(string),"Du bist in das Taxi von %s eingestiegen! Dienstpreis : %i$ (Dienstpreis + Fahrzeit alle 15 Sekunden)",SpielerName(driver),taxifare);
SCM(playerid,BLAU,string);
format(string,sizeof(string),"%s ist in dein Taxi eingestiegen! Dienstpreis : %i$ (Dienstpreis + Fahrzeit alle 15 Sekunden)",SpielerName(playerid),taxifare);
SCM(driver,BLAU,string);
Spieler[playerid][pTaxiSeat] = GetPlayerVehicleSeat(playerid);
Spieler[playerid][pTaxiTimer] = SetTimerEx("Taxometer",753,1,"ii",playerid,driver);
switch(GetPlayerVehicleSeat(playerid))
{
case 1:
{
format(string,sizeof(string),"%s %i$",SpielerName(playerid),Spieler[playerid][pTaxiBeifahrerPreis]);
PlayerTextDrawSetString(driver,TAXOdraw[driver][0],string);
}
case 2:
{
format(string,sizeof(string),"%s %i$",SpielerName(playerid),Spieler[playerid][pTaxiBeifahrerPreis]);
PlayerTextDrawSetString(driver,TAXOdraw[driver][2],string);
}
case 3:
{
format(string,sizeof(string),"%s %i$",SpielerName(playerid),Spieler[playerid][pTaxiBeifahrerPreis]);
PlayerTextDrawSetString(driver,TAXOdraw[driver][3],string);
}
}
}
} -
new driver = GetVehicleDriver(vehicleid);
zu:
new driver = GetVehicleDriver(vehicleid);
if(!IsPlayerConnected(driver))
{
TextDrawShowForPlayer(playerid,InfoSign);
PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~r~Info:~w~~n~Kein Taxifahrer im Taxi.");
PlayerTextDrawShow(playerid,INFOdraw[playerid][2]);
SetTimerEx("HideInfoBox",3000,0,"i",playerid);
return RemovePlayerFromVehicle(playerid);
} -
hey Jeffry wie kann ich das mit dem lockfüher machen wenn der erst im zug ist das der gast erst ab da in die wagongs einsteigen kann wie kann ich das machen
if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_PASSENGER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 570) //Enter modelid oder vehicleid abfragen
{
if(Spieler[playerid][pTicket] != true)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x,y,z);
SetPlayerPos(playerid,x+2,y+2,z+2);
Spieler[playerid][pTicket] = false;
SCM(playerid,GELB, "Du benötigst ein Ticket um mit dem Zug zu fahren!");
}
} -
Vor der Ticket-Abfrage:
new driver = GetVehicleDriver(vehicleid);
if(!IsPlayerConnected(driver))
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x,y,z);
SetPlayerPos(playerid,x+2,y+2,z+2);
Spieler[playerid][pTicket] = false;
return SCM(playerid,GELB, "Du musst auf den Lockführer warten!");
} -
das geht aber wenn der lockführer drin ist und der gast steigt in den wagong ein fligt der immer noch raus und sagt Du musst auf den Lockführer warten!
-
Wie sieht dein Code jetzt aus?
-
So
if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_PASSENGER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 570) //Enter modelid oder vehicleid abfragen
{
new driver = GetVehicleDriver(vehicleid);
if(!IsPlayerConnected(driver))
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x,y,z);
SetPlayerPos(playerid,x+2,y+2,z+2);
Spieler[playerid][pTicket] = false;
return SCM(playerid,GELB, "Du musst auf den Lockführer warten!");
}
if(Spieler[playerid][pTicket] != true)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x,y,z);
SetPlayerPos(playerid,x+2,y+2,z+2);
Spieler[playerid][pTicket] = false;
SCM(playerid,GELB, "Du benötigst ein Ticket um mit dem Zug zu fahren!");
}
} -
Versuche es so:
new driver = GetVehicleDriver(vehicleid);
zu:
new driver = GetVehicleDriver(GetPlayerVehicleID(playerid)); -
immer noch nicht der lockfüher sietzt drine wenn der user hinten einsteigt im wagong kommt immer noch Du musst auf den Lockführer warten!
-
Wie sieht deine GetVehicleDriver Funktion aus, kannst du diese bitte mal posten?
Wie erstellst du den Zug und die Wagons?
-
Zug[0]=AddStaticVehicleEx(538,1739.9657,-1958.2709,13.2438,270.7966,1,1,120);
stock IsVehAZug(vehicleid)
{
new result;
new model = GetVehicleModel(vehicleid);
switch(model)
{
case 537,538,570,569: result = model;
default: result = 0;
}
return result;
}
stock IsVehicleAZug(vehicleid)
{
for(new i=0;i<sizeof(Zug);i++)
{
if(vehicleid == Zug[i])
return 1;
}
return 0;
}
public ZughalteStelle(playerid,fahrt,nextbusstop)
{
new string[256];
switch(fahrt)
{
case 1:
{
SetPlayerCheckpoint(playerid,Zuglinie[nextbusstop][Xcp],Zuglinie[nextbusstop][Ycp],Zuglinie[nextbusstop][Zcp],Zuglinie[nextbusstop][CPSize]);
format(string,sizeof(string),"* Nächster Halt '%s'!",Zuglinie[nextbusstop][CheckPointText]);
ForEachPlayer(i)
{
if(IsPlayerConnected(i) && !IsPlayerNPC(i))
{
if(GetPVarInt(i,"Eingeloggt") == 1)
{
if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
{
if(IsPlayerInVehicle(i,GetPlayerVehicleID(playerid)))
{
if(i != playerid)
{
if((GetACMoney(i) - MAX_BUS_PRICE) < 0)
{
RemovePlayerFromVehicle(i);
}
else
{
ACMoney(i,-MAX_BUS_PRICE);
Spieler[playerid][pLohn] += MAX_BUS_PRICE;
SCM(i,REPORTACCEPTCOLOR,"Du musstes "#MAX_BUS_PRICE"$ für diese Haltestelle bezahlen.");
}
}
SCM(i,REPORTACCEPTCOLOR,string);
}
}
}
}
}
PlayerPlaySound(playerid,1058,0.0,0.0,0.0);
format(string,sizeof(string),#JobNameZug\n"Nächster Halt: %s\nZugfahrer: %s",Zuglinie[nextbusstop][CheckPointText],SpielerName(playerid));
for(new i=0; i<sizeof(Zug); i++)
{
UpdateDynamic3DTextLabelText(ZugLabel[i], ZUGFARBESYSTEM,string);
}
//TogglePlayerControllable(playerid,1);
return 1;
}
}
return print("ERROR: ZughalteStelle public nicht erkannt!");
}
COMMAND:fahre(playerid,params[])
{
//(CheckPermissions(playerid,Tutorial,Login,AFK,Prison,Friedhof,Death,Jail,Tazed,Cuffed)
if(CheckPermissions(playerid,true,true,true,true,true,true,true,true,true) == 1)return 1;
new vehicleid = GetPlayerVehicleID(playerid);
if(!isPlayerInJob(playerid,21))return SCM(playerid,ZUGFARBESYSTEM,"Du bist nicht in der jeweiligen Job.");
if(!IsVehicleAZug(GetPlayerVehicleID(playerid)))return SCM(playerid,ZUGFARBESYSTEM,"Du befindest dich in keinem Zug.");
if(GetPlayerVehicleSeat(playerid) != 0)return SCM(playerid,ZUGFARBESYSTEM,"Nicht der Fahrer des Fahrzeugs.");
{
if(IsVehicleAZug(vehicleid))
{
ShowPlayerDialog(playerid,DIALOG_JOB_STRECKEN_AUSWAHL,DIALOG_STYLE_LIST,"Buslinien",DialogZuglinie,"Auswählen","Abbrechen");
}
}
return 1;
}
if(IsVehicleAZug(vehicleid))
{
if(!isPlayerInJob(playerid,21))
{
new Float:x, Float:y, Float:z;
TextDrawShowForPlayer(playerid,InfoSign);
PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~r~Info:~w~~n~Du besitzt nicht den jeweiligen Job.");
PlayerTextDrawShow(playerid,INFOdraw[playerid][2]);
SCM(playerid,ZUGFARBESYSTEM,"Du besitzt nicht den jeweiligen Job.");
SetTimerEx("HideInfoBox",3000,0,"i",playerid);
GetPlayerPos(playerid,x,y,z);
SetPlayerPos(playerid,x+2,y+2,z+2);
return 1;
}
if(ZugCheckpointStatus[playerid] == -1)
{
//ShowPlayerDialog(playerid,DIALOG_JOB_STRECKEN_AUSWAHL,DIALOG_STYLE_LIST,"Buslinien",DialogBuslinie,"Auswählen","Abbrechen");
}
else
{
SCM(playerid,ZUGFARBESYSTEM,"Tipp /linie um in Dienst zu gehen.");
TextDrawShowForPlayer(playerid,InfoSign);
PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~r~Info:~w~~n~Fahre nun weiter die Haltestellen ab!");
PlayerTextDrawShow(playerid,INFOdraw[playerid][2]);
SetTimerEx("HideInfoBox",3000,0,"i",playerid);
KillTimer(JobTimer[playerid]);
}
}
if(isPlayerInJob(playerid,21) && IsVehicleAZug(vehicleid))//Zugfahrerjob
{
Spieler[playerid][WorkInJob] = 1;
SetPlayerCheckpoint(playerid,Zuglinie[0][Xcp],Zuglinie[0][Ycp],Zuglinie[0][Zcp],Zuglinie[0][CPSize]);
ZugCheckpointStatus[playerid] = 0;
SCM(playerid,ZUGFARBESYSTEM,"Fahre nun einzeln die Haltestellen ab! Ein Checkpoint wurde gesetzt.(/stopjob um abzubrechen)");
format(string,sizeof(string),#JobNameZug\n"Nächster Halt: %s\nZugfahrer: %s",Zuglinie[0][CheckPointText],SpielerName(playerid));
VehicleOnDuty[vehicleid] = true;
for(new i=0; i<sizeof(Zug); i++)
{
UpdateDynamic3DTextLabelText(ZugLabel[i], ZUGFARBESYSTEM,string);
}
return 1;
} -
Das hier hast du vergessen:
Wie sieht deine GetVehicleDriver Funktion aus, kannst du diese bitte mal posten?
-
if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_PASSENGER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 570) //Enter modelid oder vehicleid abfragen
{
new driver = GetVehicleDriver(GetPlayerVehicleID(playerid));
if(!IsPlayerConnected(driver))
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x,y,z);
SetPlayerPos(playerid,x+2,y+2,z+2);
Spieler[playerid][pTicket] = false;
return SCM(playerid,GELB, "Du musst auf den Lockführer warten!");
}
if(Spieler[playerid][pTicket] != true)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x,y,z);
SetPlayerPos(playerid,x+2,y+2,z+2);
Spieler[playerid][pTicket] = false;
SCM(playerid,GELB, "Du benötigst ein Ticket um mit dem Zug zu fahren!");
}
} -
Das ist nicht die Funktion, das ist die Nutzung.
Du müsstest irgendwo einen stock (etc) dazu haben, wie bei "IsVehicleAZug" zum Beispiel, das du oben gepostet hast.