Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Salve carai! Então, tenho estudado um pouco de lua e acabei fazendo um script, simples, mas que pode vir a ser útil para alguns servidores...

 

O que o script faz? É simples, ele te deixa tirar a "pele" de um animal ainda vivo, como a obsidian knife faz com os mortos.

PS: Você pode configurar os mobs e suas respectivas "peles" no script, você só precisar tem um mínimo de conhecimento em lua.

PS²: Script feito em um TFS 1.2 recém baixado.

 

actions.xml: (PS: Não esqueça de definir o ID do item a ser usado)

	<action itemid="ID DO ITEM" script="skinning.lua" />

 

Observação: A Sintaxe em lua nos codes do fórum está aparentemente bugada, apenas copie o código abaixo e cole no seu editor lua que ficará normal.

 

actions/scripts/skinning.lua:

local wool = {"Sheep", "Black Sheep"} -- Creatures configuration for the first table which gives wool when skinned
local leather = {"Deer", "Bear", "Rat"} -- Creatures configuration for the second table which gives minotaur leather when skinned (Should probably rename the item to leather by the way)
local dleather = {"Dragon", "Wyvern"} -- Creatures configuration for the third table which gives green dragon leather when skinned (Could also change this to green leather or something)
local tPos = getCreaturePosition(target)

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	if isCreature(target) and isInArray(wool, getCreatureName(target)) then
		doSendMagicEffect(tPos, 1) -- The magic effect that will be shown @ target's position when skinned.
        player:addItem(11236, 3) -- Item which will be added when the mobs at "Wool" table are skinned and its amount.
		doCreatureAddHealth(target, -10)
	elseif isCreature(target) and isInArray(leather, getCreatureName(target)) then
		doSendMagicEffect(tPos, 1) -- The magic effect that will be shown @ target's position when skinned.
        player:addItem(5878, 1) -- Item which will be added when the mobs at "Leather" table are skinned and its amount.
		doCreatureAddHealth(target, -20)
	elseif isCreature(target) and isInArray(dleather, getCreatureName(target)) then
		doSendMagicEffect(tPos, 1) -- The magic effect that will be shown @ target's position when skinned.
        player:addItem(5877, 1) -- Item which will be added when the mobs at "DLeather" table are skinned and its amount.
		doCreatureAddHealth(target, -50)
	elseif isCreature(target) == false then
		player:sendTextMessage(MESSAGE_STATUS_WARNING, "You can only skin creatures.") -- The error message it will give if the player is trying to skin something that isn't a creature.
	else player:sendTextMessage(MESSAGE_STATUS_WARNING, "You cannot skin this creature.") -- The error message it will give if t he player is trying to skin a creature which isn't added in the configuration above.
		return true
	end
end

 

