Ir para conteúdo

Vodkart

Héroi
  • Registro em

Tudo que Vodkart postou

  1. Vou passar para arquivo lua e anexar aqui no tópico assim que eu chegar em casa, valeu!!
  2. Então ou o MODS está instalado de forma errada ou existe algum erro dentro do MODS e ele não está sendo carregado. deixa eu ver seu MODS editado
  3. vc instalou o MODS? a função entra dentro do MODS
  4. No caso tem que mudar a função main e adaptar o código para registrar o evento no monstro, ai você mudaria o onKill para onDeath, compreende? se quiser posso fazer essa alteração p/ via PM ou discord
  5. Você diz fazer pelo onDeath? dá sim.
  6. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    @BangxD Não testei boss_hours = { ["10:00"] = {boss_name = "Demon", pos = {fromPosition = {x=1011, y=910, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 20, extra_time = 10}, ["11:00"] = {boss_name = "Rat", pos = {fromPosition = {x=1011, y=910, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 20, extra_time = 10}, ["12:00"] = {boss_name = "Hydra", pos = {fromPosition = {x=1011, y=910, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 20, extra_time = 10} } function isWalkable(pos) -- by Nord / editado por Omega if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false elseif isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end return true end function getPlayersInBossArea(tb) local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), tb.pos.fromPosition, tb.pos.toPosition) then t[#t+1] = pid end end return t end function doRemoveBoss(tb, force) for x = tb.pos.fromPosition.x, tb.pos.toPosition.x do for y = tb.pos.fromPosition.y, tb.pos.toPosition.y do local m = getTopCreature({x=x, y=y, z= tb.pos.fromPosition.z}).uid if m ~= 0 and isMonster(m) then if not force and #getPlayersInBossArea(tb) > 0 then addEvent(doRemoveBoss, tb.extra_time*60*1000, tb, true) return true end doSendMagicEffect(getCreaturePosition(m), 54) -- Efeito no monstro quando for removido doSendMagicEffect(getCreaturePosition(m), 3) -- Efeito no monstro quando for removido doRemoveCreature(m) break end end end end function onThink(interval, lastExecution) hours = tostring(os.date("%X")):sub(1, 5) tb = boss_hours[hours] if tb then local create = true repeat local pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z} if isWalkable(pos) then doCreateMonster(tb.boss_name, pos) doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) doSendMagicEffect(pos, CONST_ME_MORTAREA) doBroadcastMessage("O Boss "..tb.boss_name.." nasceu!") addEvent(doRemoveBoss, tb.time*60*1000, tb, false) create = false end until not create end return true end
  7. O autoloot para OTX se encontra nesse tópico:
  8. local hour = 1 local pos = {x=160, y=54, z=7} -- player posiiton local walls = { {1354,{x = 2741, y = 2320, z = 7, stackpos = 1}}, {1354,{x = 2741, y = 2321, z = 7, stackpos = 1}}, {1354,{x = 2741, y = 2322, z = 7, stackpos = 1}}, {1354,{x = 2732, y = 2330, z = 7, stackpos = 1}}, {1354,{x = 2733, y = 2330, z = 7, stackpos = 1}}, {1354,{x = 2734, y = 2330, z = 7, stackpos = 1}}, {1354,{x = 2735, y = 2330, z = 7, stackpos = 1}}, {1354,{x = 2736, y = 2330, z = 7, stackpos = 1}} } function RemoveAndCreateWalls() for i = 1, #walls do if getTileItemById(walls[i][2], walls[i][1]).uid == 0 then doCreateItem(walls[i][1], 1, walls[i][2]) else doRemoveItem(getThingfromPos(walls[i][2]).uid,1) doSendMagicEffect(walls[i][2], CONST_ME_POFF) end end end function onUse(cid, item, fromPosition, itemEx, toPosition) local m = getTopCreature(pos).uid if getTileItemById(walls[1][2], walls[1][1]).uid == 0 then doPlayerSendCancel(cid, 'As paredes ainda estão abertas.') return true elseif m == 0 or m ~= 0 and not isPlayer(m) then doPlayerSendCancel(cid, 'O jogador não está na posição.') return true end doPlayerSendTextMessage(cid, 21, 'a parede foi removida e voltara dentro de '..hour..' hora(s)!') RemoveAndCreateWalls() addEvent(RemoveAndCreateWalls, hour*3600000) return true end
  9. Funciona sim, porém eu fiz uma versão para TFS 0x também, basta acessar esse tópico: https://tibiaking.com/forums/topic/100995-new-auto-loot-unlimited-edition/
  10. @mccrater vc criou uma talk? deixa eu ver...
  11. @Vorkhon tava `exp` = "..config.exp.." ao invés de `experience` = "..config.exp.."
  12. [ + ] Descrição: Autoloot refeito para VERSÃO OTX e adicionado algumas outras funções que estarei explicando ao decorrer do tópico. [ + ] Se você quer o Autoloot ara Versão TFS clica neste Link: AUTOLOOT TFS [ + ] Imagem do comando: [ + ] Features: [ - ] Você pode ativar ou desativar o autoloot a hora que achar necessário. [ - ] Também existe um comando para ativar ou desativar mensagens do loot que o autoloot coleta! [ - ] Você pode escolher a cor do texto em que irá aparecer a coleta do loot! [ - ] O autoloot informará para você se estiver com pouco slots na sua backpack, e o jogador poderá escolher se quer habilitar ou não está função no autloot. [ - ] Versão ilimitada de itens(não ficam armazenadas em storages. [ - ] O jogador poderá optar por depositar direto no banco os golds que forem dropados. [ + ] Instalação: Primeiramente CRIE uma PASTA VAZIA chamanda "autoloot" em DATA/LOGS, ficando assim: Depois instale o MODS normalmente na pasta MODS do seu servidor. new_perfect_autoloot_otx.xml Link: https://pastebin.com/raw/CW6jgerg [ + ] Configuração: Dentro do mods tem essa tabela info = { directory = "data/logs/autoloot", -- não mexer Warn_Bp_Slots = 5, -- quando tiver 5 ou menos slots na BP vai avisar o jogador Talkaction_delay = 5, -- em segundos // delay para remover e adicionar item BlockMonsters = {}, -- Lista de monstros que o autoloot nao vai funcionar BlockItemsList = {2123,2515}, -- Lista de itens que o autoloot nao coleta Money_ids = {2148, 2152, 2160}, -- id das moedas do ot Max_Slots = {free = 3, premium = 5}, -- quantidade de itens que podem ser adicionados no autoloot por free e premium Storages = {988801, 988802, 988803, 988804, 988805, 988806, 988807} -- não mexer } Basta ler acima para esclarecer as dúvidas!! Estarei anexando o autoloot 2.0 versão atualizada para quem tiver preguiça de copiar e colar!! new_perfect_autoloot_otx.xml
  13. [ + ] Descrição: Autoloot refeito para VERSÃO TFS e adicionado algumas outras funções que estarei explicando ao decorrer do tópico. [ + ] Se você quer o Autoloot para VERSÃO OTX clica neste Link: AUTOLOOT OTX [ + ] Imagem do comando: [ + ] Features: [ - ] Você pode ativar ou desativar o autoloot a hora que achar necessário. [ - ] Também existe um comando para ativar ou desativar mensagens do loot que o autoloot coleta! [ - ] Você pode escolher a cor do texto em que irá aparecer a coleta do loot! [ - ] O autoloot informará para você se estiver com pouco slots na sua backpack, e o jogador poderá escolher se quer habilitar ou não está função no autoloot. [ - ] Versão ilimitada de itens(não ficam armazenadas em storages). [ - ] O jogador poderá optar por depositar direto no banco os golds que forem dropados. [ + ] Instalação: Primeiramente CRIE uma PASTA VAZIA chamanda "autoloot" em DATA/LOGS, ficando assim: Depois instale o MODS normalmente na pasta MODS do seu servidor. new_perfect_autoloot_tfs.xml Link: https://pastebin.com/raw/0xJR4nwr [ + ] Configuração: Dentro do mods tem essa tabela info = { distro = 1, -- 1 = TFS // 2 = talk modificada directory = "data/logs/autoloot", -- não mexer Warn_Bp_Slots = 5, -- quando tiver 5 ou menos slots na BP vai avisar o jogador Talkaction_delay = 5, -- em segundos // delay para remover e adicionar item BlockMonsters = {}, -- Lista de monstros que o autoloot nao vai funcionar BlockItemsList = {2123,2515}, -- Lista de itens que o autoloot nao coleta Money_ids = {2148, 2152, 2160}, -- id das moedas do ot Max_Slots = {free = 3, premium = 5}, -- quantidade de itens que podem ser adicionados no autoloot por free e premium Storages = {988801, 988802, 988803, 988804, 988805, 988806, 988807} -- não mexer } Sobre o distro = 1 Isso significa que ele usa versão padrão (1), pois existem 2 versões, caso aconteça esse error no seu console ao usar a talkaction do autoloot: [8/10/2020 19:19:58] [Error - TalkAction Interface] [8/10/2020 19:19:58] local words = "!autoloot" (...) [8/10/2020 19:19:59] return true [8/10/2020 19:19:59] Description: [8/10/2020 19:19:59] (LuaInterface::luaGetItemIdByName) Item not found Você deverá colocar: distro = 2 Pq? acontece que em alguns servidores não reconhecem o parâmetro "false" da função "getItemIdByName" OBS: Estarei anexando o autoloot já atualizado na versão 2.0 para quem tiver preguiça de copiar e colar!! new_perfect_autoloot_tfs.xml
  14. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    @Mapeador nem todos os ot tem broadcast em laranja, tenta o normal broadcastMessage("O "..config.name.." apareceu, voce tem "..config.time.." para mata-lo.")
  15. @Vorkhon erro meu!!! usa assim essa linha: db.executeQuery("UPDATE `players` SET `vocation` = "..config.voc..", `level` = "..config.level..", `experience` = "..config.exp..", `health` = "..config.life..", `healthmax` = "..config.life..", `mana` = "..config.mana..", `manamax` = "..config.mana.." WHERE `id` = "..player_id)
  16. @Vorkhon tenta usar assim para testar local config = { life = 185, -- Life ao rebornar mana = 40, -- Mana ao rebornar level = 8, -- Level ao rebornar exp = 4200, -- exp que fica voc = 15, -- Voc ao rebornar storage = 30023 } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser, player_id = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid, getPlayerGUID(cid) if (msgcontains(msg, 'Inquisitor')) or (msgcontains(msg, "yes")) then selfSay('Are you sure you want to be {reborn} as a Inquisitor?!', cid) return true end if msgcontains(msg, 'reborn') then doCreatureSetStorage(cid, config.storage, -1) setPlayerStorageValue(cid, 10037, 1) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid,25,"Inquisitor outfit unlocked.") broadcastMessage("The player "..getCreatureName(cid).." became a Inquisitor") doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `vocation` = "..config.voc..", `level` = "..config.level..", `experience` = "..config.exp..", `health` = "..config.life..", `healthmax` = "..config.life..", `mana` = "..config.mana..", `manamax` = "..config.mana.." WHERE `id` = "..player_id) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  17. @Jeff Delay lógico, se você colocar para summonar por exemplo 30 Bunny em uma area de 20 SQM, vai ficar um loop infinito. Outra coisa, eu testei no meu servidor o seu código + código do Bunny e não apresentou erro. Qual seu distro e server? tenta criar uma talk e ver se aparece esse erro local pos = {x = 1919, y = 2058, z = 7} doCreateMonster("Bunny", pos)
  18. faz direto no banco de dados então, mas tem que kikar o player.
  19. @Jeff Delay então tenta usar a linha assim: doCreateMonster(x:match("%s(.+)"), pos, false) ou doCreateMonster(x:match("%s(.+)"), pos, false, false)
  20. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    @Mapeador troca doCreateMonster(config.name, config.pos) por doSummonCreature(config.name, config.pos) e confere a position
  21. @Jeff Delay tentou trocar a função? trocar essa linha: doCreateMonster(x:match("%s(.+)"), pos) por doSummonCreature(x:match("%s(.+)"), pos) @Jeff Delay posta seu código aqui pra mim dar uma olhada...
  22. Vodkart postou uma resposta no tópico em Suporte Tibia OTServer
    Beleza, agora estou em aula EAD, assim que tiver um tempo eu posto aqui no tópico, até mais.
  23. Obrigado pela contribuição, espero mais trabalhos seus por aqui!! Parabéns.

Informação Importante

Confirmação de Termo