Beiträge von Leyynen

    Lua
    addEventHandler("onClientResourceStart", resourceRoot,
        function()
    	screenWidth, screenHeight = guiGetScreenSize()
            Label = guiCreateLabel(6, screenHeight - 60, 464, 54, "reallife", false)
            guiSetFont(Label, "sa-header")    
        end
    )


    Clientseitig.

    Lua
    gWindow["progress"] = guiCreateWindow(screenwidth/2-264/2,screenheight/2-344/2,264,344,"blabla",false)

    screenwidth = Breite des Bildschirms
    screenheight = Höhe des Bildschirms
    264 = Breite des GUI-Fensters
    344 = Länge des GUI-Fensters

    Also immer so rechnen:

    Bildschirmbreite/2-GUIBreite/2,Bildschirmhöhe/2-GUILänge/2,GUIBreite,GUILänge

    Lua
    screenwidth, screenheight = guiGetScreenSize()

    fourDragonGateSwitches ist nicht definiert. Ich vermute, das Skript, welches die Funktion für das Tor des Four Dragons beinhaltet, fehlt oder hat einen Fehler.

    @Jusonex: Und wo kann ich ändern das die auflösung bei jeder auflösung funktioniert ? ich habe einen großen bildschirm 1240x 1920 glaube. habe das jetzt so aber es funktioniert noch nicht :(

    Lua
    GUIEditor = {
        label = {}
    	screenWidth, screenHeight = guiGetScreenSize()
    }
    addEventHandler("onClientResourceStart", resourceRoot,
        function()
            GUIEditor.label[1] = guiCreateLabel(6, screenHeight - 59, 464, 54, "reallife", false)
            guiSetFont(GUIEditor.label[1], "sa-header")    
        end
    )


    Wo willst du es anzeigen lassen? Ganz oben, ganz unten, links, rechts?

    Im GUI-Editor ist "Absolut" ja schon standardmäßig angehackt.
    Als ich das aber ohne diese Rechnung machte, hat man bei niedrigeren Auflösungen nur Teile gesehen.
    Die oben genannte Rechnung funktionierte auch einwandfrei in der 800x600 Auflösung.

    Oder ich verstehe irgendwas an dem Editor nicht :D
    Dann würde ich mir sehr viel Schreibarbeit sparen.

    mfg


    Ja, weil bei niedrigeren Auflösungen das Fenster ja noch kleiner gemacht wird. Wenn du dann das Fenster bereits ganz knapp gemacht hast, wird es dann zu klein. Da die Schriftgrösse aber nicht kleiner wird, gibt es dann das Problem mit dem Überschneiden usw. Daher verwende ich immer die selbe Grösse, egal welche Auflösung vorhanden ist. Somit ist immer alles lesbar und es wird nichts zerquetscht.

    Ja, ist auch richtig so.

    Die Funktion showLastIntel führt zur serverseitigen Funktion gameBeginGuiShow. Diese findest du hier: vio\register_login\register_login_server.lua

    Dort findest du diese Koordinaten.

    Ja okay, aber dann ist das Fenster/Bild ja bei kleineren Auflösungen größer als bei höheren.
    Genau das will ich nicht, sondern es soll ja überall die selben % anzeigen. :)
    Ich habs jetzt hinbekommen, mit dieser Rechnung:

    Lua
    local sx, sy = guiGetScreenSize()
    dxDrawImage ( sx*PosX/1920, sy*PosY/1600, sx*Höhe/1920, sy*Breite/1600,... )


    Mit absoluten Werten wird dieses Problem gelöst. Mit dieser Rechnung rechnest du den absoluten Wert aus.
    Das Problem mit diesen Werten ist nur, dass wenn die verschiedenen Auflösungen nicht proportional zueinander stehen, dass Fenster verzerrt wird.

    Lua
    if vioGetElementData ( veh, "owner" ) == getPlayerName ( player ) then

    veh = das Fahrzeug
    player = der Spieler

    Diese Abfrage kannst du z.B. bei der Funktion für das Einsteigen einfügen.

    Also ich mach das so:

    Lua
    guiCreateWindow(screenwidth/2-200/2, screenheight/2-300/2,200,300,"Titel",false)
    
    
    guiCreateWindow(screenwidth/2-Breite/2, screenheight/2-Länge/2,Breite,Länge,"Titel",false)

    So ist es in der Mitte und so lang und breit, wie du es erstellt hast. Du musst ausserdem beachten, dass die Standard-Schriftarten nicht grösser werden bei höheren Auflösungen (so habe ich es in Erinnerung). Daher arbeite ich nicht mit absoluten Grössen, sondern mache es so, dass die GUI's bei jedem User die selbe Grösse hat. In meinem Beispiel also 200/300 Pixel.

    Wenn du willst, dass das GUI bei jeder Auflösung genau gleich viel % des Bildschirms abdeckt, kannst du einfach absolute Werte verwenden:

    Lua
    guiCreateWindow ( 0.5, 0.5, 0.4, 0.6, "Titel", true ) 
    
    
    guiCreateWindow ( 0.5, 0.5, BreiteAbsolut, LängeAbsolut, "Titel", true )

    Die ersten beiden 0.5 bestimmen, dass das Fenster in der Mitte des Bildschirms auftaucht. Wenn du das nicht möchtest, musst du für diesen Wert die selbe Rechnung wie unten machen.

    Hier ist es so:

    BreiteAbsolut = PixelangabeBreite/DeineAuflösungBreite
    LängeAbsolut = PixelangabeLänge/DeineAuflösungLänge

    Bei 1920/1600:
    BreiteAbsolut = 200/1920 = 0.1042
    LängeAbsolut = 300/1600 = 0.1875

    Lua
    guiCreateWindow ( 0.5, 0.5, 0.1042, 0.1875, "Titel", true )
    Lua
    uhrlabel = guiCreateLabel(0.22, 0.07, 0.61, 0.08, "00:00", true, GUIWindow)
    
    
    uhrzeittimer = setTimer(function()
    	local time = getRealTime()
    	local hours = time.hour
    	local minutes = time.minute
    	uhrzeit = hours..":"..minutes
    	guiSetText ( uhrlabel, uhrzeit )
    end, 1000, 0)

    Dann, um den Timer zu stoppen, wenn z.B. das GUI geschlossen wird, noch folgendes einfügen:

    Lua
    killTimer(uhrzeittimer)

    Schade, dass es jetzt öffentlich zugänglich ist. So haben Gamemodes wie dein Godmother oder Butterfly noch weniger Chancen, obwohl sie skripttechnisch besser verarbeitet sind. Wenn ich einen Server eröffnen will, suche ich zuerst etwas, was legal und kostenlos erhältlich ist. Früher hätte ich mich also für Godmother entschieden. Aber da jetzt das Vio-Skript kostenlos und legal ist, werden sich alle direkt hierauf stürzen. *:|*