;variables para el MSCN de windows #include ;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