Postado Junho 26, 2014 10 anos Olá, alguém poderia ajudar com isso? Preciso de um npc de troca que não de sempre o mesmo item, sao 4 itens brinde ao todo, a chance eh variada. por exemplo: tem todo um dialogo antes p: hi npc: oi, esta interessado em forjar um {item}? p: item npc: somente guerreiros persistentes vao ganhar meus brindes, voce eh um? {guerreiro} p: guerreiro npc: preciso de a, b, c, d itens, voce os tem? p: yes npc: aqui esta o seu item1 npc2: aqui esta seu item2 assim por diante os itens requeridos são os mesmos, só o reward é aleatório. Editado Junho 26, 2014 10 anos por roach95 (veja o histórico de edições)
Postado Junho 26, 2014 10 anos Ta bem "simplão", mas é o que deu pra fazer aqui rapidão .. espero que funcione! local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -------------------------------------- CONFIG --------------------------------------------- local rand = math.random(0, 10) local item1, quantidade1 = 6666, 1 -- item1 e quantidade local item2, quantidade2 = 6666, 1 -- item2 e quantidade local item3, quantidade3 = 6666, 1 -- item3 e quantidade local item4, quantidade4 = 6666, 1 -- item4 e quantidade local reward1, quantidade5, porcentagem = 6666, 1, 1 -- recompensa 1, quantidade e porcentagem (1 - 10) total 100%, ou seja, 1 = 10% de chance! local reward2, quantidade6 = 6666, 1 -- recompesa 2 e qunatidade. -------------------------------------------------------------------------------------------- function teste1(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end if getPlayerItemCount(cid, item1) >= quantidade1 and getPlayerItemCount(cid, item2) >= quantidade2 and getPlayerItemCount(cid, item3) >= quantidade3 and getPlayerItemCount(cid, item4) >= quantidade4 then if doPlayerRemoveItem(cid, item1, quantidade1) and doPlayerRemoveItem(cid, item2, quantidade2) and doPlayerRemoveItem(cid, item3, quantidade3) and doPlayerRemoveItem(cid, item4, quantidade4) then if rand <= porcentagem then npcHandler:say('Você ganhou a recompensa 1!', cid) doPlayerAddItem(cid, reward1, quantidade5) else npcHandler:say('Você ganhou a recompensa 2!', cid) doPlayerAddItem(cid, reward2, quantidade6) end end else npcHandler:say('You don\'t have these items!', cid) end end keywordHandler:addKeyword({'item'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = "Somente guerreiros persistentes vao ganhar meus brindes, voce eh um? {guerreiro}"}) local node1 = keywordHandler:addKeyword({'gurreiro'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Para tentar forjar a arma X você precisa ter os items Y, W, Z e V, você tem eles???'}) node1:addChildKeyword({'sim'}, teste1, {npcHandler = npcHandler, onlyFocus = true, reset = true}) node1:addChildKeyword({'nao'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Volte Sempre.', reset = true}) npcHandler:addModule(FocusModule:new()) STYLLER OT 2022
Postado Junho 27, 2014 10 anos Autor funcionou perfeitamente o script, so falta alguns ajustes, ele ta entregando so a recompensa 2, eu troquei 100x os itens e deu as 100x a mesma coisa.. e queria colocar 4 itens de reward, nao 2 so, tem como? se tiver como editar a porcentagem tambem eh melhor tipo item1 = 40% item2 = 30% item3 20% e item 4 10% Editado Junho 27, 2014 10 anos por roach95 (veja o histórico de edições)
Postado Junho 27, 2014 10 anos Muda aqui: local reward1, quantidade5, porcentagem = 6666, 1, 1 -- recompensa 1, quantidade e porcentagem (1 - 10) total 100%, ou seja, 1 = 10% de chance! local reward2, quantidade6 = 6666, 1 -- recompesa 2 e qunatidade. Para: local reward1, quantidade5 = 6666, 1 -- recompensa 1 e quantidade. local reward2, quantidade6 = 6666, 1 -- recompensa 2 e quantidade. local reward3, quantidade7 = 6666, 1 -- recompensa 1 e quantidade. local reward4, quantidade8 = 6666, 1 -- recompensa 2 e quantidade. Depois mude essa parte: if rand <= porcentagem then npcHandler:say('Você ganhou a recompensa 1!', cid) doPlayerAddItem(cid, reward1, quantidade5) else npcHandler:say('Você ganhou a recompensa 2!', cid) doPlayerAddItem(cid, reward2, quantidade6) end Para: if rand <= 4 then npcHandler:say('Você ganhou a recompensa 1!', cid) doPlayerAddItem(cid, reward1, quantidade5) elseif rand >= 5 and rand <= 7 then npcHandler:say('Você ganhou a recompensa 1!', cid) doPlayerAddItem(cid, reward2, quantidade6) elseif rand >= 8 and rand <= 9 then npcHandler:say('Você ganhou a recompensa 1!', cid) doPlayerAddItem(cid, reward3, quantidade7) elseif rand == 10 then npcHandler:say('Você ganhou a recompensa 1!', cid) doPlayerAddItem(cid, reward4, quantidade8) else return false end Espero que funcione, abraços! STYLLER OT 2022
Postado Junho 28, 2014 10 anos Autor consegui ajeitar os rewards com essa sua explicação, obrigado, mas só falta essa coisa de ficar dando o mesmo reward somente sempre cai no reward2, não tem como colocar rand fixo para cada item? tipo rand de 1 a 4 pro reward 1, por ai vai.. que daí o npc ia randomizar o cálculo e já taria fixo , eu tentei fazer aqui mas minha incompetência é extrema.. Editado Junho 28, 2014 10 anos por roach95 (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.