[PACK FIXES] Cashshop, DirectSound & Connection - Source 5.2 Pegasus - Source Mu - Mu Server Files
 

[PACK FIXES] Cashshop, DirectSound & Connection - Source 5.2 Pegasus

Publicado por Dakosmu, Mar 13, 2026, 01:07 PM

Tema anterior - Siguiente tema

0 Miembros y 4 Visitantes están viendo este tema.

Dakosmu

[PACK FIXES] Cashshop, DirectSound & Connection - Source 5.2 Pegasus
Introducción
Hola a todos. Les traigo un paquete de correcciones esenciales para los archivos Source 5.2 (Pegasus/Mudream). Estos fixes resuelven problemas visuales en la Cashshop, crashes de audio y cierres inesperados de conexión.

1. Fix Cashshop: Botones Duplicados
Créditos: mkslep

Este fix corrige el error visual donde los botones de la tienda se enciman o aparecen duplicados. Debes reemplazar la función SetBtnInfo en tu archivo de la Cashshop.

[details=Clic para ver el Código C++]
void CNewUIInGameShop::SetBtnInfo()
{
m_CloseButton.ChangeButtonImgState(true, IMAGE_IGS_EXIT_BTN, false);
m_CloseButton.ChangeButtonInfo(m_Pos.x + IMAGE_IGS_EXIT_BTN_POS_X, m_Pos.y + IMAGE_IGS_EXIT_BTN_POS_Y, IMAGE_IGS_EXIT_BTN_WIDTH, IMAGE_IGS_EXIT_BTN_HEIGHT);
m_CloseButton.ChangeToolTipText(GlobalText[1002], true);

m_ListBoxTabButton.CreateRadioGroup(1, IMAGE_IGS_LEFT_TAB);
m_ListBoxTabButton.ChangeRadioButtonInfo(true, m_Pos.x + IMAGE_IGS_TAB_BTN_POS_X, m_Pos.y + IMAGE_IGS_TAB_BTN_POS_Y, IMAGE_IGS_TAB_BTN_WIDTH, IMAGE_IGS_TAB_BTN_HEIGHT, IMAGE_IGS_TAB_BTN_DISTANCE);
m_ListBoxTabButton.ChangeButtonState(SEASON3B::BUTTON_STATE_DOWN, 0);

unicode::t_string strText;
std::list<unicode::t_string> TextList;
strText = GlobalText[2888];
TextList.push_back(strText);
strText = GlobalText[2889];
TextList.push_back(strText);
m_ListBoxTabButton.ChangeRadioText(TextList);
m_ListBoxTabButton.ChangeFrame(0);

for (int i = 0; i < INGAMESHOP_DISPLAY_ITEMLIST_SIZE; i++)
{
    m_ViewDetailButton.ChangeButtonImgState(true, IMAGE_IGS_VIEWDETAIL_BTN, true, false, true);
    m_ViewDetailButton.ChangeButtonInfo((m_Pos.x + IMAGE_IGS_VIEWDETAIL_BTN_POS_X) + ((i % IGS_NUM_ITEMS_WIDTH) * IMAGE_IGS_VIEWDETAIL_BTN_DISTANCE_X), (m_Pos.y + IMAGE_IGS_VIEWDETAIL_BTN_POS_Y) + ((i / IGS_NUM_ITEMS_HEIGHT) * IMAGE_IGS_VIEWDETAIL_BTN_DISTANCE_Y), IMAGE_IGS_VIEWDETAIL_BTN_WIDTH, IMAGE_IGS_VIEWDETAIL_BTN_HEIGHT);
    m_ViewDetailButton.MoveTextPos(0, -1);
    m_ViewDetailButton.ChangeText(GlobalText[2886]);
}

m_CashGiftButton.ChangeButtonImgState(true, IMAGE_IGS_ITEMGIFT_BTN, true);
m_CashGiftButton.ChangeButtonInfo(m_Pos.x + IMAGE_IGS_ITEMGIFT_BTN_POS_X, m_Pos.y + IMAGE_IGS_ICON_BTN_POS_Y, IMAGE_IGS_ICON_BTN_WIDTH, IMAGE_IGS_ICON_BTN_HEIGHT);
m_CashGiftButton.ChangeToolTipText(GlobalText[2939]);

m_CashChargeButton.ChangeButtonImgState(true, IMAGE_IGS_CASHGIFT_BTN, true);
m_CashChargeButton.ChangeButtonInfo(m_Pos.x + IMAGE_IGS_CASHGIFT_BTN_POS_X, m_Pos.y + IMAGE_IGS_ICON_BTN_POS_Y, IMAGE_IGS_ICON_BTN_WIDTH, IMAGE_IGS_ICON_BTN_HEIGHT);
m_CashChargeButton.ChangeToolTipText(GlobalText[2940]);

m_CashRefreshButton.ChangeButtonImgState(true, IMAGE_IGS_REFRESH_BTN, true);
m_CashRefreshButton.ChangeButtonInfo(m_Pos.x + IMAGE_IGS_REFRESH_BTN_POS_X, m_Pos.y + IMAGE_IGS_ICON_BTN_POS_Y, IMAGE_IGS_ICON_BTN_WIDTH, IMAGE_IGS_ICON_BTN_HEIGHT);
m_CashRefreshButton.ChangeToolTipText(GlobalText[2941]);

m_UseButton.ChangeButtonImgState(true, IMAGE_IGS_VIEWDETAIL_BTN, true, false, true);
m_UseButton.ChangeButtonInfo(m_Pos.x + IMAGE_IGS_USE_BTN_POS_X, m_Pos.y + IMAGE_IGS_USE_BTN_POS_Y, IMAGE_IGS_VIEWDETAIL_BTN_WIDTH, IMAGE_IGS_VIEWDETAIL_BTN_HEIGHT);
m_UseButton.MoveTextPos(0, -1);
m_UseButton.ChangeText(GlobalText[2887]);

m_PrevButton.ChangeButtonImgState(true, IMAGE_IGS_PAGE_LEFT, true);
m_PrevButton.ChangeButtonInfo(m_Pos.x + IMAGE_IGS_PAGE_LEFT_POS_X, m_Pos.y + IMAGE_IGS_PAGE_BUTTON_POS_Y, IMAGE_IGS_PAGE_BTN_WIDTH, IMAGE_IGS_PAGE_BTN_HEIGHT);
}
[/details]

