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

Spell Teleporte atrás do npc/player

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

1Tutorial Spell Teleporte atrás do npc/player em Sex 17 Mar 2017, 09:43

Lucas Roberto

avatar

Como Funciona
Uma spell(magia) que o uso lhe teleporta pra trás dum alvo, seja jogador ou npc.

Cliente~Side frmSpellEditor

No cmbType, adicione na propriedade List, um item chamado Spell Teleport

Agora procure por:
Código:
Public Const SPELL_TYPE_PET = 6

Adicione abaixo:
Código:
Public Const SPELL_TYPE_TELEPORT = 7

Server~Side
Procure por:
Código:
Public Const SPELL_TYPE_PET = 6

Abaixo adicione:
Código:
Public Const SPELL_TYPE_TELEPORT = 7

Procure:
Código:
' Checar se a magia é um summon

Acima adicione:
Código:
If Spell(SpellNum).Type = SPELL_TYPE_TELEPORT Then
        If Player(Index).Target > 0 Then
            Call TeleportAtras(Index)
            Call SetPlayerMP(Index, GetPlayerMP(Index) - Spell(SpellNum).MPCost)
            Call SendMP(Index)
            Casted = True
        Else
            Call PlayerMsg(Index, "Você não tem um alvo..", Red)
        End If
    End If

Agora no fim do modGameLogic adicione:
Código:
Function TileIsOpen(ByVal MapNum As Long, ByVal x As Long, ByVal y As Long) As Boolean
Dim i As Long
    TileIsOpen = True
        
        For i = 1 To MAX_PLAYERS
            If IsPlaying(i) = True Then
                If GetPlayerMap(i) = MapNum And GetPlayerX(i) = x And GetPlayerY(i) = y Then
                    TileIsOpen = False
                    Exit Function
                End If
            End If
        Next
        
        For i = 1 To MAX_MAP_NPCS
            If MapNpc(MapNum, i).num > 0 Then
                If MapNpc(MapNum, i).x = x And MapNpc(MapNum, i).y = y Then
                    TileIsOpen = False
                    Exit Function
                End If
            End If
        Next
        
    If x < 0 Then TileIsOpen = False: Exit Function
    If y < 0 Then TileIsOpen = False: Exit Function
    If x > MAX_MAPX Then TileIsOpen = False: Exit Function
    If y > MAX_MAPY Then TileIsOpen = False: Exit Function
        
    If Map(MapNum).Tile(x, y).Type <> TILE_TYPE_WALKABLE And Map(MapNum).Tile(x, y).Type <> TILE_TYPE_ITEM Then
        TileIsOpen = False
        Exit Function
    End If
    
    If Map(MapNum).Tile(x, y).Type = TILE_TYPE_BLOCKED Then
        TileIsOpen = False
        Exit Function
    End If
End Function
Sub TeleportAtras(ByVal Index As Long)
            Select Case Player(Index).TargetType
                Case TARGET_TYPE_PLAYER
                If GetPlayerMap(Index) = GetPlayerMap(Player(Index).Target) Then
                    Select Case GetPlayerDir(Player(Index).Target)
                        Case DIR_UP
                            If TileIsOpen(GetPlayerMap(Player(Index).Target), GetPlayerX(Player(Index).Target), GetPlayerY(Player(Index).Target) + 1) Then
                            Player(Index).Char(Player(Index).CharNum).Dir = DIR_UP
                            Call PlayerWarp(Index, GetPlayerMap(Player(Index).Target), GetPlayerX(Player(Index).Target), GetPlayerY(Player(Index).Target) + 1)
                            End If
                        Case DIR_DOWN
                            If TileIsOpen(GetPlayerMap(Player(Index).Target), GetPlayerX(Player(Index).Target), GetPlayerY(Player(Index).Target) - 1) Then
                            Player(Index).Char(Player(Index).CharNum).Dir = DIR_DOWN
                            Call PlayerWarp(Index, GetPlayerMap(Player(Index).Target), GetPlayerX(Player(Index).Target), GetPlayerY(Player(Index).Target) - 1)
                            End If
                        Case DIR_LEFT
                            If TileIsOpen(GetPlayerMap(Player(Index).Target), GetPlayerX(Player(Index).Target) + 1, GetPlayerY(Player(Index).Target)) Then
                            Player(Index).Char(Player(Index).CharNum).Dir = DIR_LEFT
                            Call PlayerWarp(Index, GetPlayerMap(Player(Index).Target), GetPlayerX(Player(Index).Target) + 1, GetPlayerY(Player(Index).Target))
                            End If
                        Case DIR_RIGHT
                            If TileIsOpen(GetPlayerMap(Player(Index).Target), GetPlayerX(Player(Index).Target) - 1, GetPlayerY(Player(Index).Target)) Then
                            Player(Index).Char(Player(Index).CharNum).Dir = DIR_RIGHT
                            Call PlayerWarp(Index, GetPlayerMap(Player(Index).Target), GetPlayerX(Player(Index).Target) - 1, GetPlayerY(Player(Index).Target))
                            End If
                    End Select
                End If
                Case TARGET_TYPE_NPC
                If MapNpc(GetPlayerMap(Index), Player(Index).Target).num > 0 Then
                    Select Case MapNpc(GetPlayerMap(Index), Player(Index).Target).Dir
                        Case DIR_UP
                            If TileIsOpen(GetPlayerMap(Index), MapNpc(GetPlayerMap(Index), Player(Index).Target).x, MapNpc(GetPlayerMap(Index), Player(Index).Target).y + 1) Then
                            Player(Index).Char(Player(Index).CharNum).Dir = DIR_UP
                            Call PlayerWarp(Index, GetPlayerMap(Index), MapNpc(GetPlayerMap(Index), Player(Index).Target).x, MapNpc(GetPlayerMap(Index), Player(Index).Target).y + 1, False)
                            End If
                        Case DIR_DOWN
                            If TileIsOpen(GetPlayerMap(Index), MapNpc(GetPlayerMap(Index), Player(Index).Target).x, MapNpc(GetPlayerMap(Index), Player(Index).Target).y - 1) Then
                            Player(Index).Char(Player(Index).CharNum).Dir = DIR_DOWN
                            Call PlayerWarp(Index, GetPlayerMap(Index), MapNpc(GetPlayerMap(Index), Player(Index).Target).x, MapNpc(GetPlayerMap(Index), Player(Index).Target).y - 1, False)
                            End If
                        Case DIR_LEFT
                            If TileIsOpen(GetPlayerMap(Index), MapNpc(GetPlayerMap(Index), Player(Index).Target).x + 1, MapNpc(GetPlayerMap(Index), Player(Index).Target).y) Then
                            Player(Index).Char(Player(Index).CharNum).Dir = DIR_LEFT
                            Call PlayerWarp(Index, GetPlayerMap(Index), MapNpc(GetPlayerMap(Index), Player(Index).Target).x + 1, MapNpc(GetPlayerMap(Index), Player(Index).Target).y, False)
                            End If
                        Case DIR_RIGHT
                            If TileIsOpen(GetPlayerMap(Index), MapNpc(GetPlayerMap(Index), Player(Index).Target).x - 1, MapNpc(GetPlayerMap(Index), Player(Index).Target).y) Then
                            Player(Index).Char(Player(Index).CharNum).Dir = DIR_RIGHT
                            Call PlayerWarp(Index, GetPlayerMap(Index), MapNpc(GetPlayerMap(Index), Player(Index).Target).x - 1, MapNpc(GetPlayerMap(Index), Player(Index).Target).y, False)
                            End If
                    End Select
                End If
            End Select
End Sub


Fim

Créditos~
Renan


_______________________________________________________________________________________________________


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

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