Postado Agosto 1, 2015 9 anos Bom galera, criei esse "sisteminha" esses dias, pois estava brincando com strings, tentando aprender mais sobre elas, e então em meio de alguns testes, me veio a ideia de criar um sistema onde ao equipar determinado item, um efeito sairá da posição de onde o personagem estiver com o primeiro nome do item a cada x segundos (animated text), ex.: equipei a zaoan sword, id 11301. Quando o efeito sair, sairá o nome "zaoan" da posição atual do meu personagem a cada 3 segundos, enquanto o item estiver equipado. Notem que o sistema usa animated text, logo versões de tfs mais novas não rodarão esse sistema. Notem também que como eu estava sem criatividade, eu usei um storagevalue em moveevents para quando o player equipar o item e para quando ele desequipar. Daria pra fazer sem o storage? Sim. Mas, como eu estava com preguiça, deixei do jeito que tava mesmo e pronto. Outro ponto a destacar: Fiz o sistema apenas para efeitos de itens equipados NAS MAOS, ou seja, se você adicionar um id de uma legs no sistema, ele não rodará o efeito, a não ser que você ponha a legs na mao, o que seria estranho, hahaha. Como disse, criei o sistema para testar algumas coisas, mas como ficou legalzinho eu resolvi postar. hahaha enfim, Eis o sistema: Em moveevents.xml adicione a seguinte tag: Mostrar conteúdo oculto <movevent type="Equip" itemid="ID" event="script" value="itemseffect.lua"> </movevent> <movevent type="DeEquip" itemid="ID" event="script" value="itemseffect.lua"/> Onde está em escrito ID você põe os ids das weapons/shields que você quer o efeito. para acrescentar mais de um id, basta usar ; entre os ids, ex.: itemid="11301;2186;x;y;z" e.e' Agora crie um arquivo .lua chamado itemseffect.lua (em moveevents!) se ele tiver algo dentro, apague e ponha isso: Mostrar conteúdo oculto function onEquip(cid, item, slot) setPlayerStorageValue(cid, 164333, 1) --storage value qualquer, que você não vá usar para mais nada e.e' return true end function onDeEquip(cid, item, slot) setPlayerStorageValue(cid, 164333, 0) --deverá ser o mesmo storage do onEquip, caso contrário vai dar ruim. return true end Feito isso, vá para a pasta creaturescripts. em creaturescripts.xml adicione a seguinte tag Mostrar conteúdo oculto <event type="think" name="ItemEffect" event="script" value="itemeffect.lua"/> Agora em login.lua, antes do ultimo return true, acrescente a seguinte linha: Mostrar conteúdo oculto registerCreatureEvent(cid, "ItemEffect") Crie então um arquivo .lua e renomei-o para itemeffect.lua Apague tudo que tiver dentro dele (se tiver algo) e ponha o seguinte: Mostrar conteúdo oculto local config = { tempo = 3 -- tempo, em segundos que o efeito demorará para sair. } local weapons = { [11301] = TEXTCOLOR_LIGHTBLUE, [2186] = TEXTCOLOR_RED } --[ID da arma/escudo] = Tipo de efeito do animated text. Não esqueça de acrescentar as vírgulas no final de cada --linha antes da ultima, para evitar bugs de vetor. Apenas siga o exemplo acima e vai estar tudo certo. hahahah function ItemEffect(cid) if isPlayer(cid) then for k, v in pairs(weapons) do local teste1 = getPlayerSlotItem(cid, CONST_SLOT_LEFT) local teste2 = getPlayerSlotItem(cid, CONST_SLOT_RIGHT) if teste1.itemid == k or teste2.itemid == k then local name = string.explode(getItemNameById(k), " ") doSendAnimatedText(getCreaturePosition(cid), name[1], v) end end end end function onThink(cid, interval) if getPlayerStorageValue(cid, 164333) ~= 1 then return true end if (getPlayerStorageValue(cid, 164334) - os.time()) <= 0 then --164334 é para guardar o intervalo de tempo. ItemEffect(cid) setPlayerStorageValue(cid, 164334, config.tempo + os.time()) else return true end return TRUE end Quando eu estiver com menos preguiça eu dou uma "upada" no sistema, aperfeiçoando e tals. Espero que tenham gostado! Para servidores Baiak, ou custom high exp esse sistema é bacaninha. hahaha. Sintam-se livres para modificarem-no! E se o fizerem, postem aqui para sabermos o que fizeram de novo, xD Enfim, é isso. hahaha Vlw flw. Editado Agosto 1, 2015 9 anos por SoulSarti (veja o histórico de edições)
Postado Agosto 2, 2015 9 anos Em nome da comunidade do TK, muito obrigado pela contribuição! Seu tópico de conteúdo foi aprovado e será movido para a seção adequada. Você ganhou 1 REP+! Eu usaria uns addEvents no onEquip, ao invés de usar um onThink, pouparia memória. Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado). Tópicos: Mostrar conteúdo oculto [FAQ] BBCODE [LIB] Constant [RME] Administrando bordas. [TALK] Broadcast Editável. [TALK] Sugest. [TALK] Checkpoint. [MOVE] Pântano pegajoso. [ACTION] Piggy Bank. (Cassino). [GLOBAL] Uptime Ad. [C0DE] Consertando 'Invalid Password' [PROGRAM] Quest Maker
Postado Março 6, 2016 9 anos Estou adicionando algumas estatuas com alguns scripts nelas e sao em muitas cidades.. Queria saber se tem alguma maneira de adaptar este script para a estatua fica falando: Estatua ItemID=0123 Ficar saindo letras igual um Teleport que em globalevents sai: "Monsters" a cada segundo...
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.