Jump to content

Ajuda Especificar o Player no Lado Server


Recommended Posts

server-side

function started9 ( thePlayer )

	outputChatBox ( "funcionou2", thePlayer )	
		function bossKilled(zone, bossColor, liberators, executor)	
			if ( thePlayer ) then 
				outputChatBox ( "Boss DeaD", thePlayer )
				triggerClientEvent ( thePlayer, "bossPointClient", thePlayer )
			else
				outputChatBox("failed")
			end	
		end
		addEventHandler ("zm_onZoneLiberated", getRootElement(), bossKilled)
		
end
addEvent( "inicio9", true )
addEventHandler( "inicio9", getRootElement(), started9 )

function destroyServerObjects9 ()
	removeEventHandler ("zm_onZoneLiberated", getRootElement(), bossKilled)
end
addEvent( "destroyElements9", true )
addEventHandler( "destroyElements9", getRootElement(), destroyServerObjects9)

function completMission9 ( thePlayer ) 
	givePlayerMoney ( thePlayer, 25000 ) 
end
addEvent ("completMission9", true) 
addEventHandler ("completMission9", getRootElement(), completMission9)

client-side

bossPoint = 0


function inicio9 ()
	triggerServerEvent ("inicio9", localPlayer, localPlayer)
		function dxText8()
			dxDrawText("Boss Killed : "..(bossPoint).."/1", 355, 0, 817, 87, tocolor(0, 0, 0, 255), 2.00, "default-bold", "left", "top", false, false, false, false, false)
		end
		addEventHandler ( "onClientRender",getRootElement(), dxText8 )
end


function bossMission9 ( )
	if localPlayer then
		bossPoint = bossPoint+1
		outputChatBox ( ""..bossPoint .."" )
		
		if bossPoint >= 5 then
			outputChatBox("Missão completada")
			bossPoint = 0
			failedMission9 ()
			triggerServerEvent ("completMission9", localPlayer, localPlayer)
		end
	end
end
addEvent( "bossPointClient", true )
addEventHandler( "bossPointClient", localPlayer, bossMission9 )

function failedMission9 ()
	triggerServerEvent ("destroyElements9", localPlayer, localPlayer)
	bossPoint = 0
	removeEventHandler ( "onClientRender",getRootElement(), dxText8 )
	completMission()
end

Aki estou desenvolvendo um script para matar boss que esta no servido esta é uma função que existe no servidor "zm_onZoneLiberated",  queria  fazer individualmente tudo, porem não funciona no lado client, apenas no server, porem não sei como ativar a função apenas para o jogador da missão e completar a missão apenas no jogador da missão, para completar eu uso um "triggerClientEvent" que ativa uma função no lado cliente, onde soma os points

o que preciso fazer e não sei como 

  • Ativar o evento "zm_onZoneLiberated" apenas  para o jogador que iniciou a missão
  • verificar se quem matou o boss, é o player que iniciou a missão 

OBS: a função é iniciado por um GuiWindon onde ativa inicia9 ()

 

poderiam me ajudar 

Edited by kevincouto6
Link to comment
27 minutes ago, MaligNos said:

Achei meio confuso seu código...

  • Aparece algum erro no /debugscript 3 ?
  • Esse "funcionou2" executou quando testou ?
  • Quem chama o  zm_onZoneLiberated ?

Vms lá 

  • Não aparece nenhum erro, atualmente não tem erros.
  • usei apenas para verificar se estava funcionando, esqueci de remover. ( Sim esta funcionando ) XD
  • ( zm_onZoneLiberated ) existem zonas no servidor onde e possivel Criar Bosses, quando um Boss é morto por alguma player o evento ( zm_onZoneLiberated ) e detectado se ativado tipo addEventHandler ("zm_onZoneLiberated", getRootElement(), bossKilled),   Quando um Boss morrer se o eventHanddler estiver ativado vai detectar e ativar a função ("bossKilled")

espero q possa me entender, sou ruim com palavras XD

Bom, o que preciso fazer e ativar o EventHandler para um pessoas apenas, porem não sei como fazer no lado server, if thePlayer then  vai verificar todos players, sabe como fazer para tudo funcionar individualmente ?

Edited by kevincouto6
Link to comment
12 hours ago, Lord Henry said:

Já tentou substituir thePlayer por client nas linhas 3, 5, 6 e 7?

O que acontece se fizer isso?

function started9 ( localPlayer )
	local client = localPlayer
	if ( client ) then
		outputChatBox ( "funcionou2", client )	
			function bossKilled(zone, bossColor, liberators, executor)	
				if ( client ) then 
					outputChatBox ( "Boss DeaD", client )
					triggerClientEvent ( client, "bossPointClient", client )
				else
					outputChatBox("failed")
				end	
			end
			addCommandHandler ("go", bossKilled)
			--addEventHandler ("zm_onZoneLiberated", getRootElement(), bossKilled)
	end		
end
addEvent( "inicio9", true )
addEventHandler( "inicio9", getRootElement(), started9 )

Eu usei o comando /go para não ter que matar um boss toda hora apenas para test, então

modificando do jeito que voçê falou continuo não funcionando, sem nenhum erro, ou seja funcionava para todos, então pensei em ativar o commando apenas para o "client" mas não funcionou, mesmo assim ativa va o comando para todos, preciso de uma forma de individualizar pensei em getPlayerName ou algo do tipo mas não sei como usar para vefiricar individualmente

 

Link to comment
3 minutes ago, Lord Henry said:

Não se usa localPlayer no lado server.

E também não falei pra mudar a linha 2 nem linha 1, pq vc 

Eu ja tinha feito assim porem n funciona, ele funciona para todos n apena para o q esta em missão , acho q vou ter q fazer uma verificação de nick com getPlayerName porem n sei como fazer, 

 

function started9 ( )
		outputChatBox ( "funcionou2", client )	
			function bossKilled(zone, bossColor, liberators, executor)	
			if ( client ) then 
					outputChatBox ( "Boss DeaD", client )
					triggerClientEvent ( client, "bossPointClient", client )
				else
					outputChatBox("failed")
				end	
			end
			addCommandHandler ("go", bossKilled)
			--addEventHandler ("zm_onZoneLiberated", getRootElement(), bossKilled)
end
addEvent( "inicio9", true )
addEventHandler( "inicio9", getRootElement(), started9 )

 

Link to comment
  • Other Languages Moderators

O problema provavelmente está no lado cliente. Aquela função ali que tem o draw e também o triggerServerEvent está sendo executada em todos os clientes. Portanto aquele trigger também está indo pra todos.

Link to comment
9 hours ago, Lord Henry said:

O problema provavelmente está no lado cliente. Aquela função ali que tem o draw e também o triggerServerEvent está sendo executada em todos os clientes. Portanto aquele trigger também está indo pra todos.

Sabe me dizer como faxer para funcionar apenas para um jogador, tipo devo fazer uma verificação ou que?

Link to comment
29 minutes ago, Lord Henry said:

A função inicio9 está sendo chamada onde?

obg, consegui resolver, o dono do servidor me mostrou uma coisa q eu não sabia a função "Executor"  verificava quem matou o boss, então eu usei ess verificação if ( Executor ) then 

ativavo o trigger event  ai funcionou individualmente, obg a todos

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...