Ir para conteúdo

Featured Replies

Postado

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 por Shiro Slayer (veja o histórico de edições)

Postado
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())

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Postado
  • 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
  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())

 

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo