PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Derma Frage



Stoned
11.06.2008, 12:27
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)

Pac_187
11.06.2008, 13:13
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:

Stoned
11.06.2008, 13:39
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

Pac_187
11.06.2008, 14:22
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.

Stoned
11.06.2008, 14:33
ich bin ingame, nur das ich keine registerkarten hab :0#

Pac_187
11.06.2008, 14:38
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!

Stoned
11.06.2008, 14:56
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..

Pac_187
11.06.2008, 15:13
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!

Stoned
11.06.2008, 15:29
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^

SMILIE
11.06.2008, 16:06
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)

Stoned
11.06.2008, 18:35
joa pls^ mach ma n code rein :p bei mir is dann zwar ein frame aber kp wie ich das da SetParent mache...

SMILIE
11.06.2008, 19:44
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

Stoned
11.06.2008, 20:04
joa, das hilft schon mehr :] thx, kannste mich vlt trotzdem adden? ;D

Stoned
13.06.2008, 12:26
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

Pac_187
13.06.2008, 17:42
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

Stoned
13.06.2008, 20:53
jo thx, nur zB panel:SetFont() hab ich kp was da rein muss D: vlt BudgetLabel aber kA :s

pls help