Angepinnt [SAMMELTHREAD] Kleine Scripting Fragen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • reaL. schrieb:

    Ich habe das mal mit dem Pfeil gemacht so du es gesagt hast das Problem war Bloß dass beim überfahren mit der Maus der Pfeil Rot wird.
    Kann ich das irgendwie machen dass der trotzdem Unsichtbar bleibt aber das andere Trotzdem Rot ?
    Das ginge, aber dann wäre der Pfeil nicht mehr clickable, eben nur der ganze Rest, der rot wird, wäre das in Ordnung?

    Wenn ja, kannst einfach die TextSize auf 0 setzen von dem Pfeil :)


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Chiller.502 schrieb:

    Könnte mir einer helfen bei einem sicheren Bansystem?
    Das gibt es nicht.


    reaL. schrieb:

    Ich habe schon probiert die Farbe beim Anklickbaren durchsichtig zu machen aber dann ist das überall so das ist der Scheiß.
    Achso meinst du das, ja dann geht das nicht.
    Momentan ist es so, dass wenn du mehrere TextDraws anklicken magst, dann leuchten diese alle in der selben Farbe, sry.

    Dachte du meintest, du hast TextDraws die du nicht anklicken willst, bei denen kannst du dafür sorgen, dass du sie nicht anklicken kannst und dann leuchten sie auch nicht xD


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Hey,

    Habe kurz eine Frage wie lasse ich am besten von jeder tankstelle den Namen auslesen lasse also nach ID nach?


    enum:

    Quellcode

    1. enum e_Tanke
    2. {
    3. tCreated,
    4. Float:tPickupX,
    5. Float:tPickupY,
    6. Float:tPickupZ,
    7. tPickup,
    8. tBesitzer[MAX_PLAYER_NAME],
    9. tOwned,
    10. tName[32],
    11. tPreis,
    12. tTeilhaber[MAX_PLAYER_NAME],
    13. tLock,
    14. tPreisProLiter,
    15. Float:tLiter,
    16. Float:tMaxLiter,
    17. tdbID,
    18. tKasse,
    19. Text3D:tText,
    20. tBenzinAnkauf,
    21. }
    22. new Tanke[MAX_TANKEN][e_Tanke];
    Alles anzeigen





    Quellcode

    1. ocmd:lieferung(playerid)
    2. {
    3. new vehicleid = GetPlayerVehicleID(playerid);
    4. if((GetVehicleModel(vehicleid) == 515) && GetVehicleModel(GetVehicleTrailer(vehicleid)) == 435)
    5. {
    6. #define getProdukts(%0) (Biz[%0][bMaxProdukte]-Biz[%0][bProdukte])
    7. new string[550];
    8. format(string,sizeof(string),"Ammunation LS\t\t\t\tBenötigt: %i Produkte\nBurgershot Hauptsitz\t\t\tBenötigt: %i Produkte\nClucking Bell Hauptsitz\t\t\tBenötigt: %i Produkte\n",
    9. getProdukts(1), getProdukts(2), getProdukts(3));
    10. format(string,sizeof(string),"%sPizza Stack Hauptsitz\t\t\tBenötigt: %i Produkte\n24/7 Supermarkt Hauptsitz\t\tBenötigt: %i Produkte\nPaintball Arena\t\t\t\tBenötigt: %i Produkte\nAdvertise Biz\t\t\t\tBenötigt: %i Produkte\n",
    11. string, getProdukts(4), getProdukts(5), getProdukts(6), getProdukts(7));
    12. ShowPlayerDialog(playerid, DIALOG_FIRMEN, DIALOG_STYLE_LIST,"Transport GmbH - Firmen Übersicht",string,"GPS","Schließen");
    13. #undef getProdukts
    14. }
    15. else
    16. {
    17. if((GetVehicleModel(vehicleid) == 514) && GetVehicleModel(GetVehicleTrailer(vehicleid)) == 584)
    18. {
    19. #define getProdukts(%0) (floatround(Tanke[%0][tMaxLiter]-floatround(Tanke[%0][tLiter])))
    20. new string[550];
    21. format(string,sizeof(string),"Polizei LS\t\t\t\tBenötigt: %d Liter\nIdlewood Tanke\t\t\t\tBenötigt: %d Liter\nLS Airport Tanke\t\t\tBenötigt: %d Liter\n",
    22. getProdukts(1), getProdukts(2), getProdukts(3));
    23. format(string,sizeof(string),"%sVerona Oil Tanke\t\t\tBenötigt: %d Liter\nTemple Tanke\t\t\t\tBenötigt: %d Liter\nFlint County\t\t\t\tBenötigt: %d Liter\n",
    24. string, getProdukts(4), getProdukts(5), getProdukts(6));
    25. format(string,sizeof(string),"%sEaster Basin Tanke\t\t\tBenötigt: %d Liter\nDoherty Tanke\t\t\t\tBenötigt: %d Liter\nJuniper Hollow Tanke\t\t\tBenötigt: %d Liter",
    26. string, getProdukts(7), getProdukts(8), getProdukts(9));
    27. ShowPlayerDialog(playerid, DIALOG_TANKSTELLEN, DIALOG_STYLE_LIST,"Transport GmbH - Tankstellen Übersicht",string,"GPS","Schließen");
    28. #undef getProdukts
    29. }
    30. }
    31. return 1;
    32. }
    Alles anzeigen



    Der Befehl dafür.
  • Dr. Frauenarzt schrieb:

    von jeder tankstelle den Namen auslesen lasse also nach ID nach?
    Was ist das für ein Deutsch? hahaha xD

    Aber ja einfach mit einer Schleife?

    C-Quellcode

    1. for(new i; i<sizeof(Tanke); i++)
    2. {
    3. Tanke[i][tName] //Hier haste jetzt den Tankstellennamen von allen Tankstellen xD
    4. }


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Ja,

    Ich habe es falsch ausgedrückt bin total müde sry.

    Quellcode

    1. ocmd:lieferung(playerid)
    2. {
    3. #define getProdukts(%0) (floatround(Tanke[%0][tMaxLiter]-floatround(Tanke[%0][tLiter])))
    4. #define getTankName(%0) (Tanke[%0][tName])
    5. new string[550];
    6. format(string,sizeof(string),"%s\t\t\t\tBenötigt: %d Liter\n%s\t\t\t\tBenötigt: %d Liter\n%s\t\t\tBenötigt: %d Liter\n",
    7. getTankName(1), getProdukts(1), getTankName(2), getProdukts(2), getTankName(3), getProdukts(3));
    8. format(string,sizeof(string),"%sVerona Oil Tanke\t\t\tBenötigt: %d Liter\nTemple Tanke\t\t\t\tBenötigt: %d Liter\nFlint County\t\t\t\tBenötigt: %d Liter\n",
    9. string, getProdukts(4), getProdukts(5), getProdukts(6));
    10. format(string,sizeof(string),"%sEaster Basin Tanke\t\t\tBenötigt: %d Liter\nDoherty Tanke\t\t\t\tBenötigt: %d Liter\nJuniper Hollow Tanke\t\t\tBenötigt: %d Liter",
    11. string, getProdukts(7), getProdukts(8), getProdukts(9));
    12. ShowPlayerDialog(playerid, DIALOG_TANKSTELLEN, DIALOG_STYLE_LIST,"Transport GmbH - Tankstellen Übersicht",string,"GPS","Schließen");
    13. #undef getProdukts
    14. #undef getTankName
    15. return 1;
    16. }
    Alles anzeigen
    Habe das nun so gemacht
  • Warum ignorierst du denn einfach Kalibers Code?

    PAWN-Quellcode

    1. new string[550];
    2. for(new i; i<sizeof(Tanke); i++)
    3. {
    4. format(string,sizeof(string),"%s\n%s\t\t\t\tBenötigt: %d Liter",string,getTankName(i), getProdukts(i));
    5. }
    6. ShowPlayerDialog(playerid, DIALOG_TANKSTELLEN, DIALOG_STYLE_LIST,"Transport GmbH - Tankstellen Übersicht",string,"GPS","Schließen");
    Mein Scriptingservice

    Meine Werke:
    [ FILTERSCRIPT] DT_DynamicRestaurants

    [ GAMEMODE ] EER Script [GF-Reallife]

    Beitrag von Dr. Frauenarzt ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Gelöst sehr schlau gewesen :D ().

  • Hallo,

    Habe das Problem habe ingesamt momentan 6 Tankstellen.

    Werden geladen alles kein Problem.

    Die Sache ist nun wen ich /lieferung ausführe wird mir kaum was angezeigt außer von der letzten Tankstelle die ich in der DB drinnen habe.


    Quellcode

    1. ocmd:lieferung(playerid)
    2. {
    3. new string[1024];
    4. for(new i; i<sizeof(Tanke); i++)
    5. {
    6. #define getProdukts(%0) (floatround(Tanke[%0][tMaxLiter]-floatround(Tanke[%0][tLiter])))
    7. format(string,sizeof(string),"%s\n%s\t\t\t\tBenötigt: %d/%d Liter", string, Tanke[i][tName], getProdukts(i), floatround(Tanke[i][tMaxLiter]));
    8. }
    9. ShowPlayerDialog(playerid, DIALOG_TANKSTELLEN, DIALOG_STYLE_LIST,"Transport GmbH - Tankstellen Übersicht", string,"GPS","Schließen");
    10. #undef getProdukts
    11. return 1;
    12. }
    Alles anzeigen

    Datenkbank:




    Dialog:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dr. Frauenarzt () aus folgendem Grund: Code Aktualisiert #1 #2

  • 1. Für die Übersicht wiki.sa-mp.com/wiki/Dialog_Styles wurde extra z.B. DIALOG_STYLE_TABLIST_HEADERS dafür eingeführt.

    2. Es scheint, als würden wohl nicht alle deine Tankstellen geladen werden...wenn die Arrays leer sind, sind sie leer.

    3. Lerne zu debuggen, du siehst hier oh, es scheint als wäre das leer.
    1. Da müssen jetzt folgende Gedanken in dir vorgehen.
      1. Vielleicht da ich das nur in dem String hier mache, ein formatierungs fehler.
      2. Also mal ohne format einfach mal alles durch printen.
      3. Dann siehst du oh immer noch alles bis auf 1 leer.
      4. Hmm dann muss der Fehler wohl beim laden passieren, da ja in der Datenbank alles gespeichert ist.
    2. Dann schaust du dir den Code an, wo du alles lädst.
      1. Dann machst du hier einen print, was er alles lädt und ob das funktioniert.
      2. und dann wirst du feststellen, dass dem nicht so ist :)
      3. Deshalb zeig uns direkt mal deinen Code vom laden :P



    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Es stand ja immer da das 6/6 Tankstellen geladen wurden wen ich ingame gehe sind die Tankstellen auch da an der Richtigen Position der Name ect.


    Quellcode

    1. public LoadTanken()
    2. {
    3. new rows, count;
    4. cache_get_row_count(rows);
    5. for(new i=0;i<rows;i++)
    6. {
    7. new tankeID = cache_get_value_name_int(i, "id", Tanke[tankeID][tdbID]);
    8. if(tankeID < MAX_TANKEN)
    9. {
    10. Tanke[tankeID][tCreated] = 1;
    11. cache_get_value_name_int(i, "id", Tanke[tankeID][tdbID]);
    12. cache_get_value_name_float(i, "PickupX", Tanke[tankeID][tPickupX]);
    13. cache_get_value_name_float(i, "PickupY", Tanke[tankeID][tPickupY]);
    14. cache_get_value_name_float(i, "PickupZ", Tanke[tankeID][tPickupZ]);
    15. cache_get_value_name(i, "Besitzer", Tanke[tankeID][tBesitzer], MAX_PLAYER_NAME);
    16. cache_get_value_name(i, "Name", Tanke[tankeID][tName], 64);
    17. cache_get_value_name(i, "Teilhaber", Tanke[tankeID][tTeilhaber], MAX_PLAYER_NAME);
    18. cache_get_value_name_int(i, "Preis", Tanke[tankeID][tPreis]);
    19. cache_get_value_name_int(i, "Lock", Tanke[tankeID][tLock]);
    20. cache_get_value_name_int(i, "PreisProLiter", Tanke[tankeID][tPreisProLiter]);
    21. cache_get_value_name_float(i, "Liter", Tanke[tankeID][tLiter]);
    22. cache_get_value_name_float(i, "MaxLiter", Tanke[tankeID][tMaxLiter]);
    23. cache_get_value_name_int(i, "Kasse", Tanke[tankeID][tKasse]);
    24. cache_get_value_name_int(i, "BenzinAnkauf", Tanke[tankeID][tBenzinAnkauf]);
    25. cache_get_value_name_int(i, "Owned", Tanke[tankeID][tOwned]);
    26. Tanke[tankeID][tText] = CreateDynamic3DTextLabel("Laedt ...", COLOR_WHITE, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 20.0);
    27. if(Tanke[tankeID][tOwned] == 1)
    28. {
    29. Tanke[tankeID][tPickup] = CreatePickup(TANK_OWNER, 1, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 0);
    30. }
    31. else if(Tanke[tankeID][tOwned] == 0)
    32. {
    33. Tanke[tankeID][tPickup] = CreatePickup(NO_TANK_OWNER, 1, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 0);
    34. }
    35. UpdateTankLabel(tankeID, Tanke[tankeID][tOwned]);
    36. count++;
    37. }
    38. }
    39. printf("[LOAD] Tankstellen geladen: %d/%d", count, MAX_TANKEN);
    40. return 1;
    41. }
    Alles anzeigen

    So sieht das aus es wird alles erstellt alles geladen laut den Sprint auch die Namen. Es steht überall der Name richtig von den Tankstellen.
  • Dr. Frauenarzt schrieb:

    new tankeID = cache_get_value_name_int(i, "id", Tanke[tankeID][tdbID]);
    Das hier ist dein Fehler.

    Die Zeile macht keinen Sinn, da die Funktion cache_get_value_name_int immer nur den selben Wert returnt, somit überschreibst du fortwährend dein Array.

    Deshalb wird dir alles angezeigt, aber letztlich wird das alles nur in einem Feld gespeichert und immer überschrieben.

    Deshalb lösche diese Variable und verwende anstelle von tankeID einfach dein i :)


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Dr. Frauenarzt schrieb:

    Es stand ja immer da das 6/6 Tankstellen geladen wurden wen ich ingame gehe sind die Tankstellen auch da an der Richtigen Position der Name ect.


    Quellcode

    1. public LoadTanken()
    2. {
    3. new rows, count;
    4. cache_get_row_count(rows);
    5. for(new i=0;i<rows;i++)
    6. {
    7. new tankeID = cache_get_value_name_int(i, "id", Tanke[tankeID][tdbID]);
    8. if(tankeID < MAX_TANKEN)
    9. {
    10. Tanke[tankeID][tCreated] = 1;
    11. cache_get_value_name_int(i, "id", Tanke[tankeID][tdbID]);
    12. cache_get_value_name_float(i, "PickupX", Tanke[tankeID][tPickupX]);
    13. cache_get_value_name_float(i, "PickupY", Tanke[tankeID][tPickupY]);
    14. cache_get_value_name_float(i, "PickupZ", Tanke[tankeID][tPickupZ]);
    15. cache_get_value_name(i, "Besitzer", Tanke[tankeID][tBesitzer], MAX_PLAYER_NAME);
    16. cache_get_value_name(i, "Name", Tanke[tankeID][tName], 64);
    17. cache_get_value_name(i, "Teilhaber", Tanke[tankeID][tTeilhaber], MAX_PLAYER_NAME);
    18. cache_get_value_name_int(i, "Preis", Tanke[tankeID][tPreis]);
    19. cache_get_value_name_int(i, "Lock", Tanke[tankeID][tLock]);
    20. cache_get_value_name_int(i, "PreisProLiter", Tanke[tankeID][tPreisProLiter]);
    21. cache_get_value_name_float(i, "Liter", Tanke[tankeID][tLiter]);
    22. cache_get_value_name_float(i, "MaxLiter", Tanke[tankeID][tMaxLiter]);
    23. cache_get_value_name_int(i, "Kasse", Tanke[tankeID][tKasse]);
    24. cache_get_value_name_int(i, "BenzinAnkauf", Tanke[tankeID][tBenzinAnkauf]);
    25. cache_get_value_name_int(i, "Owned", Tanke[tankeID][tOwned]);
    26. Tanke[tankeID][tText] = CreateDynamic3DTextLabel("Laedt ...", COLOR_WHITE, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 20.0);
    27. if(Tanke[tankeID][tOwned] == 1)
    28. {
    29. Tanke[tankeID][tPickup] = CreatePickup(TANK_OWNER, 1, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 0);
    30. }
    31. else if(Tanke[tankeID][tOwned] == 0)
    32. {
    33. Tanke[tankeID][tPickup] = CreatePickup(NO_TANK_OWNER, 1, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 0);
    34. }
    35. UpdateTankLabel(tankeID, Tanke[tankeID][tOwned]);
    36. count++;
    37. }
    38. }
    39. printf("[LOAD] Tankstellen geladen: %d/%d", count, MAX_TANKEN);
    40. return 1;
    41. }
    Alles anzeigen

    So sieht das aus es wird alles erstellt alles geladen laut den Sprint auch die Namen. Es steht überall der Name richtig von den Tankstellen.

    Wenn du schon aus dem Virtual Reallife Script kopierst und es nur leicht umgeändert einfügst, brauchst du dich nicht wundern, wenn du nur Fehler bekommst.

    Spoiler anzeigen

    Quellcode

    1. public LoadTanken()
    2. {
    3. new rows, fields, count;
    4. cache_get_data(rows, fields);
    5. for(new i=0;i<rows;i++)
    6. {
    7. new tankeID = cache_get_field_content_int(i, "id");
    8. if(tankeID < MAX_TANKEN)
    9. {
    10. Tanke[tankeID][tCreated] = 1;
    11. Tanke[tankeID][tdbID] = cache_get_field_content_int(i, "id");
    12. Tanke[tankeID][tPickupX] = cache_get_field_content_float(i, "PickupX");
    13. Tanke[tankeID][tPickupY] = cache_get_field_content_float(i, "PickupY");
    14. Tanke[tankeID][tPickupZ] = cache_get_field_content_float(i, "PickupZ");
    15. cache_get_field_content(i, "Besitzer", Tanke[tankeID][tBesitzer], myCon, 32);
    16. cache_get_field_content(i, "Name", Tanke[tankeID][tName], myCon, 32);
    17. cache_get_field_content(i, "Teilhaber", Tanke[tankeID][tTeilhaber], myCon, 32);
    18. Tanke[tankeID][tPreis] = cache_get_field_content_int(i, "Preis");
    19. Tanke[tankeID][tLock] = cache_get_field_content_int(i, "Lock");
    20. Tanke[tankeID][tPreisProLiter] = cache_get_field_content_int(i, "PreisProLiter");
    21. Tanke[tankeID][tLiter] = cache_get_field_content_float(i, "Liter");
    22. Tanke[tankeID][tMaxLiter] = cache_get_field_content_float(i, "MaxLiter");
    23. Tanke[tankeID][tKasse] = cache_get_field_content_int(i, "Kasse");
    24. Tanke[tankeID][tBenzinAnkauf] = cache_get_field_content_int(i, "BenzinAnkauf");
    25. Tanke[tankeID][tOwned] = cache_get_field_content_int(i, "Owned");
    26. Tanke[tankeID][tText] = CreateDynamic3DTextLabel("Laedt ...", COLOR_ALPHA_WHITE, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 20.0);
    27. if(Tanke[tankeID][tOwned] == 1)
    28. {
    29. Tanke[tankeID][tPickup] = CreatePickup(TANK_OWNER, 1, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 0);
    30. }
    31. else if(Tanke[tankeID][tOwned] == 0)
    32. {
    33. Tanke[tankeID][tPickup] = CreatePickup(NO_TANK_OWNER, 1, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 0);
    34. }
    35. UpdateTankLabel(tankeID, Tanke[tankeID][tOwned]);
    36. count++;
    37. }
    38. }
    39. printf("[LOAD] Tankstellen geladen: %d/%d", count, MAX_TANKEN);
    40. return 1;
    41. }
    Alles anzeigen
  • Habe ich verstanden werde so nun auch weiter arbeiten.
    Dachte halt nur das es sein muss das man den nochmal auslesen muss dachte aber nicht das es überschrieben wird?

    Habe das nun beim Haus system auch ausgebessert.



    Klar möchte ich damit arbeiten aber irgendwie spinnt das bei mir bei mir wird das alles 5 mal ausgegeben ?


    Quellcode

    1. ocmd:lieferung(playerid)
    2. {
    3. new string[1024];
    4. for(new i; i<sizeof(Tanke); i++)
    5. {
    6. #define getProdukts(%0) (floatround(Tanke[%0][tMaxLiter]-floatround(Tanke[%0][tLiter])))
    7. format(string,sizeof(string),"Tankstelle\tBenötigt\tBezugspreis\n %s\n%s\t%d/%d Liter", string, Tanke[i][tName], getProdukts(i), floatround(Tanke[i][tMaxLiter]));
    8. }
    9. ShowPlayerDialog(playerid, DIALOG_TANKSTELLEN, DIALOG_STYLE_TABLIST_HEADERS,"Transport GmbH - Tankstellen Übersicht", string,"GPS","Schließen");
    10. #undef getProdukts
    11. return 1;
    12. }
    Alles anzeigen






    Liegt das eventuell am string oder an was kann das liegen?
  • Dr. Frauenarzt schrieb:

    aber irgendwie spinnt das bei mir bei mir wird das alles 5 mal ausgegeben ?
    Nein da spinnt nichts, du formatierst den String nur immer wieder in den String, deshalb wird das 5x ausgegeben :D


    C-Quellcode

    1. ocmd:lieferung(playerid)
    2. {
    3. #define getProdukts(%0) (floatround(Tanke[%0][tMaxLiter]-floatround(Tanke[%0][tLiter])))
    4. new string[1024] = "Tankstelle\tBenötigt\tBezugspreis";
    5. for(new i; i<sizeof(Tanke); i++)
    6. {
    7. format(string,sizeof(string),"%s\n%s\t%d/%d Liter\t%d$", string, Tanke[i][tName], getProdukts(i), floatround(Tanke[i][tMaxLiter]), Tanke[i][tPreisProLiter]);
    8. }
    9. ShowPlayerDialog(playerid, DIALOG_TANKSTELLEN, DIALOG_STYLE_TABLIST_HEADERS,"Transport GmbH - Tankstellen Übersicht", string,"GPS","Schließen");
    10. #undef getProdukts
    11. return 1;
    12. }
    Alles anzeigen
    Als "Bezugspreis" hab ich nur so den PreisProLiter angegeben, kp was du damit aussagen magst.


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Danke @Kaliber


    Wollte kurz fragen wie kann ich machen das er keine menge mehr angeben muss um das abzuladen?
    Das heißt er fährt einfach dahin gibt /unload ein dann wird die menge abgegeben die im Truck sind falls das zuviel sind wird nur das angeliefert was benötigt wird und der rest bleibt dann ja drinnen wen es zuviel war..

    Quellcode

    1. CMD:unload(playerid, params[])
    2. {
    3. new vehicleid = GetPlayerVehicleID(playerid);
    4. if(GetVehicleModel(GetVehicleTrailer(vehicleid)) == 584)
    5. {
    6. new string[128], int;
    7. if(sscanf(params, "i", int))return SendClientMessage(playerid, COLOR_GREY, "{247BA6}* Benutze {33AA33}/unload [Menge]");
    8. if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_GREY, "** Du befindest dich in keinem Tanker.");
    9. if(!(Spieler[playerid][pFraktion] == 13))return SendClientMessage(playerid, COLOR_GREY, "Du bist kein Member der Transport GmbH.");
    10. if(int < 1 || int > 2500)return SendClientMessage(playerid, COLOR_GREY, "** Du kannst nur maximal 2500 Liter abladen.");
    11. if(int > Vehicle[GetVehicleTrailer(vehicleid)][vehProds])return SendClientMessage(playerid, COLOR_GREY, "** Soviel Liter hast du nicht dabei.");
    12. for(new it=1;it<MAX_TANKEN;it++)
    13. {
    14. if(Tanke[it][tCreated] == 1)
    15. {
    16. if(IsPlayerInRangeOfPoint(playerid, 5.0, Tanke[it][tPickupX], Tanke[it][tPickupY], Tanke[it][tPickupZ]))
    17. {
    18. if(Tanke[it][tLiter] == Tanke[it][tMaxLiter])return SendClientMessage(playerid, COLOR_GREY, "** Diese Tankstelle hat bereits die maximale Anzahl an Benzin.");
    19. new cash = Tanke[it][tKasse];
    20. new kosten = (Tanke[it][tBenzinAnkauf]*int);
    21. if(cash < kosten)return SendClientMessage(playerid, COLOR_GREY, "** Die Kasse hat nicht genügend Geld für das Benzin.");
    22. if(int > (Tanke[it][tMaxLiter]-Tanke[it][tLiter]))return SendClientMessage(playerid, COLOR_GREY, "** Soviel Liter kann diese Tankstelle nicht haben.");
    23. Vehicle[GetVehicleTrailer(vehicleid)][vehProds] -= int;
    24. new Float:intfloat = float(int);
    25. new Float:add = floatadd(intfloat, Tanke[it][tLiter]);
    26. Tanke[it][tLiter] = add;
    27. format(string, sizeof(string), "* Du hast der Tankstelle %d Liter für $%d verkauft.", int, kosten);
    28. Tanke[it][tKasse] -= kosten;
    29. GiveMoney(playerid, kosten);
    30. SendClientMessage(playerid, COLOR_GREEN, string);
    31. UpdateTankLabel(it, Tanke[it][tOwned]);
    32. }
    33. }
    34. }
    35. }
    36. return 1;
    37. }
    Alles anzeigen
  • Dr. Frauenarzt schrieb:

    Wollte kurz fragen wie kann ich machen das er keine menge mehr angeben muss um das abzuladen?
    Ja, versuch dich mal daran, das ist ja nicht so schwer.

    1. Du nimmst logischerweise die Eingabe Abfragen raus, die willst du schließlich raus haben.
    2. Dann überlegst du dir, wie du jetzt an die Liter kommst.
      1. Dann merkst du ah, die stehen ja alle in der in Tank Variable. (Als Tipp schau einfach wo int überall verwendet wurde.)
      2. Im Endeffekt ist ja das was du willst nichts anderes als die Differenz von MAX_LITER - AKTUELLE_LITER = int
      3. Das verwendest du dann einfach überall da und passt das an.
    Und dann bist du feritg, komm, das schaffst du! :)


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