Primeiro, vá ao modTypes, e acima de:
Adicione:
Agora, adicione esta sub no final do modGamelogic:
Agora, acima de:
Adicione:
Agora, no Sub InitServer, abaixo de:
Adicione:
Agora no DestroyServer, abaixo de:
Adicione:
Agora crie as subs que a gente fez, em algum lugar do modDatabase (pode ser no fim), adicione:
Agora vamos adicionar a checagem, mas é o seguinte, você tem que saber aonde você vai colocar a checagem, se por exemplo for um ranking de resets, ele tem que estar na sub aonde reseta o player, se for um ranking de level, vai ser na Sub CheckPlayerLevelUp, que no caso é aonde ele passa o player de level, como não sei como funciona o sistema de resets que cada um usa, vou mostrar o modo de level que é provavelmente oque todos usam, na sub CheckPlayerLevelUp, abaixo de:
Adicione:
PRONTO! o server já acabou
na frmMirage, adicione um botao com o seguinte código:
Em algum lugar do modTypes Adicione:
Agora no modClientTCP, acima de:
Adicione:
Agora na frmMirage, adicione uma lista com o nome lstRanking
Bom e isso
Os Creditos eu desconheço se Algum Moderador Sober Edita aki :
Creditos:desconhecidos "
- Código:
Type PlayerInvRec
Num As Long
Value As Long
Dur As Long
End Type
Adicione:
- Código:
Public Const MAX_RANK = 21 '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 = GetPlayerLevel(Index) 'Valor (Aqui voce pode substituir pelo level do player, ou quantidade de resets dele (provavelmente será GetplayerResets(index)), voce quem decide
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
End If
Next i
End Sub
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
If I = 21 Then Exit Sub
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
If I = 21 Then Exit Sub
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, mas é o seguinte, você tem que saber aonde você vai colocar a checagem, se por exemplo for um ranking de resets, ele tem que estar na sub aonde reseta o player, se for um ranking de level, vai ser na Sub CheckPlayerLevelUp, que no caso é aonde ele passa o player de level, como não sei como funciona o sistema de resets que cada um usa, vou mostrar o modo de level que é provavelmente oque todos usam, na sub CheckPlayerLevelUp, abaixo de:
- Código:
Call SendDataToMap(GetPlayerMap(Index), "levelup" & SEP_CHAR & Index & END_CHAR)
Adicione:
- Código:
Call CheckRanking(Index)
PRONTO! o server já acabou
na frmMirage, adicione um botao com o seguinte código:
- Código:
Call SendData("ranking" & SEP_CHAR & END_CHAR)
Em algum lugar do modTypes Adicione:
- Código:
Public Const MAX_RANK = 21 '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 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
If I = 21 Then Exit Sub
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 e isso
Os Creditos eu desconheço se Algum Moderador Sober Edita aki :
Creditos:desconhecidos "