Ich hoffe es kann mir jemand helfen. Es handelt sich um das allgemein unbeliebte Busfahrersystem mit mehreren Linien. Habe jetzt inzwischen 4 Wochen daran probiert und gefummelt, aber es will einfach nicht so laufen wie ich das gerne hätte
Ich will dass er die CPs von nur einer Linie aus dem Enum herausliest, und auch "verarbeitet". Bei der OnPlayerEnterCheckpoint sollen so mit Hilfe der ID der Linie die CPs erfasst und erstellt werden. Hätte ich nur eine Linie für ich das wie MrMonat in seinem TUT machen, aber ich will etwas mehr ohne dabei einen Haufen Zeilen für jede einzelne Linie zu schreiben
Betroffene Quellcode:
enum busInfo{
bid,
name[64],
skill,
income
}
enum busstationInfo{
lid,
Float:l_x,
Float:l_y,
Float:l_z,
stationname[64],
l_id
}
new blInfo[][busInfo] = {
{1,"C1 Los Santos",1,1600}, //Buslinie 1
{2,"L1 Red County",2,2100} //Buslinie 2
};
new bsInfo[][busstationInfo] ={
//C1 Los Santos
//Citylinie C1
{0,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"},
{0,1492.7709,-1735.4004,13.5162,"Stadthalle"},
{0,1824.7155,-1654.6996,13.5162,"Club Alhambra"},
{0,1999.0885,-1468.8470,13.5239,"County General Hospital"},
{0,2098.6843,-1721.6963,13.5221,"Idlewood"},
{0,2321.6360,-1662.3466,14.0043,"GrooveStreet"},
{0,2240.4653,-1381.0345,23.9642,"Jefferson Church"},
{0,1936.8986,-1132.5551,25.3708,"Glen Park"},
{0,1463.1041,-1030.8983,23.7896,"Opera House"},
{0,1186.9722,-935.7852,42.8822,"Burger Shot North"},
{0,794.3947,-1352.1207,13.5213,"Market Station"},
{0,334.2658,-1538.9817,33.3820,"Rodeo"},
{0,863.7578,-1592.1945,13.4894,"Los Santos Marina"},
{0,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"},
//Buslinie L1
{1,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"},
{1,412.2734,-1699.2111,9.2966,"Santa Maria Beach"},
{1,120.6130,-1535.1813,7.6868,"Los Santos Rodeo"},
{1,-108.3504,-1162.1759,2.4750,"Flint County"},
{1,-200.9118,-315.8221,1.2331,"Blueberry Industriepark"},
{1,42.1276,-213.2097,1.5676,"Blueberry Transport AG"},
{1,235.9211,-16.5521,1.5301,"Blueberry North"},
{1,701.3684,311.4853,19.9844,"Hampton Burns"},
{1,1296.1891,319.0197,19.5087,"Montgomery"},
{1,2290.5161,60.8486,26.4356,"Palomino Creek"},
{1,1551.5598,120.3831,29.5524,"Red County"},
{1,678.4969,-582.1321,16.2911,"Dillimore"},
{1,794.7361,-1351.5454,13.4874,"Los Santos Market Station"},
{1,863.7578,-1592.1945,13.4894,"Los Santos Marina"},
{1,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"}
};
public OnPlayerEnterCheckpoint(playerid)
{
if(pInfo[playerid][onjob])
{
new vID = GetPlayerVehicleID(playerid);
if(GetPVarInt(playerid, "bus") == vID)
{
new cpID = GetPVarInt(playerid, "c1lossantos");
if(IsPlayerInRangeOfPoint(playerid,5,bsInfo[cpID][l_x], bsInfo[cpID][l_y], bsInfo[cpID][l_z]))
{
cpID++;
if(cpID >= sizeof(bsInfo))
{
pInfo[playerid][bank] += 200;
pInfo[playerid][skill1] += 1;
DisablePlayerCheckpoint(playerid);
Update3DTextLabelText(busline[vID],COLOR_WHITE,"Leerfahrt");
SendClientMessage(playerid,COLOR_BLUE,"((Job)) Du hast die Cityline 1 Los Santos beendet und bekommst einen Skillpunkt und 200 $ beim nächsten Payday gutgeschrieben.");
SetPVarInt(playerid, "c1lossantos", 0);
SetPVarInt(playerid, "bus", 0);
pInfo[playerid][onjob] =false;
}
else
{
SetPlayerCheckpoint(playerid, bsInfo[cpID][l_x], bsInfo[cpID][l_y], bsInfo[cpID][l_z], 5);
SetPVarInt(playerid, "c1lossantos", cpID);
}
}
}
else
{
SendClientMessage(playerid,COLOR_BLUE,"((Info)) Du sitzt nicht im Fahrzeug, mit dem du die Linie gestartet hast.");
SetPVarInt(playerid, "c1lossantos", 0);
SetPVarInt(playerid, "bus", 0);
pInfo[playerid][onjob] =false;
DisablePlayerCheckpoint(playerid);
}
return 1;
}
DisablePlayerCheckpoint(playerid);
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_SUBMISSION)
{
if(!IsPlayerInAnyVehicle(playerid))return 1;
if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR_YELLOW,"((Info)) Du bist nicht der Fahrer eines Fahrzeugs!");
for(new i=0; i<sizeof(BusVehs); i++)
{
if(GetPlayerVehicleID(playerid) == BusVehs[i])
{
if(pInfo[playerid][onjob]==true)
{
pInfo[playerid][onjob]=false;
SendClientMessage(playerid,COLOR_BLUE,"((Info)) Du bist jetzt nicht mehr auf Linie!");
Update3DTextLabelText(busline[i],COLOR_WHITE,"Leerfahrt");
DisablePlayerCheckpoint(playerid);
return 1;
}
else
{
new str[128];
format(str,sizeof(str),"%s\t[%i]\t%i $\n%s\t[%i]\t%i $\nEventfahrt\t[0]\t0 $[Wird vom Eventbetreiber bezahlt]",blInfo[0][name],blInfo[0][skill],blInfo[0][income],blInfo[1][name],blInfo[1][skill],blInfo[1][income]);
ShowPlayerDialog(playerid,DIALOG_BUSLINE,DIALOG_STYLE_TABLIST,"Buslinien",str,"Schliessen","Okay");
return 1;
}
}
}
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==DIALOG_BUSLINE)
{
if(listitem==0)
{
for(new i=0; i<sizeof(BusVehs); i++)
{
if(GetPlayerVehicleID(playerid) == BusVehs[i])
{
pInfo[playerid][onjob]=true;
new buslinie = 1;
new vID = GetPlayerVehicleID(playerid);
SetPVarInt(playerid, "bus", vID);
SendClientMessage(playerid,COLOR_BLUE,"((Info)) Du bist jetzt auf der Linie 'C1 Los Santos' unterwegs!");
Update3DTextLabelText(busline[i],COLOR_TURQUOISE,"C1 Los Santos");
SetPlayerCheckpoint(playerid, bsInfo[0][l_x], bsInfo[0][l_y], bsInfo[0][l_z], 5);
new text[128];
format(text,sizeof(text),"Nächste Haltestelle: %s",bsInfo[blInfo[buslinie][bid]][stationname]);´ //Hier soll er eigentlich die Ansagen machen aber es kommt nichts
SendClientMessage(playerid,COLOR_TURQUOISE,text);
SetPVarInt(playerid, "c1lossantos", 0);
SetPVarInt(playerid, "linec1",buslinie);
}
}
}
if(listitem==1)
{
for(new i=0; i<sizeof(BusVehs); i++)
{
if(GetPlayerVehicleID(playerid) == BusVehs[i])
{
pInfo[playerid][onjob]=true;
new buslinie = 2;
new vID = GetPlayerVehicleID(playerid);
SetPVarInt(playerid, "bus", vID);
SendClientMessage(playerid,COLOR_BLUE,"((Info)) Du bist jetzt auf der Linie 'L1 Red County' unterwegs!");
Update3DTextLabelText(busline[i],COLOR_TURQUOISE,"L1 Red County");
SetPlayerCheckpoint(playerid, bsInfo[0][l_x], bsInfo[0][l_y], bsInfo[0][l_z], 4);
SetPVarInt(playerid, "l1redcounty", 0);
SetPVarInt(playerid, "linel1",buslinie);
}
}
}
if(listitem==2)
{
//Eventfahrt
if(eventactive==false) return SendClientMessage(playerid,COLOR_BLUE,"((Info)) Kein Event ist aktiv!");
for(new i=0; i<sizeof(BusVehs); i++)
{
if(GetPlayerVehicleID(playerid) == BusVehs[i])
{
pInfo[playerid][onjob]=true;
SendClientMessage(playerid,COLOR_BLUE,"((Info)) Du bist jetzt auf der Linie 'Eventfahrt' unterwegs!");
Update3DTextLabelText(busline[i],COLOR_ORANGE,"Eventfahrt");
}
}
}
}
return 1;
Ich hoffe jemand hatte eine Lösung und kann mir ein wenig unter die Arme greifen, den ich denke er könnte allen hilfreich sein!
Grüße Addra
Fehlermeldung:
Keine Fehler/Warnings
Logs:
[mysql]
Keine Log
[/mysql]