Ir para conteúdo
  • advertisement_alt
  • advertisement_alt
  • advertisement_alt

najatheus

Membro
  • Registro em

  • Última visita

Tudo que najatheus postou

  1. najatheus postou uma resposta no tópico em Ferramentas OpenTibia
    Acabei desenvolvendo um pequeno programa para os jogadores de poketibia, o programa vai acabar soltando todos os moves do pokemon, segue o video abaixo : https://streamable.com/6dof5b Link do programa : https://www.mediafire.com/file/8e7a1kws1lvqb7f/BOT_MOVES.exe/file scan do programa : https://www.virustotal.com/gui/file/0444f10dc9aee1cfbc00ff245dc4142dde99612d83210bc548e159332cbba2a2 Link do código fonte : https://github.com/najatheus1/BOTMOVES-POKETIBIA
  2. Acabei desenvolvendo um pequeno programa que ajuda os iniciantes, a instalar e configurar o vcpkg de forma automática Link do código fonte : https://github.com/najatheus1/___ Link do programa já compilado : https://www.mediafire.com/file/5unka6urejfgm71/_.exe/file Link do scan do programa : https://www.virustotal.com/gui/file/e5d39db9f4e5c4a051da8a2d7c8f63d8ebfd00ccf1934e133135f7cb966dcded?nocache=1 Link do video demonstração : https://streamable.com/yxskhu
  3. Você precisa estender a tela na source do servidor e do otc
  4. Entre em contato comigo no discord : - Sr. Naja#2702
  5. local configuration_table = { storage_pos_item = 0; -- não mexa level_requeriment = { -- requimento para poder girar alavanca min = 1; max = 100; }; count = 0; -- não mexa player_to_use_item_id = 3000; -- id do item que o player precisa ter para girar a roleta count_gire_item = 0; -- não mexa bag_id = 1991; -- id da bag que o player vai receber junto com o item count_remove = 0; -- não mexa floor_id_or_table = 10449; -- id da mesa ou piso que vão ficar os item por cima items = {3000, 2012, 13042, 13045, 13047, 13051, 13044, 13041}; -- items da roleta que vai ser usado na roleta effect_item = 8; -- efeito de quando estiver gerando o item effect_addItem = 1; -- efeito de qnd o player receber o item effect_addItem_remove = 32; -- efeito de qnd o item for pro slot do player effect_removeItem = 36; -- efeito de qnd for remover os item da mesa ou piso time_create_item = 400; -- tempo para criar um a um item na mesa ou piso time_calcule_pos_item = 500; -- tempo para mover o item para a proxima posição time_count_calcule_pos_item = 3200; -- tempo para começar a mover o item ( obs o calculo min tem que ser a quantidade de mesa que vai ter x o tempo time_create_item) position = { -- configuração dos movimentos e posição create_item = { -- posição para criar os items [1] = {x = 981, y = 945, z = 7}; [2] = {x = 981, y = 946, z = 7}; [3] = {x = 982, y = 945, z = 7}; [4] = {x = 982, y = 946, z = 7}; [5] = {x = 983, y = 945, z = 7}; [6] = {x = 983, y = 946, z = 7}; [7] = {x = 984, y = 945, z = 7}; [8] = {x = 984, y = 946, z = 7}; }; roleta = { -- giros da roleta [1] = { [1] = {x = 0, y = 1, z = 0}; [2] = {x = 1, y = -1, z = 0}; [3] = {x = 0, y = 1, z = 0}; [4] = {x = 1, y = -1, z = 0}; [5] = {x = 0, y = 1, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [2] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 1, y = -1, z = 0}; [3] = {x = 0, y = 1, z = 0}; [4] = {x = 1, y = -1, z = 0}; [5] = {x = 0, y = 1, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [3] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 1, z = 0}; [4] = {x = 1, y = -1, z = 0}; [5] = {x = 0, y = 1, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [4] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 0, z = 0}; [4] = {x = 1, y = -1, z = 0}; [5] = {x = 0, y = 1, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [5] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 0, z = 0}; [4] = {x = 0, y = 0, z = 0}; [5] = {x = 0, y = 1, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [6] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 0, z = 0}; [4] = {x = 0, y = 0, z = 0}; [5] = {x = 0, y = 0, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [7] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 0, z = 0}; [4] = {x = 0, y = 0, z = 0}; [5] = {x = 0, y = 0, z = 0}; [6] = {x = 0, y = 0, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [8] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 0, z = 0}; [4] = {x = 0, y = 0, z = 0}; [5] = {x = 0, y = 0, z = 0}; [6] = {x = 0, y = 0, z = 0}; [7] = {x = 0, y = 0, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; } } } local function createItemPos() if(configuration_table.count >= #configuration_table.position.create_item)then configuration_table.count = 0 return end configuration_table.count = configuration_table.count + 1 local item = Game.createItem(configuration_table.items[math.random(1, #configuration_table.items)], 1, configuration_table.position.create_item[configuration_table.count]) local pos_item = item:getPosition() pos_item:sendMagicEffect(configuration_table.effect_item) item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Item do evento da roleta") addEvent(createItemPos, configuration_table.time_create_item) end local function removeItemPos() if(configuration_table.count_remove >= #configuration_table.position.create_item)then configuration_table.count_remove = 0 return end configuration_table.count_remove = configuration_table.count_remove + 1 local tile = Tile(configuration_table.position.create_item[configuration_table.count_remove]) if not tile then return end local item = tile:getTopVisibleThing() if not item then return end if(item:getId() == configuration_table.floor_id_or_table)then return removeItemPos() end item:getPosition():sendMagicEffect(configuration_table.effect_removeItem) item:remove() removeItemPos() end local function addItemPlayer(player_uid) local player = Player(player_uid) if not player then return end local tile = Tile(configuration_table.storage_pos_item) if not tile then return end local item = tile:getTopVisibleThing() if not item then return end local player_pos = player:getPosition() local item_pos = item:getPosition() local bag = player:addItem(configuration_table.bag_id, 1, true, 1, 3) bag:addItem(item:getId(), item:getCount(), true, 1, 3) player_pos:sendMagicEffect(configuration_table.effect_addItem) item_pos:sendMagicEffect(configuration_table.effect_addItem_remove) item:remove(item:getCount()) end local function calculePosItem(value, player_uid) if(configuration_table.count_gire_item >= #configuration_table.position.create_item)then removeItemPos() addItemPlayer(player_uid) configuration_table.count_gire_item = 0 return nil end configuration_table.count_gire_item = configuration_table.count_gire_item + 1 local tile = Tile(configuration_table.position.create_item[configuration_table.count_gire_item]) if not tile then return nil end local item = tile:getTopVisibleThing() if not item then return nil end if(item:getId() == configuration_table.floor_id_or_table)then return nil end local pos = item:getPosition() local item_pos_x = pos.x local item_pos_y = pos.y local item_pos_z = pos.z local pos_ = configuration_table.position.roleta[value] local position = Position(item_pos_x + pos_[configuration_table.count_gire_item].x, item_pos_y + pos_[configuration_table.count_gire_item].y, item_pos_z) if not position then return nil end configuration_table.storage_pos_item = position item:moveTo(position) addEvent(calculePosItem, configuration_table.time_calcule_pos_item, value, player_uid) end function onUse(player, item, fromPosition, target, toPosition, isHotkey) if(player:getLevel() > configuration_table.level_requeriment.max)then return(not(player:sendTextMessage(MESSAGE_INFO_DESCR, player:getName() .. " your level(" .. player:getLevel() .. ") needs to be bigger(" .. configuration_table.level_requeriment.max .. ")"))) end if(player:getLevel() < configuration_table.level_requeriment.min)then return(not(player:sendTextMessage(MESSAGE_INFO_DESCR, player:getName() .. " your level(" .. player:getLevel() .. ") needs to be smaller(" .. configuration_table.level_requeriment.min .. ")"))) end local item_ = player:getItemById(configuration_table.player_to_use_item_id, true, -1) if not item_ then return not player:sendTextMessage(MESSAGE_INFO_DESCR, player:getName() .. " você não tem o item") end if(configuration_table.count_gire_item >= 1) or (configuration_table.count >= 1) or (configuration_table.count_remove >= 1)then return(not(player:sendTextMessage(MESSAGE_INFO_DESCR, player:getName() .. " wait the roulette is in action, wait for it to finish"))) end local random = math.random(1, #configuration_table.position.roleta) item_:remove(1) configuration_table.storage_pos_item = 0 createItemPos() addEvent(calculePosItem, configuration_table.time_count_calcule_pos_item, random, player.uid) Game.sendAnimatedText("Spin number will be: " .. random, player:getPosition(), math.random(1, 255)) player:sendTextMessage(MESSAGE_INFO_DESCR, player:getName() .. " item of the day is on the rocks there") return true end Espero ter ajudado
  6. Sistema funciona da seguinte maneira, ao clicar na alavanca, vai gerar um numero de 1 a quantidade de mesa ou piso que for configurado na tabela, esse numero sera a posição do item até o ponto que o player vai receber o item, assim si o player tirar o menor numero possivel ele podera ter a sorte de receber os stacks do items, vou estar deixando um video aqui em baixo mostrando o sistema agora vamo instalar o codigo : Em data/actions/script/, crie um arquivo chamado roleta.lua, dentro dele coloque : local configuration_table = { storage_pos_item = 0; -- não mexa level_requeriment = { -- requimento para poder girar alavanca min = 1; max = 100; }; count = 0; -- não mexa count_gire_item = 0; bag_id = 1991; count_remove = 0; -- não mexa floor_id_or_table = 10449; -- id da mesa ou piso que vão ficar os item por cima items = {3000, 2012, 13042, 13045, 13047, 13051, 13044, 13041}; -- items da roleta que vai ser usado na roleta effect_item = 8; -- efeito de quando estiver gerando o item effect_addItem = 1; -- efeito de qnd o player receber o item effect_addItem_remove = 32; -- efeito de qnd o item for pro slot do player effect_removeItem = 36; -- efeito de qnd for remover os item da mesa ou piso time_create_item = 200; -- tempo para criar um a um item na mesa ou piso time_calcule_pos_item = 300; -- tempo para mover o item para a proxima posição time_count_calcule_pos_item = 1600; -- tempo para começar a mover o item ( obs o calculo min tem que ser a quantidade de mesa que vai ter x o tempo time_create_item) position = { -- configuração dos movimentos e posição create_item = { -- posição para criar os items [1] = {x = 981, y = 945, z = 7}; [2] = {x = 981, y = 946, z = 7}; [3] = {x = 982, y = 945, z = 7}; [4] = {x = 982, y = 946, z = 7}; [5] = {x = 983, y = 945, z = 7}; [6] = {x = 983, y = 946, z = 7}; [7] = {x = 984, y = 945, z = 7}; [8] = {x = 984, y = 946, z = 7}; }; roleta = { -- giros da roleta [1] = { [1] = {x = 0, y = 1, z = 0}; [2] = {x = 1, y = -1, z = 0}; [3] = {x = 0, y = 1, z = 0}; [4] = {x = 1, y = -1, z = 0}; [5] = {x = 0, y = 1, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [2] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 1, y = -1, z = 0}; [3] = {x = 0, y = 1, z = 0}; [4] = {x = 1, y = -1, z = 0}; [5] = {x = 0, y = 1, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [3] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 1, z = 0}; [4] = {x = 1, y = -1, z = 0}; [5] = {x = 0, y = 1, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [4] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 0, z = 0}; [4] = {x = 1, y = -1, z = 0}; [5] = {x = 0, y = 1, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [5] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 0, z = 0}; [4] = {x = 0, y = 0, z = 0}; [5] = {x = 0, y = 1, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [6] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 0, z = 0}; [4] = {x = 0, y = 0, z = 0}; [5] = {x = 0, y = 0, z = 0}; [6] = {x = 1, y = -1, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [7] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 0, z = 0}; [4] = {x = 0, y = 0, z = 0}; [5] = {x = 0, y = 0, z = 0}; [6] = {x = 0, y = 0, z = 0}; [7] = {x = 0, y = 1, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; [8] = { [1] = {x = 0, y = 0, z = 0}; [2] = {x = 0, y = 0, z = 0}; [3] = {x = 0, y = 0, z = 0}; [4] = {x = 0, y = 0, z = 0}; [5] = {x = 0, y = 0, z = 0}; [6] = {x = 0, y = 0, z = 0}; [7] = {x = 0, y = 0, z = 0}; [8] = {x = 3, y = 0, z = 0}; }; } } } local function createItemPos() if(configuration_table.count >= #configuration_table.position.create_item)then configuration_table.count = 0 return end configuration_table.count = configuration_table.count + 1 local item = Game.createItem(configuration_table.items[math.random(1, #configuration_table.items)], 1, configuration_table.position.create_item[configuration_table.count]) local pos_item = item:getPosition() pos_item:sendMagicEffect(configuration_table.effect_item) item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Item do evento da roleta") addEvent(createItemPos, configuration_table.time_create_item) end local function removeItemPos() if(configuration_table.count_remove >= #configuration_table.position.create_item)then configuration_table.count_remove = 0 return nil end configuration_table.count_remove = configuration_table.count_remove + 1 local tile = Tile(configuration_table.position.create_item[configuration_table.count_remove]) if not tile then return nil end local item = tile:getTopVisibleThing() if not item then return nil end if(item:getId() == configuration_table.floor_id_or_table)then return removeItemPos() end item:getPosition():sendMagicEffect(configuration_table.effect_removeItem) item:remove() removeItemPos() end local function addItemPlayer(player_uid) local player = Player(player_uid) if not player then return nil end local tile = Tile(configuration_table.storage_pos_item) if not tile then return nil end local item = tile:getTopVisibleThing() if not item then return nil end local player_pos = player:getPosition() local item_pos = item:getPosition() local bag = player:addItem(configuration_table.bag_id, 1, true, 1, 3) bag:addItem(item:getId(), item:getCount(), true, 1, 3) player_pos:sendMagicEffect(configuration_table.effect_addItem) item_pos:sendMagicEffect(configuration_table.effect_addItem_remove) item:remove(item:getCount()) end local function calculePosItem(value, player_uid) if(configuration_table.count_gire_item >= #configuration_table.position.create_item)then removeItemPos() addItemPlayer(player_uid) configuration_table.count_gire_item = 0 return nil end configuration_table.count_gire_item = configuration_table.count_gire_item + 1 local tile = Tile(configuration_table.position.create_item[configuration_table.count_gire_item]) if not tile then return nil end local item = tile:getTopVisibleThing() if not item then return nil end if(item:getId() == configuration_table.floor_id_or_table)then return nil end local pos = item:getPosition() local item_pos_x = pos.x local item_pos_y = pos.y local item_pos_z = pos.z local pos_ = configuration_table.position.roleta[value] local position = Position(item_pos_x + pos_[configuration_table.count_gire_item].x, item_pos_y + pos_[configuration_table.count_gire_item].y, item_pos_z) if not position then return nil end configuration_table.storage_pos_item = position item:moveTo(position) addEvent(calculePosItem, configuration_table.time_calcule_pos_item, value, player_uid) end function onUse(player, item, fromPosition, target, toPosition, isHotkey) if(player:getLevel() > configuration_table.level_requeriment.max)then return(not(player:sendTextMessage(MESSAGE_INFO_DESCR, player:getName() .. " your level(" .. player:getLevel() .. ") needs to be bigger(" .. configuration_table.level_requeriment.max .. ")"))) end if(player:getLevel() < configuration_table.level_requeriment.min)then return(not(player:sendTextMessage(MESSAGE_INFO_DESCR, player:getName() .. " your level(" .. player:getLevel() .. ") needs to be smaller(" .. configuration_table.level_requeriment.min .. ")"))) end if(configuration_table.count_gire_item >= 1) or (configuration_table.count >= 1) or (configuration_table.count_remove >= 1)then return(not(player:sendTextMessage(MESSAGE_INFO_DESCR, player:getName() .. " wait the roulette is in action, wait for it to finish"))) end local random = math.random(1, #configuration_table.position.roleta) configuration_table.storage_pos_item = 0 createItemPos() addEvent(calculePosItem, configuration_table.time_count_calcule_pos_item, random, player.uid) Game.sendAnimatedText("Spin number will be: " .. random, player:getPosition(), math.random(1, 255)) player:sendTextMessage(MESSAGE_INFO_DESCR, player:getName() .. " item of the day is on the rocks there") return true end Agora em data/actions/actions.xml, coloque : <action itemid="o id da alavanca do seu servidor" script="roleta.lua" /> 20211004_171313.mp4
  7. Sistema funciona da seguinte forma, ao digitar : !aura on, a aura do player vai ligar, enquanto ela estiver ligada o player vai ficar regenerando a vida dele, ao digitar : !aura off, ela vai desligar e o player vai parar de regenerar a vida dele, vou estar deixando um video aqui em baixo Agora vamos colocar o codigo Em data/talkactions/script/, crie um arquivo chamado aura.lua, e coloque isso dentro dele : local config_aurea = { effect = 4; -- efeito que vai ficar girando no player effect_health = 162; -- efeito qnd curar o player level_use = { -- level que vai ser usado (min/max) min = 1, max = 600, } ; health = 10; -- tanto que vai curar por time configurado pos_aurea = { -- não mexa [1] = {x = 0, y = -1}; [2] = {x = 1, y = -1}; [3] = {x = 1, y = 0}; [4] = {x = 1, y = 1}; [5] = {x = 0, y = 1}; [6] = {x = -1, y = 1}; [7] = {x = -1, y = 0}; [8] = {x = -1, y = -1}; }; storage_pos = 1547637649; -- não mexa e nem repita esse valor em outro script!! storage = 165477963; -- não mexa e nem repita esse valor em outro script!! tempo_aurea = 100; -- tempo da aurea para passar em cada posição } local function calculePosAurea(player_uid) local player = Player(player_uid) if(not(player))then return(nil) end if(player:getStorageValue(config_aurea.storage) <= 0)then return(nil) end if(player:getStorageValue(config_aurea.storage_pos) >= 8)then player:setStorageValue(config_aurea.storage_pos, 0) end player:setStorageValue(config_aurea.storage_pos, player:getStorageValue(config_aurea.storage_pos) + 1) return(player:getStorageValue(config_aurea.storage_pos)) end local function posAurea(player_uid) local player = Player(player_uid) if(not(player))then return(nil) end if(player:getStorageValue(config_aurea.storage) <= 0)then return(nil) end local pos_x = player:getPosition().x local pos_y = player:getPosition().y local pos_z = player:getPosition().z local aa = calculePosAurea(player_uid) local pos = Position(pos_x + config_aurea.pos_aurea[aa].x, pos_y + config_aurea.pos_aurea[aa].y, pos_z) if(not(pos))then return(nil) end return(pos) end local function aurea(player_uid) local player = Player(player_uid) if(not(player))then return(nil) end if(player:getStorageValue(config_aurea.storage) <= 0)then return(nil) end player:addHealth(config_aurea.health) player:getPosition():sendMagicEffect(config_aurea.effect_health) local position = posAurea(player_uid) position:sendMagicEffect(config_aurea.effect) addEvent(aurea, config_aurea.tempo_aurea, player_uid) end function onSay(player, words, param) if(words == "!aura on")then if(player:getLevel() > config_aurea.level_use.max)then return(not(player:sendTextMessage(MESSAGE_STATUS_SMALL, player:getName() .. " seu level(" .. player:getLevel() .. ") precisa ser maior(" .. config_aurea.level_use.max))) end if(player:getLevel() < config_aurea.level_use.min)then return(not(player:sendTextMessage(MESSAGE_STATUS_SMALL, player:getName() .. " seu level(" .. player:getLevel() .. ") precisa ser menor(" .. config_aurea.level_use.max))) end if(player:getStorageValue(config_aurea.storage) >= 1)then return(not(player:sendTextMessage(MESSAGE_STATUS_SMALL, player:getName() .. " Você ja esta com a aurea ligada"))) end player:setStorageValue(config_aurea.storage, 1) player:setStorageValue(config_aurea.storage_pos, 0) aurea(player.uid) elseif(words == "!aura off")then player:setStorageValue(config_aurea.storage, 0) end return(false) end Agora em data/talkactions/talkactions.xml, abra ele e coloque : <talkaction words="!aura on;!aura off" script="aura.lua"/> Agora em data/creaturescript/script/login.lua, abra ele e embaixo de : player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr) Coloque : player:setStorageValue(165477963, 0) player:setStorageValue(1547637649, 0) Creditos : Sr. Naja 20210927_210547.mp4
  8. najatheus respondeu ao post em um tópico de isac001 em Suporte OTServer Derivados
    local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) combat:setParameter(COMBAT_PARAM_EFFECT, 86) combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 27) combat:setFormula(COMBAT_FORMULA_LEVELMAGIC, -1.0, 0, -1.5, 0) local function onSpell(uid_creature, var) local creature = Creature(uid_creature) if(not(creature))then return(false) end combat:execute(creature, var) end local function callOnSpell(uid_creature, var) for k = 1, 3 do local creature = Creature(uid_creature) if(not(creature))then return(false) end addEvent(onSpell, 1 + ((k-1) * 200), uid_creature, var) end end function onCastSpell(creature, variant) callOnSpell(creature.uid, variant) end
  9. najatheus respondeu ao post em um tópico de poncex em Suporte Tibia OTServer
    Agora você pode ajustar, a posição no module/client_topmenu/topmenu.otui
  10. Troque a linha : local vocation = player:getVocation() Para : local vocation = player:getVocation():getId()
  11. local config = { --[vocation id] = { level, nova voc, looktype, efeito} -- Goku [1] = { 25, 2, 3, 32}, [2] = { 50, 3, 4, 32}, [3] = { 75, 4, 5, 32}, [4] = { 100, 5, 7, 32}, [5] = { 125, 6, 6, 32}, [6] = { 150, 7, 8, 32}, [7] = { 200, 8, 9, 32}, [8] = { 250, 9, 17, 32}, [9] = { 300, 10, 630, 32} } function onSay(player, words, param) local vocation = player:getVocation():getId() local voc = config[vocation] if(not(voc))then return(player:sendTextMessage(MESSAGE_STATUS_SMALL, player:getName() .. " Nao é possível se transformar.") and false) end if(player:getLevel() >= voc[1])then player:setVocation(voc[2]) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, player:getName() .. " Voce se transformou!") player:say("Transformar") player:setOutfitLookType(voc[3]) player:getPosition():sendMagicEffect(voc[4]) return(false) else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, player:getName() .. " Nao é possível se transformar.") return(false) end end Coloque em lib/core/creature.lua : function Creature:setOutfitLookType(value) local outfit = self:getOutfit() outfit.lookType = value self:setOutfit(outfit) return(true) end
  12. najatheus respondeu ao post em um tópico de poncex em Suporte Tibia OTServer
    Vai em module/client_background/background.otui dentro dele troque : anchors.top: topMenu.bottom troque para : anchors.top: parent.top agora vai em data\styles\20-topmenu.otui dentro dele : TopMenuPanel < Panel height: 36 image-source: /images/ui/panel_top image-repeated: true focusable: false troque para : TopMenuPanel < Panel height: 36 image-repeated: true focusable: false agora em module/client_topmenu/topmenu.otui dentro dele agora, troque isso : TopMenuButtonsPanel id: leftButtonsPanel anchors.top: parent.top anchors.bottom: parent.bottom anchors.left: parent.left TopMenuButtonsPanel id: leftGameButtonsPanel anchors.top: parent.top anchors.bottom: parent.bottom anchors.left: prev.right visible: false TopMenuFrameCounterLabel id: fpsLabel text-auto-resize: true anchors.top: parent.top anchors.left: leftGameButtonsPanel.right TopMenuPingLabel color: white id: pingLabel text-auto-resize: true anchors.top: fpsLabel.bottom anchors.left: fpsLabel.left TopMenuButtonsPanel id: rightButtonsPanel anchors.top: parent.top anchors.bottom: parent.bottom anchors.right: parent.right padding-left: 0 TopMenuButtonsPanel id: rightGameButtonsPanel anchors.top: parent.top anchors.bottom: parent.bottom anchors.right: prev.left visible: false para isso : TopMenuButtonsPanel id: leftButtonsPanel anchors.top: parent.top anchors.bottom: parent.bottom anchors.horizontalCenter: parent.horizontalCenter padding-right: 10 TopMenuButtonsPanel id: leftGameButtonsPanel anchors.top: parent.top anchors.bottom: parent.bottom anchors.left: prev.right visible: false TopMenuFrameCounterLabel id: fpsLabel text-auto-resize: true anchors.top: parent.top anchors.right: parent.right TopMenuPingLabel color: white id: pingLabel text-auto-resize: true anchors.top: fpsLabel.bottom anchors.left: fpsLabel.left TopMenuButtonsPanel id: rightButtonsPanel anchors.top: parent.top anchors.horizontalCenter: parent.horizontalCenter TopMenuButtonsPanel id: rightGameButtonsPanel anchors.top: parent.top anchors.bottom: parent.bottom anchors.horizontalCenter: parent.horizontalCenter visible: false
  13. System de addon, funciona da seguinte maneira: - O item deve ser usado diretamente na pokebola, caso o player deseje colocar um novo addon no pokemon, evoluir ou transformar em shiny, devera ser utilizado o comando: !removeAddon Instruções: Insira na pasta datapack/actions/script/ Addon.lua addonbox.lua Insira na pasta datapack/lib/ Addon System.lua Agora, em datapack/actions/actions.xml : <action itemid="13103;13114;13107" event="script" value="Addon.lua"/> <!-- Aqui estarão os id dos addons que vão ser utilizados na pokebola --> <action itemid="2183" event="script" value="addonbox.lua"/> <!-- Id da addon box --> Agora, em datapack/actions/scripts/goback.lua, abaixo de : local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then return true end Insira : local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then return true end local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon) Agora, em datapack/actions/scripts/order.lua, abaixo de : doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1] Insira : local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon) Agora, em datapack/actions/scripts/evolution.lua, abaixo de : if not isMonster(item2.uid) or not isSummon(item2.uid) then return true end if #getCreatureSummons(cid) > 1 then return true --alterado v1.9 end Insira : local poke_addon = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "pokeaddon") if(poke_addon)then return doPlayerSendCancel(cid, "Please remove addon before evolution, Command: !removeAddon") end Agora, em datapack/actions/scripts/sh stone.lua, abaixo de : if getPlayerSlotItem(cid, 8).uid == itemEx.uid then if #getCreatureSummons(cid) <= 0 then Insira : local poke_addon = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "pokeaddon") if(poke_addon)then return doPlayerSendCancel(cid, "Please remove addon before evolution, Command: !removeAddon") end Agora, em datapack/creaturescripts/scripts/look.lua, abaixo de : if getItemAttribute(thing.uid, "gender") == SEX_MALE then table.insert(str, "It is male.") elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then table.insert(str, "It is female.") else table.insert(str, "It is genderless.") end Insira : if(getItemAttribute(thing.uid, "pokeaddon"))then local table_addon = ADDON_CONFIG[getItemAttribute(thing.uid, "pokeaddon")] if not table_addon then return true end table.insert(str, "\n" .. "Addon : " .. table_addon.name_addon .. ".") end Agora, em datapack/lib/order.lua, abaixo de : doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17000, 1) Insira : local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfitAbility(cid, addon) Continuando em datapack/lib/order.lua, abaixo de : elseif skill == "ride" then local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])] doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 150 + PlayerSpeed + getSpeed(sid) * 5 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17001, 1) Insira : addonTransformOutfitAbility(cid) Agora, em datapack/movements/scripts/surf.lua, abaixo de: doSetCreatureOutfit(cid, {lookType = surfs[getPokemonName(getCreatureSummons(cid)[1])].lookType + 351}, -1) doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", lets surf!", 1) doChangeSpeed(cid, -(getCreatureSpeed(cid))) Insira : addonTransformOutfitAbility(cid) Continuando, em datapack/movements/script/surf.lua, abaixo de: doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1] Insira : local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon) Agora, em datapack/talkactions/scripts/ crie um arquivo .lua, coloque dentro : function onSay(cid, words, param, channel) if(#getCreatureSummons(cid) >=1)then return false end local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) if not slot then return false end local addon_ball = getItemAttribute(slot.uid, "pokeaddon") if(addon_ball)then removeAddon(cid,slot,addon_ball) return true end end Agora, em datapack/talkactions/talkactions.xml registre : <talkaction words="!removeAddon" hide="yes" event="script" value="nome do arquivo.lua"/> Configurações : ADDON_CONFIG ={ [1] = { -- Type do attribute do addon addon1 = 2079, -- Id da outfit pokemon = "Blastoise", -- O pokemon name_addon = "Red ninja pack", -- Nome do addon habilidade = 2089, -- Id da outfit correspondente com sua habilidade }, } local addon_type = { [13114] = { -- Id do item pokemon_use = "Blastoise", -- O pokemon type = 1, -- Valor do attribute }, } Return_addon_table = { [1] = { -- Type do attribute retu = 13114, -- o id do item que o player vai ganhar }, } Creditos : Sr. Naja 20210725_201402.mp4
  14. Em actions criei um arquivo chamado guardian.lua, dentro dele coloque : local lendas = { -- id dos item / nome do guardian [3000] = {"Mew"}, [3001] = {"Mewtwo"}, [3002] = {"Articuno"}, [3003] = {"Zapdos"}, [3004] = {"Moltres"}, [3005] = {"Entei"}, [3006] = {"Suicune"}, [3007] = {"Raikou"}, [3008] = {"Ho-oh"}, [30010] = {"Lugia"}, } function onUse(player, item, fromPosition, target, toPosition, ishotkey) slot = player:getSlotItem(CONST_SLOT_AMMO) if not slot then player:sendTextMessage(MESSAGE_STATUS_SMALL, "" .. player:getName() .. " Put the Guardian in the right slot" .." ") return true end local lenda = lendas[item.itemid] if not lenda then player:sendTextMessage(MESSAGE_STATUS_SMALL, "" .. player:getName() .. " Sorry, ask adm to set up the guardian string!" .." ") return true elseif(player:getStorageValue(28723) == 1)then player:sendTextMessage(MESSAGE_STATUS_SMALL, "Have you ever used this guardian") return true else local postion = player:getPosition() local monster = Game.createMonster(lenda[1], postion) if not monster then player:sendTextMessage(MESSAGE_STATUS_SMALL,"" ..player:getName() .." Sorry you can't summon, contact a member of staff!.") return true end local message = {"" .. player:getName() .. " Go Guardian : " .. lenda[1] .. ""} player:sendTextMessage(MESSAGE_INFO_DESCR, "Have you ever used this guardian") player:setStorageValue(28723, 1) player:say(message[1], TALKTYPE_MONSTER_SAY) item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION,"[Name] : " .. lenda[1] .. "\n" .. "[Owner] : " .. player:getName() .. "\n" .. "[Last use] :" .. os.date() .. "") local guardians = MonsterType(lenda[1]) if not guardian then return false end guardians:nameDescription("Guardian " .. lenda[1] .. "") guardians:name("Guardian " .. lenda[1] .. "") monster:setMaster(player) monster:setMaxHealth(70000000) monster:setSkull(SKULL_GREEN) monster:getPosition():sendMagicEffect(6) monster:changeSpeed(600000) speed = monster:getSpeed() healt = monster:getHealth() monster:say("GUARDIAN!" .. lenda[1] .. "", TALKTYPE_MONSTER_SAY) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE,"You used the Guardian ( " .. lenda[1] .. " ).") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE,"Your Guardian is alive: " .. healt .. " / " .. monster:getMaxHealth() .. " wait for his life to fully load.") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE,"Guardian Speed " .. speed .. ".") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE,"Guardian owner " .. player:getName() .. ".") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE,"Last time the Guardian was used [" .. os.date() .. "].") return true end end Depois abra o action.xml, e registra : <action itemid="o id" script="guardian.lua" />
  15. Bom Como o Lordoristos Falou esse serve ficou on 1 vez so
  16. Em Breve uma nova atulização nessa base!!
  17. usa mysql e troca de client : https://www.mediafire.com/file/zbx8k8ubtxy41o4/OTC_Poke_Wr_V2.rar/file
  18. tbm queria saber ???
  • advertisement_alt
  • advertisement_alt
  • advertisement_alt

Informação Importante

Confirmação de Termo