[Aporte] Nuevo módulo para los clanes

Shak

Policia malo
Miembro del equipo
Developer
Especialista de Argentum
#1
Bueno hace poco hice esto, me gustó la forma ordenada que tome para hacerlo, además de que agregué todo en un solo módulo. Cualquier crítica es bienvenida. Aún faltan cosas pero lo hice pensando en mi servidor.

Tenemos que eliminar todo el viejo sistema, y estó es solo el módulo. Por lo tanto deberán crear los paquetes, pero si se les dificulta y lo quieren usar, comentan acá abajo y los ayudo.

Esto es lo que está creado hasta el momento: (La mayoría testeado)


Módulo "Guild.bas"

Código:
'AGREGAR USER A LA GUILD
'Call Guild.g_Add_CharNew(UserIndex, UCase$(UserName), GuildIndex)
'MENAJE A LA GUILD
'Call Guild.g_ConsoleMsg(GuildIndex, "Mensaje", Font)
' CREAR ARCHIVO INICIAL
'Call Guild.g_CreateArchive
'ECHAR USUARIO
'Call Guild.g_EcharChar(UserIndex, UCase$(UserName), GuildIndex)
'FUNDAR GUILD
'Call Guild.g_Found(UserIndex, GuildIndex, GuildName, Desc, Alineation)
'CARGAR GUILD ESPECIFICA
'Call Guild.g_Load(GuildIndex)
'CARGAR TODAS
'Call Guild.g_LoadAll
' ONLINE CLAN
'Call Guild.g_Online(UserIndex)
' RECHAZAR SOLICITUD
'Call Guild.g_Rechace_Request(UserIndex, UCase$(UserName), GuildIndex)
'REQUERIR INGRESO AL CLAN
'Call Guild.g_Request(UserIndex, GuildIndex)
'GUARDAR TODOS
'Call Guild.g_SaveAll
'CHEQUEO PARA VER SI DOS USERS ESTAN EN LA MISMA GUILD.
'If Guild.SameClan(UserIndex, User2) Then

Option Explicit

Public Enum GuildProc
    CREATEARCHIVE = 0
    SAVEINFO = 1
    LOADINFO = 2
    LOADINFO_ALL = 3
    SAVEINFO_ALL = 4
    FUNDATION = 5
  

    'The guild is created
    ACCEPT_CHAR = 6
    NULL_CHAR = 7
    MESSAGE_GUILD = 8
    MEMBERS_ONLINE = 9
    CHANGEDESC = 10
    CHANGEALINEATION = 11
    SOLICITED = 12
    RECHACE_SOLICITED = 13
End Enum

Public Enum GuildAlineation
    NEUTRAL = 0
    CRIM = 1
    CIU = 2
End Enum

Public Enum GuildRange
    None = 0
    FOUNDER = 1
    LEADER = 2
    SUB_LEADER = 3
End Enum

Private Const MAX_GUILDS As Byte = 50
Private Const MAX_MEMBERS_GUILD As Byte = 8
Private Const MAX_REQUESTS As Byte = 25
Private Const GUILD_ARCHIVE As String = "GUILDS.DAT"
Private Const GUILD_PATH As String = "\GUILDS\"

Private Type UserGuild
    UserName As String
    Range As GuildRange
End Type

Private Type tGuild
    Name As String
    Desc As String
    NumMembers As Byte
    Member(0 To MAX_MEMBERS_GUILD - 1) As UserGuild
    Alineation As GuildAlineation
    PlayerRequests() As String
    CreationDate As String
End Type

Public Guilds(0 To MAX_GUILDS - 1) As tGuild
Dim ErrorMsg As String

Public Sub g_CreateArchive()
    ' • Creamos el archivo inicial Guilds.Dat
    Dim intFile As Integer
    Dim i As Long
  
    intFile = FreeFile
  
    Open App.Path & GUILD_PATH & "GUILDS.DAT" For Output As #intFile
    Print #intFile, "[INIT]"
  
    For i = 0 To MAX_GUILDS - 1
        Print #intFile, "[GUILD" & i & "]"
        Print #intFile, "Name=Game Masters"
        Print #intFile, "Desc="
        Print #intFile, "Alineation=0"
        Print #intFile, "CreationDate="
        Print #intFile, "NumMembers=-1"
      
        Print #intFile, "Member0="
        Print #intFile, "Member1="
        Print #intFile, "Member2="
        Print #intFile, "Member3="
        Print #intFile, "Member4="
        Print #intFile, "Member5="
        Print #intFile, "Member6="
        Print #intFile, "Member7="
      
        Print #intFile, "Requests="
    Next i
  
    Close #intFile
