Jump to content
Close

MatCollier

Member
  • Content Count

    42
  • Joined

  • Last visited

About MatCollier

  • Rank
    Craftsman

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. @Lyu Boa tarde. Testei aqui e deu certo, porém se o player colocar senha no cast ele continua ganhando exp extra... Gostaria que ele ganhasse exp apenas para o cast sem senha, tem como?
  2. @luanluciano93 Quando fiz o teste com esse teu script, imprimiu certinho o nome 1x só. Mas quando eu rodo no meu, ele imprime o nome 2x... O que pode estar errado? Alterei o script pra que se a pessoa tiver varias tasks simultâneas, consiga fazer elas (com o original, se ele tivesse uma task, o primeiro if, ele contaria pra ela mas não pras outras). Tu consegue encontrar onde ta o erro nesse script que faz com que ele conte os nomes 2x? function onKill(creature, target) local player = creature:getPlayer() if not player then return true end if not target:isMonster() or target:getMaster() then return true end local damageMap = target:getDamageMap() for attackerId, damage in pairs(damageMap) do local uid = Player(attackerId) if uid then if uid:getTask() or uid:getDailyTask() or uid:getSpecialTask() then if uid:getTask() then local task = uid:getTask() if table.contains(task.monsters_list, target:getName():lower()) and uid:getStorageValue(task.storage) < task.amount then uid:setStorageValue(task.storage, uid:getStorageValue(task.storage) + 1) uid:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, '[Task Comum System] You killed ['..uid:getStorageValue(task.storage)..'/'..task.amount..'] '..target:getName()..'.') end end if uid:getDailyTask() then local taskdaily = uid:getDailyTask() if table.contains(taskdaily.monsters_list, target:getName():lower()) and uid:getStorageValue(taskdaily.storage) < taskdaily.amount then uid:setStorageValue(taskdaily.storage, uid:getStorageValue(taskdaily.storage) + 1) uid:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, '[Daily Task System] You killed ['..uid:getStorageValue(taskdaily.storage)..'/'..taskdaily.amount..'] '..target:getName()..'.') end end if uid:getSpecialTask() then local task = uid:getSpecialTask() if table.contains(task.monsters_list, target:getName():lower()) and uid:getStorageValue(task.storage) < task.amount then uid:setStorageValue(task.storage, uid:getStorageValue(task.storage) + 1) uid:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, '[Task Especial System] You killed ['..uid:getStorageValue(task.storage)..'/'..task.amount..'] '..target:getName()..'.') end end end end end return true end function onLogin(cid) registerCreatureEvent(cid, "taskSystem") return true end Só matei um... mas ele faz o if todo duas vezes.
  3. Boa noite pessoal do TK. Estou ajeitando meu sistema de tasks, e fui colocar pra todos os players que causam dano na criatura receberem a storage de contagem. No entanto, está contando 2 vezes pra cada criatura abatida (Exemplo: matei 1 rohirim, ele conta direto 1/80 e 2/80, mandando até duas mensagens, basicamente ta rodando o script 2x dentro do for, acho). Gostaria de corrigir isso pra que só fizesse a contagem 1x pra cada criatura abatida. Segue o código:
  4. E ai pessoal do TK! Então, recentemente fiz um script que "reseta as city quests" do meu servidor. Numa das partes (um global event), ele pega todas as portas de determinadas posições, verifica se estão abertas (id 5734) e transforma ela em fechadas (id 5733). Mas tem um pequeno problema... Caso a porta tenha sido aberta antes (com a chave de action id igual ao da porta), ela fica destrancada. Ou seja, se alguém ja usou a chave na porta, após o script fechar ela, ela continua destrancada, o player não precisa de chave pra abrir novamente, pode só ir lá e clicar nela. Gostaria que no script, ao transformar a porta aberta em fechada, ele também setasse ela como "locked". Mas não sei como fazer isso. Segue o código:
  5. Então, como eu falei no título, é basicamente isto: A VIP no Cliente 11 está ficando bugada. Como? No meu server você pode jogar com cliente 10.00 modificado ou 11.48. No cliente 10 as coisas funcionam normalmente. Porém no cliente 11 a VIP não "gasta". O cara simplesmente fica com premium account infinita. Nem sequer sei em que parte da source ou dos arquivos lua pode estar o código responsável por isso. Se alguém puder ajudar... Agradeço!
  6. Estou com um pequeno problema na minha função cleanMap. Basicamente, ela remove apenas itens comuns do chão. Não remove corpos de monstros, nem itens com Action ID. Preciso modificar ela de forma que remova itens com Action ID e corpos quando for executada. Agradeço se alguém puder ajudar. Segue a função na source: Já descobri! No item.h eu posso modificar para que itens com Action ID sejam "removíveis" durante o cleanMap.
  7. Então, eu não entendo muito, mas vou tentar ajudar: Em globalevents eu coloco o seguinte evento: E crio o arquivo save.lua com o seguinte código: "O que ele vai fazer é uma contagem regressiva de 5 minutos, e ao chegar em 0 ele vai ativar a função shutdown, que na minha source (TFS 1.2) é isso aqui: Essa parte que eu te falei, vai DESLIGAR o server na hora determinada lá em global events. Aí pro server iniciar novamente, você precisa de um ot restarter. No meu caso, como o meu ot está em linux, eu criei o seguinte arquivo no bloco de notas e salvei como ".sh" (no lugar de tfs você coloca o nome do seu executável que abre a distro): Ele vai reabrir a distro sempre que ela fechar, que é quando o server dá shutdown no global event. Caso tu esteja usando windows pode baixar um aplicativo ot restarter na net q ele faz isso por você. Espero ter ajudado. De novo, não entendo muito disso, apenas mandei o que tenho aqui.
  8. Venho tentando já há algum tempo encontrar a parte dos scripts de prey que determinam o tempo para o "Free Reroll". Por algum motivo, no meu, os 2 primeiro slots (o free e o vip) possuem um tempo de recarga de 20 horas para o free reroll, e o terceiro (que se compra na store), possui um tempo de recarga de 420 horas. Gostaria de saber onde mudar isso para que o slot comprado na store seja melhor, e não pior, que os outros. Além disso, quando o jogador dá o reroll no meu server, ele perde o bônus que ele tinha conseguido antes (se ele estava com um loot 10/10, e queria apenas mudar o monstro, quando ele der reroll o bonus vai mudar), mas ouvi dizer que isso funciona de forma diferente no global (o bonus se mantêm), e gostaria de saber onde posso mudar isso. Se ajudar, segue o preysystem que eu tenho em modules: Segue imagem do tempo para os free rerolls:
  9. Meu deus do ceu mano. Inicialmente não deu certo, mas fiz um globalevent separado pra isso e funcionou!!! E mais, ele mantêm o unique ID do item, então realmente só vou precisar colocar as posições. MUITO, MUITO, MUITO obrigado mesmo!!!
  10. Então, testei com o que tu mandou, e nada aconteceu. Não deu nenhume erro na distro mas a alavanca n foi modificada. Preciso do UID porque pra entrar na quest é necessário que a alavanca tenha aquele UID (pro script que está em actions funcionar). E a ideia é ele verificar se o ID é 1946 (alavanca já usada) e transformar em 1945 (alavanca não usada), o contrário do que tá ai. Por isso troquei.
  11. Cara, como sempre você salvando a minha vida! É exatamente isso que preciso, pegar a alavanca pela posição. Só tenho que alterar no teu código uma coisa, que é pra ele pegar a alavanca de ID 1946 e transformar pra ID 1945. Vou testar agora mesmo e te digo se funcionou. Outra coisa, preciso que a alavanca tenha um unique ID. Então se eu colocar alavanca:transform(1200, 1945) Sendo 1200 o unique ID que quero q ela tenha, funciona?
  12. A ideia é a seguinte: Preciso que, por exemplo, a alavanca que possui o unique id 1200 seja verificada com um global event onTime. Se ela tiver o id 1946 (alavanca para direita), o global event vai transformar ela em id 1945 (alavanca para a esquerda), com o mesmo uid. Se for possivel criar um array com todas as unique ids que quero verificadas, e o script ir checando todas elas e fazendo as que estão como 1946 virarem 1945, seria perfeito. Segue o que consegui fazer até agora: Obs: O script também pega players com a storage 333333 == -1 (players que estão dentro da quest quando o global event é ativado) e enviam para a posição do templo. Mas essa parte já está funcionando ok. Só preciso mesmo corrigir a parte de transformar as alavancas com aqueles uids que estão no array. local function resetquests() local players = Game.getPlayers() if #players == 0 then return true end for _, player in ipairs(players) do if player:getStorageValue(333333) == -1 then local destination = {x=1070, y=1037, z=1} player:teleportTo(destination) return true end end local alavancas = { 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1250, 1251, 1252, 1253, 1254, 1255, 1256 } for _, item.uid in ipairs(alavancas) do if item.id == 1946 then doTransformItem(item.uid,1945) return true end end cleanMap() broadcastMessage("City quests resetadas e chao limpo.", MESSAGE_STATUS_DEFAULT) end function onTime() broadcastMessage("City quests serao resetadas e chao sera limpo em 1 minuto. Cuidado para nao perder itens.", MESSAGE_STATUS_WARNING) addEvent(resetquests, 1 * 60 * 1000) return true end

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...