Suporte ao desenvolvimento de jogos!


    Item consume com cooldown

    Compartilhe
    avatar
    Hashirama
    Experiente
    Experiente

    Mensagens : 401
    Créditos : 130

    Item consume com cooldown

    Mensagem por Hashirama em Ter Mar 27, 2018 4:10 am

    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


    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:
    Código:
    Private Type ItemRec
    no final antes do End type adicione
    Código:
    CDTime As Long
    feito isso vamos voltar para nossa frmEditorItem
    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
    no final antes do end types adicione:
    Código:
    ConsumeCD(1 To MAX_INV) As Long
    agora ainda em modTypes procure por
    Código:
    Private Type ItemRec
    dentro dela, no final antes do end type adicione:
    Código:
    CDTime As Long
    poderíamos trabalhar com Byte ja que provavelmente vc não vai adicionar mais que 255 segundos de cooldown no item D:

    ja declarada nossas variaveis vamos em frente.
    agora em ModPlayer na procedure Useitem procure por 
    Código:
    Case ITEM_TYPE_CONSUME
    acima de :
    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








    Última edição por Hashirama em Ter Mar 27, 2018 2:24 pm, editado 2 vez(es)


    _________________
    Apoia nosso projeto? use nossa assinatura

    Código:
    [color=#ff9900][size=10]Eu Apoio Esse Projeto![/size][/color]
    [url=http://www.aldeiarpg.com/t11184-naruto-shinobi-online][img]http://i.imgur.com/B9M26iU.png[/img][/url]

    avatar
    Valentine
    Administrador
    Administrador

    Medalhas :
    Mensagens : 4961
    Créditos : 1055

    Re: Item consume com cooldown

    Mensagem por Valentine em Ter Mar 27, 2018 7:56 am

    Boa, Hashirama.

    + 1 crédito.


    _________________
    avatar
    Profane ~
    Administrador
    Administrador

    Mensagens : 728
    Créditos : 125

    Re: Item consume com cooldown

    Mensagem por Profane ~ em Ter Mar 27, 2018 12:50 pm

    Pelo Lido, a estrutura ta certinha >
    Muito bom, seu primeiro sistema é?! Naisu!!!!!

    E sobre o que comentou do " Byte ", ainda bem que optou por long, ainda mais na cadeia usada, algums jogos podem ter itens que levam até sei lá 1h para poderem ser usados novamente.

    Mas lembrem-se que por ter sido posto no "TempPlayerRec" é um valor temporário. O jogador deslogando, ele resetará este valor.

    Lembre-se também de fazer a limpeza do valor no LeftGame, por parte do jogador no Servidor.

    Fora isso tudo ok <3


    _________________
    "If you don't belong here, just build a place where you do."
    avatar
    Dooolly
    Moderador Global
    Moderador Global

    Medalhas :
    Mensagens : 1236
    Créditos : 146

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    Re: Item consume com cooldown

    Mensagem por Dooolly em Ter Mar 27, 2018 1:06 pm

    @Profane ~ escreveu:Pelo Lido, a estrutura ta certinha ><!

    Muito bom, seu primeiro sistema é?! Naisu!!!!!

    E sobre o que comentou do " Byte ", ainda bem que optou por long, ainda mais na cadeia usada, algums jogos podem ter itens que levam até sei lá 1h para poderem ser usados novamente.

    Mas lembrem-se que por ter sido posto no "TempPlayerRec" é um valor temporário. O jogador deslogando, ele resetará este valor.

    Lembre-se também de fazer a limpeza do valor no LeftGame, por parte do jogador no Servidor.

    Fora isso tudo ok <3

    Por ser no TempPlayer, eu recomendária usar um byte mesmo, e dentro da função usar um multiplicador.

    @Topic:
    Otimo tutorial, estava realmente precisando de um tuto como esse, obrigador por compartilhar... +1 <3
    avatar
    silipinho
    Iniciante
    Iniciante

    Mensagens : 71
    Créditos : 13

    Re: Item consume com cooldown

    Mensagem por silipinho em Ter Mar 27, 2018 1:11 pm

    Muito bom isso ajuda mt, ate pq existem consumes uma mais "roubada" q a outra assim da pra fazer com q ela tenha um tempo de recarga maior que uma simples pot de hp por exemplo!
    nessa parte que manda procurar por isso "Public Type ItemRec" não seria: Private Type ItemRec?
    avatar
    Hashirama
    Experiente
    Experiente

    Mensagens : 401
    Créditos : 130

    Re: Item consume com cooldown

    Mensagem por Hashirama em Ter Mar 27, 2018 1:53 pm

    vlw galera, corrigi algumas coisas no tópico, ainda hoje posto o tutorial NPC de teleporte que eu vi que alguns pediram. abraços


    _________________
    Apoia nosso projeto? use nossa assinatura

    Código:
    [color=#ff9900][size=10]Eu Apoio Esse Projeto![/size][/color]
    [url=http://www.aldeiarpg.com/t11184-naruto-shinobi-online][img]http://i.imgur.com/B9M26iU.png[/img][/url]

    avatar
    GallighanMaker
    Desenvolvedor
    Desenvolvedor

    Medalhas :
    Mensagens : 831
    Créditos : 82

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    Re: Item consume com cooldown

    Mensagem por GallighanMaker em Ter Mar 27, 2018 7:30 pm

    Muito bom velho, +1 cred


    _________________
    @IndieDB @Steam Concept
    --
    avatar
    GalaxyHells
    Ocasional
    Ocasional

    Mensagens : 179
    Créditos : 10

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    Re: Item consume com cooldown

    Mensagem por GalaxyHells em Qua Maio 02, 2018 5:57 pm

    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
       Next

    Faltou um "Next"  Ali.

    Nice sistema.


    _________________

    Conteúdo patrocinado

    Re: Item consume com cooldown

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sex Set 21, 2018 2:40 pm