Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Bom dia!

Estava de bobeira agora pela manhã e resolvi brincar um pouco.

Criei um script de SD no qual se for noite, ela retornará um valor X de dano, e, se for dia, ela retornará um valor Y de dano.

Estou compartilhando esse script para vocês terem como base e usarem até mesmo em outros:

 

local config = {
    damageDay = {
        min = 0.70,
        max = 0.75
    },
    damageNight = {
        min = 0.95,
        max = 1
    },
    hourStartDay = 6,
    hourEndDay = 18
}

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)

function onGetFormulaValues(player, level, maglevel)
    local min, max = ((level / 5) + (maglevel * 4.605)), ((level / 5) + (maglevel * 7.395))
    local hour = tonumber(os.date("%H", os.time())) -- Obtém a hora atual

    -- Define o valor do dano com base na hora do dia
    if hour >= config.hourStartDay and hour < config.hourEndDay then -- Dia
        min = min * config.damageDay.min
        max = max * config.damageDay.max
    else -- Noite
        min = min * config.damageNight.min
        max = max * config.damageNight.max
    end

    return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local rune = Spell("rune")

function rune.onCastSpell(creature, var, isHotkey)
    return combat:execute(creature, var)
end

rune:group("attack")
rune:name("sudden death rune")
rune:runeId(3155)
rune:allowFarUse(true)
rune:charges(3)
rune:level(45)
rune:magicLevel(15)
rune:cooldown(2 * 1000)
rune:groupCooldown(2 * 1000)
rune:needTarget(true)
rune:isBlocking(true) -- True = Solid / False = Creature
rune:register()

 

Link para o post
Compartilhar em outros sites
  • 3 weeks later...
Em 25/02/2023 em 10:58, Anderson Sacani disse:

Bom dia!

Estava de bobeira agora pela manhã e resolvi brincar um pouco.

Criei um script de SD no qual se for noite, ela retornará um valor X de dano, e, se for dia, ela retornará um valor Y de dano.

Estou compartilhando esse script para vocês terem como base e usarem até mesmo em outros:

 


local config = {
    damageDay = {
        min = 0.70,
        max = 0.75
    },
    damageNight = {
        min = 0.95,
        max = 1
    },
    hourStartDay = 6,
    hourEndDay = 18
}

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)

function onGetFormulaValues(player, level, maglevel)
    local min, max = ((level / 5) + (maglevel * 4.605)), ((level / 5) + (maglevel * 7.395))
    local hour = tonumber(os.date("%H", os.time())) -- Obtém a hora atual

    -- Define o valor do dano com base na hora do dia
    if hour >= config.hourStartDay and hour < config.hourEndDay then -- Dia
        min = min * config.damageDay.min
        max = max * config.damageDay.max
    else -- Noite
        min = min * config.damageNight.min
        max = max * config.damageNight.max
    end

    return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local rune = Spell("rune")

function rune.onCastSpell(creature, var, isHotkey)
    return combat:execute(creature, var)
end

rune:group("attack")
rune:name("sudden death rune")
rune:runeId(3155)
rune:allowFarUse(true)
rune:charges(3)
rune:level(45)
rune:magicLevel(15)
rune:cooldown(2 * 1000)
rune:groupCooldown(2 * 1000)
rune:needTarget(true)
rune:isBlocking(true) -- True = Solid / False = Creature
rune:register()

 

 

 

ele pega o horário do jogo ou da maquina vps que esta hospedado?

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

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

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

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

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

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

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Anderson Sacani
      Venho publicar uma alteração que eu e minha equipe fizemos no script já existente do Canary.
      O arquivo do script se chama quest_system1.lua.
      Fizemos essa alteração, porque o sistema original não entregava chave com actionid ao jogador. A chave vinha com o código 0000, ou seja, não abria nenhuma porta.
      A alteração que fizemos foi justamente para arrumar esse bug, por tanto, agora quando o quest ter uma chave com actionid dentro do baú, o jogador receberá essa mesma chave com o actionid definido.
       
      local specialQuests = { -- {x = 32752, y = 32343, z = 14} [52167] = Storage.DreamersChallenge.Reward, -- {x = 32806, y = 32230, z = 11} [52003] = Storage.PitsOfInferno.WeaponReward, -- {x = 32311, y = 32211, z = 8} [51400] = Storage.ThievesGuild.Reward, [51324] = Storage.WrathoftheEmperor.mainReward, -- {x = 32232, y = 31066, z = 7} [51715] = Storage.SvargrondArena.RewardGreenhorn, -- {x = 32232, y = 31059, z = 7} [51716] = Storage.SvargrondArena.RewardScrapper, -- {x = 32232, y = 31052, z = 7} [51717] = Storage.SvargrondArena.RewardWarlord } local questsExperience = { [3101] = 1 -- dummy values } local questLog = { [8213] = Storage.HiddenCityOfBeregar.DefaultStart } local tutorialIds = { [50080] = 5, [50082] = 6, [50084] = 10, [50086] = 11 } local hotaQuest = { 50950, 50951, 50952, 50953, 50954, 50955 } local questSystem1 = Action() function questSystem1.onUse(player, item, fromPosition, target, toPosition, isHotkey) local storage = specialQuests[item.actionid] if not storage then storage = item.uid if storage > 65535 then return false end end if storage == 23644 or storage == 24632 or storage == 14338 then player:setStorageValue(Storage.SvargrondArena.PitDoor, -1) end if player:getStorageValue(storage) > 0 and player:getAccountType() < ACCOUNT_TYPE_GOD then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ' .. ItemType(item.itemid):getName() .. ' is empty.') return true end local function copyContainer(originalContainer, newContainer) for i = 0, originalContainer:getSize() - 1 do local originalItem = originalContainer:getItem(i) local newItem = Game.createItem(originalItem.itemid, originalItem.type) newItem:setActionId(originalItem:getActionId()) newItem:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, originalItem:getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)) if originalItem:isContainer() then copyContainer(Container(originalItem.uid), Container(newItem.uid)) end newContainer:addItemEx(newItem) end end local items, reward = {} local size = item:isContainer() and item:getSize() or 0 if size == 0 then local actionId = item:getActionId() reward = Game.createItem(item.itemid, item.type) reward:setActionId(actionId) reward:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, item:getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)) else local container = Container(item.uid) for i = 0, container:getSize() - 1 do local originalItem = container:getItem(i) local newItem = Game.createItem(originalItem.itemid, originalItem.type) newItem:setActionId(originalItem:getActionId()) newItem:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, originalItem:getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)) if originalItem:isContainer() then copyContainer(Container(originalItem.uid), Container(newItem.uid)) end items[#items + 1] = newItem end if size == 1 then reward = items[1] end end local result = '' if reward then local ret = ItemType(reward.itemid) if ret:isRune() then result = ret:getArticle() .. ' ' .. ret:getName() .. ' (' .. reward.type .. ' charges)' elseif ret:isStackable() and reward:getCount() > 1 then result = reward:getCount() .. ' ' .. ret:getPluralName() elseif ret:getArticle() ~= '' then result = ret:getArticle() .. ' ' .. ret:getName() else result = ret:getName() end else if size > 20 then reward = Game.createItem(item.itemid, 1) elseif size > 8 then reward = Game.createItem(2854, 1) else reward = Game.createItem(2853, 1) end for i = 1, size do local tmp = items[i] if reward:addItemEx(tmp) ~= RETURNVALUE_NOERROR then Spdlog.warn("[questSystem1.onUse] - Could not add quest reward to container") end end local ret = ItemType(reward.itemid) result = ret:getArticle() .. ' ' .. ret:getName() end if player:addItemEx(reward) ~= RETURNVALUE_NOERROR then local weight = reward:getWeight() if player:getFreeCapacity() < weight then player:sendCancelMessage(string.format('You have found %s weighing %.2f oz. You have no capacity.', result, (weight / 100))) else player:sendCancelMessage('You have found ' .. result .. ', but you have no room to take it.') end return true end if questsExperience[storage] then player:addExperience(questsExperience[storage], true) end if questLog[storage] then player:setStorageValue(questLog[storage], 1) end if tutorialIds[storage] then player:sendTutorial(tutorialIds[storage]) if item.uid == 50080 then player:setStorageValue(Storage.RookgaardTutorialIsland.SantiagoNpcGreetStorage, 3) end end if isInArray(hotaQuest, item.uid) then if player:getStorageValue(Storage.TheAncientTombs.DefaultStart) ~= 1 then player:setStorageValue(Storage.TheAncientTombs.DefaultStart, 1) end end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found ' .. result .. '.') player:setStorageValue(storage, 1) return true end for index, value in pairs(specialQuests) do questSystem1:aid(index) end questSystem1:aid(2000) questSystem1:register()  
    • Por amoxicilina
      Olá Kings, venho aqui trazer uma TalkAction pra você comprar premium account, sei que pode ser algo meio inútil por existir a store.
      Então vamos script:
       
       
    • Por tvieira
      Boa tarde, usuários do TibiaKing. Migrei recentemente pra TFS versão 1.4.1, 1098. E como sou usuáruio das 0.3, estou tendo algumas dificuldades com transferir magias.
      Minha dúvida é em questão das addDamageCondition. Quero criar uma magia chamada "EXORI BLEED", que dá o dano normal, como um exori, mas cria a Condition de Bleeding, por 10 segundos, a cada segundo o inimigo que recebeu o dano fica por 10 segundos com ticks de 1500 (hemorragia).
      Essa é a spell no TFS 0.3.6.
       
      E agora minha tentativa (falha), na TFS atual, 1.4.1
       
       
      Se alguém puder me auxiliar nisso, agradeço muito!
    • Por DarkRed
      Alguem Poderia me ajuda com esse erro de spell do pokemon    [13/03/2022 13:26:44] [Error - Spell Interface] [13/03/2022 13:26:44] data/spells/scripts/ps/Healarea.lua:onCastSpell [13/03/2022 13:26:44] Description: [13/03/2022 13:26:44] (luaGetThingFromPos) Tile not found   [13/03/2022 13:34:08] [Error - Spell Interface] [13/03/2022 13:34:08] data/spells/scripts/ps/Hyper Beam.lua:onCastSpell [13/03/2022 13:34:08] Description: [13/03/2022 13:34:08] (luaGetThingFromPos) Tile not found [13/03/2022 13:26:44] [Error - Spell Interface] [13/03/2022 13:26:44] data/spells/scripts/ps/Healarea.lua:onCastSpell [13/03/2022 13:26:44] Description: [13/03/2022 13:26:44] (luaGetThingFromPos) Tile not found   [13/03/2022 16:10:31] [Error - Spell Interface] 
      [13/03/2022 16:10:31] data/spells/scripts/ps/Thunder.lua:onCastSpell
      [13/03/2022 16:10:31] Description: 
      [13/03/2022 16:10:31] (luaGetThingFromPos) Tile not found Healarea.lua Hyper_Beam.lua
      Thunder.lua
    • Por EddyHavoc
      Nome: Ice Wall
      Tipo: Spell
      Autor: Eddy Havoc
       
       
       
      Essa é a versão final da spell Ice Wall ou Block Wall criada por mim.
       
      Exibição in-game:
       
       
       
       
      Crie um arquivo chamado ice_wall.lua na pasta data/spells/scripts/conjuring e copie o conteúdo abaixo:
      --[[ Created by: Eddy Havoc name: Victor Amaral contact: [email protected] É proibido a venda ou a cópia sem os devidos créditos desse script. ]]-- local north = 0 local south = 2 local east = 1 local west = 3 local delay = 1 -- Tempo em segundos local itemh = 6728 local itemv = 6729 combat = createCombatObject() combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE) function onCastSpell(creature, variant) local cDir = creature:getDirection() local cPos = creature:getPosition () local pos = (Position(0,0,0)) if cDir == north then if not getTileInfo(cPos).house and not getTilePzInfo(cPos) then setCombatParam(combat, COMBAT_PARAM_CREATEITEM, itemv) pos = Position(cPos + Position(0, -1)) meffect = pos:sendMagicEffect(44) end elseif cDir == east then if not getTileInfo(cPos).house and not getTilePzInfo(cPos) then setCombatParam(combat, COMBAT_PARAM_CREATEITEM, itemh) pos = Position(cPos + Position(1, 0)) meffect = pos:sendMagicEffect(44) end elseif cDir == south then if not getTileInfo(cPos).house and not getTilePzInfo(cPos) then setCombatParam(combat, COMBAT_PARAM_CREATEITEM, itemv) pos = Position(cPos + Position(0, 1)) meffect = pos:sendMagicEffect(44) end elseif cDir == west then if not getTileInfo(cPos).house and not getTilePzInfo(cPos) then setCombatParam(combat, COMBAT_PARAM_CREATEITEM, itemh) pos = Position(cPos + Position(-1, 0)) meffect = pos:sendMagicEffect(44) end end addEvent(function() local wall = {itemh, itemv} for i = 1, 2 do if getTileItemById(pos, wall[i]).uid > 0 then doRemoveItem(getTileItemById(pos, wall[i]).uid) return TRUE end end end,delay*1000) return doCombat(creature, combat, variant) end Adicione a seguinte tag no arquivo spells.xml localizadon a pasta data/spells:
       
      <instant group="support" spellid="94" name="Protection" words="Ice Wall" level="1" mana="1" casterTargetOrDirection="1" blocktype="all" prem="0" cooldown="1000" groupcooldown="500" needlearn="0" script="conjuring/ice_wall.lua"> <vocation name="Elder Druid"/> </instant>  
       
       
      Para configurar qual item a spell irá conjurar edite itemh/itemv. Itemh: item que irá aparecer horizontalmente (norte e sul). Itemv: item que irá aparecer verticalmente (leste e oeste).  
       
      Qualquer dúvida estou a disposição,
      Atenciosamente, Eddy Havoc.
       
       
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo