Guten Tag. Ich arbeite gerade an einem Nebenjob: Taxifahrer. Ich bin da schon sehr weit gekommen: Man kann sich den Job "Taxifahrer" am Arbeitsamt aussuchen und muss ihn dann am HQ des jeweiligen Jobs, also hier: Taxihq, annehmen. dann kann man in die Taxis rein, und muss mit /taxi in dienst gehen. Mit /service öffnet sich eine dialog list wo bisher nur Taxi steht. man kann nun wemm man taxi auswählt ein Taxi rufen. Wenn man nun Taxifahrer ist und im dienst ist und /taxiannehmen Id eingiebt, dann kann man den anruf entgegenehmen und es wird ein Checkpoint erstellt. Man hat nun 3 Minuten Zeit dort hinzufahren. alles wunderbar, läuft die Zeit ab, ist der Marker weg. wenn man nun angekommen ist, und den Kunden fahren möchte, soll es ja nicht Kostenlos sein. Doch ich weiß nicht wie ich das nun Machen kann, das nach einer bestimmten Zeit das Geld steigt solange man im Taxi ist und sobald er das Taxi verlässt ihm das Geld abgezogen und dem Taxifahrer das gegeben wird. Hier mein Taxisystem wie ich es bisher habe:
#define DIALOG_JOB 4
#define DIALOG_SERVICE 5
#define DIALOG_CANCEL 6
#define Team_Taxi 1
new taxiauto[30];
new ptaxi[MAX_PLAYERS];//ob er als Taxifahrer unterwegs ist
new needtaxi[MAX_PLAYERS];//ob er ein Taxi gerufen hat.
new taxicheck[MAX_PLAYERS];//taxicheckpoint
new taxicount[MAX_PLAYERS];//die 180 sekunden die ablaufen
forward taxicountdown(playerid);
public OnGameModeInit()
{
//autos:
taxiauto[0] = AddStaticVehicle(438,-2184.2031,306.3790,35.1450,359.8963,6,76); // sf taxi 1
taxiauto[1] = AddStaticVehicle(438,-2175.7793,306.3790,35.1453,359.4155,6,76); // sf taxi 2
taxiauto[2] = AddStaticVehicle(438,-2167.2241,306.3790,35.1445,0.2097,6,76); // sf taxi 3
taxiauto[3] = AddStaticVehicle(438,-2159.2292,306.3790,35.1447,359.1295,6,76); // sf taxi 4
taxiauto[4] = AddStaticVehicle(438,-2159.3430,293.5873,35.1450,180.1490,6,76); // sf taxi 5
taxiauto[5] = AddStaticVehicle(438,-2167.4221,293.5873,35.1456,178.9186,6,76); // sf taxi 6
taxiauto[6] = AddStaticVehicle(438,-2175.7351,293.5873,35.1449,179.5545,6,76); // sf taxi 7
taxiauto[7] = AddStaticVehicle(438,-2184.1580,293.5873,35.1449,179.2379,6,76); // sf taxi 8
taxiauto[8] = AddStaticVehicle(438,-2192.8640,293.5873,35.1448,180.1918,6,76); // sf taxi 9
taxiauto[9] = AddStaticVehicle(438,-2201.4214,293.5873,35.1450,179.0793,6,76); // sf taxi 10
taxiauto[10] = AddStaticVehicle(438,-2210.1338,293.5873,35.1452,180.6180,6,76); // sf taxi 11
taxiauto[11] = AddStaticVehicle(438,-2218.6157,293.5873,35.1451,179.8199,6,76); // sf taxi 12
taxiauto[12] = AddStaticVehicle(438,-2227.2312,293.5873,35.1450,179.8439,6,76); // sf taxi 13
taxiauto[13] = AddStaticVehicle(438,-2235.6106,293.5873,35.1449,178.4133,6,76); // sf taxi 14
taxiauto[14] = AddStaticVehicle(438,-2235.4609,306.3790,35.1452,359.6193,6,76); // sf taxi 15
taxiauto[15] = AddStaticVehicle(438,-2226.8684,306.3790,35.1445,0.3725,6,76); // sf taxi 16
taxiauto[16] = AddStaticVehicle(438,-2218.3547,306.3790,35.1451,359.8901,6,76); // sf taxi 17
taxiauto[17] = AddStaticVehicle(420,1777.1293,-1886.0105,13.1680,90.0721,6,1); // ls taxi 1
taxiauto[18] = AddStaticVehicle(420,1777.1293,-1890.0105,13.1660,90.1538,6,1); // ls taxi 2
taxiauto[19] = AddStaticVehicle(420,1777.1293,-1894.0105,13.1731,89.4291,6,1); // ls taxi 3
taxiauto[20] = AddStaticVehicle(420,1777.1293,-1898.0105,13.1649,89.1020,6,1); // ls taxi 4
taxiauto[21] = AddStaticVehicle(420,1777.1293,-1902.0105,13.1976,89.7102,6,1); // ls taxi 5
taxiauto[22] = AddStaticVehicle(420,1777.1293,-1906.0105,13.1642,89.5825,6,1); // ls taxi 6
taxiauto[23] = AddStaticVehicle(420,1777.1293,-1910.0105,13.1655,91.0562,6,1); // ls taxi 7
taxiauto[24] = AddStaticVehicle(420,1777.1293,-1914.0105,13.1650,89.2689,6,1); // ls taxi 8
taxiauto[25] = AddStaticVehicle(420,1777.1293,-1918.0105,13.1620,89.9900,6,1); // ls taxi 9
taxiauto[26] = AddStaticVehicle(420,1777.1293,-1922.0105,13.1652,89.8097,6,1); // ls taxi 10
taxiauto[27] = AddStaticVehicle(420,1777.1293,-1926.0105,13.1754,90.8608,6,1); // ls taxi 11
taxiauto[28] = AddStaticVehicle(420,1777.1293,-1930.0105,13.1731,90.5852,6,1); // ls taxi 12
taxiauto[29] = AddStaticVehicle(420,1777.1293,-1934.0105,13.1731,90.5852,6,1); // ls taxi 13
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/taxi", cmdtext, true, 10) == 0)
{
if(gTeam[playerid] == 1)
{
for(new j = 0;j<sizeof taxiauto;j++)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid == taxiauto[j])
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(ptaxi[playerid] == 0)
{
SendClientMessage(playerid,0xFFFFFFFF,"Du Kannst nun Taxianrufe mit /taxiannehmen entgegennehmen!");
ptaxi[playerid] = 1;
}
else
{
SendClientMessage(playerid,0xFFFFFFFF,"Du kannst nun keine Taxianrufe mehr engegennehmen!");
ptaxi[playerid] = 0;
}
}
}
}
}
}
if(strcmp("/service", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid,DIALOG_SERVICE,DIALOG_STYLE_LIST,"Service","Taxi","Wählen","Abbrechen");
}
if(strcmp("/cancel", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid,DIALOG_CANCEL,DIALOG_STYLE_LIST,"Was Wollen sie Canceln?","Taxi","Wählen","Abbrechen");
}
if(strcmp("/job", cmdtext, true, 10) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,2.5,-2169.5828, 252.3392, 35.3327))
{
if(gTeam[playerid] == 0)
{
ShowPlayerDialog(playerid,DIALOG_JOB,DIALOG_STYLE_LIST,"Wähle Dein Job","Taxifahrer\nBusfahrer\nZugführer","Okay","Abbrechen");
}
else
{
SendClientMessage(playerid,türkis,"Du hast gekündigt, mit /job kannst du dir einen neuen Job aussuchen!");
gTeam[playerid] = 0;
Update(playerid);
}
}
}
return 1;
}
dcmd_taxiannehmen(playerid,params[])
{
new pID;
if(sscanf(params, "u", pID))
{
return SendClientMessage(playerid,0xFF0000FF,"Benutzung: /taxiannehmen [ID]");
}
if(!IsPlayerConnected(pID))
{
return SendClientMessage(playerid,0xFF0000FF,"Ungültige Id!");
}
if(needtaxi[pID] == 0)
{
return SendClientMessage(playerid,0xFF0000FF,"Dieser Spieler benötigt kein Taxi!");
}
if(ptaxi[playerid] == 0)
{
return SendClientMessage(playerid,0xFF0000FF,"Du musst /taxi benutzten um Anrufe anzunehmen!");
}
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
{
return SendClientMessage(playerid,0xFF0000FF,"Du musst der Fahrer eines Taxi´s sein!");
}
if(taxicheck[playerid] == 1)
{
return SendClientMessage(playerid,0xFF0000FF,"Du hast bereits ein Anruf angenommen!");
}
else
{
new aname[MAX_PLAYER_NAME],bname[MAX_PLAYER_NAME],str1[256],str2[256];
GetPlayerName(playerid,aname,sizeof(aname));
GetPlayerName(pID,bname,sizeof(bname));
format(str1,sizeof(str1),"Sie haben den Anruf von %s (%d) angenommen, sie haben 3 Minuten Zeit!",bname, pID);
format(str2,sizeof(str2),"%s (%d) hat ihren Anruf angenommen und wird in kürze Eintreffen!",aname, playerid);
SendClientMessage(playerid,türkis,str1);
SendClientMessage(pID,türkis,str2);
needtaxi[pID] = 0;
new Float:x, Float:y, Float:z;
GetPlayerPos(pID,x,y,z);
SetPlayerCheckpoint(playerid,x,y,z,5);
taxicheck[playerid] = 1;
taxicount[playerid] = 181;
taxicountdown(playerid);
}
return 1;
}
public taxicountdown(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
taxicount[i]--;
if(taxicount[i] >= 2)
{
new str1[256];
format(str1,sizeof(str1),"~y~%d",taxicount[i]);
GameTextForPlayer(i,str1,1000,6);
SetTimer("taxicountdown",1000,0);
}
else
{
taxicheck[i] = 0;
DisablePlayerCheckpoint(i);
}
}
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
if(ptaxi[playerid] == 1)
{
ptaxi[playerid] = 0;
SendClientMessage(playerid,0xFFFFFFFF,"Sie können nun keine Anrufe mehr entgegennehmen!");
}
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
if(taxicheck[playerid] == 1)
{
taxicheck[playerid] = 0;
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid,0x00FF00FF,"Sie haben das Ziel erreicht!");
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_JOB)
{
if(response)
{
if(listitem == 0)
{
jobcheck[playerid] = 1;
SendClientMessage(playerid,türkis,"Begebe dich zu der markierten Postion um den Job Taxifahrer anzunehmen!");
SetPlayerCheckpoint(playerid,1761.8593,-1894.6744,13.5612,5);
}
if(listitem == 1)
{
jobcheck[playerid] = 2;
SendClientMessage(playerid,türkis,"Begebe dich zu der markierten Postion um den Job Busfahrer anzunehmen!");
SetPlayerCheckpoint(playerid,1209.6779,-1748.6970,13.5937,5);
}
if(listitem == 2)
{
jobcheck[playerid] = 3;
SendClientMessage(playerid,türkis,"Begebe dich zu der markierten Postion um den Job Zugführer anzunehmen!");
SetPlayerCheckpoint(playerid,1432.7725,2620.2307,11.3926,5);
}
}
}
if(dialogid == DIALOG_SERVICE)
{
if(response)
{
if(listitem == 0)
{
if(needtaxi[playerid] == 0)
{
new str1[256],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(str1,sizeof(str1),"%s (%d) Benötigt ein Taxi nahe %s. Benutzt /taxiannehmen, um den Anruf engenenzunehmen!",name, playerid ,ReturnPlayerZone(playerid));
needtaxi[playerid] = 1;
SendClientMessage(playerid,türkis,"Sie haben ein Taxi geruden, warten sie auf eine Antwort!");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(gTeam[i] == 1)
{
SendClientMessage(i,0x0000FFFF,str1);
}
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Sie haben bereits ein Taxi gerufen!");
}
}
}
}
if(dialogid == DIALOG_CANCEL)
{
if(response)
{
if(listitem == 0)
{
SendClientMessage(playerid,0xFFFFFFFF,"Taxianfrage gecancelt!");
needtaxi[playerid] = 0;
}
}
}
return 1;
}