Beiträge von Strobe

    Da playSound3D sowieso nur Client-seitig ist, macht es keinen großen Unterschied ob du getLocalPlayer() benutzt oder in deinem Argument source den Client übermittelst.

    Edit// Ich nehme an das Argument source ist nicht richtig übertragen worden,da ich auch annehme,dass du die function button1func mit dem eventHandler('onClientGUIClick'....) verbunden hast und bei diese eventHandler die source nicht der Spieler ist,sondern das GUI-Element auf welches geklickt wurde .

    wie hast du die getElementData-Abfrage aufgebaut ?

    //Edit ich hatte gesagt nicht 1zu1 kopieren, da ich nicht weiß welches Script du benutzt und daher weiß ich auch nicht wie der Element-Key würden Adminrang benannt wurde.

    Nun es ist mir nicht klar, wie Vandam es mit 'outputChatBox' hinbekommen will den gesamten Spielerlisten-namen + den Nametag-Namen zu verändern, jedoch benötigst du :

    Lua
    onPlayerJoin
    setPlayerNametagText

    addEventHandler("onPlayerJoin",root,function()
    if tonumber(getElementData(source,"adminrang")) > 0 then
    setPlayerNametagText(source,"[LVR]"..getPlayerName(source))
    end
    end)

    //Edit gegebenenfalls die getElementData abfrage verändern da ich "adminrang" nur als bsp. für den Element-Key verwendet habe.

    Also wenn ich dich richtig verstehe, möchtest du einen Faktor haben welcher einen absoluten Abstand in ein verhältnis mit jeder Auflösung setzt.
    Ich denke hierfür soltest du:

    breite*(absoluteBreite/deine Auflösungsbreite)
    oder
    höhe*(absolutehöhe/deine Auflösungshöhe)

    also nehmen wir an du hast eine auflösung von 1024*728 dann wäre dies so >>

    x,y = guiGetScreenSize()

    guiCreateWindow(x*(200/1024),y*(300/728),x,y[...])

    so würdest du 200 an der Breite haben und 300 in der Höhe und dies bei jeder Auflösung angepasst-

    Dann musst du:

    Lua
    getElementRotation() 
    dxDrawImageSection()

    verwenden.

    Ich kann dir ein Beispiel geben für das Radar, da ich mich jedoch nicht so stark mit Radaren befasst habe kann ich nur eine Rechnung für dxDrawImage zeigen.


    addEventHandler("onClientRender",root, function()
    local px,py,pz = getElementPosition(localPlayer)
    local screenx, screeny = guiGetScreenSize()
    local bx = 150
    local by = 150
    local ppx = 5
    local ppy = 5
    local box_screen_x = (screenx/100)
    local point_x = (3000+px)/6000*150
    local point_y = (3000-py)/6000*150
    dxDrawImage(box_screen_x, box_screen_y,bx,by,"mapPfad")
    dxDrawImage(box_screen_x+point_x, box_screen_y+point_y, ppx, ppy,"Pfeil_für das Radar.png")

    for i, v in ipairs( getElementsByType('player') ) do
    if v ~= localPlayer then
    local apx,apy,apz = getElementPosition(v)
    local point_xx = (3000+apx)/6000*150
    local point_yy = (3000-apy)/6000*150
    dxDrawImage(box_screen_x+point_x, box_screen_y+point_y, ppx, ppy,"Pfeil_für_das_Radar.png")
    end
    end
    end)

    ertlflorian1:

    Ich kann dir ein Beispiel mit dxDrawImage geben

    local dx = {}
    width,height = guiGetScreenSize()

    function interpoliere_start()
    dx.startCount = getTickCount()
    dx.endCount = dx.startCount + 2000
    addEventHandler("onClientRender",root,interpoliere_zeichnen)
    end
    addCommandHandler("interopliere",interpoliere_start)


    function interpoliere_zeichnen()
    local now = getTickCount()
    local vergangen = now - dx.startCount
    local dauer = dx.endCount - dx.startCount
    local prog = vergangen / dauer
    local rotation = interpolateBetween(0,0,0,360,0,0,"CosineCurve")
    dxDrawImage(width*0.5,height*0.5,width*0.5,height*0.5,"Pfad_des_Bildes",rotation)
    end


    Tut mir leid, dass ich kein [lua] benutz habe, jedoch wären die Zeilen dann hintereinander gewesen.

    <meta>
    <info type="script" version="1.0"></info>
    <map src="Reallife-Map.map" dimension="0"></map>
    <settings>
    <setting name="#minplayers" value="[ 0 ]"></setting>
    <setting name="#maxplayers" value="[ 128 ]"></setting>
    <setting name="#gravity" value="[ 0.008000 ]"></setting>
    <setting name="#weather" value="[ 0 ]"></setting>
    <setting name="#time" value="0:0"></setting>
    <setting name="#locked_time" value="[ true ]"></setting>
    <setting name="#waveheight" value="[ 0 ]"></setting>
    <setting name="#gamespeed" value="[ 1 ]"></setting>
    </settings>
    <script src="C:\Benutzer\Daniel\Eigene Dokumente\.lua Plugins\Lua Plugin Toröffner" type="client" />
    </meta>


    zwischen die beiden meta tags, keine neuen meta tags erstellen und nicht zwischen <settings> </settings>
    // Edit ausserdem bei type= script

    Führe einfach das aus was in den Post steht füg zwischen <meta> </meta> und <script src="datei-pfad" type="client oder server" />

    Es nütz nichts wenn du alles übers Scripten im Forum hier fragen wirst und es dann nicht ausführen wirst, da du dann erst in etwa 10 Jahren so weit wärst ein Gate zu scripten...

    Ich empfehle dir einige Tutorials mit der Suchleiste da oben rechts zu suchen und den Rest in der MTA-wiki herauszufinden.
    >> Scripten generell Coding und Programmieren erfordert eine menge eigen Initiative.

    Genau wie Dawi sagte entweder :

    In der Konsole


    aclrequest allow Ressourcenname all

    oder im Clienten

    /aclrequest allow Ressourcenname all


    sollte da stehen no acl-change required, dann sind alle Rechte schon passend, falls nicht werden alle Rechte zu gewiesen !

    Man hätte sich etwas Mühe durch ausprobieren sparen können. vioGetElementData() ist nichts anderes als getElementData() nur , dass verhindert werden soll,dass durch setElementData() client-seitig Werte verändert werden können. Im Allgemeinen hättest du anstatt vioSetElementData() auch überall nur setElementData() schreiben können. Vio ist nur ein Script keine neue Scripting-Sprache...

    Nun, des Weiteren stimme ich Nil zu, ist zwar kein gravierender Unterschied anstatt zwei Abfragen eine Abfrage zu benutzen jedoch empfehle ich euch noch einmal die arithmetischen Lua-Operatoren anzuschauen, dass kann in Zukunft viel bringen.

    Nadelberechnung mit der Cosinus-Funktion oder Sinus-Funktion, um die Geschwindigkeit der Nadel mit einer Formel im Gradsystem darzustellen.
    Hierzu solltest du DxDrawImage verwenden für die Nadel und dann in den Argumenten beim Argument rotation die Variable mit dem Wert der Cosinus-Funktion einsetzten. So sollte die Geschwindigkeit immer im Gradsystem von 0 - 360 bleiben.