Noticias:

SMF - Just Installed!

Menú principal

Source WARE S6

Publicado por Dakosmu, Jul 18, 2024, 06:32 PM

Tema anterior - Siguiente tema

Dakosmu

Source WARE S6

///////////// MAIN //////////////////////


stdafx.h

#define WARE  1
ware.cpp

#include "stdafx.h"
#if (WARE==1)
#include "ware.h"
#include "Defines.h"
#include "Protocol.h"
#include "Util.h"
#include "User.h"
#include "Interface.h"
#include "Central.h"


ware gwareinterface;

int AnimatedWarehouse = 1;

void ware::DrawWarehouseWindow()
{
    if (!gInterface.Data[eWAREHOUSE_MAIN].OnShow)
    {
        return;
    }

    float MainWidth = 230.0;
    float MainHeight = 380.0;
    float StartY = ((MAX_WIN_HEIGHT - 51) / 2) - (MainHeight / 2);
    float StartX = (MAX_WIN_WIDTH / 2) - (MainWidth / 2);
    float MainCenter = StartX + (MainWidth / 3);
    float ButtonX = MainCenter - (float)(29.0 / 2);
    //--
    gInterface.Data[eWAREHOUSE_MAIN].MaxX = StartX + MainWidth;
    gInterface.Data[eWAREHOUSE_MAIN].MaxY = StartY + MainHeight;

    gCentral.PrintDropBox(StartX, StartY, MainWidth, MainHeight, 0, 0);

    gInterface.DrawFormat(eGold, (int)StartX + 10, (int)StartY + 10, 210, 3, "WAREHOUSE");

    gInterface.DrawFormat(eGold, (int)StartX + 50, (int)StartY + 45, 150, 1, "Dear %s, please select warehouse...", gObjUser.lpPlayer->Name);
   

    pDrawGUI(71520, StartX + (MainWidth / 2) - (200 / 2), StartY + 67, 200, 1); //-- Divisor

    float CurrentMove;
    int BtCount = -1;
    int BtStart = StartY + 75;

    int ObjectIDs[8] =
    {
        eWAREHOUSE_NUM1,
        eWAREHOUSE_NUM2,
        eWAREHOUSE_NUM3,
        eWAREHOUSE_NUM4,
        eWAREHOUSE_NUM5,
        eWAREHOUSE_NUM6,
        eWAREHOUSE_NUM7,
        eWAREHOUSE_NUM8,
    };

    this->WareButtons[0] = 1;
    if (gObjUser.m_MaxWarehouse >= 2)
    {
        this->WareButtons[1] = 1;
    }
    if (gObjUser.m_MaxWarehouse >= 3)
    {
        this->WareButtons[2] = 1;
    }
    if (gObjUser.m_MaxWarehouse >= 4)
    {
        this->WareButtons[3] = 1;
    }
    if (gObjUser.m_MaxWarehouse >= 5)
    {
        this->WareButtons[4] = 1;
    }
    if (gObjUser.m_MaxWarehouse >= 6)
    {
        this->WareButtons[5] = 1;
    }
    if (gObjUser.m_MaxWarehouse >= 7)
    {
        this->WareButtons[6] = 1;
    }
    if (gObjUser.m_MaxWarehouse >= 8)
    {
        this->WareButtons[7] = 1;
    }


    for (int n = 0; n < 8; n++)
    {
        if (this->WareButtons[n] == 1)
        {
            BtCount++;
        }
        else
        {
            continue;
        }

        CurrentMove = 0.0;
        if (gInterface.IsWorkZone(ObjectIDs[n]))
        {
            if (gInterface.Data[ObjectIDs[n]].OnClick)
            {
                PlayBuffer(25, 0, 0);
                CurrentMove = 30.5f;
            }
        }

       
        gInterface.DrawButton(ObjectIDs[n], StartX + (MainWidth / 2) - (108 / 2), BtStart + (33.0f * BtCount), 0, CurrentMove);
        gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (108 / 2), BtStart + (33.0f * BtCount) + 9, 108, 3, gCustomMessage.GetMessage((n == 8) ? 44 : 76 + n));
    }

    pDrawGUI(71520, StartX + (MainWidth / 2) - (200 / 2), StartY + MainHeight - 40, 200, 1); //-- Divisor

    if (gInterface.IsWorkZone(eWAREHOUSE_CLOSE))
    {
        if (gInterface.Data[eWAREHOUSE_CLOSE].OnClick)
        {
            PlayBuffer(25, 0, 0);
            gInterface.DrawButtonRender(eWAREHOUSE_CLOSE, StartX + (MainWidth / 2) - (59 / 2), StartY + MainHeight - 32, 0, 28);
        }
        else
        {
            gInterface.DrawButtonRender(eWAREHOUSE_CLOSE, StartX + (MainWidth / 2) - (59 / 2), StartY + MainHeight - 32, 0, 0);
        }
    }
    else
    {
        gInterface.DrawButtonRender(eWAREHOUSE_CLOSE, StartX + (MainWidth / 2) - (59 / 2), StartY + MainHeight - 32, 0, 0);
    }
    gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (59 / 2), StartY + MainHeight - 25, 59, 3, "Close");
}



