kevincouto6 Posted June 10, 2018 Share Posted June 10, 2018 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
DNL291 Posted June 10, 2018 Share Posted June 10, 2018 (edited) Tente fazendo uma verificação if thePlayer == localPlayer then. Edit: Pode ser também o evento sendo chamado pra todos Edited June 10, 2018 by DNL291 1 Link to comment
Other Languages Moderators Lord Henry Posted June 10, 2018 Other Languages Moderators Share Posted June 10, 2018 (edited) Poste o código server-side, fazendo favor. Edited June 10, 2018 by Lord Henry Link to comment
kevincouto6 Posted June 10, 2018 Author Share Posted June 10, 2018 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 Lord Henry Posted June 11, 2018 Other Languages Moderators Share Posted June 11, 2018 (edited) 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 June 11, 2018 by Lord Henry Link to comment
kevincouto6 Posted June 11, 2018 Author Share Posted June 11, 2018 56 minutes ago, Lord Henry said: Porem ainda a missão esta aparecendo para todos, queria deixar uma missão individual Link to comment
Other Languages Moderators Lord Henry Posted June 11, 2018 Other Languages Moderators Share Posted June 11, 2018 A parte do código que vc me mostrou está aparecendo só pra 1 jogador. Os scripts das missões vc nem mostrou. Link to comment
kevincouto6 Posted June 12, 2018 Author Share Posted June 12, 2018 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
DNL291 Posted June 14, 2018 Share Posted June 14, 2018 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. 1 Link to comment
kevincouto6 Posted June 16, 2018 Author Share Posted June 16, 2018 On 14/06/2018 at 00:11, DNL291 said: Funcionou corretamente, porem a função givePlayerMoney ( 50000 ) Não estão funcionando eles estão ficando visiveis para todos os player online function createText () dxDrawText("Killed Zombies "..(zombiesKilled).."/300", 348, 4, 582, 30, tocolor(255, 255, 255, 255), 0.50, "bankgothic", "left", "top" ) end Link to comment
DNL291 Posted June 16, 2018 Share Posted June 16, 2018 Sobre o dinheiro isso já foi explicado pra você em outro tópico: https://forum.multitheftauto.com/topic/105037-ajuda-especificar/ Preste mais atenção por favor. Fora isso, foi até feito um código pra você mas você ainda tá com esse código de sempre. O ped está sendo criado em qual lado? Link to comment
kevincouto6 Posted June 16, 2018 Author Share Posted June 16, 2018 (edited) 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 June 16, 2018 by kevincouto6 Link to comment
Other Languages Moderators Lord Henry Posted June 16, 2018 Other Languages Moderators Share Posted June 16, 2018 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
kevincouto6 Posted June 16, 2018 Author Share Posted June 16, 2018 38 minutes ago, Lord Henry said: Você provavelmente está criando eles server-side. Ou então usando triggerClientEvent sem especificar pra qual client, ativando em todos eles. Muito obrigado consegui resolver faltou especificar "client" no triggerClientEvent Link to comment
kevincouto6 Posted June 17, 2018 Author Share Posted June 17, 2018 (edited) 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 June 17, 2018 by kevincouto6 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