Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - dakosmu

Pages: [1]
1
Sources Generales / Files Source WideScreen 2024 By Dakosmu
« on: January 18, 2024, 02:09:28 AM »
Source WideScreen 2024 By Dakosmu




[warning]Este Wide Fue Sacado de los Source ZonaMu season 6 + grow lancer[/warning]


[okay]Interface.cpp[/okay]

[info]Agregas[/info]



[info]Buscas[/info]


[info]Agregas[/info]



[okay]Descargar los .OZT[/okay]


[okay]Colocar Dentro del CLiente en la Ruta[/okay]
Quote
Data\Custom\DakosmuWide


[info]Buscas[/info]


[info]Agregas[/info]



[okay]Main.cpp[/okay]

[info]Agregas[/info]




[info]Buscas[/info]


[info]Agregas[/info]



[okay]DakosmuBytes.cpp[/okay]



[okay]DakosmuBytes.h[/okay]



[okay]Dakosmudefine.h[/okay]



[okay]
import.cpp[/okay]



[okay]DakosmuS6.cpp[/okay]



[okay]DakosmuS6.h[/okay]



[okay]DakosmuWide.cpp[/okay]



[okay]DakosmuWide.h[/okay]






Creditos
Asura
Dakosmu



2
Sources Generales / Files Source DailyReward
« on: August 10, 2023, 10:23:40 AM »
Source DailyReward






Agregar en interface.cpp
Code: [Select]
    if (gProtect.m_MainInfo.DailyReward == 1)
    {
    DailyReward.Draw();
    }

Agregar en interface.cpp Protocol.cpp Controller.cpp
Code: [Select]
#include "DailyReward.h"

DailyReward.h


DailyReward.cpp
Code: [Select]
#include "stdafx.h"
#if(DAILY)
#include "DailyReward.h"
#include "Import.h"
#include "NewFont.h"
#include <ctime>
#include "Interface.h"
#include "Defines.h"
cDailyReward DailyReward;

cDailyReward::cDailyReward()
{
    this->Init();
}

cDailyReward::~cDailyReward()
{
}

void cDailyReward::Init()
{
    this->SetWindow(false);
    this->SetRect(120, 70, 400, 255);
    this->SetTitle("Daily Reward", 0xc1c1c1ff, 0x0, 1);
    this->SelectedDay = 1;
}

unsigned char last_day_of_month(int year, unsigned char month) {
    return month != 2 ? ((month ^ (month >> 3))) | 30 :
        year % 4 ? 29 : 28;
}

void cDailyReward::ClearDayGift()
{
    this->DayInfo = false;
    this->Type = -1;
    this->Level = 0;
    this->Ex = 0;
    this->Zen = 0;
    this->Wcoin = 0;
}
int ImgTag100 = 0;
void cDailyReward::DrawIcon() //focus move box daily
{

    if (gInterface.CheckWindow(CashShop)
        || gInterface.CheckWindow(SkillTree)
        || gInterface.CheckWindow(FullMap)
        || gInterface.CheckWindow(MoveList)
        || gInterface.CheckWindow(Inventory)
        || gInterface.CheckWindow(ExpandInventory)
        || gInterface.CheckWindow(Store)
        || gInterface.CheckWindow(Inventory)
        || gInterface.CheckWindow(Party)
        || gInterface.CheckWindow(Trade)
        || gInterface.CheckWindow(Warehouse)
        || gInterface.CheckWindow(ExpandWarehouse))
    {
        return;
    }
    int j;

    if (!Blink)
    {
        return;
    }

    CustomFont.Draw(CustomFont.FontNormal, 73, 60, 0xffffffff, 0x00000050, 0, 0, 3, "Daily Reward"); //Move Daily Reward - 70 lados - 60 arriba
    int speed = 2, r = 0;
    if (ImgTag100 >= 25 * speed) ImgTag100 = 0;

    r = floor((float)ImgTag100 / (float)speed);

    RenderBitmap(531026, 80, 30, 102.4 / 2, 93.4 / 2, (r % 5) * 102.4 / 512.0, (r - (r % 5)) / 5 * 93.4 / 512.0, 102.4 / 512.0, 93.4 / 512.0, 0, 1, 0.0);
    ImgTag100++; //Move Box Daily -- 80 lados -- 30 Ariba+Abajo


    if (IsWorkZone(80, 30,40, 40, false))
    {
        if (pIsKeyRelease(VK_LBUTTON) && IsOnWindow())
            DailyReward.ToggleWindow(true);

    }


    if (IsWorkZone(80, 30,40, 40, false))
    {
        pSetCursorFocus = true;
    }
    else pSetCursorFocus = false;

}

void cDailyReward::Draw()
{
    if (pPlayerState < GameProcess)
    {
        return;
    }
    if (gInterface.CheckWindow(ObjWindow::CashShop)
        || gInterface.CheckWindow(ObjWindow::FriendList)
        || gInterface.CheckWindow(ObjWindow::MoveList)
        || gInterface.CheckWindow(ObjWindow::Party)
        || gInterface.CheckWindow(ObjWindow::Quest)
        || gInterface.CheckWindow(ObjWindow::NPC_Devin)
        || gInterface.CheckWindow(ObjWindow::Guild)
        || gInterface.CheckWindow(ObjWindow::Trade)
        || gInterface.CheckWindow(ObjWindow::Warehouse)
        || gInterface.CheckWindow(ObjWindow::ChaosBox)
        || gInterface.CheckWindow(ObjWindow::CommandWindow)
        || gInterface.CheckWindow(ObjWindow::PetInfo)
        || gInterface.CheckWindow(ObjWindow::Shop)
        || gInterface.CheckWindow(ObjWindow::Inventory)
        || gInterface.CheckWindow(ObjWindow::Store)
        || gInterface.CheckWindow(ObjWindow::OtherStore)
        || gInterface.CheckWindow(ObjWindow::Character)
        || gInterface.CheckWindow(ObjWindow::DevilSquare)
        || gInterface.CheckWindow(ObjWindow::BloodCastle)
        || gInterface.CheckWindow(ObjWindow::CreateGuild)
        || gInterface.CheckWindow(ObjWindow::GuardNPC)
        || gInterface.CheckWindow(ObjWindow::SeniorNPC)
        || gInterface.CheckWindow(ObjWindow::GuardNPC2)
        || gInterface.CheckWindow(ObjWindow::CastleGateSwitch)
        || gInterface.CheckWindow(ObjWindow::CatapultNPC)
        || gInterface.CheckWindow(ObjWindow::CrywolfGate)
        || gInterface.CheckWindow(ObjWindow::IllusionTemple)
        || gInterface.CheckWindow(ObjWindow::HeroList)
        || gInterface.CheckWindow(ObjWindow::ChatWindow)
        || gInterface.CheckWindow(ObjWindow::FastMenu)
        || gInterface.CheckWindow(ObjWindow::Options)
        || gInterface.CheckWindow(ObjWindow::Help)
        || gInterface.CheckWindow(ObjWindow::FastDial)
        || gInterface.CheckWindow(ObjWindow::SkillTree)
        || gInterface.CheckWindow(ObjWindow::GoldenArcher1)
        || gInterface.CheckWindow(ObjWindow::GoldenArcher2)
        || gInterface.CheckWindow(ObjWindow::LuckyCoin1)
        || gInterface.CheckWindow(ObjWindow::LuckyCoin2)
        || gInterface.CheckWindow(ObjWindow::NPC_Duel)
        || gInterface.CheckWindow(ObjWindow::NPC_Titus)
        || gInterface.CheckWindow(ObjWindow::CashShop)
        || gInterface.CheckWindow(ObjWindow::Lugard)
        || gInterface.CheckWindow(ObjWindow::QuestList1)
        || gInterface.CheckWindow(ObjWindow::QuestList2)
        || gInterface.CheckWindow(ObjWindow::Jerint)
        || gInterface.CheckWindow(ObjWindow::FullMap)
        || gInterface.CheckWindow(ObjWindow::NPC_Dialog)
        || gInterface.CheckWindow(ObjWindow::GensInfo)
        || gInterface.CheckWindow(ObjWindow::NPC_Julia)
        || gInterface.CheckWindow(ObjWindow::NPC_ChaosMix)
        || gInterface.CheckWindow(ObjWindow::ExpandInventory)
        || gInterface.CheckWindow(ObjWindow::ExpandWarehouse)
        || gInterface.CheckWindow(ObjWindow::MuHelper)
        )
    {

        this->CloseWindow(true);
    }

    if (!CheckWindow())
    {
        DrawIcon();
        return;
    }
    this->DrawBase();

    tm today;
    time_t ltime;
    time(&ltime);
    localtime_s(&today, &ltime);

    char* DoW[] = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };

    float sW = 35, sH = 38;
    int i, v1, v2, v3, v4, v5;
    v3 = this->FWday;
    v4 = this->MaxDay;
    for (i = 0; i < 7; i++)
    {
        CustomFont.Draw(CustomFont.FontNormal, x + 15 + sW * i, y + 35, 0xffffffff, 0xc1c1c150, sW - 2, 0, 3, DoW[i]);
    }
    if (Loaded)
    {
        for (i = v3; i < (v3 + v4); i++)
        {
            v1 = i % cDR_SPLIT_DAY;
            v2 = (i - v1) / cDR_SPLIT_DAY;
            v5 = i - v3 + 1;
            //
            if (SelectedDay == v5)
            {
                CustomFont.Draw(CustomFont.FontNormal, x + 15 + sW * v1, y + 52 + v2 * sH, 0xffffffff, 0x00000050, sW - 2, sH - 2, 3, " ");
            }
            if (SelectedDay == v5 && State[v5 - 1] == 0) //selecting
            {
                RenderBitmap(531020, x + 8 + sW * v1 + (sW - 16) / 2, y + 50 + v2 * sH, 45, 45, 0.0, 0.0, 1.0, 1.0, 1, 1, 0.0);
            }
            else if (IsWorkZone(x + 15 + sW * v1, y + 52 + v2 * sH, sW - 2, sH - 2, true))
            {
                RenderBitmap(531020, x + 8 + sW * v1 + (sW - 16) / 2, y + 50 + v2 * sH, 45, 45, 0.0, 0.0, 1.0, 1.0, 1, 1, 0.0);
                if (pIsKeyRelease(VK_LBUTTON))
                {
                    SelectedDay = v5;
                    if (State[v5 - 1] == 0)
                    {
                        this->SendRequest(0x01, SelectedDay);
                        this->ClearDayGift();
                    }
                }
            }
            else if (State[v5 - 1] == 0) //
            {
                RenderBitmap(531020, x + 8 + sW * v1 + (sW - 16) / 2, y + 50 + v2 * sH, 45, 45, 0.0, 0.0, 1.0, 1.0, 1, 1, 0.0);
            }
            else
            {
                RenderBitmap(531021, x + 8 + sW * v1 + (sW - 16) / 2, y + 50 + v2 * sH, 45, 45, 0.0, 0.0, 1.0, 1.0, 1, 1, 0.0);
            }
            CustomFont.Draw(CustomFont.FontNormal, x + 15 + sW * v1, y + 52 + v2 * sH + sH - 13, 0xffffffff, (v5) != today.tm_mday ? 0x00000050 : 0x00ff007f, sW - 2, 12, 3, "%d", v5);
        }

        if (SelectedDay != 0)
        {
            if (State[SelectedDay - 1] != 0)
            {
                CustomFont.Draw(CustomFont.FontNormal, x + 260, y + 50, 0xffffffff, 0x00000050, 130, 0, 3, "Complete", Wcoin);
            }
            else if (DayInfo)
            {
                CustomFont.Draw(CustomFont.FontNormal, x + 260, y + 50, 0xffffffff, 0x00000050, 130, 0, 3, "Wcoin : %d", Wcoin);
                CustomFont.Draw(CustomFont.FontNormal, x + 260, y + 65, 0xffffffff, 0x00000050, 130, 0, 3, "Zen : %d", Zen);

                CustomFont.Draw(CustomFont.FontNormal, x + 260, y + 80, 0xffffffff, 0x00000050, 130, 0, 3, Text);

                if (SelectedDay <= today.tm_mday)
                {
                    this->DrawButton(32331, x - 5 + 75 * 4, y + h - 50, 73, 27, 128.0, 128.0, DailyReward.RecvGiftAction);
                    CustomFont.Draw(CustomFont.FontNormal, x - 5 + 75 * 4, y + h - 42.5, 0xffffffff, 0x0, 73, 0, 3, "Rewarded");
                }

                CustomFont.Draw(CustomFont.FontNormal, x + 280, y + 100, 0xffffffff, 0x00000050, 90, 90, 3, " ");

                gInterface.DrawItem2(x + 280, y + 100, 90, 90, this->Type, this->Level, this->Ex, 0, 0);


                if (IsWorkZone(x + 280, y + 100, 90, 90, true))
                {
                    gInterface.DrawItemToolTipText((void*)&Item, *(int*)0x879340C, *(int*)0x8793410 + 25);
                    glColor3f(1, 1, 1);
                    pSetBlend(false);
                }
            }
            else
            {
                CustomFont.Draw(CustomFont.FontNormal, x + 260, y + 50, 0xffffffff, 0x00000050, 130, 0, 3, "No Data...", Wcoin);
            }
        }
    }
    else
    {
        CustomFont.Draw(CustomFont.FontNormal, x + 60, y + 50, 0xffffffff, 0x00000050, 200, 0, 3, "No Data...");
    }
}

bool cDailyReward::AllowedGift()
{
    return Loaded && State[SelectedDay - 1] == 0 && SelectedDay <= CurDay;
}
void cDailyReward::SendRequest(BYTE type, int value)
{
    PMSG_DAILY_REWARD_SEND pRequest;
    pRequest.h.set((LPBYTE)&pRequest, 0xFB, 0x02, sizeof(pRequest));
    pRequest.Type = type;
    pRequest.Value = value;
    DataSend((LPBYTE)&pRequest, pRequest.h.size);
}

void cDailyReward::RecvGiftAction(LPVOID pClass)
{
    cDailyReward* This = (cDailyReward*)pClass;

    if (This->AllowedGift())
    {
        This->SendRequest(0x02, This->SelectedDay);
    }
}

void cDailyReward::OnOpen()
{
    this->Loaded = false;
    this->DayInfo = false;
    this->SendRequest(0x0, 0x0);
}
void cDailyReward::OnClose()
{
}

void cDailyReward::ToggleWindow(bool mode)
{
    SetWindow(!CheckWindow(), mode);
}
void cDailyReward::OpenWindow(bool mode)
{
    SetWindow(true, mode);
}
void cDailyReward::CloseWindow(bool mode)
{
    SetWindow(false, mode);
}
void cDailyReward::SetWindow(bool state, bool mode)
{
    this->Drawing = state;
    if (mode)
        CheckWindow() ? OnOpen() : OnClose();
}

void cDailyReward::GCRecvUserInfo(BYTE* a)
{
    PMSG_DAILY_REWARD_USER_INFO_RECV* Data = (PMSG_DAILY_REWARD_USER_INFO_RECV*)a;
    this->CurDay = Data->CurDay;
    this->MaxDay = Data->MaxDay;
    this->FWday = Data->FWday;
    this->Timer = Data->Timer;

    for (int i = 0; i < 31; i++)
    {
        this->State[i] = Data->State[i];
    }

    if (State[CurDay - 1] == 0)
    {
        Blink = true;
    }
    else
    {
        Blink = false;
    }

    Loaded = true;
}
int cDailyReward::CheckItemInfo(signed int a1)
{
    if (a1 > 3092)
    {
        if (a1 > 4661)
        {
            if (a1 > 5685 || a1 < 5676 && (a1 < 5164 || a1 > 5173))
                return 0;
        }
        else if (a1 < 4652 && (a1 > 4149 || a1 < 4140 && (a1 < 3628 || a1 > 3637)))
        {
            return 0;
        }

        return 1;
    }

    if (a1 >= 3089)
        return 1;

    if (a1 > 2071)
    {
        if (a1 != 2580 && (a1 <= 2589 || a1 > 2592))
            return 0;
        return 1;
    }

    if (a1 == 2071 || a1 <= 1041 && (a1 >= 1040 || a1 >= 26 && a1 <= 28))
        return 1;

    return 0;
}

void cDailyReward::GCRecvDayInfo(BYTE* a)
{
    PMSG_DAILY_REWARD_DAY_INFO_RECV* Data = (PMSG_DAILY_REWARD_DAY_INFO_RECV*)a;

    DayInfo = true;
    if (Data->Type != -1)
    {
        this->Type = Data->Type;

        DWORD dwAddress;
        int a5;
        int a6;
        int a7;
        int a8;
        int a9;
        DWORD a10;

        dwAddress = (DWORD)&this->Item;

        *(WORD *)dwAddress = Data->Type;
        a5 = Data->Dur;
        *(BYTE *)(dwAddress + 22) = a5;
        a6 = Data->Item[3];
        *(BYTE *)(dwAddress + 23) = a6;
        a7 = Data->Item[4];
        *(BYTE *)(dwAddress + 24) = a7;
        a8 = Data->Item[5];
        *(BYTE *)(dwAddress + 97) = (a8 & 2) >> 1 > 0;
        *(BYTE *)(dwAddress + 98) = (a8 & 4) >> 2 > 0;
        *(BYTE *)(dwAddress + 73) = 16 * (a8 & 8) >> 7 > 0;
        a9 = Data->Item[6];
        *(WORD *)(dwAddress + 69) = (a9 & 0xF0) >> 4;
        *(WORD *)(dwAddress + 71) = a9 & 0xF;

        a10 = (DWORD)&Data->Item[7];

        if (a10)
        {
            *(BYTE *)(dwAddress + 79) = 5;

            for (int i = 0; i < 5; ++i)
                *(BYTE *)(i + dwAddress + 74) = *(BYTE *)(i + a10);

            for (int j = 0; j < 5; ++j)
            {
                if (*(BYTE *)(j + a10) == 255)
                {
                    *(BYTE *)(dwAddress + 79) = j;
                    break;
                }

                if (*(BYTE *)(j + a10) == 254)
                {
                    *(BYTE *)(j + dwAddress + 80) = -1;
                }
                else
                {
                    *(BYTE *)(j + dwAddress + 80) = *(BYTE *)(j + a10) % 50;
                    *(BYTE *)(j + dwAddress + 85) = *(BYTE *)(j + a10) / 50 + 1;
                }
            }

            if (this->CheckItemInfo(*(WORD *)dwAddress))
            {
                *(BYTE *)(dwAddress + 90) = a9;
                *(WORD *)(dwAddress + 69) = 0;
                *(WORD *)(dwAddress + 71) = 0;
            }
            else
            {
                *(BYTE *)(dwAddress + 90) = -1;
            }
        }
        else
        {
            *(BYTE *)(dwAddress + 79) = 0;
        }

        *(BYTE *)(dwAddress + 96) = 0;
        *(DWORD *)(dwAddress + 103) = 1;

        if (Data->PeriodTime)
        {
            this->Item.PeriodItem = 1;
            this->Item.ExpireDateConvert = Data->PeriodTime;
        }

        ((void(__cdecl*)(ObjectItem * lpItem, BYTE Option, BYTE Special, BYTE Value)) 0x58B910)(&this->Item, Data->Item[1], Data->Item[3], Data->Item[4]);
    }
    this->Zen = Data->Zen;
    this->Wcoin = Data->Wcoin;
    memcpy_s(Text, 100, Data->Text, 100);
}
#endif

Interface.cpp
Code: [Select]
pLoadImage("Custom\\Desig\\giftboxnotice.tga", 531026, GL_LINEAR, GL_REPEAT, 1, 0);


3
Sources Generales / Files SOURCE RentSkin Lado Main
« on: August 10, 2023, 10:20:07 AM »
SOURCE RentSkin Lado Main






Agregar nuevo elementos RentSkin

Quote
RentSkin.cpp



Quote
RentSkin.h




Agreagr en Interface.cpp



Quote
Agregar al Final




Agregar en Protocol.cpp



Agregar en BOOL ProtocolCoreEx(BYTE head,BYTE* lpMsg,int size,int key) // OK




Code: [Select]
#if SKIN
            case 0x09:
                RentSkin.RecvData(lpMsg);
                break;
#endif



Character.cpp




Character.h




CustomMonster.cpp

Quote
Agregar en lpViewObj CCustomMonster::ShowMonster(int MonsterID, int a2, int a3, int a4)




Quote
Agregar al Final en el mismo CustomMonster.cpp




Quote
CustomMonster.h

Agregar en class CCustomMonster




Agregar en stdafx.h

Code: [Select]
#define SKIN            1



4
Sources Generales / Files Source ThueFlag Lado Main
« on: August 10, 2023, 08:23:06 AM »
Source ThueFlag Lado Main







Agrear Nuevos elementos  ThueFlag.h y ThueFlag.cpp


Quote
ThueFlag.h




Quote
ThueFlag.cpp




Quote
Interface.cpp

Agregar en void Interface::Load()





Agregar en interface.cpp
Agregar en

Quote
void Interface::Work()






Agregar en los siguientes .cpp
Quote
Interface.cpp
Protocol.cpp

Agregar esto
Code: [Select]
#include "ThueFlag.h"

Buscar void Interface::SetCursorFocus()

Agregar


Quote
Interface.h

Agregar en enum ObjectID
Code: [Select]
eMAIN_ThueFlag,
Quote
Protocol.cpp

Quote
Agregar dentro de BOOL ProtocolCoreEx(BYTE head,BYTE* lpMsg,int size,int key) // OK







stdafx.h



Central.cpp

Quote
Agregar dentro de int Centralizado::MoveRenderCameraDefault()

Code: [Select]
|| gInterface.Data[eMAIN_ThueFlag].OnShow


Creditos
Dakosmu Por la Guia

5
Sources Generales / Files Source Cambiar o quitar el Copyright al Main
« on: July 12, 2023, 07:04:27 PM »
Source Cambiar o quitar el Copyright al Main




En Main.cpp


Code: [Select]
    SetCompleteHook(0xE9, 0x004D7D13, &CopyrightDakosmu); //Copyright SelectServer
    MemorySet(0x004D7E33, 0x90, 0x0F); //Remover Text Versión SelectServer

Interface.h

Code: [Select]
#define MAX_WIN_Dakosmu_WIDTH 640
Common.h

Code: [Select]
void CopyrightDakosmu();
Common.cpp





Quote
eYellow: un valor que especifica el color del texto a dibujar (en este caso, amarillo).

(MAX_WIN_WIDTH / 2) - 74: la coordenada X en la que se dibujará el texto. MAX_WIN_WIDTH es una constante que representa el ancho máximo de la ventana de juego, y se está dividiendo entre 2 para centrar el texto horizontalmente. Luego se le resta 74 para desplazarlo un poco hacia la izquierda.

470: la coordenada Y en la que se dibujará el texto. En este caso, se está dibujando cerca de la parte inferior de la ventana.

100: el ancho máximo que tendrá el texto. Si el texto es más largo que esto, se ajustará para caber dentro de los límites.

3: el número de líneas que tendrá el texto. Si el texto es más largo que esto, se ajustará para caber dentro de los límites.

"Servidor Completamente Gratis": el texto que se va a dibujar en la pantalla.




Esto no tiene nada que Ver con la guia.
solo son codigos de prueba los dejo aqui por si quieren mejorarlo o agregar


Efecto neon en la letras
Code: [Select]
// Dibuja el texto con efecto de neón
for (int i = 0; i < 5; i++) {
    gInterface.DrawFormat(eYellow, (MAX_WIN_WIDTH / 2) - 74 - i, 470 - i, 100, 3, "Servidor Completamente Gratis");
    gInterface.DrawFormat(eYellow, (MAX_WIN_WIDTH / 2) - 74 + i, 470 + i, 100, 3, "Servidor Completamente Gratis");
    gInterface.DrawFormat(eYellow, (MAX_WIN_WIDTH / 2) - 74 - i, 470 + i, 100, 3, "Servidor Completamente Gratis");
    gInterface.DrawFormat(eYellow, (MAX_WIN_WIDTH / 2) - 74 + i, 470 - i, 100, 3, "Servidor Completamente Gratis");
}
gInterface.DrawFormat(eYellow, (MAX_WIN_WIDTH / 2) - 74, 470, 100, 3, "Servidor Completamente Gratis");



Creditos
dakosmu Por la Guia

6
Sources Generales / Files Source DailyReward Side Main
« on: July 12, 2023, 06:56:03 PM »
Source DailyReward Lado Cliente






Code: [Select]
    if (gProtect.m_MainInfo.DailyReward == 1)
    {
    DailyReward.Draw();
    }


Code: [Select]
#include "DailyReward.h"

DailyReward.h


DailyReward.cpp
Code: [Select]
#include "stdafx.h"
#if(DAILY)
#include "DailyReward.h"
#include "Import.h"
#include "NewFont.h"
#include <ctime>
#include "Interface.h"
#include "Defines.h"
cDailyReward DailyReward;

cDailyReward::cDailyReward()
{
    this->Init();
}

cDailyReward::~cDailyReward()
{
}

void cDailyReward::Init()
{
    this->SetWindow(false);
    this->SetRect(120, 70, 400, 255);
    this->SetTitle("Daily Reward", 0xc1c1c1ff, 0x0, 1);
    this->SelectedDay = 1;
}

unsigned char last_day_of_month(int year, unsigned char month) {
    return month != 2 ? ((month ^ (month >> 3))) | 30 :
        year % 4 ? 29 : 28;
}

void cDailyReward::ClearDayGift()
{
    this->DayInfo = false;
    this->Type = -1;
    this->Level = 0;
    this->Ex = 0;
    this->Zen = 0;
    this->Wcoin = 0;
}
int ImgTag100 = 0;
void cDailyReward::DrawIcon() //focus move box daily
{

    if (gInterface.CheckWindow(CashShop)
        || gInterface.CheckWindow(SkillTree)
        || gInterface.CheckWindow(FullMap)
        || gInterface.CheckWindow(MoveList)
        || gInterface.CheckWindow(Inventory)
        || gInterface.CheckWindow(ExpandInventory)
        || gInterface.CheckWindow(Store)
        || gInterface.CheckWindow(Inventory)
        || gInterface.CheckWindow(Party)
        || gInterface.CheckWindow(Trade)
        || gInterface.CheckWindow(Warehouse)
        || gInterface.CheckWindow(ExpandWarehouse))
    {
        return;
    }
    int j;

    if (!Blink)
    {
        return;
    }

    CustomFont.Draw(CustomFont.FontNormal, 73, 60, 0xffffffff, 0x00000050, 0, 0, 3, "Daily Reward"); //Move Daily Reward - 70 lados - 60 arriba
    int speed = 2, r = 0;
    if (ImgTag100 >= 25 * speed) ImgTag100 = 0;

    r = floor((float)ImgTag100 / (float)speed);

    RenderBitmap(531026, 80, 30, 102.4 / 2, 93.4 / 2, (r % 5) * 102.4 / 512.0, (r - (r % 5)) / 5 * 93.4 / 512.0, 102.4 / 512.0, 93.4 / 512.0, 0, 1, 0.0);
    ImgTag100++; //Move Box Daily -- 80 lados -- 30 Ariba+Abajo


    if (IsWorkZone(80, 30,40, 40, false))
    {
        if (pIsKeyRelease(VK_LBUTTON) && IsOnWindow())
            DailyReward.ToggleWindow(true);

    }


    if (IsWorkZone(80, 30,40, 40, false))
    {
        pSetCursorFocus = true;
    }
    else pSetCursorFocus = false;

}

void cDailyReward::Draw()
{
    if (pPlayerState < GameProcess)
    {
        return;
    }
    if (gInterface.CheckWindow(ObjWindow::CashShop)
        || gInterface.CheckWindow(ObjWindow::FriendList)
        || gInterface.CheckWindow(ObjWindow::MoveList)
        || gInterface.CheckWindow(ObjWindow::Party)
        || gInterface.CheckWindow(ObjWindow::Quest)
        || gInterface.CheckWindow(ObjWindow::NPC_Devin)
        || gInterface.CheckWindow(ObjWindow::Guild)
        || gInterface.CheckWindow(ObjWindow::Trade)
        || gInterface.CheckWindow(ObjWindow::Warehouse)
        || gInterface.CheckWindow(ObjWindow::ChaosBox)
        || gInterface.CheckWindow(ObjWindow::CommandWindow)
        || gInterface.CheckWindow(ObjWindow::PetInfo)
        || gInterface.CheckWindow(ObjWindow::Shop)
        || gInterface.CheckWindow(ObjWindow::Inventory)
        || gInterface.CheckWindow(ObjWindow::Store)
        || gInterface.CheckWindow(ObjWindow::OtherStore)
        || gInterface.CheckWindow(ObjWindow::Character)
        || gInterface.CheckWindow(ObjWindow::DevilSquare)
        || gInterface.CheckWindow(ObjWindow::BloodCastle)
        || gInterface.CheckWindow(ObjWindow::CreateGuild)
        || gInterface.CheckWindow(ObjWindow::GuardNPC)
        || gInterface.CheckWindow(ObjWindow::SeniorNPC)
        || gInterface.CheckWindow(ObjWindow::GuardNPC2)
        || gInterface.CheckWindow(ObjWindow::CastleGateSwitch)
        || gInterface.CheckWindow(ObjWindow::CatapultNPC)
        || gInterface.CheckWindow(ObjWindow::CrywolfGate)
        || gInterface.CheckWindow(ObjWindow::IllusionTemple)
        || gInterface.CheckWindow(ObjWindow::HeroList)
        || gInterface.CheckWindow(ObjWindow::ChatWindow)
        || gInterface.CheckWindow(ObjWindow::FastMenu)
        || gInterface.CheckWindow(ObjWindow::Options)
        || gInterface.CheckWindow(ObjWindow::Help)
        || gInterface.CheckWindow(ObjWindow::FastDial)
        || gInterface.CheckWindow(ObjWindow::SkillTree)
        || gInterface.CheckWindow(ObjWindow::GoldenArcher1)
        || gInterface.CheckWindow(ObjWindow::GoldenArcher2)
        || gInterface.CheckWindow(ObjWindow::LuckyCoin1)
        || gInterface.CheckWindow(ObjWindow::LuckyCoin2)
        || gInterface.CheckWindow(ObjWindow::NPC_Duel)
        || gInterface.CheckWindow(ObjWindow::NPC_Titus)
        || gInterface.CheckWindow(ObjWindow::CashShop)
        || gInterface.CheckWindow(ObjWindow::Lugard)
        || gInterface.CheckWindow(ObjWindow::QuestList1)
        || gInterface.CheckWindow(ObjWindow::QuestList2)
        || gInterface.CheckWindow(ObjWindow::Jerint)
        || gInterface.CheckWindow(ObjWindow::FullMap)
        || gInterface.CheckWindow(ObjWindow::NPC_Dialog)
        || gInterface.CheckWindow(ObjWindow::GensInfo)
        || gInterface.CheckWindow(ObjWindow::NPC_Julia)
        || gInterface.CheckWindow(ObjWindow::NPC_ChaosMix)
        || gInterface.CheckWindow(ObjWindow::ExpandInventory)
        || gInterface.CheckWindow(ObjWindow::ExpandWarehouse)
        || gInterface.CheckWindow(ObjWindow::MuHelper)
        )
    {

        this->CloseWindow(true);
    }

    if (!CheckWindow())
    {
        DrawIcon();
        return;
    }
    this->DrawBase();

    tm today;
    time_t ltime;
    time(&ltime);
    localtime_s(&today, &ltime);

    char* DoW[] = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };

    float sW = 35, sH = 38;
    int i, v1, v2, v3, v4, v5;
    v3 = this->FWday;
    v4 = this->MaxDay;
    for (i = 0; i < 7; i++)
    {
        CustomFont.Draw(CustomFont.FontNormal, x + 15 + sW * i, y + 35, 0xffffffff, 0xc1c1c150, sW - 2, 0, 3, DoW[i]);
    }
    if (Loaded)
    {
        for (i = v3; i < (v3 + v4); i++)
        {
            v1 = i % cDR_SPLIT_DAY;
            v2 = (i - v1) / cDR_SPLIT_DAY;
            v5 = i - v3 + 1;
            //
            if (SelectedDay == v5)
            {
                CustomFont.Draw(CustomFont.FontNormal, x + 15 + sW * v1, y + 52 + v2 * sH, 0xffffffff, 0x00000050, sW - 2, sH - 2, 3, " ");
            }
            if (SelectedDay == v5 && State[v5 - 1] == 0) //selecting
            {
                RenderBitmap(531020, x + 8 + sW * v1 + (sW - 16) / 2, y + 50 + v2 * sH, 45, 45, 0.0, 0.0, 1.0, 1.0, 1, 1, 0.0);
            }
            else if (IsWorkZone(x + 15 + sW * v1, y + 52 + v2 * sH, sW - 2, sH - 2, true))
            {
                RenderBitmap(531020, x + 8 + sW * v1 + (sW - 16) / 2, y + 50 + v2 * sH, 45, 45, 0.0, 0.0, 1.0, 1.0, 1, 1, 0.0);
                if (pIsKeyRelease(VK_LBUTTON))
                {
                    SelectedDay = v5;
                    if (State[v5 - 1] == 0)
                    {
                        this->SendRequest(0x01, SelectedDay);
                        this->ClearDayGift();
                    }
                }
            }
            else if (State[v5 - 1] == 0) //
            {
                RenderBitmap(531020, x + 8 + sW * v1 + (sW - 16) / 2, y + 50 + v2 * sH, 45, 45, 0.0, 0.0, 1.0, 1.0, 1, 1, 0.0);
            }
            else
            {
                RenderBitmap(531021, x + 8 + sW * v1 + (sW - 16) / 2, y + 50 + v2 * sH, 45, 45, 0.0, 0.0, 1.0, 1.0, 1, 1, 0.0);
            }
            CustomFont.Draw(CustomFont.FontNormal, x + 15 + sW * v1, y + 52 + v2 * sH + sH - 13, 0xffffffff, (v5) != today.tm_mday ? 0x00000050 : 0x00ff007f, sW - 2, 12, 3, "%d", v5);
        }

        if (SelectedDay != 0)
        {
            if (State[SelectedDay - 1] != 0)
            {
                CustomFont.Draw(CustomFont.FontNormal, x + 260, y + 50, 0xffffffff, 0x00000050, 130, 0, 3, "Complete", Wcoin);
            }
            else if (DayInfo)
            {
                CustomFont.Draw(CustomFont.FontNormal, x + 260, y + 50, 0xffffffff, 0x00000050, 130, 0, 3, "Wcoin : %d", Wcoin);
                CustomFont.Draw(CustomFont.FontNormal, x + 260, y + 65, 0xffffffff, 0x00000050, 130, 0, 3, "Zen : %d", Zen);

                CustomFont.Draw(CustomFont.FontNormal, x + 260, y + 80, 0xffffffff, 0x00000050, 130, 0, 3, Text);

                if (SelectedDay <= today.tm_mday)
                {
                    this->DrawButton(32331, x - 5 + 75 * 4, y + h - 50, 73, 27, 128.0, 128.0, DailyReward.RecvGiftAction);
                    CustomFont.Draw(CustomFont.FontNormal, x - 5 + 75 * 4, y + h - 42.5, 0xffffffff, 0x0, 73, 0, 3, "Rewarded");
                }

                CustomFont.Draw(CustomFont.FontNormal, x + 280, y + 100, 0xffffffff, 0x00000050, 90, 90, 3, " ");

                gInterface.DrawItem2(x + 280, y + 100, 90, 90, this->Type, this->Level, this->Ex, 0, 0);


                if (IsWorkZone(x + 280, y + 100, 90, 90, true))
                {
                    gInterface.DrawItemToolTipText((void*)&Item, *(int*)0x879340C, *(int*)0x8793410 + 25);
                    glColor3f(1, 1, 1);
                    pSetBlend(false);
                }
            }
            else
            {
                CustomFont.Draw(CustomFont.FontNormal, x + 260, y + 50, 0xffffffff, 0x00000050, 130, 0, 3, "No Data...", Wcoin);
            }
        }
    }
    else
    {
        CustomFont.Draw(CustomFont.FontNormal, x + 60, y + 50, 0xffffffff, 0x00000050, 200, 0, 3, "No Data...");
    }
}

bool cDailyReward::AllowedGift()
{
    return Loaded && State[SelectedDay - 1] == 0 && SelectedDay <= CurDay;
}
void cDailyReward::SendRequest(BYTE type, int value)
{
    PMSG_DAILY_REWARD_SEND pRequest;
    pRequest.h.set((LPBYTE)&pRequest, 0xFB, 0x02, sizeof(pRequest));
    pRequest.Type = type;
    pRequest.Value = value;
    DataSend((LPBYTE)&pRequest, pRequest.h.size);
}

void cDailyReward::RecvGiftAction(LPVOID pClass)
{
    cDailyReward* This = (cDailyReward*)pClass;

    if (This->AllowedGift())
    {
        This->SendRequest(0x02, This->SelectedDay);
    }
}

void cDailyReward::OnOpen()
{
    this->Loaded = false;
    this->DayInfo = false;
    this->SendRequest(0x0, 0x0);
}
void cDailyReward::OnClose()
{
}

