Histórico de Curtidas
-
Zanrix recebeu reputação de jcfd.joao em [RPG] Curse Tibia Server - Procurando por feedbackAgora que o projeto está mais completo, vou começar a explicar melhor os sistemas de tempo em tempo aqui!
Sobre o sistema de atributos
Mudança na tela
Antes:
Agora:
Os atributos são:
- Strength (Força): Aumenta todo dano físico causado, tanto em ataques básicos como em magias.
- Vitality (Vitalidade): Aumenta seus pontos de vida.
- Intelligence (Inteligência): Aumenta todo dano mágico causado.
- Energy (Energia): Aumenta seus pontos de mana.
- Agility (Agilidade): Aumenta sua velocidade de ataque.
- Luck (Sorte): Aumenta a chance de causar um ataque crítico.
Algumas interações com o mapa exigem certo atributo. Alguns exemplos:
- Existem algumas alavancas emperradas que exigem diversos níveis diferentes de força.
- Existem livros escondidos que requerem inteligência para ler.
- Ao procurar itens em objetos aleatórios do mapa, a sorte melhora a chance de achar algum item.
Alguns itens precisam de atributos para serem equipados. Além disso, algumas magias também precisam de atributos para aprender/usar. Alguns exemplos:
- Knight Armor exige que você tenha 15 pontos em Strength (Força) para a equipar.
- Magic Shield (Utamo Vita) exige que você tenha 20 pontos em Energy (Energia) para poder conjura-la.
-
Zanrix recebeu reputação de jcfd.joao em [RPG] Curse Tibia Server - Procurando por feedbackFala aí pessoal!
Curse Tibia Server é um servidor para amantes de RPG, de rates baixas e onde a exploração é muito bem recompensada.
Além disso, temos como foco fazer patchs frequentemente, sempre adicionando novos conteúdos e proporcionando novos desafios aos jogadores.
Informações Gerais
- A experiência é stagiada em torno de 5x até 1.5x.
- O mapa é uma mistura de áreas e modificações próprias + global + partes de servidores que nunca foram lançados.
- O servidor tem base na versão 9.6, mas adicionamos algumas criaturas e alguns itens de versões posteriores.
Principais Mudanças
- Em vez de poções recuperarem vida/mana instantaneamente, elas recuperam ao longo de 3 segundos.
- O server tem Training Monk, porém, você só pode ficar neles durante 1 hora, para regenerar esse tempo é preciso caçar bastante.
- Andar de barco é uma tarefa um pouco mais complexa, com um custo bastante elevado e algumas passagens precisando de uma pequena quest ou alguns itens.
Vocações
- 5 novas classes, além das existentes terem sido reformuladas.
- Uma promoção a mais para cada classe.
- Todas classes ganharam várias magias novas.
- Uma das classes novas é o famoso Necromancer:
Atributos
Atributos são pontos escolhidos pelo jogador para melhorar o desempenho de seus personagens e desenvolvê-los de uma maneira pessoal. Eles também servem para poder conjurar algumas magias e fazer algumas interações com o mapa (Puxar uma alavanca emperrada exige força, por exemplo).
Árvore de Skills
A árvore de skills te permite distribuir pontos para liberar novas magias e personificar ainda mais seu personagem o deixando mais versátil de acordo com sua preferência.
- Cada classe tem dois caminhos na árvore, cada um deles é voltado para uma jogabilidade diferente.
- Quase todas magias são liberadas pela árvore.
Prévia do Necromancer:
Caminho da morte
Caminho de summons
Sistema de Raridade
Todos equipamentos tem uma pequena chance de serem dropados como um item raro, épico ou lendário.
- Quanto melhor a qualidade do item, melhor será os bônus, porém será mais difícil de encontrá-lo.
Existem ainda alguns outros sistemas e as telas são mais um protótipo, mas acho que da pra ter uma ideia do objetivo do servidor.
O que acham? Jogariam?
Gostaria muito de ouvir críticas e opiniões! (:
-
Zanrix recebeu reputação de Doidodepeda em [Creatureevents] Reflect ALL<event type="statschange" name="reflect" event="script" value="reflect.lua"/> login.lua:
registerCreatureEvent(cid, "reflect")
reflect.lua:
local config = { chance = 100, -- chance de sair o reflect (1 = 1% de chance) valor_reflect = 15, -- % do dano do reflect storage = 45455 -- storage do reflect } function onStatsChange(cid, attacker, type, combat, value) if getPlayerStorageValue(cid, config.storage) > 0 then if type == STATSCHANGE_HEALTHLOSS and isPlayer(cid) and isCreature(attacker) then if math.random (1,100) <= config.chance then doCreatureSay(cid, "Reflect!", TALKTYPE_MONSTER_SAY) local danoReflect = value * (config.valor_reflect/100) doTargetCombatHealth(cid, attacker, COMBAT_PHYSICALDAMAGE, -danoReflect, -danoReflect, CONST_ME_EXPLOSIONAREA) return true end end end return true end
-
Zanrix recebeu reputação de draco6 em Talkaction para remover Storage X e YAssim?
talkactions.xml
<talkaction words="!desbugarexp" event="script" value="desbugarExp.lua"/> talkactions/scripts/desbugarExp.lua
function onSay(cid, words, param) setPlayerStorageValue(cid, 45650, 0) setPlayerStorageValue(cid, 45651, 0) setPlayerStorageValue(cid, 45652, 0) end
-
Zanrix recebeu reputação de LeoTK em (Resolvido)Critical! and Dodge!
-
Zanrix recebeu reputação de LeoTK em [Creatureevents] Reflect ALL<event type="statschange" name="reflect" event="script" value="reflect.lua"/> login.lua:
registerCreatureEvent(cid, "reflect")
reflect.lua:
local config = { chance = 100, -- chance de sair o reflect (1 = 1% de chance) valor_reflect = 15, -- % do dano do reflect storage = 45455 -- storage do reflect } function onStatsChange(cid, attacker, type, combat, value) if getPlayerStorageValue(cid, config.storage) > 0 then if type == STATSCHANGE_HEALTHLOSS and isPlayer(cid) and isCreature(attacker) then if math.random (1,100) <= config.chance then doCreatureSay(cid, "Reflect!", TALKTYPE_MONSTER_SAY) local danoReflect = value * (config.valor_reflect/100) doTargetCombatHealth(cid, attacker, COMBAT_PHYSICALDAMAGE, -danoReflect, -danoReflect, CONST_ME_EXPLOSIONAREA) return true end end end return true end
-
Zanrix deu reputação a ryel em Projeto RPG Server (Forgotten Realms) TFS 1.2Esse é o projeto "Forgotten Realms Chronicles"
Esse projeto de Alternative Tibia Server tem a proposta aproximar a variedade do RPG tradicional – Pathfinder RPG e Dungeons and Dragons - e outras mecânicas de jogos como: Albion Online, Tree of Saviors, Elder Scroll: Skyrim, entre outros, no cenário do Tibia. Introduzindo novos elementos para a ampliação de objetivos e que cative os jogadores a sempre interagir com o universo e mercado do jogo. Elementos esses: Variedades de classes e diversas jogabilidades, amplo sistema de craft e recursos, Aprimoramento e encantamento de equipamentos, implementação de profissões, sistema de reinos, control points e hierarquia, bônus diferente para outfits e montarias, valorização das casas, sistema de sleeping, e adicionando, editando e retirando monstros e itens para se encaixar melhor em um universo de RPG fantasia.
28+ Vocações para buildar
12 Profissões para se especializar
50+ Recursos para construir itens
120+ Armas para aprimorar
50+ Tipos de Armaduras e escudos
10+ Níveis de Aprimoramentos
50+ Encantamentos diferentes
Novos Itens, Monstros, Magias...
Attributes System
Craft System
Kingdoms System
Imbuiment System
Mining, Chopping, Skinning
Pontos de Atributos
Os atributos irão definir os pontos de vida, mana, defesa, dano e outros aspectos e skills do personagem. Dando uma liberdade maior para cada jogador montar a build do jeito que desejar.
Força, Destreza, Constituição, Inteligencia, Sabedoria e Carisma
Class Tree
As classes serão a base dos atributos iniciais, proficiência em armas, armaduras e magias.
Classes Iniciais:
Essas são as quatro classes bases do jogo que irão ditar o estilo e a progressão das promoções.
Scoundrel Warrior Acolyte Magician
Classes Básicas:
As classes básicas dividem em dois estilos de jogos distintos da classe inicial, onde define a proposta do personagem.
Mercenary Swashbucker Figher Scout Occultist Theologian Wizard Sorcerer
Classes Avançadas:
As Avançadas servem para variar e misturar estilos de jogos, ou manter o mesmo estilo da classe anterior.
Rogue Ranger Fencer Knight Adept Crusader Battle Mage Shooter Diabolist Cleric Arcanist
Classes Especializadas:
É a progressão final do personagem e onde especializará por completo o estilo de jogo, equipamentos e magias usadas. Suas classes anteriores têm bastante influência sobre a final.
Assassin Shadowdancer Slayer Duelist Barbarian Guardian Crossbowman Arcane Archer EldritchKnight DemoniacApostle Hell Knight Paladin Inquisitor Mystic Theurge Warlock
Profissões
As profissões servem para definir a facilidade de cada personagem tem para treinar uma skill e a capacidade de poder trabalhar certos materiais.
Bowyer Laborer Runemaster Weaponsmith Blacksmith Trapper Alchemist Carpenter Armorsmith Cooker Enchanter Tailor
Todos que quiserem contribuir com ideias, sprites, scripts ou até sugestão para histórias e quests, são muito bem vindos!
O foco do projeto é implementar a diversidade e a interação do mundo
de RPG e fazer com que os jogadores se prendam
aos milhares de objetivos e possibilidades.
Preciso de uma equipe para concretizar perfeitamente esse projeto. Scripters, Programadores, Mappers, Sprinters, Designers, Roteiristas, Moderadores, Tutores e Idealizadores. Todos são bem vindos para fazer parte de Forgotten
Contato
Discord: ryel #7226
Whatsapp: 13 98875-2287
-
Zanrix deu reputação a nandoedp em [RPG] Curse Tibia Server - Procurando por feedbackCara, isso é espetacular.
Infelizmente o pessoal BR só curte o tibia bostão knight,paladin,druid e sorc. A mesma coisa de sempre.
É como o cara la em cima disse, poe o Jogo em Inglês e pros gringo jogarem tbm.
Eu vou acompanhar de perto esse seu projeto ai, me interessei bastante e espero joga-lo em breve.
-
Zanrix recebeu reputação de amora murder em [RPG] Curse Tibia Server - Procurando por feedbackValeu brother! Vai rolar sim, no momento estamos fazendo testes internamente, corrigindo bugs mais gritantes e desenvolvendo as partes principais que ainda faltam. Depois disso, iremos fazer um Closed Beta (esperamos que ainda esse ano) onde iremos convidar/sortear algumas pessoas e analisar como tudo se sai para então fazer um Open Beta.
-
Zanrix deu reputação a amora murder em [RPG] Curse Tibia Server - Procurando por feedbackAchei a ideia sensacional. Você estaria literalmente propondo um jeito diferente de jogar Tibia!
Vai rolar algum teste server?
-
Zanrix recebeu reputação de amora murder em [RPG] Curse Tibia Server - Procurando por feedbackFala aí pessoal!
Curse Tibia Server é um servidor para amantes de RPG, de rates baixas e onde a exploração é muito bem recompensada.
Além disso, temos como foco fazer patchs frequentemente, sempre adicionando novos conteúdos e proporcionando novos desafios aos jogadores.
Informações Gerais
- A experiência é stagiada em torno de 5x até 1.5x.
- O mapa é uma mistura de áreas e modificações próprias + global + partes de servidores que nunca foram lançados.
- O servidor tem base na versão 9.6, mas adicionamos algumas criaturas e alguns itens de versões posteriores.
Principais Mudanças
- Em vez de poções recuperarem vida/mana instantaneamente, elas recuperam ao longo de 3 segundos.
- O server tem Training Monk, porém, você só pode ficar neles durante 1 hora, para regenerar esse tempo é preciso caçar bastante.
- Andar de barco é uma tarefa um pouco mais complexa, com um custo bastante elevado e algumas passagens precisando de uma pequena quest ou alguns itens.
Vocações
- 5 novas classes, além das existentes terem sido reformuladas.
- Uma promoção a mais para cada classe.
- Todas classes ganharam várias magias novas.
- Uma das classes novas é o famoso Necromancer:
Atributos
Atributos são pontos escolhidos pelo jogador para melhorar o desempenho de seus personagens e desenvolvê-los de uma maneira pessoal. Eles também servem para poder conjurar algumas magias e fazer algumas interações com o mapa (Puxar uma alavanca emperrada exige força, por exemplo).
Árvore de Skills
A árvore de skills te permite distribuir pontos para liberar novas magias e personificar ainda mais seu personagem o deixando mais versátil de acordo com sua preferência.
- Cada classe tem dois caminhos na árvore, cada um deles é voltado para uma jogabilidade diferente.
- Quase todas magias são liberadas pela árvore.
Prévia do Necromancer:
Caminho da morte
Caminho de summons
Sistema de Raridade
Todos equipamentos tem uma pequena chance de serem dropados como um item raro, épico ou lendário.
- Quanto melhor a qualidade do item, melhor será os bônus, porém será mais difícil de encontrá-lo.
Existem ainda alguns outros sistemas e as telas são mais um protótipo, mas acho que da pra ter uma ideia do objetivo do servidor.
O que acham? Jogariam?
Gostaria muito de ouvir críticas e opiniões! (:
-
Zanrix recebeu reputação de BangxD em (Resolvido)Critical! and Dodge!
-
Zanrix deu reputação a KotZletY em Vamos melhorar o TK!Hello membros do Tibia King, vocês puderam notar que recentemente tivemos algumas melhorias em nossa comunidade, como por exemplo o nossa nova seção de Classificados, um novo visual para o site, entre outras novidades que vocês podem conferir clicando aqui. Aah! Vale lembrar também que está acontecendo neste momento o evento "Mapper King" organizado pelo membro @Daniel, participe e acompanhe clicando aqui.
Neste tópico gostaria de abordar um assunto importantíssimo a respeito de nossa comunidade: a participação vocês na comunidade! Ou seja, alguns dos membros da comunidade ajudam aos outros, postam conteúdos e contribuem bastante. assim como eu, mas como todos, também tenho minhas ocupações, projetos pessoais e o mais importante, vida pessoal.
Por isso digo que é essencial o agradecimento e a retribuição de todos que usufruem de tudo que nossa comunidade oferece, mas eu vejo que muitos esquecem de fazer isso, agem como "leechers", apenas sugam o conteúdo e até mesmo pedem ajuda em nossas seções de suporte, é ajudado pelos membros do fórum e nem se quer agradecem pela atenção.
O reconhecimento é muito gratificante, as vezes receber um simples "obrigado" já é muita coisa, isso incentiva que as pessoas continuarem ajudando, publicando e criando novos conteúdos para todos. Tente também contribuir com a comunidade, as vezes alguém está com um problema que você já resolveu alguma vez ou até mesmo você já sabe a solução, não custa nada ajudar e compartilhar o seu conhecimento!
Então é isso galera, vamos tentar sempre evoluir e fazer com que essa comunidade maravilhosa seja ainda melhor. Nós da equipe do TK continuaremos fazendo nossa parte, ajudando sempre da melhor maneira. Vale lembrar que estamos com novas ideias para valorizar ainda mais os membros que são realmente ativos, portanto aguardem que novidades surgirão!
E você? O que acha, concorda ou descorda? Deixe sua opinião aqui e vamos juntos em busca de uma comunidade melhor!
-
Zanrix deu reputação a Cat em [RPG] Curse Tibia Server - Procurando por feedbackesse sistema é muito bom
com os icones ficou melhor ainda, parabéns!
-
Zanrix recebeu reputação de Cat em [RPG] Curse Tibia Server - Procurando por feedbackAgora que o projeto está mais completo, vou começar a explicar melhor os sistemas de tempo em tempo aqui!
Sobre o sistema de atributos
Mudança na tela
Antes:
Agora:
Os atributos são:
- Strength (Força): Aumenta todo dano físico causado, tanto em ataques básicos como em magias.
- Vitality (Vitalidade): Aumenta seus pontos de vida.
- Intelligence (Inteligência): Aumenta todo dano mágico causado.
- Energy (Energia): Aumenta seus pontos de mana.
- Agility (Agilidade): Aumenta sua velocidade de ataque.
- Luck (Sorte): Aumenta a chance de causar um ataque crítico.
Algumas interações com o mapa exigem certo atributo. Alguns exemplos:
- Existem algumas alavancas emperradas que exigem diversos níveis diferentes de força.
- Existem livros escondidos que requerem inteligência para ler.
- Ao procurar itens em objetos aleatórios do mapa, a sorte melhora a chance de achar algum item.
Alguns itens precisam de atributos para serem equipados. Além disso, algumas magias também precisam de atributos para aprender/usar. Alguns exemplos:
- Knight Armor exige que você tenha 15 pontos em Strength (Força) para a equipar.
- Magic Shield (Utamo Vita) exige que você tenha 20 pontos em Energy (Energia) para poder conjura-la.
-
Zanrix recebeu reputação de Lhaisfar em (Resolvido)[PEDIDO] Ajudar a entender um scriptPosso estar errado, mas aí acredito que tem que usar globalevent em vez de raid. O Vodkart tem um mod que funciona desse jeito que você falou, no tópico tem explicações e tudo mais.
-
Zanrix recebeu reputação de amora murder em (Resolvido)[PEDIDO] Ajudar a entender um script<raid name="Demodras" file="bosses/Demodras.xml" interval2="1440" margin="120" chance="15" /> file = Nesse arquivo vai ter as informações sobre a raid, quais criaturas serão sumonadas, em quais coordenadas cada uma delas vai aparecer.
margin = O tempo em minutos, depois de aberto o servidor, que vai acontecer a raid.
interval2 = O tempo em minutos, que depois de ter acontecido a raid pela primeira vez, vai acontecer novamente.
chance = Um outro parâmetro que você pode colocar, pra caso não queira que aconteça sempre a cada intervalo de tempo, ou seja, a cada 1440 minutos vai ter 15% de chance de acontecer.
-
Zanrix recebeu reputação de Dedo em Como saber se e nullEm lua a palavra chave é nil
getPlayerStorageValue(cid, 9999) == nil Edit:
@Dedo
Se você quiser que um valor do banco tenha um valor padrão em vez de null, é só usar a palavra default
Por exemplo:
ALTER TABLE players ADD COLUMN idade INT DEFAULT 0; Vai criar uma coluna no banco que em vez de null, ela recebe 0 por padrão.
-
Zanrix recebeu reputação de Vodkart em (Resolvido)Piso x diaUnique id do piso no map editor: 8321
movements.xml
<movevent event="StepIn" uniqueid="8321" script="pisosemanal.lua" /> pisosemanal.lua
local config = { uniqueid = 8321, dia_semana = "sunday", mensagem = "Você só pode passar aqui domingo" } local function pushBack(cid, position, fromPosition) doTeleportThing(cid, fromPosition, false) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, config.mensagem) end function onStepIn(cid, item, position, fromPosition) if item.uid == config.uniqueid then local day = string.lower(os.date("%A")) if day ~= config.dia_semana then pushBack(cid, position, fromPosition) end end return true end
-
Zanrix recebeu reputação de Mazarati em (Resolvido)Piso x diaUnique id do piso no map editor: 8321
movements.xml
<movevent event="StepIn" uniqueid="8321" script="pisosemanal.lua" /> pisosemanal.lua
local config = { uniqueid = 8321, dia_semana = "sunday", mensagem = "Você só pode passar aqui domingo" } local function pushBack(cid, position, fromPosition) doTeleportThing(cid, fromPosition, false) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, config.mensagem) end function onStepIn(cid, item, position, fromPosition) if item.uid == config.uniqueid then local day = string.lower(os.date("%A")) if day ~= config.dia_semana then pushBack(cid, position, fromPosition) end end return true end
-
Zanrix recebeu reputação de Wakon em Como saber se e nullEm lua a palavra chave é nil
getPlayerStorageValue(cid, 9999) == nil Edit:
@Dedo
Se você quiser que um valor do banco tenha um valor padrão em vez de null, é só usar a palavra default
Por exemplo:
ALTER TABLE players ADD COLUMN idade INT DEFAULT 0; Vai criar uma coluna no banco que em vez de null, ela recebe 0 por padrão.
-
Zanrix recebeu reputação de Dwarfer em Dúvidas sobre libQuando você cria a função na lib, a função fica de forma global e você já pode acessar ela em qualquer outro arquivo apenas usando o nome
Exemplo: Criei na lib a função:
function isPlayerKnight(cid) if (getPlayerVocation(cid) == 4) then return true end return false end Agora quero usar a função em um script que verifica se o jogador é knight ao der "use" em um item, e se for, ele recebe uma mensagem:
function onUse(cid, item, fromPosition, itemEx, toPosition) if (isPlayerKnight(cid)) then doCreatureSay(cid, "Sou um Knight!") end end
Praticidade, fácil manutenção. Imagine que você fez uma função qualquer, mas encontrou um pequeno erro nela, e aí? Recompilar seu servidor por causa de uma letra? Usando lua você apenas corrige o arquivo, salva, e não precisa nem reiniciar o servidor, um simples /reload no script já carrega ele in-game!
Não entendi muito bem essa pergunta... Você quis dizer quando se deve usar uma função direto em C++ ou usar em lua/lib? Se for isso, funções em C++ devem ser usadas como algo mais interno, por exemplo, se você quiser usar a famosa "addon 3" que falta no tibia, você precisa fazer alterações no código C++. Agora o que vai acontecer quando você "equipar" a addon 3? Quer que ganhe uma vida adicional, velocidade, mana... Parece mais flexível, certo? Nesses casos se recomenda usar lua.
Espero ter sido claro e ajudado em algo!
-
Zanrix recebeu reputação de Kamiz em Dúvidas sobre libQuando você cria a função na lib, a função fica de forma global e você já pode acessar ela em qualquer outro arquivo apenas usando o nome
Exemplo: Criei na lib a função:
function isPlayerKnight(cid) if (getPlayerVocation(cid) == 4) then return true end return false end Agora quero usar a função em um script que verifica se o jogador é knight ao der "use" em um item, e se for, ele recebe uma mensagem:
function onUse(cid, item, fromPosition, itemEx, toPosition) if (isPlayerKnight(cid)) then doCreatureSay(cid, "Sou um Knight!") end end
Praticidade, fácil manutenção. Imagine que você fez uma função qualquer, mas encontrou um pequeno erro nela, e aí? Recompilar seu servidor por causa de uma letra? Usando lua você apenas corrige o arquivo, salva, e não precisa nem reiniciar o servidor, um simples /reload no script já carrega ele in-game!
Não entendi muito bem essa pergunta... Você quis dizer quando se deve usar uma função direto em C++ ou usar em lua/lib? Se for isso, funções em C++ devem ser usadas como algo mais interno, por exemplo, se você quiser usar a famosa "addon 3" que falta no tibia, você precisa fazer alterações no código C++. Agora o que vai acontecer quando você "equipar" a addon 3? Quer que ganhe uma vida adicional, velocidade, mana... Parece mais flexível, certo? Nesses casos se recomenda usar lua.
Espero ter sido claro e ajudado em algo!
-
Zanrix recebeu reputação de Vodkart em NPC Falante<?xml version="1.0" encoding="UTF-8"?> <npc name="Towncryer" script="Towncryer.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="131" head="95" body="86" legs="10" feet="114" addons="1"/> </npc>
local YELL = { "Fala 1", "Fala 2" } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) yell_delay = 20 frequency = 25 function onThink() if ((os.time() - yell_delay) >= frequency) then yell_delay = os.time() doCreatureSay(getNpcCid(), YELL[math.random(#YELL)], 1) end npcHandler:onThink() end
-
Zanrix recebeu reputação de KotZletY em NPC Falante<?xml version="1.0" encoding="UTF-8"?> <npc name="Towncryer" script="Towncryer.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="131" head="95" body="86" legs="10" feet="114" addons="1"/> </npc>
local YELL = { "Fala 1", "Fala 2" } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) yell_delay = 20 frequency = 25 function onThink() if ((os.time() - yell_delay) >= frequency) then yell_delay = os.time() doCreatureSay(getNpcCid(), YELL[math.random(#YELL)], 1) end npcHandler:onThink() end