kann ich es auch so machen?
Nein.
Entweder das Gegenteil:
new Fraktion[MAX_FRAKTIONEN+1][FraktionDaten];
oder wirklich so, wie ich es geschrieben habe mit dem -1
kann ich es auch so machen?
Nein.
Entweder das Gegenteil:
new Fraktion[MAX_FRAKTIONEN+1][FraktionDaten];
oder wirklich so, wie ich es geschrieben habe mit dem -1
//EDIT: Hat sich erledigt, habe eine effiziente Loesung gefunden
Ich nutze nun fuer jede Teamvariable, egal ob Bett, Farbe etc. ein eigenes Array, damit geht das deutlich simpler.
Die Array Variante klappt prima.
So, habe folgende Frage.
Habe aktuell ein Kommando mit welchem ich ein Bett eines gegnerischen Teams vernichten kann, d.h. dass die BettID != gPlayerTeamSelection[playerid] ist.
Dabei checke ich, dass das Bett nicht das Bett des eigenen Teams ist, und das Bett nicht bereits zuvor vernichtet wurde.
Dabei habe ich aktuell diesen fetten klumpen, und den wuerde ich gerne reduzieren.
if(strcmp(cmdtext, "/blowup", true) == 0 && GameHasStarted == 1)
{
for(new i = 0; i < sizeof(beds); i++)
{
new Float:health;
GetPlayerHealth(playerid,health);
if(running !=1 && IsPlayerInRangeOfPoint(playerid,3.0,beds[i][0],beds[i][1],beds[i][2]) && health > 0 && !IsPlayerInAnyVehicle(playerid)) // In this script we deal with players only
{
if((i == 0 && gPlayerTeamSelection[playerid] == FIRST_TEAM) || (i == 1 && gPlayerTeamSelection[playerid] == SECOND_TEAM) || (i == 2 && gPlayerTeamSelection[playerid] == THIRD_TEAM) || (i == 3 && gPlayerTeamSelection[playerid] == FOURTH_TEAM) || (i == 4 && gPlayerTeamSelection[playerid] == FIFTH_TEAM) || (i == 5 && gPlayerTeamSelection[playerid] == SIXTH_TEAM))
return SendClientMessage(playerid, COLOR_WHITE, "SERVER: You cannot blow up the bed of your own team!");
running = 1;
PlayerInfo[playerid][pBeds]=GetPlayerScore(playerid);
SetTimer("BlowUpThisBed", bombtimer, false);
if(i == 0 && BED_STATE_TEAM_ONE !=-1 && BED_STATE_TEAM_ONE !=-2 )
{
BED_STATE_TEAM_ONE=-1;
SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#FIRST_TEAM_COLOR_TAG);
}
if(i == 1 && BED_STATE_TEAM_TWO !=-1 && BED_STATE_TEAM_TWO !=-2 )
{
BED_STATE_TEAM_TWO=-1;
SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#SECOND_TEAM_COLOR_TAG);
}
#if defined TEAMSIZE
#if TEAMSIZE >=3
if(i == 2 && BED_STATE_TEAM_THREE !=-1 && BED_STATE_TEAM_THREE !=-2 )
{
BED_STATE_TEAM_THREE=-1;
SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#THIRD_TEAM_COLOR_TAG);
}
#endif
#endif
#if defined TEAMSIZE
#if TEAMSIZE >=4
if(i == 3 && BED_STATE_TEAM_FOUR !=-1 && BED_STATE_TEAM_FOUR !=-2 )
{
BED_STATE_TEAM_FOUR=-1;
SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#FOURTH_TEAM_COLOR_TAG);
}
#endif
#endif
#if defined TEAMSIZE
#if TEAMSIZE >=5
if(i == 4 && BED_STATE_TEAM_FIVE !=-1 && BED_STATE_TEAM_FIVE !=-2 )
{
BED_STATE_TEAM_FIVE=-1;
SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#FIFTH_TEAM_COLOR_TAG);
}
#endif
#endif
#if defined TEAMSIZE
#if TEAMSIZE >=6
if(i == 5 && BED_STATE_TEAM_SIX !=-1 && BED_STATE_TEAM_SIX !=-2 )
{
BED_STATE_TEAM_SIX=-1;
SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#SIXTH_TEAM_COLOR_TAG);
}
#endif
#endif
PlayerInfo[playerid][pBeds]+=1;
SendClientMessage(playerid, COLOR_WHITE, "SERVER: Planted Bomb Successfully. Lets Blow This Bed Up!");
SetPlayerScore(playerid, GetPlayerScore(playerid) + 1);
SendClientMessage(playerid, COLOR_WHITE, "SERVER: Keep Running! Bed Will Blow Up In 5 seconds!");
GetPlayerPos(playerid, x1, y1, z1);
ApplyAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 4.0, 1, 0, 0, 1, 1);
for(new k = 0; k < MAX_PLAYERS; k++)
{
PlayerPlaySound(k,7416,x1,y1,z1);
}
CountDownTimer = SetTimer("CountDown", 1000, true);
new Float:dist = GetDistance(beds[i][0],beds[i][1],beds[i][2],x1,y1,z1);
printf("Distance to closest bed: %f, Index: %d", dist, i);
return 1;
}
}
return 0;
}
return 1;
}
Alles anzeigen
public BlowUpThisBed()
{
CreateExplosion(x1, y1, z1, 7, 10.0);//'heavy' explosion close to bed
CreateExplosion(x1, y1, z1, 9, 10.0);
running=0;
printf("Blow Up This Bed called");
if(BED_STATE_TEAM_ONE == -1)
{
BED_STATE_TEAM_ONE = -2;
SendTeamMessage(FIRST_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!");
new adstring[64];
format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",FIRST_TEAM_COLOR_TAG);
SendClientMessageToAll(-1,adstring);
GangZoneHideForAll(TEAM_ZONE_ONE);
}
if(BED_STATE_TEAM_TWO == -1)
{
BED_STATE_TEAM_TWO = -2;
SendTeamMessage(SECOND_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!");
new adstring[64];
format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",SECOND_TEAM_COLOR_TAG);
SendClientMessageToAll(-1,adstring);
GangZoneHideForAll(TEAM_ZONE_TWO);
}
#if defined TEAMSIZE
#if TEAMSIZE >= 3
if(BED_STATE_TEAM_THREE == -1)
{
BED_STATE_TEAM_THREE = -2;
SendTeamMessage(THIRD_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!");
new adstring[64];
format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",THIRD_TEAM_COLOR_TAG);
SendClientMessageToAll(-1,adstring);
GangZoneHideForAll(TEAM_ZONE_THREE);
}
#endif
#endif
#if defined TEAMSIZE
#if TEAMSIZE >= 4
if(BED_STATE_TEAM_FOUR == -1)
{
BED_STATE_TEAM_FOUR = -2;
SendTeamMessage(FOURTH_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!");
new adstring[64];
format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",FOURTH_TEAM_COLOR_TAG);
SendClientMessageToAll(-1,adstring);
GangZoneHideForAll(TEAM_ZONE_FOUR);
}
#endif
#endif
#if defined TEAMSIZE
#if TEAMSIZE >= 5
if(BED_STATE_TEAM_FIVE == -1)
{
BED_STATE_TEAM_FIVE = -2;
SendTeamMessage(FIFTH_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!");
new adstring[64];
format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",FIFTH_TEAM_COLOR_TAG);
SendClientMessageToAll(-1,adstring);
GangZoneHideForAll(TEAM_ZONE_FIVE);
}
#endif
#endif
#if defined TEAMSIZE
#if TEAMSIZE == 6
if(BED_STATE_TEAM_SIX == -1)
{
BED_STATE_TEAM_SIX = -2;
SendTeamMessage(SIXTH_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!");
new adstring[64];
format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",SIXTH_TEAM_COLOR_TAG);
SendClientMessageToAll(-1,adstring);
GangZoneHideForAll(TEAM_ZONE_SIX);
}
#endif
#endif
}
Alles anzeigen
Da habe ich versucht das ganze nun zu reduzieren, indem ich fuer die Bedobjekte ein Array erstelle, und da habe ich mir dann eine Funktion gebaut IsPlayerInRangeOfBed.
BedArray[FIRST_TEAM]= CreateObject(1794,268.1000100,1881.5000000,-31.4000000,0.0000000,0.0000000,0.0000000); //object(low_bed_3) (1) // Team Grey
BedArray[SECOND_TEAM]= CreateObject(1798,434.5000000,2546.8999000,15.2000000,0.0000000,0.0000000,268.0000000); //object(swank_bed_1) (1) // Team Blue
BedArray[THIRD_TEAM]= CreateObject(1801,-773.5999800,2421.3000000,156.1000100,0.0000000,0.0000000,0.0000000); //object(swank_bed_4) (1) // Team Red
IsPlayerInRangeOfBed(playerid,range)
{
new k = sizeof(BedArray);
while (k --> 0)
{
new Float:px, Float:py, Float:pz, Float:ox, Float:oy, Float:oz;
GetObjectPos(BedArray[k],ox,oy,oz);
GetPlayerPos(playerid,px,py,pz);
new Float:dist = floatabs(px,py,pz,ox,oy,oz);
if(dist == range || dist < range)
{
return k;
}
return -1;
}
}
Alles anzeigen
Aber geht das effizienter? Sollte ich die BED_STATEs eventuell auch in ein Array packen? Wie sollte das dann aufgebaut sein das Array? Eventuell ein Monodimensionales Array, bspw. BedStates[TEAMSIZE]?
Das ist mein jetziger Ansatz, gefaellt mir aber noch nicht ganz, und ist noch nicht komplett fertig, weil ich da wieder tausende BED_STATE Abfragen haben werde.
if(strcmp(cmdtext, "/blowup", true) == 0 && GameHasStarted == 1)
{
new Float:health;
GetPlayerHealth(playerid,health);
new bedteamid=IsPlayerInRangeOfBed(playerid,3.0);
if(running !=1 && bedteamid != -1 && health > 0 && !IsPlayerInAnyVehicle(playerid)) // In this script we deal with players only
{
if(bedteamid == gPlayerTeamSelection[playerid])
return SendClientMessage(playerid, COLOR_WHITE, "SERVER: You cannot blow up the bed of your own team!");
running = 1;
PlayerInfo[playerid][pBeds]=GetPlayerScore(playerid);
SetTimer("BlowUpThisBed", bombtimer, false);
if(BedStates[bedteamid] != 0)
{
SendClientMessageEx(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team %s ",GetTeamColorTag(bedteamid));
BedStates[bedteamid] = 0;
}
PlayerInfo[playerid][pBeds]+=1;
SendClientMessage(playerid, COLOR_WHITE, "SERVER: Planted Bomb Successfully. Lets Blow This Bed Up!");
SetPlayerScore(playerid, GetPlayerScore(playerid) + 1);
SendClientMessage(playerid, COLOR_WHITE, "SERVER: Keep Running! Bed Will Blow Up In 5 seconds!");
GetPlayerPos(playerid, x1, y1, z1);
ApplyAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 4.0, 1, 0, 0, 1, 1);
for(new k = 0; k < MAX_PLAYERS; k++)
{
PlayerPlaySound(k,7416,x1,y1,z1);
}
CountDownTimer = SetTimer("CountDown", 1000, true);
return 1;
}
return 0;
}
return 1;
}
Alles anzeigen
Jedoch muesste ich dann ueber CountDown die bedteamid die Teamid an CountDown, und von CountDown an BlowUpThisBed schicken.
Bei BlowUpThisBed wuerde ich die teamid des Bettes uebergeben, und so ca. 90 Zeilen sparen.
public BlowUpThisBed(teamid)
{
CreateExplosion(x1, y1, z1, 7, 10.0);//'heavy' explosion close to bed
CreateExplosion(x1, y1, z1, 9, 10.0);
running=0;
printf("Blow Up This Bed called");
if(BedStates[teamid] == 0)
{
SendTeamMessage(FIRST_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!");
new adstring[64];
format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",GetTeamColorTag(teamid));
SendClientMessageToAll(-1,adstring);
GangZoneHideForAll(TEAM_ZONE_ONE);
}
}
Alles anzeigen
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 Tanker oder Roadtrain.");
if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid, COLOR_WHITE, "Du hast dein Produkt Anhänger nicht angeschlossen!");
if(GetVehicleTrailer(GetPlayerVehicleID(playerid)) != 435) return SendClientMessage(playerid, COLOR_WHITE, "Du hast den falschen Anhänger. Du brauchst den Produkt Anhänger!");
if(sscanf(params, "i", int))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze {33AA33}/load [Menge]");
new money = int*15;
if(GetMoney(playerid) < money)return SendClientMessage(playerid, COLOR_WHITE, ERROR_MONEY);
if(int < 1 || int > 200)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst nur maximal 200 Produkte aufladen.");
if((int+Vehicle[GetVehicleTrailer(vehicleid)][vehProds]) > 200)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst nur maximal 200 Produkte aufladen.");
FreezePlayer(playerid);
SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Das Fahrzeug wird nun mit Produkten beladen.");
SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Die dauer ist von der Menge abhängig..");
SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Bitte warten...");
SetTimerEx("TransportProdukten", int*1, 0, "d", playerid);
Vehicle[GetVehicleTrailer(vehicleid)][vehProds] += int;
GiveMoney(playerid, -money);
Alles anzeigen
Hey,
Kurze frage habe den Trailer mit der ID 435 angehängt troz allem kommt der fehler?
if(GetVehicleTrailer(GetPlayerVehicleID(playerid)) != 435) return SendClientMessage(playerid, COLOR_WHITE, "Du hast den falschen Anhänger. Du brauchst den Produkt Anhänger!");
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