CremeLover Posted June 11, 2015 Share Posted June 11, 2015 Hi, I've been trying to figure out a way to make this work out, but I need some help. I'm trying to add a custom button to the client table. So far is working just fine. http://i.imgur.com/1W16cJ5.jpg Despite all that, I've been unable to add it to every instance of every player in the server.This button shows only for admins and only in the people that are not admins (just like the ban/kick button). I've been trying to use this piece of code to add it to every instance of the player, but I haven't been able to get it to work.AddGlobalClassPostConstruct("screens/playerstatusscreen", "playerStatus", function(self) local ClientObjs = GLOBAL.TheNet:GetClientTable() self.blocklist = self.root:AddChild(ScrollableList(ClientObjs, 380, 370, 60, 5, blockConstructor, nil, nil, nil, nil, nil, -15))end)I'm new to lua, so maybe I'm missing some simple, dumb, crucial fact. Please don't be mean. I'm new to lua, so maybe I'm missing some simple, dumb, crucial fact. Please don't be mean. Link to comment Share on other sites More sharing options...
DarkXero Posted June 11, 2015 Share Posted June 11, 2015 @CremeLover, what do you want to do? To throw people into the blocklist you just ban them. If you want to check the blocklist then all you need is one button, so you did ok. Link to comment Share on other sites More sharing options...
CremeLover Posted June 11, 2015 Author Share Posted June 11, 2015 @DarkXero Sorry, I forgot to explain myself. I made this mode specifically for the server I play to protect from griefers. We could put a password as well, but still we would like to meet new people. So what this mod does is create a property for every non admin player that stops them from using a hammer, stealing from chest, lit stuff on fire... you get the idea. I added a function to make it work by console, but I would like to make it simpler to use by just adding a button near the name in the tab menu that does all the work. So what I was trying to do is to implement the button so that it creates one for every instance of Player in the server Hope that clears it. Link to comment Share on other sites More sharing options...
CremeLover Posted June 11, 2015 Author Share Posted June 11, 2015 (edited) The new button would block, and unblock people respectively. (Sorry, can't find the edit button on the post) EDIT: Nvm, Apparently, I need to have 5 post minimun to edit my previous post, so yeah. Edited June 11, 2015 by CremeLover Link to comment Share on other sites More sharing options...
DarkXero Posted June 12, 2015 Share Posted June 12, 2015 @CremeLover, ok, I looked into this. Do it like thislocal Text = GLOBAL.require("widgets/text")local ImageButton = GLOBAL.require("widgets/imagebutton")local PopupDialogScreen = GLOBAL.require "screens/popupdialog"AddGlobalClassPostConstruct("screens/playerstatusscreen", "playerStatus", function(self) local old = self.scroll_list.constructor self.scroll_list.constructor = function(v, i) local ret = old(v, i) if not (v.userid == GLOBAL.ThePlayer.userid) then local displayName = self:GetDisplayName(v) ret.block = ret:AddChild(ImageButton("images/scoreboard.xml", "banhammer.tex", "banhammer.tex", "banhammer.tex", "banhammer.tex")) ret.block:SetPosition(220, 3 , 0) ret.block.label = ret.block:AddChild(Text(GLOBAL.UIFONT, 25, GLOBAL.STRINGS.UI.PLAYERSTATUSSCREEN.BAN)) ret.block.label:SetPosition(3, 33, 0) ret.block.label:Hide() ret.block.OnGainFocus = function() ret.block.label:Show() GLOBAL.TheFrontEnd:GetSound():PlaySound("dontstarve/HUD/click_mouseover") ret.block:SetScale(1.1) end ret.block.OnLoseFocus = function() ret.block.label:Hide() ret.block:SetScale(1) end ret.block:SetOnClick( function() GLOBAL.TheFrontEnd:PushScreen( PopupDialogScreen( GLOBAL.STRINGS.UI.PLAYERSTATUSSCREEN.BANCONFIRM_TITLE.." "..displayName, GLOBAL.STRINGS.UI.PLAYERSTATUSSCREEN.BANCONFIRM_BODY.." "..displayName.."?", { {text=GLOBAL.STRINGS.UI.PLAYERSTATUSSCREEN.OK, cb = function() print("Hello", v.userid) GLOBAL.TheFrontEnd:PopScreen() GLOBAL.TheFrontEnd:PopScreen() end}, {text=GLOBAL.STRINGS.UI.PLAYERSTATUSSCREEN.CANCEL, cb = function() GLOBAL.TheFrontEnd:PopScreen() GLOBAL.TheFrontEnd:PopScreen() end} } )) end) end return ret endend)This is the basics, I guess. I copied the ban button and appended it as an extra button. It should appear on anybody who isn't you (different userids). You want to turnprint("Hello", v.userid)into a SendModRPC that executes when reaches your server, you execute your function. Link to comment Share on other sites More sharing options...
CremeLover Posted June 12, 2015 Author Share Posted June 12, 2015 (edited) @DarkXero Thank you so much for your help, seriously, I couldn't figure out that one. I wasn't aware that you could just access the paramethers like that, it saves me alot of trouble. Im asumming it will also work if I use another paramethers of the same function such as itempadding or updatefn? Now, I came across another problem, which I still can't get across. When I try to modify the properties from the individual players of the list (block them in this case), I can't get it to change the state of the player (probably because I'm trying to access the data from a table, instead of the actual entity). I tried TheNet:GetClientTable() to get the player data, but obviously is another table, so it raises the same problem again. Also, something I should've done in the first time, I attach the code. Sorry for giving you the trouble of doing all the interface of your own and thanks again.modmain.lua Edited June 12, 2015 by CremeLover Link to comment Share on other sites More sharing options...
CremeLover Posted June 12, 2015 Author Share Posted June 12, 2015 As it turns out, I can acess AllPlayers by just adding GLOBAL. in front of it, which has been the case with almost everything else. Lua is so weird... Thank your for your help. I mean it. Link to comment Share on other sites More sharing options...
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