Search the Community
Showing results for tags 'addevent'.
-
Opá fala pessoal blz? Preciso de ajuda com esse script, na parte da function botMagic(params) tentei colocar essa linha abaixo, mas não funcionou! Até que na parte da function botEat(cid) a checagem acima funcionou! mas quando coloquei na function botMagic(params) não apareceu erros no console quando desloguei o character, mas também o script meio que parou de castar a magia. Queria uma ajuda! para resolver esse erro, sem a checagem fica rolando varios erros no console do otserver sem parar.
-
Usando addEvent O uso do addEvent tem inúmeras utilidades e pode ser complicado para algumas pessoas, inclusive era para mim quando eu estava começando a aprender LUA. Para que serve o addEvent? Para "chamar" uma função após um periodo de tempo, ou seja, executar uma função após um tempo estipulado. O addEvent tem como parâmetros: callback, delay e ... addEvent(callback, delay, ...) Onde callback é a função que será chamada, delay é o tempo (em milissegundos) até que se chame essa função e ... são os parâmetros que a função chamada utiliza. Exemplo: addEvent(doBroadcastMessage, 1000, "Bom dia", 23) Aqui, após 1 segundo (1000 ms), a função doBroadcastMessage(message, type) será executada com os parâmetros message = "Bom dia" e type = 23. O addEvent pode ser usado de duas maneiras: Chamando uma função existente ou criando uma nova função. Para chamar uma função existente, basta usar como acima, para usá-lo para criar uma nova função, usa-se assim, por exemplo: addEvent(function() if isCreature(cid) then doPlayerAddItem(cid, 2160, 10) doPlayerSendTextMessage(cid, 25, "Voce ganhou 10k.") end end, 1000) Assim é basicamente a mesma coisa, mas pude colocar várias funções dentro de um único addEvent, e mantive o delay 1000 (1 segundo). Obs: Precisei usar 2 ends, um para fechar function() e outro para fechar o if. Atenção! Além disso, existe uma outra diferença entre as duas formas de uso, vou tentar explicar da melhor maneira possível: Quando usamos o addEvent com uma função já existente (1o exemplo), as informações usadas serão as geradas no momento em que o evento foi chamado, por exemplo: function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then doPlayerSendTextMessage(cid, 25, "Uma pedra sera criada na sua posiçao dentro de 2 segundos.") addEvent(doCreateItem, 2000, 1308, 1, getThingPos(cid)) end return true end Se usarmos assim, a pedra irá ser criada na posição onde o jogador se encontrava no momento em que "deu use" e não onde ele etará 2 segundos depois. Se você quiser que a pedra seja criada na nova posição do jogador (pos de 2 segundos depois), você deve fazer uma nova checagem, criando uma função: function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then doPlayerSendTextMessage(cid, 25, "Uma pedra sera criada na sua posiçao dentro de 2 segundos.") addEvent(function() if isCreature(cid) then doCreateItem(1308, 1, getThingPos(cid)) end end, 2000) end return true end Atenção novamente: A checagem if isCreature(cid) que utilizei, é muito importante para um addEvent que envolva criaturas. Se você executasse o addEvent sem a checagem e o player logasse ou morresse antes desses 2 segundos se passarem, daria um erro na distro e interromperia o resto do script. Espero ter sido claro, qualquer dúvida, podem postar.
-
Pessoal, eu queria saber como que posso fazer um addEvent com essa função aqui: doRemoveItem(getTileItemById(poss, 1316).uid) Essa função remove um item criado em tal position (poss). Só que eu queria que essa função só fizesse depois de 1 segundo após executar a spell. Qualquer dúvida sobre o meu post só dizer.
-
PS: Meu teclado nao tem ascentos nem cedilha, nao reparem na grafia. Eae , vou postar um script que eu fiz. Eu utilizava ele no meu antigo servidor, o Mell World, pois ja que o server esta fexado eu nao queria que esse script fosse esquecido. Ele faz o seguinte: Quando usado, ele oferece 3 opcoes: Ser teleportado para uma area exclusiva de hunt, onde se pode permanecer por no maximo 1 hora (configuravel), uma vez por dia Sumonar um monstro diferente (no meu ot eu tinha criado a Alma Penada, que dropava itens exclusivos) Simplesmente perder 500 vida. Ele so pode ser usado a cada 15 minutos e, dependendo de qual opcao for sorteada, faz o player falar algo. Script (actions/scripts/necronomicon.lua) local hunt = {x=596, y=1037, z=4} local options = { [1] = {name = "teleportar"}, [2] = {name = "sefrodo"}, [3] = {name = "summon"} } function onUse(cid, item, fromPosition, itemEx, toPosition) if isCreature(cid) then local fazer = options[math.random(1, #options)] if getPlayerStorageValue(cid, 12391) < os.time () then setPlayerStorageValue(cid, 12391, os.time () + 15*60) if fazer.name == "teleportar" then if getPlayerStorageValue(cid, 12481) < os.time () then setPlayerStorageValue(cid, 12481, os.time () + 60*60*24) addEvent(voltarprotemplo, 1000*60*60, cid) doTeleportThing(cid, hunt) setPlayerStorageValue(cid, 24739, 1) doSendMagicEffect(hunt, CONST_ME_TELEPORT) doCreatureSay(cid,"Aha! Consegui decifrar o caminho secreto!",TALKTYPE_ORANGE_1) else doPlayerSendCancel(cid,"Voce nao pode entrar na are 64 mais de uma vez por dia") end elseif fazer.name == "sefrodo" then doCreatureAddHealth(cid, -500) doCreatureSay(cid,"Cada coisa que esta escrita nesse livro... Nao consigo suportar!",TALKTYPE_ORANGE_1) elseif fazer.name == "summon" then doCreateMonster("Alma Penada",getCreaturePosition(cid)) doCreatureSay(cid,"Nao era bem isso que eu queria, mas...",TALKTYPE_ORANGE_1) end else doPlayerSendCancel(cid, "Você so consegue ler a cada 15 minutos! Espere.") end function voltarprotemplo(cid, pos) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) setPlayerStorageValue(cid, 24739, -1) doPlayerSendTextMessage(cid, 22, "Voce ja atingiu seu limite de permanencia na Area 64, voce foi teleportado para o templo") end end return true end
- 9 replies
-
- necronomicon
- livro
- (and 7 more)
-
dúvida [Ajuda] Regeneração Por Segundo Baseado Em Porcentagem Da Vida.
digomaciel posted a question in Scripts
Gostaria de criar uma magia que regenera-se 3% da vida do personagem por segundo. A magia so pode ser usada por Knights e Elite Knights. Duração de 30 segundos e a cada segundo piscar azul nele (CONST_ME_MAGIC_BLUE) Grato.