Jump to content

Recommended Posts

Estou com esta missão, porem ele esta para todos jogadores completarem juntos, mas quero que seja  individual, que cada jogador possa faze-la sozinho tentei de algumas  formas mas acontecerem alguns erros, alguem pode ajudar

zombiesKilled = 0

function ZedMissionWin (thePlayer)
	zombiesKilled = 0
	outputChatBox( "Good job, mission completed!" )
	givePlayerMoney ( 50000 )
	removeEventHandler("onClientPedWasted",getRootElement(),ZedMissionCheckKill)
	removeEventHandler ( "onClientRender",getRootElement(), createText )
end

function ZedMissionCheckKill ( thePlayer )
	
	if ( thePlayer and getElementType(thePlayer) == "player" and getElementType(source) == "ped" ) then 
		zombiesKilled = zombiesKilled+1 
	end
	
	if zombiesKilled >= 300 then 
		ZedMissionWin () 
	end
end

function createText (thePlayer)
    dxDrawText("Killed Zombies "..(zombiesKilled).."/300", 348, 4, 582, 30, tocolor(255, 255, 255, 255), 0.50, "bankgothic", "left", "top" )
end

function startZedMission (thePlayer)
	outputChatBox ( "Your Get Mission" )
	addEventHandler ( "onClientPedWasted", getRootElement(), ZedMissionCheckKill )
	addEventHandler ( "onClientRender", getRootElement(), createText )
end
addEvent ("mission", true)
addEventHandler ("mission", getRootElement(), startZedMission)

 

Link to comment
1 hour ago, Lord Henry said:

Poste o código server-side, fazendo favor.

Server-side

--mission 3--

function mission3 ()
	triggerClientEvent ("mission", source)
end
addEvent ("mission", true) -- Cria o evento "iniciaJob e permite que ele seja chamado pelo client.
addEventHandler ("mission", getRootElement(), mission3) -- Executa essa função quando o evento "iniciaJob" for chamado.

Client-side

addEventHandler ("onClientGUIClick", getRootElement(), function (button, state, absoluteX, absoluteY)
	local me = not guiGetVisible (windowMission)
	if (source == ExitButton) then
		guiSetVisible (windowMission, me)
		showCursor (me)
	elseif (source == FistButton) then
		triggerServerEvent ("iniciaJob", localPlayer) -- Inicia o evento "iniciarJob" que estiver no script server. E manda o localPlayer como elemento ativador.
		guiSetVisible(windowMission, false)
		showCursor( false )
	elseif (source == SecondButton) then
		triggerServerEvent ("iniciaJob2", localPlayer) -- Inicia o evento "iniciarJob" que estiver no script server. E manda o localPlayer como elemento ativador.
		guiSetVisible(windowMission, false)
		showCursor( false )
	elseif (source == ThirdButton ) then
		triggerServerEvent ("mission", localPlayer) -- Inicia o evento "iniciarJob" que estiver no script server. E manda o localPlayer como elemento ativador.
		guiSetVisible(windowMission, false)
		showCursor( false )
	elseif (source == FourthButton ) then
		triggerServerEvent ("iniciaJob4", localPlayer) -- Inicia o evento "iniciarJob" que estiver no script server. E manda o localPlayer como elemento ativador.
		guiSetVisible(windowMission, false)
		showCursor( false )
	end
end)

outro Client com a missão

zombiesKilled = 0

function ZedMissionWin (thePlayer)
	zombiesKilled = 0
	outputChatBox( "Good job, mission completed!" )
	givePlayerMoney ( 50000 )
	removeEventHandler("onClientPedWasted",getRootElement(),ZedMissionCheckKill)
	removeEventHandler ( "onClientRender",getRootElement(), createText )
end

function ZedMissionCheckKill ( thePlayer )
	
	if ( thePlayer and getElementType(thePlayer) == "player" and getElementType(source) == "ped" ) then 
		zombiesKilled = zombiesKilled+1 
	end
	
	if zombiesKilled >= 300 then 
		ZedMissionWin () 
	end
end

function createText (thePlayer)
    dxDrawText("Killed Zombies "..(zombiesKilled).."/300", 348, 4, 582, 30, tocolor(255, 255, 255, 255), 0.50, "bankgothic", "left", "top" )
end

function startZedMission (thePlayer)
	outputChatBox ( "Your Get Mission" )
	addEventHandler ( "onClientPedWasted", getRootElement(), ZedMissionCheckKill )
	addEventHandler ( "onClientRender", getRootElement(), createText )
end
addEvent ("mission", true)
addEventHandler ("mission", getRootElement(), startZedMission)

 

Link to comment
  • Other Languages Moderators
14 hours ago, kevincouto6 said:

Server-side


--mission 3--

function mission3 ()
	triggerClientEvent ("mission", source)
end
addEvent ("mission", true) -- Cria o evento "iniciaJob e permite que ele seja chamado pelo client.
addEventHandler ("mission", getRootElement(), mission3) -- Executa essa função quando o evento "iniciaJob" for chamado.

 

Esse seu triggerClientEvent não está especificando pra qual client ativar o evento mission. Sendo assim, ele está ativando em todos os clients.

Outra coisa: Você não pode usar nomes iguais para eventos que não são iguais. Um evento chamado no lado client não é igual a um evento chamado no lado server. Essa função mission3 está sendo chamada pelo client usando um evento chamado mission, mas o mesmo evento está chamando outra função no client. Sugiro que troque o "mission" que ativa a função por "iniciaJob3", seguindo a lógica dos demais eventos e especificando o client como ativador, já que a função mission3 está sendo chamada por um client.

server:

--mission 3--

function mission3 ()
	triggerClientEvent (client, "mission", client) -- Em qual client ativará este evento, "nome do evento", qual será o elemento ativador do evento.
end
addEvent ("iniciaJob3", true)
addEventHandler ("iniciaJob3", getRootElement(), mission3)

client:

addEventHandler ("onClientGUIClick", getRootElement(), function (button, state, absoluteX, absoluteY)
	local me = not guiGetVisible (windowMission)
	if button ~= "left" then return end -- Faz com que os botões só funcionem se forem clicados com o botão esquerdo do mouse.
	if (source == ExitButton) then
		guiSetVisible (windowMission, me)
		showCursor (me)
	elseif (source == FistButton) then
		triggerServerEvent ("iniciaJob", localPlayer)
		guiSetVisible (windowMission, false)
		showCursor (false)
	elseif (source == SecondButton) then
		triggerServerEvent ("iniciaJob2", localPlayer)
		guiSetVisible (windowMission, false)
		showCursor (false)
	elseif (source == ThirdButton) then
		triggerServerEvent ("iniciaJob3", localPlayer)
		guiSetVisible (windowMission, false)
		showCursor (false)
	elseif (source == FourthButton) then
		triggerServerEvent ("iniciaJob4", localPlayer)
		guiSetVisible (windowMission, false)
		showCursor (false)
	end
end)

outro client: (parte do final)

function startZedMission () -- Não foi declarado nenhum parâmetro de função no triggerClientEvent deste evento. Então aqui deve permanecer vazio.
	outputChatBox ("Your Get Mission")
	addEventHandler ("onClientPedWasted", getRootElement(), ZedMissionCheckKill)
	addEventHandler ("onClientRender", getRootElement(), createText)
end
addEvent ("mission", true)
addEventHandler ("mission", getRootElement(), startZedMission)

 

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

A parte do código que vc me mostrou está aparecendo só pra 1 jogador. Os scripts das missões vc nem mostrou.

Desculpe, o script e o primeiro que postei porem ele esta ativando para todos jogadores o script e apenas este abaixo, nele estão as funções da missão e apenas Client o script, porem a missão ativa para todos jogadores, eu queria que se ativa-se apenas para o jogador que querese fazer 

Link to comment
  • Moderators

Chamando o triggerClientEvent só para o jogador específico e fazendo essa verificação :

	if ( thePlayer and thePlayer == localPlayer and getElementType(source) == "ped" ) then 
		zombiesKilled = zombiesKilled+1 
	end

Com certeza não vai funcionar pra todos. Se continuar, o problema é outro.

  • Like 1
Link to comment
On 10/06/2018 at 18:52, Lord Henry said:

Poste o código server-side, fazendo favor.

O script é client, o que vc me mandou no outro tópico eu peguei e usei para outra missão, agora preciso dessa para para matar os zombies que spanw no gamemode de zombies

Edited by kevincouto6
Link to comment
  • Other Languages Moderators
5 hours ago, kevincouto6 said:

Não estão funcionando eles estão ficando visiveis para todos os player online

Você provavelmente está criando eles server-side. Ou então usando triggerClientEvent sem especificar pra qual client, ativando em todos eles.

Link to comment
52 minutes ago, kevincouto6 said:

Muito obrigado consegui resolver faltou especificar "client" no triggerClientEvent

desculpem outro post não consegui editar par givePlayerMoney eu fiz assim

Sever-side

function MissionWin ()
    givePlayerMoney(client, 30000) 
end 
addEvent ("trueMission", true)
addEventHandler ("trueMission", getRootElement(), MissionWin)

client-side

function ZedMissionWin ()
    zombiesKilled = 0
    outputChatBox( "Good job, mission completed!" )
    triggerServerEvent ("trueMission", localPlayer)
    removeEventHandler("onClientPedWasted",getRootElement(),ZedMissionCheckKill)
    removeEventHandler ( "onClientRender",getRootElement(), createText )
end

Queria saber se esta correto, no meus testes funcionaram, queria sabe opinião se esta correto ?

Edited by kevincouto6
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...