HenrikDiamond 17 Postado Maio 1, 2014 Share Postado Maio 1, 2014 Olá galera do xtibia, o titulo ja explica bem o meu pedido e é assim: Estou reconstruindo meu server pokezot, e quero que os players que tiverem as penas dos 3 lendarios poderao trocar por outro item para pegar a recompensa! --So quero o npc q troque os itens. IDS: Penas a serem trocadas: 12149 12150 12151 Item que será recebido em troca das penas: 2200 Espero que possam me ajudar vlw Link para o comentário Compartilhar em outros sites More sharing options...
0 LioNsZ 3 Postado Maio 1, 2014 Share Postado Maio 1, 2014 (editado) hmn achei esse em outro forum acho que é oque você quer: local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction playerHaveItems(cid, itemid)local items = type(itemid) == "table" and itemid or {itemid}for i = 1, #items doif getPlayerItemCount(cid, items) <= 0 thenreturn falseendendreturn trueendfunction doPlayerRemoveItems(cid, itemid, count)local items = type(itemid) == "table" and itemid or {itemid}for i = 1, #items dodoPlayerRemoveItem(cid, items, count ~= nil and count or 1)endreturn nilendfunction creatureSayCallback(cid, type, msg)if(not npcHandler:isFocused(cid)) thenreturn falseendif msgcontains(msg, "trocar") thenif playerHaveItems(cid, {12149, 12150, 12151}) thendoPlayerRemoveItems(cid, {12149, 12150, 12151}, 300)doPlayerAddItem(cid, 2200, 1)elseselfSay("Você Não tem os itens necessarios.")endendreturn trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Agora vá em Data/Npc/Nomedonpc.xml <?xml version="1.0" encoding="UTF-8"?><npc name="Nomedonpc" script="trocaitems.lua" walkinterval="2000" floorchange="0"><health now="100" max="100"/><look type="169" head="114" body="86" legs="114" feet="0" addons="2"/><parameters><parameter key="message_greet" value="Ola, diga {trocar} para trocar 3 items por 1."/></parameters></npc> Editado Maio 1, 2014 por LioNsZ Link para o comentário Compartilhar em outros sites More sharing options...
0 LioNsZ 3 Postado Maio 1, 2014 Share Postado Maio 1, 2014 (editado) Ola amigo tava procurando aqui no Xtibia e achei um olha Vai em data/npc e crie um arquivo.xml, nomeia ele como você quiser, depois você cola isso dentro dele: <?xml version="1.0" encoding="UTF-8"?> <npc name="Nome do Npc" script="nome_do_arquivo.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="300" head="0" body="0" legs="0" feet="0" corpse="5995"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|! Do you want to do some {trading}?"/> </parameters> </npc> Pronto, feito isso vai em data/npc/script, e cria um arquivo .luaé so copiar um arquivo existente e renomear, depois você cola isso dentro: 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 = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local shopWindow = {} local moeda = 2200 local t = { [12149] = {price = 1}, -- Nome do Item [12150] = {price = 1}, -- Nome do Item [12151] = {price = 1}, -- Nome do Item } local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) if t[item] and not doPlayerRemoveItem(cid, moeda, t[item].price) then selfSay("Desculpe, mas voce nao tem "..t[item].price.." "..getItemNameById(moeda), cid) else doPlayerAddItem(cid, item) selfSay("aqui esta seu item!", cid) end return true end if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then for var, ret in pairs(t) do table.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)}) end openShopWindow(cid, shopWindow, onBuy, onSell) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Te ajudei rap ++ Editado Maio 1, 2014 por LioNsZ Link para o comentário Compartilhar em outros sites More sharing options...
0 HenrikDiamond 17 Postado Maio 1, 2014 Autor Share Postado Maio 1, 2014 (editado) Vou testar aqui ! ---@Edit teste aqui e nao deu certo. O npc que você passou vende as penas. Quero um npc q troque as penas pelo item 2200! ---Edit 2 ¬¬ Nem tinha comprado, e vi uma coisa. O script é o contrario do q eu quero. ele vende as penas pelo item 2200! Ainda n foi resolvido Editado Maio 1, 2014 por HenrikDiamond Link para o comentário Compartilhar em outros sites More sharing options...
0 HenrikDiamond 17 Postado Maio 1, 2014 Autor Share Postado Maio 1, 2014 (editado) Cara, ta sendo ao contrario ainda... o NPC tem q trocar as 3 penas (12149,12150,12151) pelo protection amulet (2200) esse ai troca o protection amulet por penas '-' ---E mesmo se eu editar o script, vai trocar as 3 penas por 3 protection amulets e eu quero so 1 em troca das 3!! Editado Maio 1, 2014 por HenrikDiamond Link para o comentário Compartilhar em outros sites More sharing options...
0 LioNsZ 3 Postado Maio 1, 2014 Share Postado Maio 1, 2014 Tenta agora editei ali Link para o comentário Compartilhar em outros sites More sharing options...
0 homersapiens 46 Postado Maio 1, 2014 Share Postado Maio 1, 2014 prontinho: .lua 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 if getPlayerItemCount(cid, 12149) and getPlayerItemCount(cid, 12150) and getPlayerItemCount(cid, 12151) < 1 then doPlayerPopupFYI(cid, "Esta faltando algum item para pegar sua recompensa") return true end if getPlayerItemCount(cid, 12149) and getPlayerItemCount(cid, 12150) and getPlayerItemCount(cid, 12151) > 1 then -- troca recompensa para o que o player terá que dizer para pegar as penas. doPlayerRemoveItem(cid, 12149, 1) doPlayerRemoveItem(cid, 12150, 1) doPlayerRemoveItem(cid, 12151, 1) doPlayerAddItem(cid, 2200, 1) doPlayerPopupFYI(cid, "Voce ganhou um "..getItemNameById(2200)..".") return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) .xml <?xml version="1.0" encoding="UTF-8"?> <npc name="Lendarios" script="lendarios.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="606" head="86" body="86" legs="86" feet="86" addons="3"/> <parameters> <parameter key="message_greet" value="Olá"/> </parameters> </npc> Link para o comentário Compartilhar em outros sites More sharing options...
0 zipter98 1101 Postado Maio 1, 2014 Share Postado Maio 1, 2014 Poderá realizar a troca apenas 1 vez por personagem? Link para o comentário Compartilhar em outros sites More sharing options...
0 HenrikDiamond 17 Postado Maio 1, 2014 Autor Share Postado Maio 1, 2014 (editado) Sim Zipter ---Erro no seu Npc xml homer [01/05/2014 14:11:15] [Error - Npc interface][01/05/2014 14:11:15] (Unknown script file)[01/05/2014 14:11:15] Description:[01/05/2014 14:11:15] Stack size changed![01/05/2014 14:11:21] [Warning - Npc::loadFromXml] Cannot load npc file (data/npc/granger.xml).[01/05/2014 14:11:21] Line: 8, Info: Input is not proper UTF-8, indicate encoding ![01/05/2014 14:11:21] Bytes: 0xE1 0x22 0x2F 0x3E Ta dando erro na mensagem me parece.. <?xml version="1.0" encoding="UTF-8"?><npc name="Granger" script="granger.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"><health now="150" max="150"/><look type="606" head="86" body="86" legs="86" feet="86" addons="3"/><parameters><parameter key="message_greet" value="Olá"/></parameters></npc> Editado Maio 1, 2014 por HenrikDiamond Link para o comentário Compartilhar em outros sites More sharing options...
0 zipter98 1101 Postado Maio 1, 2014 Share Postado Maio 1, 2014 (editado) 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 = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local ids = {{12149, 12150, 12151}, 2200} local feathers = ids[1] local str = "" local check = 0 local storage = 91821 if msgcontains(msg:lower(), "trade") or msgcontains(msg:lower(), "troca") then for i = 1, #feathers do if str == "" then str = "1 "..getItemNameById(feathers) else str = str..", 1 "..getItemNameById(feathers) end end if getPlayerStorageValue(cid, storage) > -1 then selfSay("You already traded with me.", cid) talkState[talkUser] = 0 return true else selfSay("Do you want trade "..str.." for 1 "..getItemNameById(ids[2]).."?", cid) talkState[talkUser] = 1 return true end elseif msgcontains(msg:lower(), "yes") and talkState[talkUser] == 1 then for i = 1, #feathers do if getPlayerItemCount(cid, feathers) > 0 then check = check + 1 end end if check == #feathers then selfSay("Thank you!", cid) for i = 1, #feathers do doPlayerRemoveItem(cid, feathers, 1) end doPlayerAddItem(cid, ids[2], 1) setPlayerStorageValue(cid, storage, 1) talkState[talkUser] = 0 return true else selfSay("Hey, you don't have all the feathers.", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg:lower(), "no") and talkState[talkUser] == 1 then selfSay("Ok, good bye!") talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Editado Maio 1, 2014 por zipter98 Link para o comentário Compartilhar em outros sites More sharing options...
0 HenrikDiamond 17 Postado Maio 1, 2014 Autor Share Postado Maio 1, 2014 @zipter98 Deu erro aqui o seu... Mas oque o Lionsz passou deu certo! Ok foi resolvido, pode mover Link para o comentário Compartilhar em outros sites More sharing options...
0 zipter98 1101 Postado Maio 1, 2014 Share Postado Maio 1, 2014 Hm, já vi o quê é. Enfim, movido. Link para o comentário Compartilhar em outros sites More sharing options...
0 Administrador Frenvius 204 Postado Novembro 29, 2017 Administrador Share Postado Novembro 29, 2017 A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
HenrikDiamond 17
Olá galera do xtibia, o titulo ja explica bem o meu pedido e é assim:
Estou reconstruindo meu server pokezot, e quero que os players que tiverem as penas dos 3 lendarios poderao trocar por outro item para pegar a recompensa!
--So quero o npc q troque os itens.
IDS:
Penas a serem trocadas:
12149
12150
12151
Item que será recebido em troca das penas:
2200
Espero que possam me ajudar vlw
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados