Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


+15
RonaldsSTARK
silipinho
Pablo Kawan
Benderfb
Spooky
joaopaulo98
Hooly
Acciles
Grilox
iJackboy
Raizen
Dooolly
Laxus
wrath66zx
Valentine
19 participantes

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

    Valentine
    Valentine
    Administrador
    Administrador


    Medalhas : [E.O]Spell Linear 100% Funcional (verdadeiro) ZgLkiRU
    Mensagens : 5345
    Créditos : 1164

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

    Mensagem por Valentine 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)
    avatar
    wrath66zx
    Novato
    Novato


    Mensagens : 1
    Créditos : 0

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

    Mensagem por wrath66zx 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.
    Laxus
    Laxus
    Aldeia Friend
    Aldeia Friend


    Mensagens : 1150
    Créditos : 78

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

    Mensagem por Laxus Sáb 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
    Dooolly
    Dooolly
    Colaborador
    Colaborador


    Medalhas : [E.O]Spell Linear 100% Funcional (verdadeiro) Trophy12
    Mensagens : 1227
    Créditos : 153

    Ficha do personagem
    Nível: 1
    Experiência:
    [E.O]Spell Linear 100% Funcional (verdadeiro) Left_bar_bleue0/0[E.O]Spell Linear 100% Funcional (verdadeiro) Empty_bar_bleue  (0/0)
    Vida:
    [E.O]Spell Linear 100% Funcional (verdadeiro) Left_bar_bleue30/30[E.O]Spell Linear 100% Funcional (verdadeiro) Empty_bar_bleue  (30/30)

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

    Mensagem por Dooolly 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.
    Valentine
    Valentine
    Administrador
    Administrador


    Medalhas : [E.O]Spell Linear 100% Funcional (verdadeiro) ZgLkiRU
    Mensagens : 5345
    Créditos : 1164

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

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

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


    Mensagens : 25
    Créditos : 1

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

    Mensagem por Raizen Sáb 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'


    _________________
    [E.O]Spell Linear 100% Funcional (verdadeiro) Iwqc29
    Facebook
    iJackboy
    iJackboy
    Semi-Experiente
    Semi-Experiente


    Mensagens : 87
    Créditos : 6

    Ficha do personagem
    Nível: 1
    Experiência:
    [E.O]Spell Linear 100% Funcional (verdadeiro) Left_bar_bleue0/0[E.O]Spell Linear 100% Funcional (verdadeiro) Empty_bar_bleue  (0/0)
    Vida:
    [E.O]Spell Linear 100% Funcional (verdadeiro) Left_bar_bleue30/30[E.O]Spell Linear 100% Funcional (verdadeiro) Empty_bar_bleue  (30/30)

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

    Mensagem por iJackboy 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)
    Grilox
    Grilox
    Novato
    Novato


    Mensagens : 21
    Créditos : 1

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

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

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

    [E.O]Spell Linear 100% Funcional (verdadeiro) 1yo22o
    Acciles
    Acciles
    Iniciante
    Iniciante


    Mensagens : 64
    Créditos : 4

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

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

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

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

    Tenta mudar a Case ..
    Hooly
    Hooly
    Novato
    Novato


    Mensagens : 8
    Créditos : 0

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

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

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

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

    Tenta mudar a Case ..
    pode explicar melhor?

    Conteúdo patrocinado


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

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sex Nov 22, 2024 7:57 am