Postado Março 6, 2015 10 anos olá,queria um npc que compra e vende so por diamonds tipo um henry so que ives de ser td's é diamonds,para versao 8.54 e so comprar e vender stone obg REP + para quem ajudar
Postado Março 7, 2015 10 anos Bom dia. Bom, criei um script onde você configura os itens que serão vendidos no início e o preço será sempre por diamantes (configura o item que será usado como moeda). Porém, não é OpenTrade e sim dinâmico... pois para ser opentrade creio que será preciso editar algo nas sources do servidor. Enfim... Crie o seu npc com o nome desejado e a extensão (XML) na pasta npcs, como por exemplo: "Jack Stone.xml" e adicione o código dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Jack Stone" script="jack_stone.lua" walkinterval="0" floorchange="0"> <health now="0" max="0"/> <look type="274" corpse="2212"/> <parameters> <parameter key="message_greet" value=" Seja bem-vindo{ |PLAYERNAME|}!"/> </parameters> </npc> Agora abra a pasta scripts e crie um arquivo com o nome "jack_stone.lua" e adicione o código abaixo 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 ------------------- Configuração dos Itens ----------------------- local strg = 12120 -- Não Mexa local items = { ["demon armor"] = {2494, 5}, --["nome item"] = {id do item, quantidade de diamantes para comprar} ["demon legs"] = {2495, 10}, } local valor = 2145 -- id da moeda de compra (diamantes) ------------------- MESSAGES INICIAIS ---------------------------------------- local item = items[msg] if item then selfSay('Deseja comprar um {'..msg..'} pagando {'..item[2]..' '..getItemNameById(valor)..'?}', cid) setPlayerStorageValue(cid, strg, tostring(msg)) talkState[talkUser] = 1 ---------------------- NEGOCIAÇÃO ------------------------------- elseif msg == 'yes' and talkState[talkUser] == 1 then local check = items[getPlayerStorageValue(cid, strg)] if check then if getPlayerItemCount(cid, valor) >= check[2] then doPlayerRemoveItem(cid, valor, check[2]) doPlayerAddItem(cid, check[1], 1) selfSay('Parabens, voce acaba de adquirir um {'..getPlayerStorageValue(cid, strg)..'}.', cid) setPlayerStorageValue(cid, strg, -1) else selfSay('Voce precisa de '..check[2]..' diamantes para adquirir uma {'..getPlayerStorageValue(cid, strg)..'}.', cid) setPlayerStorageValue(cid, strg, -1) talkState[talkUser] = 0 end end else local str = '' for index, result in pairs(items) do str = str..index.."," end selfSay('Atualmente temos: {'..str..'} para a venda.', cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Configure à gosto e diga se é isto mesmo que precisas. Boa sorte. Gosta do meu trabalho? Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs. Atenciosamente,Adriano Swatt' Para ver meus tutoriais acesse meu perfil.
Postado Maio 13, 2016 9 anos Esse aqui fiz agora e foi testado em um 8.54 Em data/npc, coloque um novo arquivo com o nome Ditem.xml e cole isso dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Dian" script="Ditem.lua" walkinterval="3000" floorchange="0" access="5" > <health now="150" max="150"/> <look type="664" head="0" body="114" legs="114" feet="0"/> <parameters> <parameter key="message_greet" value="Bem-vindo |PLAYERNAME| Aqui voce pode comprar Stones, Vamos la diga {offer}."/> <parameter key="message_farewell" value="Bye! See you next time."/> </parameters> </npc> Na pasta data/npc/script, crie um arquivo chamado "Ditem.lua" e cole 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 -- Conversa Jogador/NPC if(msgcontains(msg, 'offer') or msgcontains(msg, 'Offer')) then selfSay('Eu vendo Fire stone, Water stone, Leaf stone. Diga qual voce quer adquirir.', cid) elseif(msgcontains(msg, 'Fire stone') or msgcontains(msg, 'fire stone')) then selfSay('A Fire stone custa 3 Diamonds, Voce vai querer?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'Water stone') or msgcontains(msg, 'water stone')) then selfSay('A Water stone Custa 3 Diamonds, Voce vai querer?', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'Leaf stone') or msgcontains(msg, 'leaf stone')) then selfSay('A Leaf stone Custa 3 Diamonds, Voce vai querer?', cid) talkState[talkUser] = 3 -- Confirmação da Compra elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if(doPlayerRemoveItem(cid, 2145, 3) == true) then selfSay('Thanks!', cid) doPlayerAddItem(cid, 11447, 1) talkState[talkUser] = 0 else selfSay('Voce nao tem diamonds suficiente.', cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if(doPlayerRemoveItem(cid, 2145, 3) == true) then selfSay('Thanks!', cid) doPlayerAddItem(cid, 11442, 1) talkState[talkUser] = 0 else selfSay('Voce nao tem diamonds suficiente.', cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 3) then if(doPlayerRemoveItem(cid, 2145, 3) == true) then selfSay('Thanks!', cid) doPlayerAddItem(cid, 11441, 1) talkState[talkUser] = 0 else selfSay('Voce nao tem diamonds suficiente.', cid) talkState[talkUser] = 0 end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Bom como já disse ele ja foi testado Espero ter ajudado Meus tópicos Se ajudei você deixe seu Rep! para fortalecer a amizade Vamos ajudar o fórum a crescer mais. Mengão porra! . . ----- NPC que vende informação ----- -----Baú Que dá Outfit se tiver Level ----- ----- [Npc] Que vende Stones (itens) por diamonds -----
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.