#DaNiLiN Posted July 17, 2018 Share Posted July 17, 2018 Ajudem - me, será que existe algum mod de fazer o anti kill team funciona pela acl e não pelo teamtab? Link to comment
Other Languages Moderators Lord Henry Posted July 17, 2018 Other Languages Moderators Share Posted July 17, 2018 (edited) Não. Tem que estar no mesmo team. Também daria pra fazer isso cancelando o dano que o player recebe no evento onClientPlayerDamage. Mas isso é feito client-side e a verificação de ACL tem que ser server-side. Edited July 17, 2018 by Lord Henry Link to comment
FeniXMTA Posted July 19, 2018 Share Posted July 19, 2018 On 17/07/2018 at 14:49, Lord Henry said: Não. Tem que estar no mesmo team. Também daria pra fazer isso cancelando o dano que o player recebe no evento onClientPlayerDamage. Mas isso é feito client-side e a verificação de ACL tem que ser server-side. Voce fala assim no Client . function AntKill () cancelEvent () end addEventHandler("onClientPlayerDamage",getRootElement(),AntKill) Link to comment
[M]ister Posted July 19, 2018 Share Posted July 19, 2018 (edited) Realmente não sei porque a galera do brasil ainda teima em fazer o sistema de ACL como se fosse de team, cada um tem um proposito... Tal tarefa seria bem mais fácil se estivesse usando as funcionalidades especificas de team! Enfim, tentei criar um script aqui rapidão, que talvez consiga suprir suas necessidades... server-side local update = 5 -- min setTimer(function() for _,player in ipairs(getElementsByType("player")) do local account = getPlayerAccount(player) if (account) and not (isGuestAccount(account)) then local acl = {} local accountName = getAccountName(account) local objectString = "user."..accountName for _,group in ipairs(aclGroupList()) do if (isObjectInACLGroup(objectString, group)) then local groupName = aclGroupGetName(group) table.insert(acl,groupName) end end if #acl > 0 then setElementData(player,"acls",acl) end end end end,update*60000,0) client-side addEventHandler ( "onClientPlayerDamage", getLocalPlayer(), function(attacker) local aclAttacker = getElementData(attacker,"acls") or false local aclSource = getElementData(source,"acls") or false local allowAttack = true if (aclAttacker and aclSource) then for _,aclName in ipairs(aclAttacker) do for _,aclName2 in ipairs(aclSource) do if aclName == aclName2 then allowAttack = false break end end if not allowAttack then break end end end if not allowAttack then cancelEvent() end end ) Não testei, e nem sei se esta é a melhor forma de fazer isso! Edited July 19, 2018 by MaligNos 1 Link to comment
Other Languages Moderators Lord Henry Posted July 20, 2018 Other Languages Moderators Share Posted July 20, 2018 19 hours ago, MaligNos said: Realmente não sei porque a galera do brasil ainda teima em fazer o sistema de ACL como se fosse de team, cada um tem um proposito... Tal tarefa seria bem mais fácil se estivesse usando as funcionalidades especificas de team! Enfim, tentei criar um script aqui rapidão, que talvez consiga suprir suas necessidades... [...] Não testei, e nem sei se esta é a melhor forma de fazer isso! Concordo. E está correta a sua ideia em setar as ACLs do jogador como element data, assim ela pode ser lida facilmente no client sem ficar usando triggers. Fazer a verificação direto no server seria inviável e pesado no processamento, visto que cada vez que cada jogador tomar dano, o client precisaria de um triggerServerEvent para verificar isso no server, o que acaba consumindo muito processamento. 1 Link to comment
FeniXMTA Posted July 23, 2018 Share Posted July 23, 2018 On 19/07/2018 at 18:27, MaligNos said: Realmente não sei porque a galera do brasil ainda teima em fazer o sistema de ACL como se fosse de team, cada um tem um proposito... Tal tarefa seria bem mais fácil se estivesse usando as funcionalidades especificas de team! Enfim, tentei criar um script aqui rapidão, que talvez consiga suprir suas necessidades... server-side local update = 5 -- min setTimer(function() for _,player in ipairs(getElementsByType("player")) do local account = getPlayerAccount(player) if (account) and not (isGuestAccount(account)) then local acl = {} local accountName = getAccountName(account) local objectString = "user."..accountName for _,group in ipairs(aclGroupList()) do if (isObjectInACLGroup(objectString, group)) then local groupName = aclGroupGetName(group) table.insert(acl,groupName) end end lado do cliente ) Não testei, e nem sei se esta é a melhor forma de fazer isso! Funcionou não. Link to comment
[M]ister Posted July 23, 2018 Share Posted July 23, 2018 Agora eu realmente testei, e funcionou como devia (testei com um ped)! Uma observação, só iria fazer efeito 5 minutos após ativar o script, segue algumas melhorias abaixo no script do lado servidor: local update = 5 -- min local defaultAcls = { "Everyone", "Moderator", "SuperModerator", "Admin", "Console" } function setAclData(player) local account = getPlayerAccount(player) if (account) and not (isGuestAccount(account)) then local acl = {} local accountName = getAccountName(account) local objectString = "user."..accountName for _,group in ipairs(aclGroupList()) do if (isObjectInACLGroup(objectString, group)) then local isDefaultAcl = false local groupName = aclGroupGetName(group) for _,default in pairs(defaultAcls) do if (groupName == default) then isDefaultAcl = true break end end if (not isDefaultAcl) then table.insert(acl,groupName) end end end if #acl > 0 then setElementData(player,"acls",acl) end end end setTimer(function() for _,player in ipairs(getElementsByType("player")) do setAclData(player) end end, update*60000, 0) addEventHandler("onResourceStart", resourceRoot, function() for _,player in ipairs(getElementsByType("player")) do setAclData(player) end end ) addEventHandler("onPlayerLogin", root, function() setAclData(source) end ) Por padrão, todos usuários estão inclusos na ACL "Everyone" e pelo script anterior ninguém ia conseguir matar ninguém e nesse corrige isso, além de possibilitar que staffs também possam se matar.... Link to comment
FeniXMTA Posted July 23, 2018 Share Posted July 23, 2018 1 hour ago, MaligNos said: Agora eu realmente testei, e funcionou como devia (testei com um ped)! Uma observação, só iria fazer efeito 5 minutos após ativar o script, segue algumas melhorias abaixo no script do lado servidor: local update = 5 -- min local defaultAcls = { "Everyone", "Moderator", "SuperModerator", "Admin", "Console" } function setAclData(player) local account = getPlayerAccount(player) if (account) and not (isGuestAccount(account)) then local acl = {} local accountName = getAccountName(account) local objectString = "user."..accountName for _,group in ipairs(aclGroupList()) do if (isObjectInACLGroup(objectString, group)) then local isDefaultAcl = false local groupName = aclGroupGetName(group) for _,default in pairs(defaultAcls) do if (groupName == default) then isDefaultAcl = true break end end if (not isDefaultAcl) then table.insert(acl,groupName) end end end if #acl > 0 then setElementData(player,"acls",acl) end end end setTimer(function() for _,player in ipairs(getElementsByType("player")) do setAclData(player) end end, update*60000, 0) addEventHandler("onResourceStart", resourceRoot, function() for _,player in ipairs(getElementsByType("player")) do setAclData(player) end end ) addEventHandler("onPlayerLogin", root, function() setAclData(source) end ) Por padrão, todos usuários estão inclusos na ACL "Everyone" e pelo script anterior ninguém ia conseguir matar ninguém e nesse corrige isso, além de possibilitar que staffs também possam se matar.... Funcionou não; Link to comment
[M]ister Posted July 25, 2018 Share Posted July 25, 2018 É, não sei o que ocorreu então, porque ao meu ver é funcional... Enfim, já mais que mostrei uma possibilidade de se fazer isso, agora tente encontrar o porque de não estar funcionando ou tente outro tipo de solução, porque pelo que eu saiba tú @FeniXMTA é "scripter" pelo que falam no Facebook... Link to comment
FeniXMTA Posted July 25, 2018 Share Posted July 25, 2018 2 hours ago, MaligNos said: É, não sei o que ocorreu então, porque ao meu ver é funcional... Enfim, já mais que mostrei uma possibilidade de se fazer isso, agora tente encontrar o porque de não estar funcionando ou tente outro tipo de solução, porque pelo que eu saiba tú @FeniXMTA é "scripter" pelo que falam no Facebook... Sim vlw ae,já arrumei. 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