pudimzueiro Posted February 6, 2019 Share Posted February 6, 2019 pesquisei bastante mas ainda não entendi direito como usa o triggerClientEvent, eu estou criando um script de mercado negro porem eu queria que apenas quem estiver em certos grupos acl pudessem acessa-lo,eu vi que vou ter que usar o isObjectInACLGroup,atualmente estou fazendo varios testes e vendo topicos para ver como usa o script ta praticamente pronto mas qualquer um consegue comprar na loja. eu vi uns como exemplo,mas ainda não compreendo. Link to comment
Jonas^ Posted February 6, 2019 Share Posted February 6, 2019 Pode mostrar o código? e mostre o que você tentou. 1 Link to comment
pudimzueiro Posted February 6, 2019 Author Share Posted February 6, 2019 posso mostrar o codigo mas o que eu tentei eu apaguei porque toda vez a marca sumia agora vou tentar criando um arquivo client e um server pra ver se vai markerWeapon = createMarker(2678.94214, -1430.34009, 15.25723, "cylinder", 1.5, 25,25,112,200) function msg(player) outputChatBox("#ffffff Olá, AMIGO,SOU DONO DO MERCADO NEGRO SE NÃO VEIO COMPRAR ALGO VAZA!.", player, 255,255,255,true) outputChatBox("#ffffff/binquedo = #727272 500", player, 255,255,255,true) outputChatBox("#ffffff/colt = #727272 1400", player, 255,255,255,true) outputChatBox("#ffffff/deagle = #727272 2000", player, 255,255,255,true) outputChatBox("#ffffff/shotgun = #727272 2300", player, 255,255,255,true) outputChatBox("#ffffff/uzi = #727272 3200", player, 255,255,255,true) outputChatBox("#ffffff/ak = #727272 4000", player, 255,255,255,true) outputChatBox("#ffffff/sniper = #727272 5200", player, 255,255,255,true) outputChatBox("#ffffff/rifle = #727272 9200", player, 255,255,255,true) end addEventHandler("onMarkerHit", markerWeapon, msg) function pegarAK(player) if isElementWithinMarker(player, markerWeapon) then if getPlayerMoney(player) >= 4000 then takePlayerMoney(player, 4000) --Remover Dinheiro giveWeapon(player, 30, 300, true) --Pegar Arma outputChatBox("#ffffffVocê comprou uma AK-47 com 300 munições.", player, 255,255,255,true) else outputChatBox("#ff0000Você não tem dinheiro suficiente para comprar.", player, 255,255,255,true) end end end addCommandHandler("ak", pegarAK) function pegarshotgun(player) if isElementWithinMarker(player, markerWeapon) then if getPlayerMoney(player) >= 2300 then takePlayerMoney(player, 2300) --Remover Dinheiro giveWeapon(player, 25, 300, true) --Pegar Arma outputChatBox("#ffffffVocê comprou uma Shotgun com 300 munições.", player, 255,255,255,true) else outputChatBox("#ff0000Você não tem dinheiro suficiente para comprar.", player, 255,255,255,true) end end end addCommandHandler("shotgun", pegarshotgun) function pegardeagle(player) if isElementWithinMarker(player, markerWeapon) then if getPlayerMoney(player) >= 2000 then takePlayerMoney(player, 2000) --Remover Dinheiro giveWeapon(player, 24, 300, true) --Pegar Arma outputChatBox("#ffffffVocê comprou uma Deagle com 300 munições.", player, 255,255,255,true) else outputChatBox("#ff0000Você não tem dinheiro suficiente para comprar.", player, 255,255,255,true) end end end addCommandHandler("deagle", pegardeagle) function pegarUzi(player) if isElementWithinMarker(player, markerWeapon) then if getPlayerMoney(player) >= 3200 then takePlayerMoney(player, 3200) --Remover Dinheiro giveWeapon(player, 28, 300, true) --Pegar Arma outputChatBox("#ffffffVocê comprou uma Uzi com 300 munições.", player, 255,255,255,true) else outputChatBox("#ff0000Você não tem dinheiro suficiente para comprar.", player, 255,255,255,true) end end end addCommandHandler("uzi", pegarUzi) function pegarRifle(player) if isElementWithinMarker(player, markerWeapon) then if getPlayerMoney(player) >= 9200 then takePlayerMoney(player, 9200) --Remover Dinheiro giveWeapon(player, 33, 300, true) --Pegar Arma outputChatBox("#ffffffVocê comprou uma Rifle com 300 munições.", player, 255,255,255,true) else outputChatBox("#ff0000Você não tem dinheiro suficiente para comprar.", player, 255,255,255,true) end end end addCommandHandler("rifle", pegarRifle) function pegarSniper(player) if isElementWithinMarker(player, markerWeapon) then if getPlayerMoney(player) >= 5200 then takePlayerMoney(player, 5200) --Remover Dinheiro giveWeapon(player, 34, 300, true) --Pegar Arma outputChatBox("#ffffffVocê comprou uma Sniper com 300 munições.", player, 255,255,255,true) else outputChatBox("#ff0000Você não tem dinheiro suficiente para comprar.", player, 255,255,255,true) end end end addCommandHandler("sniper", pegarSniper) function pegarColt45(player) if isElementWithinMarker(player, markerWeapon) then if getPlayerMoney(player) >= 1400 then takePlayerMoney(player, 1400) --Remover Dinheiro giveWeapon(player, 22, 300, true) --Pegar Arma outputChatBox("#ffffffVocê comprou uma Colt 45 com 300 munições.", player, 255,255,255,true) else outputChatBox("#ff0000Você não tem dinheiro suficiente para comprar.", player, 255,255,255,true) end end end addCommandHandler("colt", pegarColt45) function pegarbrinquedo(player) if isElementWithinMarker(player, markerWeapon) then if getPlayerMoney(player) >= 500 then takePlayerMoney(player, 500) --Remover Dinheiro giveWeapon(player, 12, 1, true) --Pegar Arma outputChatBox("#ffffffVocê comprou 1 brinquedo, DIVIRTA-SE.", player, 255,255,255,true) else outputChatBox("#ff0000Você não tem dinheiro suficiente para comprar.", player, 255,255,255,true) end end end addCommandHandler("brinquedo", pegarbrinquedo) Link to comment
Jonas^ Posted February 6, 2019 Share Posted February 6, 2019 Use a opção de <> para formatar o código Você quer que qual ACL possa usar esses comandos? 1 Link to comment
pudimzueiro Posted February 6, 2019 Author Share Posted February 6, 2019 WP nao precisa me dar o negocio pronto tem como so dar um exemplo junto com esses <>? Link to comment
Jonas^ Posted February 6, 2019 Share Posted February 6, 2019 De cara já vejo alguns erros, como falta de parametros, você esta definindo player nas output no lado client algo que não é necessario até por que vai ser exibido só pra quem usar o comando. 1 Link to comment
pudimzueiro Posted February 6, 2019 Author Share Posted February 6, 2019 botei pra quando entrar na marco ou seja o cylinder,aparece-se no chat quais comandos e os preços das armas, mas eu queria que tipo /ak só quem tive-se permissão pode executar este comando entende? nao digo permissão digo uma tag ou seja grupo acl Link to comment
Jonas^ Posted February 6, 2019 Share Posted February 6, 2019 (edited) Olha, não é necessario usar trigger nessa situação, até por que da pra fazer usando apenas o server-side pois a maioria dessas funções são shared ou server-side, então, neste caso o server-side somente já resolve o problema, fiz um exemplo pra você ver, basta fazer com o restante, alias, nas output's eu alterei algumas coisas, por exemplo, você estava definindo 255, 255, 255 que no caso é branco e definindo a #hex no começo do código como #ffffff isso não tem necessidade pois você estava definindo 255,255,255 no parametro de r,g,b logo ela ira setar branco da mesma forma. local markerWeapon = createMarker(2678.94214, -1430.34009, 15.25723, "cylinder", 1.5, 25, 25, 112, 200) function mensagemMarker (thePlayer) outputChatBox( "Teste.", thePlayer, 255, 255, 255, true) end addEventHandler( "onMarkerHit", markerWeapon, mensagemMarker ) function pegarAK (thePlayer) local acc = getPlayerAccount(thePlayer) if isObjectInACLGroup ( "user." ..getAccountName(acc), aclGetGroup ("WP")) then if isElementWithinMarker (thePlayer, markerWeapon) then if getPlayerMoney (thePlayer) >= 4000 then takePlayerMoney (thePlayer, 4000) giveWeapon (thePlayer, 30, 300) outputChatBox( "Você comprou uma AK-47 com 300 munições.", thePlayer, 255, 255, 255, true) else outputChatBox( "Você não tem dinheiro suficiente para comprar.", thePlayer, 255, 0, 0, true) end else outputChatBox( "Você não esta no mercado negro.", thePlayer, 255, 0, 0, true) end else outputChatBox( "Você não tem acesso ao mercado negro.", thePlayer, 255, 0, 0, true) end end addCommandHandler("ak", pegarAK) @edit coloquei uma output pra avisar caso o jogador tente usar o comando e não esteja no marker. Edited February 6, 2019 by OverKILL 1 Link to comment
Other Languages Moderators Lord Henry Posted February 6, 2019 Other Languages Moderators Share Posted February 6, 2019 45 minutes ago, pudimzueiro said: WP nao precisa me dar o negocio pronto tem como so dar um exemplo junto com esses <>? O @OverKILL se referiu a esse <> aqui: Sempre use esse botão quando for colar código em vez de colar direto no texto. 2 Link to comment
pudimzueiro Posted February 6, 2019 Author Share Posted February 6, 2019 tendi vlw men Link to comment
[M]ister Posted February 6, 2019 Share Posted February 6, 2019 O seu código está muito repetitivo, como você tem interesse em aprender, deixo abaixo um código otimizado usando tabelas, com ele fica muito mais fácil fazer manutenção no código. local armas = { ["brinquedo"] = {id = 12, municao = 1, preco = 500, nome = "Brinquedo"}, ["colt"] = {id = 12, municao = 300, preco = 1400, nome = "Colt 45"}, ["deagle"] = {id = 12, municao = 300, preco = 2000, nome = "Deagle"}, ["shotgun"] = {id = 12, municao = 300, preco = 2300, nome = "Shotgun"}, ["uzi"] = {id = 12, municao = 300, preco = 3200, nome = "Uzi"}, ["ak"] = {id = 12, municao = 300, preco = 4000, nome = "AK-47"}, ["sniper"] = {id = 12, municao = 300, preco = 5200, nome = "Sniper"}, ["rifle"] = {id = 12, municao = 300, preco = 9200, nome = "Rifle"} } markerWeapon = createMarker(2678.94214, -1430.34009, 15.25723, "cylinder", 1.5, 25,25,112,200) function msg(hitElement, matchingDimension) if getElementType(hitElement) == "player" and matchingDimension then outputChatBox("Olá, AMIGO,SOU DONO DO MERCADO NEGRO SE NÃO VEIO COMPRAR ALGO VAZA!.", hitElement, 255,255,255,true) for cmd,tbl in pairs(armas) do outputChatBox("/"..cmd.." = #727272 "..tbl.preco, hitElement, 255,255,255,true) end end end addEventHandler("onMarkerHit", markerWeapon, msg) function pegarArma(player, cmd) if not armas[cmd] then return end if isElementWithinMarker(player,markerWeapon) then local acc = getPlayerAccount(player) if acc and not isGuestAccount(acc) then if isObjectInACLGroup("user."..getAccountName(acc), aclGetGroup("WP")) then if getPlayerMoney(player) >= armas[cmd].preco then takePlayerMoney(player, armas[cmd].preco) giveWeapon(player, armas[cmd].id, armas[cmd].municao, true) outputChatBox("Você comprou uma "..armas[cmd].nome.." com "..armas[cmd].municao.." munições.", player, 255,255,255,true) else outputChatBox("Você não tem dinheiro suficiente para comprar.", player, 255,0,0,true) end end end end end for cmd,tbl in pairs(armas) do addCommandHandler ( cmd, pegarArma ) end * não testado 1 Link to comment
pudimzueiro Posted February 7, 2019 Author Share Posted February 7, 2019 6 hours ago, MaligNos said: O seu código está muito repetitivo, como você tem interesse em aprender, deixo abaixo um código otimizado usando tabelas, com ele fica muito mais fácil fazer manutenção no código. local armas = { ["brinquedo"] = {id = 12, municao = 1, preco = 500, nome = "Brinquedo"}, ["colt"] = {id = 12, municao = 300, preco = 1400, nome = "Colt 45"}, ["deagle"] = {id = 12, municao = 300, preco = 2000, nome = "Deagle"}, ["shotgun"] = {id = 12, municao = 300, preco = 2300, nome = "Shotgun"}, ["uzi"] = {id = 12, municao = 300, preco = 3200, nome = "Uzi"}, ["ak"] = {id = 12, municao = 300, preco = 4000, nome = "AK-47"}, ["sniper"] = {id = 12, municao = 300, preco = 5200, nome = "Sniper"}, ["rifle"] = {id = 12, municao = 300, preco = 9200, nome = "Rifle"} } markerWeapon = createMarker(2678.94214, -1430.34009, 15.25723, "cylinder", 1.5, 25,25,112,200) function msg(hitElement, matchingDimension) if getElementType(hitElement) == "player" and matchingDimension then outputChatBox("Olá, AMIGO,SOU DONO DO MERCADO NEGRO SE NÃO VEIO COMPRAR ALGO VAZA!.", hitElement, 255,255,255,true) for cmd,tbl in pairs(armas) do outputChatBox("/"..cmd.." = #727272 "..tbl.preco, hitElement, 255,255,255,true) end end end addEventHandler("onMarkerHit", markerWeapon, msg) function pegarArma(player, cmd) if not armas[cmd] then return end if isElementWithinMarker(player,markerWeapon) then local acc = getPlayerAccount(player) if acc and not isGuestAccount(acc) then if isObjectInACLGroup("user."..getAccountName(acc), aclGetGroup("WP")) then if getPlayerMoney(player) >= armas[cmd].preco then takePlayerMoney(player, armas[cmd].preco) giveWeapon(player, armas[cmd].id, armas[cmd].municao, true) outputChatBox("Você comprou uma "..armas[cmd].nome.." com "..armas[cmd].municao.." munições.", player, 255,255,255,true) else outputChatBox("Você não tem dinheiro suficiente para comprar.", player, 255,0,0,true) end end end end end for cmd,tbl in pairs(armas) do addCommandHandler ( cmd, pegarArma ) end * não testado amigo se eu quiser adicionar mais de um grupo ali no isobjectinaclgroup sabe me dizer como eu faço? eu tentei com VIRGULAS criandos novas " " e com () mas nao deu certo. obrigado por me ajudarem pessoal eu tava queimando neuronios, eu sempre tento fazer tudo sozinho mas como vi que eu só estava andando em circulos resolvi pedir ajuda Link to comment
pudimzueiro Posted February 7, 2019 Author Share Posted February 7, 2019 muito legal esse modo de tabela deixa bem mais facil se eu querer mudar algo depois vou procurar aprender para poder usar futuros scripts *muito legal esse modo tabela,deixa mais facil,de mudar algo futuramente,vou procurar aprender,para poder usar,em futuros scripts Link to comment
Jonas^ Posted February 7, 2019 Share Posted February 7, 2019 15 hours ago, pudimzueiro said: amigo se eu quiser adicionar mais de um grupo ali no isobjectinaclgroup sabe me dizer como eu faço? eu tentei com VIRGULAS criandos novas " " e com () mas nao deu certo. obrigado por me ajudarem pessoal eu tava queimando neuronios, eu sempre tento fazer tudo sozinho mas como vi que eu só estava andando em circulos resolvi pedir ajuda use: if isObjectInACLGroup("user."..getAccountName(acc), aclGetGroup("WP")) or isObjectInACLGroup("user."..getAccountName(acc), aclGetGroup("GRUPO2")) then 1 Link to comment
pudimzueiro Posted February 8, 2019 Author Share Posted February 8, 2019 2 hours ago, OverKILL said: use: if isObjectInACLGroup("user."..getAccountName(acc), aclGetGroup("WP")) or isObjectInACLGroup("user."..getAccountName(acc), aclGetGroup("GRUPO2")) then obrigado! Link to comment
Other Languages Moderators Lord Henry Posted February 8, 2019 Other Languages Moderators Share Posted February 8, 2019 (edited) Se for mais do que 2 grupos, é melhor utilizar uma table do que ficar entupindo de condição or. -- (Essa table deve ficar fora da função) local allGroups = {"WP", "Group2", "Group3", "Group4"} -- (Isso deve ficar dentro da função pegarArma, no lugar daquela linha 30) local access = false -- Por padrão, o jogador não tem acesso. for i, groupName in ipairs (allGroups) do -- Para cada item da table allGroups, faça: if aclGetGroup (groupName) then -- Se o grupo com esse nome existe, então: if isObjectInACLGroup ("user."..getAccountName(acc), aclGetGroup(groupName) then -- Se o jogador está neste grupo, então: access = true -- Permite o acesso. break -- Cancela o loop, pois não precisa verificar o resto. end else -- Se não existe uma ACL Group com esse nome, então: outputDebugString ("Erro, grupo '"..groupName.."' não existe.", 2) -- Manda essa mensagem de Warning no Server Console end end if access then -- Isso é o mesmo que: if access == true then -- (O resto do código aqui) Edited February 8, 2019 by Lord Henry 1 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