void ware::EventWarehouseWindow_Main(DWORD Event)
{
    this->EventWarehouseWindow_Close(Event);
    // 4136

    DWORD CurrentTick = GetTickCount();

    if ((CurrentTick - gInterface.Data[eWAREHOUSE_MAIN].EventTick) < 500)
    {
        return;
    }

    // ----
    if (!gInterface.Data[eWAREHOUSE_MAIN].OnShow)
    {
        return;
    }

    int ObjectIDs[8] =
    {
        eWAREHOUSE_NUM1,
        eWAREHOUSE_NUM2,
        eWAREHOUSE_NUM3,
        eWAREHOUSE_NUM4,
        eWAREHOUSE_NUM5,
        eWAREHOUSE_NUM6,
        eWAREHOUSE_NUM7,
        eWAREHOUSE_NUM8
    };

    for (int i = 0; i < 8; i++)
    {
        if (gInterface.IsWorkZone(ObjectIDs[i]))
        {
            DWORD Delay = (CurrentTick - gInterface.Data[ObjectIDs[i]].EventTick);

            if (Event == WM_LBUTTONDOWN)
            {
                gInterface.Data[ObjectIDs[i]].OnClick = true;
                return;
            }
            // ----
            gInterface.Data[ObjectIDs[i]].OnClick = false;;
            // ----
            if (Delay < 500)
            {
                return;
            }
            // ----
            gInterface.Data[ObjectIDs[i]].EventTick = GetTickCount();
            CGSendWarehouseOpen(i);
            gInterface.Data[eWAREHOUSE_MAIN].Close(MAX_WIN_HEIGHT, 20);
        }
    }
}

void ware::EventWarehouseWindow_Close(DWORD Event)
{
    DWORD CurrentTick = GetTickCount();
    DWORD Delay = (CurrentTick - gInterface.Data[eWAREHOUSE_CLOSE].EventTick);
    // ----
    if (!gInterface.Data[eWAREHOUSE_MAIN].OnShow || !gInterface.IsWorkZone(eWAREHOUSE_CLOSE))
    {
        return;
    }
    // ----
    if (Event == WM_LBUTTONDOWN)
    {
        gInterface.Data[eWAREHOUSE_CLOSE].OnClick = true;
        return;
    }
    // ----
    gInterface.Data[eWAREHOUSE_CLOSE].OnClick = false;
    // ----
    if (Delay < 500)
    {
        return;
    }
    // ----
    gInterface.Data[eWAREHOUSE_CLOSE].EventTick = GetTickCount();
    gInterface.Data[eWAREHOUSE_MAIN].Close(MAX_WIN_HEIGHT, 20);
    // ----
    return;
}
#endif

ware.h

#pragma once

#if (WARE==1)
class ware
{
public:
    void        DrawWarehouseWindow();
    void        EventWarehouseWindow_Main(DWORD Event);
    void        EventWarehouseWindow_Close(DWORD Event);
private:
    int AnimatedWarehouse;
    int WareButtons[8];
};
extern ware gwareinterface;
#endif


Controller.cpp

