#include <a_samp>
#define MAX_FLUGHAEFEN 5
#define DODO_ID 593
#define NEVADA_ID 553
#define SHAMAL_ID 519
#define BEAGLE_ID 511
new Dodo[MAX_FLUGHAEFEN];
new Shamal[MAX_FLUGHAEFEN];
new Nevada[MAX_FLUGHAEFEN];
new Beagle[MAX_FLUGHAEFEN];
new Flughafen[MAX_PLAYERS] = {-1,...};
new FlughafenNr[MAX_PLAYERS];
new FlughafenName[MAX_FLUGHAEFEN][25];
new Strecke[MAX_PLAYERS];
enum Check
{
Float:x,
Float:y,
Float:z,
Float:size
};
//Die Flughäfen
new Float:Checkpoints[5][Check] = {
{1576.9788,1391.3984,10.8483, 10.0},//lva,0
{-1364.0537,-215.1572,14.1484, 10.0},//sfa,1
{-760.1149,1994.4023,5.4734,10.0},//sherman,2
{1726.6909,-2407.4905,13.5547,10.0},//ls,3
{2866.5273,1870.2122,14.1785,10.0}//rockshore,4
};
public OnFilterScriptInit()
{
Dodo[0]=1;
Dodo[1]=1;
Dodo[2]=1;
Dodo[3]=1;
Dodo[4]=1;
Shamal[0] = 1;
Shamal[1] = 1;
Shamal[2] = 1;
Shamal[3] = 1;
Shamal[4] = 1;
Nevada[0] = 1;
Nevada[1] = 1;
Nevada[2] = 1;
Nevada[3] = 1;
Beagle[0]=1;
Beagle[1]=1;
Beagle[2]=1;
Beagle[3]=1;
Beagle[4]=1;
FlughafenName[0] = "Name0";
FlughafenName[1] = "Name1";
FlughafenName[2] = "Name2";
FlughafenName[3] = "Name3";
FlughafenName[4] = "Name4";
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/work", true))
{
new vehid = GetPlayerVehicleID(playerid);
if(GetVehicleModel(vehid) != DODO_ID && GetVehicleModel(vehid) != NEVADA_ID && GetVehicleModel(vehid) != SHAMAL_ID && GetVehicleModel(vehid) != BEAGLE_ID) return SendClientMessage(playerid, 0xFF0000FF, "Error: Kein Flugzeug.");
new id = GetNearestAirport(playerid);
if(id == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: No Airports found (If you get this error use /admin to report this bug to an admin!).");
Flughafen[playerid] = id;
FlughafenNr[playerid] = 0;
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,Checkpoints[id][x],Checkpoints[id][y],Checkpoints[id][z],Checkpoints[id][size]);
new str[144];
format(str, sizeof(str), "Info: Flughafen %s (ID: %d) wird angezeigt. Erlaubte Flugzeuge:", FlughafenName[id], id);
SendClientMessage(playerid, 0x00FFFFFF, str);
if(Dodo[id] == 1) format(str, sizeof(str), "Dodo", str);
if(Shamal[id] == 1) format(str, sizeof(str), "%s, Shamal", str);
if(Nevada[id] == 1) format(str, sizeof(str), "%s, Nevada", str);
if(Beagle[id] == 1) format(str, sizeof(str), "%s, Beagle", str);
return SendClientMessage(playerid, 0x00FFFFFF, str);
}
return 0;
}
public OnPlayerEnterCheckpoint(playerid)
{
FlughafenNr[playerid]++;
if(FlughafenNr[playerid] == 1)
{
//kein Geld, dafür:
//Neuer Flughafen ...
new vehid = GetPlayerVehicleID(playerid);
if(GetVehicleModel(vehid) != DODO_ID && GetVehicleModel(vehid) != NEVADA_ID && GetVehicleModel(vehid) != SHAMAL_ID && GetVehicleModel(vehid) != BEAGLE_ID) return SendClientMessage(playerid, 0xFF0000FF, "Error: Kein Flugzeug.");
new id = GetRandomAirport(playerid);
if(id == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Kein Flughafen gefunden.");
Flughafen[playerid] = id;
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,Checkpoints[id][x],Checkpoints[id][y],Checkpoints[id][z],Checkpoints[id][size]);
Strecke[playerid] = floatround(GetPlayerDistanceFromPoint(playerid, Checkpoints[id][x],Checkpoints[id][y],Checkpoints[id][z]));
new str[144];
format(str, sizeof(str), "Info: Flughafen %s (ID: %d) wird angezeigt. Erlaubte Flugzeuge:", FlughafenName[id], id);
SendClientMessage(playerid, 0x00FFFFFF, str);
if(Dodo[id] == 1) format(str, sizeof(str), "Dodo", str);
if(Shamal[id] == 1) format(str, sizeof(str), "%s, Shamal", str);
if(Nevada[id] == 1) format(str, sizeof(str), "%s, Nevada", str);
if(Beagle[id] == 1) format(str, sizeof(str), "%s, Beagle", str);
return SendClientMessage(playerid, 0x00FFFFFF, str);
}
else
{
//Geld...und kein neuer Flughafen mehr:
FlughafenNr[playerid]=0;
Flughafen[playerid]=-1;
GivePlayerMoney(playerid,((Strecke[playerid]/1000)*1500)+25000);
}
return 1;
}
stock GetNearestAirport(playerid)
{
new Float:d = 2000000000.0, id = -1, veh = GetVehicleModel(GetPlayerVehicleID(playerid));
for(new i=0; i<MAX_FLUGHAEFEN; i++)
{
if(i == Flughafen[playerid]) continue;
new Float:tmp = GetPlayerDistanceFromPoint(playerid, Checkpoints[i][x],Checkpoints[i][y],Checkpoints[i][z]);
if(tmp < d)
{
if(veh == DODO_ID && Dodo[i] == 1 ||
veh == SHAMAL_ID && Shamal[i] == 1 ||
veh == BEAGLE_ID && Beagle[i] == 1 ||
veh == NEVADA_ID && Nevada[i] == 1) d = tmp, id = i;
}
}
return id;
}
stock GetRandomAirport(playerid)
{
new id = -1, veh = GetVehicleModel(GetPlayerVehicleID(playerid)), count;
for(new i=0; i<MAX_FLUGHAEFEN; i++)
{
if(veh == DODO_ID && Dodo[i] == 1 ||
veh == SHAMAL_ID && Shamal[i] == 1 ||
veh == BEAGLE_ID && Beagle[i] == 1 ||
veh == NEVADA_ID && Nevada[i] == 1) count++;
}
count = random(count)+1;
for(new i=0; i<MAX_FLUGHAEFEN; i++)
{
if(veh == DODO_ID && Dodo[i] == 1 ||
veh == SHAMAL_ID && Shamal[i] == 1 ||
veh == BEAGLE_ID && Beagle[i] == 1 ||
veh == NEVADA_ID && Nevada[i] == 1)
{
count--;
if(count == 0) id = i;
}
}
return id;
}
Hier bitte. Hat 5 Minuten gedauert das zu ändern.
Sollte funktionieren.