Jump to content

Problema quest


MÓJÓ
 Share

Recommended Posts

Boas a todos estou aqui com um problema nessa quest que é a seguinte eu gostaria de saber como é que posso por exemplo colocar ai por exemplo 200 adicionares e receber 40 feitiços de item  ou seja receber 20  porcento, eu ja consegui  por a fazer a troca e por a receber o problema é que por qualquer quantidade que dé neste caso 1  da me sempre os  40 feitiços  , sei que a forma simples era entregar 1 e receber 1 isso eu consigo por a dar mas queria tipo como disse acima dar por exmplo 200 adicionares e receber 40 feitiços  ou seja receber 20  porcento.

cumprimentos

-- Quest wrote by Exygo
-- Creation date: 19 December 2015 5:35 PM - Romania hour
-- Line count: 44
----------------------------------------------------------
quest item_exchange begin
    state start begin
        -- 9003 = NPC vnum
        when 9003.take begin
            local vnum = item.get_vnum()
            local items
            items = {
            --[GIVE]      [RECEIVE]    [COUNT]
            [71085] =    { 71084,    20 },
            [27993] =    { 27003,    1 },
            [27994] =    { 27006,    1 },
            }

            if items[vnum] then
                say_title("NPC NAME:")
                say("Exchange an item for another item")
                --
                local received_vnum = items[vnum][1]
                local received_quantity = items[vnum][2]
                ---
                local item_name = item_name(received_vnum)
                --
                say_reward("You'll receive: "..item_name.." , quantity: "..received_quantity.."")
                say_item_vnum(received_vnum)
                say_title("Are you sure you want to do exchange ?")
                say("")

                local sel=select("Yes","No")

                if sel == 2 then
                    return
                else
                    setskin(0)
                    pc.give_item2(received_vnum, received_quantity)
                    pc.remove_item(vnum, 1)
                end
            end -- i
        end -- w
    end -- s
end -- q

item_exchange.quest

Link to comment
Share on other sites

1 hora atrás, MÓJÓ disse:

Vcs são grandes , e já agora há forma de eu dentro da mesma quest colocar por exmplo as pedras partidas a dar uma perola ou tenho q fazer uma quest para cada item  que quiser fazer a troca? cumprimentos .

Não precisas de fazer uma quest para cada um.

Aproveitado o que o @Tierri Lopes fez:

quest mojo_itens begin
	state start begin
		function get_settings()
			mojo_itens = {}
			mojo_itens.dar = 456, 789, 940, 302, 332, 3203, 323 -- Itens que o jogador precisa de ter para trocar por outros itens
			mojo_itens.quantidade = 200, 200, 140, 300 -- Quantidade de itens que o jogador precisa de ter para trocar pelos itens abaixo:
			mojo_itens.receber = 189, 293, 320, 696, 6969, 631, 322 -- Itens que o jogador irá receber depois da troca
			mojo_itens.rquantidade = 200, 130, 310, 50 -- Quantidade de itens que o jogador irá receber
			
			return mojo_itens
		end

		when 123.take begin
			local settings = mojo_itens.get_settings()

			if pc.get_count(settings.dar[1]) >= settings.quantidade[1] then -- Conta o primeiro valor, ou seja, 456 da tabela mojo_itens.dar e 200 da tabela mojo_itens.quantidade
				pc.remove_item(settings.dar[1], settings.quantidade[1]) 
				pc.give_item2(settings.receber[1],settings.rquantidade[1])
			elseif pc.get_count(settings.dar[2]) >= settings.quantidade[2] then
				pc.remove_item(settings.dar[2], settings.quantidade[2]) 
				pc.give_item2(settings.receber[2],settings.rquantidade[2])
			elseif pc.get_count(settings.dar[3]) >= settings.quantidade[3] then
				pc.remove_item(settings.dar[3], settings.quantidade[3]) 
				pc.give_item2(settings.receber[3],settings.rquantidade[3])
			-- Estás a entender? Cada número representa o valor que existe por linha em cada tabela
			else 
				syschat("item insuficiente, precisas de 200 ") 
			end
		end
	end
end 

 

Link to comment
Share on other sites

quest mojo_itens begin
    state start begin
        function get_settings()
            mojo_itens = {}
            mojo_itens.dar = 71085, 27990 -- Itens que o jogador precisa de ter para trocar por outros itens
            mojo_itens.quantidade = 200, 600,  -- Quantidade de itens que o jogador precisa de ter para trocar pelos itens abaixo:
            mojo_itens.receber = 71084, 27992, 27993, 27994 -- Itens que o jogador irá receber depois da troca
            mojo_itens.rquantidade = 20, 1, 1, 1 -- Quantidade de itens que o jogador irá receber
            
            return mojo_itens
        end

        when 20008.take begin
            local settings = mojo_itens.get_settings()

            if pc.get_count(settings.dar[71085]) >= settings.quantidade[200] then -- Conta o primeiro valor, ou seja, 456 da tabela mojo_itens.dar e 200 da tabela mojo_itens.quantidade
                pc.remove_item(settings.dar[71085], settings.quantidade[200])
                pc.give_item2(settings.receber[71084],settings.rquantidade[20])
            elseif pc.get_count(settings.dar[27990]) >= settings.quantidade[600] then
                pc.remove_item(settings.dar[27990], settings.quantidade[600])
                pc.give_item2(settings.receber[27992, 27993, 27994],settings.rquantidade[1])
            elseif pc.get_count(settings.dar[]) >= settings.quantidade[] then
                pc.remove_item(settings.dar[], settings.quantidade[])
                pc.give_item2(settings.receber[],settings.rquantidade[])
            
            else
                syschat("Não tens itens suficientes, queres enganar o Otávio? ")
            end
        end
    end
end

 

PNP.png

Edited by MÓJÓ
ERRO
Link to comment
Share on other sites

12 horas atrás, MÓJÓ disse:

está a dar esse erro devo ter ai feito asneira da grossa

 

Não é assim meu irmão, não precisas de mexer dessa forma!

quest mojo_itens begin
	state start begin
		function get_settings()
			mojo_itens = {}
			mojo_itens.dar = {456, 789, 940, 302, 332, 3203, 323} -- Itens que o jogador precisa de ter para trocar por outros itens
			mojo_itens.quantidade = {200, 200, 140, 300} -- Quantidade de itens que o jogador precisa de ter para trocar pelos itens abaixo:
			mojo_itens.receber = {189, 293, 320, 696, 6969, 631, 322} -- Itens que o jogador irá receber depois da troca
			mojo_itens.rquantidade = {200, 130, 310, 50} -- Quantidade de itens que o jogador irá receber
			
			return mojo_itens
		end

		when 123.take begin
			local settings = mojo_itens.get_settings()

			if pc.get_count(settings.dar[1]) >= settings.quantidade[1] then -- Conta o primeiro valor, ou seja, 456 da tabela mojo_itens.dar e 200 da tabela mojo_itens.quantidade
				pc.remove_item(settings.dar[1], settings.quantidade[1]) 
				pc.give_item2(settings.receber[1],settings.rquantidade[1])
			elseif pc.get_count(settings.dar[2]) >= settings.quantidade[2] then
				pc.remove_item(settings.dar[2], settings.quantidade[2]) 
				pc.give_item2(settings.receber[2],settings.rquantidade[2])
			elseif pc.get_count(settings.dar[3]) >= settings.quantidade[3] then
				pc.remove_item(settings.dar[3], settings.quantidade[3]) 
				pc.give_item2(settings.receber[3],settings.rquantidade[3])
			-- Estás a entender? Cada número representa o valor que existe por linha em cada tabela
			else 
				syschat("item insuficiente, precisas de 200 ") 
			end
		end
	end
end

 

Vamos lá entender isto:

elseif pc.get_count(settings.dar[2]) >= settings.quantidade[2] then
	pc.remove_item(settings.dar[2], settings.quantidade[2]) 
	pc.give_item2(settings.receber[1],settings.rquantidade[1])

 

settings.dar[2] & settings.quantidade[2] representam o segundo a frente de cada tabela dar e quantidade (mojo_itens.dar & mojo_itens.quantidade) que nestes casos são representados pelos números 789 e 200 respetivamente (consulta a tabela e começa a contar a partir do primeiro número que existe em cada uma delas).

O que acontece acima é igual ao que o Tierri fez mas um pouco mais complexo, ela vai buscar os valores nas tabelas que foram criadas:

