Postado Fevereiro 14, 2017 8 anos Olá boa noite a todos do forum TK. Bom estou com uma duvida um pouco simples para você porem não estou conseguindo fazer a mesma funcionar.. Eu queria um npc que é tipo o Aldo que repara a soft, porem queria que ele usasse como moeda de troca o id 25379 'Platinum Token', no qual ele pegaria o id 26442 (item quebrado) + platinum token e concertaria o mesmo dando ao player o item novo 26438 Uso T.S Version: (3.8 . DEV) Editado Fevereiro 14, 2017 8 anos por Shiro Slayer (veja o histórico de edições)
Postado Fevereiro 15, 2017 8 anos local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser,msg = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid, msg:lower() local coin, amount = 25379, 15 -- id do token e quanto sera removido local old, new = 26442, 26438 if(msgcontains(msg, 'reparar') or msgcontains(msg, 'repair')) then selfSay('Voce deseja reparar '..getItemNameById(old)..' por '..amount..' '..getItemNameById(coin)..' ?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerItemCount(cid, old) >= 1 then if doPlayerRemoveItem(cid, coin, amount) then doPlayerRemoveItem(cid, old, 1) doPlayerAddItem(cid, new) selfSay('Aqui esta o seu '..getItemNameById(new)..'!', cid) else selfSay('Desculpe, mas voce precisa de '..amount..' '..getItemNameById(coin)..'.', cid) end else selfSay('Desculpe, mas voce nao possui uma '..getItemNameById(old)..' para reparar.', cid) end talkState[talkUser] = 0 elseif msgcontains(msg, 'no') then talkState[talkUser] = 0 selfSay('Ok, obrigado.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Fevereiro 16, 2017 8 anos Autor Obrigado pelo script mais ele ta voltando essa linha com erro. Citar [C]: in function 'getItemNameById' data/npc/scripts/Ferreiro.lua:18: in function 'callback' data/npc/lib/npcsystem/npchandler.lua:431: in function 'onCreatureSay' data/npc/scripts/Ferreiro.lua:7: in function <data/npc/scripts/Ferreiro.lua:7>
Postado Fevereiro 16, 2017 8 anos Em 16/02/2017 em 09:43, Shiro Slayer disse: Obrigado pelo script mais ele ta voltando essa linha com erro. Testei o script aqui e funcionou, pode ser algum problema na função, tente alterar as mensagens do npc. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser,msg = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid, msg:lower() local coin, amount = 25379, 15 -- id do token e quanto sera removido local old, new = 26442, 26438 if isInArray({"reparar","repair","repara"}, msg) then npcHandler:say('Voce deseja reparar seu item por 15 coins?', cid) talkState[talkUser] = 1 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerItemCount(cid, old) >= 1 then if doPlayerRemoveItem(cid, coin, amount) then doPlayerRemoveItem(cid, old, 1) doPlayerAddItem(cid, new) npcHandler:say('Aqui esta o seu item!', cid) else npcHandler:say('Desculpe, mas voce precisa de 15 coins.', cid) end else npcHandler:say('Desculpe, mas voce nao possui um item para reparar.', cid) end talkState[talkUser] = 0 elseif msg == "no" and talkState[talkUser] >= 1 then npcHandler:say("then ok.", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Fevereiro 16, 2017 8 anos Autor Consegui alterar aqui e ele agora esta funcionando. Muito obrigado pelo script.
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.