kevincouto6 Posted May 22, 2018 Share Posted May 22, 2018 Olá a todos tenho um script,porem não consigo especificar qual deve ser morto Exemplo Matar 5 Zombies, Não qualquer zombie um zombie especifico apenas. alguem pode me ajudar ? Quero especificar o id porem não esta sendo possivel zombiesKilled = 0 function ZedMissionWin () zombiesKilled = 5 outputChatBox( "Good job, mission completed!" ) givePlayerMoney ( 50000 ) end function ZedMissionCheckKill ( killer ) local zed = getElementsByType (107,sorcer) if zed == true and killer == localPlayer then zombiesKilled = zombiesKilled+1 outputDebugString ("A zed was killed, "..(zombiesKilled).." zeds left.") end if zombiesKilled >= 5 then ZedMissionWin () end end function startZedMission () outputChatBox ( "Your Get Mission" ) addEventHandler ( "onClientPedWasted", root, ZedMissionCheckKill ) end addCommandHandler ( "mission", startZedMission ) Link to comment
Other Languages Moderators Lord Henry Posted May 22, 2018 Other Languages Moderators Share Posted May 22, 2018 Esse script aí é client-side ou server-side? Pois vc está usando funções que só funcionam client-side e outras que funcionam em ambos mas que se for feito client-side dai não adianta. Por exemplo givePlayerMoney não adianta nada se for feito client-side, pois vai mudar apenas o dinheiro na tela do jogador mas não será contado no servidor, será um "dinheiro falso". Creio que houve erro de digitação na linha 11, onde vc botou sorcer. zombiesKilled é o número de zumbis restantes ou o número de zumbis que foram mortos? Pois você está usando para contar os zumbis mortos mas na mensagem da linha 14 está usando como zumbis restantes e isso não faz sentido. A variável zed será sempre uma table, vazia ou não. Então sua verificação será sempre verdadeira quando o jogador matar qualquer NPC. Você deve usar /debugscript 3 para verificar erros no script. Link to comment
kevincouto6 Posted May 22, 2018 Author Share Posted May 22, 2018 7 minutes ago, Lord Henry said: Esse script aí é client-side ou server-side? Pois vc está usando funções que só funcionam client-side e outras que funcionam em ambos mas que se for feito client-side dai não adianta. Por exemplo givePlayerMoney não adianta nada se for feito client-side, pois vai mudar apenas o dinheiro na tela do jogador mas não será contado no servidor, será um "dinheiro falso". Creio que houve erro de digitação na linha 11, onde vc botou sorcer. zombiesKilled é o número de zumbis restantes ou o número de zumbis que foram mortos? Pois você está usando para contar os zumbis mortos mas na mensagem da linha 14 está usando como zumbis restantes e isso não faz sentido. A variável zed será sempre uma table, vazia ou não. Então sua verificação será sempre verdadeira quando o jogador matar qualquer NPC. Você deve usar /debugscript 3 para verificar erros no script. Olá, este é um script Server, queria criar uma missião de mata 5 zombie"PED" acada "PED" morto zombiesKilled+1 Isso significa que quando tiver if zombiesKilled >= 5 then a missão sera completada pois eu não consigo especificar qual zombie deve ser morto Link to comment
Other Languages Moderators Lord Henry Posted May 22, 2018 Other Languages Moderators Share Posted May 22, 2018 Então o script está todo errado. Os outputChatBox vão aparecer pra todo mundo do servidor, até quem não está fazendo a missão. givePlayerMoney no server-side exige que vc especifique o jogador para qual está dando dinheiro. onClientPedWasted é uma função que só funciona client-side. (como no próprio nome já está escrito) Em nenhum lugar tem uma função createPed, para criar os zumbis. Link to comment
kevincouto6 Posted May 22, 2018 Author Share Posted May 22, 2018 (edited) 5 minutes ago, Lord Henry said: Então o script está todo errado. Os outputChatBox vão aparecer pra todo mundo do servidor, até quem não está fazendo a missão. givePlayerMoney no server-side exige que vc especifique o jogador para qual está dando dinheiro. onClientPedWasted é uma função que só funciona client-side. (como no próprio nome já está escrito) Em nenhum lugar tem uma função createPed, para criar os zumbis. os zombies ja estão no server, tem que apenas mata-los para completar mission, porem queria sera-los por classe, para fazer vairas mission exemplo Mission 1 Classe A "ID zombies" { 198, 158, 107 e 108 } Mission 2 Classe A "ID zombies2" { 48, 18, 79 e 23 } _______________________________________________________________ Voçe poderia me dar dicas ou me ajudar a arruamar o scritp ? Edited May 22, 2018 by kevincouto6 Link to comment
DNL291 Posted May 23, 2018 Share Posted May 23, 2018 (edited) Esse seu primeiro código é do lado client, e como já lhe foi dito, givePlayerMoney não vai sincronizar com o server e o dinheiro só será dado no ambiente individual, ou seja, só pra você. Seria até melhor você converter o código pro lado server, até porque vai te poupar o uso do triggerServerEvent pra dar o dinheiro. Use setElementID pra atribuir um ID ao ped. Talvez você tenha se referido ao ID do ped ali em cima, ser foi isso ignore o setElementID. Você pode criar tabelas ou chaves dentro da tabela para adicionar os 'zumbis' de cada missão e o que for necessário, Ex: local zedsTable = { { 198, 158, 107, 108 }, {48, 18, 79, 23 } } function spawnZeds( mission ) for _, id in pairs( zedsTable[tonumber(mission)] ) do end end Edited May 23, 2018 by DNL291 Link to comment
kevincouto6 Posted May 28, 2018 Author Share Posted May 28, 2018 (edited) On 23/05/2018 at 02:18, DNL291 said: Esse seu primeiro código é do lado client, e como já lhe foi dito, givePlayerMoney não vai sincronizar com o server e o dinheiro só será dado no ambiente individual, ou seja, só pra você. Seria até melhor você converter o código pro lado server, até porque vai te poupar o uso do triggerServerEvent pra dar o dinheiro. Use setElementID pra atribuir um ID ao ped. Talvez você tenha se referido ao ID do ped ali em cima, ser foi isso ignore o setElementID. Você pode criar tabelas ou chaves dentro da tabela para adicionar os 'zumbis' de cada missão e o que for necessário, Ex: Eu estou tentando de todas maneiras porem sempre acontece algum erro achei melhor voltar a pedir ajuda ERROR:Mission/mission.lua:16:bad argument #1 to'pairs'(table expected, got nill) zombiesKilled = 0 local zedsTable = { { 198, 158, 107, 108 }, {48, 18, 79, 23 } } function ZedMissionWin () zombiesKilled = 5 outputChatBox( "Good job, mission completed!" ) givePlayerMoney ( thePlayer, 30000 ) end function ZedMissionCheckKill( mission ) for _, id in pairs( zedsTable[tonumber(mission)] ) do zombiesKilled = zombiesKilled+1 outputDebugString ("A zed was killed, "..(zombiesKilled).." zeds left.") end if zombiesKilled >= 5 then ZedMissionWin () end end function startZedMission () outputChatBox ( "Your Get Mission" ) addEventHandler ( "onClientPedWasted", root, ZedMissionCheckKill ) end addCommandHandler ( "mission", startZedMission ) Edited May 28, 2018 by kevincouto6 Link to comment
DNL291 Posted May 28, 2018 Share Posted May 28, 2018 (edited) Você está chamando ZedMissionCheckKill() sem passar o argumento da missão. O correto seria assim (fiz pra você a lógica que o script vai funcionar): local currentMission,zombiesKilled = 0, 0 local missionZeds local zedsTable = { { 198, 158, 107, 108 }, {48, 18, 79, 23 } } function ZedMissionOnKill( killer ) -- Faz a checagem para saber se quem matou é um jogador e a vitíma um ped if ( killer and getElementType(killer) == "player" and getElementType(source) == "ped" ) then zombiesKilled = zombiesKilled+1 if zombiesKilled == missionZeds then -- Você vai precisar armazenar numa variável a quantidade de zumbis da missão atual ZedMissionWin () -- Nessa função você já vai poder criar a outra missão end end end function startZedMission() if currentMission ~= 0 then return end currentMission = 1 spawnZeds( currentMission ) outputChatBox ( "Your Get Mission" ) addEventHandler ( "onClientPedWasted", root, ZedMissionOnKill ) end addCommandHandler ( "mission", startZedMission ) function ZedMissionWin () outputChatBox( "Good job, mission completed!" ) givePlayerMoney ( thePlayer, 30000 ) -- Use isso no lado server! -- Vamos criar a outra missão spawnZeds( currentMission + 1 ) end function spawnZeds( mission ) if tonumber(mission) and tonumber(mission) > #zedsTable then currentMission = 0 return outputChatBox( "Parabéns, você completou todas as missões", 0, 240, 0 ) end missionZeds = #zedsTable[ tonumber(mission) ] for _, id in pairs( zedsTable[tonumber(mission)] ) do -- criar os zumbis end currentMission = tonumber(mission) end Edited May 28, 2018 by DNL291 Link to comment
kevincouto6 Posted May 28, 2018 Author Share Posted May 28, 2018 1 hour ago, DNL291 said: Você está chamando ZedMissionCheckKill() sem passar o argumento da missão. O correto seria assim (fiz pra você a lógica que o script vai funcionar): local currentMission,zombiesKilled = 0, 0 local missionZeds local zedsTable = { { 198, 158, 107, 108 }, {48, 18, 79, 23 } } function ZedMissionOnKill( killer ) -- Faz a checagem para saber se quem matou é um jogador e a vitíma um ped if ( killer and getElementType(killer) == "player" and getElementType(source) == "ped" ) then zombiesKilled = zombiesKilled+1 if zombiesKilled == missionZeds then -- Você vai precisar armazenar numa variável a quantidade de zumbis da missão atual ZedMissionWin () -- Nessa função você já vai poder criar a outra missão end end end function startZedMission() if currentMission ~= 0 then return end currentMission = 1 spawnZeds( currentMission ) outputChatBox ( "Your Get Mission" ) addEventHandler ( "onClientPedWasted", root, ZedMissionOnKill ) end addCommandHandler ( "mission", startZedMission ) function ZedMissionWin () outputChatBox( "Good job, mission completed!" ) givePlayerMoney ( thePlayer, 30000 ) -- Use isso no lado server! -- Vamos criar a outra missão spawnZeds( currentMission + 1 ) end function spawnZeds( mission ) if tonumber(mission) and tonumber(mission) > #zedsTable then currentMission = 0 return outputChatBox( "Parabéns, você completou todas as missões", 0, 240, 0 ) end missionZeds = #zedsTable[ tonumber(mission) ] for _, id in pairs( zedsTable[tonumber(mission)] ) do -- criar os zumbis end currentMission = tonumber(mission) end Obrigado Meu Amigo 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