Editado por Oneda
Remover tPos desnecessários (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites

Versão melhorada da mesma action:

 

local mEffect = 1
local creatures = {pack1 = {"Sheep", "Black Sheep"}, pack2 = {"Deer", "Bear", "Rat"}, pack3 = {"Dragon", "Wyvern"}}
local rewards = {pack1 = 11236, pack2 = 5878, pack3 = 5877}
local amounts = {pack1 = 5, pack2 = 2, pack3 = 1}
local damages = {pack1 = -5, pack2 = -15, pack3 = -50}
 
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if target:isCreature(target) and isInArray(creatures.pack1, getCreatureName(target)) then
        toPosition:sendMagicEffect(mEffect)
        player:addItem(rewards.pack1, amounts.pack1)
        target:addHealth(damages.pack1)
    elseif isCreature(target) and isInArray(creatures.pack2, getCreatureName(target)) then
        toPosition:sendMagicEffect(mEffect)
        player:addItem(rewards.pack2, amounts.pack2)
        target:addHealth(damages.pack2)
    elseif isCreature(target) and isInArray(creatures.pack3, getCreatureName(target)) then
        toPosition:sendMagicEffect(mEffect)
        player:addItem(rewards.pack3, amounts.pack3)
        target:addHealth(damages.pack3)
    elseif target:isCreature(target) == false then
        player:sendTextMessage(MESSAGE_STATUS_WARNING, "You can only skin creatures.") -- The error message it will give if the player is trying to skin something that isn't a creature.
    else player:sendTextMessage(MESSAGE_STATUS_WARNING, "You cannot skin this creature.") -- The error message it will give if t he player is trying to skin a creature which isn't added in the configuration above.
        return true
    end
end

 

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por thelifeofpbion
      [Esses dias criei um tópico pedindo isso, ninguém respondeu. Mas consegui criar juntando alguns scripts que tinha aqui]
      Basicamente é uma action que clica em algum lugar e limpa uma determinada área.

      <action actionid="XXXX" event="script" value="Limpa_area.lua"/>


      Limpa_area.lua
       



      Abraços ?
    • Por Pepeco
      • Mining System •
      Vim aqui disponibilizar o mining, não é tão avançado como o de outros mas ele é totalmente automático tanto para colocar items quanto para vender os items (alavanca). É uma script simples e fácil de entender, podendo ter alterações com pessoas que não tem muito experiencia em lua. Mesmo que ele seja simples, o forum esta morrendo, pretendo fazer updates nele, caso alguém tenha alguma ideia do que possa fazer, só deixar um comentário.
       
      • Explicação •
      › Mining_Config
      config = { Level = 8, Axe_Skill = 10, Paredes = {5646,5640,5645,5639,5644,5648}, } -- Level = Level necessario para minerar -- Axe_Skill = Skill de axe necessaria para poder minerar -- Paredes = Paredes que vao ser mineradas › Mining_Items
      config = { [1] = {Item = 2157, Random_min = 1, Random2_min = nil, Random_max = 3, Random2_max = nil, Count = 2, Special_Storage = nil, Magic_Effect = nil, Count_Shop = nil, Money_Shop = nil}, -- Gold Nugget } -- Random_min = A chance de cair o item em math.random -- Random2_min = Essa chance é menor, ou seja, mais dificil de cair. -- Random_max = É a chance maxima -- Random2_max = A mesma coisa que o de cima -- Count = A quantidade maxima que pode cair, é aleatorio -- Special_Storage = Caso voce queira que de alguma storage, para ver quantos players ja conseguiram e etc.. -- Magic_Effect = Caso queira que de algum magic effect diferente, se for nil, será o padrao. -- Count_Shop = Quantidade necessaria para poder vender o item no shop (alavanca) -- Money_Shop = Quanto que o item vai custar, por unidade ou seja, se eu colocar Count_Shop = 100 e Money_Shop = 2000, vai ser 100 * 2000. -- No final que tem esse "--" é o nome do item, é melhor se organizar assim, pois se ficar muitos items e voce querer fazer alguma manutenção, facilita muito.  
      Bom, eu acho que é isso, não tem mais nada para se explicar. Então vamos para o script.
       
      Data/lib
       
      Data/actions/scripts
      Data/actions -- Abra o actions.xml
      <action itemid="id do item" script="nome do arquivo"/>  
      Data/actions/scripts -- Esse aqui é o shop, não é obrigatório.
      Data/actions -- Abra o actions.xml
      <action actionid="id da action" script="nome do arquivo"/>  
      Caso tenha gostado, deixe seu REP+, ajuda e motiva muito trazer conteúdo para o forum.
       
    • Por lordzetros
      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.   
    • Por Kemmlly
      Ha um tempo atrás eu procurei um Pet System bem simples pro meu servidor, e achei um muito bacana.
       
      TFS: 0.4
      Tibia: 8.6
       
      O sistema original foi postado pelo @Luquinha no tópico:
      O script funciona corretamente, eu fiz apenas algumas alterações e queria compartilhar caso vocês tenham as mesmas exigências que eu;
       
      * Ao tentar usar o PET em PZ não da mais erro na distro, sobe um efeito FAILED! no player e manda uma mensagem.
      * Agora cada PET precisa de um storage para ser usado, no meu caso, cada PET tem sua quest individual.
       
      O script modificado:
      function onUse(cid, item, frompos, item2, topos) local dolls = { [11256] = {pet = "Rat"}, [11207] = {pet = "Demon"}, [5791] = {pet = "Dragon"}, } local go = dolls[item.itemid] local summon = getCreatureSummons(cid) --------------------------------------------------- if not (getTilePzInfo(getCreaturePosition(cid))) then if #summon >= 1 then for _, pid in ipairs(summon) do doRemoveCreature(pid) doCreatureSay(cid, ""..go.pet..", Recuar!", TALKTYPE_ORANGE_1) end return true end if item.itemid == 5791 then if getPlayerStorageValue(cid, 6666) == 1 then doConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid))) doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1) else doPlayerSendTextMessage(cid, 19, "Voce precisa da quest para usar esse PET!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) end end if item.itemid == 11256 then if getPlayerStorageValue(cid, 4444) == 1 then doConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid))) doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1) else doPlayerSendTextMessage(cid, 19, "Voce precisa da quest para usar esse PET!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) end end if item.itemid == 11207 then if getPlayerStorageValue(cid, 4445) == 1 then doConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid))) doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1) else doPlayerSendTextMessage(cid, 19, "Voce precisa fazer a quest para usar esse PET!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) end end else doPlayerSendTextMessage(cid, 19, "Voce nao pode sumonar seu PET em Protect Zone!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) return true end end Creditos: @Luquinha @Roksas @Kemmlly
    • Por Noninhouh
      Bom galera, hoje vim aqui trazer pra vocês um sisteminha bem legal que a PxG possui, no entanto, esse sistema eu fiz para um servidor de Tibia, então para vocês usarem em um derivado seria bom adapta-lo, devido a outros sistemas (como o fly do poketibia).
       
      Como seria esse sistema? Basicamente você digita o comando !walk e o seu personagem começará a andar na direção em que está virado até encontrar um obstáculo, ou até digitar o comando !walk novamente.
       
      Crie um arquivo chamado walk.lua em /data/talkactions/scripts/, e cole isso dentro:
       
      Em talkactions.xml coloque a tag:
      <talkaction words="!walk" event="script" value="walk.lua"/>  
      Em creaturescripts.xml, veja se já tem o evento "logout", caso não tenha coloque:
      <event type="logout" name="PlayerLogout" event="script" value="logout.lua"/>  
      Em /data/creaturescripts/scripts/, crie um arquivo chamando logout.lua (caso não tenha) e cole isso dentro:
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo