;variables para el MSCN de windows
#include <GUIConstants.au3>
;declaración de variables locales y globales
Global $taimods
Dim $Input[9]
Dim $Radio[9], $nRadios = 8
Global $rutamod, $ultimomod, $numeromod, $modcolor
Global $rojo = 0xFF0000
Global $verde = 0x008000
Global $rutajuego = RegRead('HKEY_CURRENT_USER\' & 'Software\Blizzard Entertainment\Diablo II', 'InstallPath')
Global $rutajuego2, $rutajuego3
Interfaz() ;llamo a la interfaz como primera función
Func Interfaz()
acstatus()
$taimods = GUICreate("G-MODS v0.1 por taigeto", 486, 403, 211, 148)
$Tab1 = GUICtrlCreateTab(0, 0, 481, 400, $TCS_BUTTONS)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Instalar = GUICtrlCreateTabItem("Instalar")
GUICtrlSetState($Instalar,$GUI_SHOW)
$Group1 = GUICtrlCreateGroup("Selecciona qué quieres instalar y su carpeta dentro del gestor", 24, 32, 441, 321)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Input[0] = GUICtrlCreateInput(@ScriptDir & "\pd2spa", 256, 56, 190, 24)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Input[1] = GUICtrlCreateInput(@ScriptDir & "\pd2eng", 256, 88, 190, 24)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Input[2] = GUICtrlCreateInput(@ScriptDir & "\vancomp", 256, 118, 190, 24)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Input[3] = GUICtrlCreateInput(@ScriptDir & "\vansin", 256, 150, 190, 24)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Input[4] = GUICtrlCreateInput(@ScriptDir & "\vanbug", 256, 182, 190, 24)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Input[5] = GUICtrlCreateInput(@ScriptDir & "\mmbot", 256, 214, 190, 24)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Input[6] = GUICtrlCreateInput(@ScriptDir & "\mod1", 256, 246, 190, 24)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Input[7] = GUICtrlCreateInput(@ScriptDir & "\mod2", 256, 280, 190, 24)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Input[8] = GUICtrlCreateInput(@ScriptDir & "\mod3", 256, 312, 190, 24)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Radio[0] = GUICtrlCreateRadio("Patch Original", 34, 56, 113, 30)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Radio[1] = GUICtrlCreateRadio("Patch en Inglés", 34, 88, 122, 30)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Radio[2] = GUICtrlCreateRadio("Vanessa Completo", 34, 120, 145, 30)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Radio[3] = GUICtrlCreateRadio("Vanessa SIN", 34, 152, 137, 30)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Radio[4] = GUICtrlCreateRadio("Vanessa + Bug Duriel", 34, 184, 170, 30)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Radio[5] = GUICtrlCreateRadio("MOD del MM.Bot", 34, 216, 160, 30)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Radio[6] = GUICtrlCreateRadio("Tu MOD 1", 34, 248, 121, 30)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Radio[7] = GUICtrlCreateRadio("Tu MOD 2", 34, 280, 137, 30)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Radio[8] = GUICtrlCreateRadio("Tu MOD 3", 34, 312, 97, 30)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Instalar", 352, 360, 113, 33, 0)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Status = GUICtrlCreateTabItem("Status")
$Group2 = GUICtrlCreateGroup("Estado del gestor", 8, 32, 457, 57)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Label1 = GUICtrlCreateLabel("Último MOD instalado:", 16, 56, 131, 20)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Label2 = GUICtrlCreateLabel($ultimomod, 212, 56, 150, 20, $SS_CENTER)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
GUICtrlSetColor(-1, $modcolor)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button2 = GUICtrlCreateButton("Desinstalar todo", 152, 352, 150, 30, 0)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$Group3 = GUICtrlCreateGroup("Ruta del juego", 8, 108, 457, 57)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
$rutajuego2 = GUICtrlCreateInput($rutajuego, 16, 128, 432, 24)
GUICtrlSetFont(-1, 8, 400, 0, "Tahoma")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Ayuda = GUICtrlCreateTabItem("Ayuda")
$Edit1 = GUICtrlCreateEdit("", 8, 40, 464, 345, BitOR($ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL))
GUICtrlSetData(-1, StringFormat("GESTOR DE MODS 'G-MODS' V0.1\r\n_____________________________\r\nEsta utilidad la he programado para uso personal por lo que no tiene mucha\r\nfuncionalidad. Si me dais ideas ya la iré ampliando.\r\nLo único que hace es cambiar el contenido de la carpeta del juego \\data y \r\nel patch_d2.mpq que esté dentro de la carpeta del MOD indicado. Así de \r\nfácil. Sólo que con una interfaz gráfica para facilitar su uso.\r\nTambién incluyo el código fuente para que cualquier pueda personalizarlo a\r\nsu gusto.\r\n\r\nINSTALACIÓN\r\n_____________\r\nDescomprime la carpeta de este gestor donde quieras. Si la quieres tener en\r\nel escritorio funcionará de la misma manera que si la tienes en la carpeta del\r\njuego. Lo único que hace falta es que dentro tengas las carpetas de los mods\r\ny que en el Status tengas bien puesta la ruta del juego (en teoría tendría\r\nque cogerla automáticamente). En mi caso la tengo dentro de \r\nC:\\Archivos de programa\\Diablo II\\ con un acceso directo desde el\r\nescritorio.\r\n\r\nDESINSTALACIÓN\r\n_________________\r\nEn la pestaña de Status, clic sobre "&Chr(34)&"Desinstalar todo"&Chr(34)&" y el gestor recuperará\r\nel estado original del juego. Borra la carpeta del gestor con él dentro y eso es\r\ntodo.\r\n\r\nLOS MODS QUE INCLUYE SON\r\n____________________________\r\n* Patch Original >> Es el patch_d2.mpq para la versión 1.11b en español.\r\nEste patch es el que se tiene al realizar una instalación limpia del diablo.\r\nSe usa como backup al desinstalar o cambiar de MODs.\r\n\r\n* Patch en Inglés >> Es el patch_d2.mpq para la versión 1.11b parcheado al\r\nInglés. Va bien para hacer screenshots de items en inglés.\r\n\r\n* Vanessa Completo >> MOD de Vanessa para la 1.11b.\r\nCorrige fallos en la versión española del diablo, colorea items, etc.\r\nhttp://vanessa.d2diablo2.com/ para más información\r\n\r\n* Vanessa SIN >> http://vanessa.d2diablo2.com/ para más información\r\n\r\n* Vanessa + Bug Duriel >> Parche de Vanessa que se aprovecha del bug\r\ndel ojo de Duriel en el primer portal del acto 1.\r\n\r\n* MM.Bot >> Este es el MOD que utiliza el bot MM.Bot para identificar mejor\r\nobjetos y ganar precisión en la versión 5.44b6 por lo que si no utilizas\r\neste bot no tiene sentido instalarlo. Ni que decir tiene que puedes cambiar\r\nel mod del bot por otro dentro de su carpeta (de otra versión por ej.)\r\n\r\n* Tu MOD 1, 2, 3 >> Aquí se pueden meter los mods/patchs que uno quiera.\r\nYo utilizo un par de mods personalizados para tener un radio de luz completo,\r\nmostrar las trampas en el minimapa, etc. Cada uno como vea. Para hacerlo\r\nsólo tienes que copiar el patch_d2.mpq o \\data dentro de mod1, mod2 o\r\nmod3.\r\n\r\nPara instalar más mods recomiendo visitar\r\nhttp://www.edgeofnowhere.cc/\r\n\r\nAUTOR\r\n_______\r\nJ.M. aka taigeto\r\ntaigeto@gmail.com\r\nICQ: 86-022-804\r\nIRC: taigeto @ irc.omnesia.net || irc.dclone.net || irc.d2jsp.org\r\nSi vais a modificarlo y distribuirlo por ahí mencionadme al menos :P"))
GUICtrlSetFont(-1, 7, 400, 0, "Microsoft Sans Serif")
GUICtrlCreateTabItem("")
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Instalar()
Case $Button2
Desinstalar()
Case Else ;;;;
EndSwitch
WEnd
EndFunc
Func Instalar()
For $i=0 to $nRadios
If BitAnd(GUICtrlRead($Radio[$i]),$GUI_CHECKED) = $GUI_CHECKED Then
$rutamod = GUICtrlRead($Input[$i])
$numeromod = $i
;MsgBox(0, "Has pulsado", "el input " & $i+1 & " y la carpeta " & $rutamod)
;Exit
EndIf
Next
If nodiablo() Then
Return
EndIf
RegWrite ('HKEY_CURRENT_USER\' & 'Software\Blizzard Entertainment\Diablo II',"UltimoMOD","REG_SZ",$numeromod)
acstatus()
$rutajuego3 = StringTrimRight(GUICtrlRead($rutajuego2),1)
If FileExists($rutamod & "\patch_d2.mpq") Then ; en el caso de que haya patch_d2.mpq dentro del mod
DirRemove($rutajuego3 & "\data", 1)
FileCopy($rutamod & "\patch_d2.mpq", $rutajuego3, 1)
Else ; en el caso de que haya \data
DirRemove($rutajuego3 & "\data", 1)
DirCopy($rutamod, $rutajuego3, 1)
FileCopy(GUICtrlRead($Input[0]) & "\patch_d2.mpq", $rutajuego3, 1)
EndIf
MsgBox(1,"Mod Instalado", $ultimomod & " instalado correctamente")
GUIDelete($taimods)
Interfaz()
EndFunc
Func Desinstalar() ;borra el ultimo
If nodiablo() Then
Return
EndIf
RegWrite ('HKEY_CURRENT_USER\' & 'Software\Blizzard Entertainment\Diablo II',"UltimoMOD","REG_SZ","255")
$rutajuego3 = StringTrimRight(GUICtrlRead($rutajuego2),1)
DirRemove($rutajuego3 & "\data", 1)
FileCopy(GUICtrlRead($Input[0]) & "\patch_d2.mpq", $rutajuego3, 1) ; al desinstalar restauro todo con el parche original
MsgBox(1,"Mods Desinstalados", "Mods desinstalados correctamente")
GUIDelete($taimods)
Interfaz()
EndFunc
Func acstatus() ; para indicar en el status que mod fue el ultimo que se instalo
$status = RegRead('HKEY_CURRENT_USER\' & 'Software\Blizzard Entertainment\Diablo II',"UltimoMOD")
If $status = 0 Then
$ultimomod = "Patch Original"
$modcolor = $verde
ElseIf $status = 1 Then
$ultimomod = "Patch en Inglés"
$modcolor = $verde
ElseIf $status = 2 Then
$ultimomod = "Vanessa Completo"
$modcolor = $verde
ElseIf $status = 3 Then
$ultimomod = "Vanessa SIN"
$modcolor = $verde
ElseIf $status = 4 Then
$ultimomod = "Vanessa + Bug Duriel"
$modcolor = $verde
ElseIf $status = 5 Then
$ultimomod = "MOD del MM.Bot"
$modcolor = $verde
ElseIf $status = 6 Then
$ultimomod = "Tu MOD 1"
$modcolor = $verde
ElseIf $status = 7 Then
$ultimomod = "Tu MOD 2"
$modcolor = $verde
ElseIf $status = 8 Then
$ultimomod = "Tu MOD 3"
$modcolor = $verde
Else
$ultimomod = "Ninguno"
$modcolor = $rojo
EndIf
EndFunc
Func nodiablo() ; compruebo que no está ejecutándose el diablo 2
If ProcessExists("D2Loader-1.11b.exe") OR ProcessExists("D2-Loader1.11b.exe") OR ProcessExists("Diablo II.exe") OR ProcessExists("Game.exe") OR ProcessExists("D2Loader.exe") Then
MsgBox(1,"MOD no instalado", "Cierra antes el juego")
Return True
Else
Return False
EndIf
EndFunc