MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!

Participe do fórum, é rápido e fácil

MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!
MMORPG Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

script de ataque

2 participantes

Ir para baixo

 script de ataque Empty script de ataque

Mensagem por guuh Qua 19 Jan 2011, 22:58

Ei, isso é muito uma versão mais avançada do sistema de batalha padrão para eclipse. Há muitos recursos para isso que são muito úteis.
veja como usa-lo:

Copie e cole este na parte inferior do seu main.txt:

Código:
'Advanced Attack Command
sub damagecommand(index, high, low, hitrate, critrate, hitanimation, missanimation, critanimation, hitsound, misssound, critsound)
   dim str
   dim dmg
   dim playerdef
   dim npcdef
   dim critdmg
   dim hitchance
   dim critchance
   dim target
   dim npcnum
   dim playerx
   dim playery
   dim npcx
   dim npcy
   dim dir
   dim targettype
   dim playertargetx
   dim playertargety

   str = getplayerstr(index)
   
   if low < 0 then
      low = 0
   end if
   
   if hitrate < 0 then
      hitrate = 0
   end if
   if hitrate > 100 then
      hitrate = 100
   end if
   
   critdmg = high / 4
   
   if critrate > 100 then
      critrate = 100
   end if
   if critrate < 0 then
      critrate = 0
   end if
   
   critchance = rand(0, 100)
   hitchance = rand(0, 100)
   
   if int(getplayertarget(index)) > 0 then
      target = getplayertarget(index)
      targettype = 1
      playertargetx = getplayerx(target)
      playertargety = getplayery(target)
      if hitchance <= hitrate then
         playerdef = getplayerdef(target)
         dmg = (rand(low, high) + (str * 2)) - (playerdef * 5)
      else
         dmg = 0
         playertargetx = getplayerx(target)
         playertargety = getplayery(target)
      end if
   elseif int(getplayertarget(index)) = 0 then
      dmg = 0
      npcx = 0
      npcy = 0
      npcnum = 0
      npcdef = 0
      playertargetx = 0
      playertargety = 0
   else
      target = getplayertargetnpc(index)
      targettype = 0
      if hitchance <= hitrate then
         npcnum = getplayertargetnpc(index)
         npcdef = getnpcdefense(npcnum)
         dmg = (rand(low, high) + (str * 2)) - (npcdef * 5)
         npcx = getnpcx(getplayermap(index), npcnum)
         npcy = getnpcy(getplayermap(index), npcnum)
      else
         dmg = 0
         npcnum = getplayertargetnpc(index)
         npcx = getnpcx(getplayermap(index), npcnum)
         npcy = getnpcy(getplayermap(index), npcnum)
         npcdef = getnpcdefense(npcnum)
      end if
   end if
   
   playerx = getplayerx(index)
   playery = getplayery(index)
   dir = getplayerdir(index)
   
   
   
   if dir = 0 then
      if playerx = npcx or playerx = playertargetx then
         if playery = npcy + 1 or playery = playertargety + 1 then
            if critchance <= critrate then
               call putvar("Damage.ini", "DAMAGE", getplayername(index), "2")
               dmg = high + rand(0, critdmg)
            else
               call putvar("Damage.ini", "DAMAGE", getplayername(index), "1")
            end if
            if targettype = 1 then
               call damageplayer(index, target, dmg)
               call putvar("Damage.ini", "DAMAGE", getplayername(index), "1")
            else
               call damagenpc(index, target, dmg)
               call putvar("Damage.ini", "DAMAGE", getplayername(index), "1")
            end if
         end if
      end if
   elseif dir = 1 then
      if playerx = npcx or playerx = playertargetx then
         if playery = npcy - 1 or playery = playertargety - 1 then
            if critchance <= critrate then
               call putvar("Damage.ini", "DAMAGE", getplayername(index), "2")
               dmg = high + rand(0, critdmg)
            else
               call putvar("Damage.ini", "DAMAGE", getplayername(index), "1")
            end if
            if targettype = 1 then
               call damageplayer(index, target, dmg)
            else
               call damagenpc(index, target, dmg)
            end if
         end if
      end if
   elseif dir = 2 then
      if playerx = npcx + 1 or playerx = playertargetx + 1 then
         if playery = npcy or playery = playertargety then
            if critchance <= critrate then
               call putvar("Damage.ini", "DAMAGE", getplayername(index), "2")
               dmg = high + rand(0, critdmg)
            else
               call putvar("Damage.ini", "DAMAGE", getplayername(index), "1")
            end if
            if targettype = 1 then
               call damageplayer(index, target, dmg)
            else
               call damagenpc(index, target, dmg)
            end if
         end if
      end if
   else
      if playerx = npcx - 1 or playerx = playertargetx - 1 then
         if playery = npcy or playery = playertargety then
            if critchance <= critrate then
               call putvar("Damage.ini", "DAMAGE", getplayername(index), "2")
               dmg = high + rand(0, critdmg)
            else
               call putvar("Damage.ini", "DAMAGE", getplayername(index), "1")
            end if
            if targettype = 1 then
               call damageplayer(index, target, dmg)
            else
               call damagenpc(index, target, dmg)
            end if
         end if
      end if
   end if
   
   if dmg = 0 then
      call putvar("Damage.ini", "DAMAGE", getplayername(index), "0")
   end if

   if getvar("Damage.ini", "DAMAGE", getplayername(index)) = "2" then
      call attackanimation(index, critanimation)
      call playsound(index, critsound)
   elseif getvar("Damage.ini", "DAMAGE", getplayername(index)) = "1" then
      call attackanimation(index, hitanimation)
      call playsound(index, hitsound)
   else
      call attackanimation(index, missanimation)
      call playsound(index, misssound)
   end if
   
   call putvar("Damage.ini", "DAMAGE", getplayername(index), "0")
