Ir para conteúdo

Night Wolf

Herói
  • Total de itens

    341
  • Registro em

  • Última visita

  • Dias Ganhos

    18

Tudo que Night Wolf postou

  1. Acho difícil amigo, q eu lembre não dá pra botar monstros ou npcs dentro da house... Vc viu esse sistema em algum servidor?
  2. qnd for assim fala ql erro q dá.. edit: tinha escrito errado pq tava com sono ;/
  3. Usa esse script em actions/scripts e em actions.xml vc coloca <action itemid="id da machete 1;id da machete2" event="script" value="nomequevcbotounoarquivoacima.lua"/>
  4. ^os bronze não gosta pq não sabe escapar, os prata gosta porque os outros não sabem escapar.
  5. @@Skulls, usou a spinRotate da new lib?
  6. sim, e vc tem que criar a condition venom tb.. da mesma forma q vc cria em spells
  7. Fala galera, vim compartilhar com vcs um dos sistemas que eu fiz baseado no jogo Bird Hunt e que foi imbutido em alguns servidores famosos, sendo o Korelin um deles. Obs: Testado em TFS 0.3.6 mas deve funcionar em TFS 0.4 sem problema aqui tem uma pequena imagem demonstrando o sistema sendo utilizado: Bom, antes de tudo eu vou ensinar vocês a criar um mapa apropriado pois isso é 90% das dificuldades que os players enfrentam quando tentam adicionar o sistema. Inicialmente vc vai precisar criar uma area no seu mapa editor +- parecida com a que eu fiz na imagem abaixo: Feito isso vc deverá colocar uniqueid 16480 na porta e actionid 14874 em todos os lugares que o player pode percorrer (da placa pra \/ todos os quadrados verdes deverão conter esse actionid) Colocado os ids, vc deverá fazer a sala à prova de bugs, para isso você terá que seguir essas especificações: Note que em verde são os lugares que vc deverá colocar protect zone e em roxo os locais onde vc deve colocar no logout zone. Agora perceba que nas posições onde o player irá andar, você vai colocar tanto no logout zone como protect zone, isso pra evitar ele de matar o bixo com spells e pra evitar que ele deslogue durante o mini game. Essa contagem de sqms eu vou explicar mais tarde na configuração do script, mas tenham ela em mente. Agora vamos aos scripts: Comece criando em data/lib um arquivo chamado 045- Bird Hunt Lib.lua e colocando isso dentro dele: Feito isso vá em data/actions/scripts e adicione um arquivo chamado seagul.lua que deverá conter: e adicione em actions.xml: <action uniqueid="16480" event="script" value="seagul.lua"/> Agora vá em data/movements/scripts e crie um arquivo chamado seagulmove.lua com o seguinte conteúdo: E adicione as tags em movements.xml: <movevent type="StepIn" actionid="14872" event="script" value="seagulmove.lua"/> <movevent type="StepOut" actionid="14872" event="script" value="seagulmove.lua"/> Agora, pra deixar nosso sistema mais real e difícil, altere a velocidade do seagul de 200 pra 300 na pasta data/monsters/Birds/seagull.xml eu alterei tb a quantidade de vida q ele começa a fugir pra vida atual dele e fiz outras alterações pra tornar mais difícil, mas isso é com vcs. A maioria das coisas tá bem compreensível, com exceção das duas primeiras linhas de actions: rangecima = {x = -8, y = -4}, -- distancia em x e y da topos (ate a pos de cima) rangebaixo = {x = 0, y = 4}, -- distancia em x e y da topos (ate a pos de baixo) é aqui que entra aquela imagem, vc vai considerar a porta (o ponto cinza) como sendo nossa origem, ou seja, o ponto (0,0) rangecima é a distancia que eu tenho que percorrer em x e y pra chegar até a ponta de cima < e rangebaixo é a distancia que eu tenho que percorrer em x e y pra chegar até a ponta de baixo. Se vcs mudarem o tamanho da sala, fiquem ligados nisso. Obs: algumas pessoas fazem a sala virada pra direita também, nesse caso vc mantém a actions (pode usar inclusive o mesmo arquivo), só tem que alterar o movements pois lá vc define se é direita ou esquerda. É isso, espero que tenham gostado. O jogo é só por diversão mas vc pode alterar a função de atirar pra ganhar dinheiro por cada acerto ou então criar um npc que vc te dá X premio dependendo do seu recorde.. podendo esse premio inclusive ser uma key pra uma quest. Usem a imaginação e espero que aproveitem esse sistema. Abraços do Lobo.
  8. vc pode usar no lugar do cid pra fazer a função para quem te ataca, só lembra de dar if isCreature(attacker) pra checar se o attacker não é um uid de fire field por exemplo, porque esse callback é executado toda vez que o player tem vida/mana mudados. Aí é recomendável vc tb verificar o type pra garantir que seu código só vai executar em casos específicos (qnd perder vida ou mana, por ex)
  9. quanto mais atual, mais recursos.. porém TFS 1.2 é MUITO diferente de 0.36... eu uso aqui em casa dois servidores (0.36 e 0.4)
  10. eu nunca tentei mas acredito q funcione posso tentar pra vc..
  11. eu tinha explicado ali: variantToNumber(var) representa o target. ----- o var da spell pode me retornar o uid do target através dessa função variantToNumber(var) Tem algumas discussões sobre isso aqui no xt, só procurar o tópico do @@Skulls
  12. olha, vc não pode usar cid até ele ser declarado e ele só é declarado depois de function onCastSpell.. então nada disso daqui vai funcionar: local slot1 = getPlayerSlotItem(getCreatureTarget(cid), 5) local slot2 = getPlayerSlotItem(getCreatureTarget(cid), 6) isCreature/isPlayer/isMonster verificam se determinado uid é criatura/player/monstro.. o parâmetro é o uid. Pra quem executa os callbacks, nós chamamos o uid de cid, mas pode ser muito bem isPlayer(getCreatureTarget(cid).uid) -- verifica se assim funciona.. vc só tem que colocar target = "1" na tag do spells.xml variantToNumber(var) representa o target. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -2, -1, -3, -2) local escudo = 2520 local storage = 199901 function onCastSpell(cid, var) if isPlayer(variantToNumber(var)) then local slot1 = getPlayerSlotItem(variantToNumber(var), 5) local slot2 = getPlayerSlotItem(variantToNumber(var), 6) if slot1 or slot2 == escudo then setPlayerStorageValue(variantToNumber(var), storage, 1) doSendAnimatedText(getCreaturePosition(cid), 'Charged', 180) end addEvent(function() if isCreature(cid) then setPlayerStorageValue(variantToNumber(var), storage, 0) doSendAnimatedText(getCreaturePosition(cid), 'Charge lost', 180) end end,4000) end return doCombat(cid, combat, var) end
  13. de cara o erro q se enxerga é vc utilizando a função isPlayer(uid) sem o parâmetro.. vc quer verificar se o inimigo é um player? outra coisa.. setPlayerStorageValue(#inimigo, storage, 1) isso daqui não existe pois #inimigo retorna o numero de elementos numa tabela.
  14. essas luzes são do cliente mas acredito que dá pra colocar uma luz por cima mais forte (escura) pra ofuscar um pouco o brilho dessas coisas: doSetCreatureLight(cid, lightLevel, lightColor, time) e outra: pra tocha acho q dá pra checar todos os slots do player e verificar se ele tem tocha e se tiver desativá-la, mas se tiver na bp não iria funcionar. Mas pra que versão é isso?
  15. Night Wolf

    Algumas passivas

    o começo é dificil e a gente erra em lugares que nunca imaginou que poderia errar, o importante é não desistir porque no próximo vc vai estar 10x mais atento em algo que outrora você havia errado. Com o tempo vc tá 10x mais atento pra qlqer coisa que vc poderia errar e o script sai perfeito ou quase perfeito mesmo antes de vc testar uma única vez. A prática leva à perfeição, da mesma forma que não cometemos erros de português por usarmos muito.. assim como português (ou inglês para alguns), Lua é uma linguagem.
  16. Night Wolf

    Algumas passivas

    @@Darkraus, doSendAnimatedText(getCreaturePosition(cid), Blocked, 180). esse blocked deveria estar entre aspas pra denotar uma string, dessa forma q vc colocou ele está tentando soltar uma variável como mensagem.. Isso só daria certo se nessa variável estivesse escrito uma string. local Blocked = "Você bloqueou" doSendAnimatedText(getCreaturePosition(cid), Blocked, 180). Sempre ande com um arquivo contendo as funções e os parâmetros que ela utiliza pra facilitar a sua vida. Pra TFS 0.3.6 eu uso essa daqui: não contém todas mas quebra um galho. e em data/lib/constant.lua vc acha um arquivo contendo várias informações sobre seu servidor, uma delas explica o motivo de vc ter colocado, 180 na função. TEXTCOLOR_RED = 180 Isso implica que 180 é o numero associado à cor vermelha.
  17. esse script é pra tfs 1.0, o seu é 1.0?
  18. Night Wolf

    Algumas passivas

    getPlayerStorageValue -- pegar o valor de determinado storage. O valor padrão pra todos os storages é -1, mas por convenção use sempre <= 0 e >= 1
  19. Night Wolf

    Algumas passivas

    hmm, foi quase mas faltou algumas pequenas coisas: local storage1 = xxx function onStatsChange(cid, attacker, type, combat, value) -- isso aqui é padrão, oque vc pode é brincar com os parametros aqui embaixo: if type == STATSCHANGE_HEALTHLOSS or (type == STATSCHANGE_MANALOSS and getCreatureCondition(cid, CONDITION_MANASHIELD)) then if getPlayerStorageValue(cid, storage) >= 1 then -- a função estava sendo usada de forma errada local chance = math.random(1,100) -- a chance tem que ficar dentro do callback pra ser calculada toda vez que ele for executado, do contrário -- ela só vai ser calculada uma vez e ser aquele valor pra sempre até o servidor resetar if chance <= 10 then return false end end end return true end --- forma alternativa: local storage1 = xxx function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS or (type == STATSCHANGE_MANALOSS and getCreatureCondition(cid, CONDITION_MANASHIELD)) then if getPlayerStorageValue(cid, storage) >= 1 and math.random(1,100) <= 10 then return false end end return true end
  20. Night Wolf

    Algumas passivas

    @@Darkraus statschange quando é executada: -Quando um player ou monstro ou ganha ou perde vida/mana de um combat ou uma função (combats não são só os das spells, mas também weapons/fist/melee... vale lembrar também que monstros não possuem mana) Parametros: - cid = creatureid do player ou monstro q ganha/perde vida/mana - attacker = creatureid do player ou monstro que causou a mudança na health/mana - type = tipo da mudança, sendo ela:Ganho de vida, perca de vida, ganho de mana e perca de mana vide tabela abaixo: STATSCHANGE_HEALTHGAIN = 0 STATSCHANGE_HEALTHLOSS = 1 STATSCHANGE_MANAGAIN = 2 STATSCHANGE_MANALOSS = 3 - combat = o tipo de combat que causou a alteração, sendo esses tipos: COMBAT_NONE = 0 COMBAT_PHYSICALDAMAGE = 1 COMBAT_ENERGYDAMAGE = 2 COMBAT_EARTHDAMAGE = 4 COMBAT_POISONDAMAGE = 4 COMBAT_FIREDAMAGE = 8 COMBAT_UNDEFINEDDAMAGE = 16 COMBAT_LIFEDRAIN = 32 COMBAT_MANADRAIN = 64 COMBAT_HEALING = 128 COMBAT_DROWNDAMAGE = 256 COMBAT_ICEDAMAGE = 512 COMBAT_HOLYDAMAGE = 1024 COMBAT_DEATHDAMAGE = 2048 - value = valor da mudança quando está return false: - O player ou o monstro não ganharão/perderão vida/mana no combat. Pode ser usado pra fazer ele ficar imortal por um certo período ou não ser capaz de tomar dano de certos players/creaturas Registra creature event: - Sim type="statschange" function onStatsChange(cid, attacker, type, combat, value)
  21. Night Wolf

    Algumas passivas

    porque vc não tenta fazer e eu vou te ajudando pra direcionar rumo à resposta correta? acho q vc aprenderia mais desse modo...
  22. Night Wolf

    Algumas passivas

    a primeira é um creaturescript onStatsChange, pra cada dano q ele receber vc checa se tem a storage que vc quer e faz um math.random(1, 100), se for <= 10 então retorna falso, do contrário retorna true. a segunda passiva ativaria ao ser atacado tb? pq se for a é a mesma coisa que a primeira só que ai eu verificaria três coisas: 1- vc checa se tem a storage1 que vc quer e faz um math.random(1, 100), se for <= 10 então muda o storage2 pra ser os.time() + 5 * 60 [5 MINUTOS] 2- checa se o storage2 - os.time() <= 0 e retorna true ou falso 3- na primeira checagem vc tem que checar se ela ja não está ativada. Pra não acabar re-ativando com ela já ativada.
  23. vc não colocou na forma que a gente falou...
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...