SMF - Just Installed!
CitarEste código es parte de un sistema que maneja la visualización de notificaciones y mensajes en un juego. Utiliza técnicas de programación gráfica, posiblemente con OpenGL, para mostrar texto y gestionar el tiempo de visualización de las notificaciones. Las funciones están diseñadas para interactuar con la interfaz gráfica del juego y proporcionar una experiencia de usuario mejorada al mostrar información relevante
import psutil
import time
import os
import pyautogui
# Configuración
INTERVALO_MONITOREO = 5 # Segundos entre cada revisión
# Umbrales para optimización (ajústalos según tu necesidad)
UMBRAL_CPU_ALTO = 85
UMBRAL_MEMORIA_ALTO = 90
# Estado de optimización global
optimizacion_global_activa = False
juego_activo = False
ultimo_proceso_juego = None
def liberar_memoria():
"""Intenta liberar memoria caché."""
print("Liberando memoria...")
if os.name == 'nt': # Windows
os.system("rundll32.exe advapi32.dll,ProcessIdleTasks")
elif os.name == 'posix': # Linux y macOS
os.system("sudo sync && sudo sysctl vm.drop_caches=3")
print(" (Es posible que necesites ingresar tu contraseña)")
else:
print("Liberación de memoria no implementada para este sistema operativo.")
def bajar_prioridad_otros_procesos(nombre_excluido):
"""Intenta bajar la prioridad de procesos no esenciales."""
procesos_afectados = 0
prioridad_normal = psutil.NORMAL_PRIORITY_CLASS
prioridad_baja = psutil.BELOW_NORMAL_PRIORITY_CLASS
for proc in psutil.process_iter(['pid', 'name', 'nice']):
try:
if nombre_excluido.lower() not in proc.info['name'].lower():
p = psutil.Process(proc.info['pid'])
if os.name == 'nt' and p.nice() >= prioridad_normal and p.name().lower() not in ['explorer.exe', 'taskmgr.exe', 'python.exe']: # Evitar procesos críticos
p.nice(prioridad_baja)
print(f" Bajando prioridad de: {p.name()} (PID: {p.pid})")
procesos_afectados += 1
except (psutil.NoSuchProcess, psutil.AccessDenied):
pass
if procesos_afectados > 0:
print(f"Se bajó la prioridad de {procesos_afectados} procesos.")
def resetear_prioridad_procesos():
"""Intenta resetear la prioridad de los procesos bajados."""
procesos_reseteados = 0
prioridad_normal = psutil.NORMAL_PRIORITY_CLASS
for proc in psutil.process_iter(['pid', 'name', 'nice']):
try:
p = psutil.Process(proc.info['pid'])
if os.name == 'nt' and p.nice() < prioridad_normal and p.name().lower() not in ['explorer.exe', 'taskmgr.exe', 'python.exe']:
p.nice(prioridad_normal)
print(f" Reseteando prioridad de: {p.name()} (PID: {p.pid})")
procesos_reseteados += 1
except (psutil.NoSuchProcess, psutil.AccessDenied):
pass
if procesos_reseteados > 0:
print(f"Se reseteó la prioridad de {procesos_reseteados} procesos.")
def obtener_proceso_ventana_activa():
"""Intenta obtener el nombre del proceso de la ventana activa."""
try:
active_window = pyautogui.getActiveWindow()
if active_window:
pid = active_window.pid
proceso = psutil.Process(pid)
return proceso.name()
except Exception as e:
print(f"Error al obtener la ventana activa: {e}")
return None
def es_posiblemente_un_juego(nombre_proceso):
"""Heurística simple para identificar si un proceso podría ser un juego."""
palabras_clave = ["game", "launcher", "engine", "client", "play", "exe"]
for palabra in palabras_clave:
if palabra in nombre_proceso.lower():
return True
return False
if __name__ == "__main__":
print("Script de optimización automática para cualquier juego (Windows).")
try:
while True:
nombre_proceso_activo = obtener_proceso_ventana_activa()
if nombre_proceso_activo and es_posiblemente_un_juego(nombre_proceso_activo):
if not optimizacion_global_activa:
print(f"\n¡Posible juego detectado: '{nombre_proceso_activo}'. Activando optimización...")
optimizacion_global_activa = True
ultimo_proceso_juego = nombre_proceso_activo
bajar_prioridad_otros_procesos(ultimo_proceso_juego) # Optimización al entrar
cpu_percent = psutil.cpu_percent()
mem_percent = psutil.virtual_memory().percent
print(f"'{nombre_proceso_activo}' activo - CPU: {cpu_percent}%, Memoria: {mem_percent}%", end='\r')
if cpu_percent > UMBRAL_CPU_ALTO:
print(f"\nAlto uso de CPU ({cpu_percent}%) detectado. Intentando liberar memoria...")
liberar_memoria()
if mem_percent > UMBRAL_MEMORIA_ALTO:
print(f"\nAlto uso de Memoria ({mem_percent}%) detectado. Liberando memoria...")
liberar_memoria()
juego_activo = True
else:
if optimizacion_global_activa and juego_activo:
print("\nEl juego ya no está en primer plano o se cerró. Desactivando optimización...")
optimizacion_global_activa = False
resetear_prioridad_procesos() # Desactivación al salir
juego_activo = False
ultimo_proceso_juego = None
print("Esperando a que un juego esté en primer plano...", end='\r')
time.sleep(INTERVALO_MONITOREO)
except KeyboardInterrupt:
print("\nScript detenido por el usuario.")
finally:
if optimizacion_global_activa:
resetear_prioridad_procesos()
import psutil
import time
import os
import pyautogui
Citarpsutil: Permite acceder a información sobre procesos y uso del sistema.
time: Para manejar intervalos de tiempo.
os: Para ejecutar comandos del sistema operativo.
pyautogui: Se utiliza para interactuar con la interfaz gráfica y obtener la ventana activa.