Sei que já existe um sistema de item com cooldown, mas fiz este mais completo, vc pode editar o tempo de cooldown de cada item no editor. Vamos lá
Client Side
Client Side
Primeiramente vamos criar nossa scrl que vai indicar o tempo de cooldown do nosso item do tipo consume
no editor de item dentro da fraVitals adicione uma scrl e uma label segue o exemplo
na proprietie Name da label mude para lblCD e na caption coloque Cooldown Time:
na proprietie Name da scrlBar mude para scrlCD
feito isso vamos declar a variavel que vai armazenar nosso valor que usaremos no evento Value da nossa scrl
em modTypes procure por:
dentro da scrl que criamos scrlCD de 2 clicks nela e adicione
Feito isso vamos ao servidor.
Server side
no editor de item dentro da fraVitals adicione uma scrl e uma label segue o exemplo
na proprietie Name da label mude para lblCD e na caption coloque Cooldown Time:
na proprietie Name da scrlBar mude para scrlCD
feito isso vamos declar a variavel que vai armazenar nosso valor que usaremos no evento Value da nossa scrl
em modTypes procure por:
- Código:
Private Type ItemRec
- Código:
CDTime As Long
dentro da scrl que criamos scrlCD de 2 clicks nela e adicione
- Código:
' If debug mode, handle error then exit out
If Options.Debug = 1 Then On Error GoTo errorhandler
lblCD.Caption = "Cooldown Time: " & scrlCD.Value & "s"
Item(EditorIndex).CDTime = scrlCD.Value
' Error handler
Exit Sub
errorhandler:
HandleError "scrlCD_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
Feito isso vamos ao servidor.
Server side
Em modTypes procure por
- Código:
Public Type TempPlayerRec
- Código:
ConsumeCD(1 To MAX_INV) As Long
- Código:
Private Type ItemRec
- Código:
CDTime As Long
ja declarada nossas variaveis vamos em frente.
agora em ModPlayer na procedure Useitem procure por
- Código:
Case ITEM_TYPE_CONSUME
- Código:
' add hp
If Item(itemnum).AddHP > 0 Then
adicione :
- Código:
' see if cooldown has finished
If TempPlayer(index).ConsumeCD(itemnum) > GetTickCount Then
PlayerMsg index, "Item está em recarga", BrightRed
Exit Sub
End If
TempPlayer(index).ConsumeCD(itemnum) = GetTickCount + (Item(itemnum).CDTime * 1000)
agora em ModHandleData procure pela Sub HandleSwapInvSlots
em baixo de
- Código:
If TempPlayer(index).InTrade > 0 Or TempPlayer(index).InBank Or TempPlayer(index).InShop Then Exit Sub
adicione:
- Código:
For n = 1 To MAX_INV
If TempPlayer(index).ConsumeCD(n) > GetTickCount Then
PlayerMsg index, "Não pode mover itens em recarga", BrightRed
Exit Sub
End If
Pronto feito isso você pode criar seus itens de consume e indicar seu tempo de recarga
sistema eu fiz na EO 2.0 e n encontrei nenhum bug, caso encontre ou alguma melhora comente
sistema eu fiz na EO 2.0 e n encontrei nenhum bug, caso encontre ou alguma melhora comente
Última edição por Hashirama em Ter Mar 27, 2018 2:24 pm, editado 2 vez(es)