Lucas Roberto Administrador
Mensagens : 711
| Assunto: Sistema de Ranking Configuravel Qui 02 Fev 2017, 16:04 | |
| Então pessoal, tutorial não é meu mais eu uso no meu jogo e está 100%, para fazer ele é preciso ter [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] para ele funcionar como Ranking de resets é claro [size=8]', então vamos la.Mas por que configurável?-Por que eu otimizei ele pra você escolher qual valor quer usar, com simples configuração, assim se você quiser configurar ele pra ter 3 jogadores no ranking, ou 300, basta apenas adicionar 2 zeros no numero e o sistema faz o resto. Alem disso, se você quiser fazer com que ele seja um sistema de Reset, Level, Guild Points, ou o caralho a 4, tanto faz, só mudar o valor (:Então vamos ao sistema:Começando no Serve~SidePrimeiro, vá ao modTypes, e acima de:[/size] - Código:
-
Type PlayerInvRec Num As Long Value As Long Dur As Long End Type
você adiciona
- Código:
-
Public Const MAX_RANK = 20 'Este aqui é o valor de quantos players tem no rank Public Ranking(1 To MAX_RANK + 1) As RankingRec Public TempRank(1 To MAX_RANK + 1) As RankingRec
Type RankingRec Name As String Level As Long End Type
Agora, adicione esta sub no final do modGamelogic:
- Código:
-
Sub CheckRanking(ByVal Index As Long) Dim i As Long Dim n As Long Dim o As Long Dim Valor As Long Dim Nome As String Valor = GetplayerResets(index)) 'Isso aqui é só trocar e então adicionar a checagem na sub dq você escolheu rsrs Nome = GetPlayerName(Index) 'Aqui é caso voce nao use o nome do player, caso seja um ranking de guilds por exemplo, seria GetplayerGuild(index) no lugar do nome For i = 1 To MAX_RANK If Ranking(i).Level < Valor Then
'Escrever informaçoes no TempRank For n = 1 To MAX_RANK TempRank(n).Name = Ranking(n).Name TempRank(n).Level = Ranking(n).Level Next n
'Reduzir uma posição dos demais For n = i To MAX_RANK If n = MAX_RANK Then Exit For Ranking(n + 1).Level = TempRank(n).Level Ranking(n + 1).Name = TempRank(n).Name Next n
'Adicionar jogador no ranking Ranking(i).Level = Valor Ranking(i).Name = Nome
'Verificar existencia do jogador que não seja esta adicionada agora For n = i + 1 To MAX_RANK If Ranking(n).Name = Nome Then 'Se sim, subir os anteriores uma posição acima For o = n To MAX_RANK Ranking(o).Name = Ranking(o + 1).Name Ranking(o).Level = Ranking(o + 1).Level Next o End If Next n
Exit For
Agora, acima de:
- Código:
-
' ::::::::::::::::::::::::: ' :: Status Point Packet :: ' :::::::::::::::::::::::::
Adicione:
- Código:
-
Case "ranking" Packet = "ranking" & SEP_CHAR For i = 1 To MAX_RANK Packet = Packet & Ranking(i).Name & SEP_CHAR Packet = Packet & Ranking(i).Level & SEP_CHAR Next i Packet = Packet & END_CHAR Call SendDataTo(Index, Packet) Exit Sub
Agora, no Sub InitServer, abaixo de:
- Código:
-
Call SetStatus("Carregando falas...") Call LoadSpeeches
Adicione:
- Código:
-
Call SetStatus("Carregando ranking...") Call LoadRanking
Agora no DestroyServer, abaixo de:
- Código:
-
Call SetStatus("Descarregando sockets e timers...")
Adicione:
- Código:
-
Call SetStatus("Salvando Ranking...") Call SaveRanking
Agora crie as subs que a gente fez, em algum lugar do modDatabase (pode ser no fim), adicione:
- Código:
-
Sub SaveRanking() Dim i As Long For i = 1 To MAX_RANK Call SpecialPutVar(App.Path & "\TopLevel.ini", Val(i), "Nome", Ranking(i).Name) Call SpecialPutVar(App.Path & "\TopLevel.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 & "\TopLevel.ini", Val(i), "Nome") Ranking(i).Level = Val(GetVar(App.Path & "\TopLevel.ini", Val(i), "Level")) Next i End Sub
Agora vamos adicionar a checagem, lembra aquele tutorial de resets que eu mando fazer la no inicio? Então, você ja fez ele e talz, então tu vai ir no Serve~Side e vai procurar por If GetPlayerLevel(index) => 1000 Then Então abaixo de
- Código:
-
Call SavePlayer(index)
você adiciona
- Código:
-
Call CheckRanking(Index)
Agora no Client~Side
na frmMirage, adicione um botao com o seguinte código:
- Código:
-
Call SendData("ranking" & SEP_CHAR & END_CHAR)
Agora no modClientTCP, acima de:
- Código:
-
' ::::::::::::::::::::::::: ' :: Map npc data packet :: ' :::::::::::::::::::::::::
Adicione
- Código:
-
If Parse(0) = "ranking" Then frmMirage.lstRanking.Clear n = 1 For i = 1 To MAX_RANK frmMirage.lstRanking.AddItem "Nome: " & Parse(n) & " - " & Val(Parse(n + 1)) n = n + 2 Next i End If
Agora na frmMirage, adicione uma lista com o nome lstRanking
Bom pessoal, esse tutorial foi criado pelo boasfestas e como eu não achei aqui na Taberna hoje quando procurei, eu fiz o favor de traze-lo para vocês [size=8]', então é isso ae, até a próximaAtt; Admin Hbo[/size] | |
|