Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


5 participantes

    [Complemento]Missão por botão

    Dooolly
    Dooolly
    Colaborador
    Colaborador


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

    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 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 : 353
    Créditos : 35

    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 Ter Ago 28, 2018 11:48 pm

    Show! Vlw dolly   I love you +1cred
    Valentine
    Valentine
    Administrador
    Administrador


    Medalhas : [Complemento]Missão por botão ZgLkiRU
    Mensagens : 5345
    Créditos : 1164

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

    Mensagem por Valentine Qua Ago 29, 2018 10:46 am

    Missão por botão? Que?
    GalaxyHells
    GalaxyHells
    Ocasional
    Ocasional


    Mensagens : 196
    Créditos : 22

    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 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 : 128
    Créditos : 8

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

    Mensagem por Corrupted 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: Dom Nov 24, 2024 1:20 am