Ranking configurável
4 participantes
Página 1 de 1
Ranking configurável
Olá,
Eu havia postado esse tutorial no fórum .net, estou agora postando aqui.
Alguns alegam ter bugs mas comigo não houve problema, em caso de bugs me avisem que irei corrigir.
O sistema é bem leve e foi feito com a intenção de não prejudicar a velocidade do servidor de forma alguma, aqui vamos nós.
Primeiramente, por que configurável?
Eu fiz esse sistema para ser versátil, ele não tem limite de rank, já que você pode alterar quantos jogadores terão no ranking em apenas uma linha, e altera se ele é level, reset, guild, em apenas uma função (Veja abaixo).
Client~Side e Server~Side
modConstants
Procure por:
Abaixo adicione (Aqui você edita a quantidade maxima de jogadores no ranking):
modTypes
Procure por:
Abaixo adicione:
No final do modulo adicione:
modEnumerations
Procure por:
Acima adicione:
Procure por:
Acima adicione:
Server~Side
modHandleData
Procure por:
Abaixo adicione:
No final do modulo adicione:
modServerTcp
No final do modulo adicione:
modGameLogic
No final do modulo adicione (Aqui você altera que tipo de ranking é, como padrão é level):
modPlayer
Na Sub CheckPlayerLevelUp procure por:
E em baixo adicione:
modDataBase
No final do modulo adicione:
modGeneral
No final da Private Sub LoadGameData, antes do End Sub, adicione:
Client~Side
modHandleData
Procure por:
Abaixo adicione:
E no final do modulo adicione:
modClientTcp
No final do modulo adicione:
modInput
Procure por:
E abaixo adicione:
Na frmMain crie uma listBox com as seguintes configurações:
Créditos: boasfesta
Prints
Obs: Como padrão o ranking se inicia como todos os level como 0, isso é normal não é um bug e ele se corrige conforme os jogadores ingressam no ranking.
Qualquer bug relate nos comentários.
Aviso: este tutorial é exclusivo da MMORPG BR e não é permitido postar ele em qualquer outro fórum!
Eu havia postado esse tutorial no fórum .net, estou agora postando aqui.
Alguns alegam ter bugs mas comigo não houve problema, em caso de bugs me avisem que irei corrigir.
O sistema é bem leve e foi feito com a intenção de não prejudicar a velocidade do servidor de forma alguma, aqui vamos nós.
Primeiramente, por que configurável?
Eu fiz esse sistema para ser versátil, ele não tem limite de rank, já que você pode alterar quantos jogadores terão no ranking em apenas uma linha, e altera se ele é level, reset, guild, em apenas uma função (Veja abaixo).
Client~Side e Server~Side
modConstants
Procure por:
- Código:
Public Const MAX_PARTY_MEMBERS
Abaixo adicione (Aqui você edita a quantidade maxima de jogadores no ranking):
- Código:
Public Const MAX_RANK = 20
modTypes
Procure por:
- Código:
Public Party(1 To MAX_PARTYS) As PartyRec
Abaixo adicione:
- Código:
Public Ranking(1 To MAX_RANK) As RankingRec
Public TempRank(1 To MAX_RANK) As RankingRec
No final do modulo adicione:
- Código:
Type RankingRec
Name As String * 20
Level As Long
End Type
modEnumerations
Procure por:
- Código:
' Make sure SMSG_COUNT is below everything else
Acima adicione:
- Código:
SRank
Procure por:
- Código:
' Make sure CMSG_COUNT is below everything else
Acima adicione:
- Código:
CRank
Server~Side
modHandleData
Procure por:
- Código:
HandleDataSub(CPartyLeave) = GetAddress(AddressOf HandlePartyLeave)
Abaixo adicione:
- Código:
HandleDataSub(CRank) = GetAddress(AddressOf HandleRank)
No final do modulo adicione:
- Código:
Private Sub HandleRank(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Call SendRank(Index)
End Sub
modServerTcp
No final do modulo adicione:
- Código:
Sub SendRank(ByVal Index As Long)
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteLong SRank
Dim i As Long
For i = 1 To MAX_RANK
if Ranking(i).Name <> vbNullString then
Buffer.WriteString Ranking(i).Name
else
Buffer.WriteString "Nenhum jogador"
end if
Buffer.WriteLong Ranking(i).Level
Next i
SendDataTo Index, Buffer.ToArray
Set Buffer = Nothing
End Sub
modGameLogic
No final do modulo adicione (Aqui você altera que tipo de ranking é, como padrão é level):
- Código:
Sub CheckRanking(ByVal Index As Long)
Dim i As Byte
Dim n As Long
Dim o As Long
Dim Level As Long
Dim Nome As String
Level = GetPlayerLevel(Index)
Nome = GetPlayerName(Index)
If GetPlayerAccess(Index) > 0 Then Exit Sub
For i = 1 To MAX_RANK
If Ranking(i).Level < Level Then
If Not GetPlayerName(Index) = Ranking(i).Name Then
TempRank(i).Name = Ranking(i).Name
TempRank(i).Level = Ranking(i).Level
For n = i To MAX_RANK
If n = MAX_RANK Then Exit For
Ranking(n).Level = TempRank(n).Level
Ranking(n).Name = TempRank(n).Name
Next n
Ranking(i).Level = Level
Ranking(i).Name = Nome
For n = i To MAX_RANK
If Ranking(n).Name = Nome Then
For o = n To MAX_RANK
Ranking(o).Name = Ranking(o).Name
Ranking(o).Level = Ranking(o).Level
Next o
End If
Next n
Exit For
End If
End If
Next i
Call SaveRanking
Call SendRank(Index)
End Sub
modPlayer
Na Sub CheckPlayerLevelUp procure por:
- Código:
If level_count > 0 Then
If level_count = 1 Then
'singular
GlobalMsg GetPlayerName(Index) & " ganhou " & level_count & " level!", Brown
Else
'plural
GlobalMsg GetPlayerName(Index) & " ganhou " & level_count & " leveis!", Brown
End If
End if
E em baixo adicione:
- Código:
Call CheckRanking(Index)
modDataBase
No final do modulo adicione:
- Código:
Sub SaveRanking()
Dim i As Long
For i = 1 To MAX_RANK
Call PutVar(App.Path & "\Ranking.ini", Val(i), "Nome", Ranking(i).Name)
Call PutVar(App.Path & "\Ranking.ini", Val(i), "Level", Val(Ranking(i).Level))
Next i
End Sub
Sub LoadRanking()
Dim i As Long
For i = 1 To MAX_RANK
Ranking(i).Name = GetVar(App.Path & "\Ranking.ini", Val(i), "Nome")
Ranking(i).Level = Val(GetVar(App.Path & "\Ranking.ini", Val(i), "Level"))
Next i
End Sub
modGeneral
No final da Private Sub LoadGameData, antes do End Sub, adicione:
- Código:
Call SetStatus("Loading ranking...")
Call LoadRanking
Client~Side
modHandleData
Procure por:
- Código:
HandleDataSub(SPartyVitals) = GetAddress(AddressOf HandlePartyVitals)
Abaixo adicione:
- Código:
HandleDataSub(SRank) = GetAddress(AddressOf HandleRank)
E no final do modulo adicione:
- Código:
Sub HandleRank(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim buffer As clsBuffer
Set buffer = New clsBuffer
buffer.WriteBytes Data()
frmMain.lstRank.Clear
Dim i As Long
Dim Name As String
Dim Level As Long
For i = 1 To MAX_RANK
Name = Trim(buffer.ReadString)
Level = buffer.ReadLong
frmMain.lstRank.AddItem i & " Level:" & Level & " / Name:" & Name
Next i
End Sub
modClientTcp
No final do modulo adicione:
- Código:
Sub SendRank()
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteLong CRank
SendData Buffer.ToArray
Set Buffer = Nothing
End Sub
modInput
Procure por:
- Código:
Case "/help"
Call AddText("Social Commands:", HelpColor)
Call AddText("'msghere = Broadcast Message", HelpColor)
Call AddText("-msghere = Emote Message", HelpColor)
Call AddText("!namehere msghere = Player Message", HelpColor)
Call AddText("Available Commands: /info, /who, /fps, /fpslock", HelpColor)
E abaixo adicione:
- Código:
Case "/top"
SendRank
If frmMain.picRank.Visible Then
frmMain.lstRank.Visible = False
Else
frmMain.lstRank.Visible = True
End If
Na frmMain crie uma listBox com as seguintes configurações:
Name: lstRank
Visible = False
Créditos: boasfesta
Prints
Obs: Como padrão o ranking se inicia como todos os level como 0, isso é normal não é um bug e ele se corrige conforme os jogadores ingressam no ranking.
Qualquer bug relate nos comentários.
Aviso: este tutorial é exclusivo da MMORPG BR e não é permitido postar ele em qualquer outro fórum!
Última edição por boasfesta em Sáb 02 Fev 2013, 17:04, editado 1 vez(es)
boasfesta- Membro Sênior
- Mensagens : 292
Re: Ranking configurável
gostei mais aqui da um erro tenta resolve ai :/
dazateam- Membro Vitalicio
- Mensagens : 690
Re: Ranking configurável
Client~Side e Server~Side
modConstants
Procure por:
- Código:
Public Const MAX_PARTY_MEMBERS
Abaixo adicione (Aqui você edita a quantidade maxima de jogadores no ranking):
- Código:
Public Const MAX_RANK = 20
Preste atenção nesta parte, diz CLIENTE E SERVER
boasfesta- Membro Sênior
- Mensagens : 292
Re: Ranking configurável
tah agora eu fiz d geito q vc falo e deu esse erro
dazateam- Membro Vitalicio
- Mensagens : 690
Re: Ranking configurável
tenta por mais um End If antes do End Sub
majenkyoo- Membro Junior
- Mensagens : 69
Re: Ranking configurável
Desculpe coloquei um end if a menos, o código correto é esse
- Código:
If level_count > 0 Then
If level_count = 1 Then
'singular
GlobalMsg GetPlayerName(Index) & " ganhou " & level_count & " level!", Brown
Else
'plural
GlobalMsg GetPlayerName(Index) & " ganhou " & level_count & " leveis!", Brown
End If
End if
boasfesta- Membro Sênior
- Mensagens : 292
Re: Ranking configurável
Client~Side e Server~Side
modEnumerations
Procure por:
- Código:
' Make sure SMSG_COUNT is below everything else
Acima adicione:
- Código:
SRank
Procure por:
- Código:
' Make sure CMSG_COUNT is below everything else
Acima adicione:
- Código:
CRank
Preste atenção nesta parte, diz CLIENTE E SERVER
boasfesta- Membro Sênior
- Mensagens : 292
Re: Ranking configurável
Essa parte de CLIENT E SERVE eu fiz certo coloquei os códigos no Client e no server, mas ta aparecendo esse erro agora:
Como resolve???? Vlw
Edit:
Ei pow no ModTypes do client não tem esse código: Public Party(1 To MAX_PARTYS) As PartyRec
Como resolve???? Vlw
Edit:
Ei pow no ModTypes do client não tem esse código: Public Party(1 To MAX_PARTYS) As PartyRec
Snake- Membro
- Mensagens : 108
Re: Ranking configurável
Snake escreveu:Essa parte de CLIENT E SERVE eu fiz certo coloquei os códigos no Client e no server, mas ta aparecendo esse erro agora:
Como resolve???? Vlw
Edit:
Ei pow no ModTypes do client não tem esse código: Public Party(1 To MAX_PARTYS) As PartyRec
Snake procura só por
- Código:
Public Party
obs: aki deu tudo certo só q ñ aparece o rank nem quando eu uso o comando /top
dazateam- Membro Vitalicio
- Mensagens : 690
Re: Ranking configurável
dazateam escreveu:obs: aki deu tudo certo só q ñ aparece o rank nem quando eu uso o comando /top
Pode ser que a propriedade "Visible" da ListBox está em "False"
Se estiver use algum comando que deixe "Visible = True" pode colocar o comando dentro de algum botão, label etc...
Alguém ai me ajuda com esse erro:
Edit;
JÁ RESOLVI O ERRO !!
Quando eu tava removendo esse sistema da minha engine(tava dando muito erro o sistema) ai sem querer eu apaguei o código que declarava o Type "ButtonRec" ai eu coloquei esse Type dnv e saiu o erro xD
Snake- Membro
- Mensagens : 108
Tópicos semelhantes
» Ranking Configuravel Help
» Ranking Configurável(LevelResetsGuildPoints).txt
» Ranking de Level (até 3 no ranking) para Eclipse.
» [ALL]Ranking de Level (até 3 no ranking) para MainMenu
» [ALL]Ranking de Level (até 5 no ranking) para MainMenu
» Ranking Configurável(LevelResetsGuildPoints).txt
» Ranking de Level (até 3 no ranking) para Eclipse.
» [ALL]Ranking de Level (até 3 no ranking) para MainMenu
» [ALL]Ranking de Level (até 5 no ranking) para MainMenu
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Dom 08 Abr 2018, 18:40 por JorgeZinhoo002
» Ojkjeeeee
Seg 10 Out 2016, 23:19 por Frozen
» Naruto Great Ninja Batle
Dom 09 Out 2016, 14:29 por GuiinhoLP
» Recrutamento de um Designer para jogo de CDZ.
Sex 23 Set 2016, 18:37 por newbie123
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:09 por Eduardo
» Projeto Dbz
Qua 31 Ago 2016, 23:46 por 157
» Avaliação - Sprites Naruto
Qua 31 Ago 2016, 17:09 por 157
» [Sprites] DBZ (Plix)
Qua 31 Ago 2016, 14:13 por 157
» Super Pack - Bleach V.2
Qua 31 Ago 2016, 13:02 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:04 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:03 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:02 por 157
» [Pedido] Contador de resets na FrmMain
Sáb 13 Ago 2016, 17:45 por killers97
» [Recrutamento]
Qua 10 Ago 2016, 23:09 por Monsters
» Ajuda erro no Cliente e Servidor do EEB 2.6!
Qua 20 Jul 2016, 19:53 por Binholx
» Como criar tilesets para Eclipse Origins 3.0 (POKÉMON)
Qua 29 Jun 2016, 19:46 por Sir Aaron
» Recursos Pokemons
Qua 29 Jun 2016, 19:34 por Sir Aaron
» erro frm flash
Qua 25 maio 2016, 13:51 por vava123
» Pedido - Pack de star wars
Qui 19 maio 2016, 05:06 por edsonpet
» [Ajuda] Sobre como por o servidor on por ip fixo
Ter 17 maio 2016, 16:14 por vava123
» Illusion Dimension - O Misterio do ID: BETA TESTE ONLINE
Sex 06 maio 2016, 20:02 por LksFlorencio
» [NSME] Naruto Shinobi Maker Engine
Qua 23 Mar 2016, 15:11 por luana1457
» Script /base,/casa Igual DBZ Forces
Dom 21 Fev 2016, 07:34 por JorgeZinhoo002
» [Pedido]Colar Tsunade item sprite eclipse origin
Qui 21 Jan 2016, 07:38 por lawllietbr
» [Pedido] Elysium
Sáb 19 Dez 2015, 11:31 por luana1457
» Naruto - Recruta
Ter 15 Dez 2015, 18:40 por Uchiha ~
» [Avaliação] - Kirito from Sword Art Online; Red and Pikachu from Pokemon.
Qua 25 Nov 2015, 13:43 por Thanakii
» [Avaliação] - Kenpachi Zaraki from Bleach; Libra Shiryu From Saint Seiya.
Qua 25 Nov 2015, 12:55 por Thanakii
» Demonstração de Sprites (Á VENDA!)
Qua 25 Nov 2015, 12:40 por Thanakii
» [Sistema de Reset]Para Eclipse .
Ter 24 Nov 2015, 16:51 por VithorUchi
» Cada Guild Nascer em Certo Mapa
Qui 12 Nov 2015, 06:13 por fabiofeijó_HIT
» Dragon Ball z Fusion A Grande Volta
Qui 29 Out 2015, 15:17 por fabiofeijó_HIT
» Ajuda com Ip fixo
Seg 26 Out 2015, 16:07 por GalaxyHells15
» Como Fazer um GUI no Eclipse Origins
Dom 18 Out 2015, 22:10 por Jeanleee
» Shisui Susanoo
Dom 18 Out 2015, 20:23 por Jeanleee
» Fantasy Art Online
Dom 18 Out 2015, 16:41 por daviih123
» Ajuda !!
Seg 05 Out 2015, 12:13 por andersonzika
» como passar o usuário e senha para o MainMenu?
Seg 28 Set 2015, 22:03 por Bëzerk
» Ru time ero 13 Type mismatch
Seg 28 Set 2015, 09:08 por andredarle
» Jarvis 1.3 Download
Qua 23 Set 2015, 18:42 por soares125
» [Avaliação/Disponibilização]Árvore 64x64
Qua 23 Set 2015, 15:15 por Over~
» Mlk's Zikas Signatures
Ter 22 Set 2015, 21:15 por Aikawa Reborn'
» Pedido de Sistemas
Dom 20 Set 2015, 18:05 por cleyton_05
» [AjudaEEB]Gerador de EXP
Qua 16 Set 2015, 14:04 por Over~
» [Avaliar] Base, Humano e Goblin.
Seg 14 Set 2015, 22:51 por .iBlaz3.
» Fabrica do Tio Cronos!
Dom 13 Set 2015, 21:31 por [ADM]Cronos
» [PixelArt] Minion - Meu malvado favorito
Dom 13 Set 2015, 12:51 por [ADM]Cronos
» [Avaliar] Goku Dragon Ball Z
Qua 05 Ago 2015, 21:36 por Setrux