Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
Sistema de Rank Funcional
+9
Hooly
falcon459
Felix Blayder
mdomiciano
rangeleo
RD12
AlexsandroChaos
jiraya
Valentine
13 participantes
Página 2 de 2
Página 2 de 2 • 1, 2
Re: Sistema de Rank Funcional
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!
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!
Hooly- Novato
- Mensagens : 8
Créditos : 0
Re: Sistema de Rank Funcional
Vc Criou a LstRank e a declarou ?
_________________
Meu fã ? Meu Amigo ? Entao Use !
Minha Sign:
Minha Sign:
Re: Sistema de Rank Funcional
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.
Monotoshi- Novato
- Mensagens : 5
Créditos : 0
Re: Sistema de Rank Funcional
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 explicarthales12 escreveu:Vc Criou a LstRank e a declarou ?
Hooly- Novato
- Mensagens : 8
Créditos : 0
Re: Sistema de Rank Funcional
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
2 - Dentro da picRank crie uma ListBox chamada lstRank
3 - Crie um botão chamado cmdRefresh
Obs.: Deverá ficar assim:
4 - Marque a Opção False em Visible na picRank
5 - Neste mesmo botão cmdRefresh, dê um duplo clique e substitua:6 - Por:
- Código:
Private Sub cmdRefresh_Click()
End Sub7 - Em modConstants, procure 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 Sub8 - Embaixo adicione:
- Código:
Public Const MAX_PARTY_MEMBERS As Long = 4
9 - No final do modClientTCP, adicione:
- Código:
Public Const MAX_RANK As Long = 10
10 - Em modEnumerations, procure por:
- 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 Sub11 - Em cima desta linha e embaixo de:
- Código:
' Make sure CMSG_COUNT is below everything else
12 - Adicione:
- Código:
CPartyLeave
Obs.: Deverá ficar assim:
- Código:
CRequestRank
13 - Ainda em modEnumerations, procure por:14 - Em cima desta linha e embaixo de:
- Código:
' Make sure SMSG_COUNT is below everything else
15 - Adicione:
- Código:
SPartyVitals
16 - Em modHandleData, procure por:
- Código:
SRankUpdate
17 - Embaixo adicione:
- Código:
HandleDataSub(SPartyVitals) = GetAddress(AddressOf HandlePartyVitals)
18 - No final de modHandleData, adicione:
- Código:
HandleDataSub(SRankUpdate) = GetAddress(AddressOf HandleRankUpdate)
19 - No modInput, procure por:
- 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 Sub20 - Embaixo adicione:
- Código:
' Whos Online
Case "/who"
SendWhosOnline21 - Em modGeneral, procure por:
- Código:
' Request Rank
Case "/rank"
SendRequestRank
frmMain.picRank.Visible = Not frmMain.picRank.Visible22 - Embaixo adicione:
- Código:
frmMain.picParty.Visible = False
- Código:
frmMain.picRank.Visible = False
Abra o Servidor
1 - Em modConstants, procure por:2 - Embaixo adicione:
- Código:
Public Const MAX_PARTY_MEMBERS As Long = 4
3 - Em modEnumerations, procure por:
- Código:
Public Const MAX_RANK As Long = 10
4 - Em cima desta linha e embaixo de:
- Código:
' Make sure SMSG_COUNT is below everything else
5 - Adicione:
- Código:
SPartyVitals
6 - Ainda em modEnumerations, procure por:
- Código:
SRankUpdate
7 - Em cima desta linha e embaixo de:
- Código:
' Make sure CMSG_COUNT is below everything else
8 - Adicione:
- Código:
CPartyLeave
9 - No modHandleData, procure por:
- Código:
CRequestRank
10 - Embaixo Adicione:
- Código:
HandleDataSub(CPartyLeave) = GetAddress(AddressOf HandlePartyLeave)
11 - No final de modHandleData, adicione:
- Código:
HandleDataSub(CRequestRank) = GetAddress(AddressOf HandleRequestRank)
12 - No final de modServerTCP, adicione:
- Código:
Sub HandleRequestRank(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
SendRankUpdate index
End Sub13 - No modPlayer, procure por
- 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 Sub14 - Embaixo de :
- Código:
Sub CheckPlayerLevelUp(ByVal index As Long)
15 - Adicione:
- Código:
Dim level_count As Long
16 - Embaixo de:
- Código:
Dim RankPos As Byte
17 - Adicione:
- Código:
SendPlayerData index
18 - No final de modPlayer, adicione:
- Código:
' check rank
RankPos = CheckRank(index)
If RankPos > 0 Then
ChangeRank index, RankPos
End If19 - No final de modDatabase, 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 Sub20 - Em modTypes, procure por:
- 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 Sub21 - Embaixo adicione:
- Código:
Public Party(1 To MAX_PARTYS) As PartyRec
22 - Embaixo de:
- Código:
Public Rank(1 To MAX_RANK) As RankRec
23 - Adicione:
- Código:
Private Type OptionsRec
Game_Name As String
MOTD As String
Port As Long
Website As String
End Type24 - Em modPlayer, procure por:
- Código:
Private Type RankRec
Name As String * ACCOUNT_LENGTH
Level As Long
End Type25 - Embaixo adicione:
- Código:
' Send Resource cache
For i = 0 To ResourceCache(GetPlayerMap(index)).Resource_Count
SendResourceCacheTo index, i
Next26 - Em modGeneral, procure por:
- 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 i27 - Embaixo Adicione:
- Código:
Call SetStatus("Loading animations...")
Call LoadAnimations
- Código:
Call SetStatus("Loading rank...")
Call LoadRank
Créditos:
Valentine
Disculpen este tema no pueden volverlo a subir con sus respectivas fotos????
bangaran- Novato
- Mensagens : 5
Créditos : 0
Re: Sistema de Rank Funcional
Faz 8 anos do post do val, dúvido que ele tenha as imagens amigo. tópico muito antigo
_________________
using C# and import Python developer || Expert in Unity Engine IDE. || 2D pixel games.
Página 2 de 2 • 1, 2
Tópicos semelhantes
» sistema de rank
» Sistema de Rank
» Sistema de Rank Online
» [PEDIDO] Sistema de Rank
» [Pedido] Sistema de Rank para eo 2.0
» Sistema de Rank
» Sistema de Rank Online
» [PEDIDO] Sistema de Rank
» [Pedido] Sistema de Rank para eo 2.0
Página 2 de 2
Permissões neste sub-fórum
Não podes responder a tópicos