Jump to content

como eu uso o triggerClientEvent


Recommended Posts

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

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

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 by OverKILL
  • Thanks 1
Link to comment
  • Other Languages Moderators
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:

bLankbMBQZKXC6j0YcADtg.png

Sempre use esse botão quando for colar código em vez de colar direto no texto.

  • Thanks 2
Link to comment

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

  • Thanks 1
Link to comment
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
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

 

  • Thanks 1
Link to comment
  • Other Languages Moderators

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 by Lord Henry
  • Thanks 1
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...