Ir para conteúdo

lordzetros

Membro
  • Registro em

  • Última visita

Tudo que lordzetros postou

  1. lordzetros respondeu ao post em um tópico de vyctor17 em Suporte & Pedidos
    Curti, parabéns! Você me deu ideia de um futuro sistema.
  2. @pablobion Por nada, estou no aguardo. Fiz uma alteração no código, o semPK.lua, depois do teste substitui, e testa novamente, por gentileza.
  3. @Celulose Esse foi o problema que ele citou no tópico antes, nesse script a pessoa tem que configurar sqm por sqm de onde o push não aconteça...
  4. @pablobion Graças a você refrescar minha memória, consegui terminar o script que tinha feito e não estava 100%... Nesse que fiz você configura os tipos de skulls que você quer que não conte a frag do player, caso queira que um player de black skull conte frag para ele, basta apenas remover da tabela, fiz isso porque você disse que era para evitar o player pegar black ou red, certo? Então se o player já estiver com a skull, não vejo problema contar como frag, mas tá tudo configurado aê. data/creaturescripts/scripts/ crie e adicione no arquivo semPK.lua local config = { supEsquerdo = {x = 1020, y = 1036, z = 7}, infDireito = {x = 1025, y = 1041, z = 7}, skulls = {SKULL_YELLOW, SKULL_GREEN, SKULL_BLACK, SKULL_WHITE, SKULL_RED} } function remove_frag_players(dl) for _, pid in pairs(dl) do if (isInArray(config.skulls, getCreatureSkullType(pid))) then doRemoveCondition(pid, CONDITION_INFIGHT) doCreatureSay(pid, "Esta frag nao foi registrada", TALKTYPE_ORANGE_1) end end return true end function calcula_posicoes(sup,inf) pos_t = {} for l = sup.y, inf.y do for j = sup.x, inf.x do table.insert(pos_t, {x = j, y = l, z = sup.z}) end end return pos_t end function onPrepareDeath(cid, deathlist) if (not isPlayer(deathlist[1]) and not isPlayer(cid)) then return true end local area = calcula_posicoes(config.supEsquerdo, config.infDireito) if (isInArray(area, getCreaturePosition(cid)) and isInArray(area, getCreaturePosition(deathlist[1]))) then remove_frag_players(deathlist) end return true end Em data/creaturescripts/creaturescripts.xml adicione este código abaixo de outra semelhante: <event type="preparedeath" name="semPk" event="script" value="semPK.lua"/> E para finalizar, no data/creaturescripts/scripts/login.lua abaixo de um semelhante também, adicione: registerCreatureEvent(cid, "semPk") Cara, aqui no servidor que fiz o teste, não contou como frag e parece está tudo 100%, caso dê bronca aê, a gente quebra a cabeça para resolver, :]. Aguardo o resultado.
  5. @Christinacsa então, nesse script que fiz você pode bloquear o push em toda área de trainer, assim fica mais fácil, assim como o Dukee citou. Na imagem que postei com a resposta, você pode colocar a posição do canto superior esquerdo da área de treino e o canto inferior direito, tudo configurável no script. Assim essa área toda delimitada por você, fica proibido de algum player dá push em alguém. Um exemplo acima.
  6. Então, cara, acho meio difícil isso funcionar apenas com scripts, desenvolvi um que em uma determinada área, ele tira a condição de batalha e tira a skull do player (skull_none) ao player atacar o outro nesta área (function onAttack), por algum motivo, não funciona sempre, pelo menos no servidor que tenho como teste. Caso saiba desenvolver e queira alguma ideia é essa mesmo, não consegui desenvolver um que fosse tanto preciso.
  7. É só não pegar PK? Tipo, conte como frag, porém, não fique com skull?
  8. Cantos superiores e inferiores da área azul. Em data/creaturescripts/scripts/pushTrainers.lua adicione: --[[ Script - Lordzetros Pedido - Christinacsa Fórum TibiaKing ]] local config = { supEsquerdo = {x = 1016, y = 1024, z = 7}, -- Canto superior esquerdo da área que você quer que os jogadores não puxem infDireito = {x = 1018, y = 1026, z = 7}, -- Canto inferior direito da área que você quer que os jogadores não puxem msgFalha = "Não é permitido puxar o player desta área." -- Mensagem quando o jogador tentar puxar da área } function calcula_posicoes(sup,inf) pos_t = {} for l = sup.y, inf.y do for j = sup.x, inf.x do table.insert(pos_t, {x = j, y = l, z = sup.z}) end end return pos_t end function onPush(cid, target) local tabela = calcula_posicoes(config.supEsquerdo, config.infDireito) if isPlayer(target) and isInArray(getCreaturePosition(target)) then doPlayerSendCancel(cid, config.msgFalha) end return false end Em data/creaturescripts/creaturescripts.xml adicione essa linha de código abaixo de alguma outra semelhante: <event type = "push" name ="pushTrainer" event ="script" value ="pushTrainers.lua" /> Em data/creaturescripts/scripts/login.lua antes do último return true, cole isto: registerCreatureEvent(cid, "pushTrainer") Não pude testar por conta das sources do servidor que baixei para testar scripts, mas caso tenha algum erro, estarei para ajudar. [É pra funcionar], haha.
  9. Por nada, sucesso com o servidor e abraços!
  10. Em data/globalevents/scripts/backEvent.lua adicione: --[[ Script - Lordzetros Pedido por: tetheuscunha Fórum TibiaKing ]] local config = { pos = {x = 1020, y = 1021, z = 7, stackpos = 1}, -- Posição que o Protal abrirá toPos = {x = 961, y = 937, z = 6}, -- Posição que os players serão teleportados após entrarem no portal tempo = 10, -- tempo para o fim do evento (duração do evento) msgAbrir = "O evento BackPack acabou de iniciar!", -- Mensagem de quando o evento abrir msgFechar = "O evento BackPack encerrou!", -- mensagem quando o evento fechar idBackpack = 12661, -- id da Backpack actionID = 8049 -- ActionID da backpack } local backspacks = { [1] = {pos = {x = 955, y = 935, z = 6, stackpos = 1}}, -- Posição que a backpack irá será criada / Para colocar uma nova, siga o padrão, [numAnterior + 1] = {pos = {x = Valor, y = Valor, z = Valor}}, [2] = {pos = {x = 955, y = 936, z = 6, stackpos = 1}}, [3] = {pos = {x = 955, y = 937, z = 6, stackpos = 1}}, [4] = {pos = {x = 955, y = 938, z = 6, stackpos = 1}}, [5] = {pos = {x = 955, y = 939, z = 6, stackpos = 1}}, [6] = {pos = {x = 955, y = 940, z = 6, stackpos = 1}}, } function onTime() doBroadcastMessage(config.msgAbrir, 25) doCreateTeleport(1387, config.toPos, config.pos) for _, b in pairs(backspacks) do local i = doCreateItem(config.idBackpack, 1, b.pos) doItemSetAttribute(i, "aid", 8049) end addEvent(function() local portal = getTileItemById(config.pos, 1387) if portal then doRemoveItem(portal.uid, 1) end doBroadcastMessage(config.msgFechar, 25) for _, r in pairs(backspacks) do local bk = getTileItemById(r.pos, config.idBackpack) if (bk) then doRemoveItem(bk.uid, 1) end end end, config.tempo * 60 * 1000) return true end Em data/globalevents/globalevents.xml adicione essa linha de código abaixo de uma outra semelhante: <globalevent name="EventoBack" time="10:00;15:00;20:00;00:00" event="script" value="backEvent.lua"/>
  11. Beleza, encerrando aqui: Os players que ficarão na área do evento, terão que ser teleportados ao final do evento ou permanecerão na área?
  12. Já finalizei, só uma pergunta: As backpacks irão sumir depois que terminar o evento, correto?
  13. Colega, acho que já temos esse script no fórum. Segue o link:
  14. Já vi o evento em servidores, mas nunca soube como funcionava, posso fazer sim, agora preciso entender o que as backpacks irão fazer e o que terá dentro delas, etc... Mais informações, por gentileza.
  15. lordzetros respondeu ao post em um tópico de Ackerzin em Suporte Tibia OTServer
    Você já tentou verificar se no seu mapa, onde tem o ID dessa sua porta, tenha uma outra igual, só que de ID diferente? Por exemplo, essa é a 5135, pode ter a 5134 que ela abre de sentido ao contrário, não sei se em derivado é assim também, faz o teste e depois posta aqui, :). Para um melhor entendimento: Ambas são portas fechadas, só que, o fluxo de entrada/saída é diferente (justamente isso que você falou em vídeo), verifica aí se tem.
  16. @FlavioHulk Gostaria de saber também, simplesmente ficou bugado quando postei. ? @FlavioHulk Pronto, consegui arrumar o bug. @TibiaKing Aos desenvolvedores do fórum, o motivo do post ter bugado antes, foi a tag spoiler, ficou tudo sublinhado, aconselho darem uma olhadinha nisso.
  17. * Sobre o Sistema da Quest * Para quem já assistiu Sword Art Oline vai ficar fácil de entender. Jogadores poderão fazer uma quest simples, porém, diferenciada. Funciona da seguinte forma: 1 - Jogador terá que possuir uma chave para abrir o caminho de uma sala misteriosa e aparentemente cheia de tesouros e recompensas dentro de um baú 2 - Abrindo a passagem, ele vai se deparar com um baú em sua espera, o interesse do ser humano é devastador, ele irá abrir sim! 3 - Ao tentar abrir o baú, monstros serão invocados e a passagem será imediatamente fechada 4 - De todos os monstros que serão invocados, terá um chefe que será responsável por permitir a saída dos jogadores para sala de recompensa e sair daquele lugar, APENAS matando ele, isso será possível 5 - Após a morte do chefe, TODOS players na sala da quest serão teleportados para a área de recompensa configurada no script. Obs.: A quest tá configurada para ser feita em X minutos para TODO servidor, ou seja, se uma guild fez a quest e você configurou para ela ser feita novamente em 10 minutos, então, nenhum outro player poderá fazer a quest nesse intervalo, pois a storage armazenada é a do servidor. * Instalação * VERSÃO TESTADA: 8.6 - TFS 0.4 Para agilizar o processo, deixei como anexo todos os arquivos necessários, devidamente separados e organizados, caso queira baixar, o ViruScan dele está logo abaixo. Em data/actions/scripts/ 1° - Crie um arquivo chamado keySAO.lua e cole o seguinte código dentro: --[[ Script - Lordzetros Tibiaking - Lordzetros ]]-- local config = { parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- ID da parede |||| POSIÇÃO que ela irá ser criada strPassagem = {storage = 22338, tempo = 1}, -- Storage que vai controlar o tempo de intervalo para a quest ||||| tempo em MINUTOS de intervalo para os players fazer a quest novamente tempoFechar = 1, -- MINUTOS para a passagem fechar, caso não entrem APÓS abrirem a passagem } function remover_parede(conf) local parede = getTileItemById(conf.parede.pos, conf.parede.id) if (parede) then doRemoveItem(parede.uid, 1) doSendMagicEffect(conf.parede.pos, 10) end return true end function adicionar_parede(conf) local parede = getThingFromPos(conf.parede.pos).itemid ~= conf.parede.id if (parede) then return doCreateItem(conf.parede.id, 1, conf.parede.pos) and doSendMagicEffect(conf.parede.pos, 11) end return true end function onUse(cid, item, fromPos, item2, toPos) if (item2.itemid == config.parede.id) then if (getGlobalStorageValue(config.strPassagem.storage) >= os.time()) then return doCreatureSay(cid, 'Precisa esperar ' .. config.strPassagem.tempo .. ' minuto para fazer a quest!', TALKTYPE_ORANGE_1) end doRemoveItem(item2.uid, 1) doSendMagicEffect(config.parede.pos, 10) doCreatureSay(cid, "A passagem foi aberta por "..getPlayerName(cid).."! Peguem a recompensa no bau, depressa!", TALKTYPE_ORANGE_1) doPlayerSendCancel(cid, "A passagem ira fechar em " ..config.tempoFechar.. " minuto!") addEvent(function() adicionar_parede(config) end, config.tempoFechar * 60 * 1000) doRemoveItem(item.uid, 1) end return true end Em seguida, crie outro arquivo no mesmo local com o nome de bauSAO.lua e cole o código dentro: --[[ Script - Lordzetros Tibiaking - Lordzetros ]] local mti = { [1] = {nome = 'Demon', pos = {x=955, y=935, z=6}}, -- [numero] = {nome = 'Nome Monstro', pos = 'POSICAO QUE IRÁ RESPAWNAR O MONSTRO'} [2] = {nome = 'Demon', pos = {x=955, y=936, z=6}}, [3] = {nome = 'Demon', pos = {x=955, y=937, z=6}}, [4] = {nome = 'Demon', pos = {x=955, y=938, z=6}}, [5] = {nome = 'Demon', pos = {x=955, y=939, z=6}}, [6] = {nome = 'Demon', pos = {x=955, y=940, z=6}}, [7] = {nome = 'Demon', pos = {x=964, y=935, z=6}}, [8] = {nome = 'Demon', pos = {x=964, y=936, z=6}}, [9] = {nome = 'Demon', pos = {x=964, y=937, z=6}}, [10] = {nome = 'Demon', pos = {x=964, y=938, z=6}}, [11] = {nome = 'Demon', pos = {x=964, y=939, z=6}}, [12] = {nome = 'Demon', pos = {x=964, y=940, z=6}}, [13] = {nome = 'Loki', pos = {x=959, y=940, z=6}}, } local config = { unique = 17458, -- uniqueID que vai colocar no BAÚ no seu EDITOR DE MAPA! parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- ID da parede |||| POSIÇÃO que ela irá ser criada strPassagem = {storage = 22338, tempo = 1}, -- Storage que vai controlar o tempo de intervalo para a quest ||||| tempo em MINUTOS de intervalo para os players fazer a quest novamente } function adicionar_parede(conf) local parede = getThingFromPos(conf.parede.pos).itemid ~= conf.parede.id if (parede) then return doCreateItem(conf.parede.id, 1, conf.parede.pos) and doSendMagicEffect(conf.parede.pos, 11) end return true end function onUse(cid, item, fromPos, item2, toPos) if (item.uid == config.unique) then if (getGlobalStorageValue(config.strPassagem.storage) >= os.time()) then return doCreatureSay(cid, 'Precisa esperar ' .. config.strPassagem.tempo .. ' minuto para fazer a quest!', TALKTYPE_ORANGE_1) end doCreatureSay(cid, "Argh!! Sala com armadilha.", TALKTYPE_ORANGE_1) adicionar_parede(config) for _, cf in pairs(mti) do doSummonCreature(cf.nome, cf.pos) end setGlobalStorageValue(config.strPassagem.storage, os.time() + config.strPassagem.tempo * 60) end return true end Adicione as seguintes linhas de código em data/actions/actions.xml <action uniqueid="17458" event="script" value="bauSAO.lua"/> <action itemid="IDdaKEY" event="script" value="keySAO.lua" /> 2° - Agora em data/creaturescripts/scripts Crie um arquivo chamado tpSAO.lua e cole o código dentro: --[[ Script - Lordzetros Tibiaking - Lordzetros ]] local config = { SupEsquerdo = {x=953, y=930, z=6}, -- posicao do canto SUPERIOR ESQUERDO da área que ficará a quest InfDireito = {x=966, y=941, z=6}, -- posicao do canto INFERIOR DIREITO da área que ficará a quest chefe = "Loki", -- Nome do BOSS, responsável por abrir passagem e liberar a recompensa no baú parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- id da parede ||||| posicao dela posPremio = {x = 1263, y = 1128, z = 7}, -- posicao para area de recompensa quando os players matarem o boss msgSucesso = "Parabéns por passarem do desafio! Agora permitirei pegar algumas recompensas como reconhecimento de um otimo guerreiros que es!" -- Mensagem quando os players conseguirem matar o boss da sala } function getAllPlayersInArea(fromPosition, toPosition) local players = {} for _, pid in ipairs(getPlayersOnline()) do local f = {x = fromPosition.x, y = fromPosition.y, z = fromPosition.z} local t = {x = toPosition.x, y = toPosition.y, z = toPosition.z} local min = (fromPosition.z > toPosition.z and toPosition.z or fromPosition.z) for index = 0, math.abs(toPosition.z - fromPosition.z) do f.z = min + index t.z = min + index if (isInRange(getPlayerPosition(pid), f, t)) then table.insert(players, pid) end end end return players end function remover_parede(conf) local parede = getTileItemById(conf.parede.pos, conf.parede.id) if (parede) then doRemoveItem(parede.uid, 1) doSendMagicEffect(conf.parede.pos, 10) end return true end function adicionar_parede(conf) local parede = getThingFromPos(conf.parede.pos).itemid ~= conf.parede.id if (parede) then return doCreateItem(conf.parede.id, 1, conf.parede.pos) and doSendMagicEffect(conf.parede.pos, 11) end return true end function onDeath(cid) local boss = getCreatureName(cid) == config.chefe if boss then doCreatureSay(cid, config.msgSucesso, TALKTYPE_ORANGE_1) doSendMagicEffect(getCreaturePosition(cid), 49) addEvent(function() local players = getAllPlayersInArea(config.SupEsquerdo, config.InfDireito) for _, jogador in ipairs(players) do doTeleportThing(jogador, config.posPremio) doSendMagicEffect(getPlayerPosition(jogador), 11) end end, 7000) end return true end Adicione a seguinte linha de código em data/creaturescripts/creaturescripts.xml <event type="death" name="tpSao" script="tpSAO.lua"/> Em data/creaturescripts/scripts/login.lua adicione esta linha de código abaixo do último registerCreatureEvent 3° - Por fim, agora escolhe um monstro que será o chefe responsável por permitir que os jogadores saiam do local e que leve-os até a sala de recompensa após o derrotarem. Escolheu? Show, agora vá até o diretório dele em data/monster/pastaDoSeumonstro/arquivoDoSeuMonstro.xml e adicione essas linhas de códigos abaixo de alguma tag, no meu caso, utilizei abaixo da tag flags <script> <event name="tpSao"/> </script> Segue foto para melhor entendimento: * Explicação da configuração * Bom, apesar de está TUDO COMENTADO e AJUSTÁVEL, acho importante dá algumas explicações: 1 - Configurou tudo nas pastas corretamente, colocou todas linhas de códigos necessárias e explicadas? Beleza, você tá quase lá. 2 - Coloque em um baú no seu editor de mapa um UNIQUEID que será responsável por identificar que aquele BAÚ é da quest, segue imagem: Aconselho não modificar o valor, pois é muito improvável que já esteja sendo utilizado em seu servidor. 3 - Agora entrando na parte dos scripts: No arquivo keySAO.lua localizado em data/actions/scripts/ local config = { parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- ID da parede |||| POSIÇÃO que ela irá ser criada strPassagem = {storage = 22338, tempo = 1}, -- Storage que vai controlar o tempo de intervalo para a quest ||||| tempo em MINUTOS de intervalo para os players fazer a quest novamente tempoFechar = 1, -- MINUTOS para a passagem fechar, caso não entrem APÓS abrirem a passagem } Configure o id da parede que impedirá a passagem dos players e o jogador utilizará a chave nela para passar! Não esqueça de configurar a posição dela também, deixe a mesma que você colocou no mapa. Configure o storage que será responsável por permitir ou não jogadores fazerem a quest em X minutos. Configure o tempo que o player terá para passar para dentro da sala antes que a passagem se feche, no script tá 1 minuto. No arquivo bauSAO.lua localizado em data/actions/scripts/ local mti = { [1] = {nome = 'Demon', pos = {x=955, y=935, z=6}}, -- [numero] = {nome = 'Nome Monstro', pos = 'POSICAO QUE IRÁ RESPAWNAR O MONSTRO'} [2] = {nome = 'Demon', pos = {x=955, y=936, z=6}}, [3] = {nome = 'Demon', pos = {x=955, y=937, z=6}}, [4] = {nome = 'Demon', pos = {x=955, y=938, z=6}}, [5] = {nome = 'Demon', pos = {x=955, y=939, z=6}}, [6] = {nome = 'Demon', pos = {x=955, y=940, z=6}}, [7] = {nome = 'Demon', pos = {x=964, y=935, z=6}}, [8] = {nome = 'Demon', pos = {x=964, y=936, z=6}}, [9] = {nome = 'Demon', pos = {x=964, y=937, z=6}}, [10] = {nome = 'Demon', pos = {x=964, y=938, z=6}}, [11] = {nome = 'Demon', pos = {x=964, y=939, z=6}}, [12] = {nome = 'Demon', pos = {x=964, y=940, z=6}}, [13] = {nome = 'Loki', pos = {x=959, y=940, z=6}}, } local config = { unique = 17458, -- uniqueID que vai colocar no BAÚ no seu EDITOR DE MAPA! parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- ID da parede |||| POSIÇÃO que ela irá ser criada strPassagem = {storage = 22338, tempo = 1}, -- Storage que vai controlar o tempo de intervalo para a quest ||||| tempo em MINUTOS de intervalo para os players fazer a quest novamente } Configure os nomes e posições que os monstros irão respawnar, e repare que deixei apenas 1 diferenciado chamado 'Loki', pois foi o monstro que escolhi como CHEFE Configure o uniqueID que será utilizado no baú, recomendo não mexer nessa parte Configure novamente o ID da parede que irá bloquear a passagem e a mesma posição (use a mesma coisa da configuração anterior) Configure novamente o storage e tempo que permitirá os jogadores fazerem a quest em X minutos (use a mesma coisa da configuração anterior) No arquivo tpSAO.lua em data/creaturescripts/scripts/ local config = { SupEsquerdo = {x=953, y=930, z=6}, -- posicao do canto SUPERIOR ESQUERDO da área que ficará a quest InfDireito = {x=966, y=941, z=6}, -- posicao do canto INFERIOR DIREITO da área que ficará a quest chefe = "Loki", -- Nome do BOSS, responsável por abrir passagem e liberar a recompensa no baú parede = {id = 9784, pos = {x = 959, y = 941, z = 6, stackpos = 1}}, -- id da parede ||||| posicao dela posPremio = {x = 1263, y = 1128, z = 7}, -- posicao para area de recompensa quando os players matarem o boss msgSucesso = "Parabéns por passarem do desafio! Agora permitirei pegar algumas recompensas como reconhecimento de um otimo guerreiros que es!" -- Mensagem quando os players conseguirem matar o boss da sala } Configure o canto superior esquerdo e inferior direito, é de EXTREMA importância isso, pois será responsável por verificar os jogadores na sala da quest e teleportá-los, segue imagem: Coloque as posições corretamente de cada canto. Configure o nome do chefe que você escolheu para completar a quest, o monstro diferenciado que falamos lá em cima, certo? Configure novamente o ID da parede que irá bloquear a passagem e a mesma posição (use a mesma coisa da configuração anterior) Configure a posição do prêmio, isto é, a posição que o player será teleportado quando matar o CHEFE, a posição da SALA DE RECOMPENSAS ou seja lá o que queira fazer após os jogadores matarem o chefe. Configure a mensagem, caso queira, de quando os jogadores matarem o CHEFE da sala. * Observações finais e anexos para download * Digo logo que é um script simples, porém bastante trabalhoso de ser configurado, visto que faz-se necessário a instalação de alguns arquivos, mas não deixa de ser simples! A ideia que tive foi quando estava lembrando do anime, e como estou voltando aos poucos com Tibia (aprendendo bastante), tive a ideia de fazer isso, pois como gostava bastante de jogar em Baiak e modos semelhantes, isso daqui pode ser bastante útil. Ah! E deixe-me alertá-lo, é um sistema simples que não está 100% como eu desejava, portanto, quando tiver tempo estarei atualizando e deixando com mínimo de incoerência possível no funcionamento dele. POR FAVOR, faça o trabalho de ler as configurações do script, está tudo organizadinho para que você configure lá e deixe da maneira mais prática possível. Acredito que isso é tudo, abraços, \o. Download dos arquivos zipados: Arquivos - Quest Baú SAO - Lordzetros.zip Scan do arquivo: https://www.virustotal.com/pt/file/10e6bf2be0ccb33838a75198e5f822c1c8888f4c8652dcfc5235f87260a7582a/analysis/1540133843/
  18. @Vilden Sem problemas, se não resolver, volte no tópico que tentaremos lhe ajudar.
  19. @Yamborghini Show de bola, valeu!
  20. @Vilden Colega, li sim, você chegou a ver o código que mandei? if type(getPlayerStorageValue(cid, STORAGE)) ~= "number" then setPlayerStorageValue(cid, STORAGE, 0) end Aqui vai verificar, antes de qualquer coisa, se o que tem no STORAGE (que vc vai configurar), é diferente de número, caso sim, vai setá-lo como valor 0. Agora me diz, não era isso que você queria?
  21. Opa, vou dá uma olhada, daqui a pouco edito aqui. Edit1: @Yamborghini Testado e funcionando: Em data/globalevents/scripts/criaPorta.lua function onTime() local day = {"Tuesday", "Thursday","Saturday", "Wednesday"} -- em ingles / ADICIONEI Wednesday para teste, porque hoje é quarta-feira, caso n queira, só remover local itemid = 3456 -- item que sera criado local pos = {x=94, y=126, z=7, stackpos= 1} -- pos onde será criado local min = 1 -- minutos de duração do evento local newitem = 2768 -- Id do novo item if isInArray(day, os.date("%A")) then if (getTileItemById(pos, newitem).uid > 0) then doRemoveItem(getTileThingByPos(pos).uid, newitem) end addEvent(doCreateItem, 100, itemid, 1, pos) doBroadcastMessage("O evento abriu", 25) addEvent(function() doRemoveItem(getTileThingByPos(pos).uid, itemid) doBroadcastMessage("O evento encerrou", 25) doCreateItem(newitem,1,pos) end, min * 60 * 1000) end return true end Em data/globalevents/globalevents.xml <globalevent name="CriaPorta" time="13:29" event="script" value="criaPorta.lua"/> Repare que tem time="13:29", isso é o horário que irá funcionar o evento. OBS.: Se quiser que ele rode em DETERMINADOS INTERVALOS, como por exemplo, de 30 em 30 min, precisa ser feito algumas outras modificações. Vai no globalevents.xml, deixe: <globalevent name="criaPorta" interval="1800000" event="script" value="criaPorta.lua"/> E em criaPorta.lua, deixe: function onThink(interval, lastExecution) local day = {"Tuesday", "Thursday","Saturday", "Wednesday"} -- em ingles local itemid = 3456 -- item que sera criado local pos = {x=94, y=126, z=7, stackpos= 1} -- pos onde será criado local min = 1 -- minutos de duração do evento local newitem = 2768 -- Id do novo item if isInArray(day, os.date("%A")) then if (getTileItemById(pos, newitem).uid > 0) then doRemoveItem(getTileThingByPos(pos).uid, newitem) end addEvent(doCreateItem, 1000, itemid, 1, pos) doBroadcastMessage("O evento abriu", 25) addEvent(function() doRemoveItem(getTileThingByPos(pos).uid, itemid) doBroadcastMessage("O evento encerrou", 25) doCreateItem(newitem,1,pos) end, min * 60 * 1000) end return true end Aí funcionará de 30 em 30 min. Valeu!
  22. Tu postou apenas os erros, colega... mas tudo bem.
  23. Cara, tudo isso é erro de sintaxe, instanciamento de objetos usados no código e arquivos informados inexistentes... Quando acontecer erros e que se referem a um código ou terceiros, poste no seu tópico o código que irá ajuda no processo de suporte.
  24. Como o colega já falou ali em cima, 3 cores já tá mais que o suficiente para a quantidade estimada, provavelmente rodará liso para geral. Respondendo sua pergunta: Sim, esta configuração está ótima.
  25. lordzetros respondeu ao post em um tópico de Daniel90 em Suporte Tibia OTServer
    Posta o script para a gente te ajudar.

Informação Importante

Confirmação de Termo