Postado Março 6, 2015 10 anos olá,como fala no titulo quero um Npc que vende stone igual o Hery so que por diamonds e o formado para comprar igual do henry,REP+ para quem ajudar
Postado Março 6, 2015 10 anos Olha tenho 1 aqui mais não sei se vai funcionar no seu servidor pois editei ele no Tibia 8.60, testa ai: Vá em "Data/npcs/scripts" copie e cole 1 arquivo .lua, renomeie ele para newcoin.lua, apague tudo nele e coloque isso: 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 itemid = 2159 -- Aqui você coloca o ID do Diamond! local shopWindow = {} local t = { [2472] = {price = 10}, -- [ID da stone] e o preço que ela irá custar em diamond. [2520] = {price = 5}, } local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) if t[item] and getPlayerItemCount(cid, itemid) < t[item].price then selfSay("You do not have "..t[item].price.." new points.", cid) else doPlayerAddItem(cid, item) doPlayerRemoveItem(cid, itemid, (t[item].price)) selfSay("Here you 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()) Agora em "Data/npcs" copie e cole 1 arquivo .xml e renomeie ele para newseller.xml, apague tudo no arquivo e cole isso: <?xml version="1.0"?> <npc name="New Seller" script="data/npc/scripts/newcoin.lua" walkinterval="50000" floorchange="0"> <health now="100" max="100"/> <look type="154" head="78" body="88" legs="0" feet="88" addons="0"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. I {trade} items for new points!"/> </parameters> </npc> Pra configurar é só alterar o ID do diamond e adicionar as stones pelo valor de diamond, já ta marcado no script newcoin.lua onde é pra alterar! Editado Março 6, 2015 10 anos por Wakon (veja o histórico de edições) ➥ Regras | Seções OTServ | Seções BOT
Postado Março 6, 2015 10 anos Autor l Editado Março 6, 2015 10 anos por bielzk01 (veja o histórico de edições)
Postado Dezembro 23, 2015 9 anos Em 06/03/2015 14:49:49, Wakon disse: Olha tenho 1 aqui mais não sei se vai funcionar no seu servidor pois editei ele no Tibia 8.60, testa ai: Vá em "Data/npcs/scripts" copie e cole 1 arquivo .lua, renomeie ele para newcoin.lua, apague tudo nele e coloque isso: 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 itemid = 2159 -- Aqui você coloca o ID do Diamond! local shopWindow = {} local t = { [2472] = {price = 10}, -- [ID da stone] e o preço que ela irá custar em diamond. [2520] = {price = 5}, } local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) if t[item] and getPlayerItemCount(cid, itemid) < t[item].price then selfSay("You do not have "..t[item].price.." new points.", cid) else doPlayerAddItem(cid, item) doPlayerRemoveItem(cid, itemid, (t[item].price)) selfSay("Here you 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()) Agora em "Data/npcs" copie e cole 1 arquivo .xml e renomeie ele para newseller.xml, apague tudo no arquivo e cole isso: <?xml version="1.0"?> <npc name="New Seller" script="data/npc/scripts/newcoin.lua" walkinterval="50000" floorchange="0"> <health now="100" max="100"/> <look type="154" head="78" body="88" legs="0" feet="88" addons="0"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. I {trade} items for new points!"/> </parameters> </npc> Pra configurar é só alterar o ID do diamond e adicionar as stones pelo valor de diamond, já ta marcado no script newcoin.lua onde é pra alterar! Mano, eu quebrei a cabeça pra entender como funcionava o shop do cliente abre quando clica na img do diamond no canto superior da tela, editei imagens, perdi um tempão, dai encontro esse post Funcionou aqui, muito obrigado, hoje encontrei esse post, consegui criar npc que vende pokes por diamond e varias outras coisas, pela minha felicidade vou te dar mais rep++ amanhã Ah, uma dúvida/pedido, como eu coloco quantidade? se na janela do trade eu comprar 2 , só vem 1 e só pago o preço de 1 (ainda bem), queria por para caso role aquele negocinho que muda a quantidade e comprar o item, cobre o preço do item*quantidade e envie o item na quantidade certa, tem como me ensinar ou fazer pra mim?
Postado Dezembro 23, 2015 9 anos Acho que não tem como fazer isso, se tiver está fora de meu conhecimento, desculpe. ➥ Regras | Seções OTServ | Seções BOT
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.