Jump to content

Show Show

Membros Veteranos
  • Joined

  • Last visited

Everything posted by Show Show

  1. Show Show posted a post in a topic in OTClient
    Segue um script que fiz para automatizar o processo de refinamento de gemas na máquina da ilha Elite Kingdom. Segue um vídeo com a demonstração do funcionamento do script. https://www.youtube.com/watch?v=wYjdhYRdsV8 --[[GUIA DE USO: Colocar as gemas a serem updadas em uma BP vazia. Duvidas -> Discord: Dimerism#5429]]-- idGemas = {3029,3030,3032,3033,9057} FlagRefinaGema = macro(200,"Refina Gema",function() if posx()~=990 or posy()~=1741 or posz()~=7 then return end local containers = g_game.getContainers() if not containers then return end flagGuardaGema = true for k=-1,0 do posMesa = {x=990-1,y=1741+k,z=7} Mesa = g_map.getTile(posMesa) itemMesa = Mesa:getTopLookThing() if itemMesa:getId() ~= 9532 and k==-1 then flagGuardaGema = false elseif itemMesa:getId() == 9532 and k==0 then flagGuardaGema = false end end --[[GUIA DE USO: Colocar as gemas a serem updadas em uma BP vazia. Duvidas -> Discord: Dimerism#5429]]-- flagMoveGema = true for _, container in pairs(containers) do for k=-1,1 do posMesa = {x=990-1,y=1741+k,z=7} Mesa = g_map.getTile(posMesa) itemMesa = Mesa:getTopLookThing() if itemMesa:getId() ~= 9532 and itemMesa:getCount()>1 then g_game.move(itemMesa, container:getSlotPosition(container:getItemsCount()), itemMesa:getCount()-1) print(itemMesa:getCount() .. " gemas na posicao " .. k) return end end if flagGuardaGema then posMesa = {x=990-1,y=1741,z=7} Mesa = g_map.getTile(posMesa) itemMesa = Mesa:getTopLookThing() g_game.move(itemMesa, container:getSlotPosition(container:getItemsCount()), itemMesa:getCount()) print("Guardando gema upada...") flagMoveGema = false return end items = container:getItems() if not items then return end lastItem = items[#items] if table.find(idGemas, lastItem:getId()) then for k=-1,1 do posMesa = {x=990-1,y=1741+k,z=7} Mesa = g_map.getTile(posMesa) itemMesa = Mesa:getTopLookThing() if itemMesa:getId() == 9532 and flagMoveGema then g_game.move(lastItem, posMesa, 1) flagMoveGema = false end end end end flagUseAlavancaGema = true for k=-1,1 do posMesa = {x=990-1,y=1741+k,z=7} Mesa = g_map.getTile(posMesa) itemMesa = Mesa:getTopLookThing() if not table.find(idGemas, lastItem:getId()) then flagUseAlavancaGema = false end end if flagUseAlavancaGema then posAlavancaGema = {x=990,y=1741+1,z=7} AlavancaGemaTile = g_map.getTile(posAlavancaGema) g_game.use(AlavancaGemaTile:getTopUseThing()) flagUseAlavancaGema = false end end) FlagRefinaGema.setOff() onTextMessage(function(mode, text) if string.find(text,"All gems must have the same level.") then print(text) local containers = g_game.getContainers() if not containers then return end for _, container in pairs(containers) do posMesa = {x=990-1,y=1741,z=7} Mesa = g_map.getTile(posMesa) itemMesa = Mesa:getTopLookThing() if itemMesa:getId() ~= 9532 then g_game.move(itemMesa, container:getSlotPosition(container:getItemsCount()-1), itemMesa:getCount()) print("Guardando gema do meio...") end end end end)
  2. Sim. Fiz com esse propósito. https://www.youtube.com/watch?v=AJfZ7xX7drM
  3. Coloque em uma BP somente os Flawless +0. O Char vai colocar no sqm sul do char um flaw e irá refina-lo até o nível que você definir de +1 a +7. Após conseguir refinar o flawless, ele vai jogar o flaw para um de 7 sqms atrás do char de acordo com o nível de refinamento do cristal. Obs.: Não coloque nenhum flawless que não seja +0 na BP aberta, pois o macro poderá usar o item para refinar o flawless que está no chão. Vídeo com demonstração: https://www.youtube.com/watch?v=7nArfJjS_iY timeRefineFlaw = now flagRefineFlaw = macro(500,"Refine Flaws",function() flagCanUseRefineFlaw = true tile = g_map.getTile({x=posx(),y=posy()+1,z=posz()}) if not tile:isWalkable() then flagCanUseRefineFlaw = false end for k= -4,2 do tile = g_map.getTile({x=posx()+k,y=posy()-1,z=posz()}) if not tile:isWalkable() then flagCanUseRefineFlaw = false end end if not flagCanUseRefineFlaw then if (now-timeRefineFlaw)>10000 then say("Vá para uma área onde a linha de trás e da frente do boneco estejam livres.") timeRefineFlaw = now end return end tile = g_map.getTile({x=posx(),y=posy()+1,z=posz()}) if tile:getTopLookThing():getId() == 942 then flawChao = tile:getTopThing() g_game.look(flawChao) else flawBackpack = findItem(942) g_game.move(flawBackpack, {x=posx(),y = posy()+1, z= posz()}, 1) end end) onTextMessage(function(mode, text) if flagRefineFlaw.isOn() then if distMax == 0 then elseif string.find(text:lower(), "you see a flawless ice crystal") and not string.find(text, "+" .. tostring(distMax)) and not string.find(text, "Using") then tile = g_map.getTile({x=posx(),y=posy()+1,z=posz()}) if tile:getTopLookThing():getId() == 942 then flawChao = tile:getTopThing() useWith(942,flawChao) end elseif string.find(text:lower(), "you see a flawless ice crystal") and string.find(text, "+" .. tostring(distMax)) then tile = g_map.getTile({x=posx(),y=posy()+1,z=posz()}) flawChao = tile:getTopThing() g_game.move(flawChao, {x=posx()+distMax-5,y = posy()-1, z= posz()}, 1) elseif not string.find(text:lower(), "you see a flawless ice crystal") and not string.find(text:lower(), "using") and string.find(text:lower(), "flawless ice crystal") then tile = g_map.getTile({x=posx(),y=posy()+1,z=posz()}) g_game.move(tile:getTopLookThing(), {x = 65535, y=SlotBack, z=0}, tile:getTopLookThing():getCount()) elseif string.find(text:lower(), "you see") and not string.find(text:lower(), "flawless ice crystal") then flawBackpack = findItem(942) g_game.move(flawBackpack, {x=posx(),y = posy()+1, z= posz()}, 1) end end end) UI.Separator() UI.Label("Refine do Flaw:") distMin = 1 distMax = 7 function RefinaFlaw(parent) local panelName = "refinaFlaw" if not parent then parent = panel end local ui = g_ui.createWidget("DualScrollPanel", parent) ui:setId(panelName) if not storage[panelName] then storage[panelName] = { min = 1, max = 7, text = 'exura' } end ui.title:setOn(storage[panelName].enabled) ui.title.onClick = function(widget) storage[panelName].enabled = not storage[panelName].enabled widget:setOn(storage[panelName].enabled) end local updateText = function() ui.title:setText("Refine >= +" .. math.floor(storage[panelName].min*7/100) .. " e <= +" .. math.floor(storage[panelName].max*7/100)) end local repeatTime ui.scroll1.onValueChange = function(scroll, value) storage[panelName].min = value updateText() end ui.scroll2.onValueChange = function(scroll, value) storage[panelName].max = value updateText() end ui.text.onTextChange = function(widget, text) storage[panelName].text = "" updateText() end ui.scroll1:setValue(storage[panelName].min) ui.scroll2:setValue(storage[panelName].max) macro(1000, function() if storage[panelName].enabled then distMin = math.floor(storage[panelName].min*7/100) distMax = math.floor(storage[panelName].max*7/100) end end) end RefinaFlaw()
  4. Acho meio chato quando vou na cidade e o bot fica parando pra atacar os gatos. Fiz uma modificação no OTC para o target não atacar os monstros que você definir. Basta substituir o conteúdo do arquivo creature.lua na pasta (caminho da pasta do seu usuário)\AppData\Roaming\OTClientV8\otclienttrpgbv8\bot\vBot_4.8\targetbot pelo código abaixo, e caso queira, modificar a lista de criaturas que não devem ser atacadas. Na lista NeverAtkCreatures = {"Cat","Dog"}, adicione o nome das criaturas que você não quer que sejam atacadas. Na lista NeverAtkCreaturesWithTerm = {"Pet "}, caso o nome tenha o pedaço de texto contido na lista, o monstro não será atacado (Por exemplo, caso "cat" estivesse nessa lista, "Eradicator" também não seria atacado). TargetBot.Creature = {} TargetBot.Creature.configsCache = {} TargetBot.Creature.cached = 0 TargetBot.Creature.resetConfigs = function() TargetBot.targetList:destroyChildren() TargetBot.Creature.resetConfigsCache() end TargetBot.Creature.resetConfigsCache = function() TargetBot.Creature.configsCache = {} TargetBot.Creature.cached = 0 end TargetBot.Creature.addConfig = function(config, focus) if type(config) ~= 'table' or type(config.name) ~= 'string' then return error("Invalid targetbot creature config (missing name)") end TargetBot.Creature.resetConfigsCache() if not config.regex then config.regex = "" for part in string.gmatch(config.name, "[^,]+") do if config.regex:len() > 0 then config.regex = config.regex .. "|" end config.regex = config.regex .. "^" .. part:trim():lower():gsub("%*", ".*"):gsub("%?", ".?") .. "$" end end local widget = UI.createWidget("TargetBotEntry", TargetBot.targetList) widget:setText(config.name) widget.value = config widget.onDoubleClick = function(entry) -- edit on double click schedule(20, function() -- schedule to have correct focus TargetBot.Creature.edit(entry.value, function(newConfig) entry:setText(newConfig.name) entry.value = newConfig TargetBot.Creature.resetConfigsCache() TargetBot.save() end) end) end if focus then widget:focus() TargetBot.targetList:ensureChildVisible(widget) end return widget end TargetBot.Creature.getConfigs = function(creature) if not creature then return {} end local name = creature:getName():trim():lower() -- this function may be slow, so it will be using cache if TargetBot.Creature.configsCache[name] then return TargetBot.Creature.configsCache[name] end local configs = {} function partialMatch(element, tbl) for _, value in ipairs(tbl) do if string.find(element,value) then return true end end return false end NeverAtkCreatures = {"Cat","Dog"} NeverAtkCreaturesWithTerm = {"Pet "} FlagDontAtkPuppiesPartialMatch = partialMatch(creature:getName(),NeverAtkCreaturesWithTerm) FlagDontAtkPuppiesNamed = table.find(NeverAtkCreatures, creature:getName()) FlagDontAtkPuppies = FlagDontAtkPuppiesPartialMatch or FlagDontAtkPuppiesNamed for _, config in ipairs(TargetBot.targetList:getChildren()) do if regexMatch(name, config.value.regex)[1] and not FlagDontAtkPuppies then table.insert(configs, config.value) end end if TargetBot.Creature.cached > 1000 then TargetBot.Creature.resetConfigsCache() -- too big cache size, reset end TargetBot.Creature.configsCache[name] = configs -- add to cache TargetBot.Creature.cached = TargetBot.Creature.cached + 1 return configs end TargetBot.Creature.calculateParams = function(creature, path) local configs = TargetBot.Creature.getConfigs(creature) local priority = 0 local danger = 0 local selectedConfig = nil for _, config in ipairs(configs) do local config_priority = TargetBot.Creature.calculatePriority(creature, config, path) if config_priority > priority then priority = config_priority danger = TargetBot.Creature.calculateDanger(creature, config, path) selectedConfig = config end end return { config = selectedConfig, creature = creature, danger = danger, priority = priority } end TargetBot.Creature.calculateDanger = function(creature, config, path) -- config is based on creature_editor return config.danger end
  5. Show Show replied to Frysto's post in a topic in Sugestões
    Diminuiu a exp pra leveis mais altos? Antes no level 900 eu pegava a mesma exp que nos personagens leveis 700, em torno de 90kk. Agora tô pegando só 20kk no level 900.
  6. Alguém tem esse script funcionando de maneira robusta? E.g.: funciona mesmo que existam vários pets com mesmo nome na tela e sem fail rate (não depende do sistema de look na hora da remoção, já que esse costuma falhar com frequência).
  7. Bom dia. Os loots do boss Foliathar da invasão de hoje às 8:20 em Danae não chegaram no mail. Os outros players que estavam na invasão relataram o mesmo acontecido. Character: Boudica 08:51 You have been awarded by killing Foliathar the loot sent to your inbox: fire axe, mastermind shield, magic plate armor, gold ingot{7}, crystal coin{61}, demonic essence{37}, costume bag. Character: Jhon Snow 08:51 You have been awarded by killing Foliathar the loot sent to your inbox: ultimate health potion{2}, giant sword, {rare} double axe, {legendary} boots of haste, demon shield, {rare} golden legs, great shield, gold ingot{100}, gold ingot{15}, crystal coin{87}, demonic essence{9}, costume bag, giant sapphire. Character: Sung Jinwoo 08:51 You have been awarded by killing Foliathar the loot sent to your inbox: ice rapier, giant sword, {legendary} devil helmet, demonbone, {legendary} demon shield, ring of healing, {rare} bonebreaker, gold ingot{100}, gold ingot{12}, crystal coin{100}, crystal coin{79}, demonic essence{96}.
  8. Show Show replied to Stallion's post in a topic in Eventos*
    Bom dia. Gostaria primeiramente de parabenizar a Staff pelo evento que está sendo bem legal. É possível que seja verificado o drop rate dos tokens? Acredito que as probabilidades dos tokens comuns e raros estejam trocadas. Os tokens raros estão vindo com o dobro da frequência dos tokens comuns (em média). Conversei com outros players e relataram a mesma situação.
  9. Boaaa! Show de bola!
  10. Show Show posted a post in a topic in Bugs
    Pela descrição da magia ela deveria aumentar o shielding em 120% e reduzir todo o dano em 15%, porém ela está apenas dando o efeito negativo de redução de skills de ataque sem dar os efeitos positivos. https://imgur.com/a/FPwkPMV
  11. Show Show posted a post in a topic in Bugs
    Comprei uma Soulcrusher essa semana e notei quando fui testar no trainer que o manaleech só está considerando o dano physical que é quase 0 (a arma tem 6 de atk physical e 46 atk ice). Por exemplo, mesmo que a arma dê um hit de 600, o mana leech é de 0 se o dano for 100% ice. Se o dano for 600 dividido em 50 physical e 550 ice, ele aplica os 3% em cima dos 50 physical e dá um mana leech de 1 de mana (arredonda 1,5 pra baixo).
  12. Os Grynches estão nascendo no esgoto em áreas não acessíveis a players. https://imgur.com/a/U4h15t2
  13. Poderia botar o grynch como a abobora de halloween. Todo mundo que bater ganha a quantidade de tokens proporcionais ao dano causado e mais uns itens como os da abobora. Nesse caso poderia haver 3 invasões por dia, uma de manhã, outra de tarde e outra de noite.
  14. Bom dia, @Faramir. Gostaria de sugerir um ajuste fino pra quantidade de HP e/ou número de Goblins. 8k de life e 1000 Goblins tá um pouco overkill. Demorei, quase 1 hora pra matar a invasão das 4:43, isso porque chegou outro cara. Poderia colocar por exemplo 3k - 4k de life e uns 400 Goblins. Acho que ficaria mais tangível.
  15. Show Show replied to 'MaIkao's post in a topic in Bugs
    Danae aconteceu a mesmo coisa com todo mundo com quem falei. Foi no período da manhã, zerou os tokens de todo mundo. De manhã eu tinha 300 e algo e de tarde depois de 3 invasões só uns 150.
  16. Show Show posted a post in a topic in OTClient
    Fiz esse macro com o objetivo de comparar armas e mensurar ganho de dano através de itens com bônus de skill. Descrição Fornece algumas informações sobre o dano causado pelo personagem: Dano máximo, dano médio, dano médio por turno, porcentagem de acertos (Hit%), além de uma funcionalidade que permite ignorar danos abaixo de um valor, o que é útil quando se quer testar apenas a magia sem interferência do dano causado pela arma. Comentários Recomendo que espere ao menos uns 20 minutos atacando sem pausa pra ter uma noção pelo menos razoável. Quanto mais tempo, mais precisa será a medida. Demonstração [Macro] Análise de Dano - YouTube
  17. Tava conversando com o Cad sobre colocar uma lista de macros no listão. vocês tem alguma sugestão para inclusão? Existe algum tipo que não deveria ser colocado nessa possível lista? Inicialmente tinha pensando nesses: Cura: Aqui seria mais um mecanismo de proteção caso troque de char e esqueça de configurar o heal normal do bot. Já teria a magia configurada pra cada vocação e só teria um botão de "Liga" e "Desliga" caso queira de fato morrer (Last, rift, etc). Pot: Mesma lógica do anterior com a vantagem de que não fica dando exhausted, o que atrapalha na hora de andar. Auto Pet: Sumona o pet caso não esteja na tela. Auto Mount: Sempre montado, útil em hunts que o monstro tira sua mount. Follow: Segue o personagem definido. Auto Ataque: Parecido com o Target bot, porém não precisa ficar configurando os monstros e mais fácil de adicionar exceções. Estoura Pots: Pode ser estendido para outros itens. Calculadora Hits: Hit máximo, Hit médio, Dano médio/turno, Hit%. Sio/UH: Um char ou vários? SSA/Might por HP: Quando a vida chega em 30% equipa o SSA/Might, quando voltar pra 90% equipa o colar normal. (valores configuráveis) Vita Gran Sio: Se HP< HP base + 40%, usa a magia. Utevo Gran Sio: Usa a cada 10 minutos ou se não tiver buff. Tira Pet PK: Caso aparece um PK na tela, tira o pet. Quanto tempo depois deve sumonar o pet novamente? Auto Arrow: Equipa flechas quando acabarem e troca o tipo de flecha ao pressionar tecla específica.
  18. Show Show replied to ;D ~~ Sr Leo ~~ ;D's post in a topic in OTClient
    Quanto fica seu ping? A memória do seu PC tá legal? Tem muito tempo que você instalou o programa?
  19. Show Show posted a post in a topic in Suporte
    Boa noite. No domingo de madrugada como estava meio cansado creio que acabei configurando o bot errado por desatenção. Com isso ele morreu na cave e continuou voltando diversas vezes até tomar ban. Gostaria de saber se existe a possibilidade do ban ser removido antes do tempo completo. Agradeço desde já a atenção.
  20. Show Show posted a post in a topic in OTClient
    Descrição: Equipa arrow com BP fechada e troca o tipo de arrow ao apertar a fecla "V". Vídeo: rmb7vUX.gif (1376×712) (imgur.com)
  21. Não cheguei a testar fora da cidade, então qualquer feedback será útil para possíveis correções. Por algum motivo fiz um vídeo explicando como inserir o código no jogo e demonstrando as funcionalidades.
  22. Testei aqui e tá funcionando normal. Você tá colocando no lugar certo? Você deve colar em "Ingame macro editor" ou salvar o código como .lua na pasta do seu otc ( "\AppData\Roaming\OTClientV8\otclienttrpgbv8\bot\cavebot_1.2"). Vou aproveitar pra fazer uma atualização no macro. Alterações: - Não mais tenta sumonar dentro de casas. - Caso não haja pet na tela quando a função for chamada, irá checar novamente em 5 segundos para garantir que o pet não esteja "muito pra trás" ao se deslocar pelo mapa. - Botão para ativar/desativar função. petName = 'Mercenary' macro(60000,"Summon Pet", function() pet = getCreatureByName('Pet ' .. petName) if pet == nil and not isInPz() then schedule(5000,function() pet = getCreatureByName('Pet ' .. petName) if pet == nil and not isInPz() then say('!pet summon,' .. petName) end end) end end)
  23. Show Show replied to Show Show's post in a topic in OTClient
    Valeu @MeLkSz! kkkkkkkk
  24. Show Show replied to Show Show's post in a topic in OTClient
    Posso sim. Você tem alguma sugestão de quais macros seriam interessantes pra lista? Qualquer coisa a gente pode trocar uma ideia pelo discord ou ingame mesmo.