Postado Fevereiro 28, 2018 7 anos Em 17/06/2017 em 19:23, lordzetros disse: Olá pessoal da comunidade de Tibia! Bom, hoje trouxe um pequeno e simples script, mas que pode ajudar muita gente. Vi alguns posts referindo aos NPCs que trocam determinados itens por outros, então tive a ideia de fazer algo que possa ter uma função semelhante e que funcione de uma maneira rápida. Fique à vontade em utilizá-la da maneira que quiser. Como funciona? O usuário vai usar a alavanca e irá adicionar um item em troca de outra item que você configurou no script. Em outras palavras, o usuário irá ganhar uma determinada quantidade de um item em troca de outra quantidade de um item diferente. (Tudo configurável) VERSÃO TESTADA: 8.60 - OTX --> Começando... Crie um arquivo com nome de changeItem.lua no diretório data/actions/scripts/ Logo após, adicione esse código dentro do arquivo criado: -- Script por Lordzetros para o forum Tibia King. local config = { itemNec = 2160, -- ID do item que necessita para efetuar a troca qtNec = 50, -- Quantidade do item que necessita para efetuar a troca itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca qtNova = 1, -- Quantidade do item que sera adicionado ao efetuar a troca stor = 25869, -- Storage, ou seja, a numeracao que identificara se o usuario fez ou nao fez a quest ainda } function onUse(cid, item, fromPosition, itemEx, toPosition) pos = getPlayerPosition(cid) if getPlayerStorageValue(cid,config.stor) ~= -1 then doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"So eh permitido fazer a troca de itens apenas uma vez!") doSendMagicEffect(pos, CONST_ME_POFF) elseif getPlayerStorageValue(cid,config.stor) == -1 then if item.itemid == 1945 then if getPlayerItemCount(cid,config.itemNec) >= config.qtNec then doPlayerAddItem(cid, config.itemNovo,config.qtNova) doPlayerRemoveItem(cid,config.itemNec,config.qtNec) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Voce acabou de trocar "..config.qtNec.." "..getItemNameById(config.itemNec).." por "..config.qtNova.." "..getItemNameById(config.itemNovo)..".") doSendMagicEffect(pos, CONST_ME_HOLYAREA) setPlayerStorageValue(cid, config.stor, 1) else doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Voce nao tem "..config.qtNec.." "..getItemNameById(config.itemNec).." para trocar por "..config.qtNova.." "..getItemNameById(config.itemNovo)..".") doSendMagicEffect(pos, CONST_ME_POFF) end end end end Em seguida, abra o arquivo com nome actions.xml que está localizada em data/actions/ E adicione essa linha de código no mesmo: <action actionid="9139" event="script" value="changeItem.lua"/> Preste atenção, pois o actionid será o número que irá colocar na alavanca em seu editor de mapa, ou seja, no caso acima está como 9139, logo, na alavanca terá que está como a seguinte imagem: Obs1.: Reparem que na imagem tem outro número destacado, que é o ID 1945, CERTIFIQUE-SE que a alavanca que irá utilizar no seu OT tenha esse mesmo ID, caso não tenha, basta mudar o número no código do script para o que irá utilizar no seu servidor. Obs2.: O código está configurado para que o usuário efetue a troca APENAS 1 VEZ, caso queira que ele troque quantas vezes quiser, apenas remova o seguinte comando do código: setPlayerStorageValue(cid, config.stor, 1) Obs3.: O resto que tinha que explicar está no próprio código, apenas faça um esforço de ler, agradeço. É isso, pessoal, espero que goste e aproveite. Como falei antes, é um código simples, pois comecei agora com Script, pretendo avançar no nível e funções que os mesmos desempenham, isso é só o começo, leve isso como uma prática de uma atividade para iniciante em scripts. Como eu faço pra essa alavanca fica dando item toda vez que clica e sem precisa de storage. Ex sempre que clica ganha um item aleatório sem precisa de tempo e nem de moeda. Clico ganho. Jamais se desespere em meio as sombrias afeiçoes da sua vida, pois das nuvens mais negras cai água límpida e fecunda
Postado Fevereiro 28, 2018 7 anos 4 horas atrás, lordzetros disse: Estou de volta, colega, e aí, resolveu? resolvi sim amigo obrigado
Postado Março 1, 2018 7 anos Autor -- Script por Lordzetros para o forum Tibia King. local config = { itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca qtNova = 1, -- Quantidade do item que sera adicionado ao efetuar a troca } function onUse(cid, item, fromPosition, itemEx, toPosition) pos = getPlayerPosition(cid) if item.itemid == 1945 then -- id da alavanca doPlayerAddItem(cid, config.itemNovo,config.qtNova) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Voce acabou de ganhar "..config.qtNova.." "..getItemNameById(config.itemNovo)..".") doSendMagicEffect(pos, CONST_ME_HOLYAREA) end end @louco3626 acredito que isso resolva o que deseja, :D. Editado Março 1, 2018 7 anos por lordzetros (veja o histórico de edições) Feliz daquele que ensina o que sabe, e aprende o que ensina.
Postado Março 1, 2018 7 anos 6 horas atrás, lordzetros disse: -- Script por Lordzetros para o forum Tibia King. local config = { itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca qtNova = 1, -- Quantidade do item que sera adicionado ao efetuar a troca } function onUse(cid, item, fromPosition, itemEx, toPosition) pos = getPlayerPosition(cid) if item.itemid == 1945 then -- id da alavanca doPlayerAddItem(cid, config.itemNovo,config.qtNova) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Voce acabou de ganhar "..config.qtNova.." "..getItemNameById(config.itemNovo)..".") doSendMagicEffect(pos, CONST_ME_HOLYAREA) end end @louco3626 acredito que isso resolva o que deseja, :D. Obrigado man! nem coloquei la mais ja agradeço, sao poucos que ajuda com as coisa aqui vlw. 8 horas atrás, lordzetros disse: -- Script por Lordzetros para o forum Tibia King. local config = { itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca qtNova = 1, -- Quantidade do item que sera adicionado ao efetuar a troca } function onUse(cid, item, fromPosition, itemEx, toPosition) pos = getPlayerPosition(cid) if item.itemid == 1945 then -- id da alavanca doPlayerAddItem(cid, config.itemNovo,config.qtNova) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Voce acabou de ganhar "..config.qtNova.." "..getItemNameById(config.itemNovo)..".") doSendMagicEffect(pos, CONST_ME_HOLYAREA) end end @louco3626 acredito que isso resolva o que deseja, :D. @lordzetros E se nao for incomoda muito tem como add uma funçao de teleporte assim que clica ser teleportado. Jamais se desespere em meio as sombrias afeiçoes da sua vida, pois das nuvens mais negras cai água límpida e fecunda
Postado Março 1, 2018 7 anos Autor @louco3626 por nada! Claro que tem, aqui o código: -- Script por Lordzetros para o forum Tibia King. local config = { itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca qtNova = 1, -- Quantidade do item que sera adicionado ao efetuar a troca telePosicao = {x=155, y=54, z=7}, -- Local que o player ira se teleportar ao usar a alavanca } function onUse(cid, item, fromPosition, itemEx, toPosition) pos = getPlayerPosition(cid) if item.itemid == 1945 then -- id da alavanca doPlayerAddItem(cid, config.itemNovo,config.qtNova) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Voce acabou de ganhar "..config.qtNova.." "..getItemNameById(config.itemNovo)..".") doTeleportThing(cid,config.telePosicao) doSendMagicEffect(pos, CONST_ME_HOLYAREA) end end Onde tem telePosicao, você irá colocar as coordenadas de onde o player irá se teletransportar. Editado Março 1, 2018 7 anos por lordzetros (veja o histórico de edições) Feliz daquele que ensina o que sabe, e aprende o que ensina.
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.