Universo Games
Ola , Convidado

 Spell Teleporte atrás do npc/player Logo1110

Você ainda não e cadastrado então cadastre-se e veja todas as atualizações no Mundo RPG!!!
Universo Games
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Universo Games

Suporte e Desenvolvimento só no Universo Games
 
InícioInício  PortalPortal  EventosEventos  PublicaçõesPublicações  Últimas imagensÚltimas imagens  RegistarRegistar  EntrarEntrar  
Ola Convidado, Seja Bem vindo a equipe lhe deseja boa sorte no seu projeto!

 

  Spell Teleporte atrás do npc/player

Ir para baixo 
AutorMensagem
Lucas Roberto
Administrador
Administrador
Lucas Roberto


Mensagens : 711

 Spell Teleporte atrás do npc/player Empty
MensagemAssunto: Spell Teleporte atrás do npc/player    Spell Teleporte atrás do npc/player EmptySex 17 Mar 2017, 10:43

Citação :

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
Ir para o topo Ir para baixo
https://universogamesmmo.forumeiros.com
 
Spell Teleporte atrás do npc/player
Ir para o topo 
Página 1 de 1
 Tópicos semelhantes
-
» Teleporte Vip
» Player Atravessando Player
» Spell Linear 100%
» [ALL]Spell Memorized
» Magia Reta (Spell Linear)

Permissões neste sub-fórumNão podes responder a tópicos
Universo Games :: Criação de Jogos :: Elysium Diamond :: Tutoriais :: Tutoriais Aprovados-
Ir para: