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
 
InícioInício  PortalPortal  EventosEventos  Registrar-seRegistrar-se  Conectar-seConectar-se  
Ola Convidado, Seja Bem vindo a equipe lhe deseja boa sorte no seu projeto!

Compartilhe | 
 

  Spell Teleporte atrás do npc/player

Ir em baixo 
AutorMensagem
Lucas Roberto
Administrador
Administrador
avatar

Mensagens : 709

MensagemAssunto: Spell Teleporte atrás do npc/player   Sex 17 Mar 2017, 09: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

_______________________________________________________________________________________________________


[Você precisa estar registrado e conectado para ver esta imagem.]
Voltar ao Topo Ir em baixo
http://universogamesmmo.forumeiros.com
 
Spell Teleporte atrás do npc/player
Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Amigo secreto - 2012 (os jogos de um ano atrás!)
» Player Wish - Nintendo vai distribuir Arceus, Mew e outros
» [QUASE OFF] Correndo atrás de um sonho...
» Jogo Iniciado no Greek Pub. - 06-05-15
» [Guia] Mecanismos - O básico

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Universo Games :: Tutoriais :: Tutoriais Aprovados-
Ir para: