Archiv verlassen und diese Seite im Standarddesign anzeigen : Derma Frage
Also, ich hab hier ma ein Derma-Panel mit 2 Registerkarten.
Nur schaffe ich es nicht mehr als nur einen button/checkbox da reinzumachen...
function Client-Admin.Panel()
local panel = vgui.Create("DFrame")
panel:SetPos(x/2-128,y/2-128)
panel:SetSize(350, 350)
panel:SetTitle("Client Admin Menu")
panel:SetVisible(true)
panel:SetDraggable(true)
panel:ShowCloseButton(true)
panel:MakePopup()
local PropertySheet = vgui.Create( "DPropertySheet" )
PropertySheet:SetParent(panel)
PropertySheet:SetPos( 5, 30 )
PropertySheet:SetSize( 340, 315 )
local SheetItem1 = vgui.Create( "DCheckBoxLabel" , CategoryContentOne )
SheetItem1:SetText( "Godmode" )
SheetItem1:SetConVar( "sbox_godmode" )
SheetItem1:SetValue( 1 )
SheetItem1:SizeToContents()
local SheetItem2 = vgui.Create("DButton" , CategoryContentTwo )
SheetItem2:SetParent(panel)
SheetItem2:SetText("Funktion 1")
SheetItem2:SetSize(96,22)
SheetItem2:SetPos(8, 32)
SheetItem2:DoClick = function()
if (ClAdmin.func1 == true) then
ClAdmin.func1 = false
else
ClAdmin.func1 = true
end
end
PropertySheet:AddSheet( "1. Menu", SheetItem1, "gui/silkicons/user", false, false, "Client Menu 1")
PropertySheet:AddSheet( "2. Menu", SheetItem2, "gui/silkicons/group", false, false, "Client Menu 2" )
end
concommand.Add("adminmenu",Client-Admin.Panel)
Hier mal 'n Beispiel-Script, wie man man mehrere Buttons/Checkboxes erstellt:
/*------------------------------
Hauptebene wo der Rest drauf aufgebaut wird
------------------------------*/
local DermaPanel = vgui.Create( "DFrame" ) // Erstellt unsere Ebene
DermaPanel:SetPos( 50, 50 ) // Position auf dem Bildschirm des Spielers
DermaPanel:SetSize( ScrW()/2 + 100, ScrH()/2 )// Größe der Ebene
DermaPanel:SetTitle( "Test Ebene!" ) // Überschrift der Ebene
DermaPanel:SetVisible( true ) // Soll die Ebene ein- oder ausgeblendet werden?
DermaPanel:SetDraggable( true ) // Erlaubt es dem Spieler das Fenster zu verschieben
DermaPanel:ShowCloseButton( true ) // Soll der Spieler das "X" ( den Schließen-Knopf ) sehen?
DermaPanel:MakePopup() // Zeigt die Ebene auf dem Bildschirm an
/*------------------------------
Ein weiterer Button/Knopf,
er macht genau das selbe wie der DButton,
nur das man hier noch die Möglichkeit hat
zwischen 3 vorgefertigten Skins
für den Button wählen kann
------------------------------*/
local types = { "close", "up", "down" }
for i=1, 3 do // wir wollen 3 Buttons haben!
local DermaSysButton = vgui.Create( "DSysButton" ) // Erstellt unseren erweiteren Button
DermaSysButton:SetParent( DermaPanel ) // Hiermit haften wir den Button an die Hauptebene ran, so dass er sich mit ihr bewegt
DermaSysButton:SetPos( 50, 100 + ( 100 * i/2 ) )// Postition des Buttons auf dem Bildschirm
DermaSysButton:SetSize( 100, 50 ) // Die größe des Buttons/Knopfs
DermaSysButton:SetType( types[i] ) // Typ/Skin des Buttons ( close, up, down )
DermaSysButton.DoClick = function() // Was passieren soll wenn man mit Linksklick draufklickt
LocalPlayer():ChatPrint( "YOU PRESSED "..string.upper( types[i] ).." !" )
end
DermaSysButton.DoRightClick = function() // Was passieren soll wenn man mit Rechtsklick draufklickt
LocalPlayer():ChatPrint( "You lam0r just rightclicked on: "..string.upper( types[i] ).." !" )
end
end
/*------------------------------
Nun kommen wir zu einer sogenannten "Checkbox"!
------------------------------*/
local texts = { "GOD MODE!", "NOCLIP!" }
local convars = { "sbox_godmode", "sbox_noclip" }
for i=1, table.Count( texts ) do // so viele Checkboxes erstellen, wie Einträge im Table zu finden sind!
local DermaCheckBox = vgui.Create( "DCheckBoxLabel" ) // Erstellt unsere Checkbox
DermaCheckBox:SetParent( DermaPanel ) // Hiermit haften wir die Checkbox an die Hauptebene ran, so dass sie sich mit ihr bewegt
DermaCheckBox:SetPos( 200, 50 + ( 50 * i/2 ) ) // Postition der Checkbox auf dem Bildschirm
DermaCheckBox:SetText( texts[i] ) // Was neben der Checkbox stehen soll
DermaCheckBox:SetConVar( convars[i] ) // Der Command der "getoggeld" werden soll ( der command muss durch 1 [an] und 0[ aus] geschaltet werden können )
DermaCheckBox:SetValue( 1 ) // Soll der Command zu Anfang an oder aus sein?
DermaCheckBox:SizeToContents() // Pass es dem Rest der Frames an ( so das SetText ausgeschrieben da steht )
end
Wie du sehen kannst habe ich die Sysbuttons benutzt,
welche schon vorgefertigte Symbole nutzen.
Die gleiche Methode kannst du aber auch bei einem normalen Button anwenden!
Du solltest dieses Script problemlos ausführen können!
Spiele einfach mal ein wenig mit den Werten rum,
dann siehst du auch was sich ändert :)
Wie man sehen kann hat LoC den Highlighter immer noch nicht repariert...:roll:
nicht ganz das was ich wollte :D
der obere code macht ein Dframe auf dem dann 2 registerkarten sind, nur das ich nur 1 checkbox/button darauf bekomme...
€dit: kann man auch bei checkboxen ne function() ausführen ?
if (checkbox == true) then
dothis = false
else
dothis = true
end
Nein, guck dir den Code mal genau an und führe ihn ingame aus!
-----
Nochmals nein.
Checkboxen nutzt du dazu um z.B.
Consolenwerte von 0 auf 1 und umgekehrt zu schalten.
Du könntest dir ja den Consolenbefehl erstellen mit welchem du was ändern willst und den dann via CheckBox toggeln.
ich bin ingame, nur das ich keine registerkarten hab :0#
Du packst mein Script in eine neue Datei, in den Ordner
lua/autorun/client
Dann gibst du In-Game folgendes ein:
lua_openscript_cl autorun/client/<DATEINAME>.lua
( ohne < > )
dann sollte eigentlich ein neues Derma Panel auf dem Bildschirm erscheinen!
guck ma :>
http://noobontour.no.funpic.de/files/zs_clav_segments_v20001.jpg
€dit: das mir schon kla bin kein noob^ :D
das mit den registerkarten so sollte es sein, nur das ich da nur 1 checkbox reinbekomme, das auch mein code oben..
Achsoooo
Sorry, dann hab ich dich falsch verstanden :oops:
Dann weis ich so jetzt auch nicht weiter, da muss ich mich erstmal damit beschäftigen!
ja es hat nen zusammenhang mit
local SheetItem1 = vgui.Create( "DCheckBoxLabel" , CategoryContentOne )
und
PropertySheet:AddSheet( "1. Menu", SheetItem1, "gui/silkicons/user", false, false, "Client Menu 1")
aber ich schaff es nicht mehr als eine sachen (button oder checkbox) zu adden :{
ich bekomm dann nur checkboxen irgendwo am screen, und nen haufen errors....
€dit: kannst/willst du mich ma in steam adden ? :] waere bisschen einfacher als hier^
Du musst noch ein DPanel machen (genauso wie DFrame) und zu diesen Panels die Buttons usw hinzufügen und das Panel dann zu dem PropertySheet hinzufügen.
Wennst es nicht verstehst poste ich nacher noch ein Code Beispiel, jetzt kann ich das nicht weil ich noch in der Schule sitz (Letzte Stunde Elektronik Werkstatt für meine Schulzeit ftw :D)
joa pls^ mach ma n code rein :p bei mir is dann zwar ein frame aber kp wie ich das da SetParent mache...
local Fenster = vgui.Create("DFrame");//einen Frame erstellen
Fenster:SetPos( ScrW() / 2 - 200, ScrH() / 2 - 200 ) //zentrieren
Fenster:SetSize(400, 400); //größe
Fenster:SetTitle("Derma Test"); //Titel
Fenster:SetVisible(true); //sichtbar machen
Fenster:SetDraggable(true); //man kann es bewegen
Fenster:ShowCloseButton(true); //das X zum schließen anzeigen
Fenster:MakePopup(); //erscheinen lassen
local Seite1 = vgui.Create("DPanel"); //das Panel erstellen
Seite1:SetPos(10, 10); //position
Seite1:SetSize(370, 370); //größe
local Tabs = vgui.Create("DPropertySheet"); //die Tabs erstellen
Tabs:SetParent(Fenster); //Parent setzen
Tabs:SetSize(390, 350);//größe
Tabs:SetPos(5, 10);//position
local NameText = vgui.Create("DLabel", Seite1); //eine Text erstellen, der Zweite Parameter gibt das Parent an dann muss man nicht SetParent().. machen
NameText:SetPos(20, 20);
NameText:SetText("Name:"); //Text der dort stehen soll
NameText:SizeToContents(); //die größe an den inhalt anpassen
local NameTextEntry = vgui.Create("DTextEntry", Seite1);
NameTextEntry:SetPos(110, 20);
NameTextEntry:SetTall(20); //höhe
NameTextEntry:SetWide(80); //breite
NameTextEntry:SetEnterAllowed(true);
local NationChoice = vgui.Create("DMultiChoice", Seite1);
NationChoice:SetPos(20, 110);
NationChoice:SetWide(100);
NationChoice:AddChoice("AUT");
NationChoice:AddChoice("CH");
NationChoice:AddChoice("GER");
function NationChoice:OnSelect(index, value, data)
//hier was machen was ausgwählt ist
end
local CloseButton = vgui.Create("DButton", Seite1);
CloseButton:SetPos(340, 230);
CloseButton:SetSize(100, 20);
CloseButton:SetText("schliesen");
CloseButton.DoClick = function ()
Fenster:Close()
end
local ModelPanel = vgui.Create("DPanelList");
ModelPanel:SetPos(5,5);
ModelPanel:SetSize(380, 340);
ModelPanel:SetSpacing(5);
local icon = vgui.Create("SpawnIcon");
icon:SetSize( 64, 64 );
icon:SetModel( "models/player/Group01/male_01.mdl" );
icon.DoClick = function() model = v end
ModelPanel:AddItem(icon);
Tabs:AddSheet( "Allgemein", Seite1, "gui/silkicons/user", false, false, "Allgemeine Angaben zum Spieler" )
Tabs:AddSheet( "Model", ModelPanel, "gui/silkicons/group", false, false, "Spieler Model" )
Ich bin mir nicht sicher ob das Funktioniert, aber ich hoffs mal, weil ich das ungefähr auch so verwende.
P.S.: http://wiki.garrysmod.com/wiki/?title=Guide_to_Derma
joa, das hilft schon mehr :] thx, kannste mich vlt trotzdem adden? ;D
hey, kann man die textfarbe von Derma aendern ?
local credits = vgui.Create("DLabel",tab1)
credits:SetPos(16,200);
credits:SetText("Made by Stoned")
credits:SizeToContents()
lg
Hier (http://wiki.garrysmod.com/wiki/?title=Client_Function_Dump#Panel_.28Object.29) findest du ein paar Color Befehle in der Liste...
Musst sie dir mal raussuchen und ausprobieren, da sie noch undokumentiert sind.
Anstelle von Panel schreibst du dann natürlich z.B. wie oben credits
jo thx, nur zB panel:SetFont() hab ich kp was da rein muss D: vlt BudgetLabel aber kA :s
pls help
Powered by vBulletin® Version 4.2.2 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.