plugy/HD_fix.patch
2024-04-05 00:17:33 -06:00

888 lines
29 KiB
Diff

diff --git a/PlugY/InfinityStash.cpp b/PlugY/InfinityStash.cpp
index 22e9c35..ea09d36 100644
--- a/PlugY/InfinityStash.cpp
+++ b/PlugY/InfinityStash.cpp
@@ -26,6 +26,7 @@ bool active_sharedStash = false;
bool separateHardSoftStash = false;
bool active_sharedGold=false;
char* sharedStashFilename = NULL;
+DWORD saveFileStackSize = 0x2000;
typedef int (*TchangeToSelectedStash)(Unit* ptChar, Stash* newStash, DWORD bOnlyItems, DWORD bIsClient);
@@ -422,7 +423,7 @@ void saveStashList(Unit* ptChar, Stash* ptStash, BYTE** data, DWORD* maxSize, DW
while(ptStash)
{
- if (*curSize + 0x2000 > *maxSize)
+ if (*curSize + saveFileStackSize > *maxSize)
{
BYTE* oldData = *data;
*maxSize *= 2;
diff --git a/PlugY/Interface_Skills.cpp b/PlugY/Interface_Skills.cpp
index 90178f7..8a07c2a 100644
--- a/PlugY/Interface_Skills.cpp
+++ b/PlugY/Interface_Skills.cpp
@@ -49,9 +49,10 @@ Unit* STDCALL skillsPageMouseDown(sWinMessage* msg)
if (active_SkillsPoints && !onRealm && D2isLODGame() && isOnButtonUnassignSkill(D2GetMouseX(),D2GetMouseY()))
{
log_msg("push down left button unassign skill\n");
- btnSkillIsDown = 1;
+ //btnSkillIsDown = 1;
D2PlaySound(4,0,0,0,0);
freeMessage(msg);
+ updateServer(US_UNASSIGN_SKILLS);
return NULL;
}
return ptChar;
@@ -233,6 +234,7 @@ void Install_InterfaceSkills()
//6FAE1112 > C745 18 00000000 MOV DWORD PTR SS:[EBP+18],0
//004ABC1A |> C746 18 00000000 MOV DWORD PTR DS:[ESI+18],0
+ /* Conflicts with D2ExpRes
// Manage mouse up
mem_seek R8(D2Client, 7BC40, 7BC40, 78466, 17558, 8C078, 80248, 795F8, 30AA8, ABC96);
MEMJ_REF4( D2FreeWinMessage, caller_skillsPageMouseUp);//0xFFF93B0A
@@ -243,6 +245,7 @@ void Install_InterfaceSkills()
//6FB295F7 .^E9 8828F9FF JMP <JMP.&Storm.#511>
//6FAE0AA7 .^E9 E0B2FDFF JMP <JMP.&Storm.#511>
//004ABC95 |. E8 F645F7FF CALL Game.00420290
+ */
log_msg("\n");
diff --git a/PlugY/Interface_Stats.cpp b/PlugY/Interface_Stats.cpp
index 85e6029..1d3a4cf 100644
--- a/PlugY/Interface_Stats.cpp
+++ b/PlugY/Interface_Stats.cpp
@@ -13,6 +13,7 @@
#include "common.h"
#include <stdio.h>
+/*
static struct
{
union{
@@ -35,6 +36,7 @@ static struct
#define getYNextPageBtn() RY(D2GetResolution()?0x40:0x70)
#define getHNextPageBtn() 32
#define isOnNextPageBtn(x,y) isOnRect(x, y, getXNextPageBtn(), getYNextPageBtn(), getLNextPageBtn(), getHNextPageBtn())
+*/
@@ -49,7 +51,7 @@ void STDCALL printStatsPageBtns()
sDrawImageInfo data;
ZeroMemory(&data,sizeof(data));
- if (printBackgroundOnMainPage && D2GetResolution())
+ if (printBackgroundOnMainPage)
{
setImage(&data, statsBackgroundImages);
setFrame(&data, 1);
@@ -57,16 +59,14 @@ void STDCALL printStatsPageBtns()
}
setImage(&data, D2LoadBuySelBtn());
- if (D2GetResolution())
- {
- setFrame(&data, 12 + isDownBtn.previousPage);
- D2PrintImage(&data, getXPreviousPageBtn(), getYPreviousPageBtn(), -1, 5, 0);
- }
+ setFrame(&data, 12 + isDownBtn.previousPage);
+ D2PrintImage(&data, getXPreviousPageBtn(), getYPreviousPageBtn(), -1, 5, 0);
+
setFrame(&data, 14 + isDownBtn.nextPage);
D2PrintImage(&data, getXNextPageBtn(), getYNextPageBtn(), -1, 5, 0);
D2SetFont(1);
- if (D2GetResolution() && isOnPreviousPageBtn(mx,my)) //print popup "previous page"
+ if (isOnPreviousPageBtn(mx,my)) //print popup "previous page"
{
lpText = getLocalString(STR_PREVIOUS_PAGE);
D2PrintPopup(lpText, getXPreviousPageBtn()+getLPreviousPageBtn()/2, getYPreviousPageBtn()-getHPreviousPageBtn(), WHITE, 1);
@@ -84,6 +84,12 @@ Unit* STDCALL statsPageMouseDown(sWinMessage* msg)
if (!active_newInterfaces || !D2isLODGame() ) return ptChar;
+ if (statsLeftDown(msg)) {
+ freeMessage(msg);
+ return NULL;
+ }
+
+ /*
if (D2GetResolution() && isOnPreviousPageBtn(msg->x,msg->y))
{
log_msg("push down left button previous page\n");
@@ -100,6 +106,7 @@ Unit* STDCALL statsPageMouseDown(sWinMessage* msg)
freeMessage(msg);
return NULL;
}
+ */
return ptChar;
}
@@ -110,6 +117,13 @@ Unit* STDCALL statsPageMouseUp(sWinMessage* msg)
if (!active_newInterfaces || !D2isLODGame() ) return ptChar;
+ if (statsLeftUp(msg)) {
+ isDownBtn.all=0;
+ freeMessage(msg);
+ return NULL;
+ }
+
+ /*
if (D2GetResolution() && isOnPreviousPageBtn(msg->x,msg->y))
{
log_msg("push up left button previous page\n");
@@ -134,6 +148,7 @@ Unit* STDCALL statsPageMouseUp(sWinMessage* msg)
return NULL;
}
}
+ */
isDownBtn.all=0;
return ptChar;
diff --git a/PlugY/LocalizedStrings.cpp b/PlugY/LocalizedStrings.cpp
index 70595ee..3c76d87 100644
--- a/PlugY/LocalizedStrings.cpp
+++ b/PlugY/LocalizedStrings.cpp
@@ -51,7 +51,7 @@ LPCWSTR getLocalTypeString(DWORD code)
{
if (sLocalizedTypeStrings[i].code == code)
{
- log_msg("Code=%08X\n", code);
+ //log_msg("Code=%08X\n", code);
if (sLocalizedTypeStrings[i].itemStr)
return StripGender(D2GetStringFromString(sLocalizedTypeStrings[i].itemStr));
LPWSTR text = StripGender(sLocalizedTypeStrings[i].typeLocalizedString);
@@ -300,6 +300,8 @@ void loadLocalizedStrings(int language)
LOAD(STR_SHARED_GOLD_QUANTITY);
LOAD(STR_PREVIOUS_PAGE);
LOAD(STR_NEXT_PAGE);
+ LOAD(STR_PREVIOUS_RUNE);
+ LOAD(STR_NEXT_RUNE);
LOAD(STR_ITEM_LEVEL);
LOAD(STR_PAGE_TYPE_CHANGE);
diff --git a/PlugY/LocalizedStrings.h b/PlugY/LocalizedStrings.h
index 9fb08e7..0e7b83d 100644
--- a/PlugY/LocalizedStrings.h
+++ b/PlugY/LocalizedStrings.h
@@ -37,6 +37,8 @@ enum eStringList
STR_SHARED_GOLD_QUANTITY,
STR_PREVIOUS_PAGE,
STR_NEXT_PAGE,
+ STR_PREVIOUS_RUNE,
+ STR_NEXT_RUNE,
STR_ITEM_LEVEL,
STR_PAGE_TYPE_CHANGE,
//
diff --git a/PlugY/NewInterface_CubeListing.cpp b/PlugY/NewInterface_CubeListing.cpp
index 1c54331..d50c8bc 100644
--- a/PlugY/NewInterface_CubeListing.cpp
+++ b/PlugY/NewInterface_CubeListing.cpp
@@ -233,12 +233,6 @@ DWORD print(CubeMainBIN* curForm, LPWSTR buf, LPINT len, DWORD)//maxsize)
printInputItem(&curForm->input6, buf, len, &realNbInputs);
printInputItem(&curForm->input7, buf, len, &realNbInputs);
- if (realNbInputs != curForm->numinputs)
- {
- PRINT(BUF, L" *** ERROR : numInputs(%d) != realNbInputs(%d) ***", curForm->numinputs, realNbInputs);
- return 1;
- }
-
PRINT(BUF,L" => ");
int realNbOutputs=0;
@@ -269,6 +263,9 @@ DWORD print(CubeMainBIN* curForm, LPWSTR buf, LPINT len, DWORD)//maxsize)
// if (curForm->version == 100)
// sprintf(BUF, " [expansion only]");
+ if (realNbInputs != curForm->numinputs)
+ PRINT(BUF, L" *** ERROR : numInputs(%d) != realNbInputs(%d) ***", curForm->numinputs, realNbInputs);
+
return 1;
}
#undef BUF
diff --git a/PlugY/NewInterface_Runewords.cpp b/PlugY/NewInterface_Runewords.cpp
index 99d1f38..13efd9f 100644
--- a/PlugY/NewInterface_Runewords.cpp
+++ b/PlugY/NewInterface_Runewords.cpp
@@ -12,6 +12,7 @@
#include "common.h"
#include <stdio.h>
+/*
#define NB_RUNES_PER_PAGE 25
#define getXCloseBtn() 360
@@ -53,6 +54,7 @@ static struct
};
};
} isDownBtn;
+*/
void printRuneword(RunesBIN* runesData, DWORD pos)
@@ -64,7 +66,7 @@ void printRuneword(RunesBIN* runesData, DWORD pos)
D2SetFont(6);
DWORD nbPixel = D2GetPixelLen(lpText);
DWORD x1 = (nbPixel >= 195) ? 0 : 195-nbPixel;
- D2PrintString(lpText, x1, 10 + pos*20, GOLD, 0);//MILIEU(0x00,0x70,nbPixel)
+ D2PrintString(lpText, posXRunesList + RX(x1), posYRunesList + 10 + pos*20, GOLD, 0);//MILIEU(0x00,0x70,nbPixel)
typesList[0]=L'\0';
DWORD numItype=0;
@@ -80,7 +82,7 @@ void printRuneword(RunesBIN* runesData, DWORD pos)
}
nbPixel = D2GetPixelLen(typesList);
x1 = (nbPixel >= 195) ? 0 : 195-nbPixel;
- D2PrintString(typesList, x1, 20 + pos*20, WHITE, 0);//MILIEU(0x70,0xA0,nbPixel)
+ D2PrintString(typesList, posXRunesList + RX(x1), posYRunesList + 20 + pos*20, WHITE, 0);//MILIEU(0x70,0xA0,nbPixel)
runesList[0]=L'\0';
DWORD numRune=0;
@@ -115,7 +117,7 @@ void printRuneword(RunesBIN* runesData, DWORD pos)
}
// x1 = (nbPixel < 145) ? 155 : 300-nbPixel;
- D2PrintString(runesList, x1, y1 + pos*20, WHITE, 0);//MILIEU(0xD0,0xA0,nbPixel)
+ D2PrintString(runesList, posXRunesList + RX(x1), posYRunesList + y1 + pos*20, WHITE, 0);//MILIEU(0xD0,0xA0,nbPixel)
}
@@ -123,48 +125,58 @@ void printRuneword(RunesBIN* runesData, DWORD pos)
//6FB21FAA
void STDCALL printRunewordsPage()
{
- if (!D2isLODGame() || !D2GetResolution()) return D2PrintStatsPage();
+ if (!D2isLODGame()) return D2PrintStatsPage();
LPWSTR lpText;
- bDontPrintBorder = true;
+ bDontPrintBorder = D2GetResolution()? true : false;
//Init data for print image
sDrawImageInfo data;
ZeroMemory(&data,sizeof(data));
//print background
-/* setImage(&data, newStatsInterfaceImages);
+ fillRect(RX(0), RY(ResolutionY), 512, 768, 0, 5);
+ setImage(&data, newStatsInterfaceImages);
setFrame(&data, 0);
- D2PrintImage(&data, 0, 256, -1, 5, 0);
+ D2PrintImage(&data, RX(0), RY(ResolutionY-256), -1, 5, 0);
setFrame(&data, 1);
- D2PrintImage(&data, 256,256, -1, 5, 0);
+ D2PrintImage(&data, RX(256),RY(ResolutionY-256), -1, 5, 0);
setFrame(&data, 2);
- D2PrintImage(&data, 0, 512, -1, 5, 0);
+ D2PrintImage(&data, RX(0), RY(ResolutionY-256*2), -1, 5, 0);
setFrame(&data, 3);
- D2PrintImage(&data, 256,512, -1, 5, 0);
+ D2PrintImage(&data, RX(256),RY(ResolutionY-256*2), -1, 5, 0);
setFrame(&data, 4);
- D2PrintImage(&data, 0, 552, -1, 5, 0);
+ D2PrintImage(&data, RX(0), RY(ResolutionY-256*3), -1, 5, 0);
setFrame(&data, 5);
- D2PrintImage(&data, 256,552, -1, 5, 0);
-*/
- fillRect(0,0,400,552,0,5);
+ D2PrintImage(&data, RX(256),RY(ResolutionY-256*3), -1, 5, 0);
+
+ if (printBackgroundOnMainPage)
+ {
+ setImage(&data, statsBackgroundImages);
+ setFrame(&data, 1);
+ D2PrintImage(&data, getXPreviousPageBtn()-7, getYPreviousPageBtn()+8, -1, 5, 0);
+ D2PrintImage(&data, getXPrevRunesBtn()-7, getYPrevRunesBtn()+8, -1, 5, 0);
+ }
//print button close
setImage(&data, D2LoadBuySelBtn());
setFrame(&data, 10 + isDownBtn.close);
D2PrintImage(&data, getXCloseBtn(), getYCloseBtn(), -1, 5, 0);
+ //print previous page button
+ setFrame(&data, 12 + isDownBtn.previousPage);
+ D2PrintImage(&data, getXPreviousPageBtn(), getYPreviousPageBtn(), -1, 5, 0);
+
//print next page button
- setFrame(&data, isDownBtn.nextPage);
+ setFrame(&data, 14 + isDownBtn.nextPage);
D2PrintImage(&data, getXNextPageBtn(), getYNextPageBtn(), -1, 5, 0);
//print previous runes button
- setImage(&data, stashBtnsImages);
- setFrame(&data, isDownBtn.prevRunes);
+ setFrame(&data, 12 + isDownBtn.prevRunes);
D2PrintImage(&data, getXPrevRunesBtn(), getYPrevRunesBtn(), -1, 5, 0);
//print previous runes button
- setFrame(&data, 2 + isDownBtn.nextRunes);
+ setFrame(&data, 14 + isDownBtn.nextRunes);
D2PrintImage(&data, getXNextRunesBtn(), getYNextRunesBtn(), -1, 5, 0);
D2SetFont(6);
@@ -181,11 +193,11 @@ void STDCALL printRunewordsPage()
{
if (!runesData->Complete || runesData->Server) continue;
nbRunesCompleted++;
- if ( (curRunesPage * NB_RUNES_PER_PAGE < nbRunesCompleted) &&
- (nbRunesCompleted <= (curRunesPage+1) * NB_RUNES_PER_PAGE) )
+ if ( (curRunesPage * runesPerPage < nbRunesCompleted) &&
+ (nbRunesCompleted <= (curRunesPage+1) * runesPerPage) )
printRuneword(runesData, curNbRunes++);
}
- maxRunesPage = nbRunesCompleted ? (nbRunesCompleted-1) / NB_RUNES_PER_PAGE : 0;
+ maxRunesPage = nbRunesCompleted ? (nbRunesCompleted-1) / runesPerPage : 0;
//////////////////// POPUP PRINTING ////////////////////
@@ -197,11 +209,26 @@ void STDCALL printRunewordsPage()
{
D2PrintPopup(D2GetStringFromIndex(0x1030), getXCloseBtn()+getLCloseBtn()/2, getYCloseBtn()-getHCloseBtn(), WHITE, 1);
}
+ else if (isOnPreviousPageBtn(x,y)) //print popup "previous page"
+ {
+ lpText = getLocalString(STR_PREVIOUS_PAGE);
+ D2PrintPopup(lpText, getXPreviousPageBtn()+getLPreviousPageBtn()/2, getYPreviousPageBtn()-getHPreviousPageBtn(), WHITE, 1);
+ }
else if (isOnNextPageBtn(x,y)) // print popup "next page"
{
lpText = getLocalString(STR_NEXT_PAGE);
D2PrintPopup(lpText, getXNextPageBtn()+getLNextPageBtn()/2, getYNextPageBtn()-getHNextPageBtn(), WHITE, 1);
}
+ else if (isOnPrevRunesBtn(x,y)) // print popup "previous rune"
+ {
+ lpText = getLocalString(STR_PREVIOUS_RUNE);
+ D2PrintPopup(lpText, getXPrevRunesBtn()+getLPrevRunesBtn()/2, getYPrevRunesBtn()-getHPrevRunesBtn(), WHITE, 1);
+ }
+ else if (isOnNextRunesBtn(x,y)) // print popup "next rune"
+ {
+ lpText = getLocalString(STR_NEXT_RUNE);
+ D2PrintPopup(lpText, getXNextRunesBtn()+getLNextRunesBtn()/2, getYNextRunesBtn()-getHNextRunesBtn(), WHITE, 1);
+ }
}
//////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/PlugY/NewInterface_Stats.cpp b/PlugY/NewInterface_Stats.cpp
index 10fa32d..d73c5da 100644
--- a/PlugY/NewInterface_Stats.cpp
+++ b/PlugY/NewInterface_Stats.cpp
@@ -13,6 +13,7 @@
#include <stdio.h>
+/*
#define getXCloseBtn() 360
#define getLCloseBtn() 32
#define getYCloseBtn() (ResolutionY - 60)
@@ -92,6 +93,7 @@ void** ptD2AssignStatsPointsBtnImages = (void**)0x6FBB5BB4;
+/*
static struct
{
union{
@@ -111,6 +113,7 @@ static struct
};
};
} isDownBtn;
+*/
void print2Lines(WORD id, LPWSTR lpText, DWORD x, DWORD l, DWORD y)
diff --git a/PlugY/NewInterface_StatsPageTwo.cpp b/PlugY/NewInterface_StatsPageTwo.cpp
index dfdc8a1..6215dd6 100644
--- a/PlugY/NewInterface_StatsPageTwo.cpp
+++ b/PlugY/NewInterface_StatsPageTwo.cpp
@@ -12,6 +12,7 @@
#include "common.h"
#include <stdio.h>
+/*
#define getXCloseBtn() RX(0x110)
#define getLCloseBtn() 32
#define getYCloseBtn() RY(0x40)
@@ -29,11 +30,13 @@
#define getYNextPageBtn() RY(0x40)
#define getHNextPageBtn() 32
#define isOnNextPageBtn(x,y) isOnRect(x, y, getXNextPageBtn(), getYNextPageBtn(), getLNextPageBtn(), getHNextPageBtn())
+*/
const char * STATS_INTERFACE_FILENAME = "PlugY\\statsinterface.txt";
#define BUFSIZE 0x400
+/*
static struct
{
union{
@@ -45,6 +48,7 @@ static struct
};
};
} isDownBtn;
+*/
struct statsInterfaceBIN
@@ -337,8 +341,7 @@ void STDCALL printNewStatsPageTwo(int currentPage)
WCHAR text[BUFSIZE];
LPWSTR lpText;
- bDontPrintBorder = false;
-
+ bDontPrintBorder = D2GetResolution()? true : false;
Unit* ptChar = D2GetClientPlayer();
d2_assert(!ptChar, "Printing stats page : no character selected",__FILE__,__LINE__);
@@ -349,16 +352,20 @@ void STDCALL printNewStatsPageTwo(int currentPage)
ZeroMemory(&data,sizeof(data));
//print background
- fillRect(RX(0),RY(480),320,432,0,5);//552
+ fillRect(RX(0), RY(ResolutionY), 512, 768, 0, 5);
setImage(&data, newStatsInterfaceImages);
setFrame(&data, 0);
- D2PrintImage(&data, RX(0), RY(224), -1, 5, 0);
+ D2PrintImage(&data, RX(0), RY(ResolutionY-256), -1, 5, 0);
setFrame(&data, 1);
- D2PrintImage(&data, RX(256),RY(224), -1, 5, 0);//256
+ D2PrintImage(&data, RX(256),RY(ResolutionY-256), -1, 5, 0);
setFrame(&data, 2);
- D2PrintImage(&data, RX(0), RY(48), -1, 5, 0);//432
+ D2PrintImage(&data, RX(0), RY(ResolutionY-256*2), -1, 5, 0);
setFrame(&data, 3);
- D2PrintImage(&data, RX(256),RY(48), -1, 5, 0);
+ D2PrintImage(&data, RX(256),RY(ResolutionY-256*2), -1, 5, 0);
+ setFrame(&data, 4);
+ D2PrintImage(&data, RX(0), RY(ResolutionY-256*3), -1, 5, 0);
+ setFrame(&data, 5);
+ D2PrintImage(&data, RX(256),RY(ResolutionY-256*3), -1, 5, 0);
D2SetFont(1);
for (int i=0; i<nbStatsInterface; i++)
@@ -392,10 +399,12 @@ void STDCALL printNewStatsPageTwo(int currentPage)
D2PrintString(text, x, y, WHITE, 0);
*/
- //print background previous/next page buttons
- setImage(&data, statsBackgroundImages);
- setFrame(&data, D2GetResolution()?1:0);
- D2PrintImage(&data, getXPreviousPageBtn()-7, getYPreviousPageBtn()+8, -1, 5, 0);
+ if (printBackgroundOnMainPage) {
+ //print background previous/next page buttons
+ setImage(&data, statsBackgroundImages);
+ setFrame(&data, 1);
+ D2PrintImage(&data, getXPreviousPageBtn()-7, getYPreviousPageBtn()+8, -1, 5, 0);
+ }
//print button close
setImage(&data, D2LoadBuySelBtn());
diff --git a/PlugY/NewInterfaces.cpp b/PlugY/NewInterfaces.cpp
index 2bcb2f1..91003fb 100644
--- a/PlugY/NewInterfaces.cpp
+++ b/PlugY/NewInterfaces.cpp
@@ -22,11 +22,39 @@ bool active_newInterfaces=false;
bool selectMainPageOnOpenning=true;
bool printBackgroundOnMainPage=true;
+int posXNextPageBtn = -1;
+int posYNextPageBtn = -1;
+int posXPrevPageBtn = -1;
+int posYPrevPageBtn = -1;
+int posXClosePageBtn = -1;
+int posYClosePageBtn = -1;
+int posXNextRuneBtn = -1;
+int posYNextRuneBtn = -1;
+int posXPrevRuneBtn = -1;
+int posYPrevRuneBtn = -1;
+int posXRunesList = -1;
+int posYRunesList = -1;
+int runesPerPage = -1;
+
+DWORD getXNextPageBtn() {return RX(posXNextPageBtn);}
+DWORD getYNextPageBtn() {return RY(posYNextPageBtn);}
+DWORD getXPreviousPageBtn() {return RX(posXPrevPageBtn);}
+DWORD getYPreviousPageBtn() {return RY(posYPrevPageBtn);}
+DWORD getXCloseBtn() {return RX(posXClosePageBtn);}
+DWORD getYCloseBtn() {return RY(posYClosePageBtn);}
+DWORD getXNextRunesBtn() {return RX(posXNextRuneBtn);}
+DWORD getYNextRunesBtn() {return RY(posYNextRuneBtn);}
+DWORD getXPrevRunesBtn() {return RX(posXPrevRuneBtn);}
+DWORD getYPrevRunesBtn() {return RY(posYPrevRuneBtn);}
+
DWORD bDontPrintBorder=false;
int selectedPage=0;
int lastPage=0;
int extraHiddenPage=0;
+int curRunesPage=0;
+int maxRunesPage=0xFFFF;
+BtnState isDownBtn={0};
void GoNextStatPage()
{
@@ -44,8 +72,12 @@ void GoPreviousStatPage()
void GoStatPage(int page)
{
- if ( (page >= 0) && (page <= lastPage + (D2GetResolution()? extraHiddenPage : 0)) )
+ if ( (page >= 0) && (page <= (lastPage + extraHiddenPage)) )
selectedPage = page;
+ else if (page < 0)
+ selectedPage = lastPage + extraHiddenPage;
+ else
+ selectedPage = 0;
}
int GetCurrentPage()
@@ -83,6 +115,16 @@ DWORD STDCALL mouseCustomPageLeftDown(sWinMessage* msg)
DWORD STDCALL mouseCustomPageLeftUp(sWinMessage* msg)
{
if(onRealm) return -1;
+
+ if (selectedPage == 0) return -1;
+ if (!isOnStatsPage(msg->x,msg->y)) return 1;
+ statsLeftUp(msg);
+ D2CleanStatMouseUp();
+ freeMessage(msg);
+ isDownBtn.all=0;
+ return 0;
+
+ /*
if ( (selectedPage > 0) && (selectedPage <= lastPage) )
return mouseNewStatsPageTwoLeftUp(msg);
else if (selectedPage == lastPage+1)
@@ -91,6 +133,87 @@ DWORD STDCALL mouseCustomPageLeftUp(sWinMessage* msg)
return mouseNewStatsPageLeftUp(msg);
else
return -1;
+ */
+}
+
+DWORD STDCALL statsLeftDown(sWinMessage* msg)
+{
+ if (isOnCloseBtn(msg->x,msg->y) && selectedPage != 0)
+ {
+ log_msg("push down left button close\n");
+ isDownBtn.close = 1;
+ D2PlaySound(4,0,0,0,0);
+ return 1;
+ }
+ else if (isOnPreviousPageBtn(msg->x,msg->y))
+ {
+ log_msg("push down left button previous page\n");
+ isDownBtn.previousPage = 1;
+ D2PlaySound(4,0,0,0,0);
+ return 1;
+ }
+ else if (isOnNextPageBtn(msg->x,msg->y))
+ {
+ log_msg("push down left button next page\n");
+ isDownBtn.nextPage = 1;
+ D2PlaySound(4,0,0,0,0);
+ return 1;
+ }
+ else if (isOnPrevRunesBtn(msg->x,msg->y) && selectedPage == (lastPage + extraHiddenPage))
+ {
+ log_msg("push down left button prev runes\n");
+ isDownBtn.prevRunes = 1;
+ D2PlaySound(4,0,0,0,0);
+ return 1;
+ }
+ else if (isOnNextRunesBtn(msg->x,msg->y) && selectedPage == (lastPage + extraHiddenPage))
+ {
+ log_msg("push down left button next runes\n");
+ isDownBtn.nextRunes = 1;
+ D2PlaySound(4,0,0,0,0);
+ return 1;
+ }
+ return 0;
+}
+
+DWORD STDCALL statsLeftUp(sWinMessage* msg)
+{
+ if (isOnCloseBtn(msg->x,msg->y) && selectedPage != 0)
+ {
+ log_msg("push up left button close\n");
+ if (isDownBtn.close)
+ D2TogglePage(2,1,0);
+ return 1;
+ }
+ else if (isOnPreviousPageBtn(msg->x,msg->y))
+ {
+ log_msg("push up left button previous page\n");
+ if (isDownBtn.previousPage)
+ GoStatPage(selectedPage-1);
+ return 1;
+ }
+ else if (isOnNextPageBtn(msg->x,msg->y))
+ {
+ log_msg("push up left button next page\n");
+ if (isDownBtn.nextPage)
+ GoStatPage(selectedPage+1);
+ return 1;
+ }
+ else if (isOnPrevRunesBtn(msg->x,msg->y) && selectedPage == (lastPage + extraHiddenPage))
+ {
+ log_msg("push up left button prev runes\n");
+ if (isDownBtn.prevRunes && curRunesPage)
+ curRunesPage--;
+ return 1;
+ }
+ else if (isOnNextRunesBtn(msg->x,msg->y) && selectedPage == (lastPage + extraHiddenPage))
+ {
+ log_msg("push up left button next runes\n");
+ if (isDownBtn.nextRunes && (curRunesPage < maxRunesPage))
+ curRunesPage++;
+ return 1;
+ }
+ return 0;
}
FCT_ASM ( caller_DontPrintBorder_114 )
@@ -474,6 +597,7 @@ void Install_NewInterfaces()
//00498636 |. 6A 48 PUSH 48
//00498638 |. 8D45 B8 LEA EAX,DWORD PTR SS:[EBP-48]
+ /* Conflicts with D2ExpRes
// Manage mouse down (Play sound)
mem_seek R8(D2Client, 2A9DC, 2A9CC, 312A5, 82736, 891B6, 6B116, BCD36, BF4D6, A7731);
memt_byte( 0x8D, 0xE8 ); // CALL
@@ -486,6 +610,7 @@ void Install_NewInterfaces()
//6FB6CD36 . 8D88 80000000 LEA ECX,DWORD PTR DS:[EAX+80]
//6FB6F4D6 . 8D88 80000000 LEA ECX,DWORD PTR DS:[EAX+80]
//004A7731 . 8D88 80000000 LEA ECX,DWORD PTR DS:[EAX+80]
+ */
// Manage mouse up
mem_seek R8(D2Client, 2ABBB, 2ABAB, 3148D, 836D9, 8A159, 6C0B9, BDCB9, C0459, A78DA);
diff --git a/PlugY/Parameters.cpp b/PlugY/Parameters.cpp
index b4dc915..392c112 100644
--- a/PlugY/Parameters.cpp
+++ b/PlugY/Parameters.cpp
@@ -58,6 +58,7 @@ const char* S_dllFilenames2 = "DllToLoad2";
const char* S_active_Commands = "ActiveCommands";
const char* S_active_CheckMemory = "ActiveCheckMemory";
const char* S_active_othersFeatures = "ActiveAllOthersFeatures";
+const char* S_saveFileStackSize = "SaveFileStackSize";
const char* S_WINDOWED = "WINDOWED";
const char* S_ActiveWindowed = "ActiveWindowed";
@@ -214,6 +215,19 @@ const char* S_INTERFACE = "INTERFACE";
const char* S_active_newInterfaces = "ActiveNewStatsInterface";
const char* S_selectMainPageOnOpenning = "SelectMainPageOnOpenning";
const char* S_printBackgroundOnMainPage = "PrintButtonsBackgroundOnMainStatsPage";
+const char* S_posXNextPageBtn = "PosXNextPageBtn";
+const char* S_posYNextPageBtn = "PosYNextPageBtn";
+const char* S_posXPrevPageBtn = "PosXPrevPageBtn";
+const char* S_posYPrevPageBtn = "PosYPrevPageBtn";
+const char* S_posXClosePageBtn = "PosXClosePageBtn";
+const char* S_posYClosePageBtn = "PosYClosePageBtn";
+const char* S_posXNextRuneBtn = "PosXNextRuneBtn";
+const char* S_posYNextRuneBtn = "PosYNextRuneBtn";
+const char* S_posXPrevRuneBtn = "PosXPrevRuneBtn";
+const char* S_posYPrevRuneBtn = "PosYPrevRuneBtn";
+const char* S_posXRunesList = "PosXRunesList";
+const char* S_posYRunesList = "PosYRunesList";
+const char* S_runesPerPage = "RunesPerPage";
const char* S_EXTRA = "EXTRA";
const char* S_active_RunLODs = "ActiveLaunchAnyNumberOfLOD";
@@ -316,6 +330,10 @@ void init_General(INIFile* iniFile, INIFile* iniFixedFile, INIFile* iniDefaultFi
active_othersFeatures = atoi(buffer) != 0;
log_msg("active_othersFeatures\t\t= %u\n", active_othersFeatures);
+ GET_PRIVATE_PROFILE_STRING(S_GENERAL, S_saveFileStackSize, "8192");
+ saveFileStackSize = atoi(buffer);
+ log_msg("SaveFileStackSize\t\t\t= %u\n", saveFileStackSize);
+
log_msg("\n");
}
@@ -1032,6 +1050,52 @@ void init_NewInterfaces(INIFile* iniFile, INIFile* iniFixedFile, INIFile* iniDef
GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_printBackgroundOnMainPage, "1");
printBackgroundOnMainPage = atoi(buffer) != 0;
log_msg("printBackgroundOnMainPage\t= %u\n", printBackgroundOnMainPage);
+
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posXNextPageBtn, "161");
+ posXNextPageBtn = atoi(buffer);
+ log_msg("posXNextPageBtn\t= %d\n", posXNextPageBtn);
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posYNextPageBtn, "64");
+ posYNextPageBtn = atoi(buffer);
+ log_msg("posYNextPageBtn\t= %d\n", posYNextPageBtn);
+
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posXPrevPageBtn, "119");
+ posXPrevPageBtn = atoi(buffer);
+ log_msg("posXPrevPageBtn\t= %d\n", posXPrevPageBtn);
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posYPrevPageBtn, "64");
+ posYPrevPageBtn = atoi(buffer);
+ log_msg("posYPrevPageBtn\t= %d\n", posYPrevPageBtn);
+
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posXClosePageBtn, "360");
+ posXClosePageBtn = atoi(buffer);
+ log_msg("posXClosePageBtn\t= %d\n", posXClosePageBtn);
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posYClosePageBtn, "64");
+ posYClosePageBtn = atoi(buffer);
+ log_msg("posYClosePageBtn\t= %d\n", posYClosePageBtn);
+
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posXNextRuneBtn, "302");
+ posXNextRuneBtn = atoi(buffer);
+ log_msg("posXNextRuneBtn\t= %d\n", posXNextRuneBtn);
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posYNextRuneBtn, "64");
+ posYNextRuneBtn = atoi(buffer);
+ log_msg("posYNextRuneBtn\t= %d\n", posYNextRuneBtn);
+
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posXPrevRuneBtn, "260");
+ posXPrevRuneBtn = atoi(buffer);
+ log_msg("posXPrevRuneBtn\t= %d\n", posXPrevRuneBtn);
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posYPrevRuneBtn, "64");
+ posYPrevRuneBtn = atoi(buffer);
+ log_msg("posYPrevRuneBtn\t= %d\n", posYPrevRuneBtn);
+
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posXRunesList, "50");
+ posXRunesList = atoi(buffer);
+ log_msg("posXRunesList\t= %d\n", posXRunesList);
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_posYRunesList, "45");
+ posYRunesList = atoi(buffer);
+ log_msg("posYRunesList\t= %d\n", posYRunesList);
+
+ GET_PRIVATE_PROFILE_STRING(S_INTERFACE, S_runesPerPage, "30");
+ runesPerPage = atoi(buffer);
+ log_msg("runesPerPage\t= %d\n", runesPerPage);
}
log_msg("\n");
}
diff --git a/PlugY/infinityStash.h b/PlugY/infinityStash.h
index 0ca6b4d..123705d 100644
--- a/PlugY/infinityStash.h
+++ b/PlugY/infinityStash.h
@@ -18,6 +18,7 @@ extern bool active_sharedStash;
extern bool active_sharedGold;
extern bool separateHardSoftStash;
extern char* sharedStashFilename;
+extern DWORD saveFileStackSize;
extern bool displaySharedSetItemNameInGreen;
extern int posXPreviousBtn;
diff --git a/PlugY/newInterfaces.h b/PlugY/newInterfaces.h
index de51f26..c4c4ff3 100644
--- a/PlugY/newInterfaces.h
+++ b/PlugY/newInterfaces.h
@@ -9,20 +9,94 @@
#include "common.h"
#define MILIEU(X,L,N) (X + ((N<L)? (L-N)/2 : 0))
-#define isOnStatsPage(x,y) ((x<400) && (y<553))
+#define isOnStatsPage(x,y) (x<RX(512))
extern DWORD bDontPrintBorder;
+extern int selectedPage;
extern int extraHiddenPage;
+extern int curRunesPage;
+extern int maxRunesPage;
void GoNextStatPage();
void GoPreviousStatPage();
void GoStatPage(int page);
int GetCurrentPage();
+struct BtnState
+{
+ union{
+ DWORD all;
+ struct{
+ DWORD AssSTR:1;
+ DWORD AssDEX:1;
+ DWORD AssVIT:1;
+ DWORD AssENE:1;
+ DWORD UnaSTR:1;
+ DWORD UnaDEX:1;
+ DWORD UnaVIT:1;
+ DWORD UnaENE:1;
+ DWORD close:1;
+ DWORD previousPage:1;
+ DWORD nextPage:1;
+ DWORD prevRunes:1;
+ DWORD nextRunes:1;
+ };
+ };
+};
+extern BtnState isDownBtn;
+
extern bool active_newInterfaces;
extern bool selectMainPageOnOpenning;
extern bool printBackgroundOnMainPage;
+extern int posXNextPageBtn;
+extern int posYNextPageBtn;
+extern int posXPrevPageBtn;
+extern int posYPrevPageBtn;
+extern int posXClosePageBtn;
+extern int posYClosePageBtn;
+extern int posXNextRuneBtn;
+extern int posYNextRuneBtn;
+extern int posXPrevRuneBtn;
+extern int posYPrevRuneBtn;
+extern int posXRunesList;
+extern int posYRunesList;
+extern int runesPerPage;
+
+DWORD getXNextPageBtn();
+DWORD getYNextPageBtn();
+DWORD getXPreviousPageBtn();
+DWORD getYPreviousPageBtn();
+DWORD getXCloseBtn();
+DWORD getYCloseBtn();
+DWORD getXNextRunesBtn();
+DWORD getYNextRunesBtn();
+DWORD getXPrevRunesBtn();
+DWORD getYPrevRunesBtn();
+
+#define getLCloseBtn() 32
+#define getHCloseBtn() 32
+#define isOnCloseBtn(x,y) isOnRect(x, y, getXCloseBtn(), getYCloseBtn(), getLCloseBtn(), getHCloseBtn())
+
+#define getLPreviousPageBtn() 32
+#define getHPreviousPageBtn() 32
+#define isOnPreviousPageBtn(x,y) isOnRect(x, y, getXPreviousPageBtn(), getYPreviousPageBtn(), getLPreviousPageBtn(), getHPreviousPageBtn())
+
+#define getLNextPageBtn() 32
+#define getHNextPageBtn() 32
+#define isOnNextPageBtn(x,y) isOnRect(x, y, getXNextPageBtn(), getYNextPageBtn(), getLNextPageBtn(), getHNextPageBtn())
+
+#define getLPrevRunesBtn() 32
+#define getHPrevRunesBtn() 32
+#define isOnPrevRunesBtn(x,y) isOnRect(x, y, getXPrevRunesBtn(), getYPrevRunesBtn(), getLPrevRunesBtn(), getHPrevRunesBtn())
+
+#define getLNextRunesBtn() 32
+#define getHNextRunesBtn() 32
+#define isOnNextRunesBtn(x,y) isOnRect(x, y, getXNextRunesBtn(), getYNextRunesBtn(), getLNextRunesBtn(), getHNextRunesBtn())
+
+DWORD STDCALL statsLeftDown(sWinMessage* msg);
+DWORD STDCALL statsLeftUp(sWinMessage* msg);
+
void Install_NewInterfaces();
/*================================= END OF FILE =================================*/
\ No newline at end of file
diff --git a/PlugY/parameters.h b/PlugY/parameters.h
index d426c99..1cf884c 100644
--- a/PlugY/parameters.h
+++ b/PlugY/parameters.h
@@ -6,7 +6,7 @@
=================================================================*/
#pragma once
-#define PLUGY_VERSION "14.03"
+#define PLUGY_VERSION "14.03 HD"
enum TargetMod
{