Get other persons playermodel after looking them up..
11 replies, posted
So I'm not sure the best way to go about this..
What I have now is (in theory) you should be able to look up a player and grab their name and playermodel.
[code]
local search = vgui.Create( "DTextEntry", mainpanel ) -- create the form as a child of frame
search:SetPos( 25, 125 )
search:SetSize( 200, 45 )
search:SetText( "Put person's name here" )
search.OnEnter = function( ply )
-- Where the *find player code goes and grab player model*
*/
Pseudocode attempt:
check players name == a player on the server
if player model is good then make model appear along with their info
elseif then make another derma/box pop up asking if they are spelling the name correctly.
end
*\
end
[/code]
Not sure of the best way to go about making sure the players name is okay and then grab their model. Facepunch has been nice to me today so lets see if the streak keeps going! :)
try loopying through all players with player.GetAll() then check if string.lower(search:GetValue()) == string.lower(ply:Nick()). If true the ply:GetModel() would be the Model of the player AS a string. You can display it with a DModelPanel.
[editline]16th February 2016[/editline]
Also, you might want to have a DListView with a search bar. Would be more easy for players to use, because they do not need to know the exact name.
[QUOTE=P4sca1;49751935]try loopying through all players with player.GetAll() then check if string.lower(search:GetValue()) == string.lower(ply:Nick()). If true the ply:GetModel() would be the Model of the player AS a string. You can display it with a DModelPanel.
[editline]16th February 2016[/editline]
Also, you might want to have a DListView with a search bar. Would be more easy for players to use, because they do not need to know the exact name.[/QUOTE]
So i've done what you said and it somewhat works..
[code]
local plylist = vgui.Create("DListView", mainpanel)
plylist:SetParent(mainpanel)
plylist:SetPos(10, 300)
plylist:SetSize(200, 125)
plylist:SetMultiSelect(false)
local clmColumn1 = plylist:AddColumn("Name")
clmColumn1:SetMinWidth(200)
clmColumn1:SetMaxWidth(200)
for k,v in pairs(player.GetAll()) do
plylist:AddLine(v:Nick()) -- Add lines
end
plylist.DoDoubleClick = function( checkid )
DModel = vgui.Create( "DModelPanel", mainpanel)
DModel:SetModel(LocalPlayer():GetModel())
DModel:SetPos(250,25)
DModel:SetSize(250, 250)
local eyepos = DModel.Entity:GetBonePosition( DModel.Entity:LookupBone( "ValveBiped.Bip01_Head1" ) )
eyepos:Add( Vector( 0, 0, 2 ) ) -- Move up slightly
DModel:SetLookAt( eyepos )
DModel:SetCamPos( eyepos-Vector( -12, 0, 0 ) ) -- Move cam in front of eyes
DModel.Entity:SetEyeTarget( eyepos-Vector( -12, 0, 0 ) )
local name = vgui.Create("DLabel",mainpanel)
name:SetSize(30,30)
name:SetFont("Trebuchet24")
name:SetText("Name: ".. ply:GetName())
name:SetPos(10,150)
name:SizeToContents()
local wanted = vgui.Create("DButton", mainpanel)
wanted:SetPos(10, 400)
wanted:SetSize(200,75)
wanted:SetText("Check wanted Status")
wanted:SizeToContents()
wanted.Paint = function(s,w,h)
draw.RoundedBox(10,0,0,w,h,Color(125,125,125))
end
end
[/code]
Except it gets MY playermodel.. not the bots..
It gets your playermodel because that's exactly what you are telling it to do with this line:
[lua]
DModel:SetModel(LocalPlayer():GetModel())
[/lua]
maybe do something like this
[lua]
local PLList = { }
for k,v in pairs(player.GetAll()) do
plylist:AddLine(v:Nick()) -- Add lines
table.Insert( PLList, v )
end
---
---
if ( PLList[ checkid ] ) then
DModel:SetModel( PLList[ checkid ]:GetModel())
end
[/lua]
Cheers, will try :)
[QUOTE=James xX;49753995]It gets your playermodel because that's exactly what you are telling it to do with this line:
[lua]
DModel:SetModel(LocalPlayer():GetModel())
[/lua]
maybe do something like this
[lua]
local PLList = { }
for k,v in pairs(player.GetAll()) do
plylist:AddLine(v:Nick()) -- Add lines
table.Insert( PLList, v )
end
---
---
if ( PLList[ checkid ] ) then
DModel:SetModel( PLList[ checkid ]:GetModel())
end
[/lua][/QUOTE]
Hey so I just got around to testing it.. made some major GUI improvements. Except I am getting this error
[code]
[ERROR] lua/test:155: attempt to call field 'Insert' (a nil value)
1. DoClick - lua/test:155
2. unknown - lua/vgui/dlabel.lua:218
[/code]
[QUOTE=AustinH;49775576]Hey so I just got around to testing it.. made some major GUI improvements. Except I am getting this error
[code]
[ERROR] lua/test:155: attempt to call field 'Insert' (a nil value)
1. DoClick - lua/test:155
2. unknown - lua/vgui/dlabel.lua:218
[/code][/QUOTE]
table.insert doesn't have a capital I
[QUOTE=MPan1;49775701]table.insert doesn't have a capital I[/QUOTE]
Right except all it does now is
[code]
[ERROR] lua/test:161: attempt to index a nil value
1. DoDoubleClick - lua/test:161
2. OnClickLine - lua/vgui/dlistview.lua:478
3. unknown - lua/vgui/dlistview_line.lua:93
[/code]
[code]
drawmodel:SetModel(PLList[ checkid ]:GetModel()) -- Set to selected players model
[/code]
[QUOTE=AustinH;49775816]Right except all it does now is
[code]
[ERROR] lua/test:161: attempt to index a nil value
1. DoDoubleClick - lua/test:161
2. OnClickLine - lua/vgui/dlistview.lua:478
3. unknown - lua/vgui/dlistview_line.lua:93
[/code]
[code]
drawmodel:SetModel(PLList[ checkid ]:GetModel()) -- Set to selected players model
[/code][/QUOTE]
Because you haven't set checkid as anything?
[QUOTE=MPan1;49775831]Because you haven't set checkid as anything?[/QUOTE]
its a function
[code]
local PLList = {}
for k,v in pairs(player.GetAll()) do
plylist:AddLine(v:Nick()) -- Add lines
end
plylist.DoDoubleClick = function (checkid)
table.insert( PLList, v )
drawmodel = vgui.Create( "DModelPanel", mainpan2)
drawmodel:SetModel(PLList[ checkid ]:GetModel()) -- Set to selected players model
[/code]
[QUOTE=AustinH;49775850]its a function
[code]
local PLList = {}
for k,v in pairs(player.GetAll()) do
plylist:AddLine(v:Nick()) -- Add lines
end
plylist.DoDoubleClick = function (checkid)
table.insert( PLList, v )
drawmodel = vgui.Create( "DModelPanel", mainpan2)
drawmodel:SetModel(PLList[ checkid ]:GetModel()) -- Set to selected players model
[/code][/QUOTE]
Try this instead:
[CODE]
plylist.DoDoubleClick = function(self, checkid)
[/CODE]
You might be using the panel as the key rather than the actual line's ID
[QUOTE=MPan1;49775889]Try this instead:
[CODE]
plylist.DoDoubleClick = function(self, checkid)
[/CODE]
You might be using the panel as the key rather than the actual line's ID[/QUOTE]
Done that now but still returning a nil value. It's all being ran clientside if that matters
Sorry, you need to Log In to post a reply to this thread.