Jacob Lenn Posted May 18, 2013 Share Posted May 18, 2013 Hello guys! I want to write player list based on guiCreateLabel. This has to add players on connect and delete players on disconnect. I'm writing to you with this, becouse i don't have any idea how to do this. Maybe table? Dunno. Thanks for all . Link to comment
Castillo Posted May 18, 2013 Share Posted May 18, 2013 You must use a GUI scroll pane: Functions: guiCreateScrollPane guiCreateLabel getElementsByType Events: onClientPlayerJoin onClientPlayerQuit onClientPlayerChangeNick Link to comment
Jacob Lenn Posted May 18, 2013 Author Share Posted May 18, 2013 x,y = guiGetScreenSize() window = guiCreateWindow((x-200)/2, (y-400)/2, 200, 400, "Player List", false) guiSetVisible(window, false) scrollpane = guiCreateScrollPane(0, 0, 200, 400, false, window) addCommandHandler("show", function () guiSetVisible(window, true) end ) addEventHandler("onClientResourceStart", root, function () for k,v in ipairs(getElementsByType("player")) do guiCreateLabel(0, k*15, 90, 15, tostring(getPlayerName(v)), false, scrollpane) end end ) function clear () for k,v in ipairs(getElementChildren(scrollpane)) do destroyElement(v) end for k,v in ipairs(getElementsByType("player")) do guiCreateLabel(0, k*15, 90, 15, tostring(getPlayerName(v)), false, scrollpane) end end addEventHandler("onClientPlayerJoin", root, clear) addEventHandler("onClientPlayerQuit", root, clear) addEventHandler("onClientPlayerChangeNick", root, clear) I wrote sth, but it isn't showing players and scrollpane. No errors in debug. Link to comment
Castillo Posted May 18, 2013 Share Posted May 18, 2013 It is showing it, but you just put it way too high: scrollpane = guiCreateScrollPane(0, 20, 200, 400, false, window) with that, it works. Link to comment
Jacob Lenn Posted May 18, 2013 Author Share Posted May 18, 2013 Thank you, bro. You are best. Link to comment
Jacob Lenn Posted May 18, 2013 Author Share Posted May 18, 2013 I tested it with my friend and this script added him to da list, but didn't remove. I'll show code 1 more: x,y = guiGetScreenSize() window = guiCreateWindow((x-200)/2, (y-400)/2, 200, 400, "Player List", false) scrollpane = guiCreateScrollPane(0, 20, 200, 400, false, window) addEventHandler("onClientResourceStart", root, function () for k,v in ipairs(getElementsByType("player")) do guiCreateLabel(0, k*15, 200, 15, tostring(getPlayerName(v)), false, scrollpane) end end ) function clear () for k,v in ipairs(getElementChildren(scrollpane)) do destroyElement(v) end for k,v in ipairs(getElementsByType("player")) do guiCreateLabel(0, k*15, 200, 15, tostring(getPlayerName(v)), false, scrollpane) end end addEventHandler("onClientPlayerJoin", root, clear) addEventHandler("onClientPlayerQuit", root, clear) addEventHandler("onClientPlayerChangeNick", root, clear) Link to comment
Castillo Posted May 18, 2013 Share Posted May 18, 2013 It didn't remove on who's screen? Link to comment
Jacob Lenn Posted May 18, 2013 Author Share Posted May 18, 2013 On mine when he is leaveing and on his when i am leaving the server. Link to comment
Castillo Posted May 18, 2013 Share Posted May 18, 2013 x,y = guiGetScreenSize() window = guiCreateWindow((x-200)/2, (y-400)/2, 200, 400, "Player List", false) scrollpane = guiCreateScrollPane(0, 20, 200, 400, false, window) addEventHandler("onClientResourceStart", root, function () for k,v in ipairs(getElementsByType("player")) do guiCreateLabel(0, k*15, 200, 15, tostring(getPlayerName(v)), false, scrollpane) end end ) function clear () outputChatBox ( getPlayerName ( source ) .." has ".. ( eventName == "onClientPlayerQuit" and "left" or "joined" ) .." the server" ) for k,v in ipairs(getElementChildren(scrollpane)) do destroyElement(v) end for k,v in ipairs(getElementsByType("player")) do guiCreateLabel(0, k*15, 200, 15, tostring(getPlayerName(v)), false, scrollpane) end end addEventHandler("onClientPlayerJoin", root, clear) addEventHandler("onClientPlayerQuit", root, clear) addEventHandler("onClientPlayerChangeNick", root, clear) See what it outputs on chat when your friend joins/leaves. Link to comment
Jacob Lenn Posted May 18, 2013 Author Share Posted May 18, 2013 It shows that i left the server. Link to comment
Castillo Posted May 18, 2013 Share Posted May 18, 2013 x,y = guiGetScreenSize() window = guiCreateWindow((x-200)/2, (y-400)/2, 200, 400, "Player List", false) scrollpane = guiCreateScrollPane(0, 20, 200, 400, false, window) addEventHandler("onClientResourceStart", root, function () for k,v in ipairs(getElementsByType("player")) do guiCreateLabel(0, k*15, 200, 15, tostring(getPlayerName(v)), false, scrollpane) end end ) function clear () for k,v in ipairs(getElementChildren(scrollpane)) do destroyElement(v) end for k,v in ipairs(getElementsByType("player")) do outputChatBox ( "Adding: ".. getPlayerName ( v ) .." to list!" ) guiCreateLabel(0, k*15, 200, 15, tostring(getPlayerName(v)), false, scrollpane) end end addEventHandler("onClientPlayerJoin", root, clear) addEventHandler("onClientPlayerQuit", root, clear) addEventHandler("onClientPlayerChangeNick", root, clear) Tell me what does it output now. Link to comment
Jacob Lenn Posted May 18, 2013 Author Share Posted May 18, 2013 It shows that it is adding both of us. This is strange, really . @EDIT: Problem resolved, thanks for all. if v~=source then And 2 functions for 2 events. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now