Schreibt du deinen Code eigentlich absichtlich so verschachtelt, ich habe dir soo oft schon gezeigt wie du das schöner machen kannst.
Und wiiiiiieso startest du Schleifen immer ab 1???
Ich habe dir jetzt schon 1000x erklärt, dass Arrays in Pawn/C/Java/C#/C++/Javascript und allen anderen C ähnlichen Sprachen bei 0 beginnt.
Lässt du das ab 1 starten, überspringst du immer deinen 1. Eintrag..und eine Tankstelle wird nicht funktionieren
//Pack das mal oben in dein Skript:
#define SCME(%0,%1,%2,%3) format(string,sizeof(string),%2,%3),SCM(%0,%1,string)
//Alles andere schreib mal so:
if(Spieler[playerid][pFraktion] != 17) return SCM(playerid, COLOR_WHITE, ERROR_FRAKTION);
new veh = GetPlayerVehicleID(playerid), model = GetVehicleModel(veh), trailer = GetVehicleTrailer(veh);
if(model != 514 && model != 515) return SCM(playerid,0xAFAFAF,"Du befindest dich in einem ungültigen Fahrzeug.");
if(!IsTrailerAttachedToVehicle(veh)) return SCM(playerid, COLOR_WHITE, "{AFAFAF}Du hast dein Produkt Anhänger nicht angeschlossen!");
if(GetVehicleModel(trailer) != 584) return SCM(playerid, COLOR_WHITE, "{AFAFAF}Du hast den falschen Anhänger. Du brauchst den Tank Anhänger!");
new i = GetTankstelle(playerid);
if(i == -1) return SCM(playerid,0xAFAFAF,"Du befindest dich an keiner Tankstelle.");
new gebraucht = floatround(Tanke[i][tMaxLiterBenzin] - Tanke[i][tLiterBenzin]);
new kosten = Tanke[i][tBenzinAnkauf]*gebraucht;
if(Tanke[i][tKasse] < kosten) return SCM(playerid, COLOR_WHITE, "{AFAFAF}Die Tankstelle hat nicht genügend Geld für den Benzin.");
if(!gebraucht) return SCM(playerid, COLOR_WHITE, "{AFAFAF}Dieses Tankstelle benötigt keinen Benzin mehr.");
if(Vehicle[trailer][vehBenzin] > gebraucht)
{
Vehicle[trailer][vehBenzin] -= gebraucht, Tanke[i][tMaxLiterBenzin] += floatadd(gebraucht, Tanke[i][tLiterBenzin]);
SCME(playerid,-1,"{21DD00}Es konnten nur %d Liter Benzin abgeliefert werden, die Tankstelle ist voll.", gebraucht);
}
else Tanke[i][tMaxLiterBenzin] += Vehicle[trailer][vehBenzin], Vehicle[trailer][vehBenzin] = 0;
SCME(playerid,-1,"{21DD00}Gehalt: %d$", kosten);
SCME(playerid,-1,"{21DD00}Benzin: %d/2500", Vehicle[trailer][vehBenzin]);
UpdateTankLabel(i, Tanke[i][tOwned]);
Tanke[i][tKasse] -= kosten, GiveMoney(playerid, kosten);
//Und die Funktion haste dann
stock GetTankstelle(playerid)
{
for(new i; i<MAX_TANKEN; i++)
{
if(Tanke[i][tCreated] == 1 && IsPlayerInRangeOfPoint(playerid, 5.0, Tanke[i][tPickupX], Tanke[i][tPickupY], Tanke[i][tPickupZ])) return i;
}
return -1;
}
Alles anzeigen
Es ist wichtig Redundanz zu vermeiden.
Desweiteren hattest du da was beim else vertauscht, der Code löst schon mal ein Problem, was dir bei deinem vorherigen Code nicht aufgefallen ist.
Du sagst zwar es werden irgendwo viele Zahlen ausgegeben...aber du das nicht wo...was soll das? Sollen wir jetzt raten bei welcher Ausgabe das passiert?!?!
Gib mal präzise Infos, was genau ausgegeben wird...etc pp
Printe dir eventuell auch mal Werte und gib einen schönen Debug der Variablen an, dann kann man dir auch sofort helfen..
Immer diese halben Sachen und komischen Codes.
Generell könntest du dir soviel arbeit sparen, wenn du deine Systeme mal vernünftig auslagern würdest.
Ich wette bis zu 70% deiner Zeit verschwendest du damit redundanten Code zu schreiben.