Universo Games
Ola , Convidado



Você ainda não e cadastrado então cadastre-se e veja todas as atualizações no mundo rpg!!!
Universo Games

Suporte e Desenvolvimento só no Universo Games

Ola Convidado, Seja Bem vindo a equipe lhe deseja boa sorte no seu projeto!

Você não está conectado. Conecte-se ou registre-se

Magias linear (EO V2.0)

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1Tutorial Magias linear (EO V2.0) em Seg 19 Set 2011, 19:32

Luucas Robeerto


Fundador
Fundador
Assim, como o título diz, este é um tutorial sobre como fazer feitiços Linear. Um agradecimento especial ao capitão Wabbit, cujo projétil sistema deu-me a teoria de que eu precisava para consertar o meu sistema de projétil de idade e fazer isso. Primeiro, modTypes aberto. Em

Código:
Private Type SpellRec

antes

End Type

inserir

IsLinear As Boolean

Abra Serverloop Sub em modServerLoop.
Após este código

Código:
If GetTickCount > TempPlayer(i).spellBuffer.Timer + (Spell(Player(i).Spell(TempPlayer(i).spellBuffer.Spell)).CastTime * 1000) Then

coloque este

Código:
If Spell(Player(i).Spell(TempPlayer(i).spellBuffer.Spell)).IsLinear = False Then

Após esse código

Código:
 If Spell(Player(i).Spell(TempPlayer(i).spellBuffer.Spell)).IsLinear = False Then
                                CastSpell i, TempPlayer(i).spellBuffer.Spell, TempPlayer(i).spellBuffer.target, TempPlayer(i).spellBuffer.tType
                                TempPlayer(i).spellBuffer.Spell = 0
                                TempPlayer(i).spellBuffer.Timer = 0
                                TempPlayer(i).spellBuffer.target = 0
                                TempPlayer(i).spellBuffer.tType = 0

Coloque este.

Else
Call FireProjectile(i, GetPlayerDir(i), Spell(Player(i).Spell(TempPlayer(i).spellBuffer.Spell)).Vital, Spell(Player(i).Spell(TempPlayer(i).spellBuffer.Spell)).Range, TempPlayer(i).spellBuffer.Spell)
TempPlayer(i).spellBuffer.Spell = 0
TempPlayer(i).spellBuffer.Timer = 0
TempPlayer(i).spellBuffer.target = 0
TempPlayer(i).spellBuffer.tType = 0
End If

Em seguida, abra modCombat. Procurar

Código:
Select Case SpellCastType

Agora, cole este código acima dele

Código:
If Spell(spellnum).IsLinear = False Then

E cole este código abaixo do correspondente "End Select", logo antes de "Se HasBuffered Then".

Else
HasBuffered = True
End If

Em seguida, desça até o fundo do modCombat e cole este.

Código:
Public Sub FireProjectile(ByVal Index As Long, ByVal Dir As Long, ByVal Damage As Long, ByVal Range As Long, ByVal spellnum As Long)
Dim i As Long
Dim r As Long
Dim MapNum As Long
Dim canShoot As Boolean
Dim DidCast As Boolean

    MapNum = GetPlayerMap(Index)
   
    If Damage = 0 Then
        Damage = GetPlayerDamage(Index)
    End If

    canShoot = False
    DidCast = False

