Jeffry:
Ich habe jetzt leider ein kleines Problem, mit dem ich nicht weiter komme.
Undzwar wollte ich den Gametext in Textdraws machen, mit dem Inhalt
Gast/Fahrer
Preis
Kilometer
Nunja es klappt eigentlich auch, bloß wird für den Beifahrer den Name vom Fahrer nicht angezeigt.
Beziehungsweiße das ganze Textdraw fehlt, es steht auch kein "Fahrer:" da.
Problem und unwissenheit Nr2:
Wenn der Taxifahrer aussteigt, und wieder einsteigt läuft das System weiter, der Textdraw verschwindet nicht und steigt er wieder ein, dann setzt es fort.
Wenn aber der Beifahrer aussteigt ist es vorbei, ist das Absichtlich so?
Wenn der Taxifahrer aussteigt sollte das System beendet werden und wenn der Beifahrer aussteigt ebenso.
Noch dazu wenn ich garnicht /fahren gemacht habe, kommt der Textdraw trotzdem bloß der Preis ist 0, dass sollte eigentlich nicht so sein..
Falls du was nicht verstehst, schreib einfach
Code:
ocmd:fahren(playerid,params[])
{
new preis,say[80];
if(sscanf(params, "d",preis)) return SendClientMessage(playerid, info,"Benutze: /fahren [PREIS]");
if(SpielerInfo[playerid][pTeam] != 4 && SpielerInfo[playerid][pDuty] != 4) return SendClientMessage(playerid, error, "Du bist kein Taxifahrer oder nicht im Dienst!");
if(preis > 200 || preis < 1) return SendClientMessage(playerid, warn, "Preis muss zwischen 1$ und 200$ liegen!");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, error, "Du musst in einem Auto sitzen!");
player_preis[playerid]=preis;
format(say,sizeof say,"%s ist nun mit dem Taxi unterwegs |Preis: %d$|",SpielerName(playerid),player_preis[playerid]);
SendClientMessageToAll(taxi,say);
return 1;
}
//Am liebsten würde ich hier eine Variable auf 1 setzen, die dann abgefragt wird und so verwindert wird das der Textdraw angezeigt wird, aber wie?
public check_taxi(playerid,fahrerid)
{
new say[128],say1[128],say2[128],say3[128], kosten, Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
new Float:dist = floatsqroot(((player_pos[playerid][0]-x)*(player_pos[playerid][0]-x))+((player_pos[playerid][1]-y)*(player_pos[playerid][1]-y))+((player_pos[playerid][2]-z)*(player_pos[playerid][2]-z)));
player_distance[playerid]+=dist;
player_pos[playerid][0] = x;
player_pos[playerid][1] = y;
player_pos[playerid][2] = z;
payed[playerid] = floatround(player_distance[playerid]/500.0) * player_preis[fahrerid] + player_preis[fahrerid];
new geld = GetPlayerMoney(playerid);
if(geld < kosten) return RemovePlayerFromVehicle(playerid), SendClientMessage(playerid, warn, "Du hast nicht genug Geld!"),SendClientMessage(fahrerid, info, "Spieler hat nicht genug Geld!");
if(payed[playerid] > oldpayed[playerid])
{
kosten = payed[playerid] - oldpayed[playerid];
oldpayed[playerid] = payed[playerid];
fkm[playerid] += 1;
GivePlayerMoney(playerid,-kosten);
GivePlayerMoney(fahrerid,kosten);
}
//_______________Fahrer______________//
new fname[MAX_PLAYER_NAME];
GetPlayerName(fahrerid,fname,sizeof(fname));
PlayerTextDrawShow(fahrerid, Textwarn[fahrerid]);
PlayerTextDrawShow(fahrerid, Textstatus[fahrerid]);
PlayerTextDrawShow(fahrerid, Textzustand[fahrerid]);
PlayerTextDrawShow(fahrerid, Job[fahrerid]);
PlayerTextDrawShow(fahrerid, Job1[fahrerid]);
PlayerTextDrawShow(fahrerid, StatusJob[fahrerid]);
format(say,sizeof say,"~w~Gast: ~y~%s",SpielerName(playerid));
format(say1,sizeof say1,"~w~Gehalt: ~g~%d$",payed[playerid]);
format(say2,sizeof say2,"~w~Status: ~y~Taxi-System");
format(say3,sizeof say3,"~w~Kilometer: ~y~%d",fkm[playerid]);
PlayerTextDrawSetString(fahrerid,Textwarn[fahrerid],say);
PlayerTextDrawSetString(fahrerid, Textzustand[fahrerid],say1);
PlayerTextDrawSetString(fahrerid,StatusJob[fahrerid],say2);
PlayerTextDrawSetString(fahrerid,Textstatus[fahrerid],say3);
//________________Passagier____________//
PlayerTextDrawShow(playerid, Textwarn[playerid]);
PlayerTextDrawShow(playerid, Textstatus[playerid]);
PlayerTextDrawShow(playerid, Textzustand[playerid]);
PlayerTextDrawShow(playerid, Job[playerid]);
PlayerTextDrawShow(playerid, Job1[playerid]);
PlayerTextDrawShow(playerid, StatusJob[playerid]);
format(say,sizeof say,"~w~Fahrer: ~y~%s ",fname);
format(say1,sizeof say1,"~w~Kosten: ~r~%d$",payed[playerid]);
format(say2,sizeof say2,"~w~Status: ~y~Taxi-System");
format(say3,sizeof say3,"~w~Kilometer: ~y~%d",fkm[playerid]);
PlayerTextDrawSetString(playerid,Textwarn[playerid],say);
PlayerTextDrawSetString(playerid,Textzustand[playerid],say1);
PlayerTextDrawSetString(playerid,StatusJob[playerid],say2);
PlayerTextDrawSetString(playerid,Textstatus[playerid],say3);
return 1;
}
Und nun eigentlich, bei ExitVehicle sollte alles auf 0 sein und der Textdraw verschwinden, jedoch denke ich das der Timer noch im gange ist und er deshalb wieder angezeigt wird(er geht kurz weg, dann kommt er wieder)
public OnPlayerExitVehicle(playerid, vehicleid)
{
PlayerTextDrawHide(playerid, Textwarn[playerid]);
PlayerTextDrawHide(playerid, Textstatus[playerid]);
PlayerTextDrawHide(playerid, Textzustand[playerid]);
PlayerTextDrawHide(playerid, Job[playerid]);
PlayerTextDrawHide(playerid, Job1[playerid]);
PlayerTextDrawHide(playerid, StatusJob[playerid]);
PlayerTextDrawHide(playerid, Tacho1[playerid]);
PlayerTextDrawHide(playerid, Tacho2[playerid]);
PlayerTextDrawHide(playerid, Tacho3[playerid]);
PlayerTextDrawHide(playerid, CarFahrzeug[playerid]);
PlayerTextDrawHide(playerid, CarTankart[playerid]);
PlayerTextDrawHide(playerid, CarSpeed[playerid]);
PlayerTextDrawHide(playerid, CarKmh[playerid]);
PlayerTextDrawDestroy(playerid, MotorIMG[playerid]);
payed[playerid]=0;
player_preis[playerid]=0;
player_taxi[playerid]=0;
fkm[playerid] = 0;
PlayerTextDrawHide(playerid, Textwarn[playerid]);
PlayerTextDrawHide(playerid, Textstatus[playerid]);
PlayerTextDrawHide(playerid, Textzustand[playerid]);
PlayerTextDrawHide(playerid, Job[playerid]);
PlayerTextDrawHide(playerid, Job1[playerid]);
PlayerTextDrawHide(playerid, StatusJob[playerid]);
return 1;
}
Falls ein Code fehlt, ich reiche ihn dir nach.
Danke!
Mit freundlichen Grüßen