Ir para conteúdo
DESCRIÇÃO
Anuncie aqui neste countdown e dê maior visibilidade ao seu lançamento | Full Global • Custom Quests • Custom Outfits • Lottery System • Version 15x
Inicia em: --
Participar

FeeTads

Membro
  • Registro em

  • Última visita

Solutions

  1. FeeTads's post in (Resolvido)exp potion de acordo com posição do rank was marked as the answer   
    tenta trocar a função do top pra essa:

     
    function getNameTopServer() -- eu alteraria pra getNameTopCinco local i = 1 local query, name = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 5"), {} if (query:getID() ~= -1) then while(true) do name[i] = query:getDataString("name") i = i + 1 if not(query:next()) then break end end end return name end
    e troca a outra por essa, vou colocar pra printar, me manda o que aparece no console quando tenta usar
    local name = getNameTopServer() local exp = {5, 4, 3, 2, 1} local NaoEstaCinco = 0 local expOutros = 1 for j=1, 5 do if name[j] == getPlayerName(cid) and item.itemid == seuitem then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid, exp[j]) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 420) doPlayerSendTextMessage(cid,22,texto) NaoEstaCinco = 1 break return true end end if NaoEstaCinco == 0 then if item.itemid == seuitem then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid, expOutros) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 420) doPlayerSendTextMessage(cid,22,texto) end end  
  2. FeeTads's post in (Resolvido)Nascer monstro a cada x tempo [ 8.60 ] was marked as the answer   
    altera no spawn.xml
  3. FeeTads's post in (Resolvido)criei um item que é de encantamento. was marked as the answer   
    coloca no movement o move do 44745 também, coloca os 2, provavelmente vc colocou só 1
    <movevent type="Equip" itemid="44745" slot="necklace" level="100" event="function" value="onEquipItem"> <vocation id="3"/> <!-- vocation que usa esse item, excluir a tag pra liberar pra todos --> </movevent> <movevent type="DeEquip" itemid="44745" slot="necklace" event="function" value="onDeEquipItem"/>  
  4. FeeTads's post in (Resolvido)[RESOLVIDO] Movement de armadura que dá % de vida was marked as the answer   
    vc vai precisar sempre dar um update desses items, indico fazer uma function na LIB com esses itens, uma table, e sempre que o player upar ou mover esse item, dar chamar a function da lib pra atualizar a vida com a %

    pois dessa maneira que está ele pega a max health apenas no momento do equip, ele não da um "update" pra checar o health a cada level.

    indico vc fazer uma tabela com esses itens na lib tipo
     
    function na lib:
    function executeItems(cid) local tabela = {1111,2222,333,4445,5555,5555,555,9999} for i=1, 9 do for j=1, #tabela do if getPlayerSlotItem(cid. i).itemid == tabela[j] then local save = getCreatureMaxHealth(cid) doSetCreatureMaxHealth(cid, (getCreatureMaxHealth(cid) * 1.1)) --1.1 = 110% da vida atual, ou seja, +10% doCreatureAddHealth(cid, (getCreatureMaxHealth(cid) - save)) -- adiciona 10% de vida end end end end
    e um function no creatureScripts:
     
    function onAdvance(cid, skill, oldLevel, newLevel) if(skill == SKILL__EXPERIENCE) then return true end if(skill == SKILL__LEVEL) then executeItem(cid) doPlayerSave(cid, true) end return true end  
     
    tem que testar direitinho pra checar se não vai bugar e ficar add infinitamente, mas de base eh isso.
  5. FeeTads's post in (Resolvido)LUA - 'ipairs' (table expected, got number) was marked as the answer   
    o código ta fazendo oq tu pediu uai
    players = #getPlayerInarea

    o # significa o tamanho
    pra receber a table é só 
    players = getPlayersInArea
     
    e depois print(#players)
    que ai vai printar o tamanho de players, ou seja, 2 players na area
  6. FeeTads's post in (Resolvido)Sd dando dano igual em monstro e player was marked as the answer   
    você esqueceu do resto do script kkkkkkk vou deixar ele 100%

     
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) function onGetFormulaValues(cid, level, maglevel) if isMonster(getCreatureTarget(cid)) then -- se for monster min = -(level * 3 + maglevel * 4) * 10 max = -(level * 3 + maglevel * 5) * 10.5 else --se for qualquer outra coisa min = -(level * 3 + maglevel * 4) * 5 max = -(level * 3 + maglevel * 5) * 5.5 end return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end  
  7. FeeTads's post in (Resolvido)ERRO DISTRO SISTEMA VIP [ 8.60 ] was marked as the answer   
    existe 4 funções pra checar alguma creature no tibia
    isCreature(cid) > se é alguma creature, ou seja, se é algo passando ali.
    isPlayer(cid) > se é um player, qualquer outra coisa q não seja player, não se encaixa.
    isMonster(cid) > se é monster, qualquer coisa que não seja monster não se encaixa.
    isSummons(creature) > se é summon tanto de bixo como de player

    o seu script pra ignorar NPC's e monsters deve ficar assim:

     
    -- Script Vip Sytem 1.0 -- function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then -- se não for player return true -- retorna true end local config = { msgDenied = "Está área é exclusiva para jogadores VIP. Para adquirir sua VIP basta usar o comando: !comprarvip10 ou !comprarvip30.", msgWelcome = "Bem Vindo a Área VIP!" } if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgDenied) doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) return TRUE end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgWelcome) return TRUE end  
  8. FeeTads's post in (Resolvido)Tile que da DMG! was marked as the answer   
    mas esse script só vai mandar o texto "voc vip" no sqm kkkkkk

    segue o script, adicionar o script em globalEvents
    data > globalEvents > scripts > DamageTile.lua
    local config = { damage = 100, --quantidade de dano effect = 26, -- efeito que sairá na position, pra saber qual efeito usar, vá no seu god e usa /z e um numero entre 0-49, exemplo /z 30 cor = 180 -- cor do texto } function onThink(interval, lastExecution) local positions = { [1] = {pos = {x = 143, y = 155, z = 7}}, --[2] = {pos = {x = 1, y = 1, z =1}}, -- pra add outras posições só colocar assim e em sequencia, precisa da virgula no final } for i=1, #positions do -- vai da posição 1, até o tamanho de posições doSendMagicEffect(positions[i].pos, config.effect) -- envia o efeito na posição if isPlayer(getTopCreature(positions[i].pos).uid) then -- se tiver player na posiçao player = getTopCreature(positions[i].pos).uid doSendAnimatedText(getCreaturePosition(player), "-"..config.damage, config.cor) doCreatureAddHealth(player, -config.damage) -- retira a vida do player na posição end end return true end  
    e add essa tag no globalEvents.xml
    data> globalEvents > globalEvents.xml
     
    <globalevent name="DamageTile" interval="3000" event="script" value="DamageTile.lua"/>  
    "interval="3000" singnifca 3s
    3000 ms = 3s
  9. FeeTads's post in (Resolvido)Usar um item em outro e ganhar stg was marked as the answer   
    local config = { itemY = 2160, -- Id do item Y message = 'A mensagem que ira aparecer quando usar o item X no item Y.', storage = 412311 } function onUse(cid, item, fromPosition, itemEx, toPosition) -- esse if o player só usa 1x e nunca mais if getPlayerStorageValue(cid, config.storage) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já usou esse item no item Y.") return true end if (itemEx.itemid == config.itemY) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.message) doRemoveItem(item.uid, 1) -- storage de usar apenas 1x setPlayerStorageValue(cid, config.storage, 1) end return true end  
    ta na mão meu querido
  10. FeeTads's post in (Resolvido)Itens do site não vai para o personagem Plugin GeniorACC 2019 8.6 was marked as the answer   
    tenta esse arquivo como shop.lua
    shop.lua
     ou esse
    shop.lua  > shop do baiak.pvp

    caso nenhum de certo, possivelmente poderá ser o seu php com problema
    shopsystem.php
    caso seja o seu php, tente por esse no lugar.

    caso nada entregue
    cheque o interval da tag do global events
    data > globalevents > globalevents.xml

     
    <globalevent name="shop" interval="10000" script="shop.lua" />

    caso não seja nada disso possivelmente pode ser DB
  11. FeeTads's post in Item que heala e da buff was marked as the answer   
    a distro deixou o erro ali kkkkkk
    " ' , ' expected near '#' " ?
    kkkkkk faltou uma virgula no for da linha 46

    aki nesse for i=1 #need_vocation
    for i=1 #need_vocation do -- checa as vocações que podem usar o food //setadas no cabeçalho if getPlayerVocation(cid) == need_vocation[i] then -- se for, aparece msg de sucesso na tela doPlayerSendTextMessage(cid, 22, msg_sucess) else doPlayerSendTextMessage(cid, 22, msg_no_vocation) -- se não tiver a vocação necessaria, manda msg avisando return true -- e sai da função end end  
    coloca assim 
     
    for i=1, #need_vocation do  
    só uma virgula após o i=1
    de qualquer maneira, atualizei a linha 46 no código ali em cima, qualquer coisa só copiar e colar kkk
    e caso funcione 100%, deixa o REP+ e o Mark as Solution ?
    tmj meu mano
     po mano e percebi um "mini erro" meu aqui, quando estava chamando a função, caso fosse diferente de 1 segundo, iria bugar
     
    deixando o código arrumado aki pra baixo
    fix: GARANTE que o buff vai durar exatamente o tempo descrito no cabeçalho, independente de quantas curas executar.
    fix2: arrumei a checagem de vocação do for também, da outra maneira ia checar apenas a primeira vocação e sair.
     
    sugiro muito que copie esse script \/
     
    local itemID = 9998 -- id do item local tempoDeBuff = 60 -- em segundos local porcentagemDeCura = 2 -- vai curar 2% por [tempo entre curas] durante [tempo de buff] local qtdDeSkill = 10 -- quantidade de skill que dará local efeito = 4 -- efeito que sairá do player local removerItem = true -- remover o item? true = remove, false = não remove local tempoEntreCuras = 1 * 1000 -- tempo entre o efeito da cura, 1 * 1000 = 1000ms logo //1 segundo local need_vocation = {1,2,3,4,5} -- IDs da vocações QUE PODEM usar o food local buff = SKILL_FISHING -- qual skill vai aumentar //pra saber qual skill vc quer aumentar procure por "skill" em "lib/000-constant.lua" local storage = 5474767 -- pode ser qualquer numero //não pode repetir numero de outra storage existente local storage_buff_ativo = 5474768 local function CuraFoodBuff(cid, flag) if isCreature(cid) then --se estiver logado entra, se não termina o loop, ou seja, se deslogar/morrer perde o efeito do food if flag > 0 then doCreatureAddHealth(cid, (getCreatureMaxHealth(cid) * (porcentagemDeCura/100))) -- n mexer :P doSendMagicEffect(getThingPos(cid), efeito) -- efeito que vai sair do player flag = getPlayerStorageValue(cid, storage) - os.time() -- garante que execute a função pelo [tempo de buff] addEvent(CuraFoodBuff, tempoEntreCuras, cid, flag) -- chama de novo a função passando -1 segundo pro tempo else doPlayerAddSkill(cid, buff, -qtdDeSkill, true) -- quando acabar o efeito seta o fishing pro normal setPlayerStorageValue(cid, storage_buff_ativo, -1) return true end else return true end end function onUse(cid, item, frompos, item2, topos) local msg_no_vocation = "Sua Vocação não pode usar esse item!" -- mensagem caso não tenha a voc necessária local msg_sucess = "Você usou o Heal Food, o efeito irá durar"..tempoDeBuff.." segundos" -- mensagem de sucesso if item.itemid == itemID then local tempo = getPlayerStorageValue(cid, storage) - os.time() -- tempo recebe o tempo restante pra usar a potion de novo if tempo > 0 then -- se tempo for maior que 0, significa que está em uso if tempo > 60 then -- só pra mostrar bonitinho doPlayerSendCancel(cid,"Você precisa esperar "..math.floor(tempo/60).." minutos e "..(tempo%60).." segundos.") else doPlayerSendCancel(cid,"Você precisa esperar "..(tempo%60).." segundos.") end return true end for i=1, #need_vocation do -- checa as vocações que podem usar o food //setadas no cabeçalho if getPlayerVocation(cid) == need_vocation[i] then -- se for, aparece msg de sucesso na tela doPlayerSendTextMessage(cid, 22, msg_sucess) no_have_voc = false -- seta a variavel de não ter voc pra false, ou seja tem a voc necessaria break -- quebra o for depois disso //necessario deixar o BREAK end end if no_have_voc then doPlayerSendTextMessage(cid, 22, msg_no_vocation) -- se não tiver a vocação necessaria, manda msg avisando return true -- e sai da função end setPlayerStorageValue(cid, storage, os.time() + tempoDeBuff) -- storage pra salvar o tempo de buff, apenas pra tirar o skill de fishing caso o player deslogue/morra doPlayerAddSkill(cid, buff, qtdDeSkill, true) -- aumenta o skill setado no cabeçalho setPlayerStorageValue(cid, storage_buff_ativo, 1) if removerItem then -- se removerItem no cabeçalho for true REMOVE O ITEM, se não, não remove doRemoveItem(item.uid, 1) -- função de remover o item, não precisa mexer end CuraFoodBuff(cid, tempoDeBuff) -- chama a função end return true end  
  12. FeeTads's post in (Resolvido)Premmy no nick was marked as the answer   
    function Split(s, delimiter) result = {}; for match in (s..delimiter):gmatch("(.-)"..delimiter) do table.insert(result, match); end return result; end function onLogin(cid) if getPlayerAccess(cid) > 2 then -- ignora GM+ return true end local func = db.query or db.executeQuery local namePlayer = getPlayerName(cid) local checkPremmy = Split(namePlayer, " ") if isPremium(cid) and checkPremmy[1] ~= "[P]" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você será desconectado pra mudança de nome!") --Msg em vermelho na tela do player addEvent(function() if isCreature(cid) then --verifica se o player ainda ta on e executa doRemoveCreature(cid) --desloga o char func('UPDATE `players` SET `name` = "[P] '..namePlayer..'" WHERE `name` = "'..namePlayer..'"') --executa a função na DB end end, 6000) -- 2000 = 2s pra deslogar o player elseif not isPremium(cid) and checkPremmy[1] == "[P]" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você será desconectado pra mudança de nome!") addEvent(function() if isCreature(cid) then --verifica se o player ainda ta on e executa -- não mexer em nada daqui pra baixo ****** local split = Split(getPlayerName(cid), " ") -- função pra tirar o [P] local nomeAntigo = '' local space = " " for i=2, #split do nomeAntigo = nomeAntigo..split[i] if i+1 <= #split then --se ainda tiver mais nomes nomeAntigo = nomeAntigo..space -- caso seja nome composto add espaço ex: Pedro Mauro end end -- não mexer em nada pra cima ****** doRemoveCreature(cid) --desloga o char func('UPDATE `players` SET `name` = "'..nomeAntigo..'" WHERE `name` = "'..namePlayer..'"') --executa a função na DB end end, 6000) -- 2000 = 2s pra deslogar o player end return true end  
    coloca esse código todo no lugar.
     
    e testa em OUTRO boneco qualquer pra ver
  13. FeeTads's post in [AJUDA] CRYSTAL NAO GANHA SPELL DA VOCAÇÃO was marked as the answer   
    coloca um print(gem) pra ver oq mostra no console e manda uma print.
     
    e o action ID das estatuas está certo?
    estatua1 = action id: 8635
    estatua2 = action id: 8636
    estatua3 = action id: 8633
    ....
  14. FeeTads's post in (Resolvido)[Resolvido] existe função pra checar se algum item é ring ou colar? was marked as the answer   
    function getItemType(itemid) local slottypes = {"head", "body", "legs", "feet", "ring", "necklace"} local consts = { ["head"] = CONST_SLOT_HEAD, ["armor"] = CONST_SLOT_ARMOR, ["legs"] = CONST_SLOT_LEGS, ["feet"] = CONST_SLOT_FEET, ["ring"] = CONST_SLOT_RING, ["necklace"] = CONST_SLOT_NECKLACE } local arq = io.open("data/items/items.xml", "r"):read("*all") local attributes = arq:match('<item id="' .. itemid .. '".+name="' .. getItemNameById(itemid) ..'">(.-)</item>') local slot = "" for i,x in pairs(slottypes) do if attributes:find(x) then slot = x break end end if slot == "body" then slot = "armor" end return consts[slot] end  
    a solução foi essa kkkkk, achei algumas funções de como pegar no items.xml e arrumei a função, ela retorna exatamente o slot que o item vai, porém items sem slot definido bugam kkkkk
    ex: usar pedra de refine na armor > 
                print(getItemType(itemEx.itemid))
    a saida do console será: 4
    e então você pode escolher se o player pode ou não usar o refine na armor
    ex:
            if getItemType(itemEx.itemid) == 4 then
                    doPlayerSendTexTMessage(cid, 22, "não pode usar refina na armor")
                    return true
            end
     
    ex: getItemType(2160) --id do crystal coin
    vai bugar pq o gold não tem slotType, porém pra evitar bugs desse estilo, nos scripts junto com getItemType eu uso " not isStackable(itemid) " pq ai se o item não for stackavel ele não buga kkkkkk
     
    tmj  

    esse script não sei quem começou ele pois tava banido do forum que peguei, e como arrumei uns 30% dele vou disponibilizar sem créditos
    **não sei quem é o dono desse script e se tem 100% funcional, mas tmj <3**
  15. FeeTads's post in Função level was marked as the answer   
    então é só colocar o getplayer level no começo do on say, assim:
     
    local config = { --vocation id = {storage, nova voc, looktype, efeito} ------------ NARUTO ------------- [215] = {30023, 630, 971, 252}, need_level = 500 } local from,to = {x=1001, y=705, z=7},{x=1031, y=737, z=7} -- começo e final do mapa local from2,to2 = {x=1011, y=705, z=6},{x=1031, y=738, z=6} -- começo e final do mapa local from3,to3 = {x=1012, y=706, z=5},{x=1032, y=739, z=5} -- começo e final do mapa local from4,to4 = {x=985, y=598, z=7},{x=1044, y=652, z=7} -- começo e final do mapa local from5,to5 = {x=986, y=615, z=6},{x=1039, y=647, z=7} -- começo e final do mapa local from6,to6 = {x=990, y=616, z=5},{x=1040, y=647, z=5} -- começo e final do mapa local from7,to7 = {x=1475, y=856, z=7},{x=1484, y=867, z=7} -- começo e final do mapa local from8,to8 = {x=984, y=578, z=7},{x=1044, y=652, z=7} -- shinobi war function onSay(cid, words, param, channel) if getPlayerLevel(cid) < config.need_level then doPlayerSendCancel(cid, "Você precisa ser level".. config.need_level .."ou mais!") return true end local voc = config[getPlayerVocation(cid)] local posPlayer = getCreaturePosition(cid) if isInRange(posPlayer, from, to) or isInRange(posPlayer, from2, to2) or isInRange(posPlayer, from3, to3) or isInRange(posPlayer, from4, to4) or isInRange(posPlayer, from5, to5) or isInRange(posPlayer, from6, to6) or isInRange(posPlayer, from7, to7) or isInRange(posPlayer, from8, to8) then doPlayerSendCancel(cid, "Você não pode se transformar nesta área!") return true end if voc then if getPlayerStorageValue(cid, voc[1]) > 1 then doCreatureSay(cid, "Transformar!", TALKTYPE_MONSTER) doPlayerSetVocation(cid, voc[2]) doCreatureChangeOutfit(cid, {lookType = voc[3]}) doSendMagicEffect(posPlayer, voc[4]) else doPlayerSendCancel(cid, "Você não fez a quest para usar essa transformação!") end else doPlayerSendCancel(cid, "Você já está na transformação máxima!") end return true end
    "need_level" = level minimo necessário. **LEMBRANDO** level 500 assim que pegar 500, ja pode usar a function
    ai dentro do onSay, quando o player der talkaction e for 500 ou menos, retorna true e sai da function sem transformar

    caso queira uma tabela e talz, me manda no discord a ideia que tento fazer pra vc, e dei uma "arrumadinha" no código pra deixar mais clean kkkkk
  16. FeeTads's post in [PEDIDO] Como utilizar acentuação em Scripts .lua e .php was marked as the answer   
    esse código só serve pra arquivos .xml meu mano

    pra vc usar acentos nó que vai aparecer na tela do player, você precisa formatar o arquivo em ANSI, ele vem por padrão UTF-8, e pra fazer isso vc precisa usar o notepad++

    pra colocar os acentos vc vai precisar abrir seu arquivo do seu OT com notepad++
     
    ai vai na opção formatar, e clica em "Codificação em ANSI"


    ai caso JÁ EXISTA, palavras com acentos, você vai precisar consertar elas
    ~pq vão ficar com símbolos bugados~

    exemplo:



    ai após formatar e arrumar, so salvar o arquivo CTRL + S e dar reload e testar

     
    ai fica certinho na tela do player assim.


     
  17. FeeTads's post in (Resolvido)Usar Item e Mudar Outfit. was marked as the answer   
    local remover = false -- Remover ao usar? false = não remove, true = remover local outfits = { [11478] = {out = 2013}, } function onUse(cid, item) local t = outfits[item.itemid] if getPlayerVocation(cid) > 13 then doPlayerSendTextMessage(cid, 22, "Sua vocação não pode usar este item!") return true end if getCreatureOutfit(cid).lookType ~= 2013 then --se o outfit for diferente do 2013 setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType) --salva o looktype atual do player doCreatureChangeOutfit(cid, {lookType = t.out}) --transforma doPlayerSendTextMessage(cid, 22, "Voce alterou seu Outfit!") else doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)}) --se o looktype for 2013 volta ao original doPlayerSendTextMessage(cid, 22, "De volta ao seu outfit original!") end if remover then doRemoveItem(item.uid, 1) -- pode deixar 1 aqui e no escopo deixa false end return true end  
    se funcionar deixa o rep+ ai pra ajudar
  18. FeeTads's post in Como removo o limite da barra de vida e mana? was marked as the answer   
    mano, não tem como remover pq 65536 é a quantidade maxima de bits que o tibia 8.6 suporta, não tem como modificar isso, pelo menos no OT 8.6, oq vc pode fazer é colocar a vida em porcentagem, ai vai ficar 100/100 indicando a porcentagem de vida da pessoa.

    esse link aki do TK ensina como fazer.
     
  19. FeeTads's post in (Resolvido)Erro Em Globalevents was marked as the answer   
    local msg = { ["Monday"] = { --Segunda ['19:00'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:05'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:10'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:15'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:20'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:25'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:29'] = {text = 'Evento Up Acaba Em 1 Minuto', type = 21}, }, ["Wednesday"] = { --Quarta ['19:00'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:05'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:10'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:15'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:20'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:25'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:29'] = {text = 'Evento Up Acaba Em 1 Minuto', type = 21}, }, ["Saturday"] = { --Sabado ['19:00'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:05'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:10'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:15'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:20'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:25'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:29'] = {text = 'Evento Up Acaba Em 1 Minuto', type = 21}, }, } function onThink(interval, lastExecution) if msg[os.date("%A")] then hours = tostring(os.date("%X")):sub(1, 5) tab_val = msg[os.date("%A")][hours] if tab_val then return tab_val and doBroadcastMessage(tab_val.text, tab_val.type) or true end end return true end tenta esse script, mudei pra ele checar o dia logo no começo, diferente do seu que recebe data e hora antes de checar kkk, acho q assim deve funcionar

    e alias
     
    monday é segunda e Wednesday é quarta kkkkkkk, isso pode te atrapalhar depois, arrumei no script, vai que sla
    e creio também que Type  = 21 pra broadcast não funciona, tem que colocar 
     
    no lugar desse tab_cal.type o tipo de message, tipo 
    doBroadcastMessage(tab_val.text, MESSAGE_STATUS_CONSOLE_RED) e vc tem ctz que quer esse script mandando a cada 5s na tela de todos mano? eu acho isso meio poluido sabe, magina em 1 minuto aparecer 12 mensagens dessa que duram 5s, a mensagem nem vai sair da tela durante o minuto todo, se eu fosse vc, ja que tem 7 horarios com aviso, colocaria o interval em 20000, que seria 20s, seria mais clean, isso é só minha opnião kkk as vezes a cada 5s eh melhor, mas ai eh com vc
  20. FeeTads's post in (Resolvido)Ao passar no SQM ganhar storage was marked as the answer   
    se é esse script q você mandou, é só por um Movements de StepIn, quando o char andar sobre o ActionID do move, ele vai receber essas storages, não manjo muito de 12x mas creio q eh o mesmo estilo

    e essa tag no movements.xml
    <movevent type="StepIn" actionid="54654" event="script" value="nome-do-arquivo.lua"/>

    data/movements/scripts/nome-do-arquivo.lua
    function onStepIn(cid, item, position, fromPosition, toPosition) local actionId = item.actionid if actionId == 54654 then player:setStorageValue(Storage.ForgottenKnowledge.Tomes, 1) player:setStorageValue(Storage.ForgottenKnowledge.LastLoreKilled, 1) player:setStorageValue(Storage.ForgottenKnowledge.TimeGuardianKilled, 1) player:setStorageValue(Storage.ForgottenKnowledge.HorrorKilled, 1) player:setStorageValue(Storage.ForgottenKnowledge.DragonkingKilled, 1) player:setStorageValue(Storage.ForgottenKnowledge.ThornKnightKilled, 1) player:setStorageValue(Storage.ForgottenKnowledge.LloydKilled, 1) player:setStorageValue(Storage.ForgottenKnowledge.LadyTenebrisKilled, 1) player:setStorageValue(Storage.ForgottenKnowledge.AccessMachine, 1) end return true end aonde estão essas storages? provavelmente na sua lib né? se for variavel global, ele vai aceitar nesse script.
    agora se estiver tipo
     
    local Storage.k....... ai assim, vc vai precisar colocar essas storage dentro do script de move tbm

Informação Importante

Confirmação de Termo