Jump to content

Ajuda Especificar


Recommended Posts

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

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

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

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
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 by kevincouto6
Link to comment

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 by DNL291
Link to comment
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 by kevincouto6
Link to comment

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 by DNL291
Link to comment
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

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