Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Option Explicit
- '@@ Autor: G Toyz
- '@@ Fecha: 04/10
- '@@ Creación: 22:23
- Private Const Max_Search As Byte = 20 '@@ Máximo de usuarios buscando.
- Private Const refError As String = "No cumples los requisitos"
- Private Type User_Searching
- ID As Integer
- Time_Searching As Integer
- MMR_Rank As Integer
- End Type
- Private Type Searching
- Searching(1 To Max_Search) As User_Searching
- Users_Searching As Byte
- End Type
- Private Retos_Searching As Searching
- '_
- Public Sub Search(ByVal ID As Integer)
- '@@ Lo ponemos en búsqueda de reto.
- If Can_Search(ID) = False Then Exit Sub
- With Retos_Searching
- .Users_Searching = .Users_Searching + 1
- .Searching(.Users_Searching).ID = ID
- .Searching(.Users_Searching).MMR_Rank = 100
- .Searching(.Users_Searching).Time_Searching = 0
- UserList(ID).flags.ArraySearching = .Users_Searching
- Call WriteConsoleMsg(ID, "Buscando reto...", FontTypeNames.FONTTYPE_INFOBOLD)
- Call Matching(ID)
- End With
- End Sub
- Private Sub Matching(ByVal ID As Integer)
- '@@ Tratamos de emparejar.
- Dim LoopC As Long
- With Retos_Searching
- For LoopC = 1 To Max_Search
- If Compare_MMR(.Searching(LoopC).ID, ID) = True Then
- If .Searching(LoopC).ID = ID Then Exit Sub
- '@@ RETOS
- Call Cancel_Search(.Searching(LoopC).ID)
- Call Cancel_Search(ID)
- Call WriteConsoleMsg(ID, "Has encontrado un rival!", FontTypeNames.FONTTYPE_INFOBOLD)
- Exit For
- End If
- Next LoopC
- End With
- End Sub
- Private Function Compare_MMR(ByVal Searcher_Old As Integer, ByVal Searcher_New As Integer) As Boolean
- '@@ Comparamos MMR.
- Compare_MMR = False
- If UserList(Searcher_Old).Stats.MMR > UserList(Searcher_New).Stats.MMR + Retos_Searching.Searching(UserList(Searcher_New).flags.ArraySearching).MMR_Rank Then Exit Function
- If UserList(Searcher_Old).Stats.MMR < UserList(Searcher_New).Stats.MMR - Retos_Searching.Searching(UserList(Searcher_New).flags.ArraySearching).MMR_Rank Then Exit Function
- Compare_MMR = True
- End Function
- Public Sub Cancel_Search(ByVal ID As Integer)
- '@@ Cancela la búsqueda de un usuario, también sirve para cuando se desconecta _
- y para cuando entra a un reto.
- Dim LoopC As Long
- With Retos_Searching
- For LoopC = UserList(ID).flags.ArraySearching To .Users_Searching - 1
- .Searching(LoopC).ID = .Searching(LoopC + 1).ID
- Next LoopC
- .Searching(.Users_Searching).ID = 0
- UserList(ID).flags.ArraySearching = 0
- .Users_Searching = .Users_Searching - 1
- WriteConsoleMsg ID, "Has cancelado la búsqueda", FontTypeNames.FONTTYPE_INFOBOLD
- End With
- End Sub
- Private Function Can_Search(ByVal ID As Integer) As Boolean
- '@@ ¿Puede buscar retos?
- Can_Search = False
- With UserList(ID)
- If .flags.ArraySearching > 0 Then
- Call WriteConsoleMsg(ID, refError, FontTypeNames.FONTTYPE_INFOBOLD)
- Exit Function
- End If
- If .flags.Muerto Then
- Call WriteConsoleMsg(ID, refError, FontTypeNames.FONTTYPE_INFOBOLD)
- Exit Function
- End If
- If Retos_Searching.Users_Searching = 20 Then
- Call WriteConsoleMsg(ID, "Búsqueda de retos llena", FontTypeNames.FONTTYPE_INFOBOLD)
- Exit Function
- End If
- End With
- Can_Search = True
- End Function
- Private Sub Extend_MMR_Rank(ByVal ID As Integer)
- '@@ Extendemos el rango de su MMR a medida que pasa el tiempo buscando.
- With Retos_Searching
- If .Searching(ID).Time_Searching Mod 10 = 0 Then
- .Searching(ID).MMR_Rank = .Searching(ID).MMR_Rank + 10
- Call Matching(ID)
- End If
- End With
- End Sub
- Public Sub Extend_MMR_Rank_Time(ByVal ID As Integer)
- '@@ El tiempo que lleva buscando un reto...
- With Retos_Searching
- .Searching(UserList(ID).flags.ArraySearching).Time_Searching = .Searching(UserList(ID).flags.ArraySearching).Time_Searching + 1
- If .Searching(UserList(ID).flags.ArraySearching).MMR_Rank = 200 Then Exit Sub
- Call Extend_MMR_Rank(ID)
- End With
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement