Problema Inventario al aumentar RenderScreen

Facu Chamas

Newbie Lvl 5
Hola nuevamente xD
Esta vez vengo con un problema el cual se trata de agregar los slots del inventario o más bien que estén ordenados...
Pasa que (como el post anterior, cambie de resolución) por lo que también cambié lo ancho y largo del Inventario (desde el frmMain nada más) y quedó así:

Entonces procedí a intentar agregar más slots al inventario desde el cliente y el servidor... Algo que me resultó raro es que no trae mochila/sin mochila, solamente los slots.

SERVIDOR:
Código:
' Cantidad maxima de objetos por slot de inventario
Public Const MAX_INVENTORY_OBJS As Integer = 10000

''
' Cantidad de "slots" en el inventario
Public Const MAX_INVENTORY_SLOTS As Byte = 25

''
' Constante para indicar que se esta usando ORO
Public Const FLAGORO As Integer = MAX_INVENTORY_SLOTS + 1
CLIENTE:
Código:
'Objetos
Public Const MAX_INVENTORY_OBJS As Integer = 10000
Public Const MAX_INVENTORY_SLOTS As Byte = 25
Public Const MAX_NPC_INVENTORY_SLOTS As Byte = 50
Public Const MAXHECHI As Byte = 35
Lo que hice fue lo siguiente; modificar la parte donde dice "Public Const MAX_INVENTORY_SLOTS As Byte = 25" por 30. (en el servidor y cliente)

y modificar el
Código:
Public Sub DrawInv()

    Static re As RECT
    re.Left = 0
    re.Top = 0
    re.bottom = 160
    re.Right = 160
    
    D3DDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET, 0, 0, 0
    D3DDevice.BeginScene
        Inventario.DrawInventory
    D3DDevice.EndScene
    D3DDevice.Present re, ByVal 0, frmMain.picInv.hwnd, ByVal 0
End Sub
por:
Código:
Public Sub DrawInv()

    Static re As RECT
    re.Left = 0
    re.Top = 0
    re.bottom = 192
    re.Right = 160
    
    D3DDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET, 0, 0, 0
    D3DDevice.BeginScene
        Inventario.DrawInventory
    D3DDevice.EndScene
    D3DDevice.Present re, ByVal 0, frmMain.picInv.hwnd, ByVal 0
End Sub
Por lo que pensé que ya estaría, inicie el juego, entre al frmcuenta, al hacer click en cualquier personaje con el que quiera ingresar al Main, automáticamente me manda al Conectar, así sucesivamente y no me marca ningún error en el Visual Basic con el depurar.

que puede ser? :/
 

Facu Chamas

Newbie Lvl 5
InventoryWindow_MouseMove

pasame eso
Código:
Private Sub InventoryWindow_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'***************************************************
'Author: Juan Martín Sotuyo Dodero (Maraxus)
'Last Modify Date: 27/07/04
'Implements the mouse move event of the inventory picture box
'***************************************************
    Dim temp_x As Integer
    Dim temp_y As Integer
    
    'Exit if it got outside the control's area
    If X < 0 Or Y < 0 Or X > InventoryWindow.Width Or Y > InventoryWindow.Height Then _
        Exit Sub
    
    temp_x = X \ 32
    temp_y = Y \ 32
    
    TempItem = temp_x + (temp_y + InventoryOffset) * (InventoryWindow.ScaleWidth \ 32) + 1
    TempSlot = TempItem
    
    If TempItem <= MAX_INVENTORY_SLOTS Then
    
      If UserInventory(TempItem).MinHit >= 1 Then
        InventoryWindow.ToolTipText = UserInventory(TempItem).name & " - Golpe: " & UserInventory(TempItem).MinHit & "/" & UserInventory(TempItem).MaxHit
      ElseIf UserInventory(TempItem).Def >= 1 Then
        InventoryWindow.ToolTipText = UserInventory(TempItem).name & " - Defensa: " & UserInventory(TempItem).Def
      Else
        InventoryWindow.ToolTipText = UserInventory(TempItem).name
      End If
      
        If UserInventory(TempItem).name = "" Then
            frmMain.lblInvInfo.Caption = "Nada"
        Else
          If UserInventory(TempItem).MinHit >= 1 Then
           frmMain.lblInvInfo.Caption = UserInventory(TempItem).name & " - Golpe: " & UserInventory(TempItem).MinHit & "/" & UserInventory(TempItem).MaxHit
          ElseIf UserInventory(TempItem).Def >= 1 Then
           frmMain.lblInvInfo.Caption = UserInventory(TempItem).name & " - Defensa: " & UserInventory(TempItem).Def
          Else
           frmMain.lblInvInfo.Caption = UserInventory(TempItem).name
          End If
        End If
        
    End If
              
    If Button = vbRightButton Then ' And DragItem <> 0 Then
        Drag = 1
    Else
        Drag = 0
    End If
    
    MouseX = CInt(X)
    MouseY = CInt(Y)
 
End Sub
Post automatically merged:

hice otro picInvent con los mismos parámetros que tenía el original (resolución 800x600) y quedó, obviamente que se ven más grandes los items y con poco slots así que procedí a cambiar los números de la siguiente lineas del cliente/servidor

Código:
Public Const MAX_INVENTORY_SLOTS As Byte = 25
' por
Public Const MAX_INVENTORY_SLOTS As Byte = 30
y en efecto se agregó una fila abajo, funciona, se puede llevar los items hacía ahí y también equiparlos pero no figuran.
 
Última edición:

El_santo43

Programador de vb6
Ex-Staff
Código:
Private Sub InventoryWindow_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'***************************************************
'Author: Juan Martín Sotuyo Dodero (Maraxus)
'Last Modify Date: 27/07/04
'Implements the mouse move event of the inventory picture box
'***************************************************
    Dim temp_x As Integer
    Dim temp_y As Integer
   
    'Exit if it got outside the control's area
    If X < 0 Or Y < 0 Or X > InventoryWindow.Width Or Y > InventoryWindow.Height Then _
        Exit Sub
   
    temp_x = X \ 32
    temp_y = Y \ 32
   
    TempItem = temp_x + (temp_y + InventoryOffset) * (InventoryWindow.ScaleWidth \ 32) + 1
    TempSlot = TempItem
   
    If TempItem <= MAX_INVENTORY_SLOTS Then
   
      If UserInventory(TempItem).MinHit >= 1 Then
        InventoryWindow.ToolTipText = UserInventory(TempItem).name & " - Golpe: " & UserInventory(TempItem).MinHit & "/" & UserInventory(TempItem).MaxHit
      ElseIf UserInventory(TempItem).Def >= 1 Then
        InventoryWindow.ToolTipText = UserInventory(TempItem).name & " - Defensa: " & UserInventory(TempItem).Def
      Else
        InventoryWindow.ToolTipText = UserInventory(TempItem).name
      End If
     
        If UserInventory(TempItem).name = "" Then
            frmMain.lblInvInfo.Caption = "Nada"
        Else
          If UserInventory(TempItem).MinHit >= 1 Then
           frmMain.lblInvInfo.Caption = UserInventory(TempItem).name & " - Golpe: " & UserInventory(TempItem).MinHit & "/" & UserInventory(TempItem).MaxHit
          ElseIf UserInventory(TempItem).Def >= 1 Then
           frmMain.lblInvInfo.Caption = UserInventory(TempItem).name & " - Defensa: " & UserInventory(TempItem).Def
          Else
           frmMain.lblInvInfo.Caption = UserInventory(TempItem).name
          End If
        End If
       
    End If
             
    If Button = vbRightButton Then ' And DragItem <> 0 Then
        Drag = 1
    Else
        Drag = 0
    End If
   
    MouseX = CInt(X)
    MouseY = CInt(Y)

End Sub
Post automatically merged:

hice otro picInvent con los mismos parámetros que tenía el original (resolución 800x600) y quedó, obviamente que se ven más grandes los items y con poco slots así que procedí a cambiar los números de la siguiente lineas del cliente/servidor

Código:
Public Const MAX_INVENTORY_SLOTS As Byte = 25
' por
Public Const MAX_INVENTORY_SLOTS As Byte = 30
y en efecto se agregó una fila abajo, funciona, se puede llevar los items hacía ahí y también equiparlos pero no figuran.
Tenes que revisar donde dibuja el inventario. Si es 12/13.x es en el clsGraphicalInventory
En ese modulo de clase estan todos los errores que tenes.
 
Arriba