Ir para conteúdo

Posts Recomendados

Bem Galera Eu Amoo Tibia RPG e por isso eu vo colokar em meu ot um npc q troca itens por addon !

 

Acontece q ele pede por ex:Echanted chicken Feathers // Isso é Trocado Por Boots Of Hast em Um NPC //

 

 

Bem eu consegui o Npc q Troca mas ele tem um Bug :X

 

Qndo eu falo com ele p troca Ele pega meu iten e n da em troca o otro Iten :X

 

e ainda fala q eu n tenho o iten p troca :@ Aki ta o scripiti dele ...

local exchanges = {

{takeId = 2487, takeCount = 1, giveId = 5887, giveCount = 1, keywords = {'crown armor','piece of royal steel'}},

{takeId = 2195, takeCount = 1, giveId = 5891, giveCount = 1, keywords = {'boh','enchanted chicken wings'}},

{takeId = 2498, takeCount = 2, giveId = 5884, giveCount = 1, keywords = {'fighting spirit','royal helmet'}},

{takeId = 2475, takeCount = 4, giveId = 5885, giveCount = 1, keywords = {'warriors sweat','warrior helmet'}},

{takeId = 5879, takeCount = 10, giveId = 5886, giveCount = 1, keywords = {'spool of yarn','giant spider silk'}},

{takeId = 2393, takeCount = 1, giveId = 5892, giveCount = 1, keywords = {'crude iron','giant sword'}},

{takeId = 2462, takeCount = 1, giveId = 5888, giveCount = 1, keywords = {'devil helmet','piece of hell steel'}},

{takeId = 2516, takeCount = 1, giveId = 5889, giveCount = 1, keywords = {'dragon shield','piece of draconian steel'}},

}

 

local phrases = {

"Oi, {|PLAYERNAME|} ! Em que posso ajudar?",

"How rude!",

"Wait! I'm talking.",

"Você não tem o item",

"Thank you so much.",

"Volte sempre, {|PLAYERNAME|}",

"Ohh, this is bad",

trade1="Do you want to trade your",

trade2="by"

}

 

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

 

npcHandler:setMessage(MESSAGE_GREET, phrases[1])

npcHandler:setMessage(MESSAGE_WALKAWAY, phrases[2])

npcHandler:setMessage(MESSAGE_PLACEDINQUEUE, phrases[3])

npcHandler:setMessage(MESSAGE_FAREWELL, phrases[6])

 

local function cyclopsExchange(cid, message, keywords, parameters, node)

local exchange = exchanges[parameters.id]

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

if doPlayerTakeItem(cid, exchange.takeId, exchange.takeCount) > 0 then

doPlayerAddItem(cid, exchange.giveId, exchange.giveCount)

npcHandler:say(phrases[5], cid)

else npcHandler:say(phrases[4], cid) end

keywordHandler:moveUp(1)

return TRUE

end

 

for i = 1, #exchanges do

local exchange = exchanges

for a = 1, #exchange.keywords do

local node = keywordHandler:addKeyword({exchange.keywords[a]}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text =phrases.trade1..' '..getItemName(exchange.takeId)..' '..phrases.trade2..' '..getItemName(exchange.giveId)..'?'})

node:addChildKeyword({'yes'}, cyclopsExchange, {id = i})

node:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = phrases[7]})

end

end

 

npcHandler:addModule(FocusModule:new())

 

 

 

 

 

 

 

 

 

 

<?xml version="1.0" encoding="UTF-8"?>

<npc name="A Sweaty Cyclops" script="data/npc/scripts/bootmaker.lua" walkinterval="2000" floorchange="0">

<health now="100" max="100"/>

<look type="22" head="0" body="0" legs="0" feet="0" addons="0"/>

</npc>

Editado por cagaio
Link para o comentário
https://xtibia.com/forum/topic/109665-npc-bugado/
Compartilhar em outros sites

  • 2 weeks later...

Usa esse 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

 

local shopModule = ShopModule:new()

npcHandler:addModule(shopModule)

 

function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end

if msgcontains(msg, 'help') then

selfSay('You can here change some items for "spider silk yarn", "chunk of crude iron", "draconian steel", "warrior sweat", "magic sulpher", "enchanted chicken wing", "royal steel", "hell steel", "engraved crossbow", "fighting spirit", "infernal bolt", "blue, green and red piece of clothes", "obsidian knife" and "lottery ticket".')

 

elseif msgcontains(msg, 'spider silk yarn') then

if getPlayerItemCount(cid,5879) >= 10 then

selfSay('Did you bring me the 10 Giant Silks ?')

talk_state = 1

else

selfSay('I need a 10 Giant Spider Silks, to give you the spider silk yarn. Come back when you have them.')

talk_state = 0

end

 

elseif msgcontains(msg, 'yes') and talk_state == 1 then

talk_state = 0

if getPlayerItemCount(cid,5879) >= 10 then

if doPlayerRemoveItem(cid,5879, 10) == TRUE then

doPlayerAddItem(cid, 5886, 1)

selfSay('Here u are.')

end

else

selfSay(havent_item)

end

 

elseif msgcontains(msg, 'chunk of crude iron') then

if getPlayerItemCount(cid,2393) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 then

selfSay('Did you bring me the 3 Bast Skirts and Giant Sword ?')

talk_state = 2

else

selfSay('I need a 3 Bast Skirts and Giant Sword, to give you the chunk of crude iron. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 2 then

talk_state = 0

if getPlayerItemCount(cid,2393) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 then

if doPlayerRemoveItem(cid,2393,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 then

selfSay(addon_give)

doPlayerAddItem(cid,5892,1)

end

else

selfSay(havent_item)

end

 

 

 

elseif msgcontains(msg, 'ticket') or msgcontains(msg, 'lottery') or msgcontains(msg, 'lottery ticket') or msgcontains(msg, 'lotery ticket') then

if getPlayerItemCount(cid,2006) >= 100 then

selfSay('Did you bring me 100 empty vials?')

talk_state = 9

else

selfSay('I need 100 empty vials, to give you a lottery ticket. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 9 then

talk_state = 0

if getPlayerItemCount(cid,2006) >= 100 then

if doPlayerRemoveItem(cid,2006,100) == 1 then

selfSay(addon_give)

if(math.random(1,10) == 1) then

doPlayerAddItem(cid,5958,1)

else

doPlayerAddItem(cid,5956,1)

end

 

else

selfSay(havent_item)

end

 

 

 

elseif msgcontains(msg, 'yes') and talk_state == 6 then

if getPlayerItemCount(cid,2006) >= 100 then

if doPlayerTakeItem(cid,2006,100) == 0 then

selfSay('Here you are.')

if(math.random(1,10) == 1) then

doPlayerAddItem(cid,5958,1)

else

doPlayerAddItem(cid,5956,1)

end

else

selfSay(hasNoMsg)

end

else

selfSay(hasNoMsg)

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

elseif msgcontains(msg, 'draconian steel') then

if getPlayerItemCount(cid,2516) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 then

selfSay('Did you bring me 3 Bast Skirts and Dragon Shield ?')

talk_state = 3

else

selfSay('I need 3 Bast Skirts and Dragon Shield, to give you the draconian steel. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 3 then

talk_state = 0

if getPlayerItemCount(cid,2516) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 then

if doPlayerRemoveItem(cid,2516,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 then

doPlayerAddItem(cid,5889,1)

selfSay('Here u are.')

end

else

selfSay(havent_item)

end

 

elseif msgcontains(msg, 'warrior sweat') then

if getPlayerItemCount(cid,2475) >= 1 and getPlayerItemCount(cid,2475) >= 1 and getPlayerItemCount(cid,2475) >= 1 and getPlayerItemCount(cid,2475) >= 1 then

selfSay('Did you bring me 4 warrior helmets?')

talk_state = 4

else

selfSay('I need 4 warrior helmets, to give you the warrior sweat. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 4 then

talk_state = 0

if getPlayerItemCount(cid,2475) >= 1 and getPlayerItemCount(cid,2475) >= 1 and getPlayerItemCount(cid,2475) >= 1 and getPlayerItemCount(cid,2475) >= 1 then

if doPlayerRemoveItem(cid,2475,1) == 1 and doPlayerRemoveItem(cid,2475,1) == 1 and doPlayerRemoveItem(cid,2475,1) == 1 and doPlayerRemoveItem(cid,2475,1) == 1 then

doPlayerAddItem(cid,5885,1)

selfSay(addon_give)

end

else

selfSay(havent_item)

end

 

elseif msgcontains(msg, 'magic sulpher') then

if getPlayerItemCount(cid,2392) >= 1 and getPlayerItemCount(cid,2392) >= 1 and getPlayerItemCount(cid,2392) >= 1 then

selfSay('Did you bring me 3 fire swords?')

talk_state = 5

else

selfSay('I need 3 fire swords, to give you the magic sulpher. Come back when you have them.')

talk_state = 0

end

 

elseif msgcontains(msg, 'yes') and talk_state == 5 then

talk_state = 0

if getPlayerItemCount(cid,2392) >= 1 and getPlayerItemCount(cid,2392) >= 1 and getPlayerItemCount(cid,2392) >= 1 then

if doPlayerRemoveItem(cid,2392,1) == 1 and doPlayerRemoveItem(cid,2392,1) == 1 and doPlayerRemoveItem(cid,2392,1) == 1 then

doPlayerAddItem(cid,5904,1)

selfSay(addon_give)

end

else

selfSay(havent_item)

end

 

elseif msgcontains(msg, 'enchanted chicken wing') then

if getPlayerItemCount(cid,2195) >= 1 then

selfSay('Did you bring me boots of haste?')

talk_state = 6

else

selfSay('I need boots of haste, to give you the enchanted chicken wing. Come back when you have them.')

talk_state = 0

end

 

elseif msgcontains(msg, 'yes') and talk_state == 6 then

talk_state = 0

if getPlayerItemCount(cid,2195) >= 1 then

if doPlayerRemoveItem(cid,2195,1) == 1 then

doPlayerAddItem(cid,5891,1)

selfSay(addon_give)

end

else

selfSay(havent_item)

end

 

 

 

elseif msgcontains(msg, 'royal steel') then

if getPlayerItemCount(cid,2487) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 then

selfSay('Did you bring me the 3 Bast Skirts and Crown Armor ?')

talk_state = 7

else

selfSay('I need 3 Bast Skirts and Crown Armor, to give you the royal steel. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 7 then

talk_state = 0

if getPlayerItemCount(cid,2487) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 then

if doPlayerRemoveItem(cid,2487,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 then

selfSay(addon_give)

doPlayerAddItem(cid,5887,1)

end

else

selfSay(havent_item)

end

 

 

elseif msgcontains(msg, 'hell steel') then

if getPlayerItemCount(cid,2462) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 then

selfSay('Did you bring me the 3 Bast Skirts and Devil Helmet ?')

talk_state = 8

else

selfSay('I need a 3 Bast Skirts and Devil Helmet, to give you the hell steel. Come back when you have them.')

talk_state = 0

end

 

elseif msgcontains(msg, 'yes') and talk_state == 8 then

talk_state = 0

if getPlayerItemCount(cid,2462) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 and getPlayerItemCount(cid,3983) >= 1 then

 

if doPlayerRemoveItem(cid,2462,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 and doPlayerRemoveItem(cid,3983,1) == 1 then

selfSay(addon_give)

doPlayerAddItem(cid,5888,1)

end

else

selfSay(havent_item)

end

 

elseif msgcontains(msg, 'engraved crossbow') then

if getPlayerItemCount(cid,5954) >= 15 then

selfSay('Did you bring me the 15 demon horns?')

talk_state = 9

else

selfSay('I need a 15 demon horns, to give you the engraved crossbow. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 9 then

talk_state = 0

if getPlayerItemCount(cid,5954) >= 15 then

if doPlayerRemoveItem(cid,5954,15) == 1 then

selfSay(addon_give)

doPlayerAddItem(cid,5947,1)

end

 

else

selfSay(havent_item)

end

 

elseif msgcontains(msg, 'fighting spirit') then

if getPlayerItemCount(cid,2498) >= 1 and getPlayerItemCount(cid,2498) >= 1 then

selfSay('Did you bring me the 2 Royal Helmets?')

talk_state = 10

else

selfSay('I need a 2 Royal Helmets, to give you the Fighting Spirit. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 10 then

talk_state = 0

if getPlayerItemCount(cid,2498) >= 1 and getPlayerItemCount(cid,2498) >= 1 then

if doPlayerRemoveItem(cid,2498,1) == 1 and doPlayerRemoveItem(cid,2498,1) == 1 then

selfSay(addon_give)

doPlayerAddItem(cid,5884,1)

end

 

else

selfSay(havent_item)

end

 

 

elseif msgcontains(msg, 'infernal bolt') then

if getPlayerItemCount(cid,5944) >= 1 then

selfSay('Did you bring me the Soul Orb?')

talk_state = 11

else

selfSay('I need a Soul Orb, to give you the 2 Infernal Bolts. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 11 then

talk_state = 0

if getPlayerItemCount(cid,5944) >= 1 then

if doPlayerRemoveItem(cid,5944,1) == 1 then

selfSay(addon_give)

doPlayerAddItem(cid,6529,2)

end

 

else

selfSay(havent_item)

end

 

elseif msgcontains(msg, 'blue piece of cloth') then

if getPlayerItemCount(cid,2663) >= 1 then

selfSay('Did you bring me the Mystic Turban ?')

talk_state = 12

else

selfSay('I need a Mystic Turban, to give you the Blue Piece of Cloth. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 12 then

talk_state = 0

if getPlayerItemCount(cid,2663) >= 1 then

if doPlayerRemoveItem(cid,2663,1) == 1 then

selfSay(addon_give)

doPlayerAddItem(cid,5912,1)

end

 

else

selfSay(havent_item)

end

 

elseif msgcontains(msg, 'green piece of cloth') then

if getPlayerItemCount(cid,2652) >= 1 then

selfSay('Did you bring me the Green Tunic ?')

talk_state = 13

else

selfSay('I need a Green Tunic, to give you the Green Piece of Cloth. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 13 then

talk_state = 0

if getPlayerItemCount(cid,2652) >= 1 then

if doPlayerRemoveItem(cid,2652,1) == 1 then

selfSay(addon_give)

doPlayerAddItem(cid,5910,1)

end

 

else

selfSay(havent_item)

end

 

elseif msgcontains(msg, 'red piece of cloth') then

if getPlayerItemCount(cid,2655) >= 1 then

selfSay('Did you bring me the Red Robe ?')

talk_state = 14

else

selfSay('I need a Red Robe, to give you the Red Piece of Cloth. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 14 then

talk_state = 0

if getPlayerItemCount(cid,2655) >= 1 then

if doPlayerRemoveItem(cid,2655,1) == 1 then

selfSay(addon_give)

doPlayerAddItem(cid,5911,1)

end

 

else

selfSay(havent_item)

end

 

 

elseif msgcontains(msg, 'obsidian knife') then

if getPlayerItemCount(cid,3983) >= 3 and getPlayerItemCount(cid,2516) >= 1 and getPlayerItemCount(cid,2425) >= 1 then

selfSay('Did you bring me the 3 bast skirts, a dragon shield and a obsidian lance?')

talk_state = 15

else

selfSay('I need 3 bast skirts, a dragon shield and a obsidian lance to give you the obsidian knife. Come back when you have them.')

talk_state = 0

end

elseif msgcontains(msg, 'yes') and talk_state == 15 then

talk_state = 0

if getPlayerItemCount(cid,3983) >= 3 and getPlayerItemCount(cid,2516) >= 1 and getPlayerItemCount(cid,2425) >= 1 then

if doPlayerRemoveItem(cid,3983,1) == 3 and doPlayerRemoveItem(cid,2516,1) == 1 and doPlayerRemoveItem(cid,2425,1) == 1 then

selfSay(addon_give)

doPlayerAddItem(cid,5908,1)

end

 

else

selfSay(havent_item)

end

 

 

elseif msgcontains(msg, 'no') and (talk_state >= 1 and talk_state <= 5) then

selfSay('Ok than.')

talk_state = 0

end

-- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself.

return true

end

 

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Link para o comentário
https://xtibia.com/forum/topic/109665-npc-bugado/#findComment-714070
Compartilhar em outros sites

×
×
  • Criar Novo...