Aldeia RPG

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

Suporte no desenvolvimento de jogos


    Sistema de Rank Funcional

    Hooly
    Hooly
    Novato
    Novato

    Mensagens : 8
    Créditos : 0

    Sistema de Rank Funcional - Página 2 Empty Re: Sistema de Rank Funcional

    Mensagem por Hooly em Dom Set 21, 2014 2:29 pm

    alguem pode dar uma força aqui? eu fiz a parte do cliente mais no final quando vou compilar me é dado um erro:

    Compile Error:
    Method or data member not found.

    no server eu não tive problema nenhum mais no client dá esse erro ai.

    me é mostrada a seguinte linha

    frmMain.lstRank.Clear (no final de modhandledata)

    é destacado o .IstRank

    da uma força ai! Neutral
    thales12
    thales12
    Membro Ativo
    Membro Ativo

    Mensagens : 318
    Créditos : 108

    Sistema de Rank Funcional - Página 2 Empty Re: Sistema de Rank Funcional

    Mensagem por thales12 em Ter Set 23, 2014 9:10 pm

    Vc Criou a LstRank e a declarou ?


    _________________
    Meu fã ? Meu Amigo ? Entao Use !

    Sistema de Rank Funcional - Página 2 Thalesfan
    Sistema de Rank Funcional - Página 2 Mv0yg8

    Minha Sign:

    Sistema de Rank Funcional - Página 2 Zkqt5e
    avatar
    Monotoshi
    Novato
    Novato

    Mensagens : 5
    Créditos : 0

    Sistema de Rank Funcional - Página 2 Empty Re: Sistema de Rank Funcional

    Mensagem por Monotoshi em Ter Set 23, 2014 10:23 pm

    Aproveitando para passar aqui,Esse sistema há um BUG vamos dizer assim(Ou Uma falha),quando começar a jogar várias pessoas e atualizar o rank constantemente,o rank irá repetir nomes & desorganizar os levels.

    Aguardo resposta valentine.
    Hooly
    Hooly
    Novato
    Novato

    Mensagens : 8
    Créditos : 0

    Sistema de Rank Funcional - Página 2 Empty Re: Sistema de Rank Funcional

    Mensagem por Hooly em Qui Set 25, 2014 9:20 am

    @thales12 escreveu:Vc Criou a LstRank e a declarou ?
    bom thales, eu criei a IstRank exatamente como mostra o tutorial, no entanto não faço ideia do que seja ''declarar'' =/ ficarei grato se puder explicar
    avatar
    bangaran
    Novato
    Novato

    Mensagens : 5
    Créditos : 0

    Sistema de Rank Funcional - Página 2 Empty Re: Sistema de Rank Funcional

    Mensagem por bangaran em Qui Jul 16, 2020 11:21 pm

    @Valentine escreveu:Olá amigos, creio que todos sabem como funciona um sistema de rank, algo imprescindível para um verdadeiro MMORPG. Sei que existem alguns sistemas de rank por ai e talvez muitos de vocês já o tenha, porém esta é uma forma simples e completa de faze-lo, sistema totalmente testado e aprovado.

    Abra o Cliente
    1 - Na frmMain, crie uma Picturebox chamada picRank
    Sistema de Rank Funcional - Página 2 57744486
    2 - Dentro da picRank crie uma ListBox chamada lstRank
    Sistema de Rank Funcional - Página 2 60970805
    3 - Crie um botão chamado cmdRefresh
    Sistema de Rank Funcional - Página 2 54104775
    Obs.: Deverá ficar assim:
    Sistema de Rank Funcional - Página 2 Imgahp
    4 - Marque a Opção False em Visible na picRank
    Sistema de Rank Funcional - Página 2 69569137
    5 - Neste mesmo botão cmdRefresh, dê um duplo clique e substitua:
    Código:
    Private Sub cmdRefresh_Click()

    End Sub
    6 - Por:
    Código:
    Private Sub cmdRefresh_Click()
        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler
        
        SendRequestRank
        
        ' Error handler
        Exit Sub
    errorhandler:
        HandleError "cmdRefresh_Click", "frmMain", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Sub
    End Sub
    7 - Em modConstants, procure por:
    Código:
    Public Const MAX_PARTY_MEMBERS As Long = 4
    8 - Embaixo adicione:
    Código:
    Public Const MAX_RANK As Long = 10
    9 - No final do modClientTCP, adicione:
    Código:
    Public Sub SendRequestRank()
    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 CRequestRank
        SendData Buffer.ToArray()
        Set Buffer = Nothing
        
        ' Error handler
        Exit Sub
    errorhandler:
        HandleError "SendRequestRank", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Sub
    End Sub
    10 - Em modEnumerations, procure por:
    Código:
    ' Make sure CMSG_COUNT is below everything else
    11 - Em cima desta linha e embaixo de:
    Código:
    CPartyLeave
    12 - Adicione:
    Código:
    CRequestRank
    Obs.: Deverá ficar assim:
    Sistema de Rank Funcional - Página 2 27115231
    13 - Ainda em modEnumerations, procure por:
    Código:
    ' Make sure SMSG_COUNT is below everything else
    14 - Em cima desta linha e embaixo de:
    Código:
    SPartyVitals
    15 - Adicione:
    Código:
    SRankUpdate
    16 - Em modHandleData, procure por:
    Código:
    HandleDataSub(SPartyVitals) = GetAddress(AddressOf HandlePartyVitals)
    17 - Embaixo adicione:
    Código:
    HandleDataSub(SRankUpdate) = GetAddress(AddressOf HandleRankUpdate)
    18 - No final de modHandleData, adicione:
    Código:
    Private Sub HandleRankUpdate(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim Buffer As clsBuffer, i As Byte

        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler
        
        Set Buffer = New clsBuffer
        Buffer.WriteBytes Data()
        
        frmMain.lstRank.Clear
        
        For i = 1 To MAX_RANK
            frmMain.lstRank.AddItem i & ":Nível: " & Buffer.ReadLong & ", Nome: " & Trim$(Buffer.ReadString)
        Next i
        
        Set Buffer = Nothing
        
        ' Error handler
        Exit Sub
    errorhandler:
        HandleError "HandleRankUpdate", "modHandleData", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Sub
    End Sub
    19 - No modInput, procure por:
    Código:
                        ' Whos Online
                    Case "/who"
                        SendWhosOnline
    20 - Embaixo adicione:
    Código:
                        ' Request Rank
                    Case "/rank"
                        SendRequestRank
                        frmMain.picRank.Visible = Not frmMain.picRank.Visible
    21 - Em modGeneral, procure por:
    Código:
    frmMain.picParty.Visible = False
    22 - Embaixo adicione:
    Código:
    frmMain.picRank.Visible = False

    Abra o Servidor
    1 - Em modConstants, procure por:
    Código:
    Public Const MAX_PARTY_MEMBERS As Long = 4
    2 - Embaixo adicione:
    Código:
    Public Const MAX_RANK As Long = 10
    3 - Em modEnumerations, procure por:
    Código:
    ' Make sure SMSG_COUNT is below everything else
    4 - Em cima desta linha e embaixo de:
    Código:
    SPartyVitals
    5 - Adicione:
    Código:
    SRankUpdate
    6 - Ainda em modEnumerations, procure por:
    Código:
    ' Make sure CMSG_COUNT is below everything else
    7 - Em cima desta linha e embaixo de:
    Código:
    CPartyLeave
    8 - Adicione:
    Código:
    CRequestRank
    9 - No modHandleData, procure por:
    Código:
    HandleDataSub(CPartyLeave) = GetAddress(AddressOf HandlePartyLeave)
    10 - Embaixo Adicione:
    Código:
    HandleDataSub(CRequestRank) = GetAddress(AddressOf HandleRequestRank)
    11 - No final de modHandleData, adicione:
    Código:
    Sub HandleRequestRank(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
        SendRankUpdate index
    End Sub
    12 - No final de modServerTCP, adicione:
    Código:
    Sub SendRankUpdate(ByVal index As Long)
        Dim i As Byte
        Dim Buffer As clsBuffer
        Set Buffer = New clsBuffer
        Buffer.WriteLong SRankUpdate
        For i = 1 To MAX_RANK
            Buffer.WriteLong Rank(i).Level
            Buffer.WriteString Trim$(Rank(i).Name)
        Next i
        SendDataTo index, Buffer.ToArray()
        Set Buffer = Nothing
    End Sub
    13 - No modPlayer, procure por
    Código:
    Sub CheckPlayerLevelUp(ByVal index As Long)
    14 - Embaixo de :
    Código:
    Dim level_count As Long
    15 - Adicione:
    Código:
    Dim RankPos As Byte
    16 - Embaixo de:
    Código:
    SendPlayerData index
    17 - Adicione:
    Código:
            ' check rank
            RankPos = CheckRank(index)
            If RankPos > 0 Then
                ChangeRank index, RankPos
            End If
    18 - No final de modPlayer, adicione:
    Código:
    Private Function CheckRank(ByVal index As Long) As Byte
    Dim i As Byte
        For i = 1 To MAX_RANK
            If GetPlayerLevel(index) > Rank(i).Level Then
                CheckRank = i
                Exit Function
            End If
        Next i
    End Function

    Private Sub ChangeRank(ByVal index As Long, RankPos As Byte)
    Dim i As Long, ClearPos As Byte

        ' if not change position in rank
        If GetPlayerName(index) = Trim$(Rank(RankPos).Name) Then
            Rank(RankPos).Level = GetPlayerLevel(index)
            SaveRank
            Exit Sub
        End If

        ' search player in rank
        For i = 1 To MAX_RANK
            If GetPlayerName(index) = Trim$(Rank(i).Name) Then
                Rank(i).Name = vbNullString
                Rank(i).Level = 0
                ClearPos = i
                Exit For
            End If
        Next i

        ' down clear position
        If ClearPos > 0 Then
            For i = ClearPos To MAX_RANK
                If i = MAX_RANK Then
                    Rank(i).Name = vbNullString
                    Rank(i).Level = 0
                Else
                    Rank(i).Name = Rank(i + 1).Name
                    Rank(i).Level = Rank(i + 1).Level
                End If
            Next i
        End If
        
        ' open space in rank to player
        For i = MAX_RANK To RankPos Step -1
            If i > RankPos Then
                Rank(i).Name = Rank(i - 1).Name
                Rank(i).Level = Rank(i - 1).Level
            End If
        Next i
        
        ' put player in rank
        Rank(RankPos).Name = GetPlayerName(index)
        Rank(RankPos).Level = GetPlayerLevel(index)
        
        SaveRank
    End Sub
    19 - No final de modDatabase, adicione:
    Código:
    Public Sub SaveRank()
    Dim filename As String, i As Byte

        filename = App.Path & "\data\rank.ini"
        
        For i = 1 To MAX_RANK
            PutVar filename, "RANK", "Name" & i, Trim$(Rank(i).Name)
            PutVar filename, "RANK", "Level" & i, Val(Rank(i).Level)
        Next i
    End Sub

    Public Sub LoadRank()
    Dim filename As String, i As Byte

        filename = App.Path & "\data\rank.ini"
        
        If FileExist(filename, True) Then
            For i = 1 To MAX_RANK
                Rank(i).Name = GetVar(filename, "RANK", "Name" & i)
                Rank(i).Level = Val(GetVar(filename, "RANK", "Level" & i))
            Next i
        Else
            SaveRank
        End If
    End Sub
    20 - Em modTypes, procure por:
    Código:
    Public Party(1 To MAX_PARTYS) As PartyRec
    21 - Embaixo adicione:
    Código:
    Public Rank(1 To MAX_RANK) As RankRec
    22 - Embaixo de:
    Código:
    Private Type OptionsRec
        Game_Name As String
        MOTD As String
        Port As Long
        Website As String
    End Type
    23 - Adicione:
    Código:
    Private Type RankRec
        Name As String * ACCOUNT_LENGTH
        Level As Long
    End Type
    24 - Em modPlayer, procure por:
    Código:
        ' Send Resource cache
        For i = 0 To ResourceCache(GetPlayerMap(index)).Resource_Count
            SendResourceCacheTo index, i
        Next
    25 - Embaixo adicione:
    Código:
        ' Check Rank
        For i = 1 To MAX_RANK
            If Trim$(Rank(i).Name) = GetPlayerName(index) Then
                Exit For
            End If
            If GetPlayerLevel(index) > Rank(i).Level Then
                Rank(i).Name = GetPlayerName(index)
                Rank(i).Level = GetPlayerLevel(index)
                SaveRank
                Exit For
            End If
        Next i
    26 - Em modGeneral, procure por:
    Código:
        Call SetStatus("Loading animations...")
        Call LoadAnimations
    27 - Embaixo Adicione:
    Código:
        Call SetStatus("Loading rank...")
        Call LoadRank

    Créditos:
    Valentine

    Disculpen este tema no pueden volverlo a subir con sus respectivas fotos????
    GallighanMaker
    GallighanMaker
    Colaborador
    Colaborador

    Medalhas : Sistema de Rank Funcional - Página 2 ZgLkiRU
    Mensagens : 945
    Créditos : 91

    Ficha do personagem
    Nível: 1
    Experiência:
    Sistema de Rank Funcional - Página 2 Left_bar_bleue0/0Sistema de Rank Funcional - Página 2 Empty_bar_bleue  (0/0)
    Vida:
    Sistema de Rank Funcional - Página 2 Left_bar_bleue30/30Sistema de Rank Funcional - Página 2 Empty_bar_bleue  (30/30)

    Sistema de Rank Funcional - Página 2 Empty Re: Sistema de Rank Funcional

    Mensagem por GallighanMaker em Qua Jul 22, 2020 9:12 am

    Faz 8 anos do post do val, dúvido que ele tenha as imagens amigo. tópico muito antigo


    _________________
    @IndieDB @Steam Concept
    Sistema de Rank Funcional - Página 2 41324
    --

    Conteúdo patrocinado

    Sistema de Rank Funcional - Página 2 Empty Re: Sistema de Rank Funcional

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui Ago 13, 2020 8:59 am