Jump to content
Close

Search the Community

Showing results for tags 'Action'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Community
    • Rules
    • Portal
    • Resources
    • Commerce
    • Clubs
  • OTServers
    • Discussion
    • Support
    • Tutorial
    • Download
    • Code Development
    • Contests and Events
    • Form Team
    • Advertise your Server
  • Tibia Bots
    • Discussion
  • League of Legends's Geral
  • League of Legends's Suporte
  • Jogos Gerais's Geral
  • Nto New Season's Tópicos
  • Fakes's Fakes
  • Tibia's Geral
  • Tibia's Notícias
  • Tibia's Media
  • Tibia's Life Thread
  • Gráficos's Geral
  • Gráficos's Tutoriais
  • Gráficos's Recursos
  • Gráficos's Aprendizagem & Recursos
  • Gráficos's Galeria
  • Gráficos's Duelos & Batalhas
  • Gráficos's Suporte
  • Desenvolvimento e Programação's Geral
  • Desenvolvimento e Programação's Tutoriais
  • Desenvolvimento e Programação's Trabalhos
  • Desenvolvimento e Programação's Suporte
  • Computação's Geral
  • Computação's Dicas e Tutoriais
  • Computação's Suporte
  • Roleplaying's Roleplaying
  • Playground's (Off-topic)
  • Divulgações's Tópicos

Calendars

  • Official Calendar
  • OTServs Calendar
  • Several Calendars

Product Groups

  • Advertisements in Top
  • Advertisements In Signatures
  • Advertisements in Topics
  • Others Advertisements

Categories

  • Sales Section
    • Scripting Sales
    • Codes Sales
    • Mapping Sales
    • Websites Sales
    • Design/Sprites Sales
    • Bots Sales
  • Look Jobs
  • Looking for Freelancers
  • Team Formation

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Localization


My character


Favorite OTServ


Bot preferred


Interests

Found 123 results

  1. Olá,participo do tibiaking faz muito tempo e nunca tive vontade de aprender LUA até alguns dias atrás. começei a estudar 2 - 4 horas,assisto videos, leio artigos do lua.org, leio tutoriais aqui do tibiaking, em outros lugarem também. porém fico com bastante duvidas, até tenho uma amigo muito bom mesmo com os LUA e outros estilos de linguagem,porém nem toda hora ele pode me ajudar. se alguém puder me ajudar com as duvidas que tenho ficarei muito muito grato mesmo!! 1 - como posso últilizar tabelas? vejo muitos script aqui no tibiaking que possuem tabelas mas não últilizam da função table.insert, ou de outra função table alguém poderia me dar exemplos explicando? não precisa ser muito grande,só preciso saber o basico,o resto corro atrás; 2 - como últilizar o return true / return false vejo bastante script usando essas funçoes, e apenas sei que essas funções true e false são para boolean, mas quando eu sei que retorne boolean? pode me dar um exemplo dessas duas funções? e da função sozinha (return) 3 - funções or e and eu sei um pouco dessas funções, sei seu principio teórico mas não sei aplica-los. irei tentar aplicar logo abaixo. if level <= 99 and level <= 149 or level == 151 then doSendTextMessage(cid, 21, "você é level menor que 100") doSendTextMessage(cid, 21, "você é level menor que 150") doSendTextMessage(cid, 21, "você é level 151,pode passar") end ---------- alguém pode me explicar se isso está certo,ou se dá para deixar o code mais curto? Obrigado pela ajuda!
  2. Boa Tarde TibiaKing!! Estou a um tempo procurando e não achei nada parecido ou igual... T.T E estou precisando muito dele para o meu servidor!! Caso alguém poder me ajudar agradeço muito +Rep Bom o script Funcionaria assim! eu tenho um item XXXX < Ex Pergaminho Item quebra após o uso. eu usaria esse pergaminho em uma criatura que esta dentro desta lista Creature List {(Ciclope, 2160) (Wolf, 2160)} Ex > Nome da criatura, id do item que ganha apos selar a Creature só pode ser selada com a vida baixa > Ex Vida Red Msg de erro > essa criatura está com a vida muito alta ela não pode ser selada tire mais vida dela Creature teria % chance de falhar no selamento e sumir logo em seguida. Cada criatura daria um item diferente Ex > Jogador Selou um Ciclope e recebeu um Ciclope Pergaminho! Bom é isso... Obrigado
  3. Sistema simples de abrir uma box com algum objeto (No caso uma chave) e ter chance de ganhar outfits, items , montarias ou perder a chave. key_loot_crate.lua (Actions) local config = { key_break = 30, -- Porcentagem de chave quebrar crate_itemid = 1739, -- ItemID da Crate rewards = { [1] = { item = "addon", chance = 10, lookType = { [0] = 142, -- lookType Female [1] = 134, -- lookType Male }, addon = 2, name = "Warrior Sword", }, [2] = { item = "mount", chance = 20, mountId = 40, name = "Noble Lion", }, [3] = { item = {2160, 2}, chance = 30, }, [4] = { item = {2390, 1}, chance = 40, }, [5] = { item = {2195, 1}, chance = 50, }, [6] = { item = {2471, 2}, chance = 60, }, [7] = { item = {2469, 1}, chance = 70, }, [8] = { item = {2492, 2}, chance = 80, }, } } local function broadcast(message) for _, targetPlayer in ipairs(Game.getPlayers()) do targetPlayer:sendTextMessage(MESSAGE_STATUS_WARNING, message) end return true end function onUse(cid, item, fromPosition, itemEx, toPosition) local player = Player(cid) if (itemEx.itemid ~= config.crate_itemid) then return false end if (math.random(100) <= config.key_break) then toPosition:sendMagicEffect(3) player:sendTextMessage(MESSAGE_EVENT_ORANGE, "Na tentativa de abrir a crate, sua chave quebrou!") else local random = math.random(100) local i = 1 while (i <= #config.rewards) do local v = config.rewards[i] if (random <= v.chance) then if (v.item == "addon") then local lookType = v.lookType[player:getSex()] if (not player:hasOutfit(lookType, v.addon)) then player:addOutfitAddon(lookType, v.addon) broadcast(player:getName() .. " abriu uma loot crate e ganhou o addon ".. v.name .. ".") i = 9999 break else random = math.random(100) end elseif(v.item == "mount") then if (not player:hasMount(v.mountId)) then player:addMount(v.mountId) broadcast(player:getName() .. " abriu uma loot crate e ganhou a montaria ".. v.name .. ".") i = 9999 break else random = math.random(100) end else local new_item = player:addItem(v.item[1], v.item[2]) if (type(new_item) == "table") then new_item = new_item[1] end broadcast(player:getName() .. " abriu uma loot crate e ganhou ".. v.item[2] .. " ".. new_item:getName() .. ".") i = 9999 break end end i = i + 1 end if (i == 9999) then toPosition:sendMagicEffect(14) player:sendTextMessage(MESSAGE_EVENT_ORANGE, "Eh uma pena, mas a loot crate estava vazia.") else toPosition:sendMagicEffect(15) end end itemEx:remove() item:remove() return true end actions.xml <action itemid="22607" script="key_loot_crate.lua" /> <!-- Loot Crate Key --> HAVE FUN !
  4. Alguém poderia me ajudar em como fazer o personagem com 2 armas em deves de 1 Alguém pode me ajudar
  5. Olá, esse é um dos primeiros scripts que eu consigo fazer, resolvi trazer ao fórum pois talvez em algum momento da história isso sirva para alguém fazer alguma coisa. Eu também gostaria de ceder todos os créditos desse trabalho para o @WooX, pois sem ele eu não teria o conhecimento necessário para fazer o script funcionar, obrigado. local configuration = { positionParedinso1 = {x=1067, y=1071, z=7, stackpos=1}, -- Posição do objeto que ira sumir time = 1*15*1000, -- tempo para o objeto voltar para o seu lugar devido monstrosTime = 1*10*1000, -- tempo até os monstros despertarem guardioes = { [1] = {name = "Hellfire Fighter", pos = {x = 1065, y = 1071, z = 7}}, -- Todas posições onde os monstros seram criados [2] = {name = "Massive Fire Elemental", pos = {x = 1061, y = 1069, z = 7}}, -- Bem como seus nomes e quantidade [3] = {name = "Fury", pos = {x = 1069, y = 1074, z = 7}}, [4] = {name = "Demon", pos = {x = 1069, y = 1071, z = 7}}, [5] = {name = "Diabolic Imp", pos = {x = 1066, y = 1074, z = 7}}, [6] = {name = "Fire Devil", pos = {x = 1064, y = 1075, z = 7}}, [7] = {name = "Fire Elemental", pos = {x = 1062, y = 1069, z = 7}}, [8] = {name = "Massive Fire Elemental", pos = {x = 1067, y = 1068, z = 7}} } } function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 1945 then -- alavanca doTransformItem(item.uid, 1946) positionParedinso = getThingFromPos(configuration.positionParedinso1) if positionParedinso.itemid ~= 0 then doRemoveItem(positionParedinso.uid, 1) doCreatureSay(cid, "Um som terrível de engrenagens antigas se movendo pode ser ouvido imediatamente após você puxar a alavanca. \z Estrondos, chamas e vozes demoniacas estão vindo na sua direção, são ouvidos cada vez mais altos, corra por sua vida, \z você acaba fezer um mal antigo despertar.", TALKTYPE_ORANGE_1) -- Mensagem que será exibida após você puxar a alavanca addEvent(function() for k, v in pairs(configuration.guardioes) do doCreateMonster(v.name, v.pos) end end, configuration.monstrosTime) addEvent(doCreateItem, configuration.time, 12794, configuration.positionParedinso1) -- "12794" é o ID da parede que você quer criar após puxar a alavanca end else doTransformItem(item.uid, 1945) end end
  6. Algem Me Pode arrumar algum scrip casino igual ou semelhante à imagem
  7. Alguém poderia me ajudar com script de porta? Tipo eu preciso que o char ao dar use na porta passe direto para o outro lado e não que a porta abra, se possível também fazer de alguma forma para que coloque action de acordo com level, por exemplo para portas lvl 100, action id = X, para portas lvl 200 action id = Y. Se alguém poder me ajudar agradeço fortemente, também não sei se estou postando no lugar certo do forum pois é meu primeiro post então desde já agradeço.
  8. Trago a vocês esse sistema, originalmente produzido para um servidor custom 8.60. (testado em 0.4 - firelement). Acredito que será mais útil pra vocês do que pra mim nesse momento. Se alguém puder acrescentar informações a respeito do uso em diferentes tfs agradeço. 💪 INFORMAÇÕES P = Posso mineirar vários itens nesse sistema? R = Sim, existem quatro elementos e quatro categorias, possibilitando gerar até 16 produtos finais nas minas. Essa configuração pode ser editada facilmente. Caso queira usar da maneira como o script está feito, ao mineirar você poderá coletar as seguintes pedras: P = Mas as pedras caem aleatoriamente? R = Não, esse mining possui um SKILL, conforme você mineira o skill aumenta e consecutivamente o seu LEVEL. Inicia com pedras Light, depois pure, rare e massive. Você pode editar facilmente o modo como a exp sobe, os leveis necessários para executar cada ação e as pedras. P = Qual a utilidade das pedras elementares? R = Na ideia original, projetei o sistema para que as pedras fossem gastas ao comprar itens em baús, mas fica a seu critério como utilizá-las. Por exemplo, um colar de proteção earth/ice precisaria ser pago com pedras de earth e ice. Incluirei no tópico o script utilizado no baú e o script para trocar as pedras quando atingir 100 unidades cada. Veja o exemplo: INSTALAÇÃO Em data/actions/script crie um arquivo .lua chamado elementalmining e cole o código dentro: local config = { maxmininglevel = 100, storagemining = 10000, expperlevel = 1000, experiencemining = 10001 } local stone = { blue = {8637, 8633, 9798, 1354}, green = {8640, 8636, 9791, 1353}, lightblue = {8638, 8634, 9790, 12344}, red = {8639, 8635, 9788, 1355}, } local stones = { crystal = {stone.blue[1], stone.green[1], stone.lightblue[1], stone.red[1]}, lcrystal = {stone.blue[2], stone.green[2], stone.lightblue[2], stone.red[2]}, pcrystal = {stone.blue[3], stone.green[3], stone.lightblue[3], stone.red[3]}, scrystal = {stone.blue[4], stone.green[4], stone.lightblue[4], stone.red[4]}, } local ore = { blue = {2146, 7759, 5905, 8302}, green = {2149, 7761, 12396 ,8298}, lightblue = {2150, 7762, 12575, 8303}, red = {2147, 7760, 5906, 8299}, } local ores = { ore.blue[1], ore.blue[2], ore.blue[3], ore.blue[4], ore.green[1], ore.green[2], ore.green[3], ore.green[4], ore.lightblue[1], ore.lightblue[2], ore.lightblue[3], ore.lightblue[4], ore.red[1], ore.red[2], ore.red[3], ore.red[4]} local levels = { { level = {0,19}, stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4]}, items = {ores[1],ores[5], ores[9], ores[13]}, iselect = 0, bstart = 1, gstart = 2, lbstart = 3, rstart = 4, chance = 10, -- 30 qtdmax = 1, expgainmin = 1, --15 expgainmax = 1 --50 }, { level = {20,49}, stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4]}, items = {ores[1],ores[2], ores[5], ores[6], ores[9],ores[10], ores[13], ores[14]}, iselect = 1, bstart = 1, gstart = 3, lbstart = 5, rstart = 7, chance = 10, qtdmax = 1, expgainmin = 1, expgainmax = 1 }, { level = {50,69}, stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4], stones.pcrystal[1], stones.pcrystal[2], stones.pcrystal[3], stones.pcrystal[4]}, items = {ores[1],ores[2], ores[3], ores[5], ores[6], ores[7], ores[9],ores[10], ores[11], ores[13], ores[14], ores[15]}, iselect = 2, bstart = 1, gstart = 4, lbstart = 7, rstart = 10, chance = 10, qtdmax = 1, expgainmin = 1, expgainmax = 1 }, { level = {70,89}, stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4], stones.pcrystal[1], stones.pcrystal[2], stones.pcrystal[3], stones.pcrystal[4], stones.scrystal[1], stones.scrystal[2], stones.scrystal[3], stones.scrystal[4]}, items = {ores[1],ores[2], ores[3], ores[4], ores[5], ores[6], ores[7], ores[8], ores[9],ores[10], ores[11], ores[12], ores[13], ores[14], ores[15], ores[16]}, iselect = 3, bstart = 1, gstart = 5, lbstart = 9, rstart = 13, chance = 10, qtdmax = 1, expgainmin = 1, expgainmax = 1 }, { level = {90,100}, stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4], stones.pcrystal[1], stones.pcrystal[2], stones.pcrystal[3], stones.pcrystal[4], stones.scrystal[1], stones.scrystal[2], stones.scrystal[3], stones.scrystal[4]}, items = {ores[1],ores[2], ores[3], ores[4], ores[5], ores[6], ores[7], ores[8], ores[9],ores[10], ores[11], ores[12], ores[13], ores[14], ores[15], ores[16]}, iselect = 3, bstart = 1, gstart = 5, lbstart = 9, rstart = 13, chance = 10, qtdmax = 1, expgainmin = 1, expgainmax = 1 } } function onUse(cid, item, fromPosition, itemEx, toPosition) local getMiningLevel = getPlayerStorageValue(cid, config.storagemining) local getMiningExp = getPlayerStorageValue(cid, config.experiencemining) if getMiningLevel == -1 then setPlayerStorageValue(cid, config.storagemining, 0) end if getMiningExp < 0 then setPlayerStorageValue(cid, config.experiencemining, 0) end if (isInArray(stones.crystal, itemEx.itemid) or isInArray(stones.lcrystal, itemEx.itemid) or isInArray(stones.pcrystal, itemEx.itemid) or isInArray(stones.scrystal, itemEx.itemid)) then for a = 1, #levels do min = levels[a].level[1]; max = levels[a].level[2] if (getMiningLevel >= min and getMiningLevel <= max) then if isInArray(levels[a].stone, itemEx.itemid) then if (math.random(1, 100) <= levels[a].chance) then quantity = math.random(1, levels[a].qtdmax) experience = math.random(levels[a].expgainmin, levels[a].expgainmax) if isInArray(stone.blue, itemEx.itemid) then iselection = math.random(levels[a].bstart, levels[a].bstart + levels[a].iselect) collect = levels[a].items[iselection] end if isInArray(stone.green, itemEx.itemid) then iselection = math.random(levels[a].gstart, levels[a].gstart + levels[a].iselect) collect = levels[a].items[iselection] end if isInArray(stone.lightblue, itemEx.itemid) then iselection = math.random(levels[a].lbstart, levels[a].lbstart + levels[a].iselect) collect = levels[a].items[iselection] end if isInArray(stone.red, itemEx.itemid) then iselection = math.random(levels[a].rstart, levels[a].rstart + levels[a].iselect) collect = levels[a].items[iselection] end if getMiningLevel == 100 then doSendMagicEffect(toPosition, 9) doPlayerSendTextMessage(cid, 22, text) doPlayerAddItem(cid, collect, quantity) elseif getMiningLevel <= 99 then if getMiningExp >= config.expperlevel then doSendMagicEffect(getCreaturePosition(cid), 49) setPlayerStorageValue(cid, config.storagemining, getMiningLevel + 1) setPlayerStorageValue(cid, config.experiencemining, getMiningExp - config.expperlevel) text = "You collected " ..quantity.. " matter" ..(quantity > 1 and "s" or "").. ". \n You have gained " ..experience.. " experience points in Mining. \n You advanced from mining skill level " ..getMiningLevel.. " to mining skill level " ..(getMiningLevel + 1).. "." else setPlayerStorageValue(cid, config.experiencemining, getMiningExp + experience) text = "You collected " ..quantity.. " matter" ..(quantity > 1 and "s" or "").. ". \n You have gained " ..experience.. " experience points in Mining. \n" ..(config.expperlevel - getMiningExp - experience).. " experience points left to next level. \nCurrent Mining Skill: " ..getMiningLevel.. "." end doSendMagicEffect(toPosition, 9) doPlayerSendTextMessage(cid, 22, text) doPlayerAddItem(cid, collect, quantity) end else doSendMagicEffect(toPosition, 3) doSendAnimatedText(getCreaturePosition(cid), "Working!", COLOR_WHITE) end else doPlayerSendTextMessage(cid, 22, "You need to get better in Mining to mining this.") end end end else doSendMagicEffect(getCreaturePosition(cid), 2) doPlayerSendTextMessage(cid, 22, "You can't mining this.") end end Em data/actions/actions.xml use: <!-- MINING --> <action itemid="2553" event="script" value="elementalmining.lua"/> Se tiver dúvidas a respeito de como configurar pergunte no tópico. As partes editáveis são: Local config, local Stone, local Ore, local Levels. Note que local Levels indica que algumas pedras só podeerão ser mineiradas ao ter mining level superior. Configurações das pedras: Em data/items/items.xml troque os nomes de cada pedra (os nomes ficam a seu critério ;p) <item id="2149" article="a" name="light earth substance" plural="light earth substance"> <attribute key="weight" value="1000" /> </item> <item id="2146" article="a" name="light ice substance" plural="light ice substance"> <attribute key="weight" value="1000" /> </item> <item id="2147" article="a" name="light fire substance" plural="light fire substance"> <attribute key="weight" value="1000" /> </item> <item id="2150" article="a" name="light energy substance" plural="light energy substance"> <attribute key="weight" value="1000" /> </item> <item id="7761" article="a" name="pure earth substance" plural="pure earth substance"> <attribute key="weight" value="1000" /> </item> <item id="7759" article="a" name="pure ice substance" plural="pure ice substance"> <attribute key="weight" value="1000" /> </item> <item id="7760" article="a" name="pure fire substance" plural="pure fire substance"> <attribute key="weight" value="1000" /> </item> <item id="7762" article="a" name="pure energy substance" plural="pure energy substance"> <attribute key="weight" value="1000" /> </item> <item id="12396" article="a" name="rare earth matter" plural="rare earth substance"> <attribute key="weight" value="1000" /> </item> <item id="6551" article="a" name="rare ice substance" plural="rare ice substance"> <attribute key="weight" value="1000" /> </item> <item id="6550" article="a" name="rare fire substance" plural="rare fire substance"> <attribute key="weight" value="1000" /> </item> <item id="12575" article="a" name="rare energy substance" plural="rare energy substance"> <attribute key="weight" value="1000" /> </item> <item id="8298" name="massive earth substance" plural="massive earth substance"> <attribute key="weight" value="1000" /> </item> item id="8302" name="massive ice substance" plural="massive ice substance"> <attribute key="weight" value="1000" /> </item> <item id="8303" name="massive energy substance" plural="massive energy substance"> <attribute key="weight" value="1000" /> </item> <item id="8299" name="massive fire substance" plural="massive fire substance"> <attribute key="weight" value="1000" /> </item> TRANSFORMAR PEDRAS EM MOEDAS Em data/actions/scripts/tools crie um arquivo .lua e nomeie como changecoin: local COINS = { LIGHT = { EARTH_SUBSTANCE = 2149, ICE_SUBSTANCE = 2146, ENERGY_SUBSTANCE = 2150, FIRE_SUBSTANCE = 2147 }, PURE = { EARTH_SUBSTANCE = 7761, ICE_SUBSTANCE = 7759, ENERGY_SUBSTANCE = 7762, FIRE_SUBSTANCE = 7760 }, RARE = { EARTH_SUBSTANCE = 12396, ICE_SUBSTANCE = 6551, ENERGY_SUBSTANCE = 12575, FIRE_SUBSTANCE = 6550 }, MASSIVE = { EARTH_SUBSTANCE = 8298, ICE_SUBSTANCE = 8302, ENERGY_SUBSTANCE = 8303, FIRE_SUBSTANCE = 8299 } } local TRANSFORM = { [COINS.LIGHT.EARTH_SUBSTANCE] = { TO = COINS.PURE.EARTH_SUBSTANCE }, [COINS.LIGHT.ICE_SUBSTANCE] = { TO = COINS.PURE.ICE_SUBSTANCE }, [COINS.LIGHT.ENERGY_SUBSTANCE] = { TO = COINS.PURE.ENERGY_SUBSTANCE }, [COINS.LIGHT.FIRE_SUBSTANCE] = { TO = COINS.PURE.FIRE_SUBSTANCE }, [COINS.PURE.EARTH_SUBSTANCE] = { FROM = COINS.LIGHT.EARTH_SUBSTANCE, TO = COINS.RARE.EARTH_SUBSTANCE }, [COINS.PURE.ICE_SUBSTANCE] = { FROM = COINS.LIGHT.ICE_SUBSTANCE, TO = COINS.RARE.ICE_SUBSTANCE }, [COINS.PURE.ENERGY_SUBSTANCE] = { FROM = COINS.LIGHT.ENERGY_SUBSTANCE, TO = COINS.RARE.ENERGY_SUBSTANCE }, [COINS.PURE.FIRE_SUBSTANCE] = { FROM = COINS.LIGHT.FIRE_SUBSTANCE, TO = COINS.RARE.FIRE_SUBSTANCE }, [COINS.RARE.EARTH_SUBSTANCE] = { FROM = COINS.PURE.EARTH_SUBSTANCE, TO = COINS.MASSIVE.EARTH_SUBSTANCE }, [COINS.RARE.ICE_SUBSTANCE] = { FROM = COINS.PURE.ICE_SUBSTANCE, TO = COINS.MASSIVE.ICE_SUBSTANCE }, [COINS.RARE.ENERGY_SUBSTANCE] = { FROM = COINS.PURE.ENERGY_SUBSTANCE, TO = COINS.MASSIVE.ENERGY_SUBSTANCE }, [COINS.RARE.FIRE_SUBSTANCE] = { FROM = COINS.PURE.FIRE_SUBSTANCE, TO = COINS.MASSIVE.FIRE_SUBSTANCE }, [COINS.MASSIVE.EARTH_SUBSTANCE] = { FROM = COINS.RARE.EARTH_SUBSTANCE }, [COINS.MASSIVE.ICE_SUBSTANCE] = { FROM = COINS.RARE.ICE_SUBSTANCE }, [COINS.MASSIVE.ENERGY_SUBSTANCE] = { FROM = COINS.RARE.ENERGY_SUBSTANCE }, [COINS.MASSIVE.FIRE_SUBSTANCE] = { FROM = COINS.RARE.FIRE_SUBSTANCE } } function onUse(cid, item, fromPosition, itemEx, toPosition) if(getPlayerFlagValue(cid, PLAYERFLAG_CANNOTPICKUPITEM)) then return false end local COIN = TRANSFORM[item.itemid] if(not COIN) then return false end if(COIN.TO ~= nil and item.type == ITEMCOUNT_MAX) then doChangeTypeItem(item.uid, item.type - item.type) doPlayerAddItem(cid, COIN.TO, 1) elseif(COIN.FROM ~= nil) then doChangeTypeItem(item.uid, item.type - 1) doPlayerAddItem(cid, COIN.FROM, ITEMCOUNT_MAX) end return true end Em data/actions/actions.xml acrescente: <action itemid="2149" event="script" value="tools/changecoin.lua"/> <action itemid="2146" event="script" value="tools/changecoin.lua"/> <action itemid="2150" event="script" value="tools/changecoin.lua"/> <action itemid="2147" event="script" value="tools/changecoin.lua"/> <action itemid="7761" event="script" value="tools/changecoin.lua"/> <action itemid="7759" event="script" value="tools/changecoin.lua"/> <action itemid="7762" event="script" value="tools/changecoin.lua"/> <action itemid="7760" event="script" value="tools/changecoin.lua"/> <action itemid="12396" event="script" value="tools/changecoin.lua"/> <action itemid="6551" event="script" value="tools/changecoin.lua"/> <action itemid="12575" event="script" value="tools/changecoin.lua"/> <action itemid="6550" event="script" value="tools/changecoin.lua"/> <action itemid="8298" event="script" value="tools/changecoin.lua"/> <action itemid="8302" event="script" value="tools/changecoin.lua"/> <action itemid="8303" event="script" value="tools/changecoin.lua"/> <action itemid="8299" event="script" value="tools/changecoin.lua"/> Script adicional: Bau/Chest - Comprar mesmo item com duas moedas diferentes Isso é tudo, façam bom uso!
  9. E aí, Galera, esse é meu primeiro tópico aqui. Como está no título, estou mostrando um Script que eu editei de mudar a Skin(Outfit) ao dar use em algum item, Bom, vamos lá: 1º - Esse Código vocês vão no diretório: \data\actions\scripts e CRIEM um arquivo chamado skin.lua e em seguida cole este código dentro. 2º - Em seguida vocês adicionam essa Tag no arquivo do diretório: \data\actions\actions.xml IMPORTANTE!!! Os IDS que estão entre [ e ] no primeiro código são os ids dos itens que serão usados! No segundo código no qual os ids estão: 11256;11207;11144;9019 são os IDS dos itens do primeiro código! Algumas imagens abaixo:
  10. Eu ocupo um tipo de cassino ao mesmo da imagem ou semelhante para tibia 8.6
  11. 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
  12. Olá boa tarde, Eu tenho um script que você precisa puxar as alavancas corretas, para abrir um teleport em um determinado local do mapa.  Estou utilizando OTX 1.0, e não estou conseguindo fazer a action funcionar, porém também ela não apresenta nenhum erro, e os uids estão todos configurados.
  13. Salve galera bom eu achei um script de lenhar antigo fui atrás tentei editar deu fail então recebi ajuda de alguns membros e enfim consegui trazer isso para vocês para muitos pode ser um simples sistema de cortar arvore mas com ele da para usar a criatividade e usar para muitas outras coisas como por exemplo mina para minerar minérios/ arvores com frutos para colher e por ai vai. Bom o script faz o seguinte você usa o machado em uma arvore configurável e você fica com a roupa de lenhador corta a arvore fica o toco dela e depois de um tempo a arvore volta ao normal para ser cortada novamente e assim você ganha itens configuráveis. Membros que ajudaram no script @JoviM @lordzetros Criador do script original @PsyMcKenzie Corrigido por @Storm Testado na versão 0.3.6 / 8.54 Outfit de lenhador 8.54 V outfit obd 854_1248.obd = Homem outfit obd 854_1249.obd = Mulher 8.60 V outfit obd 860_1248.obd = Homem outfit obd 860_1249.obd = Mulher Action.xml <action itemid="ID DO MACHADO" event="script" value="NOME DO SCRIPT.lua"/> Script V Vídeo demonstrativo Espero que gostem do script
  14. Boa tarde galera TK, Estou precisando de ajuda em um script de "item de outfit" Seria um item "present" e ao abrir, você ganharia uma outfit selecionada, porém seria registrada e você a não perderia mesmo se trocasse, ou deslogasse o personagem, ou seja ficaria com a roupa para sempre, e também fosse possível trocar a cor da roupa do personagem, e após usar o item, ele sumiria. Agradeço muito pela atenção de todos!
  15. Queria que a bike seja unique, então não pode joga-la no chao function onUse(cid, item, frompos, itemEx, topos) local bike = {lookType = 1781} --- LookType do player em cima da bike. homem local bike1 = {lookType = 1781} --- LookType do player em cima da bike. mulher local speed = 999 --- Velocidade que a bike terá. if getPlayerStorageValue(cid, 32001) == 1 then doRemoveCondition(cid, CONDITION_OUTFIT) doChangeSpeed(cid, -speed) doSendAnimatedText(getCreaturePosition(cid), 'Robo Off', 35) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'Você desmontou do robo.') setPlayerStorageValue(cid, 32001, 0) else if getPlayerSex(cid) == 1 then -- homem doChangeSpeed(cid, speed) doSetCreatureOutfit(cid, bike, -1) doSendAnimatedText(getCreaturePosition(cid), 'Robo ON!', 32) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você montou no robo.') setPlayerStorageValue(cid, 32001, 1) elseif getPlayerSex(cid) == 0 then -- homem doChangeSpeed(cid, speed) doSetCreatureOutfit(cid, bike1, -1) doSendAnimatedText(getCreaturePosition(cid), 'Robo ON!', 32) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você montou no robo.') setPlayerStorageValue(cid, 32001, 1) end end return true end
  16. Olá pessoal, essa é a primeira versão do "Exercise Weapons", Sinta-se livre para sugerir modificações e ajudar a melhorá-lo! Caso você não tenha as sprites, pode usar outras, como a "Training Dummy" e outros items correspondentes. Crie o arquivo exercise_training.lua local skills = { [26397] = {id=SKILL_SWORD,voc=4}, [26398] = {id=SKILL_AXE,voc=4}, [26399] = {id=SKILL_CLUB,voc=4}, [26400] = {id=SKILL_DISTANCE,voc=3,range=CONST_ANI_SIMPLEARROW}, [26401] = {id=SKILL_MAGLEVEL,voc=2,range=CONST_ANI_ENERGY}, [26402] = {id=SKILL_MAGLEVEL,voc=1,range=CONST_ANI_FIRE}, } ------- CONFIG -----// local dummies = {26403,26404} local skill_gain = 1 -- per hit local gain_stamina = 60 local function start_train(pid,start_pos,itemid,fpos) local player = Player(pid) if player ~= nil then local pos_n = player:getPosition() if start_pos:getDistance(pos_n) == 0 and getTilePzInfo(pos_n) then if player:getItemCount(itemid) >= 1 then local exercise = player:getItemById(itemid,true) if exercise:isItem() then if exercise:hasAttribute(ITEM_ATTRIBUTE_CHARGES) then local charges_n = exercise:getAttribute(ITEM_ATTRIBUTE_CHARGES) if charges_n >= 1 then exercise:setAttribute(ITEM_ATTRIBUTE_CHARGES, (charges_n-1)) local required = 0 local currently = 0 local voc = player:getVocation() if skills[itemid].id == SKILL_MAGLEVEL then required = voc:getRequiredManaSpent(player:getBaseMagicLevel() + 1)/skill_gain currently = player:getManaSpent() player:addManaSpent(required - currently) else required = voc:getRequiredSkillTries(skills[itemid].id, player:getSkillLevel(skills[itemid].id)+1)/skill_gain currently = player:getSkillTries(skills[itemid].id) player:addSkillTries(skills[itemid].id, (required - currently)) end fpos:sendMagicEffect(CONST_ME_HITAREA) if skills[itemid].range then pos_n:sendDistanceEffect(fpos, skills[itemid].range) end player:setStamina(player:getStamina() + 60) if charges_n == 1 then exercise:remove(1) return true end local training = addEvent(start_train, voc:getAttackSpeed(), pid,start_pos,itemid,fpos) else exercise:remove(1) stopEvent(training) end end end end else stopEvent(training) end else stopEvent(training) end return true end function onUse(player, item, fromPosition, target, toPosition, isHotkey) local start_pos = player:getPosition() if target:isItem() then if isInArray(dummies,target:getId()) then if not skills[item.itemid].range and (start_pos:getDistance(target:getPosition()) > 1) then stopEvent(training) return false end if not player:getVocation():getId() == skills[item.itemid].voc or not player:getVocation():getId() == (skills[item.itemid].voc+4) then stopEvent(training) return false end player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You started training.") start_train(player:getId(),start_pos,item.itemid,target:getPosition()) end end return true end Adicione essa linha em actions.xml <!-- Training --> <action fromid="26397" toid="26402" script="exercise_training.lua" allowfaruse="1"/> Em events.xml - Você vai alterar a parte (enable="0" para "1") <event class="Player" method="onTradeRequest" enabled="1" /> Em /events/scripts/player.luaAdicione essa linha no início do arquivo local exercise_ids = {26397,26398,26399,26400,26401,26402} - Agora vá até a função function PlayerMoveItem e adicione abaixo: -- Exercise Weapons if isInArray(exercise_ids,item.itemid) then self:sendCancelMessage('You cannot move this item outside this container.') return false end - Na função function PlayerOnTradeRequest adicione essa linha abaixo: if isInArray(exercise_ids,item.itemid) then return false end Espero que gostem e seja útil.
  17. Olá, Bom... teve um pedido no Discord da TK feito por algum usuário (não estou recordando o nome) que estava tendo dificuldades em fazer determinado script, então decidi fazê-lo. É algo simples, eu já tinha enviado lá no canal de suporte, porém, como já de conhecimento por muitos, o canal foi removido. Decidi refazer de uma forma melhor e mais prática. * Sobre o Script * Quando o jogador utilizar a alavanca para ganhar determinado(s) item(s), ele terá que ter deixado em POSIÇÕES DEFINIDAS alguns itens, sendo assim, possível efetuar a troca. Simples, não? Caso ainda não tenha entendido, tem imagem abaixo de como funciona o mesmo. * Imagens demonstração * Tentando efetuar a troca sem tá com os itens posicionados de forma correta... Efetuando a troca de forma correta. * Instalando o Script * Em data/actions/scripts/ crie um arquivo chamado alavanca_troca.lua e cole isto dentro: --[[ Lordzetros - TK ]] local config_itens = { {id = 2666, pos = {144,63,6}, count = 1}, -- ID DO ITEM NECESSÁRIO, POSIÇÃO QUE DEVE FICAR, QUANTIDADE DE ITEM NECESSÁRIO {id = 2667, pos = {145,63,6}, count = 1}, {id = 2671, pos = {146,63,6}, count = 1}, -- Caso queira colocar outro item, basta seguir esse modelo (ctrl + c) } local config_troca = { msg_falha = "Falha na troca do item. Necessario: %dx %s em sua devida posicao!", msg_sucesso = "A troca foi efetuada com sucesso!", recompensas = {{id = 2003, count = 1}, {id = 2004, count = 1}} -- Para deixar apenas uma recompensa, apenas deixe recompensas = {{id = ID_DO_ITEM_A_GANHAR, count = QUANTIDADE_A_GANHAR}} } function onUse(player, item, fromPosition, target, toPosition, isHotkey) local ax_t = {} for i, v in ipairs(config_itens) do local vt = Tile(Position(v.pos[1], v.pos[2], v.pos[3])) local item_t = vt:getItemById(v.id) if (not item_t or item_t:getCount() < v.count) then player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(36, config_troca.msg_falha:format(v.count, ItemType(v.id):getName())) return false end table.insert(ax_t, {item_t, v.count}) end for i, v in ipairs(ax_t) do v[1]:remove(v[2]) end for i, v in ipairs(config_troca.recompensas) do player:addItem(v.id, v.count) end player:sendTextMessage(36, config_troca.msg_sucesso) player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_RED) return true end Em seguida, coloque esta linha de código abaixo de uma semelhante em data/actions/actions.xml <action actionid="30258" script="alavanca_troca.lua" /> Para finalizar, abre seu editor de mapa e coloque em algum alavanca o actionID = 30258 * Configurando o Script * Tá tudo comentado no código, portanto, vou falar só por cima. {id = 2666, pos = {144,63,6}, count = 1} Nesta parte, você deve colocar o id do item necessário, a posição que ele deve ficar e a quantidade. E nesta parte você configura a recompensa do jogador recompensas = {{id = 2003, count = 1}, {id = 2004, count = 1}} Id do item que ele ganhará e quantidade Enfim, script simples, porém, pode ser útil para muitos, assim como acredito que será para o usuário que solicitou, :). Abraços.
  18. Opa galera beleza? Eu estava aqui olhando outros fóruns e percebi que postaram esse sistema, porém os links estavam todos off Resolvi desenvolver o sistema pra vocês TFS usado: 1.2 (Não testado em versões anteriores) * Bom o sistema funciona basicamente assim: Ao clicar na alavanca, abrirá um Modal com todas as opções de compra na tela do jogador ! O jogador poderá selecionar entre a compra de 1x / 50x / 100x itens ! Adicionado venda só para player que possuírem ''Cap'' na bag. * Foto: Simples não? Então vamos ao que interessa ! Em data/actions/scripts Crie um arquivo com o nome de compra_modal.lua e coloque isso dentro : Em data/actions adicione a linha: Em data/creaturescripts/scripts Crie um arquivo com o nome de potions.lua e coloque isso dentro : Em data/creaturescripts/creaturescripts.xml adicione a linha: Créditos: EU (100% pelo script) Strutz (Pela ideia do sistema) Rep+ para me motivar Obs: Testem o Script antes da aprovação pois estou sem PC agora e a verificação de cap foi feita sem teste !
  19. Olá boa noite a todos, Estou desenvolvendo um Otserv, e preciso de ajuda com um código, procurei muito por ai mas infelizmente não encontrei, e não vejo mais onde conseguir ajuda. Eu preciso de um Script, que seja necessário: Level 120, 4 Vocações, 4 Itens para sacrifício, esteja com outfit de um "rato" e com a condição "bêbado" Exemplo: Gostaria de 4 itens em certas posições, e os players em certos sqms, com os itens de sacrifícios em certos sqms, você precisa estar com um outfit de "rato" e também com a condição "bebado", caso tudo isso esteja alinhado, e você puxa alavanca, será teleportado a uma nova coordenada. alguém poderia me ajudar com isso? estou disposto a pagar se necessário, agradeço atenção de todos.
  20. Salve guys, hoje pra galera do ATS voltada para NTO vou estar disponibilizando para vocês o famoso Edo Tensei. Atualmente os servidores existentes de NTO não contém esse sistema com uma certa qualidade, apenas gambiarras que se encontram disponível hoje em dia por ai. A script já tá feita a um tempo, infelizmente dava pra eu melhorar ela mais e corrigir umas coisinhas e optimizar ela melhor, porém atualmente estou desenvolvendo um novo edo tensei para meu servidor e que não será disponibilizado gratuitamente. Vamos ao que interessa, o gif a seguir irá mostrar como esse sistema funciona: Primeiramente, vá em actions > actions.XML e adicione as seguintes linhas: <!-- Edo Tensei by Sttorm --> <action itemid="2197" event="script" value="Capturar.lua"/> <action itemid="2193" event="script" value="Soltar.lua"/> Depois, em actions > scripts, crie um arquivo chamado Capturar.lua e cole o seguinte código dentro: Respectivamente, crie um outro arquivo chamado Soltar.lua e cole o seguinte código dentro: Explicando, para cada edo tensei deverá ser criado um monstro na pasta monsters com o respectivo nome, as demais explicações estão na própria script e no gif. As script não são as melhores, dá pra otimizar e melhorar em vários aspectos mas isso é o que posso disponibilizar atualmente hehe! Aproveitando, comecei a trabalhar de free-lancer esse ano(2019), trabalho principalmente com servidores derivados, estarei disponibilizando meu contato para vocês; Discord: Sttorm#8109 WhatsApp: (31) 97360-3962
  21. Opa galera beleza? Eu vi um cidadão aqui do forum pedindo, e para não reviver o tópico resolvi desenvolver 1 e postar @ADM Mayk on BaiakME Ta ai o script que tu pediu. Crie um arquivo com o nome de Bau_Diario.lua local config = { items = { [1] = {2160, 10}, [2] = {2159, 10} }, level = 100, tempo = 24*60*60, -- 24 horas stoTime = 31402 } function onUse(player, item, fromPosition, itemEx, toPosition) if player:getLevel() >= config.level then if player:getStorageValue(config.stoTime) - os.time() < 0 then player:setStorageValue(config.stoTime, os.time() + config.tempo) for _, table in pairs(config.items) do for i=1, #config.items do player:addItem(table[i]) end end else player:getStorageValue(config.stoTime, 0) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("Wait: %s.", string.diff(player:getStorageValue(config.stoTime)-os.time()))) end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Voce nao tem level "..config.level..".") end end Adicione a TAG em actions.xml <action actionid="22164" script="Bau_Diario.lua"/> Créditos: Eu
  22. Primeiramente boa noite, segundamente rsrs desculpa se estou postando o conteúdo no local errado, mas gostaria da ajuda de vocês, estou abrindo um OT 7.4 com uma equipe, mas o mapa que tenho quando passo encima da "cadeira" da poi não aparece nenhuma mensagem.. gostaria de saber como fazer pra depois de ir em todas as salas poder entrar no tp da sala de recompensas
  23. Fala galera beleza ? hoje vim trazer a solução do "bug" da bike, que podia usar enquanto pescava, usava fly ou ride etc... bom em actions/scripts/bike.lua em actions/scripts/basic/order.lua em actions/scripts/basic/pesca.lua Créditos pela a grande ajuda : @Danxi
  24. * Sobre o Sistema da Quest * Para quem já assistiu Sword Art Oline vai ficar fácil de entender. Jogadores poderão fazer uma quest simples, porém, diferenciada. Funciona da seguinte forma: 1 - Jogador terá que possuir uma chave para abrir o caminho de uma sala misteriosa e aparentemente cheia de tesouros e recompensas dentro de um baú 2 - Abrindo a passagem, ele vai se deparar com um baú em sua espera, o interesse do ser humano é devastador, ele irá abrir sim! 3 - Ao tentar abrir o baú, monstros serão invocados e a passagem será imediatamente fechada 4 - De todos os monstros que serão invocados, terá um chefe que será responsável por permitir a saída dos jogadores para sala de recompensa e sair daquele lugar, APENAS matando ele, isso será possível 5 - Após a morte do chefe, TODOS players na sala da quest serão teleportados para a área de recompensa configurada no script. Obs.: A quest tá configurada para ser feita em X minutos para TODO servidor, ou seja, se uma guild fez a quest e você configurou para ela ser feita novamente em 10 minutos, então, nenhum outro player poderá fazer a quest nesse intervalo, pois a storage armazenada é a do servidor. * Instalação * VERSÃO TESTADA: 8.6 - TFS 0.4 Para agilizar o processo, deixei como anexo todos os arquivos necessários, devidamente separados e organizados, caso queira baixar, o ViruScan dele está logo abaixo. Em data/actions/scripts/ 1° - Crie um arquivo chamado keySAO.lua e cole o seguinte código dentro: --[[ Script - Lordzetros Tibiaking - Lordzetros ]]-- local config = { parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- ID da parede |||| POSIÇÃO que ela irá ser criada strPassagem = {storage = 22338, tempo = 1}, -- Storage que vai controlar o tempo de intervalo para a quest ||||| tempo em MINUTOS de intervalo para os players fazer a quest novamente tempoFechar = 1, -- MINUTOS para a passagem fechar, caso não entrem APÓS abrirem a passagem } function remover_parede(conf) local parede = getTileItemById(conf.parede.pos, conf.parede.id) if (parede) then doRemoveItem(parede.uid, 1) doSendMagicEffect(conf.parede.pos, 10) end return true end function adicionar_parede(conf) local parede = getThingFromPos(conf.parede.pos).itemid ~= conf.parede.id if (parede) then return doCreateItem(conf.parede.id, 1, conf.parede.pos) and doSendMagicEffect(conf.parede.pos, 11) end return true end function onUse(cid, item, fromPos, item2, toPos) if (item2.itemid == config.parede.id) then if (getGlobalStorageValue(config.strPassagem.storage) >= os.time()) then return doCreatureSay(cid, 'Precisa esperar ' .. config.strPassagem.tempo .. ' minuto para fazer a quest!', TALKTYPE_ORANGE_1) end doRemoveItem(item2.uid, 1) doSendMagicEffect(config.parede.pos, 10) doCreatureSay(cid, "A passagem foi aberta por "..getPlayerName(cid).."! Peguem a recompensa no bau, depressa!", TALKTYPE_ORANGE_1) doPlayerSendCancel(cid, "A passagem ira fechar em " ..config.tempoFechar.. " minuto!") addEvent(function() adicionar_parede(config) end, config.tempoFechar * 60 * 1000) doRemoveItem(item.uid, 1) end return true end Em seguida, crie outro arquivo no mesmo local com o nome de bauSAO.lua e cole o código dentro: --[[ Script - Lordzetros Tibiaking - Lordzetros ]] local mti = { [1] = {nome = 'Demon', pos = {x=955, y=935, z=6}}, -- [numero] = {nome = 'Nome Monstro', pos = 'POSICAO QUE IRÁ RESPAWNAR O MONSTRO'} [2] = {nome = 'Demon', pos = {x=955, y=936, z=6}}, [3] = {nome = 'Demon', pos = {x=955, y=937, z=6}}, [4] = {nome = 'Demon', pos = {x=955, y=938, z=6}}, [5] = {nome = 'Demon', pos = {x=955, y=939, z=6}}, [6] = {nome = 'Demon', pos = {x=955, y=940, z=6}}, [7] = {nome = 'Demon', pos = {x=964, y=935, z=6}}, [8] = {nome = 'Demon', pos = {x=964, y=936, z=6}}, [9] = {nome = 'Demon', pos = {x=964, y=937, z=6}}, [10] = {nome = 'Demon', pos = {x=964, y=938, z=6}}, [11] = {nome = 'Demon', pos = {x=964, y=939, z=6}}, [12] = {nome = 'Demon', pos = {x=964, y=940, z=6}}, [13] = {nome = 'Loki', pos = {x=959, y=940, z=6}}, } local config = { unique = 17458, -- uniqueID que vai colocar no BAÚ no seu EDITOR DE MAPA! parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- ID da parede |||| POSIÇÃO que ela irá ser criada strPassagem = {storage = 22338, tempo = 1}, -- Storage que vai controlar o tempo de intervalo para a quest ||||| tempo em MINUTOS de intervalo para os players fazer a quest novamente } function adicionar_parede(conf) local parede = getThingFromPos(conf.parede.pos).itemid ~= conf.parede.id if (parede) then return doCreateItem(conf.parede.id, 1, conf.parede.pos) and doSendMagicEffect(conf.parede.pos, 11) end return true end function onUse(cid, item, fromPos, item2, toPos) if (item.uid == config.unique) then if (getGlobalStorageValue(config.strPassagem.storage) >= os.time()) then return doCreatureSay(cid, 'Precisa esperar ' .. config.strPassagem.tempo .. ' minuto para fazer a quest!', TALKTYPE_ORANGE_1) end doCreatureSay(cid, "Argh!! Sala com armadilha.", TALKTYPE_ORANGE_1) adicionar_parede(config) for _, cf in pairs(mti) do doSummonCreature(cf.nome, cf.pos) end setGlobalStorageValue(config.strPassagem.storage, os.time() + config.strPassagem.tempo * 60) end return true end Adicione as seguintes linhas de código em data/actions/actions.xml <action uniqueid="17458" event="script" value="bauSAO.lua"/> <action itemid="IDdaKEY" event="script" value="keySAO.lua" /> 2° - Agora em data/creaturescripts/scripts Crie um arquivo chamado tpSAO.lua e cole o código dentro: --[[ Script - Lordzetros Tibiaking - Lordzetros ]] local config = { SupEsquerdo = {x=953, y=930, z=6}, -- posicao do canto SUPERIOR ESQUERDO da área que ficará a quest InfDireito = {x=966, y=941, z=6}, -- posicao do canto INFERIOR DIREITO da área que ficará a quest chefe = "Loki", -- Nome do BOSS, responsável por abrir passagem e liberar a recompensa no baú parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- id da parede ||||| posicao dela posPremio = {x = 1263, y = 1128, z = 7}, -- posicao para area de recompensa quando os players matarem o boss msgSucesso = "Parabéns por passarem do desafio! Agora permitirei pegar algumas recompensas como reconhecimento de um otimo guerreiros que es!" -- Mensagem quando os players conseguirem matar o boss da sala } function getAllPlayersInArea(fromPosition, toPosition) local players = {} for _, pid in ipairs(getPlayersOnline()) do local f = {x = fromPosition.x, y = fromPosition.y, z = fromPosition.z} local t = {x = toPosition.x, y = toPosition.y, z = toPosition.z} local min = (fromPosition.z > toPosition.z and toPosition.z or fromPosition.z) for index = 0, math.abs(toPosition.z - fromPosition.z) do f.z = min + index t.z = min + index if (isInRange(getPlayerPosition(pid), f, t)) then table.insert(players, pid) end end end return players end function remover_parede(conf) local parede = getTileItemById(conf.parede.pos, conf.parede.id) if (parede) then doRemoveItem(parede.uid, 1) doSendMagicEffect(conf.parede.pos, 10) end return true end function adicionar_parede(conf) local parede = getThingFromPos(conf.parede.pos).itemid ~= conf.parede.id if (parede) then return doCreateItem(conf.parede.id, 1, conf.parede.pos) and doSendMagicEffect(conf.parede.pos, 11) end return true end function onDeath(cid) local boss = getCreatureName(cid) == config.chefe if boss then doCreatureSay(cid, config.msgSucesso, TALKTYPE_ORANGE_1) doSendMagicEffect(getCreaturePosition(cid), 49) addEvent(function() local players = getAllPlayersInArea(config.SupEsquerdo, config.InfDireito) for _, jogador in ipairs(players) do doTeleportThing(jogador, config.posPremio) doSendMagicEffect(getPlayerPosition(jogador), 11) end end, 7000) end return true end Adicione a seguinte linha de código em data/creaturescripts/creaturescripts.xml <event type="death" name="tpSao" script="tpSAO.lua"/> Em data/creaturescripts/scripts/login.lua adicione esta linha de código abaixo do último registerCreatureEvent 3° - Por fim, agora escolhe um monstro que será o chefe responsável por permitir que os jogadores saiam do local e que leve-os até a sala de recompensa após o derrotarem. Escolheu? Show, agora vá até o diretório dele em data/monster/pastaDoSeumonstro/arquivoDoSeuMonstro.xml e adicione essas linhas de códigos abaixo de alguma tag, no meu caso, utilizei abaixo da tag flags <script> <event name="tpSao"/> </script> Segue foto para melhor entendimento: * Explicação da configuração * Bom, apesar de está TUDO COMENTADO e AJUSTÁVEL, acho importante dá algumas explicações: 1 - Configurou tudo nas pastas corretamente, colocou todas linhas de códigos necessárias e explicadas? Beleza, você tá quase lá. 2 - Coloque em um baú no seu editor de mapa um UNIQUEID que será responsável por identificar que aquele BAÚ é da quest, segue imagem: Aconselho não modificar o valor, pois é muito improvável que já esteja sendo utilizado em seu servidor. 3 - Agora entrando na parte dos scripts: No arquivo keySAO.lua localizado em data/actions/scripts/ local config = { parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- ID da parede |||| POSIÇÃO que ela irá ser criada strPassagem = {storage = 22338, tempo = 1}, -- Storage que vai controlar o tempo de intervalo para a quest ||||| tempo em MINUTOS de intervalo para os players fazer a quest novamente tempoFechar = 1, -- MINUTOS para a passagem fechar, caso não entrem APÓS abrirem a passagem } Configure o id da parede que impedirá a passagem dos players e o jogador utilizará a chave nela para passar! Não esqueça de configurar a posição dela também, deixe a mesma que você colocou no mapa. Configure o storage que será responsável por permitir ou não jogadores fazerem a quest em X minutos. Configure o tempo que o player terá para passar para dentro da sala antes que a passagem se feche, no script tá 1 minuto. No arquivo bauSAO.lua localizado em data/actions/scripts/ local mti = { [1] = {nome = 'Demon', pos = {x=955, y=935, z=6}}, -- [numero] = {nome = 'Nome Monstro', pos = 'POSICAO QUE IRÁ RESPAWNAR O MONSTRO'} [2] = {nome = 'Demon', pos = {x=955, y=936, z=6}}, [3] = {nome = 'Demon', pos = {x=955, y=937, z=6}}, [4] = {nome = 'Demon', pos = {x=955, y=938, z=6}}, [5] = {nome = 'Demon', pos = {x=955, y=939, z=6}}, [6] = {nome = 'Demon', pos = {x=955, y=940, z=6}}, [7] = {nome = 'Demon', pos = {x=964, y=935, z=6}}, [8] = {nome = 'Demon', pos = {x=964, y=936, z=6}}, [9] = {nome = 'Demon', pos = {x=964, y=937, z=6}}, [10] = {nome = 'Demon', pos = {x=964, y=938, z=6}}, [11] = {nome = 'Demon', pos = {x=964, y=939, z=6}}, [12] = {nome = 'Demon', pos = {x=964, y=940, z=6}}, [13] = {nome = 'Loki', pos = {x=959, y=940, z=6}}, } local config = { unique = 17458, -- uniqueID que vai colocar no BAÚ no seu EDITOR DE MAPA! parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- ID da parede |||| POSIÇÃO que ela irá ser criada strPassagem = {storage = 22338, tempo = 1}, -- Storage que vai controlar o tempo de intervalo para a quest ||||| tempo em MINUTOS de intervalo para os players fazer a quest novamente } Configure os nomes e posições que os monstros irão respawnar, e repare que deixei apenas 1 diferenciado chamado 'Loki', pois foi o monstro que escolhi como CHEFE Configure o uniqueID que será utilizado no baú, recomendo não mexer nessa parte Configure novamente o ID da parede que irá bloquear a passagem e a mesma posição (use a mesma coisa da configuração anterior) Configure novamente o storage e tempo que permitirá os jogadores fazerem a quest em X minutos (use a mesma coisa da configuração anterior) No arquivo tpSAO.lua em data/creaturescripts/scripts/ local config = { SupEsquerdo = {x=953, y=930, z=6}, -- posicao do canto SUPERIOR ESQUERDO da área que ficará a quest InfDireito = {x=966, y=941, z=6}, -- posicao do canto INFERIOR DIREITO da área que ficará a quest chefe = "Loki", -- Nome do BOSS, responsável por abrir passagem e liberar a recompensa no baú parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- id da parede ||||| posicao dela posPremio = {x = 1263, y = 1128, z = 7}, -- posicao para area de recompensa quando os players matarem o boss msgSucesso = "Parabéns por passarem do desafio! Agora permitirei pegar algumas recompensas como reconhecimento de um otimo guerreiros que es!" -- Mensagem quando os players conseguirem matar o boss da sala } Configure o canto superior esquerdo e inferior direito, é de EXTREMA importância isso, pois será responsável por verificar os jogadores na sala da quest e teleportá-los, segue imagem: Coloque as posições corretamente de cada canto. Configure o nome do chefe que você escolheu para completar a quest, o monstro diferenciado que falamos lá em cima, certo? Configure novamente o ID da parede que irá bloquear a passagem e a mesma posição (use a mesma coisa da configuração anterior) Configure a posição do prêmio, isto é, a posição que o player será teleportado quando matar o CHEFE, a posição da SALA DE RECOMPENSAS ou seja lá o que queira fazer após os jogadores matarem o chefe. Configure a mensagem, caso queira, de quando os jogadores matarem o CHEFE da sala. * Observações finais e anexos para download * Digo logo que é um script simples, porém bastante trabalhoso de ser configurado, visto que faz-se necessário a instalação de alguns arquivos, mas não deixa de ser simples! A ideia que tive foi quando estava lembrando do anime, e como estou voltando aos poucos com Tibia (aprendendo bastante), tive a ideia de fazer isso, pois como gostava bastante de jogar em Baiak e modos semelhantes, isso daqui pode ser bastante útil. Ah! E deixe-me alertá-lo, é um sistema simples que não está 100% como eu desejava, portanto, quando tiver tempo estarei atualizando e deixando com mínimo de incoerência possível no funcionamento dele. POR FAVOR, faça o trabalho de ler as configurações do script, está tudo organizadinho para que você configure lá e deixe da maneira mais prática possível. Acredito que isso é tudo, abraços, \o. Download dos arquivos zipados: Arquivos - Quest Baú SAO - Lordzetros.zip Scan do arquivo: https://www.virustotal.com/pt/file/10e6bf2be0ccb33838a75198e5f822c1c8888f4c8652dcfc5235f87260a7582a/analysis/1540133843/
  25. Galera, boa tarde, estou com um problema no meu auto loot, eu peguei esse aqui. https://tibiaking.com/forums/topic/82086-system-auto-loot-perfect/?fbclid=IwAR0IZDFHcAyuyEf1F8JCMjuNizuVet_JRXkwxWQPCaVrgvuKD7EJ3cniv8U porem ao adicionar tudo certo na lista, ele nao puxa o item pra bag, poderiam me ajudar?

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...