void cDailyReward::ToggleWindow(bool mode)
{
    SetWindow(!CheckWindow(), mode);
}
void cDailyReward::OpenWindow(bool mode)
{
    SetWindow(true, mode);
}
void cDailyReward::CloseWindow(bool mode)
{
    SetWindow(false, mode);
}
void cDailyReward::SetWindow(bool state, bool mode)
{
    this->Drawing = state;
    if (mode)
        CheckWindow() ? OnOpen() : OnClose();
}

void cDailyReward::GCRecvUserInfo(BYTE* a)
{
    PMSG_DAILY_REWARD_USER_INFO_RECV* Data = (PMSG_DAILY_REWARD_USER_INFO_RECV*)a;
    this->CurDay = Data->CurDay;
    this->MaxDay = Data->MaxDay;
    this->FWday = Data->FWday;
    this->Timer = Data->Timer;

    for (int i = 0; i < 31; i++)
    {
        this->State[i] = Data->State[i];
    }

    if (State[CurDay - 1] == 0)
    {
        Blink = true;
    }
    else
    {
        Blink = false;
    }

    Loaded = true;
}
int cDailyReward::CheckItemInfo(signed int a1)
{
    if (a1 > 3092)
    {
        if (a1 > 4661)
        {
            if (a1 > 5685 || a1 < 5676 && (a1 < 5164 || a1 > 5173))
                return 0;
        }
        else if (a1 < 4652 && (a1 > 4149 || a1 < 4140 && (a1 < 3628 || a1 > 3637)))
        {
            return 0;
        }

        return 1;
    }

    if (a1 >= 3089)
        return 1;

    if (a1 > 2071)
    {
        if (a1 != 2580 && (a1 <= 2589 || a1 > 2592))
            return 0;
        return 1;
    }

    if (a1 == 2071 || a1 <= 1041 && (a1 >= 1040 || a1 >= 26 && a1 <= 28))
        return 1;

    return 0;
}

void cDailyReward::GCRecvDayInfo(BYTE* a)
{
    PMSG_DAILY_REWARD_DAY_INFO_RECV* Data = (PMSG_DAILY_REWARD_DAY_INFO_RECV*)a;

    DayInfo = true;
    if (Data->Type != -1)
    {
        this->Type = Data->Type;

        DWORD dwAddress;
        int a5;
        int a6;
        int a7;
        int a8;
        int a9;
        DWORD a10;

        dwAddress = (DWORD)&this->Item;

        *(WORD *)dwAddress = Data->Type;
        a5 = Data->Dur;
        *(BYTE *)(dwAddress + 22) = a5;
        a6 = Data->Item[3];
        *(BYTE *)(dwAddress + 23) = a6;
        a7 = Data->Item[4];
        *(BYTE *)(dwAddress + 24) = a7;
        a8 = Data->Item[5];
        *(BYTE *)(dwAddress + 97) = (a8 & 2) >> 1 > 0;
        *(BYTE *)(dwAddress + 98) = (a8 & 4) >> 2 > 0;
        *(BYTE *)(dwAddress + 73) = 16 * (a8 & 8) >> 7 > 0;
        a9 = Data->Item[6];
        *(WORD *)(dwAddress + 69) = (a9 & 0xF0) >> 4;
        *(WORD *)(dwAddress + 71) = a9 & 0xF;

        a10 = (DWORD)&Data->Item[7];

        if (a10)
        {
            *(BYTE *)(dwAddress + 79) = 5;

            for (int i = 0; i < 5; ++i)
                *(BYTE *)(i + dwAddress + 74) = *(BYTE *)(i + a10);

            for (int j = 0; j < 5; ++j)
            {
                if (*(BYTE *)(j + a10) == 255)
                {
                    *(BYTE *)(dwAddress + 79) = j;
                    break;
                }

                if (*(BYTE *)(j + a10) == 254)
                {
                    *(BYTE *)(j + dwAddress + 80) = -1;
                }
                else
                {
                    *(BYTE *)(j + dwAddress + 80) = *(BYTE *)(j + a10) % 50;
                    *(BYTE *)(j + dwAddress + 85) = *(BYTE *)(j + a10) / 50 + 1;
                }
            }

            if (this->CheckItemInfo(*(WORD *)dwAddress))
            {
                *(BYTE *)(dwAddress + 90) = a9;
                *(WORD *)(dwAddress + 69) = 0;
                *(WORD *)(dwAddress + 71) = 0;
            }
            else
            {
                *(BYTE *)(dwAddress + 90) = -1;
            }
        }
        else
        {
            *(BYTE *)(dwAddress + 79) = 0;
        }

        *(BYTE *)(dwAddress + 96) = 0;
        *(DWORD *)(dwAddress + 103) = 1;

        if (Data->PeriodTime)
        {
            this->Item.PeriodItem = 1;
            this->Item.ExpireDateConvert = Data->PeriodTime;
        }

        ((void(__cdecl*)(ObjectItem * lpItem, BYTE Option, BYTE Special, BYTE Value)) 0x58B910)(&this->Item, Data->Item[1], Data->Item[3], Data->Item[4]);
    }
    this->Zen = Data->Zen;
    this->Wcoin = Data->Wcoin;
    memcpy_s(Text, 100, Data->Text, 100);
}
#endif

Creditos Dakosmu



7
Sources Generales / Files Source Registro By OBBY Season 6
« on: July 10, 2023, 05:32:23 PM »
Source  Registro en Main, JoinServer, Gameserver By OBBY Season 6





les compartos la guia completa para agregar el sistema de Registro en Main... Recuerden que las todas las beses no son iguales...

Espero que les funciones a todos  rebote


Protocol.h

Code: [Select]
typedef struct
{
  #pragma pack(1)
  PSBMSG_HEAD Header;
  char lpszID[10];
  char lpszPass[20];
  char lpszPCode[20];
  char lpszEmail[50];
  DWORD TickCount;
  BYTE Versión[5];
  Serie BYTE[16];
  #pragma pack()
} PBMSG_REGISTER_ACCOUNT, * LPPBMSG_REGISTER_ACCOUNT;


Protocol.cpp

Code: [Select]
#include "LoginMainWin.h"
Code: [Select]
// Dentro de:

case 0xF1:
        switch(((lpMsg[0 ]==0xC1)?lpMsg[3]:lpMsg[4]))
        {
                                .
            .
            .
                  .
            caso 0x12:
            g_pLoginMainWin.ReciveCreateAccount(((lpMsg[0]==0xC1)?lpMsg[4]:lpMsg[5]));
            romper;
        }
        break;


Interface.cpp


Code: [Select]
// Agregar Seccion IMAGEN

// AutoLogin / Register
  LoadBitmapA("Custom\\Desig\\login_auto.tga", 531141, GL_NEAREST, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\login_auto.tga", 531141, GL_NEAREST, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\Login.tga", 71621, GL_LINEAR, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\1.tga", 71622, GL_LINEAR, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\2.tga", 71623, GL_LINEAR, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\3.tga", 71624, GL_LINEAR, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\4.tga", 71625, GL_LINEAR, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\5.tga", 71626, GL_LINEAR, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\6.tga", 71627, GL_LINEAR, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\8.tga", 71629, GL_LINEAR, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\9.tga", 71630, GL_LINEAR, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\10.tga", 71630, GL_LINEAR, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\login_back.tga", 71631, GL_LINEAR, GL_CLAMP, 1, 0);
  LoadBitmapA("Personalizado\\Diseño\\reloadcap.jpg", 71632, GL_LINEAR, GL_CLAMP, 1, 0);


Main.cpp

Code: [Select]
#include "LoginMainWin.h"
#include "AutoLoginWin.h"

Code: [Select]
// Agregar dentro de:

extern "C" _declspec(dllexport) void EntryProc() / / Aceptar
{     
//
//
//
//
   
      g_pLoginMainWin.Init(); // Inicio de sesión automático / Registro
      AutoLogin.Load(); // Auto Login / Register
   
}


