Ir para conteúdo

Skulls

Herói
  • Total de itens

    859
  • Registro em

  • Última visita

  • Dias Ganhos

    22

Tudo que Skulls postou

  1. Ah, esqueci dessa linha rs.. Mal! Ultima tentativa.. la em for i = 1, #winner do Faz for i = 1, 4 do
  2. Isso, testa ai pra eu ver se tenho alguma luz e ir dormir.
  3. Ah, então troca a porra toda ali de index por isso aqui, vê se da: local st = getPlayerStorageValue(pid, 1827311) local i = getPlayerVocation(pid) local index = i if index > 4 then index = index - 4 end if st > mx[index] then
  4. Ou então, coloca um doBroadcastMessage(index) depois de if i == 4 or i == 8 then index = 4 end if not mx[index] then mx[index] = 0 end e me manda o que ele printou
  5. É mesmo, troque pra isso então: for _, pid in pairs(getPlayersOnline()) do setPlayerStorageValue(pid, 1827311, 0) if isInArea(getThingPos(pid), {x = 500, y = 574, z = 6}, {x = 575, y = 620, z = 6}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 5}, {x = 556, y = 607, z = 5}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 4}, {x = 556, y = 607, z = 4}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 3}, {x = 556, y = 607, z = 3}) or isInArea(getThingPos(pid), {x = 481, y = 580, z = 7}, {x = 683, y = 798, z = 7}) then doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) end end
  6. O que vale é a intenção! hahaha valeu!
  7. Obrigado! Da pra dar rep pelo cel, só colocar na versão completa la embaixo ^^ hahaha
  8. Pra zerar você pode mudar o for do final: for _, pid in pairs(getPlayersOnline()) do if isInArea(getThingPos(pid), {x = 500, y = 574, z = 6}, {x = 575, y = 620, z = 6}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 5}, {x = 556, y = 607, z = 5}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 4}, {x = 556, y = 607, z = 4}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 3}, {x = 556, y = 607, z = 3}) or isInArea(getThingPos(pid), {x = 481, y = 580, z = 7}, {x = 683, y = 798, z = 7}) then setPlayerStorageValue(pid, 1827311, 0) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) end end Agora o knight eu nao estou entendendo .-.
  9. Tente assim.
  10. Manda o script novamente pra mim? valeu!
  11. Fala galera, tudo bem? Venho trazer pra vocês uma nova magia que fiz. Ela é basicamente um puxão que da um pouco de dano. Gif Em spells.xml coloque essa tag: <instant name="Energy Grab" words="exori grab vis" needtarget="1" lvl="40" mana="20" prem="1" range="5" blockwalls="1" exhaustion="2000" groups="1,2000" icon="122" needlearn="0" event="script" value="attack/energy grab.lua"> <vocation id="3"/> <vocation id="7"/> </instant> Em scripts/attack crie um arquivo chamado energy grab.lua e coloque o conteúdo abaixo: local grab_time = 350 local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onTargetCreature(cid, target) addEvent(executeGrab, grab_time, cid, target) end setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") function executeGrab(cid, target, param) d = param or -1 if not isPlayer(cid) then return false end if not isCreature(target) then return false end local cpos, ppos = getCreaturePosition(target), getCreaturePosition(cid) local dir = getDirectionTo2(cpos, ppos) if d == -1 then doSendDistanceShoot(cpos, ppos, CONST_ANI_ENERGYBALL) end if getDistanceBetween(cpos, ppos) > 1 then doMoveCreature(target, dir) end if (d > 1 or d == -1) then addEvent(executeGrab, 30, cid, target, getDistanceBetween(cpos, ppos)) end return true end function performCombat(cid, combat, var) return doCombat(cid, combat, var) end function onCastSpell(cid, var) return doCombat(cid, combat, setSpellTarget(cid, var)) end Para funcionar corretamente, isso é puxando quem estiver na frente da magia e nao o target inicial é necessário que você utilize o sistema disponibilizado por mim neste tópico: http://www.xtibia.com/forum/topic/239458-spells-checando-interferencias-na-trajetoria/ Caso contrário, troque a linha return doCombat(cid, combat, setSpellTarget(cid, var)) por return doCombat(cid, combat, var). Bom, é isso. Espero que gostem. Abraços,
  12. Troca: local st = getPlayerStorageValue(pid, 1827311) local i = getPlayerVocation(pid) if st > mx[i%4] then... por local st = getPlayerStorageValue(pid, 1827311) local i = getPlayerVocation(pid) local index = i%4 if index == 0 then index = 4 end if st > mx[index] then
  13. Eu já sei o pq, vou editar aqui 2 segundos. Troca: local st = getPlayerStorageValue(pid, 1827311) local i = getPlayerVocation(pid) if st > mx[i%4] then... por local st = getPlayerStorageValue(pid, 1827311) local i = getPlayerVocation(pid) local index = i%4 if index == 0 then index = 4 end if st > mx[index] then
  14. Boa noite galera, tudo bem? Venho compartilhar com vocês hoje um sisteminha que desenvolvi para as magias do tipo "shoot'. Foi feito inicialmente para funcionar com magias que usam a posição do mouse como referência e adaptei para cipclientes poderem usar em runas e magias de tiro. O funcionamento do sistema é simples: Ao usar uma runa ou castar uma magia "shoot" com esse sistema criaturas e objetos no caminho irão interferir na trajetória, isto é, receberão o combate no lugar do alvo inicial. Ilustrativo: Bom, vamos ao que interessa. Vá em data/lib/ e crie um novo arquivo chamado spellsLib.lua (pode-se utilizar também o arquivo spells.lua contido em data/spells/lib). Dentro dele inclua as seguintes funções: IsWalkable (by Nord) GetPositionsAround (by Skulls) CheckInterceptions (by Skulls) SetSpellTarget (by Skulls) Feito isso, está tudo configurado. Basta agora adicionar às magias que você queira. Abra o .lua da magia, por exemplo death strike.lua. Lá você terá, entre outras coisas, a função onCastSpell como abaixo: function onCastSpell(cid, var) return doCombat(cid, combat, var) end Substitua isso por: local range = 5 function onCastSpell(cid, var) if getCreatureTarget(cid) == 0 then doPlayerSendCancel(cid, "Please choose a target.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false end if getDistanceBetween(getPlayerPosition(cid), getCreaturePosition(getCreatureTarget(cid))) > range then doPlayerSendCancel(cid, "Target is not reachable.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false endreturn doCombat(cid, combat, setSpellTarget(cid, var)) end Retire qualquer tag que esteja relacionada a target (needtarget, casterTargetOrDirection, etc) Pronto, a sua magia "Exori Mort" será parada por criaturas ou obstáculos (qualquer item que não seja móvel). Bom é isso, espero que gostem. Queria agradecer ao @@nightwolf e ao @Caronte pelas ajudas tentando entender alguns parâmetros e me dando algumas luzes. Ao @@nightwolf, ainda, um agradecimento especial pela maravilhosa lib dele *-*. Abraços, Um exemplo de magia que utiliza esse sistema: http://www.xtibia.com/forum/topic/239460-exori-grab-vis/ @@Daniel, na verdade move pra mim pra Downloads Spells, acho que seria mais correto.
  15. Troca pointNumber(mx) por pointNumber(mx) E ae?
  16. troca de novo o mx pra mx = {} e antes do if st>mx[i%4] coloca a linha if not mx[i%4] then mx[i%4] = 0 end
  17. Sim local vocation = { "sorcerer", "druid", "paladin", "knight" }
  18. Troca o vocations por isso: local vocation = { "druid", "sorcerer", "paladin", "knight" } e for i = 0, #winner do por for i = 1, #winner do
  19. troca local mx = {} por local mx = {0, 0, 0, 0, 0, 0, 0, 0}
  20. Posta o script completo apos as modificações, pra eu saber em qual linha ta o erro.
  21. Bem legal, Poke nao esqueci da sua MP vou respondê-la agora. Quando eu acabar os sistemas do ot vou reconfigurar todo o client para ficar estilo MOBA! xD
  22. Posso fazer, mas 0.4.
  • Quem Está Navegando   0 membros estão online

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