LA

(Pedido)Npc Que Vende Mas Nao Por Dinhero Normal

Por laravita, 08 de ago. de 2011 em Archived

6
792
laravitaL
08 de agosto de 2011 às 22:55

Queria um npc que venda um item por outro, exemplo.O npc vende uma dsm por 5 red gem, ou um crusader por 10 diamonds.

kmmyrawrK
08 de agosto de 2011 às 23:11

Exemplo: Editando o NPC Oldrak:

 

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 creatureSayCallback(cid, type, msg)

       if(not npcHandler:isFocused(cid)) then
               return false
       end

 --------------------------------------------------------------------------------- ATÉ AQUI NÃO MODIFIQUE

       local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
       if msgcontains(msg, 'dragon scale mail') then        ---------------------- NOME DO ITEM QUE VOCE QUER VENDER
               selfSay('Do you want to buy a Dragon Scale Mail from me?', cid) --- PERGUNTA
               talkState[talkUser] = 1
       elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
               local qntd = XXX  ------------------------------------------------- QUANTIDADE DO DETERMINADO ITEM
               local itemid = XXXX  ---------------------------------------------- ID DO ITEM
                       if getPlayerItemCount(cid, itemid) > qnt then
                               selfSay('Voce comprou TAL item!', cid)  ----------- CONFIRMAÇAO DA COMPRA
                               doPlayerRemoveItem(cid, itemid, qntd) 
                               doPlayerAddItem(cid, YYYY, 1)  -------------------- ID DO ITEM QUE RECEBERA
                               talkState[talkUser] = 0
                       else
                               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..qnt.." "..getItemNameById(itemid).." para comprar.")
                       end

return TRUE
end

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

 

Veja o que deseja modificar e pronto

Editado Agosto 8 por Kmmy

laravitaL
09 de agosto de 2011 às 00:04

Cara deu erro aki disse que tem um valor errado na linha 38, algo assim dis que ela tenque fechar a linha 10 com end.

AntharazA
09 de agosto de 2011 às 00:43

seria melhor fazer um com tables fica mais fácil configurar, botei o end onde precisava:

 

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 creatureSayCallback(cid, type, msg)

       if(not npcHandler:isFocused(cid)) then
               return false
       end

 --------------------------------------------------------------------------------- ATÉ AQUI NÃO MODIFIQUE

       local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
       if msgcontains(msg, 'dragon scale mail') then        ---------------------- NOME DO ITEM QUE VOCE QUER VENDER
               selfSay('Do you want to buy a Dragon Scale Mail from me?', cid) --- PERGUNTA
               talkState[talkUser] = 1
       elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
               local qntd = XXX  ------------------------------------------------- QUANTIDADE DO DETERMINADO ITEM
               local itemid = XXXX  ---------------------------------------------- ID DO ITEM
                       if getPlayerItemCount(cid, itemid) >= qnt then
                               selfSay('Voce comprou TAL item!', cid)  ----------- CONFIRMAÇAO DA COMPRA
                               doPlayerRemoveItem(cid, itemid, qntd) 
                               doPlayerAddItem(cid, YYYY, 1)  -------------------- ID DO ITEM QUE RECEBERA
                               talkState[talkUser] = 0
                       else
                               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..qnt.." "..getItemNameById(itemid).." para comprar.")
                       end
end

return TRUE
end

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

Editado Agosto 9 por Antharaz

kmmyrawrK
09 de agosto de 2011 às 14:23

Só esqueceu de arrumar a linha 38 .-.

 

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 creatureSayCallback(cid, type, msg)

       if(not npcHandler:isFocused(cid)) then
               return false
       end

 --------------------------------------------------------------------------------- ATÉ AQUI NÃO MODIFIQUE

       local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
       if msgcontains(msg, 'dragon scale mail') then        ---------------------- NOME DO ITEM QUE VOCE QUER VENDER
               selfSay('Do you want to buy a Dragon Scale Mail from me?', cid) --- PERGUNTA
               talkState[talkUser] = 1
       elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
               local qntd = XXX  ------------------------------------------------- QUANTIDADE DO DETERMINADO ITEM
               local itemid = XXXX  ---------------------------------------------- ID DO ITEM
                       if getPlayerItemCount(cid, itemid) >= qnt then
                               selfSay('Voce comprou TAL item!', cid)  ----------- CONFIRMAÇAO DA COMPRA
                               doPlayerRemoveItem(cid, itemid, qntd) 
                               doPlayerAddItem(cid, YYYY, 1)  -------------------- ID DO ITEM QUE RECEBERA
                               talkState[talkUser] = 0
                       else
                               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..qnt.." "..getItemNameById(itemid).." para comprar.")
                       end
       end

return TRUE
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

Editado Agosto 9 por Kmmy

laravitaL
09 de agosto de 2011 às 22:28

nao deucerto aki, eu falo hi e ele nao fas nada só anda, mas vo da rep+ pra vcs , oq vale é a intençao.