Esse Tutorial Serve Para As Balls(Arrows) Gastarem Sua MP
Utilize o Head "ArrowMPCost" do arquivo anexado Extras.ini como base para isso.
Agora No Server Procure

Código:

' Número de classes
Public Max_Classes As Byte
Public Map() As MapRec
Public TempTile() As TempTileRec
Public PlayersOnMap() As Long
Public Player() As AccountRec
Public Class() As ClassRec
Public Item() As ItemRec
Public Npc() As NpcRec
Public MapItem() As MapItemRec
Public MapNpc() As MapNpcRec
Public Grid() As GridRec
Public Shop() As ShopRec
Public Spell() As SpellRec
Public Guild() As GuildRec
Public Party() As PartyRec
Public Emoticons() As EmoRec
Public Experience() As Long
Public CMessages(1 To 6) As CMRec
Public Speech() As SpeechRec


Abaixo Add

Código:

Public ArrowMPCost(1 To 50) As Long 'Mude 50 para o número máximo de itens, caso contrário estará dar erro!


Procure

Código:

Sub LoadExps()
    Dim FileName As String
    Dim i As Long

    Call CheckExps
    FileName = App.Path & "\Experiência.ini"

    For i = 1 To MAX_LEVEL
        Call SetStatus("Carregando experiência... " & Int((i / MAX_LEVEL) * 100) & "%")
        Experience(i) = GetVar(FileName, "EXPERIENCE", "Exp" & i)

        DoEvents
    Next

End Sub


Abaixo Add

Código:

Sub LoadArrowCost()
    Dim i As Integer
    For i = 1 To MAX_ITEMS
        ArrowMPCost(i) = Val(GetVar(App.Path & "\Extras.ini", "ArrowMPCost", Trim$(i)))
    Next
End Sub


Agora Procure Por

Código:

Call SetStatus("Carregando itens...")
    Call LoadItems


Abaixo Add

Código:

Call SetStatus("Carregando custo de flechas...")
    Call LoadArrowCost


Procure

Código:

 Case "attack"

            If GetPlayerWeaponSlot(Index) > 0 Then
                If Item(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))).Data3 > 0 Then
                    Call SendDataToMap(GetPlayerMap(Index), "checkarrows" & SEP_CHAR & Index & SEP_CHAR & Item(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))).Data3 & SEP_CHAR & GetPlayerDir(Index) & END_CHAR)
                    Exit Sub
                End If
            End If


Substitua Isso ^ Por

Código:

Case "attack"

            If GetPlayerWeaponSlot(Index) > 0 Then
                If Item(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))).Data3 > 0 Then
                    If GetPlayerMP(Index) >= ArrowMPCost(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))) Then
                        Call SetPlayerMP(Index, GetPlayerMP(Index) - ArrowMPCost(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))))
                        Call SendDataToMap(GetPlayerMap(Index), "checkarrows" & SEP_CHAR & Index & SEP_CHAR & Item(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))).Data3 & SEP_CHAR & GetPlayerDir(Index) & END_CHAR)
                        Call SendPlayerData(Index)
                        Exit Sub
                    Else
                        Call PlayerMsg(Index, "Você precisa de " & ArrowMPCost(GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))) & " pontos de mana para isto!", 5)
                        Call SendPlayerData(Index)
                    End If
                End If
            End If


Creditos: Drumond(PRODEV)