WhatsApp Discord
Source Inicial: Launcher Design - TEMPLE MU ONLINE - Source Mu - Mu Server Files
 

Source Inicial: Launcher Design - TEMPLE MU ONLINE

Publicado por Dakosmu, Abr 04, 2026, 11:58 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Keywords Launcher

Dakosmu

[RELEASES] Source Inicial: Launcher Design - TEMPLE MU ONLINE

Introducción:
Presentamos el código fuente inicial para un Launcher de Mu Online basado en el diseño exclusivo de Temple MU. Desarrollado íntegramente en Python utilizando la librería PyQt6, este proyecto permite implementar una interfaz moderna con transparencias reales y botones totalmente funcionales para tu servidor.

Regístrate para ver el enlace

Imagen png
Regístrate para ver el enlace


Características Principales:
  • Interfaz Transparente: Renderizado sin bordes de Windows, respetando el diseño original del dragón y los guerreros.
  • Doble Barra de Progreso: Configuración lista para implementar actualizaciones parciales y totales.
  • Integración Social: Acceso directo a Web, WhatsApp y Discord mediante botones invisibles sobre el diseño.
  • Movilidad Dinámica: Sistema de arrastre (drag-and-drop) integrado para mover la ventana libremente.

Este proyecto ha sido probado en entornos de desarrollo con Python 3.9+ y requiere la instalación previa de las dependencias de PyQt6 para su correcta ejecución.

Requisitos Previos:
Si no instalas la librería necesaria, el script no se ejecutará. Asegúrate de tener Python instalado y ejecuta el siguiente comando en tu terminal:

pip install PyQt6
Guía de Instalación y Configuración:
  • Crea una carpeta para tu proyecto y nómbrala como Launcher Design.
  • Guarda el código fuente proporcionado abajo en un archivo llamado Launcher Regístrate para ver el enlace.
  • Coloca tu imagen de fondo en la misma carpeta con el nombre launcher_bg.png (debe ser un PNG con canal alfa para la transparencia).
  • Ejecuta el script desde tu IDE favorito (Visual Studio, PyCharm o Pydroid 3).

Al editar el código, asegúrate de guardar el archivo con codificación UTF-8 (sin BOM) o ANSI para evitar conflictos de caracteres en las rutas de los archivos.

Código Fuente (Python):


import sys
import os
import webbrowser
from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QProgressBar
from PyQt6.QtCore import Qt, QPoint
from PyQt6.QtGui import QPixmap, QCursor