For r = 1 To Range

    If Dir = DIR_UP Then
        If GetPlayerY(Index) - r < 0 Then
            Exit Sub
        End If
        If Map(MapNum).Tile(GetPlayerX(Index), GetPlayerY(Index) - r).Type = TILE_TYPE_BLOCKED Then
            If spellnum > 0 Then
                SendAnimation MapNum, Spell(spellnum).SpellAnim, GetPlayerX(Index), GetPlayerY(Index) - r
                DidCast = True
            Else
                SendAnimation MapNum, Item(GetPlayerEquipment(Index, Weapon)).Animation, GetPlayerX(Index), GetPlayerY(Index) - r
                Exit Sub
            End If
        End If
    End If
    If Dir = DIR_DOWN Then
        If GetPlayerY(Index) + r > Map(MapNum).MaxY Then
            Exit Sub
        End If
        If Map(MapNum).Tile(GetPlayerX(Index), GetPlayerY(Index) + r).Type = TILE_TYPE_BLOCKED Then
            If spellnum > 0 Then
                SendAnimation MapNum, Spell(spellnum).SpellAnim, GetPlayerX(Index), GetPlayerY(Index) + r
                DidCast = True
            Else
                SendAnimation MapNum, Item(GetPlayerEquipment(Index, Weapon)).Animation, GetPlayerX(Index), GetPlayerY(Index) + r
                Exit Sub
            End If
        End If
    End If
    If Dir = DIR_LEFT Then
        If GetPlayerX(Index) - r < 0 Then
            Exit Sub
        End If
        If Map(MapNum).Tile(GetPlayerX(Index) - r, GetPlayerY(Index)).Type = TILE_TYPE_BLOCKED Then
            If spellnum > 0 Then
                SendAnimation MapNum, Spell(spellnum).SpellAnim, GetPlayerX(Index) - r, GetPlayerY(Index)
                DidCast = True
            Else
                SendAnimation MapNum, Item(GetPlayerEquipment(Index, Weapon)).Animation, GetPlayerX(Index) - r, GetPlayerY(Index)
                Exit Sub
            End If
        End If
    End If
    If Dir = DIR_RIGHT Then
        If GetPlayerX(Index) + r > Map(MapNum).MaxX Then
            Exit Sub
        End If
        If Map(MapNum).Tile(GetPlayerX(Index) + r, GetPlayerY(Index)).Type = TILE_TYPE_BLOCKED Then
            If spellnum > 0 Then
                SendAnimation MapNum, Spell(spellnum).SpellAnim, GetPlayerX(Index) + r, GetPlayerY(Index)
                DidCast = True
            Else
                SendAnimation MapNum, Item(GetPlayerEquipment(Index, Weapon)).Animation, GetPlayerX(Index) + r, GetPlayerY(Index)
                Exit Sub
            End If
        End If
    End If
       
    If DidCast = True Then
        Call SetPlayerVital(Index, Vitals.MP, GetPlayerVital(Index, Vitals.MP) - Spell(spellnum).MPCost)
        Call SendVital(Index, Vitals.MP)
        ' send vitals to party if in one
        If TempPlayer(Index).inParty > 0 Then SendPartyVitals TempPlayer(Index).inParty, Index
       
        TempPlayer(Index).SpellCD(spellnum) = GetTickCount + (Spell(spellnum).CDTime * 1000)
        Call SendCooldown(Index, spellnum)
        SendActionMsg MapNum, Trim$(Spell(spellnum).Name) & "!", BrightRed, ACTIONMSG_SCROLL, GetPlayerX(Index) * 32, GetPlayerY(Index) * 32
        Exit Sub
    End If
   
    For i = 1 To MAX_MAP_NPCS
       
        If CanPlayerAttackNpc(Index, i, True) Then
       
        If Dir = DIR_UP Then
            If GetPlayerX(Index) = MapNpc(MapNum).Npc(i).x And GetPlayerY(Index) - r = MapNpc(MapNum).Npc(i).y Then
                canShoot = True
            End If
        End If
        If Dir = DIR_DOWN Then
            If GetPlayerX(Index) = MapNpc(MapNum).Npc(i).x And GetPlayerY(Index) + r = MapNpc(MapNum).Npc(i).y Then
                canShoot = True
            End If
        End If
        If Dir = DIR_LEFT Then
            If GetPlayerX(Index) - r = MapNpc(MapNum).Npc(i).x And GetPlayerY(Index) = MapNpc(MapNum).Npc(i).y Then
                canShoot = True
            End If
        End If
        If Dir = DIR_RIGHT Then
            If GetPlayerX(Index) + r = MapNpc(MapNum).Npc(i).x And GetPlayerY(Index) = MapNpc(MapNum).Npc(i).y Then
                canShoot = True
            End If
        End If
       
        If canShoot = True Then
            If spellnum > 0 Then
                CastSpell Index, spellnum, i, TARGET_TYPE_NPC
                Exit Sub
            Else
                Call PlayerAttackNpc(Index, i, Damage)
                Exit Sub
            End If
        End If
       
        End If
       
    Next
   
    For i = 1 To Player_HighIndex
        If i <> Index Then
       
        If CanPlayerAttackPlayer(Index, i, True) Then
       
        If Dir = DIR_UP Then
            If GetPlayerX(Index) = GetPlayerX(i) And GetPlayerY(Index) - r = GetPlayerY(i) Then
                canShoot = True
            End If
        End If
        If Dir = DIR_DOWN Then
            If GetPlayerX(Index) = GetPlayerX(i) And GetPlayerY(Index) + r = GetPlayerY(i) Then
                canShoot = True
            End If
        End If
        If Dir = DIR_LEFT Then
            If GetPlayerX(Index) - r = GetPlayerX(i) And GetPlayerY(Index) = GetPlayerY(i) Then
                canShoot = True
            End If
        End If
        If Dir = DIR_RIGHT Then
            If GetPlayerX(Index) + r = GetPlayerX(i) And GetPlayerY(Index) = GetPlayerY(i) Then
                canShoot = True
            End If
        End If
       
        If canShoot = True Then
            If spellnum > 0 Then
                CastSpell Index, spellnum, i, TARGET_TYPE_PLAYER
                Exit Sub
            Else
                Call PlayerAttackPlayer(Index, i, Damage)
                Exit Sub
            End If
        End If
       
        End If
       
        End If
    Next
Next

End Sub

LADO CLIENTE Primeiro, faça o seu caminho para modTypes. Em

Código:
Private Type SpellRec

antes

Código:
End Type

inserir

Código:
IsLinear As Boolean

, assim como fizemos na seção de servidor.
Então, vá para frmEditor_Spell. Cole este código na parte inferior.

Código:
Private Sub chkLinear_Click()
    ' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo errorhandler

    If chkLinear.Value = 0 Then
        Spell(EditorIndex).IsLinear = False
    Else
        Spell(EditorIndex).IsLinear = True
    End If
   
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "chkLinear_Click", "frmEditor_Spell", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

Agora, abra o formulário e adicionar uma caixa de seleção como mostrado na foto. Chamá-lo chkLinear.

[Você precisa estar registrado e conectado para ver esta imagem.]

Finalmente, pesquisa

Código:
        If Spell(EditorIndex).IsAoE Then
            .chkAOE.Value = 1
        Else
            .chkAOE.Value = 0
        End If

em SpellEditorInit, e adicione ao abrigo do mesmo

Código:
        If Spell(EditorIndex).IsLinear Then
            .chkLinear.Value = 1
        Else
            .chkLinear.Value = 0
        End If

E você está feito. Estou ciente de que há outras maneiras melhores de fazer isso, mas a maneira que eu expus aqui dá-lhe uma nova sub bacana, FireProjectile, que você pode usar. Favor reportar bugs toda e qualquer, bem como dar crédito, se você usar isso. EDIT: Adicionado em apoio para o combate PVP. Não testados, como eu não tenho alguém para testá-lo com, mas eu acho que deve funcionar. EDIT2: Parcialmente reescreveu código. Agora suporta AoEs, magias de cura, os danos mana, atordoa, e pontos. : D

Creditos:Draconix


_______________________________________________________________________________________________________

[Você precisa estar registrado e conectado para ver esta imagem.]
Spoiler:
[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]

[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]
http://universogamesmmo.forumeiros.com

2Tutorial Re: Magias linear (EO V2.0) em Ter 20 Set 2011, 11:59

FilipeJF


Membro
Membro
Esse tuto não funciona, tenho certeza.

3Tutorial Re: Magias linear (EO V2.0) em Ter 20 Set 2011, 17:40

Susano'o


Membro de Honra
Membro de Honra
Verdade, ele não funciona.

4Tutorial Re: Magias linear (EO V2.0) em Qua 21 Set 2011, 20:18

Ricardo


Membro
Membro
So de olha ja percepe isso

5Tutorial Re: Magias linear (EO V2.0) em Qui 22 Set 2011, 20:44

Luucas Robeerto


Fundador
Fundador
Ricardo fala besteira não vai você nem sabe oque esta aconteçendo kkk
você falo so de olhar porque o povo acima falo que não funciona...
você nem sabe se esta faltando codigo ou tem algo errado só para começar

Uu pessoal peguei este no forum oficial vou fazer um aqui e coloca aqui
aguarde!!!


_______________________________________________________________________________________________________

[Você precisa estar registrado e conectado para ver esta imagem.]
Spoiler:
[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]

[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]
http://universogamesmmo.forumeiros.com

6Tutorial Re: Magias linear (EO V2.0) em Sab 24 Set 2011, 17:57

Ricardo


Membro
Membro
¬¬, sei muito bem, ja tinha visto esse sistema a muito tempo, ai vi varios erros e nao tenho tempo pra arrumar prefiro fazer do 0

A magia não vai sair s eu não me engano, vai apenas carregar, ou neem carregar

7Tutorial Re: Magias linear (EO V2.0) em Sab 24 Set 2011, 19:06

Luucas Robeerto


Fundador
Fundador
você esta falando que não vai funcionar porque ja testo kk

posso rir ?

bom de qualquer forma não sua necessidade de arrumar (Talvez você não saiba e fica fazendo corpinho mole) porque eu vou fazer isto...


_______________________________________________________________________________________________________

[Você precisa estar registrado e conectado para ver esta imagem.]
Spoiler:
[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]

[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]
http://universogamesmmo.forumeiros.com

8Tutorial Re: Magias linear (EO V2.0) em Ter 27 Set 2011, 20:21

GameOver


Administrador
Administrador
Oloco este tempo que fiquei ausente o Ricardo volto...
e volto falando besteira Uu

ai ricardo você e iniciante ainda não queria colocar muita areia no seu camiãozinho em kk
ricardo anda declarando o codigo padrão do visual basic kkk
(Case) esta e boa deis de quando se declara uma Case Uu vou falar pra vc mesmo em

bom lucas roberto

li o sistema ali e esta faltando coisa pra caramba...

9Tutorial Re: Magias linear (EO V2.0) Hoje à(s) 08:37

Conteúdo patrocinado


Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum