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


    [E.O 2.0] - Sistema de Offline Profit (Minutos) - Idle AFK

    Kotol
    Kotol
    Moderador Local
    Moderador Local


    Mensagens : 77
    Créditos : 17

     [E.O 2.0] - Sistema de Offline Profit (Minutos) - Idle AFK Empty [E.O 2.0] - Sistema de Offline Profit (Minutos) - Idle AFK

    Mensagem por Kotol Sáb maio 11, 2024 10:40 am

    Pra um jogo AFK Idle, sabemos o tanto que tempo é moeda, seja ele online e principalmente offline.
    O sistema basicamente conta os minutos que você fica offline e te dá com precisão.

    Parte boa é que é so "Server~Side".

    Vamos lá, abra seu "Server.Vbp" e em "ModPlayer" , na "Sub JoinGame" , abaixo de :

    Código:
    Dim i As Long

    Declare:

    Código:
    Dim q As String
        Dim t As Long, j As Long, Total As Long

    Ainda nessa mesma sub, procure por:
    Código:
    ' Send a global message that he/she joined
        If GetPlayerAccess(Index) <= ADMIN_MONITOR Then
            Call GlobalMsg(GetPlayerName(Index) & " has joined " & Options.Game_Name & "!", JoinLeftColor)
        Else
            Call GlobalMsg(GetPlayerName(Index) & " has joined " & Options.Game_Name & "!", White)
        End If

    E logo abaixo adicione isto:
    Código:
    q = Format(Now, "hh:mm:ss")
        t = DateDiff("n", q, Player(Index).LastHourOnline)
        j = DateDiff("n", Player(Index).LastDateOnline, Date)
        Total = j - t
        Call PlayerMsg(Index, "Você ficou offline por " & Total & " minuto(s)", White)


    Ainda nesse módulo "ModPlayer", agora procure pela "Sub LeftGame" , e abaixo de:
    Código:
    ' leave party.
            Party_PlayerLeave Index


    Adicione isto: 
    Código:
    'IdleSys
            Player(Index).LastDateOnline = Date
            Player(Index).LastHourOnline = Format(Now, "hh:mm:ss")

    Agora, em "ModDatabase" , procure pela "Sub AddChar" , e abaixo disso:
    Código:
    Player(Index).Vital(Vitals.MP) = GetPlayerMaxVital(Index, Vitals.MP)

    Adicione isto:
    Código:
    'IdleSys
            Player(Index).LastDateOnline = Date
            Player(Index).LastHourOnline = Format(Now, "hh:mm:ss")


    Por fim, em "ModTypes", declare um tipo, na Type "Private Type PlayerRec" , logo abaixo antes do primeiro "End Type" , declare o tipo:
    Código:
    'IdleSys
        LastHourOnline As String * 8
        LastDateOnline As String * 10


    OBS IMPORTANTE: Se trata de um sistema que adiciona um valor no jogador e precisa checar, então contas precisarão ser refeitas, ou somente basta ter um editor de contas onde você abre a variável do jogador nova "LastDateOnline" e "LastHourOnline" e você preenche com dados zerados (Data de hoje e minuto de hoje) e pronto, que aí não precisa de deletar contas, porque TODA VEZ que o jogador loga ele checa o tempo que ele saiu com o último dia e minuto que ele estava, gravado na conta.

    E pronto! Agora você tem um sistema de IdleProfit no seu jogo, onde você tem a contagem de minutos que o jogador ficou offline!

    O que dá pra fazer com isso? 
    Bem, dá pra você usar no seu jogo e aí você escolhe se nessa parte: 
    Código:
    q = Format(Now, "hh:mm:ss")
        t = DateDiff("n", q, Player(Index).LastHourOnline)
        j = DateDiff("n", Player(Index).LastDateOnline, Date)
        Total = j - t
        Call PlayerMsg(Index, "Você ficou offline por " & Total & " minuto(s)", White)

    O "Total" , você:

    - Dá em exp -> Total x 100 = 100 de xp por minuto offline
    - Dá em gold -> Total x 10 = 10 de gold por minuto offline

    E seja feliz na sua criação de jogo online!! Avante com os projetos!!  Very Happy

      Data/hora atual: Sex Jul 26, 2024 10:25 pm