Sistema de Macros, Style IAO

fitonga

Creador de KingAO
Hola buenas , estoy probando clientes fenix y queria saber si alguien sabia como adaptar este codigo para fenix:


El Codigo es el siguiente:


Código:
Private Sub Accion1_Click()
Text1.Enabled = True
End Sub
Private Sub Accion2_Click()
Text1.Enabled = False
End Sub
Private Sub Accion3_Click()
Text1.Enabled = False
End Sub
Private Sub Accion4_Click()
Text1.Enabled = False
End Sub

Private Sub Guardar_Click()
'Usar Item
    If Accion4.value Then
        If Inventario.OBJIndex(Inventario.selectedItem) = 0 Or _
           UsarYequiparObjValido(Inventario.ObjType(Inventario.selectedItem), True) = False Then
            Call MsgBox("Item Invalido,seleccione otro.", vbCritical + vbOKOnly)
        Else
            MacroList(MacroIndex).mTipe = eMacros.aUsar
            MacroList(MacroIndex).Grh = Inventario.GrhIndex(Inventario.selectedItem)
            MacroList(MacroIndex).Nombre = Inventario.ItemName(Inventario.selectedItem)
            MacroList(MacroIndex).OBJIndex = Inventario.OBJIndex(Inventario.selectedItem)
            MacroList(MacroIndex).Slot = Inventario.selectedItem
            Call SaveMacros(UserName)
           ' Call frmMain.ActualizarMacros(CByte(MacroIndex), False)
           frmMain.Macros(MacroIndex).Cls
           Call Grh_Render_To_Hdc(frmMain.Macros(MacroIndex).hDC, Inventario.GrhIndex(Inventario.selectedItem), 0, 0)
            Unload Me
        End If
    End If
    'Equipar Item
    If Accion3.value Then
        If Inventario.OBJIndex(Inventario.selectedItem) = 0 Or _
           UsarYequiparObjValido(Inventario.ObjType(Inventario.selectedItem), False) = False Then
            Call MsgBox("Item Invalido,seleccione otro.", vbCritical + vbOKOnly)
        Else
            MacroList(MacroIndex).mTipe = eMacros.aEquipar
            MacroList(MacroIndex).Grh = Inventario.GrhIndex(Inventario.selectedItem)
            MacroList(MacroIndex).Nombre = Inventario.ItemName(Inventario.selectedItem)
            MacroList(MacroIndex).OBJIndex = Inventario.OBJIndex(Inventario.selectedItem)
            MacroList(MacroIndex).Slot = Inventario.selectedItem
            Call SaveMacros(UserName)
            'Call frmMain.ActualizarMacros(CByte(MacroIndex), False)
            frmMain.Macros(MacroIndex).Cls
            Call Grh_Render_To_Hdc(frmMain.Macros(MacroIndex).hDC, Inventario.GrhIndex(Inventario.selectedItem), 0, 0)
            Unload Me
        End If
    End If
    'Usar comandos / Hablar
    If Accion1.value Then
        If Text1.Text = "" Then
            Call MsgBox("Escriba un comando o una palabra.", vbCritical + vbOKOnly)
        Else
            MacroList(MacroIndex).mTipe = eMacros.aComando
            MacroList(MacroIndex).Grh = 17506
            MacroList(MacroIndex).Nombre = Text1.Text
            Call SaveMacros(UserName)
            'Call frmMain.ActualizarMacros(CByte(MacroIndex), False)
            frmMain.Macros(MacroIndex).Cls
            Call Engine.DrawGrhtoHdc(frmMain.Macros(MacroIndex).hDC, 17506, 0, 0)
            Unload Me
        End If
    End If
    'Usar Hechizo
    If Accion2.value Then
        If frmMain.hlst.List(frmMain.hlst.ListIndex) = "(None)" Or _
           frmMain.hlst.ListIndex = -1 Then
            Call MsgBox("Hechizo invalido,seleccione otro.", vbCritical + vbOKOnly)
        Else
            MacroList(MacroIndex).mTipe = eMacros.aLanzar
            MacroList(MacroIndex).Grh = 609
            MacroList(MacroIndex).Nombre = frmMain.hlst.List(frmMain.hlst.ListIndex)
            MacroList(MacroIndex).SpellSlot = frmMain.hlst.ListIndex
            Call SaveMacros(UserName)
            'Call frmMain.ActualizarMacros(CByte(MacroIndex), False)
            frmMain.Macros(MacroIndex).Cls
            Call Engine.DrawGrhtoHdc(frmMain.Macros(MacroIndex).hDC, 609, 0, 0)
            Unload Me
        End If
    End If
End Sub


Private Sub Salir_Click()
    Unload Me
End Sub


Estuve jugando imperium , y me llamo la atencion la jugabilidad del pvp de este , en modo 1 vs 1 , la verdad el juego no me gusta mucho , ya que es un juego comercial y buscan sacarle la plata del bolsillo a la gente , lo que si me gustaria es tener un estilo masomenos parecido en cuestion de PvP.

Y si se puede atraer users a un nuevo ao , que tenga un estilo unico y no sea comercial , algo que haga que la gente quiera volver a jugar al ao , y asimismo , atraer nuevas almas muajajajaja


Desde Ya Muchas Gracias. Atte: Fitonga
 

[N]ico.~

Est. Ingenieria en Sistemas
Mod Fénix + Macros, olvidate, no vas a tener ni 5 usuarios.

Saludos.
Esta pésimo lo que decis, sabes las veces que la gente le habrá dicho a los demás "Que mierda es eso? No sirve para nada, es horrible" y despues salieron ganando, porque por más que lo criticaron siguieron para adelante y terminaron triunfando. A demás, vos no sabes cual es su idea, por ahi el usa una base de fenix pero lo amolda todo para que quede bien.
 

Fariseo

Destino y karma
El macro esta bien. Lo unico que tendrias que cambiar es la parte donde hace referencia al lanzar y al usar e equipar... fijate tmb de reemplazar el drawgrh ese que te dibuja los items en el picture. Podes usar el mismo que usa el comercio para dibujar el item en ell frmcomerciar
 

fitonga

Creador de KingAO
Lord Fers: Ta bien capo , se que te gusta mas 0.13 , pero a mi no

Nico: Exactamente eso , Fenix es la version anterior a 11.2 no? y 11.5 , veamos que puede pasar...

Fariseo: LO voy a hacer ! , gracias y de ultima posteo algun problema que haya tenido
 

Dr. Lord Fers

Legendario Inmortal Lvl 4
Miembro del equipo
Moderador
Moderador de Tecnología
Esta pésimo lo que decis, sabes las veces que la gente le habrá dicho a los demás "Que mierda es eso? No sirve para nada, es horrible" y despues salieron ganando, porque por más que lo criticaron siguieron para adelante y terminaron triunfando. A demás, vos no sabes cual es su idea, por ahi el usa una base de fenix pero lo amolda todo para que quede bien.
Te lo digo por Experiencia, estoy hace 9 años en esto.

Lord Fers: Ta bien capo , se que te gusta mas 0.13 , pero a mi no

Nico: Exactamente eso , Fenix es la version anterior a 11.2 no? y 11.5 , veamos que puede pasar...

Fariseo: LO voy a hacer ! , gracias y de ultima posteo algun problema que haya tenido
Te equivocás, a mí no me gusta ninguna versión en particular, son todas iguales, pero sé el tiempo que te estoy ahorrando, allá vos si no querés hacerme caso.

Abrazo.
 

fitonga

Creador de KingAO
Bueno gente , les quiero preguntar (Porque quiero aprender) , Que significa esta linea:

Código:
If Inventario.OBJIndex(Inventario.selectedItem) = 0 Or _
           UsarYequiparObjValido(Inventario.ObjType(Inventario.selectedItem), True) = False Then
            Call MsgBox("Item Invalido,seleccione otro.", vbCritical + vbOKOnly)


De todo eso, destaco :
Código:
UsarYequiparObjValido(Inventario.ObjType(Inventario.selectedItem), True) = False Then



Edit: Bueno hay algo que se me habia pasado , no habia agregado eso:

Código:
Public Enum eMacros
    aComando = 1
    aLanzar
    aEquipar
    aUsar
End Enum
Public Type tMacros
    mTipe As Byte
    Grh As Integer
    Nombre As String
    slot As Byte
    OBJIndex As Integer
    SpellSlot As Byte
End Type
Public MacroIndex As Integer
Public MacroList(1 To 12) As tMacros
Public Sub LoadMacros(ByVal Nombre As String)

    Dim MacroPatch As String
    Dim i As Integer
    MacroPatch = App.Path & "\INIT\MACROS\" & Nombre & ".Mac"
    If FileExist(MacroPatch, vbNormal) Then
        For i = 1 To 12
            With MacroList(i)
                .Nombre = GetVar(MacroPatch, "Macro" & i, "Nombre")
                .Grh = Val(GetVar(MacroPatch, "Macro" & i, "Grh"))
                .mTipe = Val(GetVar(MacroPatch, "Macro" & i, "Tipo"))
                .slot = Val(GetVar(MacroPatch, "Macro" & i, "Slot"))
                .SpellSlot = Val(GetVar(MacroPatch, "Macro" & i, "SlotSpell"))
                .OBJIndex = Val(GetVar(MacroPatch, "Macro" & i, "ObjIndex"))
            End With
        Next i
    Else
        For i = 1 To 10
            With MacroList(i)
                .Nombre = vbNullString
                .Grh = 0
                .mTipe = 0
                .slot = 0
                .SpellSlot = 0
                .OBJIndex = 0
            End With
         Next i
            With MacroList(12)
                 .Nombre = "/salir"
                 .Grh = 538
                 .mTipe = eMacros.aComando
            End With
            With MacroList(11)
                 .Nombre = "/meditar"
                 .Grh = 538
                 .mTipe = eMacros.aComando
            End With
            Call SaveMacros(Nombre)
    End If
End Sub
Public Sub SaveMacros(ByVal Nombre As String)

    Dim MacroPatch As String
    Dim i As Integer
    MacroPatch = App.Path & "\INIT\MACROS\" & Nombre & ".Mac"
        For i = 1 To 12
            With MacroList(i)
                Call WriteVar(MacroPatch, "Macro" & i, "Nombre", .Nombre)
                Call WriteVar(MacroPatch, "Macro" & i, "Grh", .Grh)
                Call WriteVar(MacroPatch, "Macro" & i, "Tipo", .mTipe)
                Call WriteVar(MacroPatch, "Macro" & i, "Slot", .slot)
                Call WriteVar(MacroPatch, "Macro" & i, "SlotSpell", .SpellSlot)
                Call WriteVar(MacroPatch, "Macro" & i, "ObjIndex", .OBJIndex)
            End With
        Next i
End Sub
Public Function CheckMacrosSpells(ByVal SlotSpells As Byte, ByVal NameSpell As String, ByVal MacroIndex As Byte) As Byte

    Dim i As Integer
    If SlotSpells < 0 Or SlotSpells > MAXHECHI - 1 Or _
       NameSpell = "" Then Exit Function
    If frmMain.hlst.List(SlotSpells) = NameSpell Then
        CheckMacrosSpells = SlotSpells
        Exit Function
    Else
        'Cambio el Slot del spells :P,entonces lo buscamos
        For i = 0 To MAXHECHI - 1
            If frmMain.hlst.List(i) = NameSpell Then
                Exit For
            End If
        Next i
   
        CheckMacrosSpells = i
        MacroList(MacroIndex).SpellSlot = i
        Call SaveMacros(UserName)
        Exit Function
    End If
    'ERROR!!
    CheckMacrosSpells = -1
    MacroList(MacroIndex).mTipe = 0
End Function
Public Function UsarYequiparObjValido(ByVal TIPO As Integer, ByVal Usable As Boolean) As Boolean

    If Usable Then
        UsarYequiparObjValido = _
        TIPO = eObjType.otBarcos Or _
                                TIPO = eObjType.otBebidas Or _
                                TIPO = eObjType.otBotellaLlena Or _
                                TIPO = eObjType.otBotellaVacia Or _
                                TIPO = eObjType.otGuita Or _
                                TIPO = eObjType.otInstrumentos Or _
                                TIPO = eObjType.otLlaves Or _
                                TIPO = eObjType.otMinerales Or _
                                TIPO = eObjType.otPergaminos Or _
                                TIPO = eObjType.otPociones Or _
                                TIPO = eObjType.otWeapon
    Else
        UsarYequiparObjValido = _
        TIPO = eObjType.otAnillo Or _
                                TIPO = eObjType.otArmadura Or _
                                TIPO = eObjType.otcasco Or _
                                TIPO = eObjType.otescudo Or _
                                TIPO = eObjType.otFlechas Or _
                                TIPO = eObjType.otWeapon
    End If
End Function
Public Function CheckMacrosUsarItem(ByVal slot As Byte, ByVal OBJIndex As Integer, ByVal MacroIndex As Byte) As Byte

    Dim i As Byte
    If slot = 0 Or slot > MAX_INVENTORY_SLOTS Then Exit Function
    If Inventario.OBJIndex(slot) = OBJIndex Then
        CheckMacrosUsarItem = slot
        Exit Function
    Else
        For i = 1 To MAX_INVENTORY_SLOTS - 1
            If Inventario.OBJIndex(i) = OBJIndex Then
                Exit For
            End If
        Next i
        If Inventario.OBJIndex(i) = OBJIndex Then
            CheckMacrosUsarItem = i
            MacroList(MacroIndex).slot = i
            Call SaveMacros(UserName)
            Exit Function
        Else
            CheckMacrosUsarItem = 0
        End If
        Exit Function
    End If
End Function
Public Sub UsarMacro(ByVal Index As Byte)

    Dim slot As Byte
    Select Case MacroList(Index).mTipe
    Case eMacros.aLanzar
        If UserEstado = 1 Then
            With FontTypes(FontTypeNames.FONTTYPE_INFO)
                Call ShowConsoleMsg("¡¡Estás muerto!!", .Red, .Green, .Blue, .Bold, .Italic)
            End With
            Exit Sub
        End If
        slot = CheckMacrosSpells(MacroList(Index).SpellSlot, MacroList(Index).Nombre, Index)
        If slot < 0 Then
            Call MsgBox("Macro Invalido,Asigne una accion para el macro", vbCritical + vbOKOnly)
            Exit Sub
        End If
        Call WriteCastSpell(slot + 1)
        Call WriteWork(eSkill.Magia)
        UsaMacro = True
    Case eMacros.aUsar
        If UserEstado = 1 Then
            With FontTypes(FontTypeNames.FONTTYPE_INFO)
                Call ShowConsoleMsg("¡¡Estás muerto!!", .Red, .Green, .Blue, .Bold, .Italic)
            End With
            Exit Sub
        End If
        slot = CheckMacrosUsarItem(MacroList(Index).slot, MacroList(Index).OBJIndex, Index)
        If slot = 0 Then Exit Sub
        If frmCarp.Visible Or frmHerrero.Visible Then Exit Sub
        If MainTimer.Check(TimersIndex.UseItemWithU) Then _
           Call WriteUseItem(slot)

    Case eMacros.aEquipar
        slot = CheckMacrosUsarItem(MacroList(Index).slot, MacroList(Index).OBJIndex, Index)
        If slot = 0 Then Exit Sub
        If UserEstado = 1 Then
            With FontTypes(FontTypeNames.FONTTYPE_INFO)
                Call ShowConsoleMsg("¡¡Estás muerto!!", .Red, .Green, .Blue, .Bold, .Italic)
            End With
        Else
            If Comerciando Then Exit Sub
            Call WriteEquipItem(slot)
        End If
    Case eMacros.aComando
    If LenB(MacroList(Index).Nombre) > 0 Then _
    Call ParseUserCommand(MacroList(Index).Nombre)
    Case Else
        Call MsgBox("Macro Invalido,Asigne una accion para el macro", vbCritical + vbOKOnly)
    End Select
End Sub

EDIT2:

Bueno les muestro el error que tuve:




A lo que respecta esto:

Código:
Sub DrawGrhtoHdc(hDC As Long, GrhIndex As Integer)

    Dim hDCsrc As Long

    If GrhIndex <= 0 Then Exit Sub
       
        'If it's animated switch GrhIndex to first frame
        If GrhData(GrhIndex).NumFrames <> 1 Then
            GrhIndex = GrhData(GrhIndex).Frames(1)
        End If
           
        hDCsrc = CreateCompatibleDC(hDC)
       
        Call SelectObject(hDCsrc, LoadPicture(App.Path & "\Graficos\" & GrhData(GrhIndex).FileNum & ".bmp"))

        'Draw
        BitBlt hDC, 0, 0, _
        GrhData(GrhIndex).pixelWidth, GrhData(GrhIndex).pixelHeight, _
        hDCsrc, _
        GrhData(GrhIndex).sX, GrhData(GrhIndex).sY, _
        vbSrcCopy

        DeleteDC hDCsrc
End Sub


Bueno , espero alguna respuesta, No es obligacion pero quisiera poder hacerlo ya que habia un aporte parecido , pero creo que caduco. Desde Ya muchas gracias a la comunidad por tanta ayuda y formas de hacer codigos , estoy muy empeñado en hacer un argentum diferente, y que mejor que empezar por la version mas antigua? hay tiempo de sobra asi que No hay que aprurarse

Saludos ! atte Fitonga
 
Última edición:
G

G Toyz

Invitado
Bueno gente , les quiero preguntar (Porque quiero aprender) , Que significa esta linea:

Código:
If Inventario_OBJIndex(Inventario.selectedItem) = 0 Or _
           UsarYequiparObjValido(Inventario_ObjType(Inventario.selectedItem), True) = False Then
            Call MsgBox("Item Invalido,seleccione otro.", vbCritical + vbOKOnly)
Para saber el significado de esas lineas, tenés que saber que funcionamiento tienen: Inventario_OBJIndex y UsarYEquiparObjValido().
Call MsgBox("Item Invalido,seleccione otro.", vbCritical + vbOKOnly) te imprime en una miniventana un mensaje.

Estructura:

https://msdn.microsoft.com/en-us/library/752y8abs.aspx

-

Te recomiendo que te pases a 13.0.
 
Arriba