Suporte ao desenvolvimento de jogos!


    [GF]Spell Linear Avançada

    Compartilhe
    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)

    [GF]Spell Linear Avançada

    Mensagem por Dooolly em Qua Fev 05, 2014 5:41 pm



    MAGIA LINEAR AVANÇADA


    Como Funciona

    Sistema de Magia que funciona em uma só direção e que se expande em suas laterais.



    Server~Side

    Em ModConstants Procure Por:
    Código:
    Public Const SPELL_TYPE_WARP As Byte = 4

    Abaixo Adicione:
    Código:
    Public Const SPELL_TYPE_LINEAR As Byte = 5

    Em ModCombat Procure Por:
    Código:
    Dim Buffer As clsBuffer, spellCastType As Long

    Abaixo Adicione:
    Código:
    Dim linha As Long, linha2 As Long, AnimL As Long

    Nessa Mesma Sub Procure Por:
    Código:
       end select
    Case 2 ' targetted

    Acima Adicione:
    Código:
    Case SPELL_TYPE_LINEAR
                       '/// - MAGIA LINEAR AVANÇADA - ///
                      For linha = 1 To Spell(SpellNum).AoE
                       Select Case GetPlayerDir(Index)
                         Case DIR_UP
                          If Not GetPlayerY(Index) - linha < 0 Then
                            SendAnimation GetPlayerMap(Index), Spell(SpellNum).SpellAnim, GetPlayerX(Index), GetPlayerY(Index) - linha
                            UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index), GetPlayerY(Index) - linha
                          End If
                         Case DIR_DOWN
                          If Not GetPlayerY(Index) + linha > Map(mapnum).MaxY Then
                            SendAnimation GetPlayerMap(Index), Spell(SpellNum).SpellAnim, GetPlayerX(Index), GetPlayerY(Index) + linha
                            UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index), GetPlayerY(Index) + linha
                          End If
                         Case DIR_LEFT
                          If Not GetPlayerX(Index) - linha < 0 Then
                            SendAnimation GetPlayerMap(Index), Spell(SpellNum).SpellAnim, GetPlayerX(Index) - linha, GetPlayerY(Index)
                            UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index) - linha, GetPlayerY(Index)
                          End If
                         Case DIR_RIGHT
                          If Not GetPlayerX(Index) + linha > Map(mapnum).MaxX Then
                            SendAnimation GetPlayerMap(Index), Spell(SpellNum).SpellAnim, GetPlayerX(Index) + linha, GetPlayerY(Index)
                            UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index) + linha, GetPlayerY(Index)
                          End If
                       End Select

                       '/// - Animação Lateral - ///
                       If Spell(SpellNum).AnimL > 0 Then
                        AnimL = Spell(SpellNum).AnimL
                       Else
                        AnimL = Spell(SpellNum).SpellAnim
                       End If

                       '/// - Magia Lateral - ///
                       If Spell(SpellNum).Tamanho > 0 Then
                        If linha > 1 Then
                         For linha2 = 1 To Spell(SpellNum).Tamanho
                          Select Case GetPlayerDir(Index)
                            Case DIR_UP
                               If Not GetPlayerY(Index) - linha < 0 Then
                                 If Not GetPlayerX(Index) - linha2 < 0 Then
                                   SendAnimation GetPlayerMap(Index), AnimL, GetPlayerX(Index) - linha2, GetPlayerY(Index) - linha
                                   UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index) - linha2, GetPlayerY(Index) - linha
                                 End If
                              
                                 If Not GetPlayerX(Index) + linha2 > Map(mapnum).MaxX Then
                                   SendAnimation GetPlayerMap(Index), AnimL, GetPlayerX(Index) + linha2, GetPlayerY(Index) - linha
                                   UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index) + linha2, GetPlayerY(Index) - linha
                                 End If
                               End If
                            Case DIR_DOWN
                               If Not GetPlayerY(Index) + linha > Map(mapnum).MaxY Then
                                If Not GetPlayerX(Index) + linha2 > Map(mapnum).MaxX Then
                                   SendAnimation GetPlayerMap(Index), AnimL, GetPlayerX(Index) + linha2, GetPlayerY(Index) + linha
                                   UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index) + linha2, GetPlayerY(Index) + linha
                                 End If
                              
                                  If Not GetPlayerX(Index) - linha2 < 0 Then
                                   SendAnimation GetPlayerMap(Index), AnimL, GetPlayerX(Index) - linha2, GetPlayerY(Index) + linha
                                   UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index) - linha2, GetPlayerY(Index) + linha
                                 End If
                               End If
                            Case DIR_LEFT
                               If Not GetPlayerX(Index) - linha < 0 Then
                                 If Not GetPlayerY(Index) - linha2 < 0 Then
                                   SendAnimation GetPlayerMap(Index), AnimL, GetPlayerX(Index) - linha, GetPlayerY(Index) - linha2
                                   UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index) - linha, GetPlayerY(Index) - linha2
                                 End If
                              
                                 If Not GetPlayerY(Index) + linha2 > Map(mapnum).MaxY Then
                                   SendAnimation GetPlayerMap(Index), AnimL, GetPlayerX(Index) - linha, GetPlayerY(Index) + linha2
                                   UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index) - linha, GetPlayerY(Index) + linha2
                                 End If
                               End If
                            Case DIR_RIGHT
                                If Not GetPlayerX(Index) + linha > Map(mapnum).MaxX Then
                                  If Not GetPlayerY(Index) + linha2 > Map(mapnum).MaxY Then
                                    SendAnimation GetPlayerMap(Index), AnimL, GetPlayerX(Index) + linha, GetPlayerY(Index) + linha2
                                    UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index) + linha, GetPlayerY(Index) + linha2
                                  End If
                                  
                                  If Not GetPlayerY(Index) - linha2 < 0 Then
                                    SendAnimation GetPlayerMap(Index), AnimL, GetPlayerX(Index) + linha, GetPlayerY(Index) - linha2
                                    UsarMagiaLinear Index, SpellNum, vital, GetPlayerMap(Index), GetPlayerX(Index) + linha, GetPlayerY(Index) - linha2
                                  End If
                                End If
                          End Select
                         Next
                        End If
                       End If
                      Next
                      
                      DidCast = True

    NO Final do Modulo adicione
    Código:
    Function UsarMagiaLinear(ByVal Index As Integer, ByVal SpellNum As Integer, ByVal vital As Long, ByVal Mapa As Long, 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
            If CanPlayerAttackNpc(Index, i, True) Then
              PlayerAttackNpc Index, i, vital, SpellNum
            End If
          End If
        Next


        
        'Loop Global Player
        For i = 1 To Player_HighIndex
          If IsPlaying(i) Then
            If GetPlayerMap(i) = Mapa And GetPlayerX(i) = x And GetPlayerY(i) = y Then
              If CanPlayerAttackPlayer(Index, i, True) Then
                PlayerAttackPlayer Index, i, vital, SpellNum
              End If
            End If
          End If
        Next
    End Function

    Em modtypes procure por:
    Código:
    AoE As Long

    Abaixo adicione:
    Código:
    Tamanho As Long
    AnimL As Long

    DELETE TODAS AS MAGIAS ANTES DE INICIAR O SERVIDOR!
    SERVIDOR PRONTO!

    Client~Side


    Na frmEditor_Spell Adicione:
    Spoiler:
    Scroll_Bar - (scrlTamanho)
    Dentro Dela Adicione:
    Código:
      ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler

        lblTamanho.Caption = " Tamanho Lateral: " & scrlTamanho.Value
        
        Spell(EditorIndex).Tamanho = scrlTamanho.Value
      
      ' Error handler
        Exit Sub
    errorhandler:
        HandleError "scrlTamanho_Change", "frmEditor_Spell", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Sub

    Spoiler:
    Scroll_Bar - (scrlAnimL)
    Dentro Dela Adicione:
    Código:
       ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler

        If scrlAnimL.Value > 0 Then
            lblAnimL.Caption = "Anim Lateral: " & Trim$(Animation(scrlAnimL.Value).Name)
        Else
            lblAnimL.Caption = "Anim Lateral: Nenhum"
        End If
        Spell(EditorIndex).AnimL = scrlAnimL.Value
        
        ' Error handler
        Exit Sub
    errorhandler:
        HandleError "scrlAnimL_Change", "frmEditor_Spell", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Sub

    Label - (lblTamanho) - (Caption: Tamanho Lateral: 0)
    Label - (lblAnimL) - (Caption: Anim Lateral: Nenhuma)

    Ainda na frmEditor_Spell, na cmbType, em Propriedades procure por "List" e adicione: Linear
    Depois dê um duplo Clique na cmbType e Adicione:
    Código:
    If cmbType.text = "Linear" Then
          chkAOE.Value = 1
        Else
          chkAOE.Value = 0
        End If

    na mobGameEditors, Procure:
    Código:
    .scrlStun.Value = Spell(EditorIndex).StunDuration

    Abaixo Adicione:
    Código:
    .scrlTamanho.Value = Spell(EditorIndex).Tamanho
    .scrlAnimL.Value = Spell(EditorIndex).AnimL


    Em ModTypes procure por:
    Código:
    AoE As Long

    Abaixo adicione:
    Código:
    Tamanho As Long
    AnimL As Long

    Em ModConstants Procure Por:
    Código:
    Public Const SPELL_TYPE_WARP As Byte = 4

    Abaixo Adicione:
    Código:
    Public Const SPELL_TYPE_LINEAR As Byte = 5

    Client Pronto!


    Última edição por Dooolly em Ter Jan 27, 2015 12:43 pm, editado 5 vez(es)
    avatar
    Valentine
    Administrador
    Administrador

    Medalhas :
    Mensagens : 4985
    Créditos : 1060

    Re: [GF]Spell Linear Avançada

    Mensagem por Valentine em Qua Fev 05, 2014 6:45 pm

    Muito bem Dooolly

    + 1 crédito


    _________________
    avatar
    Cavalo
    Iniciante
    Iniciante

    Mensagens : 72
    Créditos : 5

    Re: [GF]Spell Linear Avançada

    Mensagem por Cavalo em Ter Mar 25, 2014 9:59 pm

    Em qual E.O vai funcionar? Eu uso uma dx8 mas não é a 4.0


    _________________
    ...
    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: [GF]Spell Linear Avançada

    Mensagem por Dooolly em Qua Abr 02, 2014 12:12 pm

    Funciona em todas as EO e CSDE, desculpa a demora, tou sem net

    gui408
    Ocasional
    Ocasional

    Mensagens : 225
    Créditos : 10

    Re: [GF]Spell Linear Avançada

    Mensagem por gui408 em Seg Abr 14, 2014 6:43 pm

    rsrs n conscigo fazer um tuto seu,esse ai scrol anim e tamanho n salva,spell n tem coldow e tb nao sai nada,n funfo aki,se alguem consceguiu ja refiz e continua o msm...
    avatar
    Lord Pegason
    Novato
    Novato

    Mensagens : 5
    Créditos : 1

    Re: [GF]Spell Linear Avançada

    Mensagem por Lord Pegason em Ter Maio 06, 2014 12:03 pm

    Creio que você poderia ser mais "detalhista" e dizer em qual rotina deve encaixar as partes do código.

    Não ficaria mais fácil? "Na sub bla bla bla, adicionar tal coisa".

    Pois me parece bem confuso, tive dificuldade ao interpretar o que você quis dizer.

    Mas excelente conteúdo. Parabéns.







    "Dooooly, tome guaraná, Dooooly"

    "Doooly guaraná, o sabor brasileiro"
    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: [GF]Spell Linear Avançada

    Mensagem por Dooolly em Qua Jul 02, 2014 10:17 am

    Topico Atualizado, tava olhando aki hj e vi que esqueci de adicionar o Linear ao cmbType. bom ja está arrumado, qualquer erro só falar :3

    Himinato
    Novato
    Novato

    Mensagens : 19
    Créditos : 0

    Re: [GF]Spell Linear Avançada

    Mensagem por Himinato em Sex Jul 11, 2014 10:23 am

    alguem ajuda fiz tudo direitinho mais quando vou colocar a magia não salva
    tipo eu crio a linear e salvo quando abre de novo volta tudo ao 0
    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: [GF]Spell Linear Avançada

    Mensagem por Dooolly em Sex Jul 11, 2014 2:04 pm

    @Himinato escreveu:alguem ajuda fiz tudo direitinho mais quando vou colocar a magia não salva
    tipo eu crio a linear e salvo quando abre de novo volta tudo ao 0


    na mobGameEditors, Procure:
    Código:
    .scrlStun.Value = Spell(EditorIndex).StunDuration

    Abaixo Adicione:
    Código:
    .scrlTamanho.Value = Spell(EditorIndex).Tamanho
    .scrlAnimL.Value = Spell(EditorIndex).AnimL

    Desculpe o erro eu tinha esquecido de por essa parte no tutorial e só agr vim ver no meu jogo tb ta com isso.. mas ja arrumei;

    gui408
    Ocasional
    Ocasional

    Mensagens : 225
    Créditos : 10

    Re: [GF]Spell Linear Avançada

    Mensagem por gui408 em Ter Ago 19, 2014 2:05 am

    Fiz tudo certinho,ai deu certo saiu tudo certo fui testando até achar um erro,bem o erro aconte quando vc utiliza a spell linear perto da tela,exemplo tela onde vc vai passa pro outro map,ai vc usa a spell ali e nao tem CD pode usar infinitas vezes,mas quando a spell nao bate na lateral da tela fik numa boa certinha,mas quando bate vc pode usar varias vezes sem o CD,eu queria deixar esse CD da spell linear= a do spell aoe q ja vem no origins ai fikaria perfeita,muito bom esse sistema seu,so falta arruma isto q te flei,se puder me ajudar xD,vlw.,,

    Conteúdo patrocinado

    Re: [GF]Spell Linear Avançada

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Seg Nov 12, 2018 4:49 pm