Suporte no desenvolvimento de jogos


    [Complemento]Missão por botão

    Dooolly
    Dooolly
    Moderador Global
    Moderador Global

    Medalhas : [Complemento]Missão por botão Trophy12
    Mensagens : 1227
    Créditos : 149
    Cash : 0

    Ficha do personagem
    Nível: 1
    Experiência:
    [Complemento]Missão por botão Left_bar_bleue0/0[Complemento]Missão por botão Empty_bar_bleue  (0/0)
    Vida:
    [Complemento]Missão por botão Left_bar_bleue30/30[Complemento]Missão por botão Empty_bar_bleue  (30/30)

    [Complemento]Missão por botão Empty [Complemento]Missão por botão

    Mensagem por Dooolly em Ter Ago 28, 2018 11:34 pm

    Missão por Botão


    A pedido de um membro fiz esse sistema super básico onde o jogador pode solicitar um nova missão a partir de um botão sem precisar interagir com algum NPC, é um sistema razoavelmente simples e requer o sistema de quests do alatar(Link do Sistema). Bom vamos ao sistema!


    Client-Side


    Primeiro vamos adicionar em modEnumerations, procure por:

    Código:
    ' Make sure CMSG_COUNT is below everything else
        CMSG_COUNT

    Acima adicione:

    Código:
    CQuestID

    Agora em modClientTCP, no final adicione:

    Código:
    ' Função que solicita ao servidor a missão
    Sub SendPlayerQuest(ByVal QuestId As Long)
        Dim Buffer As clsBuffer

        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler
        
        Set Buffer = New clsBuffer
        Buffer.WriteLong CQuestID ' Identificador do pacote
        Buffer.WriteLong QuestId ' Identificador da missão
        SendData Buffer.ToArray() ' Envia para o servidor o pacote
        Set Buffer = Nothing

        ' Error handler
        Exit Sub
    errorhandler:
        HandleError "SendPlayerQuest", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Sub
    End Sub

    Cliente finalizado!
    Sempre que quiser solicitar uma nova missão, dentro do botão ou label adicione:

    Código:
    SendPlayerQuest QuestId

    onde esse QuestId será o índice da missão la no editor, tipo, caso queira colocar a primeira missão, você usar
    SendPlayerQuest 1


    __________________________________________________________________________________

    Server-Side




    Em modEnumerations, procure por:
    Código:
    ' Make sure CMSG_COUNT is below everything else
        CMSG_COUNT

    Acima adicione:
    Código:
    CQuestID

    Em modHandleData, procure por:
    Código:
    HandleDataSub(CQuestLogUpdate) = GetAddress(AddressOf HandleQuestLogUpdate)

    Abaixo adicione:
    Código:
    HandleDataSub(CQuestID) = GetAddress(AddressOf HandlePlayerQuest)

    Agora no final de modHandleData, adicione:
    Código:
    ' Função que recebe os dados do cliente
    Sub HandlePlayerQuest(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
        Dim Buffer As clsBuffer
        Dim QuestId As Long
        
        Set Buffer = New clsBuffer ' Cria um novo objeto do tipo pacote buffer
        Buffer.WriteBytes Data() ' Grava o dados do pacote no buffer
        QuestId = Buffer.ReadLong ' Recebe o indice da missão
          
        ' Verifica se a missão pode ser iniciada
        If CanStartQuest(index, QuestId) Then
            ' Envia para o cliente que a nova missão
            QuestMessage index, QuestId, Trim$(Quest(QuestId).Chat(1)), QuestId
            Exit Sub
        End If
        
        ' Verificar se a missão está em progresso
        If QuestInProgress(index, QuestId) Then
            ' Envia uma mensagem para o jogador
            QuestMessage index, QuestId, Trim$(Quest(QuestId).Chat(2)), 0
            Exit Sub
        End If
    End Sub

    Pronto, agora só testar!


    Última edição por Dooolly em Qua Ago 29, 2018 1:36 am, editado 2 vez(es)
    Akio
    Akio
    Membro Ativo
    Membro Ativo

    Mensagens : 336
    Créditos : 27
    Cash : 5

    Ficha do personagem
    Nível: 1
    Experiência:
    [Complemento]Missão por botão Left_bar_bleue0/0[Complemento]Missão por botão Empty_bar_bleue  (0/0)
    Vida:
    [Complemento]Missão por botão Left_bar_bleue30/30[Complemento]Missão por botão Empty_bar_bleue  (30/30)

    [Complemento]Missão por botão Empty Re: [Complemento]Missão por botão

    Mensagem por Akio em Ter Ago 28, 2018 11:48 pm

    Show! Vlw dolly   I love you +1cred


    _________________
    [Complemento]Missão por botão Sem-tz10
    Blast
    Blast
    Administrador
    Administrador

    Medalhas : [Complemento]Missão por botão 94Jxv[Complemento]Missão por botão ZgLkiRU
    Mensagens : 4998
    Créditos : 1106
    Cash : 0

    [Complemento]Missão por botão Empty Re: [Complemento]Missão por botão

    Mensagem por Blast em Qua Ago 29, 2018 10:46 am

    Missão por botão? Que?


    _________________
    [Complemento]Missão por botão AIymW
    GalaxyHells
    GalaxyHells
    Ocasional
    Ocasional

    Mensagens : 189
    Créditos : 17
    Cash : 0

    Ficha do personagem
    Nível: 1
    Experiência:
    [Complemento]Missão por botão Left_bar_bleue0/0[Complemento]Missão por botão Empty_bar_bleue  (0/0)
    Vida:
    [Complemento]Missão por botão Left_bar_bleue30/30[Complemento]Missão por botão Empty_bar_bleue  (30/30)

    [Complemento]Missão por botão Empty Re: [Complemento]Missão por botão

    Mensagem por GalaxyHells em Qua Ago 29, 2018 11:17 am

    Muito Bom, fazia um tempo que eu queria algo assim +1Cred


    Última edição por GalaxyHells em Qua Ago 29, 2018 11:20 am, editado 1 vez(es)


    _________________
    [Complemento]Missão por botão 90yel0
    avatar
    Corrupted
    Semi-Experiente
    Semi-Experiente

    Mensagens : 126
    Créditos : 8
    Cash : 0

    [Complemento]Missão por botão Empty Re: [Complemento]Missão por botão

    Mensagem por Corrupted em Qua Ago 29, 2018 11:18 am

    lindo de bonito hein

    Conteúdo patrocinado

    [Complemento]Missão por botão Empty Re: [Complemento]Missão por botão

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sab Set 21, 2019 5:12 pm