dewu Posted February 3, 2015 Posted February 3, 2015 Hi guys. I find this script: viewtopic.php?f=108&t=52663 and i want when type /gpp, view only one group (VIP) on right listed. How to do that? This get all ACL Groups: -- get groups addEvent("getGroups",true) addEventHandler("getGroups",root, function () groups = {} for i,group in ipairs(aclGroupList()) do -- get all groups table.insert(groups,aclGroupGetName(group)) end for i,v in ipairs(groups) do -- get all groups in table triggerClientEvent(source,"addGroups",source,v) end end ) but i want only ONE.
Tomas Posted February 3, 2015 Posted February 3, 2015 -- get groups addEvent("getGroups",true) addEventHandler("getGroups",root, function () groups = {} for i,group in ipairs(aclGroupList()) do -- get all groups if aclGroupGetName(group) == "VIP" then table.insert(groups,aclGroupGetName(group)) end end for i,v in ipairs(groups) do -- get all groups in table triggerClientEvent(source,"addGroups",source,v) end end )
dewu Posted February 3, 2015 Author Posted February 3, 2015 Ow, it's working, thanks! Anothers, i'm trying to create ACL object listing: addEvent("getGroups",true) addEventHandler("getGroups",root, function () objects = {} for i,object in ipairs(aclGroupListObjects(aclGetGroup(allowedGroup))) do -- get all groups table.insert(objects,getAccountName(object)) end for i,v in ipairs(objects) do -- get all groups in table triggerClientEvent(source,"addGroups",source,v) end end ) but i've got these error: [2015-02-03 20:05:56] WARNING: gpp\server.lua:22: Bad argument @ 'getAccountName' [Expected account at argument 1, got string 'user.143'] [2015-02-03 20:05:56] WARNING: gpp\server.lua:22: Bad argument @ 'getAccountName' [Expected account at argument 1, got string 'user.155'] [2015-02-03 20:05:56] WARNING: gpp\server.lua:22: Bad argument @ 'getAccountName' [Expected account at argument 1, got string 'user.150'] [2015-02-03 20:05:56] WARNING: gpp\server.lua:22: Bad argument @ 'getAccountName' [Expected account at argument 1, got string 'user.dewu']
undefined Posted February 3, 2015 Posted February 3, 2015 (edited) Try it: addEvent("getGroups",true) addEventHandler("getGroups",root, function() objects = {} for i,object in ipairs(aclGroupListObjects(aclGetGroup(allowedGroup))) do -- get all groups table.insert(objects,string.gsub(object, "user.","")) end for i,v in ipairs(objects) do -- get all groups in table triggerClientEvent(source,"addGroups",source,v) end end) Edited February 3, 2015 by Guest
dewu Posted February 3, 2015 Author Posted February 3, 2015 So fast! but [2015-02-03 20:14:49] ERROR: gpp\server.lua:21: bad argument #2 to 'insert' (number expected, got string) Line 21: table.insert(objects,string.gsub(object, "user.",""))
undefined Posted February 3, 2015 Posted February 3, 2015 Sometimes this error can give. addEvent("getGroups",true) addEvent("getGroups",true) addEventHandler("getGroups",root, function() objects = {} for i,object in ipairs(aclGroupListObjects(aclGetGroup(allowedGroup))) do -- get all groups local account_name = string.gsub(object, "user.", "") table.insert(objects,account_name) end for i,v in ipairs(objects) do -- get all groups in table triggerClientEvent(source,"addGroups",source,v) end end)
dewu Posted February 3, 2015 Author Posted February 3, 2015 One more question, please! I'd like to have option with removing listed objects. There is script to remove player from chosen group: -- remove player from chosen group addEvent("remove_g",true) addEventHandler("remove_g",root, function (splayer,sgroup) if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(source)),aclGetGroup(allowedGroup)) then if not isGuestAccount(getPlayerAccount(getPlayerFromName(tostring(splayer)))) then aclGroupRemoveObject (aclGetGroup(sgroup), "user."..getAccountName(getPlayerAccount(getPlayerFromName(splayer)))) outputChatBox("* "..splayer.." successfully removed from "..sgroup.."",source,0,255,0) outputChatBox("* You've been removed from "..sgroup.."",getPlayerFromName(splayer),255,0,0) else outputChatBox("* You can't remove "..splayer.." from "..sgroup.." because he is not logged in",source,255,0,0) end else outputChatBox("* You don't have rights to do this.",source,255,0,0) outputDebugString("* "..getPlayerName(source).." had attempted to hack the server",2) end end ) "user."..getAccountName(getPlayerAccount(getPlayerFromName(splayer)))) but the question is: how to get object from chosen group and remove it?
dewu Posted February 3, 2015 Author Posted February 3, 2015 I already tried but, but it's not working. addEvent("remove_g",true) addEventHandler("remove_g",root, function (splayer,sgroup) if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(source)),aclGetGroup(allowedGroup)) then aclGroupRemoveObject (aclGetGroup(sgroup), "user."..getAccountPlayer ( splayer )) outputChatBox("* "..splayer.." succesfully removed..",source,0,255,0) outputChatBox("* You have been removed by "..getPlayerName(source).."",getPlayerFromName(splayer),0,255,0) outputDebugString("* "..getPlayerName(source).." had attempted to hack the server",2) end end)
undefined Posted February 3, 2015 Posted February 3, 2015 what is the type of splayer? string, userdata[player-account]...?
dewu Posted February 3, 2015 Author Posted February 3, 2015 AbaZaSiRiN00, I use your code to listing ACL objects. Now i want to have option to remove them from these list.
undefined Posted February 3, 2015 Posted February 3, 2015 You don't understand me. I'm asking what happened of splayer.
dewu Posted February 4, 2015 Author Posted February 4, 2015 Aww.. okay. splayer is a part of client-side script: GUIEditor = { gridlist = {}, button = {}, label = {}, window = {}, } gpp = guiCreateWindow(126, 100, 802, 346, "Panel właściciela bazy", false) guiSetVisible(gpp,false) guiWindowSetSizable(gpp, false) guiSetAlpha(gpp, 1.00) pgrid = guiCreateGridList(34, 51, 225, 232, false, gpp) pc = guiGridListAddColumn(pgrid, "Gracze online :", 0.9) GUIEditor.label[1] = guiCreateLabel(42, 25, 121, 19, "1 - Wybierz gracza :", false, gpp) dgrid = guiCreateGridList(526, 51, 221, 232, false, gpp) dc = guiGridListAddColumn(dgrid, "Lokatorzy :", 0.9) GUIEditor.label[1] = guiCreateLabel(530, 25, 121, 19, "1 - Wybierz lokatora :", false, gpp) ggrid = guiCreateGridList(280, 51, 223, 232, false, gpp) gc = guiGridListAddColumn(ggrid, "Twoje bazy :", 0.9) GUIEditor.label[2] = guiCreateLabel(286, 25, 121, 19, "2 - Wybierz bazę :", false, gpp) add = guiCreateButton(45, 293, 202, 39, "Dodaj ", false, gpp) guiSetProperty(add, "NormalTextColour", "FF00FF00") remove = guiCreateButton(536, 293, 202, 39, "Wyrzuć ", false, gpp) guiSetProperty(remove, "NormalTextColour", "FFFF0000") x = guiCreateButton(770, 23, 20, 18, "X", false, gpp) addEvent("show_gpp",true) addEventHandler("show_gpp",root, function () guiSetVisible(gpp,true) showCursor(true) clear() triggerServerEvent ("getGroups", getLocalPlayer()) triggerServerEvent ("getLocators", getLocalPlayer()) addPlayers() end ) function clear() guiGridListClear (ggrid) guiGridListClear (pgrid) guiGridListClear (dgrid) end addEvent("refreshg",true) addEventHandler("refreshg",root, function () clear() end ) addEvent("addGroups",true) addEventHandler("addGroups",root, function (v) guiGridListSetItemText ( ggrid, guiGridListAddRow ( ggrid ), gc,v, false, false ) end ) addEvent("addLocators",true) addEventHandler("addLocators",root, function (v) guiGridListSetItemText ( dgrid, guiGridListAddRow ( dgrid ), dc,v, false, false ) end ) function addPlayers() for i,player in ipairs(getElementsByType("player")) do local row = guiGridListAddRow(pgrid) guiGridListSetItemText ( pgrid, row, pc, (string.gsub(getPlayerName(player),'#%x%x%x%x%x%x','') or getPlayerName(player)), false, false) guiGridListSetItemData ( pgrid, row, pc, getPlayerName(player)) end end addEventHandler ( "onClientGUIClick",pgrid, function () splayer = guiGridListGetItemText ( pgrid, guiGridListGetSelectedItem ( pgrid ), 1 ) sgroup = guiGridListGetItemText ( ggrid, guiGridListGetSelectedItem ( ggrid ), 1 ) guiSetText(add,"Dodaj "..splayer.." do "..sgroup.."") guiSetText(remove,"Wyrzuć ") end ) addEventHandler ( "onClientGUIClick",ggrid, function () splayer = guiGridListGetItemText ( pgrid, guiGridListGetSelectedItem ( pgrid ), 1 ) sgroup = guiGridListGetItemText ( ggrid, guiGridListGetSelectedItem ( ggrid ), 1 ) guiSetText(add,"Dodaj "..splayer.." do "..sgroup.."") guiSetText(remove,"Wyrzuć ") end) addEventHandler ( "onClientGUIClick",dgrid, function () slocator = guiGridListGetItemText ( dgrid, guiGridListGetSelectedItem ( dgrid ), 1 ) sgroup = guiGridListGetItemText ( ggrid, guiGridListGetSelectedItem ( ggrid ), 1 ) guiSetText(add,"Dodaj ") guiSetText(remove,"Wyrzuć "..slocator.." z "..sgroup.."") end) function onGuiClick (button, state, absoluteX, absoluteY) if (source == add) then if splayer and sgroup then triggerServerEvent("add_g", getLocalPlayer(), guiGridListGetItemData(pgrid, guiGridListGetSelectedItem ( pgrid ), 1),sgroup) end elseif (source == remove) then if slocator and sgroup then triggerServerEvent("remove_g", getLocalPlayer(), guiGridListGetItemData(dgrid, guiGridListGetSelectedItem ( dgrid ), 1),sgroup) end elseif (source == x) then guiSetVisible(gpp,false) showCursor(false) end end addEventHandler ("onClientGUIClick", getRootElement(), onGuiClick) mean splayer is selected object on list. splayer = guiGridListGetItemText ( pgrid, guiGridListGetSelectedItem ( pgrid ), 1 )
dewu Posted February 4, 2015 Author Posted February 4, 2015 (edited) So, how to get on server-side, selected ACL object on client-side? Does anybody know? ;/ Edited February 4, 2015 by Guest
Tomas Posted February 4, 2015 Posted February 4, 2015 So, how to get on server-side, selected item on client-side? Does anybody know? ;/ You can trigger de player using triggerServerEvent
dewu Posted February 4, 2015 Author Posted February 4, 2015 But i can't trigger ACL object, i think ;c At least, i'm trying do that second day.. When i try do that by Client: triggerServerEvent("remove_g", getLocalPlayer(), guiGridListGetItemData(dgrid, guiGridListGetSelectedItem ( dgrid ), 1),splayer) Server: aclGroupRemoveObject (aclGetGroup(allowedGroup), "user."..splayer) i got nil value: [2015-02-04 15:38:45] ERROR: gpa\server.lua:53: attempt to concatenate local 'splayer' (a nil value) splayer - is selected ACL object on list dgrid - is a grid where objects were listed
dewu Posted February 4, 2015 Author Posted February 4, 2015 Yeah, i'm fix it. I use guiGridListGetItemText instead of guiGridListGetItemData! By the way, is way to refresh list after add/remove object?
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