class LauncherDesign(QMainWindow):
    def __init__(self):
        super().__init__()

        # 1. Configuración de transparencia y estilo de ventana
        self.setWindowFlags(Qt.WindowType.FramelessWindowHint | Qt.WindowType.WindowStaysOnTopHint)
        self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
       
        # 2. Localizar la imagen de fondo de forma absoluta
        # Esto evita el error de "pantalla negra" si ejecutas desde VS Code
        directorio_actual = os.path.dirname(os.path.abspath(__file__))
        ruta_imagen = os.path.join(directorio_actual, "launcher_bg.png")

        self.bg_label = QLabel(self)
       
        if os.path.exists(ruta_imagen):
            pixmap = QPixmap(ruta_imagen)
            self.bg_label.setPixmap(pixmap)
            self.bg_label.setScaledContents(True)
            self.setFixedSize(pixmap.width(), pixmap.height())
            self.bg_label.setGeometry(0, 0, pixmap.width(), pixmap.height())
        else:
            print(f"Error: No se encontró 'launcher_bg.png' en: {directorio_actual}")
            self.setFixedSize(1000, 600)
            self.bg_label.setText("ERROR: IMAGEN NO ENCONTRADA")
            self.bg_label.setStyleSheet("color: white; font-size: 20px;")

        # 3. --- BOTÓN START GAME ---
        self.btn_start = QPushButton("START GAME", self)
        self.btn_start.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
        # Ajusta estas coordenadas (X, Y, Ancho, Alto) según tu diseño
        self.btn_start.setGeometry(415, 675, 180, 50)
        self.btn_start.setStyleSheet("""
            QPushButton {
                background-color: rgba(255, 68, 0, 0.1);
                color: white;
                font-family: 'Verdana';
                font-weight: bold;
                font-size: 15px;
                border: 1px solid #ff4400;
                border-radius: 5px;
            }
            QPushButton:hover {
                background-color: rgba(255, 68, 0, 0.4);
                border: 2px solid #ffaa00;
            }
        """)
        self.btn_start.clicked.connect(self.lanzar_juego)

        # 4. --- BARRAS DE PROGRESO ---
        # Barra de Update (Roja)
        self.bar_update = QProgressBar(self)
        self.bar_update.setGeometry(332, 608, 345, 8)
        self.bar_update.setValue(45)
        self.bar_update.setTextVisible(False)
        self.bar_update.setStyleSheet(self.estilo_barra("#cc0000"))

        # Barra Total (Azul)
        self.bar_total = QProgressBar(self)
        self.bar_total.setGeometry(332, 638, 345, 8)
        self.bar_total.setValue(80)
        self.bar_total.setTextVisible(False)
        self.bar_total.setStyleSheet(self.estilo_barra("#0066ff"))

        # 5. --- BOTONES SOCIALES (Invisibles sobre los iconos) ---
        self.crear_boton_social(415, 758, "https://mu-temple.com")
        self.crear_boton_social(485, 758, "https://wa.me/tu_link")
        self.crear_boton_social(555, 758, "https://discord.gg/tu_servidor")

        # 6. --- BOTÓN CERRAR ---
        self.btn_close = QPushButton("✕", self)
        self.btn_close.setGeometry(self.width() - 80, 240, 40, 40)
        self.btn_close.setStyleSheet("color: white; font-size: 22px; background: none; border: none;")
        self.btn_close.clicked.connect(self.close)

        # Variables para arrastrar la ventana
        self.click_pos = None

    def estilo_barra(self, color):
        return f"""
            QProgressBar {{
                background-color: rgba(20, 20, 20, 200);
                border: 1px solid #333;
                border-radius: 2px;
            }}
            QProgressBar::chunk {{
                background-color: {color};
            }}
        """

    def crear_boton_social(self, x, y, url):
        btn = QPushButton(self)
        btn.setGeometry(x, y, 40, 40)
        btn.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
        btn.setStyleSheet("background: transparent; border: none;")
        btn.clicked.connect(lambda: webbrowser.open(url))

    def lanzar_juego(self):
        print("Ejecutando main.exe...")
        # os.startfile("main.exe")

    # --- Lógica para mover ventana sin bordes ---
    def mousePressEvent(self, event):
        if event.button() == Qt.MouseButton.LeftButton:
            self.click_pos = event.globalPosition().toPoint()

    def mouseMoveEvent(self, event):
        if self.click_pos:
            diff = event.globalPosition().toPoint() - self.click_pos
            self.move(self.x() + diff.x(), self.y() + diff.y())
            self.click_pos = event.globalPosition().toPoint()

    def mouseReleaseEvent(self, event):
        self.click_pos = None

if __name__ == "__main__":
    # Asegúrate de guardar con codificación UTF-8 (sin BOM)
    app = QApplication(sys.argv)
    launcher = LauncherDesign()
    launcher.show()
    sys.exit(app.exec())


¡Listo! Con esto tendrás la base visual del launcher operando correctamente con transparencia total en Windows.


--------------------------------------------------

¿Tienes dudas con el posicionamiento de los botones?
Si necesitas ayuda para ajustar las coordenadas exactas de las barras de progreso o integrar el sistema de auto-update, deja tu comentario abajo. ¡Estaremos encantados de ayudarte a mejorar tu servidor!
Bon Dia

Dakosmu

Bon Dia

🡱 🡳
Real Time Web Analytics