den Trailer mit der ID 435 angehängt
In diesem Fall müsste die vehicleid 435 sein.
Du willst aber bestimmt, dass die modelid 435 ist ![]()
Also häng ein GetVehicleModel noch drum herum ![]()
den Trailer mit der ID 435 angehängt
In diesem Fall müsste die vehicleid 435 sein.
Du willst aber bestimmt, dass die modelid 435 ist ![]()
Also häng ein GetVehicleModel noch drum herum ![]()
if(GetVehicleModel(GetVehicleTrailer(GetPlayerVehicleID(playerid)) != 435)) return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast den falschen Anhänger. Du brauchst den Produkt Anhänger!");
Meinst du so? Wen ja der fehler bleibt gleich :o
Wen ja der fehler bleibt gleich :o
Dann printe dir doch mal, was er ausgibt in der Konsole...
new veh = GetPlayerVehicleID(playerid);
new trailer = GetVehicleTrailer(veh);
new model = GetVehicleModel(trailer);
printf("veh: %d | trailer: %d | model: %d",veh,trailer,model);
Was sagt er denn dann? ![]()
veh: 199 | trailer: 200 | model: 435
ocmd:unload(playerid, params[])
{
new vehicleid = GetPlayerVehicleID(playerid);
if(IsPlayerInRangeOfPoint(playerid, 5.0, 1563.4137, -1694.5535, 5.8906))
{
if(GetVehicleModel(vehicleid) == 428)
{
new string[128];
new money = Vehicle[vehicleid][vehMats]*6;
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du befindest dich in keinem Lieferwagen.");
if(!(Spieler[playerid][pFraktion] == 17))return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION);
if(Frak[1][frakEisen] + Vehicle[vehicleid][vehMats] > 250000)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Soviele Materialien kannst du hier nicht abladen.");
if(Vehicle[GetPlayerVehicleID(playerid)][vehMats] <= 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast keine Materialien geladen.");
Frak[1][frakEisen] += (Vehicle[vehicleid][vehMats]);
format(string, sizeof(string), "{6E7271}Verbrecher mit /arrest einsperren\n\n{7EF201}Waffenkammer (LSPD)\n%d/250000\nMaterialien", Frak[1][frakEisen]);
Update3DTextLabelText(lspd3d, COLOR_WHITE, string);
format(string, sizeof(string), "{21DD00}Gehalt: %d$", money);
SendClientMessage(playerid, COLOR_WHITE, string);
format(string, sizeof(string), "{21DD00}Materialien: %d/50000", Vehicle[vehicleid][vehMats]);
SendClientMessage(playerid, COLOR_WHITE, string);
Spieler[playerid][pBank] += money;
format(string, sizeof(string), "{33AA33}* Staatskasse hat dir %d$ überwiesen. Betreff: Materialien abgeliefert (%d)", money, Vehicle[vehicleid][vehMats]);
SendClientMessage(playerid, COLOR_WHITE, string);
Vehicle[vehicleid][vehMats] -= Vehicle[vehicleid][vehMats];
}
}
return 1;
}
Alles anzeigen
Danke hab ich auch gesehn ![]()
So habe mal eine Frage das Funktioniert soweit...
Aber das Problem ist wen ich es ablade werden z.b die 30k Mats ersetzt mit den was ich abgeladen habe?
Ich verstehe nicht ganz warum das nicht so klappt..
Vehicle[vehicleid][vehMats] -= Vehicle[vehicleid][vehMats];
Was glaubst du, macht diese Zeile? ![]()
Aber das Problem ist wen ich es ablade werden z.b die 30k Mats ersetzt mit den was ich abgeladen habe?
Was genau..willst du uns damit sagen?
Frak[1][frakEisen] += (Vehicle[vehicleid][vehMats]); -> Soll in die Mats kasse was ich abgeladen habe. Wen angenommen 245.000 drinn sind in der Kasse sollte ja nur 5000 Materialien eingeladen werden.
wen ich z.b 30.000 geladen habe wird das ja komplett ersetzt in 30.000 sind aufeinmal die 245.000 Materialien weg.
Vehicle[vehicleid][vehMats] -= Vehicle[vehicleid][vehMats]; Sollte dazu dienen das die Abgeladenen Materialien die ich abgeladen habe abziehen. So das man noch schauen kann wieviel in den Fahrzeug noch drinn sind.
-> Hinfahren Materialien abladen heißt wen ich 5000 Materialien ablade sind so gesehn wen ich 30.000 geladen habe sind automatisch dann noch 25.000 drinn oder etwa nicht?
Vehicle[vehicleid][vehMats] -= Vehicle[vehicleid][vehMats];
Also da steht ja quasi x -= x;
Eine äquivalente andere Schreibweise wäre x = x-x
Daraus resultiert logischerweise x=0 was du da machst.
Hinfahren Materialien abladen heißt wen ich 5000 Materialien ablade sind so gesehn wen ich 30.000 geladen habe
Wie willst du denn 5000 abladen, wenn du gar keinen Parameter angibst.
Ich verstehe,
Nunja möchte anstatt /unload (Menge)
einfach nur hinfahren und die menge was das biz braucht abladen. Wen zuviel geladen ist bleibt der Rest bzw sollte es bleiben. Schließlich bezahlt man dafür so gesehn.
einfach nur hinfahren und die menge was das biz braucht abladen. Wen zuviel geladen ist bleibt der Rest bzw sollte es bleiben. Schließlich bezahlt man dafür so gesehn.
Dann musst du das berechnen.
new gebraucht = 250000-Frak[1][frakEisen]; //Das ist der Wert der benötigt wird, zur vollen Menge
if(Vehicle[vehicleid][vehMats] > gebraucht)
{
//Wenn er mehr dabei hat, als gebraucht wird
Vehicle[vehicleid][vehMats] -= gebraucht;
Frak[1][frakEisen] += gebraucht;
}
else
{
//Wenn er weniger dabei hat
Vehicle[vehicleid][vehMats] = 0;
Frak[1][frakEisen] += Vehicle[vehicleid][vehMats];
}
Alles anzeigen
ocmd:unload(playerid, params[])
{
new string[128];
new vehicleid = GetPlayerVehicleID(playerid);
if(IsPlayerInRangeOfPoint(playerid, 5.0, 1563.4137, -1694.5535, 5.8906))
{
if(GetVehicleModel(vehicleid) == 428)
{
if(!(Spieler[playerid][pFraktion] == 17))return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION);
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du befindest dich in keinem Lieferwagen.");
if(Vehicle[GetPlayerVehicleID(playerid)][vehMats] <= 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast keine Materialien geladen.");
new gebraucht = 250000-Frak[1][frakEisen];
new money = Vehicle[vehicleid][vehMats]*6;
if(Vehicle[vehicleid][vehMats] > gebraucht)
{
Vehicle[vehicleid][vehMats] -= gebraucht;
Frak[1][frakEisen] += gebraucht;
format(string, sizeof(string), "{6E7271}Verbrecher mit /arrest einsperren\n\n{7EF201}Waffenkammer (LSPD)\n%d/250000\nMaterialien", Frak[1][frakEisen]);
Update3DTextLabelText(lspd3d, COLOR_WHITE, string);
format(string, sizeof(string), "{21DD00}Gehalt: %d$", money);
SendClientMessage(playerid, COLOR_WHITE, string);
format(string, sizeof(string), "{21DD00}Materialien: %d/50000", Vehicle[vehicleid][vehMats]);
SendClientMessage(playerid, COLOR_WHITE, string);
Spieler[playerid][pBank] += money;
format(string, sizeof(string), "{33AA33}* Staatskasse hat dir %d$ überwiesen. Betreff: Materialien abgeliefert (%d)", money, gebraucht);
SendClientMessage(playerid, COLOR_WHITE, string);
}
else
{
Frak[1][frakEisen] += gebraucht;
format(string, sizeof(string), "{6E7271}Verbrecher mit /arrest einsperren\n\n{7EF201}Waffenkammer (LSPD)\n%d/250000\nMaterialien", Frak[1][frakEisen]);
Update3DTextLabelText(lspd3d, COLOR_WHITE, string);
printf("Fraktion 1 +: Materialien in die Fraktion: %d", Frak[1][frakEisen]);
format(string, sizeof(string), "{21DD00}Gehalt: %d$", money);
SendClientMessage(playerid, COLOR_WHITE, string);
printf("Fraktion 1 +: Geld für die Lieferung: %d", money);
format(string, sizeof(string), "{21DD00}Materialien: %d/50000", Vehicle[vehicleid][vehMats]);
SendClientMessage(playerid, COLOR_WHITE, string);
printf("Fraktion 1 +: Materialien im Fahrzeug: %d", Vehicle[vehicleid][vehMats]);
Spieler[playerid][pBank] += money;
format(string, sizeof(string), "{33AA33}* Staatskasse hat dir %d$ überwiesen. Betreff: Materialien abgeliefert (%d)", money, gebraucht);
SendClientMessage(playerid, COLOR_WHITE, string);
printf("Fraktion 1 +: Geld wurde überweisen: %d, Materialien hat er abgeladen: %d", money, gebraucht);
}
}
}
return 1;
}
Alles anzeigen
Hab es soweit angepasst.
Aber wen die Fraktion nur 5.000 brauchen liefert er trotzdem 25k ab?
Hab es soweit angepasst.
Nein, du hast vergessen beim else Vehicle[vehicleid][vehMats] = 0; zu setzen..so wie in meinem Code.
Aber wen die Fraktion nur 5.000 brauchen liefert er trotzdem 25k ab?
Bist du dir denn sicher, dass nur 5k gebraucht werden?
Printe dir doch mal gebraucht und schau, welcher Wert da berechnet wird.
Und ich hoffe dir ist klar, dass du angegeben hast, dass in das Lager 250k passen.
habe schon 245.000 rein gemacht per Datenbank.
Das wird ausgegeben:
LOG:
Fraktion 1 +: Materialien in die Fraktion: 250000
Fraktion 1 +: Geld für die Lieferung: 150000
Fraktion 1 +: Materialien im Fahrzeug: 25000
Fraktion 1 +: Geld wurde überweisen: 150000, Materialien hat er abgeladen: 250000
CODE:
Frak[1][frakEisen] += gebraucht;
format(string, sizeof(string), "{6E7271}Verbrecher mit /arrest einsperren\n\n{7EF201}Waffenkammer (LSPD)\n%d/"#MAX_MATERIALIEN"\nMaterialien", Frak[1][frakEisen]);
Update3DTextLabelText(lspd3d, COLOR_WHITE, string);
printf("Fraktion 1 +: Materialien in die Fraktion: %d", Frak[1][frakEisen]);
format(string, sizeof(string), "{21DD00}Gehalt: %d$", money);
SendClientMessage(playerid, COLOR_WHITE, string);
printf("Fraktion 1 +: Geld für die Lieferung: %d", money);
format(string, sizeof(string), "{21DD00}Materialien: %d/50000", Vehicle[vehicleid][vehMats]);
SendClientMessage(playerid, COLOR_WHITE, string);
printf("Fraktion 1 +: Materialien im Fahrzeug: %d", Vehicle[vehicleid][vehMats]);
Spieler[playerid][pBank] += money;
format(string, sizeof(string), "{33AA33}* Staatskasse hat dir %d$ überwiesen. Betreff: Materialien abgeliefert (%d)", money, gebraucht);
SendClientMessage(playerid, COLOR_WHITE, string);
printf("Fraktion 1 +: Geld wurde überweisen: %d, Materialien hat er abgeladen: %d", money, gebraucht);
Ja, stimmt ja alles.
Er hat 250k abgeladen, das bedeutet, in der Frak[1][frakEisen] das war leer.
Anscheinend hast du da einen Fehler beim Laden ![]()
printe dir das mal, bevor du da was einlädst.
bzw zeig mal wie du es lädst ![]()
25.000 sagt er mir aus wen ich lade:
if(IsPlayerInRangeOfPoint(playerid, 5.0, 2188.6016, -2253.3787, 13.4629) && IsPlayerInAnyVehicle(playerid))
{
if(GetVehicleModel(vehicleid) == 428)
{
if(!(Spieler[playerid][pFraktion] == 17))return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION);
if(sscanf(params, "i", int))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze {33AA33}/load [Menge]");
if(int < 1 || int > 50000)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst nur maximal 50000 Materialien aufladen.");
new money = int*4;
if(GetMoney(playerid) < money)return SendClientMessage(playerid, COLOR_WHITE, ERROR_MONEY);
if((int+Vehicle[GetVehicleModel(vehicleid)][vehMats]) > 50000)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst nur maximal 50000 Materialien aufladen.");
FreezePlayer(playerid);
SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Das Fahrzeug wird nun mit Materialien beladen.");
SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Die dauer ist von der Menge abhängig..");
SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Bitte warten...");
SetTimerEx("TransportMaterialien", int*1, 0, "d", playerid);
Vehicle[vehicleid][vehMats] += int;
printf("Materialien geladen: %d", Vehicle[vehicleid][vehMats]);
GiveMoney(playerid, -money);
}
return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du befindest dich in keinem Transporter.");
}
Alles anzeigen
LOG:
Materialien geladen: 25000
in der Frak[1][frakEisen] das war leer.
Anscheinend hast du da einen Fehler beim Laden
Liest du eig was ich schreibe? xD
Und noch was...
der Log oben, stimmt doch überhaupt nicht mit dem Code...ein auf der vorherigen Seite...
Also printe dir das und zeig nochmal deinen aktuellen Befehl ![]()
Frak[1][frakEisen] <- Negativ ich kann mich ausrüsten also sind Materialien vorhanden.
habe dies schon getestet wen keine vorhanden sind kann man sich nicht ausrüsten.
Verstehe nicht was genau du gerade willst das ist der Log wen ich das Geladen habe:
ocmd:load(playerid, params[])
{
new int;
new vehicleid = GetPlayerVehicleID(playerid);
if(IsPlayerInRangeOfPoint(playerid, 5.0, 2188.6016, -2253.3787, 13.4629) && IsPlayerInAnyVehicle(playerid))
{
if(GetVehicleModel(vehicleid) == 428)
{
if(!(Spieler[playerid][pFraktion] == 17))return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION);
if(sscanf(params, "i", int))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze {33AA33}/load [Menge]");
if(int < 1 || int > 50000)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst nur maximal 50000 Materialien aufladen.");
new money = int*4;
if(GetMoney(playerid) < money)return SendClientMessage(playerid, COLOR_WHITE, ERROR_MONEY);
if((int+Vehicle[GetVehicleModel(vehicleid)][vehMats]) > 50000)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst nur maximal 50000 Materialien aufladen.");
FreezePlayer(playerid);
SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Das Fahrzeug wird nun mit Materialien beladen.");
SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Die dauer ist von der Menge abhängig..");
SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Bitte warten...");
SetTimerEx("TransportMaterialien", int*1, 0, "d", playerid);
Vehicle[vehicleid][vehMats] += int;
printf("Materialien geladen: %d", int);
GiveMoney(playerid, -money);
}
}
return 1;
}
Alles anzeigen
Der Log wen ich die Materialien geladen habe:
Materialien geladen: 15000
So das ist der Command für das Abladen:
ocmd:unload(playerid, params[])
{
new string[128];
new vehicleid = GetPlayerVehicleID(playerid);
if(IsPlayerInRangeOfPoint(playerid, 5.0, 1563.4137, -1694.5535, 5.8906))
{
if(GetVehicleModel(vehicleid) == 428)
{
if(!(Spieler[playerid][pFraktion] == 17))return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION);
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du befindest dich in keinem Lieferwagen.");
if(Vehicle[GetPlayerVehicleID(playerid)][vehMats] <= 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast keine Materialien geladen.");
new gebraucht = Frak[1][frakMaxEisen]-Frak[1][frakEisen];
new money = Vehicle[vehicleid][vehMats]*6;
if(Vehicle[vehicleid][vehMats] > gebraucht)
{
Vehicle[vehicleid][vehMats] -= gebraucht;
Frak[1][frakEisen] += gebraucht;
format(string, sizeof(string), "{6E7271}Verbrecher mit /arrest einsperren\n\n{7EF201}Waffenkammer (LSPD)\n%d/%d\nMaterialien", Frak[1][frakEisen], Frak[1][frakMaxEisen]);
Update3DTextLabelText(lspd3d, COLOR_WHITE, string);
printf("Fraktion 1 - 1: Gebraucht: %d", gebraucht);
format(string, sizeof(string), "{21DD00}Gehalt: %d$", money);
SendClientMessage(playerid, COLOR_WHITE, string);
format(string, sizeof(string), "{21DD00}Materialien: %d/50000", Vehicle[vehicleid][vehMats]);
SendClientMessage(playerid, COLOR_WHITE, string);
Spieler[playerid][pBank] += money;
format(string, sizeof(string), "{33AA33}* Staatskasse hat dir %d$ überwiesen. Betreff: Materialien abgeliefert (%d)", money, gebraucht);
SendClientMessage(playerid, COLOR_WHITE, string);
printf("Fraktion 1 - 2: Gebraucht: %d", gebraucht);
}
else
{
Vehicle[vehicleid][vehMats] -= gebraucht;
Frak[1][frakEisen] += gebraucht;
format(string, sizeof(string), "{6E7271}Verbrecher mit /arrest einsperren\n\n{7EF201}Waffenkammer (LSPD)\n%d/%d\nMaterialien", Frak[1][frakEisen], Frak[1][frakMaxEisen]);
Update3DTextLabelText(lspd3d, COLOR_WHITE, string);
printf("+ Fraktion 1 - 2: Gebraucht: %d", gebraucht);
format(string, sizeof(string), "{21DD00}Gehalt: %d$", money);
SendClientMessage(playerid, COLOR_WHITE, string);
format(string, sizeof(string), "{21DD00}Materialien: %d/50000", Vehicle[vehicleid][vehMats]);
SendClientMessage(playerid, COLOR_WHITE, string);
Spieler[playerid][pBank] += money;
format(string, sizeof(string), "{33AA33}* Staatskasse hat dir %d$ überwiesen. Betreff: Materialien abgeliefert (%d)", money, gebraucht);
SendClientMessage(playerid, COLOR_WHITE, string);
printf("+ Fraktion 1 - 1: Gebraucht: %d", gebraucht);
Vehicle[vehicleid][vehMats] -= gebraucht;
}
}
}
return 1;
}
Alles anzeigen
So das sind beide Command.
Wie bereits ich geschreieben habe habe ich den fehler schon beim laden gesucht da liegt kein fehler da die anzeige genauso daran liegt (3DTextLabel)
Da steht es genauso in der DB: 245.000 und maximale Materialien 250.0000
So verstehe jetzt nicht ganz wo wie was? printe doch schon und er gibt mir immer 0 aus siehe da:
Fraktion 1 - 1: Gebraucht: 0
Fraktion 1 - 2: Gebraucht: 0
So das sind beide Command.
Jaaa und die sind falsch.
Wie ist es möglich...dass du es verkackt hast 4 Zeilen zu kopieren?!?!?!?!
else
{
Vehicle[vehicleid][vehMats] -= gebraucht;
Frak[1][frakEisen] += gebraucht;
Das hast du da stehen.
else
{
Vehicle[vehicleid][vehMats] = 0;
Frak[1][frakEisen] += Vehicle[vehicleid][vehMats];
Das hab ich da stehen...fällt dir irgendwie..irgendwas auf?!?!?!
Negativ ich kann mich ausrüsten also sind Materialien vorhanden.
habe dies schon getestet wen keine vorhanden sind kann man sich nicht ausrüsten.
Habe ich dich gefragt ob du dich ausrüsten kannst oder ob ich wissen will OB da was drinnen ist?
Nein ich habe dich gefragt WIE VIELE GENAU geladen werden und dafür musst du das printen.
Wie bereits ich geschreieben habe habe ich den fehler schon beim laden gesucht da liegt kein fehler da die anzeige genauso daran liegt (3DTextLabel)
Da steht es genauso in der DB: 245.000 und maximale Materialien 250.0000
Das hattest du nicht geschrieben, aber gut zu wissen.
Ja du solltest natürlich noch prüfen ob gebraucht 0 ist, dann ist ja klar, dass er nichts mehr benötigt und du kannst eine Fehlermeldung ausgeben.