Client Side
Primeiramente vá ao frmEditor_Spell e encontre a ComboBox chamada "cmbType" e, adicione na list "Linear"
Agora você clica duas vezes na cmbType e Adicione o seguinte code:
No modConstant procure por:
E logo abaixo coloque:
Server Side
No modConstant procure por:
E logo abaixo coloque:
Agora vá ao modCombat e procure por:
E acima dessa linha adicione:
Primeiramente vá ao frmEditor_Spell e encontre a ComboBox chamada "cmbType" e, adicione na list "Linear"
Agora você clica duas vezes na cmbType e Adicione o seguinte code:
Código:
If cmbType.text = "Linear" Then
scrlRange.Value = 0
chkAOE.Value = 1
End If
No modConstant procure por:
Código:
Public Const SPELL_TYPE_WARP As Byte = 4
E logo abaixo coloque:
Código:
Public Const SPELL_TYPE_LINEAR As Byte = 5
Server Side
No modConstant procure por:
Código:
Public Const SPELL_TYPE_WARP As Byte = 4
E logo abaixo coloque:
Código:
Public Const SPELL_TYPE_LINEAR As Byte = 5
Agora vá ao modCombat e procure por:
Código:
find out what kind of spell it is! self cast, target or AOE
E acima dessa linha adicione:
Código:
With Spell(Spellnum)
If .Type = SPELL_TYPE_LINEAR Then
InUseLinear Index, SpellNum
Exit Sub
End If
End With
Ainda no modCombat você adiciona no Final dele:
Sub InUseLinear(ByVal Index as Integer, ByVal SpellNum as Long)
Dim I As Integer
Dim Calculate As Long
Dim Mapa As Long
Mapa = GetPlayerMap(Index)
I = 1
Do While I < Spell(SpellNum).AoE
Select Case GetPlayerDir(Index)
Case Dir_Up
Calculate = GetPlayerY(Index) - I
If Calculate <= 0 Then Exit Sub
If Map(Mapa).Tile(GetPlayerX(Index), GetPlayerY(Index) - I).Type = Tile_Type_Blocked Then Exit Sub
IsUseLinear Index, SpellNum, Mapa, GetPlayerX(Index), GetPlayerY(Index) - I
Case Dir_Down
Calculate = GetPlayerY(Index) + I
If Calculate >= Map(I).MaxY Then Exit Sub
If Map(Mapa).Tile(GetPlayerX(Index), GetPlayerY(Index) + I).Type = Tile_Type_Blocked Then Exit Sub
IsUseLinear Index, SpellNum, Mapa, GetPlayerX(Index), GetPlayerY(Index) + I
Case Dir_Left
Calculate = GetPlayerX(Index) - I
If Calculate <= 0 Then Exit Sub
If Map(Mapa).Tile(GetPlayerX(Index) - I, GetPlayerY(Index)).Type = Tile_Type_Blocked Then Exit Sub
IsUseLinear Index, SpellNum, Mapa, GetPlayerX(Index) - I, GetPlayerY(Index)
Case Dir_Right
Calculate = GetPlayerX(Index) + I
If Calculate >= Map(I).MaxX Then Exit Sub
If Map(Mapa).Tile(GetPlayerX(Index) + I, GetPlayerY(Index)).Type = Tile_Type_Blocked Then Exit Sub
IsUseLinear Index, SpellNum, Mapa, GetPlayerX(Index) + I, GetPlayerY(Index)
End Select
I = I + 1
Loop
End Sub
Function IsUseLinear(ByVal Index As Integer, ByVal SpellNum As Integer, ByVal Mapa As Integer, ByVal X As Byte, ByVal Y As Byte)
Dim I As Long
SendAnimation Mapa, Spell(SpellNum).SpellAnim, X, Y
'Loop Global Npc
For I = 1 To MAX_MAP_NPCS
If MapNpc(Mapa).Npc(I).Num > 0 And MapNpc(Mapa).Npc(I).X = X And MapNpc(Mapa).Npc(I).Y = Y And MapNpc(Mapa).Npc(I).Vital(HP) > 0 Then PlayerAttackNpc Index, I, Spell(SpellNum).Vital, SpellNum
Next
'Loop Global Player
For I = 1 To Player_HighIndex
If GetPlayerMap(I) = Mapa And GetPlayerX(I) = X And GetPlayerY(I) = Y Then PlayerAttackPlayer Index, I, Spell(SpellNum).Vital, SpellNum
Next
End Function
Spoiler :
Creditos:
V force
V force