Ir para conteúdo

Featured Replies

Postado

Galera Eu fiz script para adicionar em meu otserver, mais esta ocorrendo o seguinte problema.

 

gostaria que comunicaçao na hora da troca fosse assim

 

eu: hi

Npc:Ola, diga trocar para trocar blueberrys por mana potion.

Eu: Trocar

Npc: Deseja trocar 100 BluBerryes por 20 Potions?

Eu: Yes

 

Apos eu dizer Yes o npc fazer as trocas....

estou com seguinte script:

 

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 playerHaveItems(cid, itemid) -- by MatheusMkalo
    local items = type(itemid) == "table" and itemid or {itemid}
    for i = 1, #items do
        if getPlayerItemCount(cid, items) <= 15 then
            return false
        end
    end
    return true
end
 
function doPlayerRemoveItems(cid, itemid, count) -- by MatheusMkalo
    local items = type(itemid) == "table" and itemid or {itemid}
    for i = 1, #items do
        doPlayerRemoveItem(cid, items, count ~= nil and count or 15)
    end
return nil
end
 
function creatureSayCallback(cid, type, msg)
 
    if(not npcHandler:isFocused(cid)) then
        return false
    end
    
    if msgcontains(msg, "trocar") then
selfSay('Deseja trocar {100 BluBerryes} por 20 Potions?', cid)
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then
        if playerHaveItems(cid, {2677}, 100) then
            doPlayerRemoveItems(cid, {2677}, 100)
            doPlayerAddItem(cid, 7620, 10)
        else
            selfSay("Voce nao tem as blueberrys para trocar por Mana Potion.")
        end
    end 
    return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
 
 
 
Mais quando eu falo "Yes" o Npc nao conclue a troca...

post-96542-0-82666400-1433976026_thumb.p

Resolvido por nookia

Ir para solução
Postado
  • Solução
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
 
local items = {
          item = {2677, 7620} -- item que será pedido e item que será dado na troca
}

local counts = {
          count = {100, 20} -- quantidade que será pedido e quantidade que será dado na troca
}
 
function creatureSayCallback(cid, type, msg)
          if(not npcHandler:isFocused(cid)) then
                    return false
          end
          local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

          if msgcontains(msg, 'trocar') then
                    if getPlayerItemCount(cid, items.item[1]) >= counts.count[1] then
                              doPlayerRemoveItem(cid, items.item[1], counts.count[1])
                              doPlayerAddItem(cid, items.item[2], counts.count[2])
                              selfSay('Você trocou '.. counts.count[1] ..' '.. getItemNameById(items.item[1]) ..' for '.. counts.count[2] ..' '.. getItemNameById(items.item[2]) ..'.', cid)
                    else
                              selfSay('Você não possui '.. counts.count[1] ..' '.. getItemNameById(items.item[1]) ..'.', cid)
                    end
          end
          return TRUE
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Testei e funcionando 100%, abraço.

The medieval RpG Server

espada-barbara.jpg

[RpG] OLDWORLD OPEN TIBIA

Postado

 

 

Galera Eu fiz script para adicionar em meu otserver, mais esta ocorrendo o seguinte problema.

 

gostaria que comunicaçao na hora da troca fosse assim

 

eu: hi

Npc:Ola, diga trocar para trocar blueberrys por mana potion.

Eu: Trocar

Npc: Deseja trocar 100 BluBerryes por 20 Potions?

Eu: Yes

 

Apos eu dizer Yes o npc fazer as trocas....

estou com seguinte script:

 

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 playerHaveItems(cid, itemid) -- by MatheusMkalo
    local items = type(itemid) == "table" and itemid or {itemid}
    for i = 1, #items do
        if getPlayerItemCount(cid, items) <= 15 then
            return false
        end
    end
    return true
end
 
function doPlayerRemoveItems(cid, itemid, count) -- by MatheusMkalo
    local items = type(itemid) == "table" and itemid or {itemid}
    for i = 1, #items do
        doPlayerRemoveItem(cid, items, count ~= nil and count or 15)
    end
return nil
end
 
function creatureSayCallback(cid, type, msg)
 
    if(not npcHandler:isFocused(cid)) then
        return false
    end
    
    if msgcontains(msg, "trocar") then
selfSay('Deseja trocar {100 BluBerryes} por 20 Potions?', cid)
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then
        if playerHaveItems(cid, {2677}, 100) then
            doPlayerRemoveItems(cid, {2677}, 100)
            doPlayerAddItem(cid, 7620, 10)
        else
            selfSay("Voce nao tem as blueberrys para trocar por Mana Potion.")
        end
    end 
    return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
 
 
 
Mais quando eu falo "Yes" o Npc nao conclue a troca...

 

 

 if playerHaveItems(cid, {2677}, 100) then ??

 doPlayerRemoveItems(cid, {2677}, 100) ??
oq seria isso pode me explicar? 

547657261_assinaturatibiaking.jpg.c1cc2728d9b7e7142cd10bf237f3370d.jpg

'' Uma ideia é apenas uma ideia, até ser desenvolvida, mastigada, retratada, analisada e por fim se tornar uma boa ideia. ''

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.6k

Informação Importante

Confirmação de Termo