Exemplo de quests que funcionam da mesma forma:
quest exemplo begin
	state start begin
		when 123.take begin
			if pc.get_count(456) >= 200 then -- Se o jogador tiver superior ou mais que 200 de quantidade do item 456 no inventário:
				pc.remove_item(456,200) -- Retira 200 de quantidade do item 456
				pc.give_item2(189,3) -- Dá 3 quantidades do item 189
			else
				say("Não tens a quantidade do item necessário.")
			end
		end
	end
end

quest exemplo1 begin
	state start begin
		function get_settings()
			local mojo_itens = {}
			mojo_itens.item = 456 -- item que o jogador precisa de ter
			mojo_itens.quantidade = 200 -- quantidade do item que o jogador precisa de ter
			mojo_itens.dar = 189 -- item que o jogador irá receber
			mojo_itens.rquantidade = 3 -- quantidade do item que o jogador irá receber
			return mojo_itens
		end
		
		when 123.take begin
			local settings = exemplo1.get_settings()
			
			if pc.get_count(settings.item) >= settings.quantidade then
				pc.remove_item(settings.item,settings.quantidade)
				pc.give_item2(settings.dar,settings.rquantidade)
			else
				say("Não tens a quantidade do item necessário.")
			end
		end
	end
end

 

 

OBS: Utiliza a minha primeira quest, tinha esquecido de meter os {} em cada uma das tabelas

Edited by Mário.
Link to comment
Share on other sites

quest feitico begin
    state start begin
        when 20008.take begin
            if pc.get_count(71085) >= 200 then
                pc.remove_item(71085,200)
                pc.give_item2(71084,20)

            else

            if pc.get_count(27990) >= 250 then
                pc.remove_item(27990,250)
                pc.give_item2(27992,1)

            else

            if pc.get_count(27990) >= 200 then
                pc.remove_item(27990,200)
                pc.give_item2(27993,1)

            else

            if pc.get_count(27990) >= 150 then
                pc.remove_item(27990,150)
                pc.give_item2(27994,1)

            else

            if pc.get_count(50300) >= 5 then
                pc.remove_item(50300,5)
                pc.give_item2(50300,1)

            else
            say("Não tens items suficientes, queres enganar o Otávio?.")
        
        end
    end
end

Mário depois de ver o teu post não aguentei o bixinho e tive que ir tentar e então passei horas nisto a queimar a cabecinha fiz a quest da informaçao no npc funcionou bem ai fiquei logo esperançado q ia correr tudo bem , e acontece- me isso q ai vez quando  instalo esta  , que mal fiz eu a deus ,que é que achas q eu ai pus mal ? ela está como o exemplo q me postas te em cima  ate fiz o upload da quest . abraço e mais uma vez obrigado

QUEST : feitico
STATE : start
WHEN  : 20008.take
Killed

feitico.quest

Link to comment
Share on other sites

Faltou-te demasiado ends no final, de forma a poderes fechar cada uma delas

Deixo-te aqui já feita e organizada, só precisas de instalar:

quest feitico begin
    state start begin
        when 20008.take begin
            if pc.get_count(71085) >= 200 then
                pc.remove_item(71085,200)
                pc.give_item2(71084,20) 
            elseif pc.get_count(27990) >= 250 then
                pc.remove_item(27990,250)
                pc.give_item2(27992,1) 
            elseif pc.get_count(27990) >= 200 then
                pc.remove_item(27990,200)
                pc.give_item2(27993,1) 
            elseif pc.get_count(27990) >= 150 then
                pc.remove_item(27990,150)
                pc.give_item2(27994,1)  
            elseif pc.get_count(50300) >= 5 then
                pc.remove_item(50300,5)
                pc.give_item2(50300,1) 
            else
            	say("Não tens items suficientes, queres enganar o Otávio?.")
            end
        end
    end
end

 

Edited by Mário.
Link to comment
Share on other sites

root@classicmt20:/usr/home/srv1/share/locale/germany/quest # ./qc feitico.quest
QUEST : feitico
STATE : start
WHEN  : 20008.take
Calls undeclared function! :
pc.get_count

diz me isso exactamente como ai está , aliás   já esse pc.get_count me tinha dado erro na outra quest das tabelas que eu ainda cheguei a por essa tb , é uma quest tão fixe que tenho pena de não conseguir por aqui . Obrigado uma vez mais mário

Link to comment
Share on other sites

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
 Share

×
×
  • Create New...