pudimzueiro Posted February 6, 2019 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.
Jonas^ Posted February 6, 2019 Posted February 6, 2019 Pode mostrar o código? e mostre o que você tentou. 1
pudimzueiro Posted February 6, 2019 Author 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)
Jonas^ Posted February 6, 2019 Posted February 6, 2019 Use a opção de <> para formatar o código Você quer que qual ACL possa usar esses comandos? 1
pudimzueiro Posted February 6, 2019 Author Posted February 6, 2019 WP nao precisa me dar o negocio pronto tem como so dar um exemplo junto com esses <>?
Jonas^ Posted February 6, 2019 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
pudimzueiro Posted February 6, 2019 Author 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
Jonas^ Posted February 6, 2019 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
Other Languages Moderators Lord Henry Posted February 6, 2019 Other Languages Moderators 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
[M]ister Posted February 6, 2019 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
pudimzueiro Posted February 7, 2019 Author 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
pudimzueiro Posted February 7, 2019 Author 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
Jonas^ Posted February 7, 2019 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
pudimzueiro Posted February 8, 2019 Author 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!
Other Languages Moderators Lord Henry Posted February 8, 2019 Other Languages Moderators 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
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