#include "ware.h"
agregar dentro de LRESULT Controller::Mouse(int Code, WPARAM wParam, LPARAM lParam)

#if (WARE==1)
            gwareinterface.EventWarehouseWindow_Main(wParam);
#endif


Agregar void Interface::RenderObjectSystem() en algunos casos es void Interface::Load()

#if (WARE==1)
    this->BindObject(eWAREHOUSE_MAIN, 0x7A5A, 222, 370, 205, -1);
    this->BindObject(eWAREHOUSE_CLOSE, 71521, 59, 28, -1, -1);
    this->BindObject(eWAREHOUSE_NUM1, 71522, 108, 30.5f, -1, -1);
    this->BindObject(eWAREHOUSE_NUM2, 71522, 108, 30.5f, -1, -1);
    this->BindObject(eWAREHOUSE_NUM3, 71522, 108, 30.5f, -1, -1);
    this->BindObject(eWAREHOUSE_NUM4, 71522, 108, 30.5f, -1, -1);
    this->BindObject(eWAREHOUSE_NUM5, 71522, 108, 30.5f, -1, -1);
    this->BindObject(eWAREHOUSE_NUM6, 71522, 108, 30.5f, -1, -1);
    this->BindObject(eWAREHOUSE_NUM7, 71522, 108, 30.5f, -1, -1);
    this->BindObject(eWAREHOUSE_NUM8, 71522, 108, 30.5f, -1, -1);
#endif


agregar dentro de void Interface::Work()

#if (WARE==1)
    gwareinterface.DrawWarehouseWindow();
#endif


Interface.h

Agregar dentro de enum ObjectID

#if (WARE==1)
eWAREHOUSE_MAIN,
eWAREHOUSE_CLOSE,
eWAREHOUSE_NUM1,
eWAREHOUSE_NUM2,
eWAREHOUSE_NUM3,
eWAREHOUSE_NUM4,
eWAREHOUSE_NUM5,
eWAREHOUSE_NUM6,
eWAREHOUSE_NUM7,
eWAREHOUSE_NUM8,
#endif

Protocol.cpp

#if (WARE==1)
                case 0x0D:
                    GCWarehouseInterfaceOpenRecv((PMSG_WAREHOUSEINTERFACE_RECV*)lpMsg);
                    break;
#endif


esto lo vas a colcoar al finald el codgo que no nterfiera con otro codigo

#if (WARE==1)
void GCWarehouseInterfaceOpenRecv(PMSG_WAREHOUSEINTERFACE_RECV* lpMsg)
{
    gObjUser.m_MaxWarehouse = lpMsg->MaxWarehouse;
    gInterface.Data[eWAREHOUSE_MAIN].Open(MAX_WIN_HEIGHT, 20);
    gInterface.Data[eWAREHOUSE_MAIN].EventTick = GetTickCount();
}

void CGSendWarehouseOpen(int Number)
{
    PMSG_WAREHOUSEINTERFACE_SEND pMsg;
    pMsg.header.set(0xFD, 0x0B, sizeof(pMsg));
    pMsg.Number = Number;
    DataSend((BYTE*)&pMsg, pMsg.header.size);
}
#endif


nterface.h

Agregar debajo de los define

#define MAX_WIN_WIDTH 640
#define MAX_WIN_HEIGHT 480

#if (WARE==1)
struct PMSG_WAREHOUSEINTERFACE_RECV
{
    PSBMSG_HEAD    header;
    int MaxWarehouse;
};

struct PMSG_WAREHOUSEINTERFACE_SEND
{
    PSBMSG_HEAD header;
    int Number;
};
#endif


#if (WARE==1)
void CGSendWarehouseOpen(int Number);
void GCWarehouseInterfaceOpenRecv(PMSG_WAREHOUSEINTERFACE_RECV* lpMsg);
#endif



Import.h

#define pDrawGUI                    ((void(__cdecl*)(DWORD, float, float, float, float)) 0x00790B50)

#define PlayBuffer                    ((signed int(__cdecl*)(int a1, int a2, int a3)) 0x006D6C20)

#define pDrawGUI                    ((void(__cdecl*)(DWORD, float, float, float, float)) 0x00790B50)




















Bon Dia

🡱 🡳