PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GetSelectedItems funktion.



Northdegree
19.03.2012, 21:45
Hallo liebe Leute,

ich bin immoment dabei einen Admin-Mod für Garry's Mod 13 zu programmieren und hänge an einer (nett ausgedrückt) doofen Stelle fest.

Es geht um die Zeile 112 in meinem Script.

Diese Zeile lautet:

if ( #self:GetSelectedItems() > 0 ) then


Wenn ich den Script testweise anschalte bekomme ich folgenden Fehler:


[lua\ev_menu\tab_players_controls.lua:112] attempt to call method 'GetSelectedItems' (a nil value)

Es hat für mich den anschein, als ob die Funktion "GetSelectedItems" in Garry's Mod 13 nicht mehr exestent ist.

Gibt es eine alternative zu dieser Funktion oder einen Weg dies per selbstgeschriebener Funktion zu realisieren?

Mit freundlichen Grüßen
Northdegree

Neutron
19.03.2012, 22:57
Hey, guck mal nach ob "self" auch wirklich die Liste oder woraus du es auslesen willst ist.

Northdegree
21.03.2012, 19:44
sollte es sein ^^ ... du hast den code ja gesehen.. aber es funktioniert ja immernoch nicht.

zQaX
21.03.2012, 20:17
http://h9.abload.de/img/dcomboboxxalql.png

https://docs.google.com/document/d/1khSuIYrAMkqXu7wlH5YRJNwz6hOH6Xqi5lqBhE3x6gA/edit?pli=1

Northdegree
21.03.2012, 20:47
Is mir klar, aber es funktioniert nicht.

Northdegree
22.03.2012, 14:05
Nur nochmal der vollständigkeitshalber:


derma.DefineControl( "EPlayerList", "Stylish player list", PANEL, "DComboBox" )

PlayerList = vgui.Create( "EPlayerList", pnl )
PlayerList:SetPos( 0, 0 )
PlayerList:SetSize( self.Width, pnl:GetParent():GetTall() - 58 )

function PANEL:Populate()
local selectedPlayers = {}
if ( #PlayerList:GetSelectedItems() > 0 ) then
for _, item in ipairs( PlayerList:GetSelectedItems() ) do
if ( IsValid( item.Player ) ) then table.insert( selectedPlayers, item.Player ) end
end
end

PlayerList:Clear()

local players = {}
for _, pl in ipairs( player.GetAll() ) do table.insert( players, { Name = pl:Nick(), Ply = pl } ) end
table.SortByMember( players, "Name", function( a, b ) return a > b end )

for _, pl in ipairs( players ) do
local item = PlayerList:AddPlayer( pl.Ply )

item.DoClick= function( mc )
if ( item.LastClick and os.clock() < item.LastClick + 0.3 and item.LastX == gui.MouseX() and item.LastY == gui.MouseY() ) then
item:MoveTo( -PlayerList.Parent.Width, 0, 0.1 )
item.Parent.PluginList:MoveTo( 0, 0, 0.1 )
item.Parent.ButPlugins:SetButtonText( "Players" )
end

item.LastClick = os.clock()
item.LastX, item.LastY = gui.MousePos()
end

if ( table.HasValue( selectedPlayers, pl.Ply ) ) then
PlayerList:SelectItem( item )
end
end

if ( #PlayerList:GetSelectedItems() == 0 ) then
PlayerList:SelectFirstItem()
end
end

RP-01
12.04.2012, 06:52
https://docs.google.com/document/d/1khSuIYrAMkqXu7wlH5YRJNwz6hOH6Xqi5lqBhE3x6gA/edit?pli=1
Danke für diesen Link. In den Docs werden ja schon mal einige der Bug-Herde erklärt und können mit Hilfe dessen beseitigt werden.