End Sub
Public Sub g_Found(ByVal UserIndex As Integer, _
                    ByVal GuildIndex As Integer, _
                    ByVal GuildName As String, _
                    ByVal Desc As String, _
                    ByVal Alineation As GuildAlineation)
  
    ' • Fundación de un nuevo clan.
  
    If Can_Create(UserIndex, ErrorMsg) Then
        With Guilds(GuildIndex)
            .Name = GuildName
            .Desc = Desc
          
            .NumMembers = 0
            .Member(0).UserName = UserList(UserIndex).Name
            .Member(0).Range = Fundador
            .Alineation = Alineation
            .CreationDate = Format$(Now, "DD/MM/YYYY")
          
            Save GuildIndex
        End With
  
        SendData SendTarget.ToAll, 0, PrepareMessageConsoleMsg("Nueva Guild creada por " & UserList(UserIndex).Name & "» " & GuildName, FontTypeNames.FONTTYPE_GUILD)
  
    Else
        WriteConsoleMsg UserIndex, ErrorMsg, FontTypeNames.FONTTYPE_WARNING
    End If

End Sub

Private Sub Save(ByVal GuildIndex As Integer)
    
    ' • Guardado de un clan específico
  
    Dim Manager As clsIniManager, i As Long, str As String
    Set Manager = New clsIniManager
    Call Manager.Initialize(App.Path & GUILD_PATH & GUILD_ARCHIVE)
  
    With Guilds(GuildIndex)
        Call Manager.ChangeValue("GUILD" & GuildIndex, "Name", .Name)
        Call Manager.ChangeValue("GUILD" & GuildIndex, "Desc", .Desc)
        Call Manager.ChangeValue("GUILD" & GuildIndex, "Alineation", CStr(.Alineation))
        Call Manager.ChangeValue("GUILD" & GuildIndex, "NumMembers", CStr(.NumMembers))
      
        For i = 0 To MAX_MEMBERS_GUILD - 1
            Call Manager.ChangeValue("GUILD" & GuildIndex, "Member" & i, CStr(.Member(i).UserName & "-" & .Member(i).Range))
        Next i
      
        Call Manager.ChangeValue("GUILD" & GuildIndex, "Requests", str_Requests(GuildIndex))
    End With
  
    Call Manager.DumpFile(App.Path & "\GUILDS\" & GUILD_ARCHIVE)

    Set Manager = Nothing
End Sub

Public Sub g_SaveAll()
    
    ' • Guardado de todos los clanes
  
    Dim Manager As clsIniManager, i As Long, G As Long, str As String
    Set Manager = New clsIniManager
    Call Manager.Initialize(App.Path & GUILD_PATH & GUILD_ARCHIVE)
  
    For G = 0 To MAX_GUILDS - 1
        With Guilds(G)
            Call Manager.ChangeValue("GUILD" & G, "Name", .Name)
            Call Manager.ChangeValue("GUILD" & G, "Desc", .Desc)
            Call Manager.ChangeValue("GUILD" & G, "Alineation", CStr(.Alineation))
            Call Manager.ChangeValue("GUILD" & G, "NumMembers", CStr(.NumMembers))
          
            For i = 0 To MAX_MEMBERS_GUILD - 1
                Call Manager.ChangeValue("GUILD" & G, "Member" & i, CStr(.Member(i).UserName & "-" & .Member(i).Range))
            Next i
      
            Call Manager.ChangeValue("GUILD" & G, "Requests", str_Requests(G))
        End With
    Next G
  
    Call Manager.DumpFile(App.Path & "\GUILDS\" & GUILD_ARCHIVE)

    Set Manager = Nothing
End Sub

Public Sub g_Load(ByVal GuildIndex As Integer)
  
    ' • Cargado de información de un clan específico
  
    Dim Read As clsIniManager, i As Long, str As String
    Set Read = New clsIniManager
  
    Read.Initialize App.Path & GUILD_PATH & GUILD_ARCHIVE
  
    With Guilds(GuildIndex)
        .Name = Read.GetValue("Guild" & GuildIndex, "Name")
        .Desc = Read.GetValue("Guild" & GuildIndex, "Desc")
        .Alineation = val(Read.GetValue("Guild" & GuildIndex, "Alineation"))
        .NumMembers = val(Read.GetValue("Guild" & GuildIndex, "NumMembers"))
      
        For i = 0 To .NumMembers
            str = Read.GetValue("Guild" & GuildIndex, "Member" & i)
          
            .Member(i).UserName = General.ReadField(1, str, 45)
            .Member(i).Range = val(General.ReadField(2, str, 45))
        Next i
      
        .PlayerRequests = Split(Read.GetValue("Guild" & GuildIndex, "Requests"), "-")
  
    End With
  
    Set Read = Nothing
End Sub

Public Sub g_LoadAll()
  
    ' • Cargado de información de todos los clanes
    Dim Read As clsIniManager, i As Long, str As String, G As Long
    Set Read = New clsIniManager
  
    Read.Initialize App.Path & GUILD_PATH & GUILD_ARCHIVE
  
    For G = 0 To MAX_GUILDS - 1
        With Guilds(G)
            .Name = Read.GetValue("Guild" & G, "Name")
            .Desc = Read.GetValue("Guild" & G, "Desc")
            .Alineation = val(Read.GetValue("Guild" & G, "Alineation"))
            .NumMembers = val(Read.GetValue("Guild" & G, "Numembers"))
          
            For i = 0 To .NumMembers
                str = Read.GetValue("Guild" & G, "Member" & i)
              
                .Member(i).UserName = General.ReadField(1, str, 45)
                .Member(i).Range = val(General.ReadField(2, str, 45))
            Next i
      
            .PlayerRequests = Split(Read.GetValue("Guild" & G, "Requests"), "-")
        End With
    Next G
  
    Set Read = Nothing
End Sub

Public Sub g_Add_CharNew(ByVal UserIndex As Integer, ByVal UserName As Integer, ByVal GuildIndex As Integer)

    ' • Agregamos un nuevo personaje a nuestra Guild
    Dim i As Long
  
    If Can_Accept_Char(UserIndex, GuildIndex, ErrorMsg) Then
        With Guilds(GuildIndex)
            For i = 0 To MAX_MEMBERS_GUILD - 1
                If StrComp(.Member(i).UserName, vbNullString) = 0 Then
                    .Member(i).UserName = UserName
                    .Member(i).Range = None
                    Exit For
                End If
            Next i
          
            Call WriteVar(CharPath & UserName & ".chr", "GUILD", "Index", GuildIndex)
            Call WriteVar(CharPath & UserName & ".chr", "GUILD", "Range", GuildRange.None)
          
            Request_Null UserName, GuildIndex
        End With
      
    Else
        WriteConsoleMsg UserIndex, ErrorMsg, FontTypeNames.FONTTYPE_WARNING
    End If
End Sub

Private Sub Request_Null(ByVal UserName As String, ByVal GuildIndex As Integer)
    ' • Borramos una solicitud de un personaje
    ' • Actualizamos el Array
  
    Dim LoopY As Long, LoopZ As Long
  
    With Guilds(GuildIndex)
        For LoopY = 0 To UBound(.PlayerRequests()) - 1
            For LoopZ = 0 To UBound(.PlayerRequests()) - LoopY
          
                If StrComp(.PlayerRequests(LoopZ), UserName) = 0 Then
                    .PlayerRequests(LoopZ) = vbNullString
                End If
              
                If StrComp(.PlayerRequests(LoopZ), vbNullString) = 0 Then
                    .PlayerRequests(LoopZ) = .PlayerRequests(LoopZ + 1)
                    .PlayerRequests(LoopZ + 1) = vbNullString
                  
                End If
            Next LoopZ
        Next LoopY
      
        ReDim Preserve .PlayerRequests(LBound(.PlayerRequests()) To UBound(.PlayerRequests()) - 1)
        Call WriteVar(App.Path & GUILD_PATH & GUILD_ARCHIVE, "GUILD" & GuildIndex, "Requests", str_Requests(GuildIndex))
    End With
End Sub

Public Sub g_EcharChar(ByVal UserIndex As Integer, ByVal UserName As String, ByVal GuildIndex As Integer)

    ' • Sacamos a un personaje de la Guild
    Dim i As Long
  
    If Can_Null_Char(UserIndex, ErrorMsg) Then
        With Guilds(GuildIndex)
            For i = 0 To MAX_MEMBERS_GUILD - 1
                If StrComp(.Member(i).UserName, UserName) = 0 Then
                    .Member(i).UserName = vbNullString
                    .Member(i).Range = None
                  
                    Char_Reset .Member(i).UserName
                    Exit For
                End If
            Next i
          
            Update_Chars GuildIndex
            Save GuildIndex
        End With
    Else
        WriteConsoleMsg UserIndex, ErrorMsg, FontTypeNames.FONTTYPE_WARNING
    End If
End Sub

Private Sub Update_Chars(ByVal GuildIndex As Integer)
    Dim LoopZ As Long, LoopY As Long
  
    ' @ Actualizamos la lista de personas que tiene la Guild
  
    With Guilds(GuildIndex)
        For LoopY = 0 To .NumMembers
            For LoopZ = 0 To .NumMembers - LoopY
          
                If StrComp(.Member(LoopZ).UserName, vbNullString) = 0 And _
                    StrComp(.Member(LoopZ + 1).UserName, vbNullString) <> 0 Then
              
                    .Member(LoopZ).UserName = .Member(LoopZ + 1).UserName
                    .Member(LoopZ).Range = .Member(LoopZ + 1).Range
                  
                    .Member(LoopZ + 1).UserName = vbNullString
                    .Member(LoopZ + 1).Range = None
                End If
            Next LoopZ
        Next LoopY
    End With
End Sub

Public Sub g_ConsoleMsg(ByVal GuildIndex As Integer, ByVal msg As String, ByVal Font As FontTypeNames)

    ' • Enviamos un mensaje a la Guild
  
    Dim i As Long
    For i = 0 To MAX_MEMBERS_GUILD - 1
        With Guilds(GuildIndex).Member(i)
            If PersonajeExiste(.UserName) Then
                If NameIndex(.UserName) > 0 Then
                    WriteConsoleMsg NameIndex(.UserName), "Guild» " & msg, Font
                End If
            End If
        End With
    Next i
End Sub
Private Function Prepare_Online(ByVal GuildIndex As Integer) As String
  
    ' • Preparamos la lista de personajes online de la Guild.
    Dim i As Long
  
    For i = 0 To MAX_MEMBERS_GUILD - 1
        With Guilds(GuildIndex).Member(i)
            If PersonajeExiste(.UserName) Then
                If NameIndex(.UserName) > 0 Then
                    Prepare_Online = Prepare_Online & ", " & .UserName
                End If
            End If
        End With
    Next i
  
    Prepare_Online = mid$(Prepare_Online, 2)

End Function
Public Sub g_Online(ByVal UserIndex As Integer)
  
    ' •Enviamos la lista de personas online en la Guild
    Dim str As String
  
    With UserList(UserIndex)
        If .GuildUser.Index <> -1 Then
            str = Prepare_Online(.GuildUser.Index)
          
            WriteConsoleMsg UserIndex, "Guild Online» " & str & ".", FontTypeNames.FONTTYPE_GUILD
        End If
    End With

End Sub

Private Function Can_Create(ByVal UserIndex As Integer, ByRef ErrorMsg As String) As Boolean
  
    ' • ¿El personaje puede crear una nueva Guild?
    Can_Create = False
  
    With UserList(UserIndex)
        If .GuildUser.Found = 1 Then
            ErrorMsg = "Ya has creado una Guild."
            Exit Function
        End If
      
        If .GuildUser.Index <> -1 Then
            ErrorMsg = "Ya perteneces a otra Guild."
            Exit Function
        End If
      
    End With
  
    Can_Create = True
End Function

Private Function Can_Accept_Char(ByVal UserIndex As Integer, ByVal GuildIndex As Integer, ErrorMsg As String) As Boolean
  
    ' • ¿Podemos aceptar a un nuevo miembro?
  
    Can_Accept_Char = False
  
    With UserList(UserIndex)
        If .GuildUser.Range <> GuildRange.FOUNDER And _
            .GuildUser.Range <> GuildRange.LEADER Then
            ErrorMsg = "No no tienes el poder de aceptar miembros"
            Exit Function
        End If
      
        If Guilds(GuildIndex).Member(MAX_MEMBERS_GUILD - 1).UserName <> vbNullString Then
            ErrorMsg = "El clan cuenta con la mayor cantidad de miembros permitidos"
            Exit Function
        End If
      
        If .GuildUser.Index <> -1 Then
            ErrorMsg = "El personaje pertenece a otro clan"
            Exit Function
        End If
      
      
    End With
  
    Can_Accept_Char = True
End Function

Private Function Can_Null_Char(ByVal UserIndex As Integer, ErrorMsg As String) As Boolean
  
    ' ¿Podemos borrar un char de la guild?
  
    Can_Null_Char = False
  
    With UserList(UserIndex)
        If .GuildUser.Range <> GuildRange.FOUNDER And _
            .GuildUser.Range <> GuildRange.LEADER Then
            ErrorMsg = "No no tienes el poder de echar miembros"
            Exit Function
        End If
    End With
  
    Can_Null_Char = True
End Function

Private Sub Char_Reset(ByVal UserName As String)
  
    ' Reseteamos la info de un char
    Dim UserIndex As Integer
    UserIndex = NameIndex(UserName)
  
    If UserIndex > 0 Then
        With UserList(UserIndex).GuildUser
            .Index = 0
            .Range = 0
        End With
      
        Call WriteVar(CharPath & UserName & ".chr", "GUILD", "Index", -1)
        Call WriteVar(CharPath & UserName & ".chr", "GUILD", "Range", 0)
    Else
        Call WriteVar(CharPath & UserName & ".chr", "GUILD", "Index", -1)
        Call WriteVar(CharPath & UserName & ".chr", "GUILD", "Range", 0)
    End If
  
  
End Sub

Private Sub g_ChangeDesc(ByVal UserIndex As Integer, ByVal GuildIndex As Integer, ByVal NewDesc As String)
  
    ' • Cambiamos la descripción de la Guild.
  
    If Can_Change_Desc(UserIndex, ErrorMsg) Then
  
        With Guilds(GuildIndex)
            .Desc = NewDesc
          
            Call WriteVar(App.Path & "\GUILDS\" & GUILD_ARCHIVE, "GUILD" & GuildIndex, "Desc", .Desc)
            g_ConsoleMsg GuildIndex, "La descripción de la Guild ha sido modificada.", FontTypeNames.FONTTYPE_GUILD
        End With
      
    Else
        WriteConsoleMsg UserIndex, ErrorMsg, FontTypeNames.FONTTYPE_WARNING
    End If
End Sub

Private Function Can_Change_Desc(ByVal UserIndex As Integer, ErrorMsg As String) As Boolean
  
    ' ¿Podemos cambiar la descripción de un clan?
  
    Can_Change_Desc = False
  
    With UserList(UserIndex)
        ' Anti salames que editan el cliente
        If .GuildUser.Index = -1 Then Exit Function
      
        If .GuildUser.Range <> GuildRange.FOUNDER And _
            .GuildUser.Range <> GuildRange.LEADER Then
            ErrorMsg = "No tienes la capacidad de cambiar la descripción del clan."
            Exit Function
        End If
    End With
  
    Can_Change_Desc = True
End Function
Private Function Can_User_Request(ByVal UserIndex As Integer, ByVal GuildIndex As Integer, ByRef ErrorMsg As String) As Boolean
  
    Dim i As Long
    ' ¿Personaje puede solicitar ingreso al clan?
  
    Can_User_Request = False
  
    With UserList(UserIndex)
        If .GuildUser.Index <> -1 Then
            ErrorMsg = "Ya te encuentras en un clan."
            Exit Function
        End If
    End With
  
    With Guilds(GuildIndex)
        For i = LBound(.PlayerRequests()) To UBound(.PlayerRequests())
            If StrComp(UCase$(.PlayerRequests(i)), UCase$(.Name)) = 0 Then
                ErrorMsg = "Tu solicitud ya se encuentra en el clan. Espera pronta respuesta de sus líderes."
                Exit Function
            End If
        Next i
    End With
  
    Can_User_Request = True
End Function
Private Function str_Requests(ByVal GuildIndex As Integer) As String
  
    ' • Devolvemos la cadena cargada. En otras palabras es la lista de solicitudes, pero esta vez en forma de cadena.
  
    Dim i As Long
  
    With Guilds(GuildIndex)
        For i = LBound(.PlayerRequests()) To UBound(.PlayerRequests())
            If StrComp(.PlayerRequests(i), vbNullString) <> 0 Then
                str_Requests = str_Requests & "-" & .PlayerRequests(i)
            End If
        Next i
      
        str_Requests = mid$(str_Requests, 2)
        str_Requests = UCase$(str_Requests)
    End With
End Function

Public Sub g_Request(ByVal UserIndex As Integer, ByVal GuildIndex As Integer)
  
    ' • Un personaje solicita entrar a un clan determinado.
    Dim ErrorMsg As String
  
    With Guilds(GuildIndex)
        If Can_User_Request(UserIndex, GuildIndex, ErrorMsg) Then
            ReDim Preserve .PlayerRequests(LBound(.PlayerRequests()) To UBound(.PlayerRequests()) + 1)
            .PlayerRequests(UBound(.PlayerRequests())) = UserList(UserIndex).Name
            Call WriteVar(App.Path & GUILD_PATH & GUILD_ARCHIVE, "GUILD" & GuildIndex, "Requests", str_Requests(GuildIndex) & "-" & UserList(UserIndex).Name)
          
            WriteConsoleMsg UserIndex, "Has enviado solicitud al clan " & .Name & ".", FontTypeNames.FONTTYPE_INFO
            g_ConsoleMsg GuildIndex, "Nueva solicitud de parte de: " & UserList(UserIndex).Name & ".", FontTypeNames.FONTTYPE_GUILD
        Else
            WriteConsoleMsg UserIndex, ErrorMsg, FontTypeNames.FONTTYPE_GUILD
        End If
    End With
End Sub

Public Sub g_Rechace_Request(ByVal UserIndex As Integer, ByVal UserName As String, ByVal GuildIndex As Integer)
  
    ' • Rechazamos una solicitud de la guild
    With UserList(UserIndex)
        If .GuildUser.Range <> GuildRange.FOUNDER And _
            .GuildUser.Range <> GuildRange.LEADER Then
            WriteConsoleMsg UserIndex, "Solo el Lider y fundador del clan pueden realizar esta opción.", FontTypeNames.FONTTYPE_INFO
            Exit Sub
        End If
      
      
        Request_Null UCase$(UserName), GuildIndex
    End With
  
End Sub

Public Function SameClan(ByVal UserIndex As Integer, ByVal User2 As Integer) As Boolean
    ' • ¿Personajes del mismo clan?
  
    With UserList(UserIndex)
        If .GuildUser.Index = UserList(User2).GuildUser.Index Then
            SameClan = True
        End If
    End With
  
End Function
 
Última edición:
G

G Toyz

Invitado
#3
Yo usaría una collection en Guilds() codeás mucho más rápido, también para los miembros.
 

Shak

Policia malo
Miembro del equipo
Developer
Especialista de Argentum
#4
Tiene alguna ventaja ademas de estar mas ordenado?, Saludos!
El simple hecho de estar ordenado tiene estas ventajas
- Fácil adaptación para agregar cosas nuevas: Por ejemplo si queres agregar una url de una web, basta con tocar dos o tres cosas. En el sistema del argentum, tenías que tocar por una parte el módulo y por otra la clase.
- Hasta donde testee, la velocidad de cargado es mas rapida (porque usa la clsinimanager, por lo tanto es algo obvio)
- El argentum tiene como 20 paquetes destinados a clanes, usando esto necesitas uno solo y utilizar ParramArray() , como lo hice en el Guild.Proc
- Mencionando al guid.proc tenes todo ubicado en ese módulo, por lo cual agregar un nuevo procedimiento es más sencillo y rápido.

entre otras ventajas que ahora no se me ocurren escribir xD
 

miqueas150

The Prophet
Ex-Staff
#5
  1. Can_Null_Char(UserIndex, ErrorMsg) Then
  2. With Guilds(GuildIndex)
  3. For i = 0 To MAX_MEMBERS_GUILD - 1
  4. If StrComp(UCase$(.Member(i).UserName), UCase$(UserName)) = 0 Then
  5. .Member(i).UserName = vbNullString
  6. .Member(i).Range = None
  7. Char_Reset .Member(i).UserName
  8. Exit For
  9. End If
  10. Next i
  11. Update_Guild_Chars GuildIndex
  12. Save GuildIndex
  13. End With
  14. Else
  15. WriteConsoleMsg UserIndex, ErrorMsg, FontTypeNames.FONTTYPE_WARNING
  16. End If

    el ucase$usrblalbalbla bla agarrate de costumbre declarar una variable temporal para ese, ya que es algo que nunca va a cambiar,por lo tanto pasar esa variable a mayuscula todo el tiempo del bucle no sirve.
 

Shak

Policia malo
Miembro del equipo
Developer
Especialista de Argentum
#7
  1. Can_Null_Char(UserIndex, ErrorMsg) Then
  2. With Guilds(GuildIndex)
  3. For i = 0 To MAX_MEMBERS_GUILD - 1
  4. If StrComp(UCase$(.Member(i).UserName), UCase$(UserName)) = 0 Then
  5. .Member(i).UserName = vbNullString
  6. .Member(i).Range = None
  7. Char_Reset .Member(i).UserName
  8. Exit For
  9. End If
  10. Next i
  11. Update_Guild_Chars GuildIndex
  12. Save GuildIndex
  13. End With
  14. Else
  15. WriteConsoleMsg UserIndex, ErrorMsg, FontTypeNames.FONTTYPE_WARNING
  16. End If

    el ucase$usrblalbalbla bla agarrate de costumbre declarar una variable temporal para ese, ya que es algo que nunca va a cambiar,por lo tanto pasar esa variable a mayuscula todo el tiempo del bucle no sirve.
Gracias luego voy a cambiar eso y algo que me dijo el buen wolftein

Al pedo, puedes hacerlo todo en C es mas optimo y derver te enseña gratis en youtube
No siempre es más optimo igual, depende del programador mas que del lenguaje (palabras de un crac)
 

miqueas150

The Prophet
Ex-Staff
#8
  1. Call Manager.ChangeValue("GUILD" & GuildIndex, "Name", CStr(.Name))
  2. Call Manager.ChangeValue("GUILD" & GuildIndex, "Desc", CStr(.desc))
  3. Call Manager.ChangeValue("GUILD" & GuildIndex, "Alineation", CStr(.Alineation))
  4. Call Manager.ChangeValue("GUILD" & GuildIndex, "NumMembers", CStr(.NumMembers))
  5. For i = 0 To MAX_MEMBERS_GUILD - 1
  6. Call Manager.ChangeValue("GUILD" & GuildIndex, "Member" & i, CStr(.Member(i).UserName & "-" & .Member(i).Range))
  7. Next i
  8. Call Manager.ChangeValue("GUILD" & GuildIndex, "Requests", CStr(str_Requests(GuildIndex)))
porque usas cstr en variables que ya están declaradas como string? xD


Pelotudo
 

Shak

Policia malo
Miembro del equipo
Developer
Especialista de Argentum
#9
Ahi edite con los cambios que me sugirieron, aunque no me convencen los nombres, asi que espero sugerencias para acomodar eso y otros defectos xD

Que choto el "Guild.g_nombre del prrocedimiento"
Pero son nombres que capaz puedan existir.. ¿que opinas negro? @miqueas150
 

About

Director del Proyecto
#10
Yo usaría una collection en Guilds() codeás mucho más rápido, también para los miembros.
En BenderAO lo tenemos programado así, pero te da un miedo utilizar la collección apenas logea el user, y cuando deslogea.. nunca sabes cuando VB6 va a crashear sarpado.
 
Arriba