2. Fix DirectSound: Crash en Inicialización
O que foi corrigido:

Adiós al crash por g_lpDS == NULL.

Soporte para múltiples canales (varias instancias del mismo sonido).

Limpieza completa de recursos al cerrar.

[details=Clic para ver el Código C++ Completo]
// Reemplazar el contenido de DSPlaySound.cpp con este código robusto
#include "stdafx.h"
// ... (incluir headers estándar)

// Fix: Soporte real a múltiples canales e inicialización segura
HRESULT InitDirectSound(HWND hDlg)
{
HRESULT hr;
DSBUFFERDESC dsbdesc;
LPDIRECTSOUNDBUFFER lpDSBPrimary = NULL;
WAVEFORMATEX wfx;

CoInitialize(NULL);

if (FAILED(hr = DirectSoundCreate(NULL, &g_lpDS, NULL)))
{
    g_ErrorReport.Write("Init - DirectSoundCreate Error\r\n");
    return hr;
}

if (FAILED(hr = g_lpDS->SetCooperativeLevel(hDlg, DSSCL_PRIORITY)))
{
    g_ErrorReport.Write("Init - DS SetCooperativeLevel Error\r\n");
    return hr;
}

// Configuración de Buffer Primario y 3D Listener...
// (Asegúrate de copiar el código completo proporcionado arriba)

g_EnableSound = true;
return S_OK;
}
[/details]

3. Fix Conexión: Cierre Indebido (Server Lost)
Corrige el problema de desconexión mostrado en esta imagen: Regístrate para ver el enlace

Instrucciones:

Abre ZzzScene.cpp.

Busca la función void MainScene(HDC hDC).

Busca la línea if (EnableSocket && SceneFlag == MAIN_SCENE).

Reemplaza todo ese bloque por el siguiente código:

if (EnableSocket && SceneFlag == MAIN_SCENE)
{
if (SocketClient.GetSocket() == INVALID_SOCKET)
{
if (g_pReconnect->s_Data.ReconnectStatus == g_pReconnect->RECONNECT_STATUS_RECONNECT)
{
return;
}
static BOOL s_bClosed = FALSE;
if (!s_bClosed)
{
s_bClosed = TRUE;
g_ErrorReport.Write("> Connection closed. ");
g_ErrorReport.WriteCurrentTime();
SEASON3B::CreateMessageBox(MSGBOX_LAYOUT_CLASS(SEASON3B::CServerLostMsgBoxLayout));
}
}
}

Nota final: Estos cambios requieren guardar los archivos con codificación UTF-8 (sin BOM) o ANSI para evitar errores de compilación en Visual Studio.

Dev - Dakosmu
Bon Dia

🡱 🡳
Real Time Web Analytics