end sub

sub attackanimation(index, animation)
   dim map
   dim playerx
   dim playery
   dim dir

   map = getplayermap(index)
   playerx = getplayerx(index)
   playery = getplayery(index)
   dir = getplayerdir(index)


   if dir = 0 then
      call spellanim(animation, map, playerx, playery - 1)
   elseif dir = 1 then
      call spellanim(animation, map, playerx, playery + 1)
   elseif dir = 2 then
      call spellanim(animation, map, playerx - 1, playery)
   else
      call spellanim(animation, map, playerx + 1, playery)
   end if
end sub


Agora faça um arquivo ini chamado "Damage.ini" e coloque isto nele.:


Código:
[DAMAGE]

Ok e isso é tudo que você precisa fazer. Você pode chamá-lo assim:

Código:
call damagecommand(index, high, low, hitrate, critrate, hitanimation, missanimation, critanimation, hitsound, misssound, critsound)

index = número índice do índice do jogador
high = dano que você pode fazer (sem redução de defesa)
low = menor quantidade de dano que você pode fazer (sem redução de defesa)
hitrate = que você vai acertar o alvo (de 100)
critrate = que você vai fazer um acerto crítico em seu alvo (de 100)
hitanimation = que será usado quando você atingiu seu alvo
missanimation = que será usado quando você perder o seu alvo, ou não estão suficientemente perto do alvo
critanimation = que será usado quando você faz um acerto crítico em seu alvo
hitsound = som que serão usados quando você atingiu seu alvo
misssound = som que serão usados quando você perder o seu alvo, ou estão muito longe
critsound = som que será usado quando você tem um acerto crítico em seu alvo

características:
3 diferentes efeitos sonoros e animações para acertar, perder e crítica

danos ao acaso por isso não é sempre os mesmos danos

ataques críticos

você pode perder

defesa do alvo tira danos

golpes críticos ignoram a defesa do alvo

Eu tive um parâmetro de velocidade de ataque, mas eu achei-o apenas para ficar no meu caminho, então eu o levei out.if que quiser, com a velocidade de ataque me perguntar e eu vou publicá-la. Espero que gostem deste script.

Creditos: touch of death e eu por traduzi


Última edição por guuh em Qui 20 Jan 2011, 09:17, editado 1 vez(es)
guuh
guuh
Membro Veterano
Membro Veterano

Mensagens : 1187

Ir para o topo Ir para baixo

 script de ataque Empty Re: script de ataque

Mensagem por Darkpeople196 Qua 19 Jan 2011, 23:39

hm não tem esse tuto na toucho? "forum oficial do eclipse"
bom parabéns por contribuir para o forum e,e pena que não vou usar '-'
Darkpeople196
Darkpeople196
Membro Vitalicio
Membro Vitalicio

Mensagens : 612

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos