MU Online - S6.3 - Scroll bar and resize real time - Source Mu - Mu Server Files
 

MU Online - S6.3 - Scroll bar and resize real time

Publicado por Dakosmu, Nov 15, 2025, 05:43 AM

Tema anterior - Siguiente tema

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

Dakosmu

MU Online - S6.3 - Scroll bar (Barra de Desplazamiento)

Just Sharing... Just Sharing... Just Sharing... Just Sharing...








CBNewUiEx.cpp

Código:
#include "StdAfx.h"
#include "CBNewUiEx.h"
#include "Import.h"
#include "Offset.h"
#include "SEASON3B.h"

#define pIsKeyRelease ((bool(*)(int))0x00791050)
#define pIsKeyPress             ((bool(__cdecl*)(int)) 0x791070)

CNewUIScrollBar gNewUIScrollBar;

CNewUIScrollBar::CNewUIScrollBar()
{
memset(&m_ptPos, 0, sizeof(POINT));
memset(&m_ptScrollBtnStartPos, 0, sizeof(POINT));
memset(&m_ptScrollBtnPos, 0, sizeof(POINT));

m_iScrollBarPickGap = 0;

m_iScrollBarMovePixel = 1;
m_iScrollBarHeightPixel = 0;
m_iScrollBarMiddleNum = 0;
m_iScrollBarMiddleRemainderPixel = 0;

m_iScrollBtnMouseEvent = SCROLLBAR_MOUSEBTN_NORMAL;
m_bScrollBtnActive = false;

m_fPercentOfSize = 1.0f;

m_iBeginPos = 0;
m_iCurPos = 0;
m_iMaxPos = 1;
MouseWheelWindow = false;
}

bool CNewUIScrollBar::Create(int iX, int iY, int iHeight)
{
m_iHeight = iHeight;
SetPos(iX, iY);
m_bScrollBtnActive = true;
return true;
}

void CNewUIScrollBar::Release()
{
memset(&m_ptPos, 0, sizeof(POINT));
memset(&m_ptScrollBtnStartPos, 0, sizeof(POINT));
memset(&m_ptScrollBtnPos, 0, sizeof(POINT));

m_iScrollBarPickGap = 0;

m_iScrollBarMovePixel = 1;
m_iScrollBarHeightPixel = 0;
m_iScrollBarMiddleNum = 0;
m_iScrollBarMiddleRemainderPixel = 0;

m_iScrollBtnMouseEvent = SCROLLBAR_MOUSEBTN_NORMAL;
m_bScrollBtnActive = false;

m_fPercentOfSize = 1.0f;

m_iBeginPos = 0;
m_iCurPos = 0;
m_iMaxPos = 1;
MouseWheelWindow = false;
}

void CNewUIScrollBar::SetPos(int x, int y)
{
m_ptPos.x = x;
m_ptPos.y = y;

m_ptScrollBtnStartPos.x = m_ptPos.x - (SCROLLBTN_WIDTH / 2 - SCROLLBAR_TOP_WIDTH / 2);
m_ptScrollBtnStartPos.y = m_ptPos.y;

m_ptScrollBtnPos.x = m_ptScrollBtnStartPos.x;
m_ptScrollBtnPos.y = m_ptScrollBtnStartPos.y;

m_iScrollBarMovePixel = m_iHeight - SCROLLBTN_HEIGHT;
if (m_iScrollBarMovePixel < 0)
m_iScrollBarMovePixel = 1;

m_iScrollBarHeightPixel = m_iHeight;

m_iScrollBarMiddleNum = (m_iScrollBarHeightPixel - (SCROLLBAR_TOP_HEIGHT * 2)) / SCROLLBAR_MIDDLE_HEIGHT;
m_iScrollBarMiddleRemainderPixel = (m_iScrollBarHeightPixel - (SCROLLBAR_TOP_HEIGHT * 2)) % SCROLLBAR_MIDDLE_HEIGHT;
}

bool CNewUIScrollBar::UpdateBtnEvent()
{
if (pIsKeyRelease(VK_LBUTTON))
{
m_iScrollBtnMouseEvent = SCROLLBAR_MOUSEBTN_NORMAL;
m_iScrollBarPickGap = 0;
return true;
}

if (pCheckMouseOver(m_ptScrollBtnPos.x, m_ptScrollBtnPos.y, SCROLLBTN_WIDTH, SCROLLBTN_HEIGHT))
{
if (pIsKeyPress(VK_LBUTTON) && m_bScrollBtnActive == true)
{
m_iScrollBarPickGap = pCursorY - m_ptScrollBtnPos.y;
m_iScrollBtnMouseEvent = SCROLLBAR_MOUSEBTN_CLICKED;
return false;
}
}

if (pCheckMouseOver(m_ptPos.x, m_ptPos.y, SCROLLBAR_TOP_WIDTH, m_iScrollBarHeightPixel))
{
if (pIsKeyPress(VK_LBUTTON) && m_bScrollBtnActive == true)
{
float fPercent = (float)(pCursorY - m_ptPos.y) / (float)m_iScrollBarMovePixel;
SetPercent(fPercent);
return true;
}

}

if (MouseWheelWindow)
{
if (MouseWheel < 0)
{
ScrollUp(MouseWheel);
MouseWheel = 0;
return true;
}
if (MouseWheel > 0)
{
ScrollDown(MouseWheel);
MouseWheel = 0;
return true;
}
}
return true;
}

bool CNewUIScrollBar::UpdateMouseEvent()
{

if (UpdateBtnEvent() == true)
return false;

return true;
}

bool CNewUIScrollBar::UpdateKeyEvent()
{

return true;
}

bool CNewUIScrollBar::Update()
{
if (m_iScrollBtnMouseEvent == SCROLLBAR_MOUSEBTN_CLICKED)
{
float fPercent = (float)(pCursorY - m_iScrollBarPickGap - m_ptPos.y) / (float)m_iScrollBarMovePixel;
SetPercent(fPercent);
}

return true;
}

bool CNewUIScrollBar::Render()
{
pSetBlend(true);
glColor3f(1.0, 1.0, 1.0);
pDrawGUI(IMAGE_SCROLL_TOP, m_ptPos.x, m_ptPos.y, SCROLLBAR_TOP_WIDTH, SCROLLBAR_TOP_HEIGHT);

for (int i = 0; i < m_iScrollBarMiddleNum; i++)
{
pDrawGUI(IMAGE_SCROLL_MIDDLE, m_ptPos.x,
m_ptPos.y + SCROLLBAR_TOP_HEIGHT + (i * SCROLLBAR_MIDDLE_HEIGHT), SCROLLBAR_TOP_WIDTH, SCROLLBAR_MIDDLE_HEIGHT);
}

if (m_iScrollBarMiddleRemainderPixel > 0)
{
pDrawGUI(IMAGE_SCROLL_MIDDLE, m_ptPos.x, m_ptPos.y + SCROLLBAR_TOP_HEIGHT + (m_iScrollBarMiddleNum * SCROLLBAR_MIDDLE_HEIGHT), SCROLLBAR_TOP_WIDTH, m_iScrollBarMiddleRemainderPixel);
}

pDrawGUI(IMAGE_SCROLL_BOTTOM, m_ptPos.x, m_ptPos.y + m_iHeight - SCROLLBAR_TOP_HEIGHT, SCROLLBAR_TOP_WIDTH, SCROLLBAR_TOP_HEIGHT);

if (m_bScrollBtnActive == true)
{
if (m_iScrollBtnMouseEvent == SCROLLBAR_MOUSEBTN_CLICKED)
{
glColor4f(0.7f, 0.7f, 0.7f, 1.0f);
}
pDrawGUI(IMAGE_SCROLLBAR_ON, m_ptScrollBtnPos.x, m_ptScrollBtnPos.y,
SCROLLBTN_WIDTH, SCROLLBTN_HEIGHT);
}
else
{
pDrawGUI(IMAGE_SCROLLBAR_OFF, m_ptScrollBtnPos.x, m_ptScrollBtnPos.y,
SCROLLBTN_WIDTH, SCROLLBTN_HEIGHT);
}
glColor3f(1.0f, 1.0f, 1.0f); //Xoa mau
pGLSwitch();
EnableAlphaTest(0);
return true;
}


void CNewUIScrollBar::UpdateScrolling()
{
m_ptScrollBtnPos.y = m_ptScrollBtnStartPos.y + m_fPercentOfSize * m_iScrollBarMovePixel;
}

void CNewUIScrollBar::ScrollUp(int iMoveValue)
{
SetCurPos(m_iCurPos + iMoveValue);
}

void CNewUIScrollBar::ScrollDown(int iMoveValue)
{
SetCurPos(m_iCurPos - iMoveValue);
}

void CNewUIScrollBar::SetPercent(float fPercent)
{
if (fPercent <= 0.0f)
m_fPercentOfSize = 0.0f;
else if (fPercent >= 1.0f)
m_fPercentOfSize = 1.0f;
else
m_fPercentOfSize = fPercent;

m_iCurPos = m_iMaxPos * m_fPercentOfSize;
UpdateScrolling();
}

void CNewUIScrollBar::SetMaxPos(int iMaxPos)
{
if (iMaxPos < 1)
iMaxPos = 1;

m_iMaxPos = iMaxPos;
}

void CNewUIScrollBar::SetCurPos(int iPosValue)
{
if (m_iBeginPos >= iPosValue)
m_iCurPos = m_iBeginPos;
else if (m_iMaxPos <= iPosValue)
m_iCurPos = m_iMaxPos;
else
m_iCurPos = iPosValue;

m_fPercentOfSize = (float)m_iCurPos / (float)m_iMaxPos;
UpdateScrolling();
}



CBNewUiEx.h

Código:
#pragma once
#define MouseWheel *(DWORD*)0x879337C
#define CheckSPK_WINDOWS6 gInterface.CheckWindow(Inventory)|| gInterface.CheckWindow(Character)|| gInterface.CheckWindow(Warehouse)|| gInterface.CheckWindow(Shop)|| gInterface.CheckWindow(ChaosBox)|| gInterface.CheckWindow(Trade)|| gInterface.CheckWindow(Store)|| gInterface.CheckWindow(OtherStore)|| gInterface.CheckWindow(LuckyCoin1)|| gInterface.CheckWindow(NPC_ChaosMix)|| gInterface.CheckWindow(MoveList)


enum KEnumTypeSCROLLBTN
{
SCROLLBTN_WIDTH = 15,
SCROLLBTN_HEIGHT = 30,
SCROLLBAR_TOP_WIDTH = 7,
SCROLLBAR_TOP_HEIGHT = 3,
SCROLLBAR_MIDDLE_WIDTH = 7,
SCROLLBAR_MIDDLE_HEIGHT = 15
};

enum KEnumTypeSCROLLBAR_MOUSEBTN
{
SCROLLBAR_MOUSEBTN_INVALID = -1,
SCROLLBAR_MOUSEBTN_FIRST,
SCROLLBAR_MOUSEBTN_NORMAL = SCROLLBAR_MOUSEBTN_FIRST,
SCROLLBAR_MOUSEBTN_OVER,
SCROLLBAR_MOUSEBTN_CLICKED,
SCROLLBAR_MOUSEBTN_TOTAL,
SCROLLBAR_MOUSEBTN_LAST = SCROLLBAR_MOUSEBTN_TOTAL - 1,
};
enum ScrollBarImg
{
IMAGE_SCROLL_TOP = 31270,
IMAGE_SCROLL_MIDDLE,
IMAGE_SCROLL_BOTTOM,
IMAGE_SCROLLBAR_ON,
IMAGE_SCROLLBAR_OFF,

};

class CNewUIScrollBar
{
protected:
int m_iHeight;
POINT m_ptPos;
POINT m_ptScrollBtnStartPos;
POINT m_ptScrollBtnPos;
int m_iScrollBarPickGap;
int m_iScrollBarMovePixel;
int m_iScrollBarHeightPixel;
int m_iScrollBarMiddleNum;
int m_iScrollBarMiddleRemainderPixel;
int m_iScrollBtnMouseEvent;
bool m_bScrollBtnActive;
float m_fPercentOfSize;
int m_iBeginPos;
int m_iCurPos;
int m_iMaxPos;

public:
CNewUIScrollBar();

bool Create(int iX, int iY, int iHeight);
void Release();


void SetPos(int x, int y);

bool UpdateBtnEvent();
bool UpdateMouseEvent();
bool UpdateKeyEvent();

bool Update();
bool Render();

void UpdateScrolling();
void ScrollUp(int iMoveValue);
void ScrollDown(int iMoveValue);

float GetPercent() { return m_fPercentOfSize; }
void SetPercent(float fPercent);

int GetMaxPos() { return m_iMaxPos; }
void SetMaxPos(int iMaxPos);

int GetCurPos() { return m_iCurPos; }
void SetCurPos(int iMoveValue);
bool MouseWheelWindow;

};

extern CNewUIScrollBar gNewUIScrollBar;



Créditos

  • X-Team
  • MuEmu
  • T-LEGENDARY
  • JavixFer
  • and i don't know what person create this code i just remove it


Bon Dia

🡱 🡳
Real Time Web Analytics