Seguimos con SRC JOINSERVE

stdafx.h

Code: [Select]
// Abajo de

#define JOINSERVER_VERSION

// Agregar:

#define OBBY 1

JoinServerProtocol.cpp
Code: [Select]
// Abajo de :

      caso 0x30:
        GJExternalDisconnectAccountRecv((SDHP_EXTERNAL_DISCONNECT_ACCOUNT_RECV*)lpMsg,index);
        romper;

// Agregar:

#if(OBBY)
      case 0x40:
        GJRegisterAccountRecv((SDHP_REGISTER_ACCOUNT_SEND*)lpMsg,index);
        romper;
#endif

Code: [Select]
// Abajo de:

  gLog.Output(LOG_ACCOUNT,"[AccountInfo] Cuenta conectada (Cuenta: %s, IpAddress: %s, GameServerCode: %d)",AccountInfo.Account,AccountInfo. Dirección IP, Información de la cuenta. Código del servidor del juego);
}

// Agregar:

#if(OBBY)
void GJRegisterAccountRecv(SDHP_REGISTER_ACCOUNT_SEND* lpMsg,int index)
{
  SDHP_CONNECT_ACCOUNT_SEND pMsg;

  pMsg.header.set(0x40,sizeof(pMsg));

  pMsj.index = lpMsg->index;
 
  memcpy(pMsg.cuenta,lpMsg->cuenta,tamaño(pMsg.cuenta));

  pMsg.result = CREATE_ACCOUNT_FAIL_ID;

  if(CheckTextSyntax(lpMsg->cuenta,tamaño(lpMsg->cuenta)) == 0)
  {
      pMsg.result = CREATE_ACCOUNT_FAIL_RESIDENT;
      gSocketManager.DataSend(índice,(BYTE*)&pMsg,pMsg.header.size);
      LogAdd(LOG_RED,"Cuenta %s Registrar falla en la sintaxis!");
      devolver;
  }

    if(gAccountManager.GetAccountCount() >=
#if PROTECT_STATE
        gJoinServerMaxAccount[gProtect.m_AuthInfo.PackageType][gProtect.m_AuthInfo.PlanType]
#else
        MAX_ACCOUNT
#endif
        )
  if(gAccountManager.GetAccountCount() >= gJoinServerMaxAccount[gProtect.m_AuthInfo.PackageType][gProtect.m_AuthInfo.PlanType])
  {
      pMsg.result = CREATE_ACCOUNT_FAIL_RESIDENT;
      gSocketManager.DataSend(índice,(BYTE*)&pMsg,pMsg.header.size);
      LogAdd(LOG_RED,"Error en el registro de la cuenta %s, ¡¡¡CONEXIÓN!!!");
      devolver;
  }
  if(MD5Encryption == 0)
  {
      if(gQueryManager.ExecQuery("SELECT memb__pwd FROM MEMB_INFO WHERE memb___id='%s' COLLATE Latin1_General_BIN",lpMsg->account) == 0 || gQueryManager.Fetch() == SQL_NO_DATA)
      {
        gQueryManager.Cerrar();
        if (gQueryManager.ExecQuery("INSERT INTO dbo.MEMB_INFO(memb___id, memb__pwd, memb_name, sno__numb, mail_addr, mail_chek, block_code, ctl1_code) VALORES ('%s', '%s', '%s', '%s' , '%s', 1, 0, 1)",
            lpMsg->cuenta,
            lpMsg->contraseña,
            "JoinServer",
            lpMsg->código personal,
            lpMsg->Email) == TRUE)
        {
            gQueryManager.Close();
            pMsg.result = CREAR_CUENTA_ÉXITO;
            gLog.Output(LOG_ACCOUNT, "[AccountInfo] Cuenta creada (Cuenta: %s, Contraseña: %s )", lpMsg->cuenta, lpMsg->contraseña);
        }
      }
      else
      {
        pMsg.result = CREATE_ACCOUNT_FAIL_ID;
        gQueryManager.Cerrar();
      }
  }
  else
  {
      if(gQueryManager.ExecQuery("SELECT memb__pwd FROM MEMB_INFO WHERE memb___id='%s'",lpMsg->account) == 0 || gQueryManager.Fetch() == SQL_NO_DATA) { gQueryManager.Close(
      )
        ;
        if (gQueryManager.ExecQuery("INSERT INTO dbo.MEMB_INFO(memb___id, memb__pwd, memb_name, sno__numb, mail_addr, mail_chek, block_code, ctl1_code) VALORES ('%s', '%s', '%s', '%s' , '%s', 1, 0, 1)",
            lpMsg->cuenta,
            lpMsg->contraseña,
            "JoinServer",
            lpMsg->códigopersonal,



            pMsg.result = CREAR_CUENTA_ÉXITO;
            gLog.Output(LOG_ACCOUNT, "[AccountInfo] Cuenta creada (Cuenta: %s, Contraseña: %s )", lpMsg->cuenta, lpMsg->contraseña);
        }
      }
      else
      {
        pMsg.result = CREATE_ACCOUNT_FAIL_ID;
        gQueryManager.Cerrar();
      }
   
  }
  gSocketManager.DataSend(índice,(BYTE*)&pMsg,pMsg.header.size);
}
#endif


JoinServerProtocol.h

Code: [Select]
//Abajo de
#pragma once

//Agregar Esto

#define CREATE_ACCOUNT_FAIL_ID 0
#define CREATE_ACCOUNT_SUCCESS 1
#define CREATE_ACCOUNT_FAIL_RESIDENT 2

Code: [Select]
// Abajo de:
char IpAddress[16];
};

// Agregar:

#if(OBBY)
struct SDHP_REGISTER_ACCOUNT_SEND
{
  PBMSG_HEAD header; // C1:01
  índice de PALABRA;
  cuenta char[11];
  contraseña de char[11];
  char código personal[11];
  char Correo electrónico[50];
};
#endif [code]

[code] // Abajo de:

void GJAccountLockSaveRecv(SDHP_LOCK_SAVE_RECV* lpMsg,int index);

// Agregar:

#if(OBBY)
void GJRegisterAccountRecv(SDHP_REGISTER_ACCOUNT_SEND* lpMsg,int index);
#endif



Seguimos con SRC GAMERSERVE

stdafx.h
Code: [Select]
// Agregar:

#define OBBY 1

JSProtocol.cpp

Code: [Select]
// Abajo de:

      case 0x30:
        JGAccountAlreadyConnectedRecv((SDHP_ACCOUNT_ALREADY_CONNECTED_RECV*)lpMsg);
        romper;
       
// Agregar:

#if(OBBY)
      case 0x40:
        JGRegisterAccountRecv((SDHP_CONNECT_ACCOUNT_RECV*)lpMsg);
        romper;
#endif


Code: [Select]
// Abajo de:

void JGServerInfoRecv(SDHP_JOIN_SERVER_INFO_RECV* lpMsg) // OK
{

}

// Agregar:

#if(OBBY)
void JGRegisterAccountRecv(SDHP_CONNECT_ACCOUNT_RECV* lpMsg) // OK
{
  if(OBJECT_RANGE( lpMsg->index) == 0)
  {
      volver;
  }

  if((gObj[lpMsg->index].LoginMessageSend--) == 0)
  {
      CloseClient(lpMsg->index);
      devolver;
  }

  if(gObj[lpMsg->index].Connected != OBJECT_CONNECTED)
  {
      GJDisconnectAccountSend(lpMsg->index,lpMsg->account,gObj[lpMsg->index].IpAddr);
      devolver;
  }

  GCRegisterAccountSend(lpMsg->índice, lpMsg->resultado);
  devolver;
}
#endif [code]


[code]// Abajo de:

gJoinServerConnection.DataSend((BYTE*)&pMsg,pMsg.header.size);
}

// Agregar:

#if(OBBY)
void GJRegisterAccountSend(int aIndex,char* cuenta,char* contraseña,char* código personal,char* Email)
{
  SDHP_REGISTER_ACCOUNT_SEND pMsj;

  pMsg.header.set(0x40,sizeof(pMsg));

  pMsg.index = aIndex;

  memcpy(pMsg.cuenta,cuenta,tamaño(pMsg.cuenta));

  memcpy(pMsg.contraseña,contraseña,tamaño(pMsg.contraseña));

  memcpy(pMsg.personalcode,personalcode,sizeof(pMsg.personalcode));

  memcpy(pMsg.Email,Email,sizeof(pMsg.Email));

  gJoinServerConnection.DataSend((BYTE*)&pMsg,pMsg.header.size);
}
#endif [code]


JSProtocol.h

[code]// Abajo de:

char IpAddress[16];
};

// Agregar:

#if(OBBY)
struct SDHP_REGISTER_ACCOUNT_SEND
{
  PBMSG_HEAD header; // C1:01
  índice de PALABRA;
  cuenta char[11];
  contraseña de char[11];
  char código personal[11];
  char Correo electrónico[50];
};
#endif


Code: [Select]
// Abajo de:

void GJAccountLockSaveSend(int aIndex,int Lock);

// Agregar:

#if(OBBY)
void JGRegisterAccountRecv(SDHP_CONNECT_ACCOUNT_RECV* lpMsg);
void GJRegisterAccountSend(int aIndex,char* cuenta,char* contraseña,char* código personal,char* IpAddress);
#endif

Protocol.cpp
Code: [Select]
// Abajo de:

            case 0x02:
              CGCloseClientRecv((PMSG_CLOSE_CLIENT_RECV*)lpMsg,aIndex);
              romper;

// Agregar:
#if(OBBY)
            caso 0x12:
              CGRegisterAccountRecv((PMSG_REGISTER_ACCOUNT_RECV*)lpMsg,aIndex);
              devolver;
#endif

Code: [Select]
// Abajo de:

GJConnectAccountSend(aIndex, cuenta, contraseña, lpObj->IpAddr);
  }

#endif
}

// Agregar:

#if(OBBY)
void CGRegisterAccountRecv(PMSG_REGISTER_ACCOUNT_RECV* lpMsg,int aIndex)
{
  LPOBJ lpObj = &gObj[aIndex];

  if(lpObj->Connected != OBJECT_CONNECTED)
  {
      CloseClient(aIndex);
      devolver;
  }

  if(memcmp(gServerInfo.m_ServerVersion,lpMsg->ClientVersion,sizeof(lpMsg->ClientVersion)) != 0)
  {
      GCConnectAccountSend(aIndex,6);
      devolver;
  }

  if(memcmp(gServerInfo.m_ServerSerial,lpMsg->ClientSerial,sizeof(lpMsg->ClientSerial)) != 0)
  {
      GCConnectAccountSend(aIndex,6);
      devolver;
  }

  if(lpObj->LoginMessageSend == 0)
  {
      lpObj->LoginMessageSend++;
      lpObj->LoginMessageCount++;
      lpObj->ConnectTickCount = GetTickCount();
      lpObj->ClientTickCount = lpMsg->TickCount;
      lpObj->ServerTickCount = GetTickCount();

      cuenta char[11] = {0};

      PacketArgumentDecrypt(cuenta,lpMsg->cuenta,(tamañode(cuenta)-1));

      char contraseña[11] = {0};

      PacketArgumentDecrypt(contraseña,lpMsg->contraseña,(tamañode(contraseña)-1));

      char CódigoPersonal[11] = {0};

      PacketArgumentDecrypt(PersonalCode,lpMsg->PersonalCode,(sizeof(PersonalCode)-1));

      char Correo electrónico personal[50] = {0};

      PacketArgumentDecrypt(Correo electrónico personal, lpMsg->szEmail, (tamaño de (Correo electrónico personal)-1));

      lpObj->MapServerMoveRequest = 0;
      lpObj->ÚltimoCódigoServidor = -1;
      lpObj->DestMap = -1;
      lpObj->DestX = 0;
      lpObj->DestY = 0;

      GJRegisterAccountSend(aIndex,cuenta,contraseña,PersonalCode, PersonalEmail);
  }
}
#endif [code]


[code]// Abajo de:

DataSend(aIndex,(BYTE*)&pMsg,pMsg.header.size);
}

// Agregar:

#if(OBBY)
void GCRegisterAccountSend(int aIndex,BYTE result) // OK
{
  PMSG_CONNECT_ACCOUNT_SEND pMsg;

  pMsg.header.set(0xF1,0x12,sizeof(pMsg));

  pMsj.resultado = resultado;

  DataSend(aIndex,(BYTE*)&pMsg,pMsg.header.size);
}
#endif

Protocol.h

Code: [Select]
// Abajo de:

BYTE ClientSerial[16];
  #pragma pack()
  #endif
};

// Agregar:

#if(OBBY)
struct PMSG_REGISTER_ACCOUNT_RECV
{
  #pragma pack(1)
  PSBMSG_HEAD header; // C3:F1:01
  cuenta char[10];
  contraseña char[20];
  char CódigoPersonal[20];
  char szEmail[50];
  DWORD TickCount;
  BYTE ClientVersion[5];
  BYTE ClientSerial[16];
  #paquete pragmático()
};
#endif
Code: [Select]
// Abajo de:

  void CGReqCastleHuntZoneEntrance(PMSG_REQ_MOVE_TO_CASTLE_HUNTZONE * aRecv, int iIndex);

// Agregar:

#if(OBBY)
  void GCRegisterAccountSend(int aIndex,BYTE result);
  void CGRegisterAccountRecv(PMSG_REGISTER_ACCOUNT_RECV* lpMsg,int aIndex);
#endif



Creditos
OBBY

8
Season6 / Re: Files Full Up 30 Server + Cliente + Tools By Pyke
« on: July 10, 2023, 05:21:52 PM »
Files S6 Upgrade pyke 2023 V 0.6
7 de Junio del 2023



Link https://www.guiaservermu.com/index.php?topic=38.0

9
Season6 / Files Files S6 Upgrade pyke 2023 V0.6 By OBBY
« on: July 10, 2023, 05:20:50 PM »
Files S6 Upgrade pyke 2023 V 0.6
7 de Junio del 2023

ChangeLog

Quote
=======================
V 1 Dakosmu / OBBY
=======================
ADD: REGISTRO EN MAIN
FIX: MASTER SKIL LVL
ADD: DATA/CHARACTER/DefaultClassInfo  //Balance De pj: Vida & Energia
ADD: GAMESERVER/GameServerInfo - Character  & GameServerInfo - Skill //En proceso : Balances de skill, pvp
ADD: DATA/COMMAND // Ordenado y modificado
ADD: Sulepan Lo e modificado su drop
ADD: FIX CONSUMO MAIN
ADD: INFORMACION MAIN
FIX: TAMAÑO ITEMS
FIX: TESTE LETRA C
ADD: Enable y Disable MAIN INFO: Fenrir, Horse y Dinorant // SafeZone


Imagenes








Descargas

Update del V.0.1 hasta el V.0.6


VirusTotal
https://www.virustotal.com/gui/file/dfaf9afc5bb82d3b9da3454e20217435481676c2fe760fe4357f84ceb6c14b74?nocache=1

Creditos
Dakosmu / OBBY

Pages: [1]