kevincouto6 Posted May 22, 2018 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 )
Other Languages Moderators Lord Henry Posted May 22, 2018 Other Languages Moderators 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.
kevincouto6 Posted May 22, 2018 Author 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
Other Languages Moderators Lord Henry Posted May 22, 2018 Other Languages Moderators 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.
kevincouto6 Posted May 22, 2018 Author 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
DNL291 Posted May 23, 2018 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
kevincouto6 Posted May 28, 2018 Author 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
DNL291 Posted May 28, 2018 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
kevincouto6 Posted May 28, 2018 Author 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
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