[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • //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.



    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.



    C
    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





    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.

    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.


    7 Mal editiert, zuletzt von Sub Royal ()


  • 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!");

  • 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? :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Du hast auch die Klammern falsch gesetzt...oh man..


    C
    if(GetVehicleModel(GetVehicleTrailer(GetPlayerVehicleID(playerid))) != 435) return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast den falschen Anhänger. Du brauchst den Produkt Anhänger!");

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Danke hab ich auch gesehn :D


    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..

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Beitrag von Sub Royal ()

    Dieser Beitrag wurde von Canna aus folgendem Grund gelöscht: Dann schreib sie auch nacher ().
  • 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.


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • 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.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • 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 ;)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • 25.000 sagt er mir aus wen ich lade:





    LOG:


    Materialien geladen: 25000

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen