Hoffe mir kann einer weiter helfen.
Tun wir mal so, als ob KI noch nicht erfunden wurde ![]()
Der Fehler liegt daran, dass du in deiner for-Schleife prüfst, ob er nicht an der Zapfsäule ist und returnst, da ist der Fehler, das beendet die Suche. Sprich, sobald er nicht an der ersten Zapfsäule ist, wird dieser Befehl nie funktionieren. Wenn müsstest du mit einem continue; arbeiten.
Am Einfachsten die Schleife auslagern:
C++
stock GetFuelStationIndex(playerid)
{
for(new i; i < sizeof(Buildings_GS[]); i++)
{
if(Buildings_GS[i][gs_Type] == 3 && IsPlayerInRangeOfPoint(playerid, 5.0, Buildings_GS[i][gs_Pos][0], Buildings_GS[i][gs_Pos][1], Buildings_GS[i][gs_Pos][2]))
{
return i;
}
}
return -1;
}
COMMAND:fill(playerid, params[]) {
if(!IsPlayerLoggedIn(playerid))return MSG_SEND_NOLOGIN;
new i = GetFuelStationIndex(playerid);
if(i == -1) return SendClientMessage(playerid, -1, MSG_ERROR"An keiner Zapfäule!");
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, -1, MSG_INFO"Du musst der Fahrer eines Fahrzeuges sein!");
new vid=GetPlayerVehicleID(playerid);
if(Vehicle[vid][VehicleParams][0]) return SendClientMessage(playerid, -1, MSG_INFO"Der Motor des Fahrzeuges muss abgeschaltet sein!");
if(Vehicle[vid][v_Filled]) return SendClientMessage(playerid, -1, MSG_INFO"Du bist bereits am Tanken!!");
if(Vehicle[vid][v_Tank] >= Vehicle[vid][v_Tank_MAX]) return SendClientMessage(playerid, -1, MSG_INFO"Dein Tank ist bereits voll!");
if(Buildings[Buildings_GS[i][gs_bID]][b_Products] < (Vehicle[vid][v_Tank_MAX]-Vehicle[vid][v_Tank])) return SendClientMessage(playerid, -1, MSG_INFO"Die Tankstelle hat nicht genügend Benzin mehr!!");
if(Player[playerid][p_Cash] < Vehicle[vid][v_Tank_MAX]-Vehicle[vid][v_Tank] * Buildings[Buildings_GS[i][gs_bID]][b_Tank_Price]) {
return SendClientMessage(playerid, -1, MSG_INFO"Du hast nicht genügend Geld dabei!");
}
TogglePlayerControllable(playerid,0);
Vehicle[vid][v_TankFillTimer] = SetTimerEx("Timer_Vehicle_Fillup", 500, true, "iiii",Buildings_GS[i][gs_bID],vid,(Vehicle[vid][v_Tank_MAX]-Vehicle[vid][v_Tank]) * Buildings[Buildings_GS[i][gs_bID]][b_Tank_Price],Vehicle[vid][v_Tank_MAX]-Vehicle[vid][v_Tank]);
SendClientMessage(playerid, -1, "Fahrzeug wird betanken...");
Vehicle[GetPlayerVehicleID(playerid)][v_Filled] = true;
return 1;
}
Alles anzeigen