MÓJÓ Posted October 15, 2017 at 08:07 PM Share Posted October 15, 2017 at 08:07 PM 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 More sharing options...
MÓJÓ Posted October 16, 2017 at 12:36 AM Author Share Posted October 16, 2017 at 12:36 AM BUMP Link to comment Share on other sites More sharing options...
Mário. Posted October 16, 2017 at 06:08 AM Share Posted October 16, 2017 at 06:08 AM Modifica: pc.remove_item(vnum, 1) Por isto: pc.remove_item(vnum, 200) Link to comment Share on other sites More sharing options...
JD9 Posted October 16, 2017 at 06:45 PM Share Posted October 16, 2017 at 06:45 PM 12 horas atrás, Mário. disse: Modifica: pc.remove_item(vnum, 1) Por isto: pc.remove_item(vnum, 200) Problema disso é que fica aceitar até 200, mesmo que entregues so 1 ele da-te os 40 rodares a mesma, essa solução não resulta. Link to comment Share on other sites More sharing options...
[Admin] tierrilopes Posted October 16, 2017 at 07:25 PM Share Posted October 16, 2017 at 07:25 PM when 123.take begin if pc.count_item(456) >=200 then pc.remove_item(456, 200) pc.give_item2(789,40) else syschat("item insuficiente, precisas de 200 ") end end end Link to comment Share on other sites More sharing options...
MÓJÓ Posted October 16, 2017 at 08:12 PM Author Share Posted October 16, 2017 at 08:12 PM 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 . Link to comment Share on other sites More sharing options...
Mário. Posted October 16, 2017 at 09:47 PM Share Posted October 16, 2017 at 09:47 PM 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 More sharing options...
MÓJÓ Posted October 16, 2017 at 10:36 PM Author Share Posted October 16, 2017 at 10:36 PM Mário para ti uma palavra . Muito obrigado és quase tão grande como o meu benfica Link to comment Share on other sites More sharing options...
MÓJÓ Posted October 16, 2017 at 10:49 PM Author Share Posted October 16, 2017 at 10:49 PM (edited) 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 Edited October 17, 2017 at 01:43 AM by MÓJÓ ERRO Link to comment Share on other sites More sharing options...
MÓJÓ Posted October 16, 2017 at 10:50 PM Author Share Posted October 16, 2017 at 10:50 PM está a dar esse erro devo ter ai feito asneira da grossa Link to comment Share on other sites More sharing options...
Mário. Posted October 17, 2017 at 11:24 AM Share Posted October 17, 2017 at 11:24 AM (edited) 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 October 17, 2017 at 11:28 AM by Mário. Link to comment Share on other sites More sharing options...
MÓJÓ Posted October 17, 2017 at 11:31 AM Author Share Posted October 17, 2017 at 11:31 AM Mário muito obrigado uma vez mais , mais logo já instalo isto e dou te feedback. cumprimentos Link to comment Share on other sites More sharing options...
MÓJÓ Posted October 17, 2017 at 04:09 PM Author Share Posted October 17, 2017 at 04:09 PM 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 More sharing options...
Mário. Posted October 17, 2017 at 06:11 PM Share Posted October 17, 2017 at 06:11 PM (edited) 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 October 17, 2017 at 06:13 PM by Mário. Link to comment Share on other sites More sharing options...
MÓJÓ Posted October 17, 2017 at 08:54 PM Author Share Posted October 17, 2017 at 08:54 PM o end eu depois ainda pus mas deu me erro na mesma ja vi e que acrescentaste onde eu tinha else por else if vou instalar digo te já algo .Não tenho palavras para ti .Um muito obrigado sentido Link to comment Share on other sites More sharing options...
MÓJÓ Posted October 17, 2017 at 08:57 PM Author Share Posted October 17, 2017 at 08:57 PM [email protected]:/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 More sharing options...
[Admin] tierrilopes Posted October 17, 2017 at 09:02 PM Share Posted October 17, 2017 at 09:02 PM no meu game chama-se pc.get_count, no original chama-se pc.count_item Link to comment Share on other sites More sharing options...
MÓJÓ Posted October 17, 2017 at 09:09 PM Author Share Posted October 17, 2017 at 09:09 PM vou já ver isso , eu não entendo ainda muito disto como dá para ver mas tenho muito gosto no que estou a fazer e como tal tenho queimado muito a cabeça com isto , agradeço muito aos dois a ajuda que me em dado e desculpem se vos tenho chateado . muito obrigado mesmo Link to comment Share on other sites More sharing options...
MÓJÓ Posted October 17, 2017 at 09:17 PM Author Share Posted October 17, 2017 at 09:17 PM Era isso mesmo , já está a bombar , muito obrigado aos dois , como é que uma cena pequena dava cabo disto mas assim já sei Link to comment Share on other sites More sharing options...
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