Lucas Roberto Administrador
Mensagens : 711
| Assunto: Spell Teleporte atrás do npc/player Sex 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 | |
|