[RELEASE] Dynamisches Tankstellen Banner

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

    • [RELEASE] Dynamisches Tankstellen Banner

      Hab momentan noch keine Bilder werde aber welche nachreichen. Hab nur eine Fertig gerenderte Texture:



      Hier das nachgereichte Bild:
      [Blockierte Grafik: https://i.imgur.com/aesuGsV.png]

      Benzinpreise können so aktualisiert werden:

      LUA-Quellcode

      1. triggerClientEvent(source, "onFuelPriceUpdate", source, PREIS1, PREIS2, PREIS3, PREIS4)

      Um nicht 8 verschiedene Werte zu schicken benutz ich Kommazahlen.

      EDIT:
      War nur ein Test weil es mich interessiert hat ob sowas überhaupt möglich ist und wie es aussehen wird. Bin eigentlich ganz zufrieden mit dem Ergebnis.
      Dateien

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Sub_tixx ()

    • Hab mir mal den Code angeschaut und hätte vlt. noch ein paar Verbesserungsvorschläge.

      Ich würde die Preise in einer Table triggern:

      LUA-Quellcode

      1. {
      2. {name = "Super", price = 321.2},
      3. {name = "Super Plus", price = 321.2},
      4. {name = "Super E10", price = 321.2},
      5. }

      Würde ich in eine lokale Funktion packen mit den Parameter yOffset und des Tabelleneintrages mit dem Preis und Name (Einfach über die Tabelle schleifen).

      Die Berechnung wegen Major und MInor würde ich dann auch in dieser Funktion machen.

      LUA-Quellcode

      1. dxDrawRectangle(x-3, y+1, 150, 29, tocolor(0, 0, 0, 220))
      2. dxDrawRectangle(x+155, y+1, 65, 29, tocolor(255, 109, 16, 220))
      3. dxDrawText("Super", x, y, x, y, tocolor(255, 255, 255, 255), 2, "default-bold")
      4. dxDrawText(tostring(superPriceMajor), x+160, y, x+160, y, tocolor(255, 255, 255, 255), 2, "default-bold")
      5. dxDrawText(tostring(superPriceMinor), x+205, y+2, x+205, y+2, tocolor(255, 255, 255, 255), 1, "default-bold")

      Damit könntest du den Code verringern und wärst sogar noch flexibler. Ansonsten sieht es wirklich gut aus :)
      If A equals success, then the formula is A equals X plus Y plus Z. X is work. Y is play. Z is keep your mouth shut.
    • Erstmal danke fürs Anschauen!

      Wegen deinem Verbesserungsvorschlag, ja kann ich machen. War wie gesagt eigentlich nur ein Test ob man in MTA überhaupt auf Texturen rendern kann, und wie man sieht geht das (Was mich überrascht hat haha)!

      (Hab auch gerade noch nen Fehler gefunden. Ich lade den Shader bei "client/textureReplace.fx" ist aber im Wurzelverzeichnis..)

      EDIT:
      @MegaThorx

      Mir erschließt sich aber der sich hinter der Lokalen funktion leider nicht :/.
      Hab das jetzt mal schnell umgeschrieben und hab es so gemacht:

      1. In der onFuelPriceUpdate funktion kopier ich die komplette Tabelle in eine lokale Variable (Da ich alle Preise für onClientRestore brauche. Ich könnte zwar onFuelPriceRequest benutzen, allerdings wäre das ziemlich sinnlos wenn sich die Preise sowieso nicht geändert haben)
      2. In updateRenderTarget loope ich durch die komplette Tabelle und rendere auf das RenderTarget

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sub_tixx ()

    • Mit einer Funktion

      LUA-Quellcode

      1. function updateRenderTarget()
      2. dxSetRenderTarget(renderTarget, true)
      3. dxDrawImage(0, 0, 256, 256, "ws_xenon_3.png")
      4. local renderRow = function(offsetY, data)
      5. local x, y = 10, 107 + offsetY
      6. local priceMajor = math.floor(data.price)
      7. local priceMinor = math.floor((data.price % 1) * 10)
      8. dxDrawRectangle(x-3, y+1, 150, 29, tocolor(0, 0, 0, 220))
      9. dxDrawRectangle(x+155, y+1, 65, 29, tocolor(255, 109, 16, 220))
      10. dxDrawText(data.name, x, y, x, y, tocolor(255, 255, 255, 255), 2, "default-bold")
      11. dxDrawText(tostring(priceMajor), x+160, y, x+160, y, tocolor(255, 255, 255, 255), 2, "default-bold")
      12. dxDrawText(tostring(priceMinor), x+205, y+2, x+205, y+2, tocolor(255, 255, 255, 255), 1, "default-bold")
      13. end
      14. local yOffset = 0
      15. for _, row in ipairs(priceTable) do
      16. renderRow(yOffset, row)
      17. yOffset = yOffset + 30
      18. end
      19. dxSetRenderTarget()
      20. dxSetShaderValue(shader, "tex", renderTarget)
      21. end
      Alles anzeigen

      Direkt in der Schleife


      LUA-Quellcode

      1. function updateRenderTarget()
      2. dxSetRenderTarget(renderTarget, true)
      3. dxDrawImage(0, 0, 256, 256, "ws_xenon_3.png")
      4. local renderRow = function(offsetY, data)
      5. end
      6. local yOffset = 0
      7. for _, data in ipairs(priceTable) do
      8. local x, y = 10, 107 + offsetY
      9. local priceMajor = math.floor(data.price)
      10. local priceMinor = math.floor((data.price % 1) * 10)
      11. dxDrawRectangle(x-3, y+1, 150, 29, tocolor(0, 0, 0, 220))
      12. dxDrawRectangle(x+155, y+1, 65, 29, tocolor(255, 109, 16, 220))
      13. dxDrawText(data.name, x, y, x, y, tocolor(255, 255, 255, 255), 2, "default-bold")
      14. dxDrawText(tostring(priceMajor), x+160, y, x+160, y, tocolor(255, 255, 255, 255), 2, "default-bold")
      15. dxDrawText(tostring(priceMinor), x+205, y+2, x+205, y+2, tocolor(255, 255, 255, 255), 1, "default-bold")
      16. yOffset = yOffset + 30
      17. end
      18. dxSetRenderTarget()
      19. dxSetShaderValue(shader, "tex", renderTarget)
      20. end
      Alles anzeigen
      If A equals success, then the formula is A equals X plus Y plus Z. X is work. Y is play. Z is keep your mouth shut.
    • Sub_tixx schrieb:

      Okay.. Versteh zwar immer noch nicht was das bringen soll aber ich habs mal gemacht. Neue Datei ist im ersten Beitrag
      Inwiefern? Wir könnten gerne mal im Teamspeak reden. Mit der seperaten Funktion hat in diesem Fall kaum einen Mehrwert.. Denke da gerade wieder wie ich so eine Klasse aufbauen würde.
      If A equals success, then the formula is A equals X plus Y plus Z. X is work. Y is play. Z is keep your mouth shut.