Suporte ao desenvolvimento de jogos!


    [E.O]Spell Linear 100% Funcional (verdadeiro)

    Compartilhe
    avatar
    Valentine
    Administrador
    Administrador

    Medalhas :
    Mensagens : 4985
    Créditos : 1060

    [E.O]Spell Linear 100% Funcional (verdadeiro)

    Mensagem por Valentine em Qui Jan 30, 2014 12:57 pm

    Tópico retirado da MMORPGBR

    Bem vc deve estar se perguntando pra que outro tópico de spell linear, sendo que existes vários outros aqui. 
    Resposta: é que todos os que existem não funcionam 100%, sempre tem algum bug, ou algo do tipo e esse meu sim funciona 100%, chega de enrolar e vamos para o tutorial.


    antes de mais nada Spell Linear, é spell em area ou magia reta.


    1° Abra o sourcer do Cliente


    procure por:
    Código:
    Public Const SPELL_TYPE_WARP As Byte = 4
    abaixo adicione:
    Código:
    Public Const SPELL_TYPE_LINEAR As Byte = 5 ' ou o proximo numero
    abra a FrmEditor_Spell, de 2 cliques na cmbType e adicione:
    Código:
    Spell(EditorIndex).Type = cmbType.ListIndex
        If cmbType.text = "Linear" Then
            scrlRange.Value = 0
            chkAOE.Value = 1
        End If
    agora adicione no final da lista:
    Linear

    Cliente pronto, agora vamos para o Servidor~

    na sub Public Sub CastSpell procure por:
    Código:
    Dim x As Long, y As Long
    e em baixo adicione:
    Código:
    Dim Linha As Integer
        Dim Calculate As Long
    ainda na mesma sub em em cima de:
    Código:
    Case 2 ' targetted
                If targetType = 0 Then Exit Sub
                If target = 0 Then Exit Sub
                
                If targetType = TARGET_TYPE_PLAYER Then
                    x = GetPlayerX(target)
                    y = GetPlayerY(target)
                Else
                    x = MapNpc(mapnum).NPC(target).x
                    y = MapNpc(mapnum).NPC(target).y
                End If
                    
                If Not isInRange(Range, GetPlayerX(index), GetPlayerY(index), x, y) Then
                    PlayerMsg index, "Target not in range.", BrightRed
                    SendClearSpellBuffer index
                    Exit Sub
                End If
    adicione:
    Código:
    Case SPELL_TYPE_LINEAR
                            DidCast = True
                            Linha = 1
                            Do While Linha < Spell(spellnum).AoE
                    
                                Select Case GetPlayerDir(index)
                    
                                    Case DIR_UP
                                        Calculate = GetPlayerY(index) - Linha
                                        If Calculate <= 0 Then Exit Sub
                                        If Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index) - Linha).Type = TILE_TYPE_BLOCKED Then Exit Sub
                                        SendAnimation GetPlayerMap(index), Spell(spellnum).SpellAnim, GetPlayerX(index), GetPlayerY(index) - Linha
                                        IsUseLinear index, spellnum, Vital, GetPlayerMap(index), GetPlayerX(index), GetPlayerY(index) - Linha
                                        
                                    Case DIR_DOWN
                                        Calculate = GetPlayerY(index) + Linha
                                        If Calculate >= Map(Linha).MaxY Then Exit Sub
                                        If Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index) + Linha).Type = TILE_TYPE_BLOCKED Then Exit Sub
                                        SendAnimation GetPlayerMap(index), Spell(spellnum).SpellAnim, GetPlayerX(index), GetPlayerY(index) + Linha
                                        IsUseLinear index, spellnum, Vital, GetPlayerMap(index), GetPlayerX(index), GetPlayerY(index) + Linha
                                    Case DIR_LEFT
                                        Calculate = GetPlayerX(index) - Linha
                                        If Calculate <= 0 Then Exit Sub
                                        If Map(GetPlayerMap(index)).Tile(GetPlayerX(index) - Linha, GetPlayerY(index)).Type = TILE_TYPE_BLOCKED Then Exit Sub
                                        SendAnimation GetPlayerMap(index), Spell(spellnum).SpellAnim, GetPlayerX(index) - Linha, GetPlayerY(index)
                                        IsUseLinear index, spellnum, Vital, GetPlayerMap(index), GetPlayerX(index) - Linha, GetPlayerY(index)
                                    Case DIR_RIGHT
                                        Calculate = GetPlayerX(index) + Linha
                                        If Calculate <= 0 Then Exit Sub
                                        If Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index)).Type = TILE_TYPE_BLOCKED Then Exit Sub
                                        SendAnimation GetPlayerMap(index), Spell(spellnum).SpellAnim, GetPlayerX(index) + Linha, GetPlayerY(index)
                                        IsUseLinear index, spellnum, Vital, GetPlayerMap(index), GetPlayerX(index) + Linha, GetPlayerY(index)
                                End Select
                              Linha = Linha + 1
                            Loop
                End Select
    em baixo da Public Sub StunNPC


    adicione:
    Código:
    Function IsUseLinear(ByVal index As Integer, ByVal spellnum As Integer, ByVal Vital As Long, ByVal Mapa As Integer, ByVal x As Byte, ByVal y As Byte)
            Dim i As Long

            'Loop Global Npc
            For i = 1 To MAX_MAP_NPCS
                If MapNpc(Mapa).NPC(i).Num > 0 And MapNpc(Mapa).NPC(i).x = x And MapNpc(Mapa).NPC(i).y = y And MapNpc(Mapa).NPC(i).Vital(HP) > 0 Then PlayerAttackNpc index, i, Vital, spellnum
            Next

            'Loop Global Player
            For i = 1 To Player_HighIndex
                If GetPlayerMap(i) = Mapa And GetPlayerX(i) = x And GetPlayerY(i) = y Then PlayerAttackPlayer index, i, Vital, spellnum
            Next
        End Function
    abaixo de:
    Código:
    Public Const SPELL_TYPE_WARP As Byte = 4
     
    adicione:
    Código:
    Public Const SPELL_TYPE_LINEAR As Byte = 5

    acho que é só, caso de algum erro me informe aqui no TÓPICO.


    obs: spell baseado nos status, funciona com este tutorial :)

    Créditos
    Dazateam (Rodrigo)


    _________________

    wrath66zx
    Novato
    Novato

    Mensagens : 1
    Créditos : 0

    Re: [E.O]Spell Linear 100% Funcional (verdadeiro)

    Mensagem por wrath66zx em Sex Jan 31, 2014 6:20 pm

    Deu certo, porem a spell está atacando os players, como faço pra desativar o dano da spell nos players em certos mapas? Coloquei em Safe Zone porem a spell ainda continua atacando os players.
    avatar
    Laxus
    Aldeia Friend
    Aldeia Friend

    Mensagens : 1151
    Créditos : 78

    Re: [E.O]Spell Linear 100% Funcional (verdadeiro)

    Mensagem por Laxus em Sab Fev 01, 2014 8:59 am

    Wrath vc teria que desativar o pvp em seu mapa... Se não me engano nas configurações do mapa :)


    _________________
    "Não importa o quão forte o cara é, o que importa é encara-lo de frente sem fraquejar"
                                                                                                                                                        Laxus ~ Fairy Tail
    avatar
    Dooolly
    Moderador Global
    Moderador Global

    Medalhas :
    Mensagens : 1239
    Créditos : 147

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    Re: [E.O]Spell Linear 100% Funcional (verdadeiro)

    Mensagem por Dooolly em Qua Fev 05, 2014 9:06 am

    Muito bom...
    mais em vez de Do While pq não usa For?
    Tipo "For linha = 1 to Spell(SpellNum).aoe"

    quando eu tiver tempo posto os meu sistema de spell linear feito em For e que se expande nas laterais tipo o Naruto Inner Power.
    avatar
    Valentine
    Administrador
    Administrador

    Medalhas :
    Mensagens : 4985
    Créditos : 1060

    Re: [E.O]Spell Linear 100% Funcional (verdadeiro)

    Mensagem por Valentine em Qua Fev 05, 2014 9:34 am

    Também concordo que For é mais leve, mas o tutorial não é meu


    _________________
    avatar
    Raizen
    Novato
    Novato

    Mensagens : 25
    Créditos : 1

    Re: [E.O]Spell Linear 100% Funcional (verdadeiro)

    Mensagem por Raizen em Sab Jun 21, 2014 11:44 pm

    Dooolly, não achei muita diferença, pois não mudaria em nada por isso usei o DO envéz do FOR

    OBS: Eu Raizen, sou o dazateam (Rodrigo Martins) caso alguém não entenda isso kk'


    _________________
    Facebook
    avatar
    iJackboy
    Semi-Experiente
    Semi-Experiente

    Mensagens : 87
    Créditos : 6

    Re: [E.O]Spell Linear 100% Funcional (verdadeiro)

    Mensagem por iJackboy em Dom Jun 29, 2014 11:10 am

    eu até conseguir fazer com que copilar, mas não faz efeito nenhuma e ainda modifica algo no servidor que fica com falhas x.x


    Última edição por emerson_gin em Dom Jun 29, 2014 12:07 pm, editado 3 vez(es)
    avatar
    Grilox
    Novato
    Novato

    Mensagens : 21
    Créditos : 1

    Re: [E.O]Spell Linear 100% Funcional (verdadeiro)

    Mensagem por Grilox em Dom Jun 29, 2014 11:31 am

    Tentei aqui, e deu esse erro na hora de compilar. Ajuda?

    avatar
    Acciles
    Iniciante
    Iniciante

    Mensagens : 64
    Créditos : 4

    Re: [E.O]Spell Linear 100% Funcional (verdadeiro)

    Mensagem por Acciles em Qua Ago 13, 2014 9:07 pm

    @Grilox escreveu:Tentei aqui, e deu esse erro na hora de compilar. Ajuda?


    Tenta mudar a Case ..
    avatar
    Hooly
    Novato
    Novato

    Mensagens : 8
    Créditos : 0

    Re: [E.O]Spell Linear 100% Funcional (verdadeiro)

    Mensagem por Hooly em Seg Set 22, 2014 10:07 am

    @Acciles escreveu:
    @Grilox escreveu:Tentei aqui, e deu esse erro na hora de compilar. Ajuda?


    Tenta mudar a Case ..
    pode explicar melhor?

    Conteúdo patrocinado

    Re: [E.O]Spell Linear 100% Funcional (verdadeiro)

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Seg Nov 12, 2018 5:28 pm