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. verifica se tem algum creaturescript pelo xml com a tag onAdvance ou algum nome que remeta à limite de skill. Verifica também em data/xml/vocations.xml porque dá pra configurar o shield por lá
  2. posta o script que a gente tenta te ajudar..
  3. isso funciona amigo, vc criou um novo group de id 7 <group id="7" name="Player" access="5"/> ele tem acesso 5 e não tem nenhuma flag (flags e customFlags) oque garante que ele é definitivamente um player, apenas com acesso de GOD. Se você quiser ter um char nessas condições é só editar no banco de dados o group do char que vc quer para 7; (faça isso com o char deslogado pra evitar bugs)
  4. tinha uma barra encerrando a primeira linha testa assim
  5. não faço idéia, oque dá pra fazer é remover o efeito dessas duas posições.. mas novamente, se os efeitos da ponta forem grandes eles ainda podem ser sobressaidos nos sqms restantes. O ideal seria editar no spr msmo, mas aqui é o suporte de scripting... duvido muito que alguém vá saber te ajudar quanto à isso
  6. isso daí é na configuração do dat e do spr pra cada efeito, não tem nada que dê pra eu fazer
  7. onde tá for i = 1, 60 do doSendMagicEffect(random(pos), eff, cid) end deixa assim: for i = 1, 60 do doSendMagicEffect(random(pos), eff, cid) doSendMagicEffect({x = pos.x + 2, y = pos.y - 1, z = pos.z}, 189, cid) doSendMagicEffect({x = pos.x - 2, y = pos.y - 1, z = pos.z}, 188, cid) end
  8. cara, esse n é o jeito certo de se fazer isso. Você tá verificando quantos oz o player tem de capacidade, independente de numero de pokebolas. Pra fazer isso que vc quer vc precisa ter a função onMoveItem compilada na sua source e fazer checagem por id (acredito que o id da pokebola cheia seja diferente da pokebola vazia, não?) daí vc só pega os tipos diferentes de pokebola que existem e executa essa função getPlayerItemCount(cid, itemid) pra cada um deles. Se a soma das counts for maior que a quantidade que ele pode carregar vc dá um return false no callback da onMoveItem.
  9. Night Wolf

    Vocation Por Tp

    usa o script acima só q coloca o actionid no teleport e bota um doTeleportThing(cid, {x = 160, y = 154, z = 7}) pra teleportar pra posição q vc queira
  10. Night Wolf

    Kamui me (NTO, 8.54)

    sim, o tempo e o cooldown são opcionais
  11. muito obrigado, eu ainda quero reformular algumas coisas no código que eu fui percebendo que estão repetitivas mas por enquanto to meio que sem tempo :~
  12. Night Wolf

    Swap Name

    amigo, até tentei fazer isso porém essa função na source só funciona para monstros. Não há nenhuma forma q eu conheça de fazer dois players terem o mesmo nome por spell.
  13. Galera, o importante num script desse estilo de teleportar ao clicar na porta tem que ser o mais abrangente possível pra agrupar todas as portas do servidor em qualquer id, desde que elas estejam na mesma posição. Não usem posições do player pra calcular o sqm q deve ser teleportado, usem os parametros do callback, um deles é a própria posição do item que vc clicou. Testa assim: function onUse(cid, item, frompos, item2, topos) local lvl = 200 if getPlayerLevel(cid) <= lvl then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.") return true end if frompos.x > topos.x then doTeleportThing(cid, {x=topos.x - 1, y=topos.y, z=topos.z}) elseif frompos.x < topos.x then doTeleportThing(cid, {x=topos.x + 1, y=topos.y, z=topos.z}) elseif frompos.y < topos.y then doTeleportThing(cid, {x=topos.x, y=topos.y + 1, z=topos.z}) elseif frompos.y > topos.y then doTeleportThing(cid, {x=topos.x, y=topos.y - 1, z=topos.z}) end return true end
  14. Night Wolf

    Kamui me (NTO, 8.54)

    era isso que eu tava falando.. local toPos = {x = 1596, y = 738, z = 7} local tempo = 3 local cooldown = 40 function onCastSpell(cid, var) if getPlayerStorageValue(cid, 2938) > os.time() then return doPlayerSendCancel(cid, "Aguarde "..getPlayerStorageValue(cid, 2938) - os.time().." segundos para usar esse jutsu novamente.") end local pos = getPlayerPosition(cid) doSendMagicEffect(pos, 20) setPlayerStorageValue(cid, 2938, os.time() + exhaust) setPlayerStorageValue(cid, 28101, pos.x) -- salva x setPlayerStorageValue(cid, 28102, pos.y) -- salva y setPlayerStorageValue(cid, 28103, pos.z) -- salva z doTeleportThing(cid, toPos, false) -- teleporta nova pos addEvent(function() if isCreature(cid) then doSendMagicEffect(pos, 20) doTeleportThing(cid, {x = getPlayerStorageValue(cid, 28101), y = getPlayerStorageValue(cid, 28102), z= getPlayerStorageValue(cid, 28103)}, false) end end, tempo * 1000) return true end
  15. acredito q os servers 8.6 global devem ter, em geral envolvem uma lib (data/lib/arena.lua), alguns movements, npc e algumas actions pra abrir os baús.
  16. vou fazer algo melhor do que simplesmente te dar a resposta, vou te ensinar como fazer isso pra qualquer spell que vc queira; Primeiramente vc tem que extrair as informações que você tem na sua spell, isso significa essas 3 coisinhas aqui (pro seu caso): TIPO DE DAMAGE:local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) EFEITO:setCombatParam(combat, COMBAT_PARAM_EFFECT, 30) AREA:arr = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0}, } local area = createCombatArea(arr) --------- COM ESSAS INFORMAÇÕES, VAMOS COMEÇAR NOSSO CÓDIGO ------ Agora vá em data/lib/constant.lua e vc primeiramente irá procurar uma tabela parecida com essa daqui: Se você olhar o último item dessa tabela podemos ver COMBAT_DEATHDAMAGE = 2048 agora olhando praquela primeira informação que nós temos "tipo de damage" iremos ver que esse COMBAT_DEATHDAMAGE também está presente: Certo, agora precisamos definir nosso efeito.. os efeitos ficam convenientemente no mesmo arquivo constant.lua, vimos ali no seu código que vc usa o efeito de número 30 Certo, a área iremos usar a mesma.. agora vamos ao chamado "CORE" do script, também conhecido como corpo ou escopo principal, vou utilizar um aqui que ja foi criado pensando em spells que utilizem skills/mana/vida para tirar dano: Certo, agora vamos por partes: Por enquanto tudo que sabemos é que o "EFEITO" é 30, o "TIPO DE DAMAGE" é o 2048 e a "AREA DA SPELL" é igual aquela área desenhada. Substituindo oque a gente sabe fica assim: Perceba que a única coisa que falta na nossa função são as fórmulas.. Você pode literalmente definir QUALQUER coisa como fórmula, se eu colocar apenas 50 ali no min e no max minha magia sempre vai tirar 50. Se eu colocar 50 no min e 100 no max ela sempre vai tirar algo entre esses dois números... mas nós não queremos que a magia hite um numero constante, nós queremos que ela dependa da skill da pessoa, do nível dela, do ml. Do contrário, ela ia ser extremamente podre pois não possui uma evolução junto com o player. "tá lobo, mas como vou saber que fórmula usar?" Essa é uma pergunta muito delicada, temos sempre que considerar os casos extremos, se uma magia pode ser usada no nv 10 por exemplo, e a formula dela é level * ml temos que checar os dois casos abaixo: - Caso 1 Player nivel 10, ml 1 irá arrancar 10 de life na magia.. parece justo - Caso 2 Player nivel 300, ml 90 irá arrancar 27.000 de life na magia.. não parece tão justo hahaha Existe uma dica que o próprio tibia nos dá de como montar fórmulas justas, que é usar constantes de proporcionalidade. "Meu deus, Lobo, que caralhas é isso?" bem, o nome é bem mais complicado do que a coisa em si. Finalizando as fórmulas, temos min = (150 + (skill /2)) e max = (200 + (3 * (skill/2))) Tá, mas como ensinar pro nosso script oque é "skill" e que ela representa o fist fighting? bem, é nessa hr que olhamos pra aquele pequeno espaço no script dizendo "SKILLS QUE SERÃO USADAS". Ali você deve criar uma variável skill que irá ler a skill do player, através da função getPlayerSkillLevel(cid, "código da skill") "Mas como eu sei o código da skill?", muito simples meu caro.. lembra que eu falei pra você ir em data/lib/constant? Esse documento tem todas as informações que você precisa pra fazer qualquer código, e é justamente nele que iremos procurar qual é o código da skill fist. Depois de uma rápida procura eu me deparei com esta tabela> e nela podemos ver que o código para a skill fist é 0. Declaro ali naquele espaço do script local fist = getPlayerSkillLevel(cid, 0) e a partir de agora no lugar de skill nas minhas fórmulas eu só escreverei fist e o server irá entender o que eu quero. O script final fica: Aquele factor que eu coloquei é uma coisinha (fator de correção de erro) que é sempre bom colocar pois nem sempre as formulas na prática tiram oque elas tiram na teoria, o dano varia de acordo com o combat que nós escolhemos e as vezes é bom adicionar esse factor para podermos ajustar a fórmula mais facilmente. Espero que não tenha preguiça de ler tudo, se você entender como isso funciona garanto que conseguirá fazer magias que se baseiam em somas de skills e criar fórmulas ultra realistas para magias não só baseadas em skills como baseadas em cap, mana, vida, velocidade e qualquer outra coisa que você conseguir pensar..
  17. sim.. me manda alguma magia que vc queira que eu coloque o dano dela baseada em fist que eu faço
  18. ter tem, mas teria que fazer a fórmula sem utilizar as predefinições da source, fazendo tudo manualmente via código.
  19. rapaz, isso daí tá tão bugado que eu recomendo que vc baixe outro script e substitua.. pq nao vai ter condições de arrumar.
  20. @@paulgrande obrigado, mas como esse seu algoritmo funciona? ele gera enquanto a musica toca ou vc definiu pra fazer a musica tocar a partir dele?
  21. pode crer, é que eu to no meio de uma partida de lol agora auheuha acabei fazendo direto pela ferramente de code daqui do fórum, desatenção minha..
  22. Night Wolf

    Kamui me (NTO, 8.54)

    o problema nesse caso é que quando vc chama o addEvent passando a pos dessa forma ele irá calcular a posição na hora que a função teleport for chamada, ou seja.. ele vai passar no pos ali a posição que vc está após ser teleportado a {x = 1596, y = 738, z = 7}. O ideal nesses casos é separar 3 storages pra salvar a posição em x, y, z e poder puxar essas posições na hora de chamar a posição a teleport
  23. tenta assim amigão: não testei mas deve funcionar local quest = { [90003] = {name = "Box+1", done = 1}, } function onUse(cid, item, fromPosition, itemEx, toPosition) local completas = {} local incompletas = {} for a, b in pairs(quest) do if getPlayerStorageValue(cid, a) == b.done then table.insert(completas, ""..b.name.." [FEITO]\n") else table.insert(incompletas, ""..b.name.."\n") end end doShowTextDialog(cid, item.itemid, "Quests disponíveis:\n\n"..table.concat (completas).." ".. table.concat(incompletas).."") return true end
  24. apenas adicione isso na script acima da linha que adiciona o dano: local tempo = 5 -- tempo em segundos que fica sem se mexer. doCreatureSetNoMove(variantToNumber(var), true) addEvent(function() if isPlayer(variantToNumber(var)) then doCreatureSetNoMove(variantToNumber(var), false) end end, tempo * 1000) Note que pra isso vc vai precisar ter um needtarget = "1" na tag do xml. Se for uma magia em área e vc quiser paralizar quem tiver na área tem uma outra forma de fazer mas daí vou precisar que vc poste o script.
  • Quem Está Navegando   0 membros estão online

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