Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: FILES FOX V13 - + SLOT PET+FLAG SYSTEM + SKIN SYSTEM (Source)  (Visto 34373 veces)

0 Miembros and 3 Guests are viewing this topic.

Offline bin9xhn2 #60 Posteado: December 18, 2023, 07:30:47 PM

  • 0 puntos por ventas
  • *
  • Rank: Sup. destacado
  • Posts: 117
  • Gracias recibida: 228
  • vn
que codigo tendria q poner para que el pj no camine cuando abro el panel de opciones por que cuando abro el panel y doy clic en una opcion el pj camina no deberia pero camina creo que falta una definición o algo haber si me apoyan :v
solo te falta agregar el setcursor a esa parte del code nada mas
Can you give more details about which part? I'm bad at scr code
shared src !!
https://mega.nz/file/HN5BGYII#44njM_x0bOTl_tX5c0DOhoxxprUVMpSj5cTvcWtozxQ
mejor dime que parte del codigo no que me pases todo una source !! asi te ayudo bro !!

Code: [Select]
#include "stdafx.h"
#if WINDOWS_QUEST
#include "WindowsQuest.h"
#include "Interface.h"
#include "Protocol.h"
#include "Item.h"
#include "Offset.h"
#include "Item.h"
#include "Defines.h"
#include "CustomMap.h"
#include "Common.h"
#include "Protect.h"
#include "Central.h"

// ----------------------------------------------------------------------------------------------

WinQuestSystem gWinQuestSystem;
// ----------------------------------------------------------------------------------------------

WinQuestSystem::WinQuestSystem()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

WinQuestSystem::~WinQuestSystem()
{
// --
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Init()
{
// --
this->DrawMiniInfoFlag = false;
ZeroMemory(&this->ewdata, sizeof(this->ewdata));
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Load()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::ImageLoad()
{
pLoadImage("Custom\\Interface\\Party_info_block.tga", ex_INFO_2, 0x2601, 0x2900, 1, 0);
pLoadImage("Custom\\Interface\\newui_cha_textbox03.tga", ex_TEXT_BOX3, 0x2601, 0x2900, 1, 0);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::BindImages()
{
int eWHig;

eWHig = 423;
gInterface.BindObject(OBJECT_WIN_QUEST_FINISH, 0x7A62, 90, 15.5, -1, -1); //Boton Accept Quest
gInterface.BindObject(OBJECT_WIN_QUEST_MAIN, 0x7A5A, 222, eWHig, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TITLE, 0x7A63, 230, 67, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FRAME, 0x7A58, 230, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FOOTER, 0x7A59, 230, 50, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_DIV, 0x7A62, 223, 21, -1, -1); //Dividor lineas
gInterface.BindObject(OBJECT_WIN_QUEST_CLOSE, 51522, 16, 16, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB, 51522, 166, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB1, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB2, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB3, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT1, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT2, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT3, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG, 0x7AA3, 170, 21, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG2, 0x7AA1, 170, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_LINE1, 0x7B67, 154, 3, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_POINT1, 0x7B68, 10, 10, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFO, ex_INFO_2, 22, 19, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG3, ex_TEXT_BOX3, 170, 21, -1, -1);
gInterface.BindObject(OPEN_QUEST, 0x7904, 25, 40, -1, -1);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Draw()
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return;
}

pSetCursorFocus = true;

pSetBlend(true);

int a = this->OpenTab;

// int Addradd = pWinWidth / pWinHeightReal / 2 - 320;
DWORD ItemNameColor = eWhite;
float MainWidth = 210.0;
float MainHeight = 400.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);

float ContentX = StartX;
float ContentY = StartY;

float TabX = StartX + 30;
float TabY = ContentY + 30 + 5;
float InfoX = 0;
float InfoY = 0;
int InfoA = 0;
int InfoM = 0;
int bColor = 0;
//--
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxX = StartX + MainWidth;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxY = StartY + MainHeight;

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

gInterface.DrawFormat(eBlue250, (int)StartX, (int)StartY + 10, 210, 3, "Windows Quest");



gInterface.DrawGUI(OBJECT_WIN_QUEST_CLOSE, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -5, ContentY+5);
gCentral.DrawDropBox(StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width-5, ContentY+5, 16, 16, 0, 0);
gInterface.DrawText603(eRed, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -26, ContentY + 8, 60, 3, "X");
// ----
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_CLOSE))
{
DWORD Color = eGray100;
// ----
if (gInterface.Data[OBJECT_WIN_QUEST_CLOSE].OnClick)
{
Color = eGray150;
}
// ----
gInterface.DrawColoredGUI(OBJECT_WIN_QUEST_CLOSE, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y, Color);
gInterface.DrawToolTip(gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X + 5, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y + 25, "Close");
}
// ------------------------------------
if (this->OpenTab == 0)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}
else if (this->OpenTab == 1)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}

if (this->ewdata[0].b_End)
{
gInterface.DrawText603(eRed, TabX+2, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX+2, TabY + 3, 60, 3, "first Quest");


}
if (this->ewdata[1].b_End)
{
gInterface.DrawText603(eRed, TabX + 80, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX + 82, TabY + 3, 60, 3, "second Quest");
}

// ------------------------------------
// -> End Quest
// ------------------------------------
if (this->ewdata[a].b_End)
{
float EndY = ContentY + 53;
gInterface.DrawGUI(OBJECT_WIN_QUEST_INFOBG3, StartX + 30, EndY + 12);
gInterface.DrawText603(eAncient, ContentX + 30, EndY + 17, 170, 3, "End");
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
return;
}
// ------------------------------------
// -> Content Need
// ------------------------------------
float NeededY = ContentY + 53;

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 20, 180, 3, "%s", this->ewdata[a].NameQuest);

gCentral.DrawDropBox(StartX + 5, TabY + 37, 200, 0.5, 0, 0); // Divisor 1

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 36, 170, 3, "Requisitos");

float CountNeededY = NeededY + 30;

gInterface.DrawText603(eWhite, StartX + 30, CountNeededY + 6, 100, 1, "Level:");

if (this->ewdata[a].b_Level)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 60, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedLevel);
gInterface.DrawText603(eWhite, StartX + 90, CountNeededY + 6, 100, 1, "Reset:");

if (this->ewdata[a].b_Reset)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 120, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedReset);
gInterface.DrawText603(eWhite, StartX + 150, CountNeededY + 6, 100, 1, "GReset:");

if (this->ewdata[a].b_Grand)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 185, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedGrand);

CountNeededY += 21;
// ------------------------------------
// -> Content Mission
// ------------------------------------
float MissionX = StartX -10;
float MissionY = ContentY + 53 + 40;

MissionY += 10;

float CountMissionY = MissionY + 20;

//----------------------------------------------------

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
if (this->ewdata[a].b_Mission[m])
{
bColor = eExcellent;
}
else
{
bColor = eWhite;
}

CountMissionY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}
// ------------------------------------
// -> Content Reward
// ------------------------------------
float RewardY = ContentY + 53 + 100 + 42 + 15;

gCentral.DrawDropBox(StartX +5, RewardY, 200, 0.5, 0, 0);

gInterface.DrawText603(eAncient, ContentX + 20, RewardY + 6, 170, 3, "Reward");

float CountRewardY = RewardY + 34 - 4;

for (int r = 0; r < EW_MAX_REWARD; r++)
{
if (this->ewdata[a].RewardType[r] == ewZen ||
this->ewdata[a].RewardType[r] == ewFreePoint ||
this->ewdata[a].RewardType[r] == ewItem ||
this->ewdata[a].RewardType[r] == ewBonus ||
this->ewdata[a].RewardType[r] == ewBuff)
{
if (this->ewdata[a].RewardType[r] == ewZen)
{
char RewardMSG[64] = { 0 };
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Zen:");
pGetMoneyFormat((double)(int)this->ewdata[a].RewardCount[r], RewardMSG, 0);
gInterface.DrawText603(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", RewardMSG);
}
else if (this->ewdata[a].RewardType[r] == ewFreePoint)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Lvl Point:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewItem)
{

ItemBmdStruct* ItemInfo = pGetItemBmdStruct(ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]));


const int WidthValue = 24;
const int HeightValue = 26;
float barWidth = WidthValue * ItemInfo->ItemWidth;
float barHeight = HeightValue * ItemInfo->ItemHeight;

if (this->ewdata[a].RewardItemLevel[r] > 0)
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s +%d x%d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardItemLevel[r], this->ewdata[a].RewardCount[r]);
}
else
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s x %d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardCount[r]);
}

// ObjectItem* item_data = (ObjectItem*)&item__;

if (pCheckMouseOver((int)(StartX + 20), (int)(CountRewardY + 5), 100, 7))
{
NewModelRender3D(StartX + 155, ContentX + 40, barWidth, barHeight, GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]), this->ewdata[a].RewardItemLevel[r], 1, 0, 0);

//Tooltip imcompleto
/* JCCoord B;

B.X = 196;
B.Y = (int)130;

sub_7E3E30(*(DWORD*)(GetInstance() + 308), B, (int)item_data, 0, 0, 0);

pSetBlend(false);*/
}
}
else if (this->ewdata[a].RewardType[r] == ewBonus)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "WCoin:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewBuff)
{
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Buff:");

switch (this->ewdata[a].RewardItemType[r])
{
case 1:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Experience: + 15%%");
break;
case 2:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Dmg: +10%%/Wizard Dmg: +10%%");
break;
case 3:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Defence: +10%%");
break;
case 4:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Exel Dmg Rate: +5%%/Ctcal Dmg Rate: +5%%");
break;
case 5:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Zen Drop: +50%%");
break;
case 6:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Double Damage: +5%%");
break;
}
}

CountRewardY += 21;
}
}
// ------------------------------------
// -> Finish
// ------------------------------------
bool Finish = 0;

if (this->ewdata[a].Start)
{
Finish = this->ewdata[a].b_done;
}
else
{
Finish = this->ewdata[a].b_accept;
}

//------
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_FINISH))
{
if (gInterface.Data[OBJECT_WIN_QUEST_FINISH].OnClick)
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 28);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}

if (this->ewdata[a].Start)
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Done");

}
else
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Accept");

}
//------
if (!Finish)
{
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
}
else
{
// ----
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = true;
// ----
}

pSetBlend(false);
}

void WinQuestSystem::DrawMiniInfo()
{

try
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}

/* if (gProtect.m_MainInfo.MiniMapType == 1)
{
if (MiniMap == 1)
{
return;
}
}
*/
int qCount = 0;
int mCount = 0;
bool DrInfo = false;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
qCount += 15;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
mCount += 10;
DrInfo = true;
}
}
}
}

if (DrInfo == false)
{

return;
}

float iX = 530; //posicion MiniInfoQuest
float iY = 320; //posicion MiniInfoQuest
float Wind = 100; //posicion MiniInfoQuest
float Hig = qCount + mCount;

float StartiY = 420; //posicion MiniInfoQuest

iY = StartiY - Hig;

pSetBlend(true);

pDrawColorButton(0x7980, iX, iY, Wind, Hig, NULL, NULL, Color4f(0, 0, 0, 100));

iY += 3;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
gInterface.DrawText603(eOrange, iX + 2, iY, 200, 2, "%s", this->ewdata[a].NameQuest);

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
iY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}

iY += 15;
}
}

pSetBlend(false);
}
catch (...)
{
}
}
//// ----------------------------------------------------------------------------------------------
void WinQuestSystem::DrawOpenWQ()
{
if (gInterface.Data[OPEN_QUEST].OnShow)
{
gInterface.Data[OPEN_QUEST].OnShow = false;
}

if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}


//   int Addradd = pWinWidth / pWinHeightReal / 2 - 320;

  gInterface.Data[OPEN_QUEST].OnShow = true;

  gInterface.DrawGUI(OPEN_QUEST, 610, 200);

  if (gInterface.IsWorkZone(OPEN_QUEST))
  {
  pSetCursorFocus = true; // Bloqueo de Cursor Al Señalar :)
  gInterface.DrawToolTip(520, 210, "WINDOWS QUEST");
  // ----
  if (gInterface.Data[OPEN_QUEST].OnClick)
  {
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(40, 20, 3, 130));
  return;
  }
  // ----
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(255, 204, 20, 200));
  }

}

//
int WinQuestSystem::Button(DWORD Event)
{
if (gInterface.ButtonEx(Event, OPEN_QUEST, false))
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return 0;
}

PMSG_CHARACTER_LIST_SEND pMsg;
pMsg.header.set(0xDE, 0x21, sizeof(pMsg));
DataSend((BYTE*)& pMsg, pMsg.header.size);
return true;
}

if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return false;
}

if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_FINISH, true))
{
this->CG_AcñeptQuest();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_CLOSE, false))
{
pSetCursorFocus = false;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].Close();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB1, false))
{
this->OpenTab = 0;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB2, false))
{
this->OpenTab = 1;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB3, false))
{
this->OpenTab = 2;

return true;
}

return false;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_RecvMain(GC_MainPacket* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);
this->ewdata[a].b_accept = aRecv->xQuest[a].b_accept;
this->ewdata[a].b_done = aRecv->xQuest[a].b_done;
this->ewdata[a].b_End = aRecv->xQuest[a].b_End;
// -> user send
this->ewdata[a].Start = aRecv->xQuest[a].Start;
this->ewdata[a].Number = aRecv->xQuest[a].Number;
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].Count[m];
}
// -> need send
this->ewdata[a].b_Level = aRecv->xQuest[a].b_Level;
this->ewdata[a].b_Reset = aRecv->xQuest[a].b_Reset;
this->ewdata[a].b_Grand = aRecv->xQuest[a].b_Grand;

this->ewdata[a].NeedLevel = aRecv->xQuest[a].NeedLevel;
this->ewdata[a].NeedReset = aRecv->xQuest[a].NeedReset;
this->ewdata[a].NeedGrand = aRecv->xQuest[a].NeedGrand;
// -> mission send
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].b_Mission[m] = aRecv->xQuest[a].b_Mission[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
this->ewdata[a].MissionProcent[m] = aRecv->xQuest[a].MissionProcent[m];
}
for (int r = 0; r < EW_MAX_REWARD; r++)
{

this->ewdata[a].RewardType[r] = aRecv->xQuest[a].RewardType[r];
this->ewdata[a].RewardCount[r] = aRecv->xQuest[a].RewardCount[r];
this->ewdata[a].RewardItemType[r] = aRecv->xQuest[a].RewardItemType[r];
this->ewdata[a].RewardItemIndex[r] = aRecv->xQuest[a].RewardItemIndex[r];
this->ewdata[a].RewardItemLevel[r] = aRecv->xQuest[a].RewardItemLevel[r];
}
}

if (aRecv->isOpenWindow)
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
this->SwitchStatsWindowState();
pSetCursorFocus = true;
}
}

}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::CG_AcñeptQuest()
{
CG_Accept_Done pReq = { 0 };
pReq.h.set(0xDE, 0x0D, sizeof(pReq));
pReq.Result = this->OpenTab;
DataSend((LPBYTE)&pReq, pReq.h.size);
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfo* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);

this->ewdata[a].Start = aRecv->xQuest[a].Start;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].WQuestCount[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
}
}
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfox* aRecv)
{
int a = aRecv->a;
int m = aRecv->m;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (m < 0 && m >= EW_MAX_MISSION)
{
return;
}

this->ewdata[a].Count[m]++;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_Start(GC_WinStart* aRecv)
{
int a = aRecv->Act;
int s = aRecv->Start;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (s == true)
{
this->ewdata[a].Start = true;
}
}
//// ----------------------------------------------------------------------------------------------
#endif

For example WindowsQuest.cpp
Where do I need to add and edit so it doesn't move when clicking on the table


debe crear un pSetCursorFocus = true;
pSetCursorFocus = false; exclusivo para ese evento lo mas seguro en central.cpp
esperemos que alguien coloque guia de como hacer

That's right . I hope someone can give detailed instructions on this issue.


Offline onlinezajzaj #61 Posteado: December 19, 2023, 08:20:54 AM

  • MAESTRO

  • US. DE HONOR

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 662
  • Gracias recibida: 20044
  • vn
que codigo tendria q poner para que el pj no camine cuando abro el panel de opciones por que cuando abro el panel y doy clic en una opcion el pj camina no deberia pero camina creo que falta una definición o algo haber si me apoyan :v
solo te falta agregar el setcursor a esa parte del code nada mas
Can you give more details about which part? I'm bad at scr code
shared src !!
https://mega.nz/file/HN5BGYII#44njM_x0bOTl_tX5c0DOhoxxprUVMpSj5cTvcWtozxQ
mejor dime que parte del codigo no que me pases todo una source !! asi te ayudo bro !!

Code: [Select]
#include "stdafx.h"
#if WINDOWS_QUEST
#include "WindowsQuest.h"
#include "Interface.h"
#include "Protocol.h"
#include "Item.h"
#include "Offset.h"
#include "Item.h"
#include "Defines.h"
#include "CustomMap.h"
#include "Common.h"
#include "Protect.h"
#include "Central.h"

// ----------------------------------------------------------------------------------------------

WinQuestSystem gWinQuestSystem;
// ----------------------------------------------------------------------------------------------

WinQuestSystem::WinQuestSystem()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

WinQuestSystem::~WinQuestSystem()
{
// --
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Init()
{
// --
this->DrawMiniInfoFlag = false;
ZeroMemory(&this->ewdata, sizeof(this->ewdata));
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Load()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::ImageLoad()
{
pLoadImage("Custom\\Interface\\Party_info_block.tga", ex_INFO_2, 0x2601, 0x2900, 1, 0);
pLoadImage("Custom\\Interface\\newui_cha_textbox03.tga", ex_TEXT_BOX3, 0x2601, 0x2900, 1, 0);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::BindImages()
{
int eWHig;

eWHig = 423;
gInterface.BindObject(OBJECT_WIN_QUEST_FINISH, 0x7A62, 90, 15.5, -1, -1); //Boton Accept Quest
gInterface.BindObject(OBJECT_WIN_QUEST_MAIN, 0x7A5A, 222, eWHig, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TITLE, 0x7A63, 230, 67, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FRAME, 0x7A58, 230, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FOOTER, 0x7A59, 230, 50, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_DIV, 0x7A62, 223, 21, -1, -1); //Dividor lineas
gInterface.BindObject(OBJECT_WIN_QUEST_CLOSE, 51522, 16, 16, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB, 51522, 166, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB1, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB2, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB3, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT1, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT2, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT3, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG, 0x7AA3, 170, 21, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG2, 0x7AA1, 170, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_LINE1, 0x7B67, 154, 3, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_POINT1, 0x7B68, 10, 10, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFO, ex_INFO_2, 22, 19, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG3, ex_TEXT_BOX3, 170, 21, -1, -1);
gInterface.BindObject(OPEN_QUEST, 0x7904, 25, 40, -1, -1);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Draw()
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return;
}

pSetCursorFocus = true;

pSetBlend(true);

int a = this->OpenTab;

// int Addradd = pWinWidth / pWinHeightReal / 2 - 320;
DWORD ItemNameColor = eWhite;
float MainWidth = 210.0;
float MainHeight = 400.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);

float ContentX = StartX;
float ContentY = StartY;

float TabX = StartX + 30;
float TabY = ContentY + 30 + 5;
float InfoX = 0;
float InfoY = 0;
int InfoA = 0;
int InfoM = 0;
int bColor = 0;
//--
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxX = StartX + MainWidth;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxY = StartY + MainHeight;

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

gInterface.DrawFormat(eBlue250, (int)StartX, (int)StartY + 10, 210, 3, "Windows Quest");



gInterface.DrawGUI(OBJECT_WIN_QUEST_CLOSE, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -5, ContentY+5);
gCentral.DrawDropBox(StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width-5, ContentY+5, 16, 16, 0, 0);
gInterface.DrawText603(eRed, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -26, ContentY + 8, 60, 3, "X");
// ----
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_CLOSE))
{
DWORD Color = eGray100;
// ----
if (gInterface.Data[OBJECT_WIN_QUEST_CLOSE].OnClick)
{
Color = eGray150;
}
// ----
gInterface.DrawColoredGUI(OBJECT_WIN_QUEST_CLOSE, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y, Color);
gInterface.DrawToolTip(gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X + 5, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y + 25, "Close");
}
// ------------------------------------
if (this->OpenTab == 0)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}
else if (this->OpenTab == 1)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}

if (this->ewdata[0].b_End)
{
gInterface.DrawText603(eRed, TabX+2, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX+2, TabY + 3, 60, 3, "first Quest");


}
if (this->ewdata[1].b_End)
{
gInterface.DrawText603(eRed, TabX + 80, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX + 82, TabY + 3, 60, 3, "second Quest");
}

// ------------------------------------
// -> End Quest
// ------------------------------------
if (this->ewdata[a].b_End)
{
float EndY = ContentY + 53;
gInterface.DrawGUI(OBJECT_WIN_QUEST_INFOBG3, StartX + 30, EndY + 12);
gInterface.DrawText603(eAncient, ContentX + 30, EndY + 17, 170, 3, "End");
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
return;
}
// ------------------------------------
// -> Content Need
// ------------------------------------
float NeededY = ContentY + 53;

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 20, 180, 3, "%s", this->ewdata[a].NameQuest);

gCentral.DrawDropBox(StartX + 5, TabY + 37, 200, 0.5, 0, 0); // Divisor 1

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 36, 170, 3, "Requisitos");

float CountNeededY = NeededY + 30;

gInterface.DrawText603(eWhite, StartX + 30, CountNeededY + 6, 100, 1, "Level:");

if (this->ewdata[a].b_Level)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 60, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedLevel);
gInterface.DrawText603(eWhite, StartX + 90, CountNeededY + 6, 100, 1, "Reset:");

if (this->ewdata[a].b_Reset)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 120, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedReset);
gInterface.DrawText603(eWhite, StartX + 150, CountNeededY + 6, 100, 1, "GReset:");

if (this->ewdata[a].b_Grand)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 185, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedGrand);

CountNeededY += 21;
// ------------------------------------
// -> Content Mission
// ------------------------------------
float MissionX = StartX -10;
float MissionY = ContentY + 53 + 40;

MissionY += 10;

float CountMissionY = MissionY + 20;

//----------------------------------------------------

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
if (this->ewdata[a].b_Mission[m])
{
bColor = eExcellent;
}
else
{
bColor = eWhite;
}

CountMissionY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}
// ------------------------------------
// -> Content Reward
// ------------------------------------
float RewardY = ContentY + 53 + 100 + 42 + 15;

gCentral.DrawDropBox(StartX +5, RewardY, 200, 0.5, 0, 0);

gInterface.DrawText603(eAncient, ContentX + 20, RewardY + 6, 170, 3, "Reward");

float CountRewardY = RewardY + 34 - 4;

for (int r = 0; r < EW_MAX_REWARD; r++)
{
if (this->ewdata[a].RewardType[r] == ewZen ||
this->ewdata[a].RewardType[r] == ewFreePoint ||
this->ewdata[a].RewardType[r] == ewItem ||
this->ewdata[a].RewardType[r] == ewBonus ||
this->ewdata[a].RewardType[r] == ewBuff)
{
if (this->ewdata[a].RewardType[r] == ewZen)
{
char RewardMSG[64] = { 0 };
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Zen:");
pGetMoneyFormat((double)(int)this->ewdata[a].RewardCount[r], RewardMSG, 0);
gInterface.DrawText603(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", RewardMSG);
}
else if (this->ewdata[a].RewardType[r] == ewFreePoint)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Lvl Point:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewItem)
{

ItemBmdStruct* ItemInfo = pGetItemBmdStruct(ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]));


const int WidthValue = 24;
const int HeightValue = 26;
float barWidth = WidthValue * ItemInfo->ItemWidth;
float barHeight = HeightValue * ItemInfo->ItemHeight;

if (this->ewdata[a].RewardItemLevel[r] > 0)
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s +%d x%d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardItemLevel[r], this->ewdata[a].RewardCount[r]);
}
else
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s x %d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardCount[r]);
}

// ObjectItem* item_data = (ObjectItem*)&item__;

if (pCheckMouseOver((int)(StartX + 20), (int)(CountRewardY + 5), 100, 7))
{
NewModelRender3D(StartX + 155, ContentX + 40, barWidth, barHeight, GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]), this->ewdata[a].RewardItemLevel[r], 1, 0, 0);

//Tooltip imcompleto
/* JCCoord B;

B.X = 196;
B.Y = (int)130;

sub_7E3E30(*(DWORD*)(GetInstance() + 308), B, (int)item_data, 0, 0, 0);

pSetBlend(false);*/
}
}
else if (this->ewdata[a].RewardType[r] == ewBonus)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "WCoin:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewBuff)
{
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Buff:");

switch (this->ewdata[a].RewardItemType[r])
{
case 1:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Experience: + 15%%");
break;
case 2:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Dmg: +10%%/Wizard Dmg: +10%%");
break;
case 3:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Defence: +10%%");
break;
case 4:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Exel Dmg Rate: +5%%/Ctcal Dmg Rate: +5%%");
break;
case 5:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Zen Drop: +50%%");
break;
case 6:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Double Damage: +5%%");
break;
}
}

CountRewardY += 21;
}
}
// ------------------------------------
// -> Finish
// ------------------------------------
bool Finish = 0;

if (this->ewdata[a].Start)
{
Finish = this->ewdata[a].b_done;
}
else
{
Finish = this->ewdata[a].b_accept;
}

//------
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_FINISH))
{
if (gInterface.Data[OBJECT_WIN_QUEST_FINISH].OnClick)
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 28);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}

if (this->ewdata[a].Start)
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Done");

}
else
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Accept");

}
//------
if (!Finish)
{
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
}
else
{
// ----
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = true;
// ----
}

pSetBlend(false);
}

void WinQuestSystem::DrawMiniInfo()
{

try
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}

/* if (gProtect.m_MainInfo.MiniMapType == 1)
{
if (MiniMap == 1)
{
return;
}
}
*/
int qCount = 0;
int mCount = 0;
bool DrInfo = false;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
qCount += 15;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
mCount += 10;
DrInfo = true;
}
}
}
}

if (DrInfo == false)
{

return;
}

float iX = 530; //posicion MiniInfoQuest
float iY = 320; //posicion MiniInfoQuest
float Wind = 100; //posicion MiniInfoQuest
float Hig = qCount + mCount;

float StartiY = 420; //posicion MiniInfoQuest

iY = StartiY - Hig;

pSetBlend(true);

pDrawColorButton(0x7980, iX, iY, Wind, Hig, NULL, NULL, Color4f(0, 0, 0, 100));

iY += 3;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
gInterface.DrawText603(eOrange, iX + 2, iY, 200, 2, "%s", this->ewdata[a].NameQuest);

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
iY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}

iY += 15;
}
}

pSetBlend(false);
}
catch (...)
{
}
}
//// ----------------------------------------------------------------------------------------------
void WinQuestSystem::DrawOpenWQ()
{
if (gInterface.Data[OPEN_QUEST].OnShow)
{
gInterface.Data[OPEN_QUEST].OnShow = false;
}

if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}


//   int Addradd = pWinWidth / pWinHeightReal / 2 - 320;

  gInterface.Data[OPEN_QUEST].OnShow = true;

  gInterface.DrawGUI(OPEN_QUEST, 610, 200);

  if (gInterface.IsWorkZone(OPEN_QUEST))
  {
  pSetCursorFocus = true; // Bloqueo de Cursor Al Señalar :)
  gInterface.DrawToolTip(520, 210, "WINDOWS QUEST");
  // ----
  if (gInterface.Data[OPEN_QUEST].OnClick)
  {
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(40, 20, 3, 130));
  return;
  }
  // ----
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(255, 204, 20, 200));
  }

}

//
int WinQuestSystem::Button(DWORD Event)
{
if (gInterface.ButtonEx(Event, OPEN_QUEST, false))
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return 0;
}

PMSG_CHARACTER_LIST_SEND pMsg;
pMsg.header.set(0xDE, 0x21, sizeof(pMsg));
DataSend((BYTE*)& pMsg, pMsg.header.size);
return true;
}

if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return false;
}

if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_FINISH, true))
{
this->CG_AcñeptQuest();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_CLOSE, false))
{
pSetCursorFocus = false;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].Close();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB1, false))
{
this->OpenTab = 0;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB2, false))
{
this->OpenTab = 1;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB3, false))
{
this->OpenTab = 2;

return true;
}

return false;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_RecvMain(GC_MainPacket* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);
this->ewdata[a].b_accept = aRecv->xQuest[a].b_accept;
this->ewdata[a].b_done = aRecv->xQuest[a].b_done;
this->ewdata[a].b_End = aRecv->xQuest[a].b_End;
// -> user send
this->ewdata[a].Start = aRecv->xQuest[a].Start;
this->ewdata[a].Number = aRecv->xQuest[a].Number;
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].Count[m];
}
// -> need send
this->ewdata[a].b_Level = aRecv->xQuest[a].b_Level;
this->ewdata[a].b_Reset = aRecv->xQuest[a].b_Reset;
this->ewdata[a].b_Grand = aRecv->xQuest[a].b_Grand;

this->ewdata[a].NeedLevel = aRecv->xQuest[a].NeedLevel;
this->ewdata[a].NeedReset = aRecv->xQuest[a].NeedReset;
this->ewdata[a].NeedGrand = aRecv->xQuest[a].NeedGrand;
// -> mission send
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].b_Mission[m] = aRecv->xQuest[a].b_Mission[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
this->ewdata[a].MissionProcent[m] = aRecv->xQuest[a].MissionProcent[m];
}
for (int r = 0; r < EW_MAX_REWARD; r++)
{

this->ewdata[a].RewardType[r] = aRecv->xQuest[a].RewardType[r];
this->ewdata[a].RewardCount[r] = aRecv->xQuest[a].RewardCount[r];
this->ewdata[a].RewardItemType[r] = aRecv->xQuest[a].RewardItemType[r];
this->ewdata[a].RewardItemIndex[r] = aRecv->xQuest[a].RewardItemIndex[r];
this->ewdata[a].RewardItemLevel[r] = aRecv->xQuest[a].RewardItemLevel[r];
}
}

if (aRecv->isOpenWindow)
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
this->SwitchStatsWindowState();
pSetCursorFocus = true;
}
}

}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::CG_AcñeptQuest()
{
CG_Accept_Done pReq = { 0 };
pReq.h.set(0xDE, 0x0D, sizeof(pReq));
pReq.Result = this->OpenTab;
DataSend((LPBYTE)&pReq, pReq.h.size);
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfo* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);

this->ewdata[a].Start = aRecv->xQuest[a].Start;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].WQuestCount[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
}
}
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfox* aRecv)
{
int a = aRecv->a;
int m = aRecv->m;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (m < 0 && m >= EW_MAX_MISSION)
{
return;
}

this->ewdata[a].Count[m]++;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_Start(GC_WinStart* aRecv)
{
int a = aRecv->Act;
int s = aRecv->Start;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (s == true)
{
this->ewdata[a].Start = true;
}
}
//// ----------------------------------------------------------------------------------------------
#endif

For example WindowsQuest.cpp
Where do I need to add and edit so it doesn't move when clicking on the table


debe crear un pSetCursorFocus = true;
pSetCursorFocus = false; exclusivo para ese evento lo mas seguro en central.cpp
esperemos que alguien coloque guia de como hacer

That's right . I hope someone can give detailed instructions on this issue.

 Question2 Question2 Question2
This is not too difficult, you need to rearrange the custom menus in a reasonable way  fiesta


Offline GameNet #62 Posteado: December 21, 2023, 04:15:54 PM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 127
  • Gracias recibida: 20
  • pe
que codigo tendria q poner para que el pj no camine cuando abro el panel de opciones por que cuando abro el panel y doy clic en una opcion el pj camina no deberia pero camina creo que falta una definición o algo haber si me apoyan :v
solo te falta agregar el setcursor a esa parte del code nada mas
Can you give more details about which part? I'm bad at scr code
shared src !!
https://mega.nz/file/HN5BGYII#44njM_x0bOTl_tX5c0DOhoxxprUVMpSj5cTvcWtozxQ
mejor dime que parte del codigo no que me pases todo una source !! asi te ayudo bro !!

Code: [Select]
#include "stdafx.h"
#if WINDOWS_QUEST
#include "WindowsQuest.h"
#include "Interface.h"
#include "Protocol.h"
#include "Item.h"
#include "Offset.h"
#include "Item.h"
#include "Defines.h"
#include "CustomMap.h"
#include "Common.h"
#include "Protect.h"
#include "Central.h"

// ----------------------------------------------------------------------------------------------

WinQuestSystem gWinQuestSystem;
// ----------------------------------------------------------------------------------------------

WinQuestSystem::WinQuestSystem()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

WinQuestSystem::~WinQuestSystem()
{
// --
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Init()
{
// --
this->DrawMiniInfoFlag = false;
ZeroMemory(&this->ewdata, sizeof(this->ewdata));
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Load()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::ImageLoad()
{
pLoadImage("Custom\\Interface\\Party_info_block.tga", ex_INFO_2, 0x2601, 0x2900, 1, 0);
pLoadImage("Custom\\Interface\\newui_cha_textbox03.tga", ex_TEXT_BOX3, 0x2601, 0x2900, 1, 0);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::BindImages()
{
int eWHig;

eWHig = 423;
gInterface.BindObject(OBJECT_WIN_QUEST_FINISH, 0x7A62, 90, 15.5, -1, -1); //Boton Accept Quest
gInterface.BindObject(OBJECT_WIN_QUEST_MAIN, 0x7A5A, 222, eWHig, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TITLE, 0x7A63, 230, 67, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FRAME, 0x7A58, 230, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FOOTER, 0x7A59, 230, 50, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_DIV, 0x7A62, 223, 21, -1, -1); //Dividor lineas
gInterface.BindObject(OBJECT_WIN_QUEST_CLOSE, 51522, 16, 16, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB, 51522, 166, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB1, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB2, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB3, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT1, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT2, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT3, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG, 0x7AA3, 170, 21, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG2, 0x7AA1, 170, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_LINE1, 0x7B67, 154, 3, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_POINT1, 0x7B68, 10, 10, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFO, ex_INFO_2, 22, 19, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG3, ex_TEXT_BOX3, 170, 21, -1, -1);
gInterface.BindObject(OPEN_QUEST, 0x7904, 25, 40, -1, -1);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Draw()
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return;
}

pSetCursorFocus = true;

pSetBlend(true);

int a = this->OpenTab;

// int Addradd = pWinWidth / pWinHeightReal / 2 - 320;
DWORD ItemNameColor = eWhite;
float MainWidth = 210.0;
float MainHeight = 400.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);

float ContentX = StartX;
float ContentY = StartY;

float TabX = StartX + 30;
float TabY = ContentY + 30 + 5;
float InfoX = 0;
float InfoY = 0;
int InfoA = 0;
int InfoM = 0;
int bColor = 0;
//--
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxX = StartX + MainWidth;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxY = StartY + MainHeight;

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

gInterface.DrawFormat(eBlue250, (int)StartX, (int)StartY + 10, 210, 3, "Windows Quest");



gInterface.DrawGUI(OBJECT_WIN_QUEST_CLOSE, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -5, ContentY+5);
gCentral.DrawDropBox(StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width-5, ContentY+5, 16, 16, 0, 0);
gInterface.DrawText603(eRed, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -26, ContentY + 8, 60, 3, "X");
// ----
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_CLOSE))
{
DWORD Color = eGray100;
// ----
if (gInterface.Data[OBJECT_WIN_QUEST_CLOSE].OnClick)
{
Color = eGray150;
}
// ----
gInterface.DrawColoredGUI(OBJECT_WIN_QUEST_CLOSE, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y, Color);
gInterface.DrawToolTip(gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X + 5, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y + 25, "Close");
}
// ------------------------------------
if (this->OpenTab == 0)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}
else if (this->OpenTab == 1)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}

if (this->ewdata[0].b_End)
{
gInterface.DrawText603(eRed, TabX+2, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX+2, TabY + 3, 60, 3, "first Quest");


}
if (this->ewdata[1].b_End)
{
gInterface.DrawText603(eRed, TabX + 80, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX + 82, TabY + 3, 60, 3, "second Quest");
}

// ------------------------------------
// -> End Quest
// ------------------------------------
if (this->ewdata[a].b_End)
{
float EndY = ContentY + 53;
gInterface.DrawGUI(OBJECT_WIN_QUEST_INFOBG3, StartX + 30, EndY + 12);
gInterface.DrawText603(eAncient, ContentX + 30, EndY + 17, 170, 3, "End");
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
return;
}
// ------------------------------------
// -> Content Need
// ------------------------------------
float NeededY = ContentY + 53;

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 20, 180, 3, "%s", this->ewdata[a].NameQuest);

gCentral.DrawDropBox(StartX + 5, TabY + 37, 200, 0.5, 0, 0); // Divisor 1

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 36, 170, 3, "Requisitos");

float CountNeededY = NeededY + 30;

gInterface.DrawText603(eWhite, StartX + 30, CountNeededY + 6, 100, 1, "Level:");

if (this->ewdata[a].b_Level)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 60, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedLevel);
gInterface.DrawText603(eWhite, StartX + 90, CountNeededY + 6, 100, 1, "Reset:");

if (this->ewdata[a].b_Reset)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 120, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedReset);
gInterface.DrawText603(eWhite, StartX + 150, CountNeededY + 6, 100, 1, "GReset:");

if (this->ewdata[a].b_Grand)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 185, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedGrand);

CountNeededY += 21;
// ------------------------------------
// -> Content Mission
// ------------------------------------
float MissionX = StartX -10;
float MissionY = ContentY + 53 + 40;

MissionY += 10;

float CountMissionY = MissionY + 20;

//----------------------------------------------------

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
if (this->ewdata[a].b_Mission[m])
{
bColor = eExcellent;
}
else
{
bColor = eWhite;
}

CountMissionY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}
// ------------------------------------
// -> Content Reward
// ------------------------------------
float RewardY = ContentY + 53 + 100 + 42 + 15;

gCentral.DrawDropBox(StartX +5, RewardY, 200, 0.5, 0, 0);

gInterface.DrawText603(eAncient, ContentX + 20, RewardY + 6, 170, 3, "Reward");

float CountRewardY = RewardY + 34 - 4;

for (int r = 0; r < EW_MAX_REWARD; r++)
{
if (this->ewdata[a].RewardType[r] == ewZen ||
this->ewdata[a].RewardType[r] == ewFreePoint ||
this->ewdata[a].RewardType[r] == ewItem ||
this->ewdata[a].RewardType[r] == ewBonus ||
this->ewdata[a].RewardType[r] == ewBuff)
{
if (this->ewdata[a].RewardType[r] == ewZen)
{
char RewardMSG[64] = { 0 };
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Zen:");
pGetMoneyFormat((double)(int)this->ewdata[a].RewardCount[r], RewardMSG, 0);
gInterface.DrawText603(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", RewardMSG);
}
else if (this->ewdata[a].RewardType[r] == ewFreePoint)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Lvl Point:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewItem)
{

ItemBmdStruct* ItemInfo = pGetItemBmdStruct(ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]));


const int WidthValue = 24;
const int HeightValue = 26;
float barWidth = WidthValue * ItemInfo->ItemWidth;
float barHeight = HeightValue * ItemInfo->ItemHeight;

if (this->ewdata[a].RewardItemLevel[r] > 0)
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s +%d x%d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardItemLevel[r], this->ewdata[a].RewardCount[r]);
}
else
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s x %d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardCount[r]);
}

// ObjectItem* item_data = (ObjectItem*)&item__;

if (pCheckMouseOver((int)(StartX + 20), (int)(CountRewardY + 5), 100, 7))
{
NewModelRender3D(StartX + 155, ContentX + 40, barWidth, barHeight, GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]), this->ewdata[a].RewardItemLevel[r], 1, 0, 0);

//Tooltip imcompleto
/* JCCoord B;

B.X = 196;
B.Y = (int)130;

sub_7E3E30(*(DWORD*)(GetInstance() + 308), B, (int)item_data, 0, 0, 0);

pSetBlend(false);*/
}
}
else if (this->ewdata[a].RewardType[r] == ewBonus)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "WCoin:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewBuff)
{
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Buff:");

switch (this->ewdata[a].RewardItemType[r])
{
case 1:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Experience: + 15%%");
break;
case 2:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Dmg: +10%%/Wizard Dmg: +10%%");
break;
case 3:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Defence: +10%%");
break;
case 4:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Exel Dmg Rate: +5%%/Ctcal Dmg Rate: +5%%");
break;
case 5:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Zen Drop: +50%%");
break;
case 6:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Double Damage: +5%%");
break;
}
}

CountRewardY += 21;
}
}
// ------------------------------------
// -> Finish
// ------------------------------------
bool Finish = 0;

if (this->ewdata[a].Start)
{
Finish = this->ewdata[a].b_done;
}
else
{
Finish = this->ewdata[a].b_accept;
}

//------
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_FINISH))
{
if (gInterface.Data[OBJECT_WIN_QUEST_FINISH].OnClick)
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 28);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}

if (this->ewdata[a].Start)
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Done");

}
else
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Accept");

}
//------
if (!Finish)
{
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
}
else
{
// ----
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = true;
// ----
}

pSetBlend(false);
}

void WinQuestSystem::DrawMiniInfo()
{

try
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}

/* if (gProtect.m_MainInfo.MiniMapType == 1)
{
if (MiniMap == 1)
{
return;
}
}
*/
int qCount = 0;
int mCount = 0;
bool DrInfo = false;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
qCount += 15;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
mCount += 10;
DrInfo = true;
}
}
}
}

if (DrInfo == false)
{

return;
}

float iX = 530; //posicion MiniInfoQuest
float iY = 320; //posicion MiniInfoQuest
float Wind = 100; //posicion MiniInfoQuest
float Hig = qCount + mCount;

float StartiY = 420; //posicion MiniInfoQuest

iY = StartiY - Hig;

pSetBlend(true);

pDrawColorButton(0x7980, iX, iY, Wind, Hig, NULL, NULL, Color4f(0, 0, 0, 100));

iY += 3;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
gInterface.DrawText603(eOrange, iX + 2, iY, 200, 2, "%s", this->ewdata[a].NameQuest);

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
iY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}

iY += 15;
}
}

pSetBlend(false);
}
catch (...)
{
}
}
//// ----------------------------------------------------------------------------------------------
void WinQuestSystem::DrawOpenWQ()
{
if (gInterface.Data[OPEN_QUEST].OnShow)
{
gInterface.Data[OPEN_QUEST].OnShow = false;
}

if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}


//   int Addradd = pWinWidth / pWinHeightReal / 2 - 320;

  gInterface.Data[OPEN_QUEST].OnShow = true;

  gInterface.DrawGUI(OPEN_QUEST, 610, 200);

  if (gInterface.IsWorkZone(OPEN_QUEST))
  {
  pSetCursorFocus = true; // Bloqueo de Cursor Al Señalar :)
  gInterface.DrawToolTip(520, 210, "WINDOWS QUEST");
  // ----
  if (gInterface.Data[OPEN_QUEST].OnClick)
  {
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(40, 20, 3, 130));
  return;
  }
  // ----
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(255, 204, 20, 200));
  }

}

//
int WinQuestSystem::Button(DWORD Event)
{
if (gInterface.ButtonEx(Event, OPEN_QUEST, false))
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return 0;
}

PMSG_CHARACTER_LIST_SEND pMsg;
pMsg.header.set(0xDE, 0x21, sizeof(pMsg));
DataSend((BYTE*)& pMsg, pMsg.header.size);
return true;
}

if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return false;
}

if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_FINISH, true))
{
this->CG_AcñeptQuest();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_CLOSE, false))
{
pSetCursorFocus = false;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].Close();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB1, false))
{
this->OpenTab = 0;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB2, false))
{
this->OpenTab = 1;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB3, false))
{
this->OpenTab = 2;

return true;
}

return false;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_RecvMain(GC_MainPacket* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);
this->ewdata[a].b_accept = aRecv->xQuest[a].b_accept;
this->ewdata[a].b_done = aRecv->xQuest[a].b_done;
this->ewdata[a].b_End = aRecv->xQuest[a].b_End;
// -> user send
this->ewdata[a].Start = aRecv->xQuest[a].Start;
this->ewdata[a].Number = aRecv->xQuest[a].Number;
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].Count[m];
}
// -> need send
this->ewdata[a].b_Level = aRecv->xQuest[a].b_Level;
this->ewdata[a].b_Reset = aRecv->xQuest[a].b_Reset;
this->ewdata[a].b_Grand = aRecv->xQuest[a].b_Grand;

this->ewdata[a].NeedLevel = aRecv->xQuest[a].NeedLevel;
this->ewdata[a].NeedReset = aRecv->xQuest[a].NeedReset;
this->ewdata[a].NeedGrand = aRecv->xQuest[a].NeedGrand;
// -> mission send
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].b_Mission[m] = aRecv->xQuest[a].b_Mission[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
this->ewdata[a].MissionProcent[m] = aRecv->xQuest[a].MissionProcent[m];
}
for (int r = 0; r < EW_MAX_REWARD; r++)
{

this->ewdata[a].RewardType[r] = aRecv->xQuest[a].RewardType[r];
this->ewdata[a].RewardCount[r] = aRecv->xQuest[a].RewardCount[r];
this->ewdata[a].RewardItemType[r] = aRecv->xQuest[a].RewardItemType[r];
this->ewdata[a].RewardItemIndex[r] = aRecv->xQuest[a].RewardItemIndex[r];
this->ewdata[a].RewardItemLevel[r] = aRecv->xQuest[a].RewardItemLevel[r];
}
}

if (aRecv->isOpenWindow)
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
this->SwitchStatsWindowState();
pSetCursorFocus = true;
}
}

}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::CG_AcñeptQuest()
{
CG_Accept_Done pReq = { 0 };
pReq.h.set(0xDE, 0x0D, sizeof(pReq));
pReq.Result = this->OpenTab;
DataSend((LPBYTE)&pReq, pReq.h.size);
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfo* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);

this->ewdata[a].Start = aRecv->xQuest[a].Start;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].WQuestCount[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
}
}
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfox* aRecv)
{
int a = aRecv->a;
int m = aRecv->m;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (m < 0 && m >= EW_MAX_MISSION)
{
return;
}

this->ewdata[a].Count[m]++;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_Start(GC_WinStart* aRecv)
{
int a = aRecv->Act;
int s = aRecv->Start;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (s == true)
{
this->ewdata[a].Start = true;
}
}
//// ----------------------------------------------------------------------------------------------
#endif

For example WindowsQuest.cpp
Where do I need to add and edit so it doesn't move when clicking on the table


debe crear un pSetCursorFocus = true;
pSetCursorFocus = false; exclusivo para ese evento lo mas seguro en central.cpp
esperemos que alguien coloque guia de como hacer

That's right . I hope someone can give detailed instructions on this issue.

 Question2 Question2 Question2
This is not too difficult, you need to rearrange the custom menus in a reasonable way  fiesta

esperemos a un heroe sin capa que ayude al pueblo


Offline FOX #63 Posteado: December 22, 2023, 09:48:52 AM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 137
  • Gracias recibida: 4990
  • pe
que codigo tendria q poner para que el pj no camine cuando abro el panel de opciones por que cuando abro el panel y doy clic en una opcion el pj camina no deberia pero camina creo que falta una definición o algo haber si me apoyan :v
solo te falta agregar el setcursor a esa parte del code nada mas
Can you give more details about which part? I'm bad at scr code
shared src !!
https://mega.nz/file/HN5BGYII#44njM_x0bOTl_tX5c0DOhoxxprUVMpSj5cTvcWtozxQ
mejor dime que parte del codigo no que me pases todo una source !! asi te ayudo bro !!

Code: [Select]
#include "stdafx.h"
#if WINDOWS_QUEST
#include "WindowsQuest.h"
#include "Interface.h"
#include "Protocol.h"
#include "Item.h"
#include "Offset.h"
#include "Item.h"
#include "Defines.h"
#include "CustomMap.h"
#include "Common.h"
#include "Protect.h"
#include "Central.h"

// ----------------------------------------------------------------------------------------------

WinQuestSystem gWinQuestSystem;
// ----------------------------------------------------------------------------------------------

WinQuestSystem::WinQuestSystem()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

WinQuestSystem::~WinQuestSystem()
{
// --
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Init()
{
// --
this->DrawMiniInfoFlag = false;
ZeroMemory(&this->ewdata, sizeof(this->ewdata));
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Load()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::ImageLoad()
{
pLoadImage("Custom\\Interface\\Party_info_block.tga", ex_INFO_2, 0x2601, 0x2900, 1, 0);
pLoadImage("Custom\\Interface\\newui_cha_textbox03.tga", ex_TEXT_BOX3, 0x2601, 0x2900, 1, 0);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::BindImages()
{
int eWHig;

eWHig = 423;
gInterface.BindObject(OBJECT_WIN_QUEST_FINISH, 0x7A62, 90, 15.5, -1, -1); //Boton Accept Quest
gInterface.BindObject(OBJECT_WIN_QUEST_MAIN, 0x7A5A, 222, eWHig, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TITLE, 0x7A63, 230, 67, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FRAME, 0x7A58, 230, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FOOTER, 0x7A59, 230, 50, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_DIV, 0x7A62, 223, 21, -1, -1); //Dividor lineas
gInterface.BindObject(OBJECT_WIN_QUEST_CLOSE, 51522, 16, 16, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB, 51522, 166, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB1, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB2, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB3, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT1, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT2, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT3, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG, 0x7AA3, 170, 21, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG2, 0x7AA1, 170, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_LINE1, 0x7B67, 154, 3, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_POINT1, 0x7B68, 10, 10, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFO, ex_INFO_2, 22, 19, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG3, ex_TEXT_BOX3, 170, 21, -1, -1);
gInterface.BindObject(OPEN_QUEST, 0x7904, 25, 40, -1, -1);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Draw()
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return;
}

pSetCursorFocus = true;

pSetBlend(true);

int a = this->OpenTab;

// int Addradd = pWinWidth / pWinHeightReal / 2 - 320;
DWORD ItemNameColor = eWhite;
float MainWidth = 210.0;
float MainHeight = 400.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);

float ContentX = StartX;
float ContentY = StartY;

float TabX = StartX + 30;
float TabY = ContentY + 30 + 5;
float InfoX = 0;
float InfoY = 0;
int InfoA = 0;
int InfoM = 0;
int bColor = 0;
//--
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxX = StartX + MainWidth;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxY = StartY + MainHeight;

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

gInterface.DrawFormat(eBlue250, (int)StartX, (int)StartY + 10, 210, 3, "Windows Quest");



gInterface.DrawGUI(OBJECT_WIN_QUEST_CLOSE, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -5, ContentY+5);
gCentral.DrawDropBox(StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width-5, ContentY+5, 16, 16, 0, 0);
gInterface.DrawText603(eRed, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -26, ContentY + 8, 60, 3, "X");
// ----
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_CLOSE))
{
DWORD Color = eGray100;
// ----
if (gInterface.Data[OBJECT_WIN_QUEST_CLOSE].OnClick)
{
Color = eGray150;
}
// ----
gInterface.DrawColoredGUI(OBJECT_WIN_QUEST_CLOSE, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y, Color);
gInterface.DrawToolTip(gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X + 5, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y + 25, "Close");
}
// ------------------------------------
if (this->OpenTab == 0)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}
else if (this->OpenTab == 1)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}

if (this->ewdata[0].b_End)
{
gInterface.DrawText603(eRed, TabX+2, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX+2, TabY + 3, 60, 3, "first Quest");


}
if (this->ewdata[1].b_End)
{
gInterface.DrawText603(eRed, TabX + 80, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX + 82, TabY + 3, 60, 3, "second Quest");
}

// ------------------------------------
// -> End Quest
// ------------------------------------
if (this->ewdata[a].b_End)
{
float EndY = ContentY + 53;
gInterface.DrawGUI(OBJECT_WIN_QUEST_INFOBG3, StartX + 30, EndY + 12);
gInterface.DrawText603(eAncient, ContentX + 30, EndY + 17, 170, 3, "End");
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
return;
}
// ------------------------------------
// -> Content Need
// ------------------------------------
float NeededY = ContentY + 53;

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 20, 180, 3, "%s", this->ewdata[a].NameQuest);

gCentral.DrawDropBox(StartX + 5, TabY + 37, 200, 0.5, 0, 0); // Divisor 1

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 36, 170, 3, "Requisitos");

float CountNeededY = NeededY + 30;

gInterface.DrawText603(eWhite, StartX + 30, CountNeededY + 6, 100, 1, "Level:");

if (this->ewdata[a].b_Level)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 60, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedLevel);
gInterface.DrawText603(eWhite, StartX + 90, CountNeededY + 6, 100, 1, "Reset:");

if (this->ewdata[a].b_Reset)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 120, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedReset);
gInterface.DrawText603(eWhite, StartX + 150, CountNeededY + 6, 100, 1, "GReset:");

if (this->ewdata[a].b_Grand)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 185, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedGrand);

CountNeededY += 21;
// ------------------------------------
// -> Content Mission
// ------------------------------------
float MissionX = StartX -10;
float MissionY = ContentY + 53 + 40;

MissionY += 10;

float CountMissionY = MissionY + 20;

//----------------------------------------------------

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
if (this->ewdata[a].b_Mission[m])
{
bColor = eExcellent;
}
else
{
bColor = eWhite;
}

CountMissionY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}
// ------------------------------------
// -> Content Reward
// ------------------------------------
float RewardY = ContentY + 53 + 100 + 42 + 15;

gCentral.DrawDropBox(StartX +5, RewardY, 200, 0.5, 0, 0);

gInterface.DrawText603(eAncient, ContentX + 20, RewardY + 6, 170, 3, "Reward");

float CountRewardY = RewardY + 34 - 4;

for (int r = 0; r < EW_MAX_REWARD; r++)
{
if (this->ewdata[a].RewardType[r] == ewZen ||
this->ewdata[a].RewardType[r] == ewFreePoint ||
this->ewdata[a].RewardType[r] == ewItem ||
this->ewdata[a].RewardType[r] == ewBonus ||
this->ewdata[a].RewardType[r] == ewBuff)
{
if (this->ewdata[a].RewardType[r] == ewZen)
{
char RewardMSG[64] = { 0 };
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Zen:");
pGetMoneyFormat((double)(int)this->ewdata[a].RewardCount[r], RewardMSG, 0);
gInterface.DrawText603(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", RewardMSG);
}
else if (this->ewdata[a].RewardType[r] == ewFreePoint)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Lvl Point:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewItem)
{

ItemBmdStruct* ItemInfo = pGetItemBmdStruct(ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]));


const int WidthValue = 24;
const int HeightValue = 26;
float barWidth = WidthValue * ItemInfo->ItemWidth;
float barHeight = HeightValue * ItemInfo->ItemHeight;

if (this->ewdata[a].RewardItemLevel[r] > 0)
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s +%d x%d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardItemLevel[r], this->ewdata[a].RewardCount[r]);
}
else
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s x %d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardCount[r]);
}

// ObjectItem* item_data = (ObjectItem*)&item__;

if (pCheckMouseOver((int)(StartX + 20), (int)(CountRewardY + 5), 100, 7))
{
NewModelRender3D(StartX + 155, ContentX + 40, barWidth, barHeight, GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]), this->ewdata[a].RewardItemLevel[r], 1, 0, 0);

//Tooltip imcompleto
/* JCCoord B;

B.X = 196;
B.Y = (int)130;

sub_7E3E30(*(DWORD*)(GetInstance() + 308), B, (int)item_data, 0, 0, 0);

pSetBlend(false);*/
}
}
else if (this->ewdata[a].RewardType[r] == ewBonus)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "WCoin:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewBuff)
{
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Buff:");

switch (this->ewdata[a].RewardItemType[r])
{
case 1:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Experience: + 15%%");
break;
case 2:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Dmg: +10%%/Wizard Dmg: +10%%");
break;
case 3:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Defence: +10%%");
break;
case 4:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Exel Dmg Rate: +5%%/Ctcal Dmg Rate: +5%%");
break;
case 5:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Zen Drop: +50%%");
break;
case 6:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Double Damage: +5%%");
break;
}
}

CountRewardY += 21;
}
}
// ------------------------------------
// -> Finish
// ------------------------------------
bool Finish = 0;

if (this->ewdata[a].Start)
{
Finish = this->ewdata[a].b_done;
}
else
{
Finish = this->ewdata[a].b_accept;
}

//------
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_FINISH))
{
if (gInterface.Data[OBJECT_WIN_QUEST_FINISH].OnClick)
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 28);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}

if (this->ewdata[a].Start)
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Done");

}
else
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Accept");

}
//------
if (!Finish)
{
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
}
else
{
// ----
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = true;
// ----
}

pSetBlend(false);
}

void WinQuestSystem::DrawMiniInfo()
{

try
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}

/* if (gProtect.m_MainInfo.MiniMapType == 1)
{
if (MiniMap == 1)
{
return;
}
}
*/
int qCount = 0;
int mCount = 0;
bool DrInfo = false;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
qCount += 15;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
mCount += 10;
DrInfo = true;
}
}
}
}

if (DrInfo == false)
{

return;
}

float iX = 530; //posicion MiniInfoQuest
float iY = 320; //posicion MiniInfoQuest
float Wind = 100; //posicion MiniInfoQuest
float Hig = qCount + mCount;

float StartiY = 420; //posicion MiniInfoQuest

iY = StartiY - Hig;

pSetBlend(true);

pDrawColorButton(0x7980, iX, iY, Wind, Hig, NULL, NULL, Color4f(0, 0, 0, 100));

iY += 3;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
gInterface.DrawText603(eOrange, iX + 2, iY, 200, 2, "%s", this->ewdata[a].NameQuest);

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
iY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}

iY += 15;
}
}

pSetBlend(false);
}
catch (...)
{
}
}
//// ----------------------------------------------------------------------------------------------
void WinQuestSystem::DrawOpenWQ()
{
if (gInterface.Data[OPEN_QUEST].OnShow)
{
gInterface.Data[OPEN_QUEST].OnShow = false;
}

if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}


//   int Addradd = pWinWidth / pWinHeightReal / 2 - 320;

  gInterface.Data[OPEN_QUEST].OnShow = true;

  gInterface.DrawGUI(OPEN_QUEST, 610, 200);

  if (gInterface.IsWorkZone(OPEN_QUEST))
  {
  pSetCursorFocus = true; // Bloqueo de Cursor Al Señalar :)
  gInterface.DrawToolTip(520, 210, "WINDOWS QUEST");
  // ----
  if (gInterface.Data[OPEN_QUEST].OnClick)
  {
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(40, 20, 3, 130));
  return;
  }
  // ----
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(255, 204, 20, 200));
  }

}

//
int WinQuestSystem::Button(DWORD Event)
{
if (gInterface.ButtonEx(Event, OPEN_QUEST, false))
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return 0;
}

PMSG_CHARACTER_LIST_SEND pMsg;
pMsg.header.set(0xDE, 0x21, sizeof(pMsg));
DataSend((BYTE*)& pMsg, pMsg.header.size);
return true;
}

if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return false;
}

if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_FINISH, true))
{
this->CG_AcñeptQuest();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_CLOSE, false))
{
pSetCursorFocus = false;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].Close();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB1, false))
{
this->OpenTab = 0;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB2, false))
{
this->OpenTab = 1;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB3, false))
{
this->OpenTab = 2;

return true;
}

return false;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_RecvMain(GC_MainPacket* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);
this->ewdata[a].b_accept = aRecv->xQuest[a].b_accept;
this->ewdata[a].b_done = aRecv->xQuest[a].b_done;
this->ewdata[a].b_End = aRecv->xQuest[a].b_End;
// -> user send
this->ewdata[a].Start = aRecv->xQuest[a].Start;
this->ewdata[a].Number = aRecv->xQuest[a].Number;
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].Count[m];
}
// -> need send
this->ewdata[a].b_Level = aRecv->xQuest[a].b_Level;
this->ewdata[a].b_Reset = aRecv->xQuest[a].b_Reset;
this->ewdata[a].b_Grand = aRecv->xQuest[a].b_Grand;

this->ewdata[a].NeedLevel = aRecv->xQuest[a].NeedLevel;
this->ewdata[a].NeedReset = aRecv->xQuest[a].NeedReset;
this->ewdata[a].NeedGrand = aRecv->xQuest[a].NeedGrand;
// -> mission send
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].b_Mission[m] = aRecv->xQuest[a].b_Mission[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
this->ewdata[a].MissionProcent[m] = aRecv->xQuest[a].MissionProcent[m];
}
for (int r = 0; r < EW_MAX_REWARD; r++)
{

this->ewdata[a].RewardType[r] = aRecv->xQuest[a].RewardType[r];
this->ewdata[a].RewardCount[r] = aRecv->xQuest[a].RewardCount[r];
this->ewdata[a].RewardItemType[r] = aRecv->xQuest[a].RewardItemType[r];
this->ewdata[a].RewardItemIndex[r] = aRecv->xQuest[a].RewardItemIndex[r];
this->ewdata[a].RewardItemLevel[r] = aRecv->xQuest[a].RewardItemLevel[r];
}
}

if (aRecv->isOpenWindow)
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
this->SwitchStatsWindowState();
pSetCursorFocus = true;
}
}

}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::CG_AcñeptQuest()
{
CG_Accept_Done pReq = { 0 };
pReq.h.set(0xDE, 0x0D, sizeof(pReq));
pReq.Result = this->OpenTab;
DataSend((LPBYTE)&pReq, pReq.h.size);
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfo* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);

this->ewdata[a].Start = aRecv->xQuest[a].Start;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].WQuestCount[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
}
}
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfox* aRecv)
{
int a = aRecv->a;
int m = aRecv->m;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (m < 0 && m >= EW_MAX_MISSION)
{
return;
}

this->ewdata[a].Count[m]++;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_Start(GC_WinStart* aRecv)
{
int a = aRecv->Act;
int s = aRecv->Start;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (s == true)
{
this->ewdata[a].Start = true;
}
}
//// ----------------------------------------------------------------------------------------------
#endif

For example WindowsQuest.cpp
Where do I need to add and edit so it doesn't move when clicking on the table


debe crear un pSetCursorFocus = true;
pSetCursorFocus = false; exclusivo para ese evento lo mas seguro en central.cpp
esperemos que alguien coloque guia de como hacer

That's right . I hope someone can give detailed instructions on this issue.

 Question2 Question2 Question2
This is not too difficult, you need to rearrange the custom menus in a reasonable way  fiesta

esperemos a un heroe sin capa que ayude al pueblo

es algo simple xD!

Gracias:


Offline GameNet #64 Posteado: December 22, 2023, 10:12:02 AM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 127
  • Gracias recibida: 20
  • pe
que codigo tendria q poner para que el pj no camine cuando abro el panel de opciones por que cuando abro el panel y doy clic en una opcion el pj camina no deberia pero camina creo que falta una definición o algo haber si me apoyan :v
solo te falta agregar el setcursor a esa parte del code nada mas
Can you give more details about which part? I'm bad at scr code
shared src !!
https://mega.nz/file/HN5BGYII#44njM_x0bOTl_tX5c0DOhoxxprUVMpSj5cTvcWtozxQ
mejor dime que parte del codigo no que me pases todo una source !! asi te ayudo bro !!

Code: [Select]
#include "stdafx.h"
#if WINDOWS_QUEST
#include "WindowsQuest.h"
#include "Interface.h"
#include "Protocol.h"
#include "Item.h"
#include "Offset.h"
#include "Item.h"
#include "Defines.h"
#include "CustomMap.h"
#include "Common.h"
#include "Protect.h"
#include "Central.h"

// ----------------------------------------------------------------------------------------------

WinQuestSystem gWinQuestSystem;
// ----------------------------------------------------------------------------------------------

WinQuestSystem::WinQuestSystem()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

WinQuestSystem::~WinQuestSystem()
{
// --
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Init()
{
// --
this->DrawMiniInfoFlag = false;
ZeroMemory(&this->ewdata, sizeof(this->ewdata));
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Load()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::ImageLoad()
{
pLoadImage("Custom\\Interface\\Party_info_block.tga", ex_INFO_2, 0x2601, 0x2900, 1, 0);
pLoadImage("Custom\\Interface\\newui_cha_textbox03.tga", ex_TEXT_BOX3, 0x2601, 0x2900, 1, 0);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::BindImages()
{
int eWHig;

eWHig = 423;
gInterface.BindObject(OBJECT_WIN_QUEST_FINISH, 0x7A62, 90, 15.5, -1, -1); //Boton Accept Quest
gInterface.BindObject(OBJECT_WIN_QUEST_MAIN, 0x7A5A, 222, eWHig, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TITLE, 0x7A63, 230, 67, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FRAME, 0x7A58, 230, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FOOTER, 0x7A59, 230, 50, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_DIV, 0x7A62, 223, 21, -1, -1); //Dividor lineas
gInterface.BindObject(OBJECT_WIN_QUEST_CLOSE, 51522, 16, 16, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB, 51522, 166, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB1, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB2, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB3, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT1, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT2, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT3, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG, 0x7AA3, 170, 21, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG2, 0x7AA1, 170, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_LINE1, 0x7B67, 154, 3, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_POINT1, 0x7B68, 10, 10, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFO, ex_INFO_2, 22, 19, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG3, ex_TEXT_BOX3, 170, 21, -1, -1);
gInterface.BindObject(OPEN_QUEST, 0x7904, 25, 40, -1, -1);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Draw()
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return;
}

pSetCursorFocus = true;

pSetBlend(true);

int a = this->OpenTab;

// int Addradd = pWinWidth / pWinHeightReal / 2 - 320;
DWORD ItemNameColor = eWhite;
float MainWidth = 210.0;
float MainHeight = 400.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);

float ContentX = StartX;
float ContentY = StartY;

float TabX = StartX + 30;
float TabY = ContentY + 30 + 5;
float InfoX = 0;
float InfoY = 0;
int InfoA = 0;
int InfoM = 0;
int bColor = 0;
//--
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxX = StartX + MainWidth;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxY = StartY + MainHeight;

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

gInterface.DrawFormat(eBlue250, (int)StartX, (int)StartY + 10, 210, 3, "Windows Quest");



gInterface.DrawGUI(OBJECT_WIN_QUEST_CLOSE, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -5, ContentY+5);
gCentral.DrawDropBox(StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width-5, ContentY+5, 16, 16, 0, 0);
gInterface.DrawText603(eRed, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -26, ContentY + 8, 60, 3, "X");
// ----
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_CLOSE))
{
DWORD Color = eGray100;
// ----
if (gInterface.Data[OBJECT_WIN_QUEST_CLOSE].OnClick)
{
Color = eGray150;
}
// ----
gInterface.DrawColoredGUI(OBJECT_WIN_QUEST_CLOSE, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y, Color);
gInterface.DrawToolTip(gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X + 5, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y + 25, "Close");
}
// ------------------------------------
if (this->OpenTab == 0)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}
else if (this->OpenTab == 1)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}

if (this->ewdata[0].b_End)
{
gInterface.DrawText603(eRed, TabX+2, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX+2, TabY + 3, 60, 3, "first Quest");


}
if (this->ewdata[1].b_End)
{
gInterface.DrawText603(eRed, TabX + 80, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX + 82, TabY + 3, 60, 3, "second Quest");
}

// ------------------------------------
// -> End Quest
// ------------------------------------
if (this->ewdata[a].b_End)
{
float EndY = ContentY + 53;
gInterface.DrawGUI(OBJECT_WIN_QUEST_INFOBG3, StartX + 30, EndY + 12);
gInterface.DrawText603(eAncient, ContentX + 30, EndY + 17, 170, 3, "End");
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
return;
}
// ------------------------------------
// -> Content Need
// ------------------------------------
float NeededY = ContentY + 53;

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 20, 180, 3, "%s", this->ewdata[a].NameQuest);

gCentral.DrawDropBox(StartX + 5, TabY + 37, 200, 0.5, 0, 0); // Divisor 1

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 36, 170, 3, "Requisitos");

float CountNeededY = NeededY + 30;

gInterface.DrawText603(eWhite, StartX + 30, CountNeededY + 6, 100, 1, "Level:");

if (this->ewdata[a].b_Level)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 60, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedLevel);
gInterface.DrawText603(eWhite, StartX + 90, CountNeededY + 6, 100, 1, "Reset:");

if (this->ewdata[a].b_Reset)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 120, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedReset);
gInterface.DrawText603(eWhite, StartX + 150, CountNeededY + 6, 100, 1, "GReset:");

if (this->ewdata[a].b_Grand)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 185, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedGrand);

CountNeededY += 21;
// ------------------------------------
// -> Content Mission
// ------------------------------------
float MissionX = StartX -10;
float MissionY = ContentY + 53 + 40;

MissionY += 10;

float CountMissionY = MissionY + 20;

//----------------------------------------------------

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
if (this->ewdata[a].b_Mission[m])
{
bColor = eExcellent;
}
else
{
bColor = eWhite;
}

CountMissionY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}
// ------------------------------------
// -> Content Reward
// ------------------------------------
float RewardY = ContentY + 53 + 100 + 42 + 15;

gCentral.DrawDropBox(StartX +5, RewardY, 200, 0.5, 0, 0);

gInterface.DrawText603(eAncient, ContentX + 20, RewardY + 6, 170, 3, "Reward");

float CountRewardY = RewardY + 34 - 4;

for (int r = 0; r < EW_MAX_REWARD; r++)
{
if (this->ewdata[a].RewardType[r] == ewZen ||
this->ewdata[a].RewardType[r] == ewFreePoint ||
this->ewdata[a].RewardType[r] == ewItem ||
this->ewdata[a].RewardType[r] == ewBonus ||
this->ewdata[a].RewardType[r] == ewBuff)
{
if (this->ewdata[a].RewardType[r] == ewZen)
{
char RewardMSG[64] = { 0 };
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Zen:");
pGetMoneyFormat((double)(int)this->ewdata[a].RewardCount[r], RewardMSG, 0);
gInterface.DrawText603(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", RewardMSG);
}
else if (this->ewdata[a].RewardType[r] == ewFreePoint)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Lvl Point:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewItem)
{

ItemBmdStruct* ItemInfo = pGetItemBmdStruct(ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]));


const int WidthValue = 24;
const int HeightValue = 26;
float barWidth = WidthValue * ItemInfo->ItemWidth;
float barHeight = HeightValue * ItemInfo->ItemHeight;

if (this->ewdata[a].RewardItemLevel[r] > 0)
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s +%d x%d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardItemLevel[r], this->ewdata[a].RewardCount[r]);
}
else
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s x %d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardCount[r]);
}

// ObjectItem* item_data = (ObjectItem*)&item__;

if (pCheckMouseOver((int)(StartX + 20), (int)(CountRewardY + 5), 100, 7))
{
NewModelRender3D(StartX + 155, ContentX + 40, barWidth, barHeight, GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]), this->ewdata[a].RewardItemLevel[r], 1, 0, 0);

//Tooltip imcompleto
/* JCCoord B;

B.X = 196;
B.Y = (int)130;

sub_7E3E30(*(DWORD*)(GetInstance() + 308), B, (int)item_data, 0, 0, 0);

pSetBlend(false);*/
}
}
else if (this->ewdata[a].RewardType[r] == ewBonus)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "WCoin:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewBuff)
{
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Buff:");

switch (this->ewdata[a].RewardItemType[r])
{
case 1:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Experience: + 15%%");
break;
case 2:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Dmg: +10%%/Wizard Dmg: +10%%");
break;
case 3:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Defence: +10%%");
break;
case 4:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Exel Dmg Rate: +5%%/Ctcal Dmg Rate: +5%%");
break;
case 5:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Zen Drop: +50%%");
break;
case 6:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Double Damage: +5%%");
break;
}
}

CountRewardY += 21;
}
}
// ------------------------------------
// -> Finish
// ------------------------------------
bool Finish = 0;

if (this->ewdata[a].Start)
{
Finish = this->ewdata[a].b_done;
}
else
{
Finish = this->ewdata[a].b_accept;
}

//------
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_FINISH))
{
if (gInterface.Data[OBJECT_WIN_QUEST_FINISH].OnClick)
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 28);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}

if (this->ewdata[a].Start)
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Done");

}
else
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Accept");

}
//------
if (!Finish)
{
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
}
else
{
// ----
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = true;
// ----
}

pSetBlend(false);
}

void WinQuestSystem::DrawMiniInfo()
{

try
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}

/* if (gProtect.m_MainInfo.MiniMapType == 1)
{
if (MiniMap == 1)
{
return;
}
}
*/
int qCount = 0;
int mCount = 0;
bool DrInfo = false;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
qCount += 15;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
mCount += 10;
DrInfo = true;
}
}
}
}

if (DrInfo == false)
{

return;
}

float iX = 530; //posicion MiniInfoQuest
float iY = 320; //posicion MiniInfoQuest
float Wind = 100; //posicion MiniInfoQuest
float Hig = qCount + mCount;

float StartiY = 420; //posicion MiniInfoQuest

iY = StartiY - Hig;

pSetBlend(true);

pDrawColorButton(0x7980, iX, iY, Wind, Hig, NULL, NULL, Color4f(0, 0, 0, 100));

iY += 3;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
gInterface.DrawText603(eOrange, iX + 2, iY, 200, 2, "%s", this->ewdata[a].NameQuest);

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
iY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}

iY += 15;
}
}

pSetBlend(false);
}
catch (...)
{
}
}
//// ----------------------------------------------------------------------------------------------
void WinQuestSystem::DrawOpenWQ()
{
if (gInterface.Data[OPEN_QUEST].OnShow)
{
gInterface.Data[OPEN_QUEST].OnShow = false;
}

if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}


//   int Addradd = pWinWidth / pWinHeightReal / 2 - 320;

  gInterface.Data[OPEN_QUEST].OnShow = true;

  gInterface.DrawGUI(OPEN_QUEST, 610, 200);

  if (gInterface.IsWorkZone(OPEN_QUEST))
  {
  pSetCursorFocus = true; // Bloqueo de Cursor Al Señalar :)
  gInterface.DrawToolTip(520, 210, "WINDOWS QUEST");
  // ----
  if (gInterface.Data[OPEN_QUEST].OnClick)
  {
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(40, 20, 3, 130));
  return;
  }
  // ----
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(255, 204, 20, 200));
  }

}

//
int WinQuestSystem::Button(DWORD Event)
{
if (gInterface.ButtonEx(Event, OPEN_QUEST, false))
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return 0;
}

PMSG_CHARACTER_LIST_SEND pMsg;
pMsg.header.set(0xDE, 0x21, sizeof(pMsg));
DataSend((BYTE*)& pMsg, pMsg.header.size);
return true;
}

if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return false;
}

if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_FINISH, true))
{
this->CG_AcñeptQuest();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_CLOSE, false))
{
pSetCursorFocus = false;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].Close();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB1, false))
{
this->OpenTab = 0;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB2, false))
{
this->OpenTab = 1;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB3, false))
{
this->OpenTab = 2;

return true;
}

return false;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_RecvMain(GC_MainPacket* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);
this->ewdata[a].b_accept = aRecv->xQuest[a].b_accept;
this->ewdata[a].b_done = aRecv->xQuest[a].b_done;
this->ewdata[a].b_End = aRecv->xQuest[a].b_End;
// -> user send
this->ewdata[a].Start = aRecv->xQuest[a].Start;
this->ewdata[a].Number = aRecv->xQuest[a].Number;
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].Count[m];
}
// -> need send
this->ewdata[a].b_Level = aRecv->xQuest[a].b_Level;
this->ewdata[a].b_Reset = aRecv->xQuest[a].b_Reset;
this->ewdata[a].b_Grand = aRecv->xQuest[a].b_Grand;

this->ewdata[a].NeedLevel = aRecv->xQuest[a].NeedLevel;
this->ewdata[a].NeedReset = aRecv->xQuest[a].NeedReset;
this->ewdata[a].NeedGrand = aRecv->xQuest[a].NeedGrand;
// -> mission send
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].b_Mission[m] = aRecv->xQuest[a].b_Mission[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
this->ewdata[a].MissionProcent[m] = aRecv->xQuest[a].MissionProcent[m];
}
for (int r = 0; r < EW_MAX_REWARD; r++)
{

this->ewdata[a].RewardType[r] = aRecv->xQuest[a].RewardType[r];
this->ewdata[a].RewardCount[r] = aRecv->xQuest[a].RewardCount[r];
this->ewdata[a].RewardItemType[r] = aRecv->xQuest[a].RewardItemType[r];
this->ewdata[a].RewardItemIndex[r] = aRecv->xQuest[a].RewardItemIndex[r];
this->ewdata[a].RewardItemLevel[r] = aRecv->xQuest[a].RewardItemLevel[r];
}
}

if (aRecv->isOpenWindow)
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
this->SwitchStatsWindowState();
pSetCursorFocus = true;
}
}

}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::CG_AcñeptQuest()
{
CG_Accept_Done pReq = { 0 };
pReq.h.set(0xDE, 0x0D, sizeof(pReq));
pReq.Result = this->OpenTab;
DataSend((LPBYTE)&pReq, pReq.h.size);
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfo* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);

this->ewdata[a].Start = aRecv->xQuest[a].Start;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].WQuestCount[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
}
}
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfox* aRecv)
{
int a = aRecv->a;
int m = aRecv->m;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (m < 0 && m >= EW_MAX_MISSION)
{
return;
}

this->ewdata[a].Count[m]++;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_Start(GC_WinStart* aRecv)
{
int a = aRecv->Act;
int s = aRecv->Start;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (s == true)
{
this->ewdata[a].Start = true;
}
}
//// ----------------------------------------------------------------------------------------------
#endif

For example WindowsQuest.cpp
Where do I need to add and edit so it doesn't move when clicking on the table


debe crear un pSetCursorFocus = true;
pSetCursorFocus = false; exclusivo para ese evento lo mas seguro en central.cpp
esperemos que alguien coloque guia de como hacer

That's right . I hope someone can give detailed instructions on this issue.

 Question2 Question2 Question2
This is not too difficult, you need to rearrange the custom menus in a reasonable way  fiesta

esperemos a un heroe sin capa que ayude al pueblo

es algo simple xD!
vamos heroe sin capa ayuda al puedo de israel :V  cheesyy2


Offline dakosmu #65 Posteado: December 22, 2023, 07:03:52 PM | Modificado: December 23, 2023, 02:27:24 AM by ZabiinoOo

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 786
  • Gracias recibida: 12211
  • ve
Dakosmu Colaborador

Offline Arazox #66 Posteado: December 29, 2023, 02:09:16 AM

  • +1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 550
  • Gracias recibida: 2840
  • ve
Tengo el problema con respecto a la casshop y el smititem, estos no descuenta los wcoinc de las cuentas al darle en comprar y uno puede comprar infinidades de veces, alguna solución a eso?


Offline bin9xhn2 #67 Posteado: December 30, 2023, 06:36:28 AM

  • 0 puntos por ventas
  • *
  • Rank: Sup. destacado
  • Posts: 117
  • Gracias recibida: 228
  • vn
Tengo el problema con respecto a la casshop y el smititem, estos no descuenta los wcoinc de las cuentas al darle en comprar y uno puede comprar infinidades de veces, alguna solución a eso?
If you choose the character again, the WC number will be updated


Offline Arazox #68 Posteado: December 30, 2023, 08:53:53 PM

  • +1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 550
  • Gracias recibida: 2840
  • ve
Tengo el problema con respecto a la casshop y el smititem, estos no descuenta los wcoinc de las cuentas al darle en comprar y uno puede comprar infinidades de veces, alguna solución a eso?
If you choose the character again, the WC number will be updated
no friend it doesn't update anything, it stays the same


Offline bin9xhn2 #69 Posteado: December 31, 2023, 04:07:10 AM

  • 0 puntos por ventas
  • *
  • Rank: Sup. destacado
  • Posts: 117
  • Gracias recibida: 228
  • vn
Tengo el problema con respecto a la casshop y el smititem, estos no descuenta los wcoinc de las cuentas al darle en comprar y uno puede comprar infinidades de veces, alguna solución a eso?
If you choose the character again, the WC number will be updated
no friend it doesn't update anything, it stays the same
So you got something wrong. I also bought it but re-selected the character and it automatically updated


Offline wellwisher22 #70 Posteado: January 02, 2024, 03:47:56 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 350
  • Gracias recibida: 3676
  • br
10:15:17 [QueryManager] State (42S01), Diagnostic: [Microsoft][ODBC SQL Server Driver][SQL Server]There is already an object named 'RageSystem' in the database.

Estou com esse problema.
Alguma Solução?


Offline wellwisher22 #71 Posteado: January 02, 2024, 03:48:28 PM | Modificado: January 08, 2024, 10:46:22 AM by wellwisher22

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 350
  • Gracias recibida: 3676
  • br
Alguma forma de colocar o PartySearch para abrir com alguma Letra?


Offline wellwisher22 #72 Posteado: January 09, 2024, 06:48:06 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 350
  • Gracias recibida: 3676
  • br
que codigo tendria q poner para que el pj no camine cuando abro el panel de opciones por que cuando abro el panel y doy clic en una opcion el pj camina no deberia pero camina creo que falta una definición o algo haber si me apoyan :v

Hay Muchas Maneras


Onde adiciona isso?


Offline wellwisher22 #73 Posteado: January 19, 2024, 05:03:33 PM | Modificado: January 20, 2024, 07:56:33 AM by wellwisher22

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 350
  • Gracias recibida: 3676
  • br
Npc ruud James não funciona? Quando Clico nele só fa abrir o inventário
OBS: Descobri que ele só funciona na interface Season 8, Alguém pode me dar uma luz pra fazer com que funcione para todas as interfaces?


Offline FOX #74 Posteado: January 20, 2024, 09:33:52 AM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 137
  • Gracias recibida: 4990
  • pe
Npc ruud James não funciona? Quando Clico nele só fa abrir o inventário
OBS: Descobri que ele só funciona na interface Season 8, Alguém pode me dar uma luz pra fazer com que funcione para todas as interfaces?

SOlo se adapto para s8


Offline wellwisher22 #75 Posteado: January 27, 2024, 06:01:06 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 350
  • Gracias recibida: 3676
  • br
que codigo tendria q poner para que el pj no camine cuando abro el panel de opciones por que cuando abro el panel y doy clic en una opcion el pj camina no deberia pero camina creo que falta una definición o algo haber si me apoyan :v
solo te falta agregar el setcursor a esa parte del code nada mas
Can you give more details about which part? I'm bad at scr code
shared src !!
https://mega.nz/file/HN5BGYII#44njM_x0bOTl_tX5c0DOhoxxprUVMpSj5cTvcWtozxQ
mejor dime que parte del codigo no que me pases todo una source !! asi te ayudo bro !!

Code: [Select]
#include "stdafx.h"
#if WINDOWS_QUEST
#include "WindowsQuest.h"
#include "Interface.h"
#include "Protocol.h"
#include "Item.h"
#include "Offset.h"
#include "Item.h"
#include "Defines.h"
#include "CustomMap.h"
#include "Common.h"
#include "Protect.h"
#include "Central.h"

// ----------------------------------------------------------------------------------------------

WinQuestSystem gWinQuestSystem;
// ----------------------------------------------------------------------------------------------

WinQuestSystem::WinQuestSystem()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

WinQuestSystem::~WinQuestSystem()
{
// --
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Init()
{
// --
this->DrawMiniInfoFlag = false;
ZeroMemory(&this->ewdata, sizeof(this->ewdata));
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Load()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::ImageLoad()
{
pLoadImage("Custom\\Interface\\Party_info_block.tga", ex_INFO_2, 0x2601, 0x2900, 1, 0);
pLoadImage("Custom\\Interface\\newui_cha_textbox03.tga", ex_TEXT_BOX3, 0x2601, 0x2900, 1, 0);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::BindImages()
{
int eWHig;

eWHig = 423;
gInterface.BindObject(OBJECT_WIN_QUEST_FINISH, 0x7A62, 90, 15.5, -1, -1); //Boton Accept Quest
gInterface.BindObject(OBJECT_WIN_QUEST_MAIN, 0x7A5A, 222, eWHig, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TITLE, 0x7A63, 230, 67, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FRAME, 0x7A58, 230, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FOOTER, 0x7A59, 230, 50, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_DIV, 0x7A62, 223, 21, -1, -1); //Dividor lineas
gInterface.BindObject(OBJECT_WIN_QUEST_CLOSE, 51522, 16, 16, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB, 51522, 166, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB1, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB2, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB3, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT1, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT2, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT3, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG, 0x7AA3, 170, 21, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG2, 0x7AA1, 170, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_LINE1, 0x7B67, 154, 3, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_POINT1, 0x7B68, 10, 10, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFO, ex_INFO_2, 22, 19, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG3, ex_TEXT_BOX3, 170, 21, -1, -1);
gInterface.BindObject(OPEN_QUEST, 0x7904, 25, 40, -1, -1);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Draw()
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return;
}

pSetCursorFocus = true;

pSetBlend(true);

int a = this->OpenTab;

// int Addradd = pWinWidth / pWinHeightReal / 2 - 320;
DWORD ItemNameColor = eWhite;
float MainWidth = 210.0;
float MainHeight = 400.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);

float ContentX = StartX;
float ContentY = StartY;

float TabX = StartX + 30;
float TabY = ContentY + 30 + 5;
float InfoX = 0;
float InfoY = 0;
int InfoA = 0;
int InfoM = 0;
int bColor = 0;
//--
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxX = StartX + MainWidth;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxY = StartY + MainHeight;

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

gInterface.DrawFormat(eBlue250, (int)StartX, (int)StartY + 10, 210, 3, "Windows Quest");



gInterface.DrawGUI(OBJECT_WIN_QUEST_CLOSE, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -5, ContentY+5);
gCentral.DrawDropBox(StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width-5, ContentY+5, 16, 16, 0, 0);
gInterface.DrawText603(eRed, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -26, ContentY + 8, 60, 3, "X");
// ----
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_CLOSE))
{
DWORD Color = eGray100;
// ----
if (gInterface.Data[OBJECT_WIN_QUEST_CLOSE].OnClick)
{
Color = eGray150;
}
// ----
gInterface.DrawColoredGUI(OBJECT_WIN_QUEST_CLOSE, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y, Color);
gInterface.DrawToolTip(gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X + 5, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y + 25, "Close");
}
// ------------------------------------
if (this->OpenTab == 0)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}
else if (this->OpenTab == 1)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}

if (this->ewdata[0].b_End)
{
gInterface.DrawText603(eRed, TabX+2, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX+2, TabY + 3, 60, 3, "first Quest");


}
if (this->ewdata[1].b_End)
{
gInterface.DrawText603(eRed, TabX + 80, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX + 82, TabY + 3, 60, 3, "second Quest");
}

// ------------------------------------
// -> End Quest
// ------------------------------------
if (this->ewdata[a].b_End)
{
float EndY = ContentY + 53;
gInterface.DrawGUI(OBJECT_WIN_QUEST_INFOBG3, StartX + 30, EndY + 12);
gInterface.DrawText603(eAncient, ContentX + 30, EndY + 17, 170, 3, "End");
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
return;
}
// ------------------------------------
// -> Content Need
// ------------------------------------
float NeededY = ContentY + 53;

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 20, 180, 3, "%s", this->ewdata[a].NameQuest);

gCentral.DrawDropBox(StartX + 5, TabY + 37, 200, 0.5, 0, 0); // Divisor 1

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 36, 170, 3, "Requisitos");

float CountNeededY = NeededY + 30;

gInterface.DrawText603(eWhite, StartX + 30, CountNeededY + 6, 100, 1, "Level:");

if (this->ewdata[a].b_Level)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 60, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedLevel);
gInterface.DrawText603(eWhite, StartX + 90, CountNeededY + 6, 100, 1, "Reset:");

if (this->ewdata[a].b_Reset)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 120, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedReset);
gInterface.DrawText603(eWhite, StartX + 150, CountNeededY + 6, 100, 1, "GReset:");

if (this->ewdata[a].b_Grand)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 185, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedGrand);

CountNeededY += 21;
// ------------------------------------
// -> Content Mission
// ------------------------------------
float MissionX = StartX -10;
float MissionY = ContentY + 53 + 40;

MissionY += 10;

float CountMissionY = MissionY + 20;

//----------------------------------------------------

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
if (this->ewdata[a].b_Mission[m])
{
bColor = eExcellent;
}
else
{
bColor = eWhite;
}

CountMissionY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}
// ------------------------------------
// -> Content Reward
// ------------------------------------
float RewardY = ContentY + 53 + 100 + 42 + 15;

gCentral.DrawDropBox(StartX +5, RewardY, 200, 0.5, 0, 0);

gInterface.DrawText603(eAncient, ContentX + 20, RewardY + 6, 170, 3, "Reward");

float CountRewardY = RewardY + 34 - 4;

for (int r = 0; r < EW_MAX_REWARD; r++)
{
if (this->ewdata[a].RewardType[r] == ewZen ||
this->ewdata[a].RewardType[r] == ewFreePoint ||
this->ewdata[a].RewardType[r] == ewItem ||
this->ewdata[a].RewardType[r] == ewBonus ||
this->ewdata[a].RewardType[r] == ewBuff)
{
if (this->ewdata[a].RewardType[r] == ewZen)
{
char RewardMSG[64] = { 0 };
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Zen:");
pGetMoneyFormat((double)(int)this->ewdata[a].RewardCount[r], RewardMSG, 0);
gInterface.DrawText603(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", RewardMSG);
}
else if (this->ewdata[a].RewardType[r] == ewFreePoint)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Lvl Point:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewItem)
{

ItemBmdStruct* ItemInfo = pGetItemBmdStruct(ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]));


const int WidthValue = 24;
const int HeightValue = 26;
float barWidth = WidthValue * ItemInfo->ItemWidth;
float barHeight = HeightValue * ItemInfo->ItemHeight;

if (this->ewdata[a].RewardItemLevel[r] > 0)
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s +%d x%d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardItemLevel[r], this->ewdata[a].RewardCount[r]);
}
else
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s x %d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardCount[r]);
}

// ObjectItem* item_data = (ObjectItem*)&item__;

if (pCheckMouseOver((int)(StartX + 20), (int)(CountRewardY + 5), 100, 7))
{
NewModelRender3D(StartX + 155, ContentX + 40, barWidth, barHeight, GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]), this->ewdata[a].RewardItemLevel[r], 1, 0, 0);

//Tooltip imcompleto
/* JCCoord B;

B.X = 196;
B.Y = (int)130;

sub_7E3E30(*(DWORD*)(GetInstance() + 308), B, (int)item_data, 0, 0, 0);

pSetBlend(false);*/
}
}
else if (this->ewdata[a].RewardType[r] == ewBonus)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "WCoin:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewBuff)
{
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Buff:");

switch (this->ewdata[a].RewardItemType[r])
{
case 1:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Experience: + 15%%");
break;
case 2:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Dmg: +10%%/Wizard Dmg: +10%%");
break;
case 3:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Defence: +10%%");
break;
case 4:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Exel Dmg Rate: +5%%/Ctcal Dmg Rate: +5%%");
break;
case 5:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Zen Drop: +50%%");
break;
case 6:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Double Damage: +5%%");
break;
}
}

CountRewardY += 21;
}
}
// ------------------------------------
// -> Finish
// ------------------------------------
bool Finish = 0;

if (this->ewdata[a].Start)
{
Finish = this->ewdata[a].b_done;
}
else
{
Finish = this->ewdata[a].b_accept;
}

//------
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_FINISH))
{
if (gInterface.Data[OBJECT_WIN_QUEST_FINISH].OnClick)
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 28);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}

if (this->ewdata[a].Start)
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Done");

}
else
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Accept");

}
//------
if (!Finish)
{
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
}
else
{
// ----
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = true;
// ----
}

pSetBlend(false);
}

void WinQuestSystem::DrawMiniInfo()
{

try
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}

/* if (gProtect.m_MainInfo.MiniMapType == 1)
{
if (MiniMap == 1)
{
return;
}
}
*/
int qCount = 0;
int mCount = 0;
bool DrInfo = false;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
qCount += 15;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
mCount += 10;
DrInfo = true;
}
}
}
}

if (DrInfo == false)
{

return;
}

float iX = 530; //posicion MiniInfoQuest
float iY = 320; //posicion MiniInfoQuest
float Wind = 100; //posicion MiniInfoQuest
float Hig = qCount + mCount;

float StartiY = 420; //posicion MiniInfoQuest

iY = StartiY - Hig;

pSetBlend(true);

pDrawColorButton(0x7980, iX, iY, Wind, Hig, NULL, NULL, Color4f(0, 0, 0, 100));

iY += 3;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
gInterface.DrawText603(eOrange, iX + 2, iY, 200, 2, "%s", this->ewdata[a].NameQuest);

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
iY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}

iY += 15;
}
}

pSetBlend(false);
}
catch (...)
{
}
}
//// ----------------------------------------------------------------------------------------------
void WinQuestSystem::DrawOpenWQ()
{
if (gInterface.Data[OPEN_QUEST].OnShow)
{
gInterface.Data[OPEN_QUEST].OnShow = false;
}

if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}


//   int Addradd = pWinWidth / pWinHeightReal / 2 - 320;

  gInterface.Data[OPEN_QUEST].OnShow = true;

  gInterface.DrawGUI(OPEN_QUEST, 610, 200);

  if (gInterface.IsWorkZone(OPEN_QUEST))
  {
  pSetCursorFocus = true; // Bloqueo de Cursor Al Señalar :)
  gInterface.DrawToolTip(520, 210, "WINDOWS QUEST");
  // ----
  if (gInterface.Data[OPEN_QUEST].OnClick)
  {
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(40, 20, 3, 130));
  return;
  }
  // ----
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(255, 204, 20, 200));
  }

}

//
int WinQuestSystem::Button(DWORD Event)
{
if (gInterface.ButtonEx(Event, OPEN_QUEST, false))
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return 0;
}

PMSG_CHARACTER_LIST_SEND pMsg;
pMsg.header.set(0xDE, 0x21, sizeof(pMsg));
DataSend((BYTE*)& pMsg, pMsg.header.size);
return true;
}

if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return false;
}

if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_FINISH, true))
{
this->CG_AcñeptQuest();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_CLOSE, false))
{
pSetCursorFocus = false;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].Close();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB1, false))
{
this->OpenTab = 0;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB2, false))
{
this->OpenTab = 1;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB3, false))
{
this->OpenTab = 2;

return true;
}

return false;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_RecvMain(GC_MainPacket* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);
this->ewdata[a].b_accept = aRecv->xQuest[a].b_accept;
this->ewdata[a].b_done = aRecv->xQuest[a].b_done;
this->ewdata[a].b_End = aRecv->xQuest[a].b_End;
// -> user send
this->ewdata[a].Start = aRecv->xQuest[a].Start;
this->ewdata[a].Number = aRecv->xQuest[a].Number;
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].Count[m];
}
// -> need send
this->ewdata[a].b_Level = aRecv->xQuest[a].b_Level;
this->ewdata[a].b_Reset = aRecv->xQuest[a].b_Reset;
this->ewdata[a].b_Grand = aRecv->xQuest[a].b_Grand;

this->ewdata[a].NeedLevel = aRecv->xQuest[a].NeedLevel;
this->ewdata[a].NeedReset = aRecv->xQuest[a].NeedReset;
this->ewdata[a].NeedGrand = aRecv->xQuest[a].NeedGrand;
// -> mission send
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].b_Mission[m] = aRecv->xQuest[a].b_Mission[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
this->ewdata[a].MissionProcent[m] = aRecv->xQuest[a].MissionProcent[m];
}
for (int r = 0; r < EW_MAX_REWARD; r++)
{

this->ewdata[a].RewardType[r] = aRecv->xQuest[a].RewardType[r];
this->ewdata[a].RewardCount[r] = aRecv->xQuest[a].RewardCount[r];
this->ewdata[a].RewardItemType[r] = aRecv->xQuest[a].RewardItemType[r];
this->ewdata[a].RewardItemIndex[r] = aRecv->xQuest[a].RewardItemIndex[r];
this->ewdata[a].RewardItemLevel[r] = aRecv->xQuest[a].RewardItemLevel[r];
}
}

if (aRecv->isOpenWindow)
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
this->SwitchStatsWindowState();
pSetCursorFocus = true;
}
}

}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::CG_AcñeptQuest()
{
CG_Accept_Done pReq = { 0 };
pReq.h.set(0xDE, 0x0D, sizeof(pReq));
pReq.Result = this->OpenTab;
DataSend((LPBYTE)&pReq, pReq.h.size);
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfo* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);

this->ewdata[a].Start = aRecv->xQuest[a].Start;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].WQuestCount[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
}
}
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfox* aRecv)
{
int a = aRecv->a;
int m = aRecv->m;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (m < 0 && m >= EW_MAX_MISSION)
{
return;
}

this->ewdata[a].Count[m]++;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_Start(GC_WinStart* aRecv)
{
int a = aRecv->Act;
int s = aRecv->Start;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (s == true)
{
this->ewdata[a].Start = true;
}
}
//// ----------------------------------------------------------------------------------------------
#endif

For example WindowsQuest.cpp
Where do I need to add and edit so it doesn't move when clicking on the table


debe crear un pSetCursorFocus = true;
pSetCursorFocus = false; exclusivo para ese evento lo mas seguro en central.cpp
esperemos que alguien coloque guia de como hacer

That's right . I hope someone can give detailed instructions on this issue.

 Question2 Question2 Question2
This is not too difficult, you need to rearrange the custom menus in a reasonable way  fiesta

esperemos a un heroe sin capa que ayude al pueblo

es algo simple xD!
vamos heroe sin capa ayuda al puedo de israel :V  cheesyy2

HELP  P.L.E.A.S.E!  please


Offline wellwisher22 #76 Posteado: January 28, 2024, 03:41:49 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 350
  • Gracias recibida: 3676
  • br
Alguém ajuda a arrumar o ShopRuud, os preços não mudam ficam tudo 500


Offline osvaldo1811 #77 Posteado: January 29, 2024, 04:34:57 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 399
  • Gracias recibida: 116
  • ar
hola espero me puedan ayudar. quiero saber porque al hacer el reset de cualquier pj y de cualquier raza me manda al mapa ferea y no a lorencia o noria y al cerra el cliente y volver a abrirlo el pj aparece en lorencia. como puedo arreglar eso.





Offline osvaldo1811 #78 Posteado: January 29, 2024, 04:22:09 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 399
  • Gracias recibida: 116
  • ar
hola. alguien me puede decir porque todos los personajes al hacer el reset van a lorencia y en el caso de la elfa tendria que ir a noria y la summoner a elveland pero van a lorencia. gracias


Offline wellwisher22 #79 Posteado: January 30, 2024, 06:47:33 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 350
  • Gracias recibida: 3676
  • br
hola. alguien me puede decir porque todos los personajes al hacer el reset van a lorencia y en el caso de la elfa tendria que ir a noria y la summoner a elveland pero van a lorencia. gracias

Estoy usando estos files y aquí es normal, incluso he cambiado varias cosas en el código fuente.
Quizás la solución esté en gate.txt


Offline osvaldo1811 #80 Posteado: January 30, 2024, 07:02:48 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 399
  • Gracias recibida: 116
  • ar
hola. alguien me puede decir porque todos los personajes al hacer el reset van a lorencia y en el caso de la elfa tendria que ir a noria y la summoner a elveland pero van a lorencia. gracias

Estoy usando estos files y aquí es normal, incluso he cambiado varias cosas en el código fuente.
Quizás la solución esté en gate.txt

hola mira yo encontré esto en el gate que es a donde me manda al resetear

348     1    0     144    127    145     128     0             0          0     *       *          *     0           1 //Move Reset Lorencia
si lo quito me hace el reset en el lugar

el mapa y coordenadas que ponga yo en ese index es a donde manda a todos los personajes y como ya dije antes si lo quito me hace el reset en el lugar. también me fije en el game server la configuración del reset por si ahi esta mara que resetee en el lugar pero no.

otra consulta el custom mix lo pudiste configurar y te funciona porque a mi no y yo no toque nada en la src

Gracias:


Offline osvaldo1811 #81 Posteado: January 30, 2024, 07:08:57 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 399
  • Gracias recibida: 116
  • ar
hola. alguien me puede decir porque todos los personajes al hacer el reset van a lorencia y en el caso de la elfa tendria que ir a noria y la summoner a elveland pero van a lorencia. gracias

Estoy usando estos files y aquí es normal, incluso he cambiado varias cosas en el código fuente.
Quizás la solución esté en gate.txt

el problema esta en la src asi que es raro que a vos te ande bien. mira como esta en la src


if(gServerInfo.m_CommandResetMove[lpObj->AccountLevel] != 0)
{
   switch(lpObj->Class)
   {
      case CLASS_DW:
         gObjMoveGate(lpObj->Index,348);
         break;
      case CLASS_DK:
         gObjMoveGate(lpObj->Index,348);
         break;
      case CLASS_FE:
         gObjMoveGate(lpObj->Index,348);
         break;
      case CLASS_MG:
         gObjMoveGate(lpObj->Index,348);
         break;
      case CLASS_DL:
         gObjMoveGate(lpObj->Index,348);
         break;
      case CLASS_SU:
         gObjMoveGate(lpObj->Index,348);
         break;
      case CLASS_RF:
         gObjMoveGate(lpObj->Index,348);
         break;
   }
}
hola mira yo encontré esto en el gate que es a donde me manda al resetear

348     1    0     144    127    145     128     0             0          0     *       *          *     0           1 //Move Reset Lorencia
si lo quito me hace el reset en el lugar

el mapa y coordenadas que ponga yo en ese index es a donde manda a todos los personajes y como ya dije antes si lo quito me hace el reset en el lugar. también me fije en el game server la configuración del reset por si ahi esta mara que resetee en el lugar pero no.

otra consulta el custom mix lo pudiste configurar y te funciona porque a mi no y yo no toque nada en la src


Offline osvaldo1811 #82 Posteado: February 03, 2024, 05:44:58 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 399
  • Gracias recibida: 116
  • ar
hola como están. consulta alguien pudo solucionar el problema con el party en el cual cuando son mas de 7 personajes en el party usas la tecla P y se le cierra el cliente al líder del party y al ultimo.

Esto otro es a modo comentario la Store en versiones para S2/S3 no funciona y los mobs que están en icarus Mega Crust tiene un problema visual.

y si alguien mas esta probando la source me puede decir como configuro o deshabilito el antifloot porque me banea todo el tiempo las cuentas al relogear el serve
El resto esta todo genial y funciona todo perfecto gracias por el aporte.


Offline osvaldo1811 #83 Posteado: February 03, 2024, 08:00:43 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 399
  • Gracias recibida: 116
  • ar
hola como están. consulta alguien pudo solucionar el problema con el party en el cual cuando son mas de 7 personajes en el party usas la tecla P y se le cierra el cliente al líder del party y al ultimo.

Esto otro es a modo comentario la Store en versiones para S2/S3 no funciona y los mobs que están en icarus Mega Crust tiene un problema visual.

y si alguien mas esta probando la source me puede decir como configuro o deshabilito el antifloot porque me banea todo el tiempo las cuentas al relogear el serve
El resto esta todo genial y funciona todo perfecto gracias por el aporte.

el pajaro del DL al estar equipado por momendos no se ve hay que sacarlo y volver a colocarlo para que se vea.


Offline kijo23312 #84 Posteado: February 03, 2024, 10:03:47 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 5
  • Gracias recibida: 2
  • mx
Alguien sabe como se colocan las flags? :)


Offline wellwisher22 #85 Posteado: March 07, 2024, 10:40:34 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 350
  • Gracias recibida: 3676
  • br
1 Bug Novo Slot Pet não dá status dos pets e quando move de mapa ele some!


Offline Alejandra(-_-) #86 Posteado: March 20, 2024, 04:42:15 PM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 9
  • Gracias recibida: 28
  • mx
que codigo tendria q poner para que el pj no camine cuando abro el panel de opciones por que cuando abro el panel y doy clic en una opcion el pj camina no deberia pero camina creo que falta una definición o algo haber si me apoyan :v
solo te falta agregar el setcursor a esa parte del code nada mas
Can you give more details about which part? I'm bad at scr code
shared src !!
https://mega.nz/file/HN5BGYII#44njM_x0bOTl_tX5c0DOhoxxprUVMpSj5cTvcWtozxQ
mejor dime que parte del codigo no que me pases todo una source !! asi te ayudo bro !!

Code: [Select]
#include "stdafx.h"
#if WINDOWS_QUEST
#include "WindowsQuest.h"
#include "Interface.h"
#include "Protocol.h"
#include "Item.h"
#include "Offset.h"
#include "Item.h"
#include "Defines.h"
#include "CustomMap.h"
#include "Common.h"
#include "Protect.h"
#include "Central.h"

// ----------------------------------------------------------------------------------------------

WinQuestSystem gWinQuestSystem;
// ----------------------------------------------------------------------------------------------

WinQuestSystem::WinQuestSystem()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

WinQuestSystem::~WinQuestSystem()
{
// --
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Init()
{
// --
this->DrawMiniInfoFlag = false;
ZeroMemory(&this->ewdata, sizeof(this->ewdata));
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Load()
{
this->Init();
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::ImageLoad()
{
pLoadImage("Custom\\Interface\\Party_info_block.tga", ex_INFO_2, 0x2601, 0x2900, 1, 0);
pLoadImage("Custom\\Interface\\newui_cha_textbox03.tga", ex_TEXT_BOX3, 0x2601, 0x2900, 1, 0);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::BindImages()
{
int eWHig;

eWHig = 423;
gInterface.BindObject(OBJECT_WIN_QUEST_FINISH, 0x7A62, 90, 15.5, -1, -1); //Boton Accept Quest
gInterface.BindObject(OBJECT_WIN_QUEST_MAIN, 0x7A5A, 222, eWHig, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TITLE, 0x7A63, 230, 67, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FRAME, 0x7A58, 230, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_FOOTER, 0x7A59, 230, 50, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_DIV, 0x7A62, 223, 21, -1, -1); //Dividor lineas
gInterface.BindObject(OBJECT_WIN_QUEST_CLOSE, 51522, 16, 16, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB, 51522, 166, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB1, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB2, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_TAB3, 51522, 70, 15, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT1, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT2, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_COUNT3, 0x7BAC, 168, 18, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG, 0x7AA3, 170, 21, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG2, 0x7AA1, 170, 22, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_LINE1, 0x7B67, 154, 3, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_POINT1, 0x7B68, 10, 10, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFO, ex_INFO_2, 22, 19, -1, -1);
gInterface.BindObject(OBJECT_WIN_QUEST_INFOBG3, ex_TEXT_BOX3, 170, 21, -1, -1);
gInterface.BindObject(OPEN_QUEST, 0x7904, 25, 40, -1, -1);
}
// ----------------------------------------------------------------------------------------------

void WinQuestSystem::Draw()
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return;
}

pSetCursorFocus = true;

pSetBlend(true);

int a = this->OpenTab;

// int Addradd = pWinWidth / pWinHeightReal / 2 - 320;
DWORD ItemNameColor = eWhite;
float MainWidth = 210.0;
float MainHeight = 400.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);

float ContentX = StartX;
float ContentY = StartY;

float TabX = StartX + 30;
float TabY = ContentY + 30 + 5;
float InfoX = 0;
float InfoY = 0;
int InfoA = 0;
int InfoM = 0;
int bColor = 0;
//--
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxX = StartX + MainWidth;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].MaxY = StartY + MainHeight;

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

gInterface.DrawFormat(eBlue250, (int)StartX, (int)StartY + 10, 210, 3, "Windows Quest");



gInterface.DrawGUI(OBJECT_WIN_QUEST_CLOSE, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -5, ContentY+5);
gCentral.DrawDropBox(StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width-5, ContentY+5, 16, 16, 0, 0);
gInterface.DrawText603(eRed, StartX + MainWidth - gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Width -26, ContentY + 8, 60, 3, "X");
// ----
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_CLOSE))
{
DWORD Color = eGray100;
// ----
if (gInterface.Data[OBJECT_WIN_QUEST_CLOSE].OnClick)
{
Color = eGray150;
}
// ----
gInterface.DrawColoredGUI(OBJECT_WIN_QUEST_CLOSE, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y, Color);
gInterface.DrawToolTip(gInterface.Data[OBJECT_WIN_QUEST_CLOSE].X + 5, gInterface.Data[OBJECT_WIN_QUEST_CLOSE].Y + 25, "Close");
}
// ------------------------------------
if (this->OpenTab == 0)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}
else if (this->OpenTab == 1)
{
gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB1, TabX, TabY);
gCentral.DrawDropBox(TabX, TabY, 70, 15, 0, 0);

gInterface.DrawGUI(OBJECT_WIN_QUEST_TAB2, TabX + 80, TabY);
gCentral.DrawDropBox(TabX + 80, TabY, 70, 15, 0, 0);
}

if (this->ewdata[0].b_End)
{
gInterface.DrawText603(eRed, TabX+2, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX+2, TabY + 3, 60, 3, "first Quest");


}
if (this->ewdata[1].b_End)
{
gInterface.DrawText603(eRed, TabX + 80, TabY + 3, 60, 3, "Off");
}
else
{
gInterface.DrawText603(eGold, TabX + 82, TabY + 3, 60, 3, "second Quest");
}

// ------------------------------------
// -> End Quest
// ------------------------------------
if (this->ewdata[a].b_End)
{
float EndY = ContentY + 53;
gInterface.DrawGUI(OBJECT_WIN_QUEST_INFOBG3, StartX + 30, EndY + 12);
gInterface.DrawText603(eAncient, ContentX + 30, EndY + 17, 170, 3, "End");
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
return;
}
// ------------------------------------
// -> Content Need
// ------------------------------------
float NeededY = ContentY + 53;

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 20, 180, 3, "%s", this->ewdata[a].NameQuest);

gCentral.DrawDropBox(StartX + 5, TabY + 37, 200, 0.5, 0, 0); // Divisor 1

gInterface.DrawText603(eAncient, ContentX + 20, TabY + 36, 170, 3, "Requisitos");

float CountNeededY = NeededY + 30;

gInterface.DrawText603(eWhite, StartX + 30, CountNeededY + 6, 100, 1, "Level:");

if (this->ewdata[a].b_Level)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 60, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedLevel);
gInterface.DrawText603(eWhite, StartX + 90, CountNeededY + 6, 100, 1, "Reset:");

if (this->ewdata[a].b_Reset)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 120, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedReset);
gInterface.DrawText603(eWhite, StartX + 150, CountNeededY + 6, 100, 1, "GReset:");

if (this->ewdata[a].b_Grand)
{
bColor = eGold;
}
else
{
bColor = eRed;
}

gInterface.DrawText603(bColor, StartX + 185, CountNeededY + 6, 100, 1, "%d", this->ewdata[a].NeedGrand);

CountNeededY += 21;
// ------------------------------------
// -> Content Mission
// ------------------------------------
float MissionX = StartX -10;
float MissionY = ContentY + 53 + 40;

MissionY += 10;

float CountMissionY = MissionY + 20;

//----------------------------------------------------

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
if (this->ewdata[a].b_Mission[m])
{
bColor = eExcellent;
}
else
{
bColor = eWhite;
}

CountMissionY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(bColor, MissionX + 30 + 5 + 15, CountMissionY, 200, 1, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}
// ------------------------------------
// -> Content Reward
// ------------------------------------
float RewardY = ContentY + 53 + 100 + 42 + 15;

gCentral.DrawDropBox(StartX +5, RewardY, 200, 0.5, 0, 0);

gInterface.DrawText603(eAncient, ContentX + 20, RewardY + 6, 170, 3, "Reward");

float CountRewardY = RewardY + 34 - 4;

for (int r = 0; r < EW_MAX_REWARD; r++)
{
if (this->ewdata[a].RewardType[r] == ewZen ||
this->ewdata[a].RewardType[r] == ewFreePoint ||
this->ewdata[a].RewardType[r] == ewItem ||
this->ewdata[a].RewardType[r] == ewBonus ||
this->ewdata[a].RewardType[r] == ewBuff)
{
if (this->ewdata[a].RewardType[r] == ewZen)
{
char RewardMSG[64] = { 0 };
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Zen:");
pGetMoneyFormat((double)(int)this->ewdata[a].RewardCount[r], RewardMSG, 0);
gInterface.DrawText603(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", RewardMSG);
}
else if (this->ewdata[a].RewardType[r] == ewFreePoint)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Lvl Point:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewItem)
{

ItemBmdStruct* ItemInfo = pGetItemBmdStruct(ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]));


const int WidthValue = 24;
const int HeightValue = 26;
float barWidth = WidthValue * ItemInfo->ItemWidth;
float barHeight = HeightValue * ItemInfo->ItemHeight;

if (this->ewdata[a].RewardItemLevel[r] > 0)
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s +%d x%d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardItemLevel[r], this->ewdata[a].RewardCount[r]);
}
else
{
gInterface.DrawText603(eGold, StartX + 20, CountRewardY + 5, 100, 3, "- %s x %d",
getItemName(GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r])), this->ewdata[a].RewardCount[r]);
}

// ObjectItem* item_data = (ObjectItem*)&item__;

if (pCheckMouseOver((int)(StartX + 20), (int)(CountRewardY + 5), 100, 7))
{
NewModelRender3D(StartX + 155, ContentX + 40, barWidth, barHeight, GET_ITEM(this->ewdata[a].RewardItemType[r], this->ewdata[a].RewardItemIndex[r]), this->ewdata[a].RewardItemLevel[r], 1, 0, 0);

//Tooltip imcompleto
/* JCCoord B;

B.X = 196;
B.Y = (int)130;

sub_7E3E30(*(DWORD*)(GetInstance() + 308), B, (int)item_data, 0, 0, 0);

pSetBlend(false);*/
}
}
else if (this->ewdata[a].RewardType[r] == ewBonus)
{
gInterface.DrawFormat(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "WCoin:");
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%d", this->ewdata[a].RewardCount[r]);
}
else if (this->ewdata[a].RewardType[r] == ewBuff)
{
gInterface.DrawText603(eWhite, StartX + 30 + 5, CountRewardY + 5, 100, 1, "Buff:");

switch (this->ewdata[a].RewardItemType[r])
{
case 1:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Experience: + 15%%");
break;
case 2:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Dmg: +10%%/Wizard Dmg: +10%%");
break;
case 3:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Defence: +10%%");
break;
case 4:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Exel Dmg Rate: +5%%/Ctcal Dmg Rate: +5%%");
break;
case 5:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Zen Drop: +50%%");
break;
case 6:
gInterface.DrawFormat(eGold, StartX + 30 + 70, CountRewardY + 5, 100, 3, "%s", "Double Damage: +5%%");
break;
}
}

CountRewardY += 21;
}
}
// ------------------------------------
// -> Finish
// ------------------------------------
bool Finish = 0;

if (this->ewdata[a].Start)
{
Finish = this->ewdata[a].b_done;
}
else
{
Finish = this->ewdata[a].b_accept;
}

//------
if (gInterface.IsWorkZone(OBJECT_WIN_QUEST_FINISH))
{
if (gInterface.Data[OBJECT_WIN_QUEST_FINISH].OnClick)
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 28);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}
}
else
{
gInterface.DrawButtonRender(OBJECT_WIN_QUEST_FINISH, StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 0, 0);
gCentral.DrawDropBox(StartX + (MainWidth / 2) - (110 / 2), StartY + MainHeight - 32, 108, 20, 0, 0);
}

if (this->ewdata[a].Start)
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Done");

}
else
{

gInterface.DrawFormat(eWhite, StartX + (MainWidth / 2) - (70 / 2), StartY + MainHeight - 25, 59, 3, "Accept");

}
//------
if (!Finish)
{
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = false;
}
else
{
// ----
gInterface.Data[OBJECT_WIN_QUEST_FINISH].Attribute = true;
// ----
}

pSetBlend(false);
}

void WinQuestSystem::DrawMiniInfo()
{

try
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}

/* if (gProtect.m_MainInfo.MiniMapType == 1)
{
if (MiniMap == 1)
{
return;
}
}
*/
int qCount = 0;
int mCount = 0;
bool DrInfo = false;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
qCount += 15;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
mCount += 10;
DrInfo = true;
}
}
}
}

if (DrInfo == false)
{

return;
}

float iX = 530; //posicion MiniInfoQuest
float iY = 320; //posicion MiniInfoQuest
float Wind = 100; //posicion MiniInfoQuest
float Hig = qCount + mCount;

float StartiY = 420; //posicion MiniInfoQuest

iY = StartiY - Hig;

pSetBlend(true);

pDrawColorButton(0x7980, iX, iY, Wind, Hig, NULL, NULL, Color4f(0, 0, 0, 100));

iY += 3;

for (int a = 0; a < EW_MAX_ACT; a++)
{
if (this->ewdata[a].Start == TRUE)
{
gInterface.DrawText603(eOrange, iX + 2, iY, 200, 2, "%s", this->ewdata[a].NameQuest);

for (int m = 0; m < EW_MAX_MISSION; m++)
{
if (this->ewdata[a].MissionType[m] == Hunting ||
this->ewdata[a].MissionType[m] == Droping ||
this->ewdata[a].MissionType[m] == Searching)
{
iY += 10;

if (this->ewdata[a].MissionType[m] == Hunting)
{
if (this->ewdata[a].MissionID[m] == 65535)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- Kill Level %d~%d: %d/%d",
this->ewdata[a].MissionOpt[m], this->ewdata[a].MissionExl[m], this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
else
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", pGetMonsterName(this->ewdata[a].MissionID[m]/*gMonster.GetMonsterName(this->ewdata[a].MissionID[m]*/), this->ewdata[a].Count[m], this->ewdata[a].MissionCount[m]);
}
}
else if (this->ewdata[a].MissionType[m] == Droping)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s: %d/%d", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), ewdata[a].Count[m], ewdata[a].MissionCount[m]);
}
else if (this->ewdata[a].MissionType[m] == Searching)
{
gInterface.DrawText603(eWhite, iX + 2, iY, 200, 2, "- %s (%d)", getItemName(GET_ITEM(this->ewdata[a].MissionID[m], this->ewdata[a].MissionIndex[m])), this->ewdata[a].MissionCount[m]);
}
}
}

iY += 15;
}
}

pSetBlend(false);
}
catch (...)
{
}
}
//// ----------------------------------------------------------------------------------------------
void WinQuestSystem::DrawOpenWQ()
{
if (gInterface.Data[OPEN_QUEST].OnShow)
{
gInterface.Data[OPEN_QUEST].OnShow = false;
}

if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return;
}


//   int Addradd = pWinWidth / pWinHeightReal / 2 - 320;

  gInterface.Data[OPEN_QUEST].OnShow = true;

  gInterface.DrawGUI(OPEN_QUEST, 610, 200);

  if (gInterface.IsWorkZone(OPEN_QUEST))
  {
  pSetCursorFocus = true; // Bloqueo de Cursor Al Señalar :)
  gInterface.DrawToolTip(520, 210, "WINDOWS QUEST");
  // ----
  if (gInterface.Data[OPEN_QUEST].OnClick)
  {
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(40, 20, 3, 130));
  return;
  }
  // ----
  gInterface.DrawColoredGUI(OPEN_QUEST, 610, 200, pMakeColor(255, 204, 20, 200));
  }

}

//
int WinQuestSystem::Button(DWORD Event)
{
if (gInterface.ButtonEx(Event, OPEN_QUEST, false))
{
if (gInterface.MiniMapCheck() || gInterface.CheckWindow(FullMap)
|| gInterface.CheckWindow(FriendList) || gInterface.CheckWindow(SkillTree)
|| gInterface.CheckWindow(CashShop) || gInterface.CheckWindow(FastMenu)
|| gInterface.CheckWindow(Character))
{
return 0;
}

PMSG_CHARACTER_LIST_SEND pMsg;
pMsg.header.set(0xDE, 0x21, sizeof(pMsg));
DataSend((BYTE*)& pMsg, pMsg.header.size);
return true;
}

if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
return false;
}

if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_FINISH, true))
{
this->CG_AcñeptQuest();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_CLOSE, false))
{
pSetCursorFocus = false;
gInterface.Data[OBJECT_WIN_QUEST_MAIN].Close();

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB1, false))
{
this->OpenTab = 0;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB2, false))
{
this->OpenTab = 1;

return true;
}
else if (gInterface.ButtonEx(Event, OBJECT_WIN_QUEST_TAB3, false))
{
this->OpenTab = 2;

return true;
}

return false;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_RecvMain(GC_MainPacket* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);
this->ewdata[a].b_accept = aRecv->xQuest[a].b_accept;
this->ewdata[a].b_done = aRecv->xQuest[a].b_done;
this->ewdata[a].b_End = aRecv->xQuest[a].b_End;
// -> user send
this->ewdata[a].Start = aRecv->xQuest[a].Start;
this->ewdata[a].Number = aRecv->xQuest[a].Number;
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].Count[m];
}
// -> need send
this->ewdata[a].b_Level = aRecv->xQuest[a].b_Level;
this->ewdata[a].b_Reset = aRecv->xQuest[a].b_Reset;
this->ewdata[a].b_Grand = aRecv->xQuest[a].b_Grand;

this->ewdata[a].NeedLevel = aRecv->xQuest[a].NeedLevel;
this->ewdata[a].NeedReset = aRecv->xQuest[a].NeedReset;
this->ewdata[a].NeedGrand = aRecv->xQuest[a].NeedGrand;
// -> mission send
for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].b_Mission[m] = aRecv->xQuest[a].b_Mission[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
this->ewdata[a].MissionProcent[m] = aRecv->xQuest[a].MissionProcent[m];
}
for (int r = 0; r < EW_MAX_REWARD; r++)
{

this->ewdata[a].RewardType[r] = aRecv->xQuest[a].RewardType[r];
this->ewdata[a].RewardCount[r] = aRecv->xQuest[a].RewardCount[r];
this->ewdata[a].RewardItemType[r] = aRecv->xQuest[a].RewardItemType[r];
this->ewdata[a].RewardItemIndex[r] = aRecv->xQuest[a].RewardItemIndex[r];
this->ewdata[a].RewardItemLevel[r] = aRecv->xQuest[a].RewardItemLevel[r];
}
}

if (aRecv->isOpenWindow)
{
if (!gInterface.Data[OBJECT_WIN_QUEST_MAIN].OnShow)
{
this->SwitchStatsWindowState();
pSetCursorFocus = true;
}
}

}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::CG_AcñeptQuest()
{
CG_Accept_Done pReq = { 0 };
pReq.h.set(0xDE, 0x0D, sizeof(pReq));
pReq.Result = this->OpenTab;
DataSend((LPBYTE)&pReq, pReq.h.size);
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfo* aRecv)
{
for (int a = 0; a < EW_MAX_ACT; a++)
{
strncpy(this->ewdata[a].NameQuest, aRecv->xQuest[a].NameQuest, 25);

this->ewdata[a].Start = aRecv->xQuest[a].Start;

for (int m = 0; m < EW_MAX_MISSION; m++)
{
this->ewdata[a].Count[m] = aRecv->xQuest[a].WQuestCount[m];
this->ewdata[a].MissionType[m] = aRecv->xQuest[a].MissionType[m];
this->ewdata[a].MissionID[m] = aRecv->xQuest[a].MissionID[m];
this->ewdata[a].MissionIndex[m] = aRecv->xQuest[a].MissionIndex[m];
this->ewdata[a].MissionLevel[m] = aRecv->xQuest[a].MissionLevel[m];
this->ewdata[a].MissionLuck[m] = aRecv->xQuest[a].MissionLuck[m];
this->ewdata[a].MissionOpt[m] = aRecv->xQuest[a].MissionOpt[m];
this->ewdata[a].MissionExl[m] = aRecv->xQuest[a].MissionExl[m];
this->ewdata[a].MissionCount[m] = aRecv->xQuest[a].MissionCount[m];
}
}
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_MiniInfoRecv(GC_WinMiniInfox* aRecv)
{
int a = aRecv->a;
int m = aRecv->m;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (m < 0 && m >= EW_MAX_MISSION)
{
return;
}

this->ewdata[a].Count[m]++;
}
//// ----------------------------------------------------------------------------------------------
//
void WinQuestSystem::GC_Start(GC_WinStart* aRecv)
{
int a = aRecv->Act;
int s = aRecv->Start;

if (a < 0 || a >= EW_MAX_ACT)
{
return;
}

if (s == true)
{
this->ewdata[a].Start = true;
}
}
//// ----------------------------------------------------------------------------------------------
#endif

For example WindowsQuest.cpp
Where do I need to add and edit so it doesn't move when clicking on the table


debe crear un pSetCursorFocus = true;
pSetCursorFocus = false; exclusivo para ese evento lo mas seguro en central.cpp
esperemos que alguien coloque guia de como hacer

That's right . I hope someone can give detailed instructions on this issue.

 Question2 Question2 Question2
This is not too difficult, you need to rearrange the custom menus in a reasonable way  fiesta

esperemos a un heroe sin capa que ayude al pueblo

es algo simple xD!
vamos heroe sin capa ayuda al puedo de israel :V  cheesyy2

HELP  P.L.E.A.S.E!  please

buenas tengo el mismo problema se mueve al darle click algunas solucion  please   al igual con la interfac de SistemFlag -- DailyReward --- SistemSkin... los botones no funciona bien y se meueve el personaje


Offline dakosmu #87 Posteado: March 21, 2024, 12:56:20 AM

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 786
  • Gracias recibida: 12211
  • ve
Citar
buenas tengo el mismo problema se mueve al darle click algunas solucion  please   al igual con la interfac de SistemFlag -- DailyReward --- SistemSkin... los botones no funciona bien y se meueve el personaje

Colocar en DRAW


Dakosmu Colaborador

Offline wellwisher22 #88 Posteado: March 21, 2024, 04:21:04 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 350
  • Gracias recibida: 3676
  • br
Citar
buenas tengo el mismo problema se mueve al darle click algunas solucion  please   al igual con la interfac de SistemFlag -- DailyReward --- SistemSkin... los botones no funciona bien y se meueve el personaje

Colocar en DRAW


Tentei assim mas não funciona

if (GetKeyState(VK_F4) & 0x4000 && GetTickCount() >= gCustomMenu.OpenTestDelay + 250)
         {
            if (GetForegroundWindow() == pGameWindow && !gInterface.CheckWindow(ObjWindow::ChatWindow))
            {
               if (gCustomMenu.CheckTestWindow())
               {
                  gCustomMenu.CloseTestWindow();

               }
               else
               {
                  gCustomMenu.OpenTestWindow();
                  pSetCursorFocus = true;
               }

               gCustomMenu.OpenTestDelay = GetTickCount();
            }
         }


Offline dakosmu #89 Posteado: March 21, 2024, 08:27:11 PM | Modificado: March 21, 2024, 09:43:24 PM by dakosmu

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 786
  • Gracias recibida: 12211
  • ve
interface.cpp



ThueFlag.cpp



Interface.cpp




interface.h




ThueFlag.h





Dakosmu Colaborador

Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
144 Replies
93779 Views
Last post October 08, 2025, 01:37:12 AM
by samsunggon
10 Replies
10046 Views
Last post December 16, 2022, 09:55:24 AM
by Miisoia
29 Replies
10881 Views
Last post July 19, 2023, 10:01:21 AM
by Juninsj22
115 Replies
32954 Views
Last post December 20, 2024, 07:40:50 AM
by FOX
1 Replies
642 Views
Last post January 21, 2025, 06:46:43 AM
by ShinedowN