diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7cdd089
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/.vs
+/DataServer/Debug
+/DataServer/Dataserver.vcxproj.user
diff --git a/DataServer/CQuery.h b/DataServer/CQuery.h
index dff4084..6f0ba57 100644
--- a/DataServer/CQuery.h
+++ b/DataServer/CQuery.h
@@ -4,9 +4,17 @@
class CQuery
{
public:
- // ִ ÷, BLOB , NULL ʵ尪
- enum { MAXCOL=100, BLOBBATCH=10000, CQUERYNULL=-100, CQUERYEOF=-101,
- CQUERYNOCOL=-102, CQUERYERROR=-103 };
+
+ enum
+ {
+ MAXCOL = 100,
+ BLOBBATCH = 10000,
+ CQUERYNULL = -100,
+ CQUERYEOF = -101,
+ CQUERYNOCOL = -102,
+ CQUERYERROR = -103
+ };
+
private:
SQLHENV hEnv; // ȯ ڵ
SQLHDBC hDbc; // ڵ
@@ -20,6 +28,7 @@ class CQuery
int FindCol(char *name); // ÷ ̸κ ȣ ãش.
BOOL ReConnect();
+
public:
SQLINTEGER AffectCount; // ڵ
SQLHSTMT hStmt; // ڵ. Ƿ public
diff --git a/DataServer/Dataserver.vcxproj b/DataServer/Dataserver.vcxproj
index c8250cd..0e6a6bd 100644
--- a/DataServer/Dataserver.vcxproj
+++ b/DataServer/Dataserver.vcxproj
@@ -21,21 +21,21 @@
{31FCC9EC-F161-4F2D-9709-27F984C95106}
Dataserver
- 8.1
+ 10.0
MFCProj
Application
true
- v141
+ v142
MultiByte
Dynamic
Application
false
- v140_xp
+ v141_xp
false
MultiByte
Dynamic
@@ -43,14 +43,14 @@
Application
true
- v141
+ v142
Unicode
Dynamic
Application
false
- v141
+ v142
true
Unicode
Dynamic
@@ -75,15 +75,20 @@
true
+ $(ExecutablePath)
+ $(ProjectDir);$(IncludePath)
true
+ $(ProjectDir);$(IncludePath)
false
+ $(ProjectDir);$(IncludePath)
false
+ $(ProjectDir);$(IncludePath)
@@ -202,7 +207,6 @@
-
diff --git a/DataServer/Dataserver.vcxproj.filters b/DataServer/Dataserver.vcxproj.filters
index fed649f..b3c7dd7 100644
--- a/DataServer/Dataserver.vcxproj.filters
+++ b/DataServer/Dataserver.vcxproj.filters
@@ -31,9 +31,6 @@
{87b90925-a7f7-4013-a19d-f08b81f8c780}
-
- {247cb460-1a57-4be0-a8c8-b938c53108ed}
-
@@ -261,9 +258,6 @@
Include
-
- Common
-
Common
diff --git a/DataServer/DbSet/AccountCharDBSet.cpp b/DataServer/DbSet/AccountCharDBSet.cpp
index 1a64370..7b01d3f 100644
--- a/DataServer/DbSet/AccountCharDBSet.cpp
+++ b/DataServer/DbSet/AccountCharDBSet.cpp
@@ -1,27 +1,17 @@
-// AccountCharDBSet.cpp: implementation of the CAccountCharDBSet class.
-// Decompilation Completed -> All Same as WebZen
-//////////////////////////////////////////////////////////////////////
-
#include "stdafx.h"
#include "AccountCharDBSet.h"
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
-
CAccountCharDBSet::CAccountCharDBSet()
{
-
}
CAccountCharDBSet::~CAccountCharDBSet()
{
-
}
BOOL CAccountCharDBSet::Connect()
{
- if(m_DBQuery.Connect(3,szDbConnectDsn,szDbConnectID,szDbConnectPass) == FALSE)
+ if (m_DBQuery.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass) == FALSE)
{
MsgBox(" DB ");
return FALSE;
@@ -34,20 +24,22 @@ BOOL CAccountCharDBSet::CreateAccountCharacter(char* id)
{
CString qSQL;
qSQL.Format("INSERT AccountCharacter (Id) VALUES ('%s')", id);
+
if (m_DBQuery.Exec(qSQL) == TRUE)
{
return TRUE;
}
+
return FALSE;
}
int CAccountCharDBSet::DeleteAccountCharacter(char* id, char* gameid)
{
CString qSQL;
- char gid[MAX_IDSTRING+1];
+ char gid[MAX_IDSTRING + 1];
qSQL.Format("SELECT * FROM AccountCharacter where Id='%s'", id);
-
+
if (m_DBQuery.Exec(qSQL) == FALSE)
{
m_DBQuery.Clear();
@@ -62,58 +54,56 @@ int CAccountCharDBSet::DeleteAccountCharacter(char* id, char* gameid)
m_DBQuery.GetStr("GameID1", gid);
- if(strcmp(gid, gameid) == 0)
+ if (strcmp(gid, gameid) == 0)
{
m_DBQuery.Clear();
- this->SaveAccountCharacter(id, 0, "");
+ SaveAccountCharacter(id, 0, "");
return 0;
}
m_DBQuery.GetStr("GameID2", gid);
- if(strcmp(gid, gameid) == 0)
+ if (strcmp(gid, gameid) == 0)
{
m_DBQuery.Clear();
- this->SaveAccountCharacter(id, 1, "");
+ SaveAccountCharacter(id, 1, "");
return 1;
}
m_DBQuery.GetStr("GameID3", gid);
- if(strcmp(gid, gameid) == 0)
+ if (strcmp(gid, gameid) == 0)
{
m_DBQuery.Clear();
- this->SaveAccountCharacter(id, 2, "");
+ SaveAccountCharacter(id, 2, "");
return 2;
}
m_DBQuery.GetStr("GameID4", gid);
- if(strcmp(gid, gameid) == 0)
+ if (strcmp(gid, gameid) == 0)
{
m_DBQuery.Clear();
- this->SaveAccountCharacter(id, 3, "");
+ SaveAccountCharacter(id, 3, "");
return 3;
}
m_DBQuery.GetStr("GameID5", gid);
- if(strcmp(gid, gameid) == 0)
+ if (strcmp(gid, gameid) == 0)
{
m_DBQuery.Clear();
- this->SaveAccountCharacter(id, 4, "");
+ SaveAccountCharacter(id, 4, "");
return 4;
}
m_DBQuery.Clear();
-
return -1;
}
BOOL CAccountCharDBSet::SaveAccountCharacter(char* id, char* GameID1, char* GameID2, char* GameID3, char* GameID4, char* GameID5)
{
CString qSQL;
-
qSQL.Format("UPDATE AccountCharacter SET GameID1='%s',GameID2='%s', GameID3='%s', GameID4='%s', GameID5='%s' WHERE Id='%s'", GameID1, GameID2, GameID3, GameID4, GameID5, id);
if (m_DBQuery.Exec(qSQL) == TRUE)
@@ -128,26 +118,26 @@ BOOL CAccountCharDBSet::SaveAccountCharacter(char* id, int pos, char* GameID)
{
CString qSQL;
- switch(pos)
- {
- case 0:
- qSQL.Format("UPDATE AccountCharacter SET GameID1='%s' WHERE Id='%s'", GameID, id);
- break;
- case 1:
- qSQL.Format("UPDATE AccountCharacter SET GameID2='%s' WHERE Id='%s'", GameID, id);
- break;
- case 2:
- qSQL.Format("UPDATE AccountCharacter SET GameID3='%s' WHERE Id='%s'", GameID, id);
- break;
- case 3:
- qSQL.Format("UPDATE AccountCharacter SET GameID4='%s' WHERE Id='%s'", GameID, id);
- break;
- case 4:
- qSQL.Format("UPDATE AccountCharacter SET GameID5='%s' WHERE Id='%s'", GameID, id);
- break;
- default:
- LogAdd("error : %s %d pos: %d ", __FILE__, __LINE__, pos);
- break;
+ switch (pos)
+ {
+ case 0:
+ qSQL.Format("UPDATE AccountCharacter SET GameID1='%s' WHERE Id='%s'", GameID, id);
+ break;
+ case 1:
+ qSQL.Format("UPDATE AccountCharacter SET GameID2='%s' WHERE Id='%s'", GameID, id);
+ break;
+ case 2:
+ qSQL.Format("UPDATE AccountCharacter SET GameID3='%s' WHERE Id='%s'", GameID, id);
+ break;
+ case 3:
+ qSQL.Format("UPDATE AccountCharacter SET GameID4='%s' WHERE Id='%s'", GameID, id);
+ break;
+ case 4:
+ qSQL.Format("UPDATE AccountCharacter SET GameID5='%s' WHERE Id='%s'", GameID, id);
+ break;
+ default:
+ LogAdd("error : %s %d pos: %d ", __FILE__, __LINE__, pos);
+ break;
}
if (m_DBQuery.Exec(qSQL) == TRUE)
@@ -161,7 +151,6 @@ BOOL CAccountCharDBSet::SaveAccountCharacter(char* id, int pos, char* GameID)
BOOL CAccountCharDBSet::GetAccountId(char* Id)
{
CString qSQL;
-
qSQL.Format("SELECT Id FROM AccountCharacter WHERE Id='%s'", Id);
char buffer[256];
@@ -177,7 +166,6 @@ BOOL CAccountCharDBSet::GetAccountId(char* Id)
BOOL CAccountCharDBSet::GetAccountInfo(char* Id, LPAccountCharacterInfo lpACInfo)
{
CString qSQL;
-
qSQL.Format("SELECT * FROM AccountCharacter WHERE Id='%s'", Id);
if (m_DBQuery.Exec(qSQL) == FALSE)
@@ -189,45 +177,43 @@ BOOL CAccountCharDBSet::GetAccountInfo(char* Id, LPAccountCharacterInfo lpACInfo
if (m_DBQuery.Fetch() == SQL_NO_DATA)
{
m_DBQuery.Clear();
- return FALSE;
+ return FALSE;
}
m_DBQuery.GetStr("Id", lpACInfo->AccountId);
-
- if( strlen(lpACInfo->AccountId) < 1 )
+
+ if (strlen(lpACInfo->AccountId) < 1)
{
m_DBQuery.Clear();
- return FALSE;
+ return FALSE;
}
- if( strcmp(lpACInfo->AccountId,Id) != 0)
+ if (strcmp(lpACInfo->AccountId, Id) != 0)
{
- LogAddC(2,"error-L1:'%s' '%s' ̵ ʴ.", lpACInfo->AccountId, Id);
+ LogAddC(2, "error-L1:'%s' '%s' ̵ ʴ.", lpACInfo->AccountId, Id);
m_DBQuery.Clear();
- return FALSE;
+ return FALSE;
}
-
+
int ctl_code = 0;
-
+
lpACInfo->DBNumber = m_DBQuery.GetInt("Number");
-
m_DBQuery.GetStr("GameID1", lpACInfo->GameID1);
m_DBQuery.GetStr("GameID2", lpACInfo->GameID2);
m_DBQuery.GetStr("GameID3", lpACInfo->GameID3);
m_DBQuery.GetStr("GameID4", lpACInfo->GameID4);
m_DBQuery.GetStr("GameID5", lpACInfo->GameID5);
-
+
int movecount = m_DBQuery.GetInt("MoveCnt");
-
+
if (movecount < 0)
{
movecount = 0;
}
lpACInfo->MoveCnt = movecount;
-
LogAddTD("CharName : %s 1[%s] 2[%s] 3[%s] 4[%s] 5[%s]", Id, lpACInfo->GameID1, lpACInfo->GameID2, lpACInfo->GameID3, lpACInfo->GameID4, lpACInfo->GameID5);
-
+
m_DBQuery.Clear();
return TRUE;
}
@@ -235,33 +221,31 @@ BOOL CAccountCharDBSet::GetAccountInfo(char* Id, LPAccountCharacterInfo lpACInfo
BYTE CAccountCharDBSet::GetAccountCharCtlCode(char* Id)
{
CString qSQL;
-
int ctl_code = 0;
-
- qSQL.Format("SELECT CtlCode FROM AccountCharacter WHERE Id=%s",Id);
-
+
+ qSQL.Format("SELECT CtlCode FROM AccountCharacter WHERE Id=%s", Id);
+
if (m_DBQuery.Exec(qSQL) == FALSE)
{
LogAdd("%s CtlCode . #1", Id);
return 0;
}
-
+
if (m_DBQuery.Fetch() == SQL_NO_DATA)
{
m_DBQuery.Clear();
LogAdd("%s CtlCode . #2", Id);
- return 0;
+ return 0;
}
-
+
ctl_code = m_DBQuery.GetInt("CtlCode");
-
+
if (ctl_code < 0)
{
ctl_code = 0;
}
-
+
m_DBQuery.Clear();
-
return ctl_code;
}
@@ -269,8 +253,8 @@ int CAccountCharDBSet::GetAccountCharBlank(char* Id)
{
CString qSQL;
- char GameID[5][MAX_IDSTRING+1];
- char szAccountId[MAX_IDSTRING+1];
+ char GameID[MAXUSERCHARACTER][MAX_IDSTRING + 1];
+ char szAccountId[MAX_IDSTRING + 1];
qSQL.Format("SELECT * FROM AccountCharacter WHERE Id='%s'", Id);
@@ -279,81 +263,78 @@ int CAccountCharDBSet::GetAccountCharBlank(char* Id)
m_DBQuery.Clear();
return 0;
}
-
+
m_DBQuery.Fetch();
m_DBQuery.GetStr("Id", szAccountId);
-
- if ( strlen(szAccountId) < 1)
+
+ if (strlen(szAccountId) < 1)
{
LogAdd(" . 1");
m_DBQuery.Clear();
- return -1;
+ return -1;
}
-
- if ( strcmp(szAccountId,Id) != 0)
+
+ if (strcmp(szAccountId, Id) != 0)
{
LogAdd(" . 2 %s %s", szAccountId, Id);
m_DBQuery.Clear();
- return -1;
+ return -1;
}
-
- m_DBQuery.GetStr("GameID1",GameID[0]);
-
- if ( strlen(GameID[0]) < 1)
+
+ m_DBQuery.GetStr("GameID1", GameID[0]);
+
+ if (strlen(GameID[0]) < 1)
{
m_DBQuery.Clear();
- return 0;
+ return 0;
}
-
- m_DBQuery.GetStr("GameID2",GameID[1]);
-
- if ( strlen(GameID[1]) < 1)
+
+ m_DBQuery.GetStr("GameID2", GameID[1]);
+
+ if (strlen(GameID[1]) < 1)
{
m_DBQuery.Clear();
- return 1;
+ return 1;
}
-
- m_DBQuery.GetStr("GameID3",GameID[2]);
-
- if ( strlen(GameID[2]) < 1)
+
+ m_DBQuery.GetStr("GameID3", GameID[2]);
+
+ if (strlen(GameID[2]) < 1)
{
m_DBQuery.Clear();
- return 2;
+ return 2;
}
-
- m_DBQuery.GetStr("GameID4",GameID[3]);
-
- if ( strlen(GameID[3]) < 1)
+
+ m_DBQuery.GetStr("GameID4", GameID[3]);
+
+ if (strlen(GameID[3]) < 1)
{
m_DBQuery.Clear();
- return 3;
+ return 3;
}
-
- m_DBQuery.GetStr("GameID5",GameID[4]);
-
- if ( strlen(GameID[4]) < 1)
+
+ m_DBQuery.GetStr("GameID5", GameID[4]);
+
+ if (strlen(GameID[4]) < 1)
{
m_DBQuery.Clear();
- return 4;
+ return 4;
}
m_DBQuery.Clear();
-
return -1;
}
BOOL CAccountCharDBSet::CurAccountCharacterSet(char* id, char* GameID)
{
CString qSQL;
-
qSQL.Format("UPDATE AccountCharacter SET GameIDC='%s' WHERE Id='%s'", GameID, id);
-
+
m_DBQuery.Exec(qSQL);
-
return TRUE;
}
-BOOL CAccountCharDBSet::GetSummonerCardInfo(char* Id)
+BYTE CAccountCharDBSet::GetSummonerCardInfo(char* Id)
{
CString qSQL;
@@ -370,22 +351,16 @@ BOOL CAccountCharDBSet::GetSummonerCardInfo(char* Id)
m_DBQuery.Clear();
return FALSE;
}
-
- if (m_DBQuery.GetInt(1) == FALSE)
- {
- m_DBQuery.Clear();
- return FALSE;
- }
-
+
+ BYTE btCharacterCardInfo = m_DBQuery.GetInt(1);
m_DBQuery.Clear();
- return TRUE;
+ return btCharacterCardInfo;
}
-BOOL CAccountCharDBSet::SetSummonerCardInfo(char* Id)
+BYTE CAccountCharDBSet::SetSummonerCardInfo(char* Id, BYTE btCharacterCardInfo)
{
CString qSQL;
-
- qSQL.Format("UPDATE AccountCharacter SET Summoner = 1 WHERE Id = '%s'", Id);
+ qSQL.Format("UPDATE AccountCharacter SET Summoner = %d WHERE Id = '%s'", btCharacterCardInfo, Id);
if (m_DBQuery.Exec(qSQL) == FALSE)
{
@@ -393,39 +368,71 @@ BOOL CAccountCharDBSet::SetSummonerCardInfo(char* Id)
return FALSE;
}
- return TRUE;
+ return btCharacterCardInfo;
}
-BOOL CAccountCharDBSet::SetCharacterExGameServerCode(char* Name, short sExGameServerCode)
+BOOL CAccountCharDBSet::SetCharacterSlotCount(char* Name, BYTE btAddSlotCount)
{
- CString qSQL;
- BYTE btSlotCount = 0;
+ CString qSql;
+ qSql.Format("SELECT SlotCount FROM AccountCharacter WHERE Id = '%s'", Name);
- qSQL.Format("SELECT ExtendedInvenCount FROM Character WHERE Name = '%s'", Name);
-
- if (m_DBQuery.Exec(qSQL) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return FALSE;
}
+
if (m_DBQuery.Fetch() == SQL_NO_DATA)
{
m_DBQuery.Clear();
- return FALSE;
+ return FALSE;
}
+ BYTE btSlotCount = m_DBQuery.GetInt(1);
m_DBQuery.Clear();
-
- qSQL.Empty();
-
- qSQL.Format("UPDATE Character SET ExGameServerCode = %d WHERE Name = '%s'", sExGameServerCode, Name);
-
- if (m_DBQuery.Exec(qSQL) == FALSE)
+
+ if (btAddSlotCount + btSlotCount > 5)
+ {
+ return FALSE;
+ }
+
+ qSql.Empty();
+ qSql.Format("UPDATE AccountCharacter SET SlotCount = SlotCount + %d WHERE Id = '%s'", btAddSlotCount, Name);
+
+ if (m_DBQuery.Exec(qSql) == FALSE)
+ {
+ m_DBQuery.Clear();
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+BOOL CAccountCharDBSet::GetCharacterSlotCount(char* Name, BYTE& btSlotCount)
+{
+ CString qSql;
+ qSql.Format("SELECT SlotCount FROM AccountCharacter WHERE Id = '%s'", Name);
+
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return FALSE;
}
+ if (m_DBQuery.Fetch() == SQL_NO_DATA)
+ {
+ m_DBQuery.Clear();
+ return FALSE;
+ }
+
+ btSlotCount = m_DBQuery.GetInt(1);
+
+ if (btSlotCount > MAXUSERCHARACTER)
+ {
+ btSlotCount = MAXUSERCHARACTER;
+ }
+
+ m_DBQuery.Clear();
return TRUE;
}
@@ -449,17 +456,15 @@ BOOL CAccountCharDBSet::SetCharacterExtendedInvenCountAdd(char* Name, BYTE btAdd
}
btSlotCount = m_DBQuery.GetInt(1);
-
m_DBQuery.Clear();
- if (btSlotCount + btAddExtendedInvenCount > 2)
+ if (btSlotCount + btAddExtendedInvenCount > MAX_EXTENDINVENTORY)
{
LogAdd("error : %s %d btSlotCount + btAddExtendedInvenCount: %d ", __FILE__, __LINE__, btSlotCount + btAddExtendedInvenCount);
return FALSE;
}
qSQL.Empty();
-
qSQL.Format("UPDATE Character SET ExtendedInvenCount = %d WHERE Name = '%s'", btSlotCount + btAddExtendedInvenCount, Name);
if (m_DBQuery.Exec(qSQL) == FALSE)
@@ -492,14 +497,13 @@ BOOL CAccountCharDBSet::SetCharacterExtendedInvenCountReplace(char* Name, BYTE b
m_DBQuery.Clear();
- if (btReplaceExtendedInvenCount > 2)
+ if (btReplaceExtendedInvenCount > MAX_EXTENDINVENTORY)
{
LogAdd("error : %s %d btReplaceExtendedInvenCount: %d ", __FILE__, __LINE__, btReplaceExtendedInvenCount);
return FALSE;
}
qSQL.Empty();
-
qSQL.Format("UPDATE Character SET ExtendedInvenCount = %d WHERE Name = '%s'", btReplaceExtendedInvenCount, Name);
if (m_DBQuery.Exec(qSQL) == FALSE)
@@ -511,10 +515,9 @@ BOOL CAccountCharDBSet::SetCharacterExtendedInvenCountReplace(char* Name, BYTE b
return TRUE;
}
-BOOL CAccountCharDBSet::GetCharacterExtendedInvenCount(char* Name, char* btAddExtendedInvenCount)
+BOOL CAccountCharDBSet::GetCharacterExtendedInvenCount(char* Name, LPBYTE btAddExtendedInvenCount)
{
- CString qSQL;
-
+ CString qSQL;
qSQL.Format("SELECT ExtendedInvenCount FROM Character WHERE Name = '%s'", Name);
if (m_DBQuery.Exec(qSQL) == FALSE)
@@ -531,13 +534,12 @@ BOOL CAccountCharDBSet::GetCharacterExtendedInvenCount(char* Name, char* btAddEx
*btAddExtendedInvenCount = m_DBQuery.GetInt(1);
- if (*btAddExtendedInvenCount > 2)
+ if (*btAddExtendedInvenCount > MAX_EXTENDINVENTORY)
{
- *btAddExtendedInvenCount = 2;
+ *btAddExtendedInvenCount = MAX_EXTENDINVENTORY;
}
m_DBQuery.Clear();
-
return TRUE;
}
@@ -560,18 +562,16 @@ BOOL CAccountCharDBSet::SetCharacterExtendedWarehouseCountAdd(char* Name, BYTE b
return FALSE;
}
- btSlotCount = m_DBQuery.GetInt(1);
-
+ btSlotCount = m_DBQuery.GetInt(1);
m_DBQuery.Clear();
- if (btSlotCount + btAddExtendedWarehouseCount > 1)
+ if (btSlotCount + btAddExtendedWarehouseCount > MAX_EXTENDWAREHOUSE)
{
LogAdd("error : %s %d btSlotCount + btAddExtendedWarehouseCount: %d ", __FILE__, __LINE__, btSlotCount + btAddExtendedWarehouseCount);
return FALSE;
}
- qSQL.Empty();
-
+ qSQL.Empty();
qSQL.Format("UPDATE AccountCharacter SET ExtendedWarehouseCount = %d WHERE Id = '%s'", btSlotCount + btAddExtendedWarehouseCount, Name);
if (m_DBQuery.Exec(qSQL) == FALSE)
@@ -604,14 +604,13 @@ BOOL CAccountCharDBSet::SetCharacterExtendedWarehouseCountReplace(char* Name, BY
m_DBQuery.Clear();
- if (btReplaceExtendedWarehouseCount > 1)
+ if (btReplaceExtendedWarehouseCount > MAX_EXTENDWAREHOUSE)
{
LogAdd("error : %s %d btReplaceExtendedWarehouseCount: %d ", __FILE__, __LINE__, btReplaceExtendedWarehouseCount);
return FALSE;
}
qSQL.Empty();
-
qSQL.Format("UPDATE AccountCharacter SET ExtendedWarehouseCount = %d WHERE Id = '%s'", btReplaceExtendedWarehouseCount, Name);
if (m_DBQuery.Exec(qSQL) == FALSE)
@@ -623,7 +622,7 @@ BOOL CAccountCharDBSet::SetCharacterExtendedWarehouseCountReplace(char* Name, BY
return TRUE;
}
-BOOL CAccountCharDBSet::GetCharacterExtendedWarehouseCount(char* Name, BYTE* btAddExtendedWarehouseCount)
+BOOL CAccountCharDBSet::GetCharacterExtendedWarehouseCount(char* Name, LPBYTE btAddExtendedWarehouseCount)
{
CString qSQL;
@@ -643,87 +642,11 @@ BOOL CAccountCharDBSet::GetCharacterExtendedWarehouseCount(char* Name, BYTE* btA
*btAddExtendedWarehouseCount = m_DBQuery.GetInt(1);
- if (*btAddExtendedWarehouseCount > 1)
+ if (*btAddExtendedWarehouseCount > MAX_EXTENDWAREHOUSE)
{
- *btAddExtendedWarehouseCount = 1;
+ *btAddExtendedWarehouseCount = MAX_EXTENDWAREHOUSE;
}
m_DBQuery.Clear();
-
return TRUE;
-}
-
-BOOL CAccountCharDBSet::SetCharacterSlotCount(char *Name, BYTE btAddSlotCount)
-{
- int result;
- unsigned __int8 btSlotCount;
- CString qSql;
-
- qSql.Format("SELECT SlotCount FROM AccountCharacter WHERE Id = '%s'",Name);
-
- if (this->m_DBQuery.Exec(qSql))
- {
- if (this->m_DBQuery.Fetch() == SQL_NO_DATA)
- {
- this->m_DBQuery.Clear();
- result = 0;
- }
- else
- {
- btSlotCount = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
- if (btAddSlotCount + btSlotCount <= 5)
- {
- qSql.Format("UPDATE AccountCharacter SET SlotCount = SlotCount + %d WHERE Id = '%s'",btAddSlotCount,Name);
- if (this->m_DBQuery.Exec(qSql))
- {
- result = 1;
- }
- else
- {
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- result = 0;
- }
- }
- }
- else
- {
- this->m_DBQuery.Clear();
- result = 0;
- }
- return result;
-}
-
-BOOL CAccountCharDBSet::GetCharacterSlotCount(char *Name, BYTE *btSlotCount)
-{
- int result;
- CString qSql;
-
- qSql.Format("SELECT SlotCount FROM AccountCharacter WHERE Id = '%s'",Name);
- if (this->m_DBQuery.Exec(qSql))
- {
- if (this->m_DBQuery.Fetch() == 100)
- {
- this->m_DBQuery.Clear();
- result = 0;
- }
- else
- {
- *btSlotCount = this->m_DBQuery.GetInt(1);
- if (*btSlotCount > 5)
- *btSlotCount = 5;
- this->m_DBQuery.Clear();
- result = 1;
- }
- }
- else
- {
- this->m_DBQuery.Clear();
- }
- return result;
-}
+}
\ No newline at end of file
diff --git a/DataServer/DbSet/AccountCharDBSet.h b/DataServer/DbSet/AccountCharDBSet.h
index 5dc9970..c38571c 100644
--- a/DataServer/DbSet/AccountCharDBSet.h
+++ b/DataServer/DbSet/AccountCharDBSet.h
@@ -1,29 +1,21 @@
-// AccountCharDBSet.h: interface for the CAccountCharDBSet class.
-//
-//////////////////////////////////////////////////////////////////////
-
-#if !defined(AFX_ACCOUNTCHARDBSET_H__01C748D6_E836_4267_AF43_66BD9D34C7DC__INCLUDED_)
-#define AFX_ACCOUNTCHARDBSET_H__01C748D6_E836_4267_AF43_66BD9D34C7DC__INCLUDED_
-
-#if _MSC_VER > 1000
+#ifndef __ACCOUNTCHARSETDB_H__
+#define __ACCOUNTCHARSETDB_H__
#pragma once
-#endif // _MSC_VER > 1000
-//#include "Include\ProDef.h"
#include "..\include\Sprodef.h"
-typedef struct
+typedef struct AccountCharacterInfo
{
int DBNumber;
- char AccountId[MAX_IDSTRING+1];
- char GameID1[MAX_IDSTRING+1];
- char GameID2[MAX_IDSTRING+1];
- char GameID3[MAX_IDSTRING+1];
- char GameID4[MAX_IDSTRING+1];
- char GameID5[MAX_IDSTRING+1];
+ char AccountId[MAX_IDSTRING + 1];
+ char GameID1[MAX_IDSTRING + 1];
+ char GameID2[MAX_IDSTRING + 1];
+ char GameID3[MAX_IDSTRING + 1];
+ char GameID4[MAX_IDSTRING + 1];
+ char GameID5[MAX_IDSTRING + 1];
BYTE CtlCode;
BYTE MoveCnt;
-}AccountCharacterInfo, *LPAccountCharacterInfo;
+} *LPAccountCharacterInfo;
class CAccountCharDBSet
@@ -33,29 +25,36 @@ class CAccountCharDBSet
virtual ~CAccountCharDBSet();
BOOL Connect();
+
BOOL CreateAccountCharacter(char* id);
BOOL SaveAccountCharacter(char* id, int pos, char* GameID);
BOOL SaveAccountCharacter(char* id, char* GameID1, char* GameID2, char* GameID3, char* GameID4, char* GameID5);
int DeleteAccountCharacter(char* id, char* gameid);
+
BOOL GetAccountId(char* Id);
BOOL GetAccountInfo(char* Id, LPAccountCharacterInfo lpACInfo);
int GetAccountCharBlank(char* Id);
+
BOOL CurAccountCharacterSet(char* id, char* GameID);
+
BYTE GetAccountCharCtlCode(char* Id);
- BOOL GetSummonerCardInfo(char* Id);
- BOOL SetSummonerCardInfo(char* Id);
- BOOL SetCharacterExGameServerCode(char* Name, short sExGameServerCode);
+
+ BYTE GetSummonerCardInfo(char* Id);
+ BYTE SetSummonerCardInfo(char* Id, BYTE btCharacterCardInfo);
+
+ BOOL SetCharacterSlotCount(char* Name, BYTE btAddSlotCount);
+ BOOL GetCharacterSlotCount(char* Name, BYTE& btSlotCount);
+
BOOL SetCharacterExtendedInvenCountAdd(char* Name, BYTE btAddExtendedInvenCount);
+ BOOL GetCharacterExtendedInvenCount(char* Name, LPBYTE btAddExtendedInvenCount);
BOOL SetCharacterExtendedInvenCountReplace(char* Name, BYTE btReplaceExtendedInvenCount);
- BOOL GetCharacterExtendedInvenCount(char* Name, char* btAddExtendedInvenCount);
+
BOOL SetCharacterExtendedWarehouseCountAdd(char* Name, BYTE btAddExtendedWarehouseCount);
BOOL SetCharacterExtendedWarehouseCountReplace(char* Name, BYTE btReplaceExtendedWarehouseCount);
- BOOL GetCharacterExtendedWarehouseCount(char* Name, BYTE* btAddExtendedWarehouseCount);
- //S12
- BOOL SetCharacterSlotCount(char *Name, BYTE btAddSlotCount);
- BOOL GetCharacterSlotCount(char *Name, BYTE *btSlotCount);
+ BOOL GetCharacterExtendedWarehouseCount(char* Name, LPBYTE btAddExtendedWarehouseCount);
+
public:
CQuery m_DBQuery;
};
-#endif // !defined(AFX_ACCOUNTCHARDBSET_H__01C748D6_E836_4267_AF43_66BD9D34C7DC__INCLUDED_)
+#endif
\ No newline at end of file
diff --git a/DataServer/DbSet/ArcaBattleDBSet.cpp b/DataServer/DbSet/ArcaBattleDBSet.cpp
index 6a34b5c..4eb7dc3 100644
--- a/DataServer/DbSet/ArcaBattleDBSet.cpp
+++ b/DataServer/DbSet/ArcaBattleDBSet.cpp
@@ -11,1048 +11,894 @@ CArcaBattleDBSet::~CArcaBattleDBSet()
BOOL CArcaBattleDBSet::Connect()
{
- //return this->CDBConBase::Connect(szDbConnectID, szDbConnectPass);
- if (m_DBQuery.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass))
- return 1;
- MsgBox("CArcaBattleDBSet ODBC Connect Fail");
- return 0;
+ if (m_Query.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass) == FALSE)
+ {
+ MsgBox("CArcaBattleDBSet ODBC Connect Fail");
+ return FALSE;
+ }
+
+ return TRUE;
}
-int CArcaBattleDBSet::DBSelectArcaBattleGuildJoin(char *szName, int *iResult)
+BOOL CArcaBattleDBSet::DBSelectArcaBattleGuildJoin(char* szName, int& iResult)
{
- int result;
- __int16 sqlReturn;
- CString QueryStr;
int iReturnCode = 0;
int iItemCount = 0;
- QueryStr.Format(
- "WZ_ArcaBattleGuildSelect '%s'",
- szName);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ CString QueryStr;
+ QueryStr.Format("WZ_ArcaBattleGuildSelect '%s'", szName);
+
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *iResult = this->m_DBQuery.GetInt(1);
- if (*iResult == -1)
- {
- this->m_DBQuery.Clear();
- LogAddTD(
- "error-L3 : [ArcaBattle] GuildInsert #3 %s %d", __FILE__, __LINE__);
- result = 0;
- }
- else
- {
- this->m_DBQuery.Clear();
- result = 1;
- }
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD(
- "error-L3 : [ArcaBattle] GuildSelect #2 %d %s %d",
- sqlReturn, __FILE__, __LINE__);
- result = 0;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildSelect #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD(
- "error-L3 : [ArcaBattle] GuildSelect #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildSelect #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
}
- return result;
+
+ iResult = m_Query.GetInt(1);
+
+ if (iResult == -1)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildInsert #3 %s %d", __FILE__, __LINE__);
+ return FALSE;
+ }
+
+ m_Query.Clear();
+ return TRUE;
}
-// 5CD7B4: using guessed type int `CArcaBattleDBSet::DBSelectArcaBattleGuildJoin'::`2'::__LINE__Var;
-//----- (00429310) --------------------------------------------------------
-int CArcaBattleDBSet::DBInsertArcaBattleGuildJoin(char *szName, char *szGuildName, unsigned int dwGuild, int *iResult)
+BOOL CArcaBattleDBSet::DBInsertArcaBattleGuildJoin(char* szName, char* szGuildName, DWORD dwGuild, int& iResult)
{
- int result; // eax
- __int16 sqlReturn; // [esp+104h] [ebp-44h]
- CString QueryStr; // [esp+110h] [ebp-38h]
- int iReturnCode; // [esp+11Ch] [ebp-2Ch]
- int iItemCount; // [esp+128h] [ebp-20h]
+ int iItemCount = 0;
+ int iReturnCode = 0;
- iItemCount = 0;
- iReturnCode = 0;
+ CString QueryStr;
+ QueryStr.Format("WZ_ArcaBattleGuildInsert '%s', '%s', %d ", szGuildName, szName, dwGuild);
- QueryStr.Format("WZ_ArcaBattleGuildInsert '%s', '%s', %d ",szGuildName,szName,dwGuild);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *iResult = this->m_DBQuery.GetInt(1);
- if (*iResult == -1)
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] GuildInsert #3 %s %d", __FILE__, __LINE__);
- result = 0;
- }
- else
- {
- this->m_DBQuery.Clear();
- result = 1;
- }
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] GuildInsert #2 %d %s %d",sqlReturn, __FILE__, __LINE__);
- result = 0;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildInsert #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] GuildInsert #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildInsert #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
}
- return result;
+
+ iResult = m_Query.GetInt(1);
+
+ if (iResult == -1)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildInsert #3 %s %d", __FILE__, __LINE__);
+ return FALSE;
+ }
+
+ m_Query.Clear();
+ return TRUE;
}
-// 5CD7B8: using guessed type int `CArcaBattleDBSet::DBInsertArcaBattleGuildJoin'::`2'::__LINE__Var;
-//----- (00429570) --------------------------------------------------------
-int CArcaBattleDBSet::DBInsertArcaBattleGuildMemberJoin(char *szName, char *szGuildName, unsigned int dwGuild, int *iResult)
+BOOL CArcaBattleDBSet::DBInsertArcaBattleGuildMemberJoin(char* szName, char* szGuildName, DWORD dwGuild, int& iResult)
{
- int result;
- __int16 sqlReturn;
+ int iItemCount = 0;
+ int iReturnCode = 0;
+
CString QueryStr;
- int iReturnCode;
- int iItemCount;
+ QueryStr.Format("WZ_ArcaBattleGuildMemberInsert '%s', '%s', %d ", szGuildName, szName, dwGuild);
- iItemCount = 0;
- iReturnCode = 0;
+ if (m_Query.Exec(QueryStr) == FALSE)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildMemberInsert #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
+ }
- QueryStr.Format("WZ_ArcaBattleGuildMemberInsert '%s', '%s', %d ",szGuildName,szName,dwGuild);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ SQLRETURN sqlReturn = this->m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *iResult = this->m_DBQuery.GetInt(1);
- if (*iResult == -1)
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] GuildMemberInsert #3 %s %d", __FILE__, __LINE__);
- result = 0;
- }
- else
- {
- this->m_DBQuery.Clear();
- result = 1;
- }
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] GuildMemberInsert #2 %d %s %d",sqlReturn, __FILE__, __LINE__);
- result = 0;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildMemberInsert #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ iResult = m_Query.GetInt(1);
+
+ if (iResult == -1)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] GuildMemberInsert #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildMemberInsert #3 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- return result;
-}
+ m_Query.Clear();
+ return TRUE;
+}
-int CArcaBattleDBSet::DBInsertArcaBattleWinGuild(_stABWinGuildInfoDS *pABWinGuildInfoDS, int iGuildCnt)
+BOOL CArcaBattleDBSet::DBInsertArcaBattleWinGuild(_stABWinGuildInfoDS* pABWinGuildInfoDS, int iGuildCnt)
{
- CString QueryStr;
- int iReturnCode;
- int iItemCount;
+ int iItemCount = 0;
+ int iReturnCode = 0;
- iItemCount = 0;
- iReturnCode = 0;
+ CString QueryStr;
- for (int i = 0; i < iGuildCnt; ++i)
+ for (int i = 0; i < iGuildCnt; i++)
{
- QueryStr.Format("WZ_ArcaBattleWinGuildInsert '%s', %d, %d, %d, %d",
- &pABWinGuildInfoDS[i],
- pABWinGuildInfoDS[i].dwGuild,
- pABWinGuildInfoDS[i].wOccupyObelisk,
- pABWinGuildInfoDS[i].wObeliskGroup,
- 100);
-
- if (!this->m_DBQuery.Exec(QueryStr))
+ QueryStr.Format("WZ_ArcaBattleWinGuildInsert '%s', %d, %d, %d, %d", pABWinGuildInfoDS[i].szGuildName, pABWinGuildInfoDS[i].dwGuild, pABWinGuildInfoDS[i].wOccupyObelisk, pABWinGuildInfoDS[i].wObeliskGroup, 100);
+
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
+ m_Query.Clear();
LogAddTD("error-L3 : [ArcaBattle] WZ_ArcaBattleWinGuildInsert #1 %s %d", __FILE__, __LINE__);
- return 0;
+ return FALSE;
}
- this->m_DBQuery.Clear();
+
+ m_Query.Clear();
}
- this->m_DBQuery.Clear();
- return 1;
-}
+ m_Query.Clear();
+ return TRUE;
+}
-int CArcaBattleDBSet::DBSelectArcaBattleWinGuild(_stABWinGuildInfoDS *pABGuildInfo, int *iGuildCnt)
+BOOL CArcaBattleDBSet::DBSelectArcaBattleWinGuild(_stABWinGuildInfoDS* pABGuildInfo, int& iGuildCnt)
{
- int result;
- __int16 sqlReturn;
+ int iItemCount = 0;
+ int iReturnCode = 0;
+ int iCnt = 0;
+
CString QueryStr;
- int iCnt;
- int iReturnCode;
- int iItemCount;
+ QueryStr.Format("WZ_ArcaBattleWinGuildSelect");
- iItemCount = 0;
- iReturnCode = 0;
- iCnt = 0;
+ if (m_Query.Exec(QueryStr) == FALSE)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] WZ_ArcaBattleWinGuildSelect #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
+ }
- QueryStr.Format("WZ_ArcaBattleWinGuildSelect");
-
- if (this->m_DBQuery.Exec(QueryStr))
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ while (sqlReturn != SQL_NO_DATA && sqlReturn != SQL_NULL_DATA)
{
- for (sqlReturn = this->m_DBQuery.Fetch(); sqlReturn != 100; sqlReturn = this->m_DBQuery.Fetch())
+ m_Query.GetStr("G_Name", pABGuildInfo[iCnt].szGuildName);
+ pABGuildInfo[iCnt].wOccupyObelisk = m_Query.GetInt("OuccupyObelisk");
+ pABGuildInfo[iCnt].wObeliskGroup = m_Query.GetInt("ObeliskGroup");
+ iCnt++;
+
+ if (iCnt >= MAX_AB_OBELISK_INFO)
{
- if (sqlReturn == -1)
- break;
- this->m_DBQuery.GetStr("G_Name", pABGuildInfo[iCnt].szGuildName);
- pABGuildInfo[iCnt].wOccupyObelisk = this->m_DBQuery.GetInt("OuccupyObelisk");
- pABGuildInfo[iCnt++].wObeliskGroup = this->m_DBQuery.GetInt("ObeliskGroup");
- if (iCnt >= 5)
- break;
+ break;
}
- *iGuildCnt = iCnt;
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] WZ_ArcaBattleWinGuildSelect #1 %s %d", __FILE__, __LINE__);
- result = 0;
+
+ sqlReturn = m_Query.Fetch();
}
- return result;
+
+ iGuildCnt = iCnt;
+ m_Query.Clear();
+ return TRUE;
}
-int CArcaBattleDBSet::DBIsArcaBattleEnter(char *szName, int *iResult)
+BOOL CArcaBattleDBSet::DBIsArcaBattleEnter(char* szName, int& iResult)
{
- int result;
- __int16 sqlReturn;
+ int iItemCount = 0;
+ int iReturnCode = 0;
+
CString QueryStr;
- int iReturnCode;
- int iItemCount;
+ QueryStr.Format("WZ_ArcaBattleMemberSelect '%s'", szName);
- iItemCount = 0;
- iReturnCode = 0;
+ if (m_Query.Exec(QueryStr) == FALSE)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBIsArcaBattleEnter #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
+ }
- QueryStr.Format("WZ_ArcaBattleMemberSelect '%s'",szName);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *iResult = this->m_DBQuery.GetInt(1);
- if (*iResult == -1)
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBIsArcaBattleEnter #3 %s %d", __FILE__, __LINE__);
- result = 0;
- }
- else
- {
- this->m_DBQuery.Clear();
- result = 1;
- }
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBIsArcaBattleEnter #2 %d %s %d",sqlReturn, __FILE__, __LINE__);
- result = 0;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBIsArcaBattleEnter #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ iResult = m_Query.GetInt(1);
+
+ if (iResult == -1)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBIsArcaBattleEnter #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBIsArcaBattleEnter #3 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- return result;
-}
+ m_Query.Clear();
+ return TRUE;
+}
-int CArcaBattleDBSet::DBSelectArcaBattleGuildGroupNum(char *szName, int *iGroupNum)
+BOOL CArcaBattleDBSet::DBSelectArcaBattleGuildGroupNum(char* szName, int& iGroupNum)
{
- int result;
- __int16 sqlReturn;
+ int iItemCount = 0;
+ int iReturnCode = 0;
+
CString QueryStr;
- int iReturnCode;
- int iItemCount;
+ QueryStr.Format("WZ_ArcaBattleGuildGroupNumSelect '%s'", szName);
- iItemCount = 0;
- iReturnCode = 0;
+ if (m_Query.Exec(QueryStr) == FALSE)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleGuildGroupNum #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
+ }
- QueryStr.Format("WZ_ArcaBattleGuildGroupNumSelect '%s'",szName);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn == 100)
- {
- this->m_DBQuery.Clear();
- result = 2;
- }
- else if (sqlReturn != 100 && sqlReturn != -1)
- {
- *iGroupNum = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleGuildGroupNum #2 %d %s %d",sqlReturn, __FILE__, __LINE__);
- result = 0;
- }
+ m_Query.Clear();
+ return 2;
}
- else
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleGuildGroupNum #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleGuildGroupNum #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
}
- return result;
+
+ iGroupNum = m_Query.GetInt(1);
+ m_Query.Clear();
+ return TRUE;
}
-int CArcaBattleDBSet::DBDeleteArcaBattleInfo()
+BOOL CArcaBattleDBSet::DBDeleteArcaBattleInfo()
{
- int result; // eax
- CString QueryStr; // [esp+F8h] [ebp-38h]
- int iReturnCode; // [esp+104h] [ebp-2Ch]
- int iItemCount;
-
- iItemCount = 0;
- iReturnCode = 0;
+ int iItemCount = 0;
+ int iReturnCode = 0;
+ CString QueryStr;
QueryStr.Format("WZ_ArcaBattleInfoDelete");
- if (this->m_DBQuery.Exec(QueryStr))
+
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- if (this->m_DBQuery.Fetch() == 100)
- {
- this->m_DBQuery.Clear();
- result = -1;
- }
- else
- {
- iReturnCode = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
- result = 1;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleInfo #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ if (m_Query.Fetch() == SQL_NO_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleInfo #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ return -1;
}
- return result;
+
+ iReturnCode = m_Query.GetInt(1);
+ m_Query.Clear();
+ return TRUE;
}
-int CArcaBattleDBSet::DBSelectArcaBattleJoinMemberUnder(_stGuildUnderMember *pGuildMemberCnt, char *btGuildCnt)
+BOOL CArcaBattleDBSet::DBSelectArcaBattleJoinMemberUnder(_stGuildUnderMember* pGuildMemberCnt, BYTE& btGuildCnt)
{
- int result; // eax
- __int16 sqlReturn; // [esp+11Ch] [ebp-50h]
- int iCnt; // [esp+128h] [ebp-44h]
- CString QueryStr; // [esp+134h] [ebp-38h]
- int iReturnCode; // [esp+140h] [ebp-2Ch]
- int iItemCount; // [esp+14Ch] [ebp-20h]
- // [esp+158h] [ebp-14h]
- int v17; // [esp+168h] [ebp-4h]
+ int iItemCount = 0;
+ int iReturnCode = 0;
+ CString QueryStr;
+ int iCnt = 0;
+ QueryStr.Format("WZ_ArcaBattleGuildNamesSelect");
- iItemCount = 0;
- iReturnCode = 0;
+ if (m_Query.Exec(QueryStr) == FALSE)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleJoinMemberUnder #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
+ }
- v17 = 0;
- iCnt = 0;
- QueryStr.Format("WZ_ArcaBattleGuildNamesSelect");
-
- if (this->m_DBQuery.Exec(QueryStr))
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ while (sqlReturn != SQL_NO_DATA && sqlReturn != SQL_NULL_DATA)
{
- for (sqlReturn = this->m_DBQuery.Fetch(); sqlReturn != 100; sqlReturn = this->m_DBQuery.Fetch())
- {
- if (sqlReturn == -1)
- break;
- this->m_DBQuery.GetStr("G_Name", pGuildMemberCnt[iCnt++].szGuildNames);
- if (iCnt >= 6)
- break;
- }
- *btGuildCnt = iCnt;
- this->m_DBQuery.Clear();
- for (int i = 0; i < iCnt; ++i)
+ m_Query.GetStr("G_Name", pGuildMemberCnt[iCnt].szGuildNames);
+ iCnt++;
+
+ if (iCnt >= 6)
{
- QueryStr.Format("WZ_ArcaBattleMemberUnderSelect '%s'",
- pGuildMemberCnt[i].szGuildNames);
-
- if (!this->m_DBQuery.Exec(QueryStr))
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleJoinMemberUnder #2 %s %d",__FILE__, __LINE__);
- return 0;
- }
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn == 100 || sqlReturn == -1)
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleJoinMemberUnder #3 %d %s %d", sqlReturn, __FILE__, __LINE__);
- return 0;
- }
- pGuildMemberCnt[i].btGuildMemberCnt = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
+ break;
}
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleJoinMemberUnder #1 %s %d", __FILE__, __LINE__);
- result = 0;
- }
- return result;
-}
+ sqlReturn = m_Query.Fetch();
+ }
-int CArcaBattleDBSet::DBInsertArcaBattleProc(int iABProc)
-{
- int result;
- __int16 sqlReturn;
- CString QueryStr;
+ btGuildCnt = iCnt;
+ m_Query.Clear();
- QueryStr.Format("WZ_ArcaBattleProcInsert %d", iABProc);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ for (int i = 0; i < iCnt; i++)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
+ QueryStr.Format("WZ_ArcaBattleMemberUnderSelect '%s'", pGuildMemberCnt[i].szGuildNames);
+
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
- result = 1;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleJoinMemberUnder #2 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBInsertArcaBattleProc #2 %d %s %d",sqlReturn, __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleJoinMemberUnder #3 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
}
+
+ pGuildMemberCnt[i].btGuildMemberCnt = m_Query.GetInt(1);
+ m_Query.Clear();
}
- else
+
+ m_Query.Clear();
+ return TRUE;
+}
+
+BOOL CArcaBattleDBSet::DBInsertArcaBattleProc(int iABProc)
+{
+ CString QueryStr;
+ QueryStr.Format("WZ_ArcaBattleProcInsert %d", iABProc);
+
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
+ m_Query.Clear();
LogAddTD("error-L3 : [ArcaBattle] DBInsertArcaBattleProc #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ return FALSE;
}
- return result;
-}
+ SQLRETURN sqlReturn = m_Query.Fetch();
-int CArcaBattleDBSet::DBSelectArcaBattleProc(int *iABProc)
-{
- int result;
- __int16 sqlReturn;
- CString QueryStr;
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBInsertArcaBattleProc #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
+ }
+ m_Query.Clear();
+ return TRUE;
+}
+
+BOOL CArcaBattleDBSet::DBSelectArcaBattleProc(int& iABProc)
+{
+ CString QueryStr;
QueryStr.Format("WZ_ArcaBattleProcSelect");
-
- if (this->m_DBQuery.Exec(QueryStr))
+
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn == 100)
- {
- this->m_DBQuery.Clear();
- result = 0;
- }
- else if (sqlReturn != 100 && sqlReturn != -1)
- {
- *iABProc = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleProc #2 %d %s %d",sqlReturn, __FILE__, __LINE__);
- result = 0;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleProc #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleProc #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ return FALSE;
}
- return result;
-}
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleProc #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
+ }
+
+ iABProc = m_Query.GetInt(1);
+ m_Query.Clear();
+ return TRUE;
+}
-int CArcaBattleDBSet::DBSelectArcaBattleCancelGuild(_stCancelGuildNames *pstCancelGuildNames, int iMinGuildMemNum, char *btGuildCnt)
+BOOL CArcaBattleDBSet::DBSelectArcaBattleCancelGuild(_stCancelGuildNames* pstCancelGuildNames, int iMinGuildMemNum, BYTE& btGuildCnt)
{
- int result;
- int iResult;
- __int16 sqlReturn;
- _stCancelGuildNames CancelGuildNames[6];
- int iCancelGuildCnt;
- int iCnt;
CString QueryStr;
+ int iCnt = 0;
+ int iCancelGuildCnt = 0;
- iCnt = 0;
- iCancelGuildCnt = 0;
QueryStr.Format("WZ_ArcaBattleGuildNamesSelect");
- if (this->m_DBQuery.Exec(QueryStr))
+ if (m_Query.Exec(QueryStr) == FALSE)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleCancelGuild #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
+ }
+
+ _stCancelGuildNames CancelGuildNames[6];
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ while (sqlReturn != SQL_NO_DATA && sqlReturn != SQL_NULL_DATA)
{
- for (sqlReturn = this->m_DBQuery.Fetch(); sqlReturn != 100; sqlReturn = this->m_DBQuery.Fetch())
+ m_Query.GetStr("G_Name", CancelGuildNames[iCnt].szGuildNames);
+ iCnt++;
+
+ if (iCnt >= 6)
{
- if (sqlReturn == -1)
- break;
- this->m_DBQuery.GetStr("G_Name", CancelGuildNames[iCnt++].szGuildNames);
- if (iCnt >= 6)
- break;
+ break;
}
- this->m_DBQuery.Clear();
- for (int i = 0; i < iCnt; ++i)
+
+ sqlReturn = m_Query.Fetch();
+ }
+
+ m_Query.Clear();
+
+ for (int i = 0; i < iCnt; i++)
+ {
+ QueryStr.Format("WZ_ArcaBattleMinGuildSelect '%s', %d", CancelGuildNames[i].szGuildNames, iMinGuildMemNum);
+
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- QueryStr.Format("WZ_ArcaBattleMinGuildSelect '%s', %d",
- &CancelGuildNames[i],
- iMinGuildMemNum);
- if (!this->m_DBQuery.Exec(QueryStr))
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleCancelGuild #2 %s %d", __FILE__, __LINE__);
- return 0;
- }
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn == 100 || sqlReturn == -1)
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleCancelGuild #3 %d %s %d", sqlReturn, __FILE__, __LINE__);
- return 0;
- }
- iResult = this->m_DBQuery.GetInt(1);
- if (iResult < 0)
- {
- memcpy(pstCancelGuildNames[iCancelGuildCnt].szGuildNames, CancelGuildNames[i].szGuildNames, 8u);
- pstCancelGuildNames[iCancelGuildCnt++].szGuildNames[8] = 0;
- }
- this->m_DBQuery.Clear();
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleCancelGuild #2 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- if (DBDeleteArcaBattleCancelGuild(pstCancelGuildNames, iCancelGuildCnt))
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- *btGuildCnt = iCancelGuildCnt;
- result = 1;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleCancelGuild #3 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ int iResult = m_Query.GetInt(1);
+
+ if (iResult < 0)
{
- result = 0;
+ memcpy(pstCancelGuildNames[iCancelGuildCnt].szGuildNames, CancelGuildNames[i].szGuildNames, MAX_GUILDNAMESTRING);
+ pstCancelGuildNames[iCancelGuildCnt].szGuildNames[MAX_GUILDNAMESTRING] = '\0';
+ iCancelGuildCnt++;
}
+
+ m_Query.Clear();
}
- else
+
+ BOOL bCancelGuild = DBDeleteArcaBattleCancelGuild(pstCancelGuildNames, iCancelGuildCnt);
+
+ if (bCancelGuild == FALSE)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleCancelGuild #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ return FALSE;
}
- return result;
-}
+ btGuildCnt = iCancelGuildCnt;
+ return TRUE;
+}
-int CArcaBattleDBSet::DBDeleteArcaBattleCancelGuild(_stCancelGuildNames *pstCancelGuildNames, int iGuildCnt)
+BOOL CArcaBattleDBSet::DBDeleteArcaBattleCancelGuild(_stCancelGuildNames* pstCancelGuildNames, int iGuildCnt)
{
- int iReturnCode;
CString QueryStr;
+ int iReturnCode = 0;
- iReturnCode = 0;
- for (int i = 0; i < iGuildCnt; ++i)
+ for (int i = 0; i < iGuildCnt; i++)
{
- QueryStr.Format(
- "WZ_ArcaBattleMinGuildDelete '%s'",&pstCancelGuildNames[i]);
+ QueryStr.Format("WZ_ArcaBattleMinGuildDelete '%s'", pstCancelGuildNames[i].szGuildNames);
- if (!this->m_DBQuery.Exec(QueryStr))
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
+ m_Query.Clear();
LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleCancelGuild #1 %s %d", __FILE__, __LINE__);
- return 0;
+ return FALSE;
}
- if (this->m_DBQuery.Fetch() == 100)
+
+ if (m_Query.Fetch() == SQL_NO_DATA)
{
- this->m_DBQuery.Clear();
+ m_Query.Clear();
LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleCancelGuild #2 %s %d", __FILE__, __LINE__);
- return 0;
+ return FALSE;
}
- iReturnCode = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
+
+ iReturnCode = m_Query.GetInt(1);
+ m_Query.Clear();
}
- return 1;
-}
+ return TRUE;
+}
-int CArcaBattleDBSet::DBSelectABRegisteredMemberCnt(unsigned int dwGuild, char *btRegMemCnt)
+BOOL CArcaBattleDBSet::DBSelectABRegisteredMemberCnt(DWORD dwGuild, BYTE& btRegMemCnt)
{
- int result; // eax
- __int16 sqlReturn;
- int iReturnCode;
CString QueryStr;
+ int iReturnCode = 0;
- iReturnCode = 0;
- QueryStr.Format("WZ_ArcaBattleGuildMemberSelect %d",dwGuild);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ QueryStr.Format("WZ_ArcaBattleGuildMemberSelect %d", dwGuild);
+
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- iReturnCode = this->m_DBQuery.GetInt(1);
- if (iReturnCode == -1)
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] GuildMemberSelect #3 %s %d", __FILE__, __LINE__);
- result = 0;
- }
- else
- {
- *btRegMemCnt = iReturnCode;
- this->m_DBQuery.Clear();
- result = 1;
- }
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] GuildMemberSelect #2 %d %s %d",sqlReturn, __FILE__, __LINE__);
- result = 0;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildMemberSelect #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] GuildMemberSelect #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildMemberSelect #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
+ }
+
+ iReturnCode = m_Query.GetInt(1);
+
+ if (iReturnCode == -1)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] GuildMemberSelect #3 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- return result;
-}
+ btRegMemCnt = iReturnCode;
+ m_Query.Clear();
+ return TRUE;
+}
-int CArcaBattleDBSet::DBSelectArcaBattleIsTopRank(unsigned int dwGuildNumber)
+BOOL CArcaBattleDBSet::DBSelectArcaBattleIsTopRank(DWORD dwGuildNumber)
{
- int result;
- int iResult;
- __int16 sqlReturn;
- CString QueryStr;
+ CString QueryStr;
+ QueryStr.Format("WZ_ArcaBattleMarkRankSelect %d", dwGuildNumber);
- QueryStr.Format("WZ_ArcaBattleMarkRankSelect %d",dwGuildNumber);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn == 100)
- {
- this->m_DBQuery.Clear();
- result = -1;
- }
- else if (sqlReturn != 100 && sqlReturn != -1)
- {
- iResult = this->m_DBQuery.GetInt(1);
- if (iResult > 6 || iResult <= 0)
- iResult = 6;
- else
- iResult = 0;
- this->m_DBQuery.Clear();
- result = iResult;
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleIsTopRank #2 %d %s %d",sqlReturn, __FILE__, __LINE__);
- result = -1;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleIsTopRank #1 %s %d", __FILE__, __LINE__);
+ return -1;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleIsTopRank #1 %s %d", __FILE__, __LINE__);
- result = -1;
+ m_Query.Clear();
+ return -1;
}
- return result;
-}
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleIsTopRank #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return -1;
+ }
-int CArcaBattleDBSet::DBSelectArcaBattleMarkCnt(unsigned int dwGuildNumber)
-{
- int result;
- int iResult;
- __int16 sqlReturn;
- CString QueryStr;
+ int iResult = m_Query.GetInt(1);
- QueryStr.Format("WZ_ArcaBattleMarkCntSelect %d",dwGuildNumber);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ if (iResult <= 6 && iResult > 0)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn == 100)
- {
- this->m_DBQuery.Clear();
- result = -2;
- }
- else if (sqlReturn != 100 && sqlReturn != -1)
- {
- iResult = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
- result = iResult;
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleMarkCnt #2 %d %s %d",sqlReturn, __FILE__, __LINE__);
- result = -2;
- }
+ iResult = 0;
}
+
else
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleMarkCnt #1 %s %d", __FILE__, __LINE__);
- result = -2;
+ iResult = 6;
}
- return result;
-}
+ m_Query.Clear();
+ return iResult;
+}
-int CArcaBattleDBSet::DBInsertArcaBattleRegMark(char *szGuildName, unsigned int dwGuildNum, char *szGuildMaster, unsigned int dwMarkCnt)
+BOOL CArcaBattleDBSet::DBSelectArcaBattleMarkCnt(DWORD dwGuildNumber)
{
- int result;
- __int16 sqlReturn;
- CString QueryStr;
+ CString QueryStr;
+ QueryStr.Format("WZ_ArcaBattleMarkCntSelect %d", dwGuildNumber);
- QueryStr.Format("WZ_ArcaBattleMarkInsert '%s', %d, '%s', %u",
- szGuildName,dwGuildNum,szGuildMaster,dwMarkCnt);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBInsertArcaBattleRegMark #2 %d %s %d",sqlReturn, __FILE__, __LINE__);
- result = 0;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleMarkCnt #1 %s %d", __FILE__, __LINE__);
+ return -2;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBInsertArcaBattleRegMark #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ return -2;
}
- return result;
-}
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleMarkCnt #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return -2;
+ }
+
+ int iResult = m_Query.GetInt(1);
+ m_Query.Clear();
+ return iResult;
+}
-int CArcaBattleDBSet::DBSelectArcaBattleTopRank(_stArcaBattleMarkTopRank *pArcaBattleMarkTopRank, char *btGuildCnt)
+BOOL CArcaBattleDBSet::DBInsertArcaBattleRegMark(char* szGuildName, DWORD dwGuildNum, char* szGuildMaster, DWORD dwMarkCnt)
{
- int result;
- __int16 sqlReturn;
CString QueryStr;
+ QueryStr.Format("WZ_ArcaBattleMarkInsert '%s', %d, '%s', %u", szGuildName, dwGuildNum, szGuildMaster, dwMarkCnt);
- QueryStr.Format("WZ_ArcaBattleTopRankSelect");
-
- if (this->m_DBQuery.Exec(QueryStr))
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn == 100)
- {
- this->m_DBQuery.Clear();
- result = 0;
- }
- else
- {
- int iCnt = 0;
- while (sqlReturn != 100)
- {
- if (sqlReturn == -1)
- break;
- this->m_DBQuery.GetStr("G_Name", pArcaBattleMarkTopRank[iCnt].szGuildNames);
- pArcaBattleMarkTopRank[iCnt].dwMarkCnt = this->m_DBQuery.GetInt64("MarkCnt");
- pArcaBattleMarkTopRank[iCnt].btRank = iCnt + 1;
- if (++iCnt >= 6)
- break;
- sqlReturn = this->m_DBQuery.Fetch();
- }
- *btGuildCnt = iCnt;
- this->m_DBQuery.Clear();
- result = 1;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBInsertArcaBattleRegMark #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleTopRank #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBInsertArcaBattleRegMark #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
}
- return result;
+
+ m_Query.Clear();
+ return TRUE;
}
-// 5CD7F8: using guessed type int `CArcaBattleDBSet::DBSelectArcaBattleTopRank'::`2'::__LINE__Var;
-//----- (0042BAA0) --------------------------------------------------------
-int CArcaBattleDBSet::DBSelectArcaBattleMyGuildRank(unsigned int dwGuildNumber, char *btMyGuildRank, unsigned int *dwMarkCnt)
+BOOL CArcaBattleDBSet::DBSelectArcaBattleTopRank(_stArcaBattleMarkTopRank* pArcaBattleMarkTopRank, BYTE& btGuildCnt)
{
- int result; // eax
- int v6; // [esp+14h] [ebp-11Ch]
- int v7; // [esp+2Ch] [ebp-104h]
- __int16 sqlReturn; // [esp+104h] [ebp-2Ch]
- CString QueryStr; // [esp+110h] [ebp-20h]
- // [esp+11Ch] [ebp-14h]
- int v11; // [esp+12Ch] [ebp-4h]
+ CString QueryStr;
+ QueryStr.Format("WZ_ArcaBattleTopRankSelect");
+ if (m_Query.Exec(QueryStr) == FALSE)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleTopRank #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
+ }
+ SQLRETURN sqlReturn = m_Query.Fetch();
- v11 = 0;
- QueryStr.Format(
- "WZ_ArcaBattleMarkRankSelect %d",
- dwGuildNumber);
- if (this->m_DBQuery.Exec(QueryStr))
+ if (sqlReturn == SQL_NO_DATA)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn == 100)
- {
- this->m_DBQuery.Clear();
- v11 = -1;
- result = 0;
- }
- else if (sqlReturn != 100 && sqlReturn != -1)
- {
- *btMyGuildRank = this->m_DBQuery.GetInt(1);
- *dwMarkCnt = this->m_DBQuery.GetInt64(2);
- this->m_DBQuery.Clear();
- v11 = -1;
- result = 1;
- }
- else
+ m_Query.Clear();
+ return FALSE;
+ }
+
+ int iCnt = 0;
+
+ while (sqlReturn != SQL_NO_DATA && sqlReturn != SQL_NULL_DATA)
+ {
+ m_Query.GetStr("G_Name", pArcaBattleMarkTopRank[iCnt].szGuildNames);
+ pArcaBattleMarkTopRank[iCnt].dwMarkCnt = m_Query.GetInt64("MarkCnt");
+ pArcaBattleMarkTopRank[iCnt].btRank = iCnt + 1;
+ iCnt++;
+
+ if (iCnt >= 6)
{
- this->m_DBQuery.Clear();
- LogAddTD(
- "error-L3 : [ArcaBattle] DBSelectArcaBattleMarkCnt #2 %d %s %d",
- sqlReturn, __FILE__, __LINE__);
- v7 = 0;
- v11 = -1;
- result = v7;
+ break;
}
+
+ sqlReturn = m_Query.Fetch();
}
- else
+
+ btGuildCnt = iCnt;
+ m_Query.Clear();
+ return TRUE;
+}
+
+BOOL CArcaBattleDBSet::DBSelectArcaBattleMyGuildRank(DWORD dwGuildNumber, BYTE& btMyGuildRank, DWORD& dwMarkCnt)
+{
+ CString QueryStr;
+ QueryStr.Format("WZ_ArcaBattleMarkRankSelect %d", dwGuildNumber);
+
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
- LogAddTD(
- "error-L3 : [ArcaBattle] DBSelectArcaBattleMarkCnt #1 %s %d", __FILE__, __LINE__);
- v6 = 0;
- v11 = -1;
- result = v6;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleMarkCnt #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- return result;
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA)
+ {
+ m_Query.Clear();
+ return FALSE;
+ }
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBSelectArcaBattleMarkCnt #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
+ }
+
+ btMyGuildRank = m_Query.GetInt(1);
+ dwMarkCnt = m_Query.GetInt64(2);
+ m_Query.Clear();
+ return TRUE;
}
-// 5CD7FC: using guessed type int `CArcaBattleDBSet::DBSelectArcaBattleMyGuildRank'::`2'::__LINE__Var;
-//----- (0042BCE0) --------------------------------------------------------
-int CArcaBattleDBSet::DBDeleteArcaBattleMarkReg(unsigned int dwGuildNumber)
+BOOL CArcaBattleDBSet::DBDeleteArcaBattleMarkReg(DWORD dwGuildNumber)
{
- int result;
- int iResult;
- __int16 sqlReturn;
CString QueryStr;
+ QueryStr.Format("WZ_ArcaBattleMarkRegDel %d", dwGuildNumber);
- QueryStr.Format("WZ_ArcaBattleMarkRegDel %d",dwGuildNumber);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- iResult = this->m_DBQuery.GetInt(1);
- if (iResult == -1)
- LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleMarkReg #3 %d %s %d",
- sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleMarkReg #2 %d %s %d",
- sqlReturn, __FILE__, __LINE__);
- result = 0;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleMarkReg #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleMarkReg #1 %s %d", __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleMarkReg #2 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ return FALSE;
}
- return result;
-}
+ int iResult = m_Query.GetInt(1);
+
+ if (iResult == -1)
+ {
+ LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleMarkReg #3 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ }
+
+ m_Query.Clear();
+ return TRUE;
+}
void CArcaBattleDBSet::DBDeleteAllArcaBattleGuildReg()
{
CString QueryStr;
- int v4;
- v4 = 0;
QueryStr.Format("WZ_ArcaBattleGuildMarkInfoAllDel");
- if (this->m_DBQuery.Exec(QueryStr))
- {
- this->m_DBQuery.Clear();
- v4 = -1;
- }
- else
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
+ m_Query.Clear();
LogAddTD("error-L3 : [ArcaBattle] DBDeleteAllArcaBattleGuildReg %s %d", __FILE__, __LINE__);
- v4 = -1;
+ return;
}
-}
+ m_Query.Clear();
+}
void CArcaBattleDBSet::DBDeleteArcaBattleGuildReg()
{
CString QueryStr;
-
QueryStr.Format("delete T_ARCA_BATTLE_MEMBER_JOIN_INFO");
- if (this->m_DBQuery.Exec(QueryStr))
- {
- this->m_DBQuery.Clear();
- QueryStr.Format(
- "delete T_ARCA_BATTLE_GUILD_JOIN_INFO");
-
- if (this->m_DBQuery.Exec(QueryStr))
- {
- this->m_DBQuery.Clear();
- QueryStr.Format("delete T_ARCA_BATTLE_GUILDMARK_REG");
-
- if (this->m_DBQuery.Exec(QueryStr))
- {
- this->m_DBQuery.Clear();
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleGuildReg #3 %s %d", __FILE__, __LINE__);
- }
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleGuildReg #2 %s %d", __FILE__, __LINE__);
- }
- }
- else
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
+ m_Query.Clear();
LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleGuildReg #1 %s %d", __FILE__, __LINE__);
+ return;
}
-}
+ m_Query.Clear();
+ QueryStr.Format("delete T_ARCA_BATTLE_GUILD_JOIN_INFO");
-void CArcaBattleDBSet::DBUpdateArcaBattleGuildReg(BYTE *lpRecv, int aIndex)
-{
- CString QueryStr;
- _tagPMSG_REQ_AB_MARK_REG_UPDATE_DS *lpMsg;
- lpMsg = (_tagPMSG_REQ_AB_MARK_REG_UPDATE_DS *)lpRecv;
+ if (m_Query.Exec(QueryStr) == FALSE)
+ {
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleGuildReg #2 %s %d", __FILE__, __LINE__);
+ return;
+ }
+ m_Query.Clear();
+ QueryStr.Format("delete T_ARCA_BATTLE_GUILDMARK_REG");
- QueryStr.Format("UPDATE T_ARCA_BATTLE_GUILDMARK_REG SET MarkCnt = %d WHERE G_Number = %d",lpMsg->dwMarkCnt,lpMsg->dwGuildNum);
-
- if (this->m_DBQuery.Exec(QueryStr))
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
+ m_Query.Clear();
+ LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleGuildReg #3 %s %d", __FILE__, __LINE__);
+ return;
}
- else
+
+ m_Query.Clear();
+}
+
+void CArcaBattleDBSet::DBUpdateArcaBattleGuildReg(LPBYTE lpRecv, int aIndex)
+{
+ LPPMSG_REQ_AB_MARK_REG_UPDATE_DS lpMsg = (LPPMSG_REQ_AB_MARK_REG_UPDATE_DS)lpRecv;
+
+ CString QueryStr;
+ QueryStr.Format("UPDATE T_ARCA_BATTLE_GUILDMARK_REG SET MarkCnt = %d WHERE G_Number = %d", lpMsg->dwMarkCnt, lpMsg->dwGuildNum);
+
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
+ m_Query.Clear();
LogAddTD("error-L3 : [ArcaBattle] DBDeleteArcaBattleGuildReg #1 %s %d", __FILE__, __LINE__);
+ return;
}
-}
+ m_Query.Clear();
+}
-void CArcaBattleDBSet::DBSelectArcaBattleAllGuildMark(_stABAllGuildMark *pABAllGuildMark, int *iGuildCnt)
+void CArcaBattleDBSet::DBSelectArcaBattleAllGuildMark(_stABAllGuildMark* pABAllGuildMark, int& iGuildCnt)
{
- SQLRETURN i; // [esp+D4h] [ebp-FE4h]
- CString QueryStr;
_stABAllGuildMark _stABAllGuildMark[250];
+ CString QueryStr;
QueryStr.Format("WZ_ArcaBattleAllMarkCntSelect");
- if (this->m_DBQuery.Exec(QueryStr))
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- int wGuildCnt = 0;
- for (i = this->m_DBQuery.Fetch(); i != 100; i = this->m_DBQuery.Fetch())
- {
- if (i == -1)
- break;
- this->m_DBQuery.GetStr("G_Name", pABAllGuildMark[wGuildCnt].szGuildName);
- pABAllGuildMark[wGuildCnt++].dwMarkCnt = this->m_DBQuery.GetInt("MarkCnt");
- if (wGuildCnt >= 250)
- break;
- }
- *iGuildCnt = wGuildCnt;
- this->m_DBQuery.Clear();
+ LogAddC(LOGC_RED, "Error WZ_ArcaBattleAllMarkCntSelect m_Query.Exec %s %d", __FILE__, __LINE__);
+ m_Query.Clear();
+ return;
}
- else
+
+ int iCnt = 0;
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ while (sqlReturn != SQL_NO_DATA && sqlReturn != SQL_NULL_DATA)
{
- LogAddC(2,"Error WZ_ArcaBattleAllMarkCntSelect m_DBQuery.Exec %s %d", __FILE__, __LINE__);
- this->m_DBQuery.Clear();
+ m_Query.GetStr("G_Name", pABAllGuildMark[iCnt].szGuildName);
+ pABAllGuildMark[iCnt].dwMarkCnt = m_Query.GetInt("MarkCnt");
+ iCnt++;
+
+ if (iCnt >= 250)
+ {
+ break;
+ }
+
+ sqlReturn = m_Query.Fetch();
}
+
+ iGuildCnt = iCnt;
+ m_Query.Clear();
}
-int CArcaBattleDBSet::DBSelectABAllJoinUser(_stABJoinUserInfoDS *pABJoinUserInfo, char *btUserCnt)
+BOOL CArcaBattleDBSet::DBSelectABAllJoinUser(_stABJoinUserInfoDS* pABJoinUserInfo, BYTE& btUserCnt)
{
- int result;
- SQLRETURN sqlRet;
- CString szQuery;
int iCnt = 0;
-
+
+ CString szQuery;
szQuery.Format("WZ_ArcaBattleAllJoinUserSelect");
- if (this->m_DBQuery.Exec(szQuery))
+
+ if (m_Query.Exec(szQuery) == FALSE)
{
- for (sqlRet = this->m_DBQuery.Fetch(); sqlRet != 100; sqlRet = this->m_DBQuery.Fetch())
- {
- if (sqlRet == SQL_NULL_DATA)
- break;
- this->m_DBQuery.GetStr("G_Name", pABJoinUserInfo[iCnt].szGuildName);
- pABJoinUserInfo[iCnt].dwGuild = this->m_DBQuery.GetInt("Number");
- this->m_DBQuery.GetStr("CharName", pABJoinUserInfo[iCnt++].szUserName);
- if (iCnt >= 200)
- break;
- }
- *btUserCnt = iCnt;
- this->m_DBQuery.Clear();
- result = 1;
+ LogAddC(LOGC_RED, "Error WZ_ArcaBattleAllJoinUserSelect m_Query.Exec %s %d", __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ while (sqlReturn != SQL_NO_DATA && sqlReturn != SQL_NULL_DATA)
{
- LogAddC(2,"Error WZ_ArcaBattleAllJoinUserSelect m_DBQuery.Exec %s %d", __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
+ m_Query.GetStr("G_Name", pABJoinUserInfo[iCnt].szGuildName);
+ pABJoinUserInfo[iCnt].dwGuild = m_Query.GetInt("Number");
+ m_Query.GetStr("CharName", pABJoinUserInfo[iCnt].szUserName);
+ iCnt++;
+
+ if (iCnt >= 200)
+ {
+ break;
+ }
+
+ sqlReturn = m_Query.Fetch();
}
- return result;
+
+ btUserCnt = iCnt;
+ m_Query.Clear();
+ return TRUE;
}
\ No newline at end of file
diff --git a/DataServer/DbSet/ArcaBattleDBSet.h b/DataServer/DbSet/ArcaBattleDBSet.h
index 609b4f7..d31ef8b 100644
--- a/DataServer/DbSet/ArcaBattleDBSet.h
+++ b/DataServer/DbSet/ArcaBattleDBSet.h
@@ -1,42 +1,55 @@
+#ifndef __ARCABATTLEDBSET_H__
+#define __ARCABATTLEDBSET_H__
#pragma once
-//#include "Include\ProDef.h"
-#include "..\Include\Sprodef.h"
+#include "..\Include\Sprodef.h"
#include "DBConBase.h"
-
class CArcaBattleDBSet : public CDBConBase
{
public:
-
CArcaBattleDBSet();
virtual ~CArcaBattleDBSet();
- int Connect();
- int DBSelectArcaBattleGuildJoin(char *szName, int *iResult); // idb
- int DBInsertArcaBattleGuildJoin(char *szName, char *szGuildName, unsigned int dwGuild, int *iResult); // idb
- int DBInsertArcaBattleGuildMemberJoin(char *szName, char *szGuildName, unsigned int dwGuild, int *iResult); // idb
- int DBInsertArcaBattleWinGuild(_stABWinGuildInfoDS *pABWinGuildInfoDS, int iGuildCnt); // idb
- int DBSelectArcaBattleWinGuild(_stABWinGuildInfoDS *pABGuildInfo, int *iGuildCnt); // idb
- int DBIsArcaBattleEnter(char *szName, int *iResult); // idb
- int DBSelectArcaBattleGuildGroupNum(char *szName, int *iGroupNum); // idb
- int DBDeleteArcaBattleInfo(); // idb
- int DBSelectArcaBattleJoinMemberUnder(_stGuildUnderMember *pGuildMemberCnt, char *btGuildCnt); // idb
- int DBInsertArcaBattleProc(int iABProc); // idb
- int DBSelectArcaBattleProc(int *iABProc); // idb
- int DBSelectArcaBattleCancelGuild(_stCancelGuildNames *pstCancelGuildNames, int iMinGuildMemNum, char *btGuildCnt); // idb
- int DBDeleteArcaBattleCancelGuild(_stCancelGuildNames *pstCancelGuildNames, int iGuildCnt); // idb
- int DBSelectABRegisteredMemberCnt(unsigned int dwGuild, char *btRegMemCnt); // idb
- int DBSelectArcaBattleIsTopRank(unsigned int dwGuildNumber); // idb
- int DBSelectArcaBattleMarkCnt(unsigned int dwGuildNumber); // idb
- int DBInsertArcaBattleRegMark(char *szGuildName, unsigned int dwGuildNum, char *szGuildMaster, unsigned int dwMarkCnt); // idb
- int DBSelectArcaBattleTopRank(_stArcaBattleMarkTopRank *pArcaBattleMarkTopRank, char *btGuildCnt); // idb
- int DBSelectArcaBattleMyGuildRank(unsigned int dwGuildNumber, char *btMyGuildRank, unsigned int *dwMarkCnt); // idb
- int DBDeleteArcaBattleMarkReg(unsigned int dwGuildNumber); // idb
- void DBDeleteAllArcaBattleGuildReg(); // idb
- void DBDeleteArcaBattleGuildReg(); // idb
- void DBUpdateArcaBattleGuildReg(BYTE *lpRecv, int aIndex); // idb
- void DBSelectArcaBattleAllGuildMark(_stABAllGuildMark *pABAllGuildMark, int *iGuildCnt); // idb
- int DBSelectABAllJoinUser(_stABJoinUserInfoDS *pABJoinUserInfo, char *btUserCnt); // idb
-
-};
\ No newline at end of file
+ BOOL Connect();
+
+ BOOL DBSelectArcaBattleGuildJoin(char* szName, int& iResult);
+ BOOL DBInsertArcaBattleGuildJoin(char* szName, char* szGuildName, DWORD dwGuild, int& iResult);
+ BOOL DBInsertArcaBattleGuildMemberJoin(char* szName, char* szGuildName, DWORD dwGuild, int& iResult);
+ BOOL DBInsertArcaBattleWinGuild(_stABWinGuildInfoDS* pABWinGuildInfoDS, int iGuildCnt);
+ BOOL DBSelectArcaBattleWinGuild(_stABWinGuildInfoDS* pABGuildInfo, int& iGuildCnt);
+
+ BOOL DBIsArcaBattleEnter(char* szName, int& iResult);
+
+ BOOL DBSelectArcaBattleGuildGroupNum(char* szName, int& iGroupNum);
+
+ BOOL DBDeleteArcaBattleInfo();
+ BOOL DBSelectArcaBattleJoinMemberUnder(_stGuildUnderMember* pGuildMemberCnt, BYTE& btGuildCnt);
+
+ BOOL DBInsertArcaBattleProc(int iABProc);
+ BOOL DBSelectArcaBattleProc(int& iABProc);
+
+ BOOL DBSelectArcaBattleCancelGuild(_stCancelGuildNames* pstCancelGuildNames, int iMinGuildMemNum, BYTE& btGuildCnt);
+ BOOL DBDeleteArcaBattleCancelGuild(_stCancelGuildNames* pstCancelGuildNames, int iGuildCnt);
+
+ BOOL DBSelectABRegisteredMemberCnt(DWORD dwGuild, BYTE& btRegMemCnt);
+
+ BOOL DBSelectArcaBattleIsTopRank(DWORD dwGuildNumber);
+ BOOL DBSelectArcaBattleMarkCnt(DWORD dwGuildNumber);
+ BOOL DBInsertArcaBattleRegMark(char* szGuildName, DWORD dwGuildNum, char* szGuildMaster, DWORD dwMarkCnt);
+ BOOL DBSelectArcaBattleTopRank(_stArcaBattleMarkTopRank* pArcaBattleMarkTopRank, BYTE& btGuildCnt);
+ BOOL DBSelectArcaBattleMyGuildRank(DWORD dwGuildNumber, BYTE& btMyGuildRank, DWORD& dwMarkCnt);
+ BOOL DBDeleteArcaBattleMarkReg(DWORD dwGuildNumber);
+
+ void DBDeleteAllArcaBattleGuildReg();
+ void DBDeleteArcaBattleGuildReg();
+ void DBUpdateArcaBattleGuildReg(LPBYTE lpRecv, int aIndex);
+
+ void DBSelectArcaBattleAllGuildMark(_stABAllGuildMark* pABAllGuildMark, int& iGuildCnt);
+ BOOL DBSelectABAllJoinUser(_stABJoinUserInfoDS* pABJoinUserInfo, BYTE& btUserCnt);
+
+public:
+ CQuery m_Query;
+};
+
+#endif
\ No newline at end of file
diff --git a/DataServer/DbSet/BlockChatUserDBSet.cpp b/DataServer/DbSet/BlockChatUserDBSet.cpp
index 85e14a2..86944dc 100644
--- a/DataServer/DbSet/BlockChatUserDBSet.cpp
+++ b/DataServer/DbSet/BlockChatUserDBSet.cpp
@@ -11,95 +11,80 @@ CBlockChatUserDBSet::~CBlockChatUserDBSet()
BOOL CBlockChatUserDBSet::Connect()
{
- if (m_DBQuery.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass))
- return 1;
- MsgBox("CBlockChatUserDbSet ODBC Connect Fail");
- return 0;
-}
+ if (m_DBQuery.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass) == FALSE)
+ {
+ MsgBox("CBlockChatUserDbSet ODBC Connect Fail");
+ return FALSE;
+ }
+ return TRUE;
+}
-//----- (0042CA60) --------------------------------------------------------
-bool CBlockChatUserDBSet::DSDB_SelectBlockChatUser(char *Name, SDHP_ANS_BLOCK_CHAT_USER_INFO *lpSendMsg)
+BOOL CBlockChatUserDBSet::DSDB_SelectBlockChatUser(char* Name, LPSDHP_ANS_BLOCK_CHAT_USER_INFO lpSendMsg)
{
- int result;
- __int16 sqlReturn;
- char btSlotNum;
- int nCnt;
CString QueryStr;
+ int nCnt = 0;
+ BYTE btSlotNum = 0;
- nCnt = 0;
- btSlotNum = 0;
QueryStr.Format("WZ_ChattingBlockUserLoad '%s'", Name);
- if (this->m_DBQuery.Exec(QueryStr))
+
+ if (m_DBQuery.Exec(QueryStr) == FALSE)
{
- for (sqlReturn = this->m_DBQuery.Fetch(); sqlReturn != SQL_NO_DATA; sqlReturn = this->m_DBQuery.Fetch())
- {
- if (sqlReturn == -1)
- break;
- btSlotNum = this->m_DBQuery.GetInt("SlotNum");
- lpSendMsg->BlockCharList[btSlotNum].bIsUsed = 1;
- lpSendMsg->BlockCharList[btSlotNum].btSlotNum = btSlotNum;
- this->m_DBQuery.GetStr("BlockUser", lpSendMsg->BlockCharList[btSlotNum].szCharName);
- lpSendMsg->BlockCharList[btSlotNum].szCharName[10] = 0;
- if (++nCnt >= 20)
- break;
- }
- lpSendMsg->btUserCnt = nCnt;
- this->m_DBQuery.Clear();
- result = 1;
+ m_DBQuery.Clear();
+ LogAddTD("error-L3 : [BlockChatUser] DSDB_SelectBlockChatUser #1 %s %d", __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_DBQuery.Fetch();
+
+ while (sqlReturn != SQL_NO_DATA && sqlReturn != SQL_NULL_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [BlockChatUser] DSDB_SelectBlockChatUser #1 %s %d",__FILE__,__LINE__);
- result = 0;
- }
- return result;
-}
+ btSlotNum = m_DBQuery.GetInt("SlotNum");
+ lpSendMsg->BlockCharList[btSlotNum].bIsUsed = true;
+ lpSendMsg->BlockCharList[btSlotNum].btSlotNum = btSlotNum;
+ m_DBQuery.GetStr("BlockUser", lpSendMsg->BlockCharList[btSlotNum].szCharName);
+ lpSendMsg->BlockCharList[btSlotNum].szCharName[MAX_IDSTRING] = '\0';
+ nCnt++;
+ if (nCnt >= 20)
+ {
+ break;
+ }
+ }
+ lpSendMsg->btUserCnt = nCnt;
+ m_DBQuery.Clear();
+ return TRUE;
+}
-int CBlockChatUserDBSet::DSDB_AddBlockChatUser(SDHP_REQ_ADD_BLOCK_CHAT_USER_INFO *lpRecv)
+BOOL CBlockChatUserDBSet::DSDB_AddBlockChatUser(LPSDHP_REQ_ADD_BLOCK_CHAT_USER_INFO lpRecv)
{
- int result;
CString qSql;
+ qSql.Format("EXEC WZ_ChattingBlockUserInsert '%s', %d ,'%s'", lpRecv->szCharName, lpRecv->szBlockChar.btSlotNum, lpRecv->szBlockChar.szCharName);
- qSql.Format("EXEC WZ_ChattingBlockUserInsert '%s', %d ,'%s'",lpRecv->szCharName,lpRecv->szBlockChar.btSlotNum,lpRecv->szBlockChar.szCharName);
-
- if (this->m_DBQuery.Exec(qSql))
- {
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [BlockChatUser] DSDB_AddBlockChatUser [%s] %s %d",lpRecv->szCharName, __FILE__, __LINE__);
- result = 0;
+ m_DBQuery.Clear();
+ LogAddTD("error-L3 : [BlockChatUser] DSDB_AddBlockChatUser [%s] %s %d", lpRecv->szCharName, __FILE__, __LINE__);
+ return FALSE;
}
- return result;
-}
-
+ m_DBQuery.Clear();
+ return TRUE;
+}
-int CBlockChatUserDBSet::DSDB_DelBlockChatUser(SDHP_REQ_DEL_BLOCK_CHAT_USER_INFO *lpRecv)
+BOOL CBlockChatUserDBSet::DSDB_DelBlockChatUser(LPSDHP_REQ_DEL_BLOCK_CHAT_USER_INFO lpRecv)
{
- int result;
CString qSql;
+ qSql.Format("EXEC WZ_ChattingBlockUserDel '%s' ,'%s'", lpRecv->szCharName, lpRecv->szBlockChar.szCharName);
- qSql.Format("EXEC WZ_ChattingBlockUserDel '%s' ,'%s'",
- lpRecv->szCharName,lpRecv->szBlockChar.szCharName);
- if (this->m_DBQuery.Exec(qSql))
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
- this->m_DBQuery.Clear();
- result = 1;
+ m_DBQuery.Clear();
+ LogAddTD("error-L3 : [BlockChatUser] DSDB_DelBlockChatUser [%s] %s %d", lpRecv->szCharName, __FILE__, __LINE__);
+ return FALSE;
}
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [BlockChatUser] DSDB_DelBlockChatUser [%s] %s %d",
- lpRecv->szCharName, __FILE__, __LINE__);
- result = 0;
- }
- return result;
+
+ m_DBQuery.Clear();
+ return TRUE;
}
\ No newline at end of file
diff --git a/DataServer/DbSet/BlockChatUserDBSet.h b/DataServer/DbSet/BlockChatUserDBSet.h
index 1f7a55e..840bd9c 100644
--- a/DataServer/DbSet/BlockChatUserDBSet.h
+++ b/DataServer/DbSet/BlockChatUserDBSet.h
@@ -1,18 +1,24 @@
+#ifndef __BLOCKCHATUSERDBSET_H__
+#define __BLOCKCHATUSERDBSET_H__
#pragma once
-//#include "Include\ProDef.h"
-#include "..\Include\Sprodef.h"
+#include "..\Include\Sprodef.h"
#include "DBConBase.h"
class CBlockChatUserDBSet : public CDBConBase
{
public:
-
CBlockChatUserDBSet();
virtual ~CBlockChatUserDBSet();
- int Connect(); // idb
- bool DSDB_SelectBlockChatUser(char *Name, SDHP_ANS_BLOCK_CHAT_USER_INFO *lpSendMsg); // idb
- int DSDB_AddBlockChatUser(SDHP_REQ_ADD_BLOCK_CHAT_USER_INFO *lpRecv); // idb
- int DSDB_DelBlockChatUser(SDHP_REQ_DEL_BLOCK_CHAT_USER_INFO *lpRecv); // idb
-};
\ No newline at end of file
+ BOOL Connect();
+
+ BOOL DSDB_SelectBlockChatUser(char* Name, LPSDHP_ANS_BLOCK_CHAT_USER_INFO lpSendMsg);
+ BOOL DSDB_AddBlockChatUser(LPSDHP_REQ_ADD_BLOCK_CHAT_USER_INFO lpRecv);
+ BOOL DSDB_DelBlockChatUser(LPSDHP_REQ_DEL_BLOCK_CHAT_USER_INFO lpRecv);
+
+public:
+ CQuery m_DBQuery;
+};
+
+#endif
\ No newline at end of file
diff --git a/DataServer/DbSet/BombHuntDBSet.cpp b/DataServer/DbSet/BombHuntDBSet.cpp
index deb6a40..1eb5eb9 100644
--- a/DataServer/DbSet/BombHuntDBSet.cpp
+++ b/DataServer/DbSet/BombHuntDBSet.cpp
@@ -11,115 +11,92 @@ CBombHuntDBSet::~CBombHuntDBSet()
BOOL CBombHuntDBSet::Connect()
{
- if (m_DBQuery.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass))
- return 1;
- MsgBox("CBombHuntDBSet ODBC Connect Fail");
- return 0;
+ if (m_Query.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass) == FALSE)
+ {
+ MsgBox("CBombHuntDBSet ODBC Connect Fail");
+ return FALSE;
+ }
+
+ return TRUE;
}
-int CBombHuntDBSet::DBSelectBombHunt(char *szAccountID, char *szName, unsigned __int16 *wOutScore, char *btOutGameState, char *szOutTileState)
+BOOL CBombHuntDBSet::DBSelectBombHunt(char* szAccountID, char* szName, WORD& wOutScore, BYTE& btOutGameState, char* szOutTileState)
{
- int result;
- CString QueryStr;
-
int iItemCount = 0;
int iReturnCode = 0;
-
+ CString QueryStr;
QueryStr.Format("EXEC WZ_BombHuntSetSelect '%s', '%s'", szAccountID, szName);
- if (this->m_DBQuery.Exec(QueryStr))
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- if (this->m_DBQuery.Fetch() == 100)
- {
- this->m_DBQuery.Clear();
- result = 0;
- }
- else
- {
- *wOutScore = this->m_DBQuery.GetInt("Score");
- *btOutGameState = this->m_DBQuery.GetInt("GameState");
- this->m_DBQuery.GetStr("TileState", szOutTileState);
- this->m_DBQuery.Clear();
- result = 1;
- }
+ m_Query.Clear();
+ LogAddTD("error-L3 : [BombHuntDBSet] DBSelectBombHuntInfo #1 [%s][%s] %s %d", szAccountID, szName, __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA)
{
- this->m_DBQuery.Clear();
- LogAddTD("error-L3 : [BombHuntDBSet] DBSelectBombHuntInfo #1 [%s][%s] %s %d", szAccountID, szName, __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ return FALSE;
}
- return result;
+
+ wOutScore = m_Query.GetInt("Score");
+ btOutGameState = m_Query.GetInt("GameState");
+ m_Query.GetStr("TileState", szOutTileState);
+ m_Query.Clear();
+ return TRUE;
}
-int CBombHuntDBSet::DBInsertBombHunt(char *szAccountID, char *szName, unsigned __int16 wScore, unsigned __int16 wGameState, char *szTileState)
+BOOL CBombHuntDBSet::DBInsertBombHunt(char *szAccountID, char *szName, WORD wScore, WORD wGameState, char *szTileState)
{
- int result;
- CString QueryStr;
int iItemCount = 0;
int iReturnCode = 0;
+ CString QueryStr;
QueryStr.Format("EXEC WZ_BombHuntSetSave '%s', '%s', %d, %d, '%s'", szAccountID, szName, wGameState, wScore, szTileState);
- if (this->m_DBQuery.Exec(QueryStr))
- {
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
+ m_Query.Clear();
LogAddTD("error-L3 : [BombHunt] DBInsertBombHunt #1 [%s][%s] %s %d", szAccountID, szName, __FILE__, __LINE__);
- result = 0;
+ return FALSE;
}
- return result;
+
+ m_Query.Clear();
+ return TRUE;
}
-int CBombHuntDBSet::DBDeleteBombHunt(char *szAccountID, char *szName)
+BOOL CBombHuntDBSet::DBDeleteBombHunt(char *szAccountID, char *szName)
{
- int result;
CString QueryStr;
+ QueryStr.Format("EXEC WZ_BombHuntSetDelete '%s', '%s'", szAccountID, szName);
- QueryStr.Format(
- "EXEC WZ_BombHuntSetDelete '%s', '%s'",
- szAccountID,
- szName);
- if (this->m_DBQuery.Exec(QueryStr))
- {
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
- LogAddTD(
- "error-L3 : [BombHunt] DBDeleteBombHunt #1 [%s][%s] %s %d",
- szAccountID,
- szName, __FILE__, __LINE__);
- result = 0;
+ m_Query.Clear();
+ LogAddTD("error-L3 : [BombHunt] DBDeleteBombHunt #1 [%s][%s] %s %d", szAccountID, szName, __FILE__, __LINE__);
+ return FALSE;
}
- return result;
+
+ m_Query.Clear();
+ return TRUE;
}
-int CBombHuntDBSet::DBInsertBombHuntLog(char *szAccountID, char *szName, unsigned __int16 wScore, char btClear)
+BOOL CBombHuntDBSet::DBInsertBombHuntLog(char *szAccountID, char *szName, WORD wScore, BYTE btClear)
{
- int result;
CString QueryStr;
-
QueryStr.Format("EXEC WZ_BombHuntLogSetSave '%s', '%s', %d, %d", szAccountID, szName, wScore, btClear);
- if (this->m_DBQuery.Exec(QueryStr))
- {
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
+ if (m_Query.Exec(QueryStr) == FALSE)
{
- this->m_DBQuery.Clear();
+ m_Query.Clear();
LogAddTD("error-L3 : [MuRummy] DBInsertBombHuntLog #1 [%s][%s] %s %d", szAccountID, szName, __FILE__, __LINE__);
-
- result = 0;
+ return FALSE;
}
- return result;
+
+ m_Query.Clear();
+ return TRUE;
}
\ No newline at end of file
diff --git a/DataServer/DbSet/BombHuntDBSet.h b/DataServer/DbSet/BombHuntDBSet.h
index 863f5c4..2f223e2 100644
--- a/DataServer/DbSet/BombHuntDBSet.h
+++ b/DataServer/DbSet/BombHuntDBSet.h
@@ -1,10 +1,10 @@
+#ifndef __BOMBHUNTDBSET_H__
+#define __BOMBHUNTDBSET_H__
#pragma once
-//#include "Include\ProDef.h"
-#include "..\Include\Sprodef.h"
+#include "..\Include\Sprodef.h"
#include "DBConBase.h"
-
class CBombHuntDBSet : public CDBConBase
{
public:
@@ -12,9 +12,15 @@ class CBombHuntDBSet : public CDBConBase
CBombHuntDBSet();
virtual ~CBombHuntDBSet();
- int Connect();
- int DBSelectBombHunt(char *szAccountID, char *szName, unsigned __int16 *wOutScore, char *btOutGameState, char *szOutTileState); // idb
- int DBInsertBombHunt(char *szAccountID, char *szName, unsigned __int16 wScore, unsigned __int16 wGameState, char *szTileState); // idb
- int DBDeleteBombHunt(char *szAccountID, char *szName); // idb
- int DBInsertBombHuntLog(char *szAccountID, char *szName, unsigned __int16 wScore, char btClear); // idb
-};
\ No newline at end of file
+ BOOL Connect();
+
+ BOOL DBSelectBombHunt(char *szAccountID, char *szName, WORD& wOutScore, BYTE& btOutGameState, char *szOutTileState);
+ BOOL DBInsertBombHunt(char *szAccountID, char *szName, WORD wScore, WORD wGameState, char *szTileState);
+ BOOL DBDeleteBombHunt(char *szAccountID, char *szName);
+ BOOL DBInsertBombHuntLog(char *szAccountID, char *szName, WORD wScore, BYTE btClear);
+
+public:
+ CQuery m_Query;
+};
+
+#endif
\ No newline at end of file
diff --git a/DataServer/DbSet/CastleDBSet.cpp b/DataServer/DbSet/CastleDBSet.cpp
index 67e80dd..8d66589 100644
--- a/DataServer/DbSet/CastleDBSet.cpp
+++ b/DataServer/DbSet/CastleDBSet.cpp
@@ -1,40 +1,27 @@
-// CastleDBSet.cpp: implementation of the CCastleDBSet class.
-// Decompilation Completed -> All Same as WebZen
-//////////////////////////////////////////////////////////////////////
-
#include "stdafx.h"
-#ifdef MU_CASTLESIEGE_DS_PROTOCOL_20041105
#include "CastleDBSet.h"
-//#include "..\common\winutil.h"
-
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
CCastleDBSet::CCastleDBSet()
{
-
}
CCastleDBSet::~CCastleDBSet()
{
-
}
BOOL CCastleDBSet::Connect()
{
- return this->CDBConBase::Connect(szDbConnectID, szDbConnectPass);
+ return CDBConBase::Connect(szDbConnectID, szDbConnectPass);
}
-BOOL CCastleDBSet::DSDB_QueryCastleTotalInfo(int iMapSvrGroup, int iCastleEventCycle, CASTLE_DATA* lpCastleData)
+BOOL CCastleDBSet::DSDB_QueryCastleTotalInfo(int iMapSvrGroup, int iCastleEventCycle, LPCASTLE_DATA lpCastleData)
{
- if(lpCastleData == NULL)
+ if (lpCastleData == NULL)
{
return TRUE;
}
CString qSql;
-
qSql.Format("EXEC WZ_CS_GetCastleTotalInfo %d, %d", iMapSvrGroup, iCastleEventCycle);
if (m_DBQuery.Exec(qSql) == FALSE)
@@ -43,9 +30,9 @@ BOOL CCastleDBSet::DSDB_QueryCastleTotalInfo(int iMapSvrGroup, int iCastleEventC
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
- if(sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA)
+ if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
return TRUE;
@@ -70,7 +57,7 @@ BOOL CCastleDBSet::DSDB_QueryCastleTotalInfo(int iMapSvrGroup, int iCastleEventC
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryOwnerGuildMaster(int iMapSvrGroup, CSP_ANS_OWNERGUILDMASTER* lpOwnerGuildMaster)
+BOOL CCastleDBSet::DSDB_QueryOwnerGuildMaster(int iMapSvrGroup, LPCSP_ANS_OWNERGUILDMASTER lpOwnerGuildMaster)
{
if (lpOwnerGuildMaster == NULL)
{
@@ -78,7 +65,6 @@ BOOL CCastleDBSet::DSDB_QueryOwnerGuildMaster(int iMapSvrGroup, CSP_ANS_OWNERGUI
}
CString qSql;
-
qSql.Format("EXEC WZ_CS_GetOwnerGuildMaster %d", iMapSvrGroup);
if (m_DBQuery.Exec(qSql) == FALSE)
@@ -87,30 +73,30 @@ BOOL CCastleDBSet::DSDB_QueryOwnerGuildMaster(int iMapSvrGroup, CSP_ANS_OWNERGUI
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
-
- if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
+
+ if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
- return NULL;
+ return FALSE;
}
-
- char szOwnerGuild[MAX_GUILDNAMESTRING+MAX_GUILDNAMESTRING] = {'\0'};
- char szOwnerGuildMaster[MAX_GUILDNAMESTRING+MAX_GUILDNAMESTRING] = {'\0'};
-
+
+ char szOwnerGuild[MAX_GUILDNAMESTRING + MAX_GUILDNAMESTRING] = { '\0' };
+ char szOwnerGuildMaster[MAX_GUILDNAMESTRING + MAX_GUILDNAMESTRING] = { '\0' };
+
lpOwnerGuildMaster->iResult = m_DBQuery.GetInt("QueryResult");
-
+
m_DBQuery.GetStr("OwnerGuild", szOwnerGuild);
m_DBQuery.GetStr("OwnerGuildMaster", szOwnerGuildMaster);
-
+
memcpy(lpOwnerGuildMaster->szCastleOwnGuild, szOwnerGuild, MAX_GUILDNAMESTRING);
memcpy(lpOwnerGuildMaster->szCastleOwnGuildMaster, szOwnerGuildMaster, MAX_IDSTRING);
-
+
m_DBQuery.Clear();
- return FALSE;
-}
+ return FALSE;
+};
-int CCastleDBSet::DSDB_QueryCastleNpcBuy(int iMapSvrGroup, CSP_REQ_NPCBUY* lpNpcBuy, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryCastleNpcBuy(int iMapSvrGroup, LPCSP_REQ_NPCBUY lpNpcBuy, int* lpiResult)
{
if (lpiResult == NULL || lpNpcBuy == NULL)
{
@@ -118,10 +104,7 @@ int CCastleDBSet::DSDB_QueryCastleNpcBuy(int iMapSvrGroup, CSP_REQ_NPCBUY* lpNpc
}
CString qSql;
-
- qSql.Format("EXEC WZ_CS_ReqNpcBuy %d, %d, %d, %d, %d, %d, %d, %d, %d, %d",
- iMapSvrGroup, lpNpcBuy->iNpcNumber, lpNpcBuy->iNpcIndex, lpNpcBuy->iNpcDfLevel,
- lpNpcBuy->iNpcRgLevel, lpNpcBuy->iNpcMaxHp, lpNpcBuy->iNpcHp, lpNpcBuy->btNpcX, lpNpcBuy->btNpcY, lpNpcBuy->btNpcDIR);
+ qSql.Format("EXEC WZ_CS_ReqNpcBuy %d, %d, %d, %d, %d, %d, %d, %d, %d, %d", iMapSvrGroup, lpNpcBuy->iNpcNumber, lpNpcBuy->iNpcIndex, lpNpcBuy->iNpcDfLevel, lpNpcBuy->iNpcRgLevel, lpNpcBuy->iNpcMaxHp, lpNpcBuy->iNpcHp, lpNpcBuy->btNpcX, lpNpcBuy->btNpcY, lpNpcBuy->btNpcDIR);
if (m_DBQuery.Exec(qSql) == FALSE)
{
@@ -129,7 +112,7 @@ int CCastleDBSet::DSDB_QueryCastleNpcBuy(int iMapSvrGroup, CSP_REQ_NPCBUY* lpNpc
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
{
@@ -143,7 +126,7 @@ int CCastleDBSet::DSDB_QueryCastleNpcBuy(int iMapSvrGroup, CSP_REQ_NPCBUY* lpNpc
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryCastleNpcRepair(int iMapSvrGroup, CSP_REQ_NPCREPAIR* lpNpcRepair, CSP_ANS_NPCREPAIR* lpNpcRepairResult, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryCastleNpcRepair(int iMapSvrGroup, LPCSP_REQ_NPCREPAIR lpNpcRepair, LPCSP_ANS_NPCREPAIR lpNpcRepairResult, int* lpiResult)
{
if (lpNpcRepair == NULL || lpNpcRepairResult == NULL)
{
@@ -151,8 +134,7 @@ BOOL CCastleDBSet::DSDB_QueryCastleNpcRepair(int iMapSvrGroup, CSP_REQ_NPCREPAIR
}
CString qSql;
- qSql.Format("EXEC WZ_CS_ReqNpcRepair %d, %d, %d",
- iMapSvrGroup, lpNpcRepair->iNpcNumber, lpNpcRepair->iNpcIndex);
+ qSql.Format("EXEC WZ_CS_ReqNpcRepair %d, %d, %d", iMapSvrGroup, lpNpcRepair->iNpcNumber, lpNpcRepair->iNpcIndex);
if (m_DBQuery.Exec(qSql) == FALSE)
{
@@ -160,7 +142,7 @@ BOOL CCastleDBSet::DSDB_QueryCastleNpcRepair(int iMapSvrGroup, CSP_REQ_NPCREPAIR
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
{
@@ -169,7 +151,7 @@ BOOL CCastleDBSet::DSDB_QueryCastleNpcRepair(int iMapSvrGroup, CSP_REQ_NPCREPAIR
}
*lpiResult = m_DBQuery.GetInt("QueryResult");
-
+
lpNpcRepairResult->iNpcHp = m_DBQuery.GetInt("NPC_HP");
lpNpcRepairResult->iNpcMaxHp = m_DBQuery.GetInt("NPC_MAXHP");
@@ -177,7 +159,7 @@ BOOL CCastleDBSet::DSDB_QueryCastleNpcRepair(int iMapSvrGroup, CSP_REQ_NPCREPAIR
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryCastleNpcUpgrade(int iMapSvrGroup, CSP_REQ_NPCUPGRADE* lpNpcUpgrade)
+BOOL CCastleDBSet::DSDB_QueryCastleNpcUpgrade(int iMapSvrGroup, LPCSP_REQ_NPCUPGRADE lpNpcUpgrade)
{
if (lpNpcUpgrade == NULL)
{
@@ -193,7 +175,7 @@ BOOL CCastleDBSet::DSDB_QueryCastleNpcUpgrade(int iMapSvrGroup, CSP_REQ_NPCUPGRA
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA)
{
@@ -210,11 +192,10 @@ BOOL CCastleDBSet::DSDB_QueryCastleNpcUpgrade(int iMapSvrGroup, CSP_REQ_NPCUPGRA
}
m_DBQuery.Clear();
-
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryTaxInfo(int iMapSvrGroup, CSP_ANS_TAXINFO* lpTaxInfo)
+BOOL CCastleDBSet::DSDB_QueryTaxInfo(int iMapSvrGroup, LPCSP_ANS_TAXINFO lpTaxInfo)
{
if (lpTaxInfo == NULL)
{
@@ -230,7 +211,7 @@ BOOL CCastleDBSet::DSDB_QueryTaxInfo(int iMapSvrGroup, CSP_ANS_TAXINFO* lpTaxInf
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
{
@@ -242,12 +223,12 @@ BOOL CCastleDBSet::DSDB_QueryTaxInfo(int iMapSvrGroup, CSP_ANS_TAXINFO* lpTaxInf
lpTaxInfo->iTaxRateChaos = m_DBQuery.GetInt("TAX_RATE_CHAOS");
lpTaxInfo->iTaxRateStore = m_DBQuery.GetInt("TAX_RATE_STORE");
lpTaxInfo->iTaxHuntZone = m_DBQuery.GetInt("TAX_HUNT_ZONE");
+
m_DBQuery.Clear();
-
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryTaxRateChange(int iMapSvrGroup, int iTaxType, int iTaxRate, CSP_ANS_TAXRATECHANGE* lpTaxRateChange, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryTaxRateChange(int iMapSvrGroup, int iTaxType, int iTaxRate, LPCSP_ANS_TAXRATECHANGE lpTaxRateChange, int* lpiResult)
{
if (lpiResult == NULL || lpTaxRateChange == NULL)
{
@@ -263,7 +244,7 @@ BOOL CCastleDBSet::DSDB_QueryTaxRateChange(int iMapSvrGroup, int iTaxType, int i
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
{
@@ -276,8 +257,7 @@ BOOL CCastleDBSet::DSDB_QueryTaxRateChange(int iMapSvrGroup, int iTaxType, int i
lpTaxRateChange->iTaxKind = m_DBQuery.GetInt("TaxKind");
lpTaxRateChange->iTaxRate = m_DBQuery.GetInt("TaxRate");
- m_DBQuery.Clear();
-
+ m_DBQuery.Clear();
return FALSE;
}
@@ -298,7 +278,7 @@ BOOL CCastleDBSet::DSDB_QueryCastleMoneyChange(int iMapSvrGroup, int iMoneyChang
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
{
@@ -313,7 +293,7 @@ BOOL CCastleDBSet::DSDB_QueryCastleMoneyChange(int iMapSvrGroup, int iMoneyChang
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QuerySiegeDateChange(int iMapSvrGroup, CSP_REQ_SDEDCHANGE* lpSdEdChange, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QuerySiegeDateChange(int iMapSvrGroup, LPCSP_REQ_SDEDCHANGE lpSdEdChange, int* lpiResult)
{
if (lpSdEdChange == NULL)
{
@@ -321,9 +301,7 @@ BOOL CCastleDBSet::DSDB_QuerySiegeDateChange(int iMapSvrGroup, CSP_REQ_SDEDCHANG
}
CString qSql;
- qSql.Format("EXEC WZ_CS_ModifyCastleSchedule %d, '%d-%d-%d 00:00:00', '%d-%d-%d 00:00:00'",
- iMapSvrGroup, lpSdEdChange->wStartYear, lpSdEdChange->btStartMonth, lpSdEdChange->btStartDay,
- lpSdEdChange->wEndYear, lpSdEdChange->btEndMonth, lpSdEdChange->btEndDay);
+ qSql.Format("EXEC WZ_CS_ModifyCastleSchedule %d, '%d-%d-%d 00:00:00', '%d-%d-%d 00:00:00'", iMapSvrGroup, lpSdEdChange->wStartYear, lpSdEdChange->btStartMonth, lpSdEdChange->btStartDay, lpSdEdChange->wEndYear, lpSdEdChange->btEndMonth, lpSdEdChange->btEndDay);
if (m_DBQuery.Exec(qSql) == FALSE)
{
@@ -331,7 +309,7 @@ BOOL CCastleDBSet::DSDB_QuerySiegeDateChange(int iMapSvrGroup, CSP_REQ_SDEDCHANG
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA)
{
@@ -340,14 +318,14 @@ BOOL CCastleDBSet::DSDB_QuerySiegeDateChange(int iMapSvrGroup, CSP_REQ_SDEDCHANG
}
*lpiResult = m_DBQuery.GetInt("QueryResult");
+
m_DBQuery.Clear();
-
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryGuildMarkRegInfo(int iMapSvrGroup, char* lpszGuildName, CSP_ANS_GUILDREGINFO* lpGuildRegInfo, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryGuildMarkRegInfo(int iMapSvrGroup, char* lpszGuildName, LPCSP_ANS_GUILDREGINFO lpGuildRegInfo, int* lpiResult)
{
- if (lpszGuildName == NULL || lpGuildRegInfo == NULL)
+ if (lpszGuildName == NULL || lpGuildRegInfo == NULL)
{
return TRUE;
}
@@ -358,43 +336,43 @@ BOOL CCastleDBSet::DSDB_QueryGuildMarkRegInfo(int iMapSvrGroup, char* lpszGuildN
}
CString qSql;
-
qSql.Format("EXEC WZ_CS_GetGuildMarkRegInfo %d, '%s'", iMapSvrGroup, lpszGuildName);
-
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
-
- if (sqlRet == SQL_NULL_DATA )
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
+
+ if (sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
return TRUE;
}
memcpy(lpGuildRegInfo->szGuildName, lpszGuildName, MAX_GUILDNAMESTRING);
-
- if (sqlRet == SQL_NO_DATA )
+
+ if (sqlRet == SQL_NO_DATA)
{
lpGuildRegInfo->iRegMarkCount = 0;
*lpiResult = 2;
}
+
else
{
*lpiResult = 1;
lpGuildRegInfo->iRegMarkCount = m_DBQuery.GetInt("REG_MARKS");
lpGuildRegInfo->btRegRank = m_DBQuery.GetInt("SEQ_NUM");
- lpGuildRegInfo->bIsGiveUp = (m_DBQuery.GetInt("IS_GIVEUP") > 0)?true:false;
+ lpGuildRegInfo->bIsGiveUp = m_DBQuery.GetInt("IS_GIVEUP") > 0 ? true : false;
}
m_DBQuery.Clear();
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QuerySiegeEndedChange(int iMapSvrGroup, int bIsCastleSiegeEnded, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QuerySiegeEndedChange(int iMapSvrGroup, BOOL bIsCastleSiegeEnded, int* lpiResult)
{
if (lpiResult == NULL)
{
@@ -410,7 +388,7 @@ BOOL CCastleDBSet::DSDB_QuerySiegeEndedChange(int iMapSvrGroup, int bIsCastleSie
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
{
@@ -424,16 +402,16 @@ BOOL CCastleDBSet::DSDB_QuerySiegeEndedChange(int iMapSvrGroup, int bIsCastleSie
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryCastleOwnerChange(int iMapSvrGroup, CSP_REQ_CASTLEOWNERCHANGE* lpCastleOwnerInfo, CSP_ANS_CASTLEOWNERCHANGE* lpCastleOwnerInfoResult, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryCastleOwnerChange(int iMapSvrGroup, LPCSP_REQ_CASTLEOWNERCHANGE lpCastleOwnerInfo, LPCSP_ANS_CASTLEOWNERCHANGE lpCastleOwnerInfoResult, int* lpiResult)
{
if (lpCastleOwnerInfo == NULL || lpCastleOwnerInfoResult == NULL || lpiResult == NULL)
{
return TRUE;
}
- char szGuildName[MAX_GUILDNAMESTRING+1] = {'\0'};
+ char szGuildName[MAX_GUILDNAMESTRING + 1] = { '\0' };
memcpy(szGuildName, lpCastleOwnerInfo->szOwnerGuildName, MAX_GUILDNAMESTRING);
-
+
if (SQLSyntexCheck(szGuildName) == FALSE)
{
return TRUE;
@@ -441,71 +419,71 @@ BOOL CCastleDBSet::DSDB_QueryCastleOwnerChange(int iMapSvrGroup, CSP_REQ_CASTLEO
lpCastleOwnerInfoResult->bIsCastleOccupied = lpCastleOwnerInfo->bIsCastleOccupied;
memcpy(lpCastleOwnerInfoResult->szOwnerGuildName, lpCastleOwnerInfo->szOwnerGuildName, MAX_GUILDNAMESTRING);
-
+
CString qSql;
- qSql.Format("EXEC WZ_CS_ModifyCastleOwnerInfo %d, %d, '%s'", iMapSvrGroup, lpCastleOwnerInfo->bIsCastleOccupied,szGuildName);
-
+ qSql.Format("EXEC WZ_CS_ModifyCastleOwnerInfo %d, %d, '%s'", iMapSvrGroup, lpCastleOwnerInfo->bIsCastleOccupied, szGuildName);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
-
- if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
+
+ if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
- return TRUE;
+ return TRUE;
}
*lpiResult = m_DBQuery.GetInt("QueryResult");
-
+
m_DBQuery.Clear();
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryRegAttackGuild(int iMapSvrGroup, CSP_REQ_REGATTACKGUILD* lpRegAttackGuild, CSP_ANS_REGATTACKGUILD* lpRegAttackGuildResult, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryRegAttackGuild(int iMapSvrGroup, LPCSP_REQ_REGATTACKGUILD lpRegAttackGuild, LPCSP_ANS_REGATTACKGUILD lpRegAttackGuildResult, int* lpiResult)
{
if (lpRegAttackGuild == NULL || lpRegAttackGuildResult == NULL || lpiResult == NULL)
{
return TRUE;
}
- char szGuildName[MAX_GUILDNAMESTRING+1] = {'\0'};
+ char szGuildName[MAX_GUILDNAMESTRING + 1] = { '\0' };
memcpy(szGuildName, lpRegAttackGuild->szEnemyGuildName, MAX_GUILDNAMESTRING);
-
+
if (SQLSyntexCheck(szGuildName) == FALSE)
{
return TRUE;
}
memcpy(lpRegAttackGuild->szEnemyGuildName, lpRegAttackGuildResult->szEnemyGuildName, MAX_GUILDNAMESTRING);
-
+
CString qSql;
qSql.Format("EXEC WZ_CS_ReqRegAttackGuild %d, '%s'", iMapSvrGroup, szGuildName);
-
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
-
- if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
+
+ if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
- return TRUE;
+ return TRUE;
}
*lpiResult = m_DBQuery.GetInt("QueryResult");
-
+
m_DBQuery.Clear();
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryRestartCastleState(int iMapSvrGroup, CSP_REQ_CASTLESIEGEEND* lpCastleSiegeEnd, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryRestartCastleState(int iMapSvrGroup, LPCSP_REQ_CASTLESIEGEEND lpCastleSiegeEnd, int* lpiResult)
{
if (lpCastleSiegeEnd == NULL)
{
@@ -521,7 +499,7 @@ BOOL CCastleDBSet::DSDB_QueryRestartCastleState(int iMapSvrGroup, CSP_REQ_CASTLE
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
{
@@ -532,51 +510,48 @@ BOOL CCastleDBSet::DSDB_QueryRestartCastleState(int iMapSvrGroup, CSP_REQ_CASTLE
*lpiResult = m_DBQuery.GetInt("QueryResult");
m_DBQuery.Clear();
-
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryGuildMarkRegMark(int iMapSvrGroup, char* lpszGuildName, CSP_ANS_GUILDREGMARK* lpGuildRegMark, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryGuildMarkRegMark(int iMapSvrGroup, char* lpszGuildName, LPCSP_ANS_GUILDREGMARK lpGuildRegMark, int* lpiResult)
{
if (lpszGuildName == NULL || lpGuildRegMark == NULL)
{
return TRUE;
}
- if ( !SQLSyntexCheck(lpszGuildName) )
+ if (SQLSyntexCheck(lpszGuildName) == FALSE)
{
return TRUE;
}
CString qSql;
- qSql.Format("EXEC WZ_CS_ReqRegGuildMark %d, '%s'",iMapSvrGroup,lpszGuildName);
-
+ qSql.Format("EXEC WZ_CS_ReqRegGuildMark %d, '%s'", iMapSvrGroup, lpszGuildName);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
-
- if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
+
+ if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
- return TRUE;
+ return TRUE;
}
-
+
memcpy(lpGuildRegMark->szGuildName, lpszGuildName, MAX_GUILDNAMESTRING);
-
+
*lpiResult = m_DBQuery.GetInt("QueryResult");
-
lpGuildRegMark->iRegMarkCount = m_DBQuery.GetInt("REG_MARKS");
-
+
m_DBQuery.Clear();
-
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryGuildMarkReset(int iMapSvrGroup, char* lpszGuildName, CSP_ANS_GUILDRESETMARK* lpGuildResetMark)
+BOOL CCastleDBSet::DSDB_QueryGuildMarkReset(int iMapSvrGroup, char* lpszGuildName, LPCSP_ANS_GUILDRESETMARK lpGuildResetMark)
{
if (lpszGuildName == NULL || lpGuildResetMark == NULL)
{
@@ -587,103 +562,103 @@ BOOL CCastleDBSet::DSDB_QueryGuildMarkReset(int iMapSvrGroup, char* lpszGuildNam
{
return TRUE;
}
-
+
CString qSql;
- qSql.Format("EXEC WZ_CS_ModifyGuildMarkReset %d, '%s'",iMapSvrGroup,lpszGuildName);
-
+ qSql.Format("EXEC WZ_CS_ModifyGuildMarkReset %d, '%s'", iMapSvrGroup, lpszGuildName);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
-
- short sqlRet = m_DBQuery.Fetch();
- if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
+
+ if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
- return TRUE;
+ return TRUE;
}
-
+
memcpy(lpGuildResetMark->szGuildName, lpszGuildName, MAX_GUILDNAMESTRING);
-
+
lpGuildResetMark->iResult = m_DBQuery.GetInt("QueryResult");
lpGuildResetMark->iRegMarkCount = m_DBQuery.GetInt("DEL_MARKS");
-
+
m_DBQuery.Clear();
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryGuildSetGiveUp(int iMapSvrGroup, char* lpszGuildName, int bIsGiveUp, CSP_ANS_GUILDSETGIVEUP* lpGuildSetGiveUp)
+BOOL CCastleDBSet::DSDB_QueryGuildSetGiveUp(int iMapSvrGroup, char* lpszGuildName, BOOL bIsGiveUp, LPCSP_ANS_GUILDSETGIVEUP lpGuildSetGiveUp)
{
if (lpszGuildName == NULL || lpGuildSetGiveUp == NULL)
{
return TRUE;
}
-
+
if (SQLSyntexCheck(lpszGuildName) == FALSE)
{
return TRUE;
}
CString qSql;
- qSql.Format("EXEC WZ_CS_ModifyGuildGiveUp %d, '%s', %d",iMapSvrGroup,lpszGuildName,bIsGiveUp);
-
+ qSql.Format("EXEC WZ_CS_ModifyGuildGiveUp %d, '%s', %d", iMapSvrGroup, lpszGuildName, bIsGiveUp);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
-
- short sqlRet = m_DBQuery.Fetch();
- if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
+
+ if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
- return TRUE;
+ return TRUE;
}
-
+
memcpy(lpGuildSetGiveUp->szGuildName, lpszGuildName, MAX_GUILDNAMESTRING);
-
+
lpGuildSetGiveUp->bIsGiveUp = bIsGiveUp;
lpGuildSetGiveUp->iResult = m_DBQuery.GetInt("QueryResult");
lpGuildSetGiveUp->iRegMarkCount = m_DBQuery.GetInt("DEL_MARKS");
-
+
m_DBQuery.Clear();
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryCastleNpcRemove(int iMapSvrGroup, CSP_REQ_NPCREMOVE* lpNpcRemove, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryCastleNpcRemove(int iMapSvrGroup, LPCSP_REQ_NPCREMOVE lpNpcRemove, int* lpiResult)
{
if (lpNpcRemove == NULL)
{
return TRUE;
}
-
+
CString qSql;
- qSql.Format("EXEC WZ_CS_ReqNpcRemove %d, %d, %d",iMapSvrGroup,lpNpcRemove->iNpcNumber,lpNpcRemove->iNpcIndex);
-
+ qSql.Format("EXEC WZ_CS_ReqNpcRemove %d, %d, %d", iMapSvrGroup, lpNpcRemove->iNpcNumber, lpNpcRemove->iNpcIndex);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
- if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
+ if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
- return TRUE;
+ return TRUE;
}
*lpiResult = m_DBQuery.GetInt("QueryResult");
-
+
m_DBQuery.Clear();
return FALSE;
}
-int CCastleDBSet::DSDB_QueryResetCastleTaxInfo(int iMapSvrGroup, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryResetCastleTaxInfo(int iMapSvrGroup, int* lpiResult)
{
CString qSql;
qSql.Format("EXEC WZ_CS_ResetCastleTaxInfo %d",iMapSvrGroup);
@@ -694,7 +669,7 @@ int CCastleDBSet::DSDB_QueryResetCastleTaxInfo(int iMapSvrGroup, int* lpiResult)
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
{
@@ -708,7 +683,7 @@ int CCastleDBSet::DSDB_QueryResetCastleTaxInfo(int iMapSvrGroup, int* lpiResult)
return FALSE;
}
-int CCastleDBSet::DSDB_QueryResetSiegeGuildInfo(int iMapSvrGroup, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryResetSiegeGuildInfo(int iMapSvrGroup, int* lpiResult)
{
CString qSql;
qSql.Format("EXEC WZ_CS_ResetSiegeGuildInfo %d",iMapSvrGroup);
@@ -719,7 +694,7 @@ int CCastleDBSet::DSDB_QueryResetSiegeGuildInfo(int iMapSvrGroup, int* lpiResult
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
{
@@ -733,7 +708,7 @@ int CCastleDBSet::DSDB_QueryResetSiegeGuildInfo(int iMapSvrGroup, int* lpiResult
return FALSE;
}
-int CCastleDBSet::DSDB_QueryResetRegSiegeInfo(int iMapSvrGroup, int* lpiResult)
+BOOL CCastleDBSet::DSDB_QueryResetRegSiegeInfo(int iMapSvrGroup, int* lpiResult)
{
CString qSql;
qSql.Format("EXEC WZ_CS_ResetRegSiegeInfo %d",iMapSvrGroup);
@@ -744,7 +719,7 @@ int CCastleDBSet::DSDB_QueryResetRegSiegeInfo(int iMapSvrGroup, int* lpiResult)
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
if (sqlRet == SQL_NO_DATA || sqlRet == SQL_NULL_DATA )
{
@@ -758,28 +733,28 @@ int CCastleDBSet::DSDB_QueryResetRegSiegeInfo(int iMapSvrGroup, int* lpiResult)
return FALSE;
}
-int CCastleDBSet::DSDB_QueryCastleNpcInfo(int iMapSvrGroup, CSP_NPCDATA* lpNpcData, int* lpiCount)
+BOOL CCastleDBSet::DSDB_QueryCastleNpcInfo(int iMapSvrGroup, LPCSP_NPCDATA lpNpcData, int* lpiCount)
{
if (lpNpcData == NULL || lpiCount == NULL)
{
return TRUE;
}
-
+
int iMAX_COUNT = *lpiCount;
- *lpiCount=0;
+ *lpiCount = 0;
CString qSql;
- qSql.Format("EXEC WZ_CS_GetCastleNpcInfo %d",iMapSvrGroup);
-
+ qSql.Format("EXEC WZ_CS_GetCastleNpcInfo %d", iMapSvrGroup);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
-
- while(sqlRet != SQL_NO_DATA && sqlRet != SQL_NULL_DATA)
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
+
+ while (sqlRet != SQL_NO_DATA && sqlRet != SQL_NULL_DATA)
{
if (*lpiCount > iMAX_COUNT)
{
@@ -795,23 +770,22 @@ int CCastleDBSet::DSDB_QueryCastleNpcInfo(int iMapSvrGroup, CSP_NPCDATA* lpNpcDa
lpNpcData[*lpiCount].btNpcX = m_DBQuery.GetInt("NPC_X");
lpNpcData[*lpiCount].btNpcY = m_DBQuery.GetInt("NPC_Y");
lpNpcData[*lpiCount].btNpcDIR = m_DBQuery.GetInt("NPC_DIR");
-
+
*lpiCount = *lpiCount + 1;
-
sqlRet = m_DBQuery.Fetch();
}
-
+
if (sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
return TRUE;
}
-
+
m_DBQuery.Clear();
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryAllGuildMarkRegInfo(int iMapSvrGroup, CSP_GUILDREGINFO* lpGuildRegInfo, int* lpiCount)
+BOOL CCastleDBSet::DSDB_QueryAllGuildMarkRegInfo(int iMapSvrGroup, LPCSP_GUILDREGINFO lpGuildRegInfo, int* lpiCount)
{
if (lpGuildRegInfo == NULL || lpiCount == NULL)
{
@@ -819,26 +793,26 @@ BOOL CCastleDBSet::DSDB_QueryAllGuildMarkRegInfo(int iMapSvrGroup, CSP_GUILDREGI
}
int iMAX_COUNT = *lpiCount;
-
- if ( iMAX_COUNT > 100 )
+
+ if (iMAX_COUNT > 100)
{
iMAX_COUNT = 100;
}
-
- *lpiCount=0;
-
+
+ *lpiCount = 0;
+
CString qSql;
- qSql.Format("EXEC WZ_CS_GetAllGuildMarkRegInfo %d",iMapSvrGroup);
-
+ qSql.Format("EXEC WZ_CS_GetAllGuildMarkRegInfo %d", iMapSvrGroup);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
- while(sqlRet != SQL_NO_DATA && sqlRet != SQL_NULL_DATA)
+ while (sqlRet != SQL_NO_DATA && sqlRet != SQL_NULL_DATA)
{
if (*lpiCount > iMAX_COUNT)
{
@@ -847,36 +821,35 @@ BOOL CCastleDBSet::DSDB_QueryAllGuildMarkRegInfo(int iMapSvrGroup, CSP_GUILDREGI
m_DBQuery.GetStr("REG_SIEGE_GUILD", lpGuildRegInfo[*lpiCount].szGuildName);
lpGuildRegInfo[*lpiCount].iRegMarkCount = m_DBQuery.GetInt("REG_MARKS");
- lpGuildRegInfo[*lpiCount].bIsGiveUp = (m_DBQuery.GetInt("IS_GIVEUP") > 0)?true:false;
+ lpGuildRegInfo[*lpiCount].bIsGiveUp = m_DBQuery.GetInt("IS_GIVEUP") > 0 ? true : false;
lpGuildRegInfo[*lpiCount].btRegRank = m_DBQuery.GetInt("SEQ_NUM");
-
+
*lpiCount = *lpiCount + 1;
-
sqlRet = m_DBQuery.Fetch();
}
-
+
if (sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
return TRUE;
}
-
+
m_DBQuery.Clear();
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryFirstCreateNPC(int iMapSvrGroup, CSP_REQ_NPCSAVEDATA* lpNpcSaveData)
+BOOL CCastleDBSet::DSDB_QueryFirstCreateNPC(int iMapSvrGroup, LPCSP_REQ_NPCSAVEDATA lpNpcSaveData)
{
if (lpNpcSaveData == NULL)
{
return TRUE;
}
-
- CSP_NPCSAVEDATA* lpMsgBody = (CSP_NPCSAVEDATA*)&lpNpcSaveData[1];
-
+
+ LPCSP_NPCSAVEDATA lpMsgBody = (LPCSP_NPCSAVEDATA)&lpNpcSaveData[1];
+
CString qSql;
- qSql.Format("DELETE MuCastle_NPC WHERE MAP_SVR_GROUP = %d",iMapSvrGroup);
-
+ qSql.Format("DELETE MuCastle_NPC WHERE MAP_SVR_GROUP = %d", iMapSvrGroup);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
@@ -887,86 +860,80 @@ BOOL CCastleDBSet::DSDB_QueryFirstCreateNPC(int iMapSvrGroup, CSP_REQ_NPCSAVEDAT
for (int iNPC_COUNT = 0; iNPC_COUNT < lpNpcSaveData->iCount; iNPC_COUNT++)
{
- qSql.Format("EXEC WZ_CS_ReqNpcBuy %d, %d, %d, %d, %d, %d, %d, %d, %d, %d",
- iMapSvrGroup,lpMsgBody[iNPC_COUNT].iNpcNumber,lpMsgBody[iNPC_COUNT].iNpcIndex,
- lpMsgBody[iNPC_COUNT].iNpcDfLevel,lpMsgBody[iNPC_COUNT].iNpcRgLevel,
- lpMsgBody[iNPC_COUNT].iNpcMaxHp,lpMsgBody[iNPC_COUNT].iNpcHp,
- lpMsgBody[iNPC_COUNT].btNpcX,lpMsgBody[iNPC_COUNT].btNpcY,
- lpMsgBody[iNPC_COUNT].btNpcDIR);
-
+ qSql.Format("EXEC WZ_CS_ReqNpcBuy %d, %d, %d, %d, %d, %d, %d, %d, %d, %d", iMapSvrGroup, lpMsgBody[iNPC_COUNT].iNpcNumber, lpMsgBody[iNPC_COUNT].iNpcIndex, lpMsgBody[iNPC_COUNT].iNpcDfLevel, lpMsgBody[iNPC_COUNT].iNpcRgLevel, lpMsgBody[iNPC_COUNT].iNpcMaxHp, lpMsgBody[iNPC_COUNT].iNpcHp, lpMsgBody[iNPC_COUNT].btNpcX, lpMsgBody[iNPC_COUNT].btNpcY, lpMsgBody[iNPC_COUNT].btNpcDIR);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
-
+
m_DBQuery.Clear();
}
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryCalcRegGuildList(int iMapSvrGroup, CSP_CALCREGGUILDLIST* lpCalcRegGuildList, int* lpiCount)
+BOOL CCastleDBSet::DSDB_QueryCalcRegGuildList(int iMapSvrGroup, LPCSP_CALCREGGUILDLIST lpCalcRegGuildList, int* lpiCount)
{
if (lpCalcRegGuildList == NULL || lpiCount == NULL)
{
return TRUE;
}
-
+
int iMAX_COUNT = *lpiCount;
-
- if ( iMAX_COUNT > 100 )
+
+ if (iMAX_COUNT > 100)
{
iMAX_COUNT = 100;
}
-
- *lpiCount=0;
-
+
+ *lpiCount = 0;
+
CString qSql;
- qSql.Format("EXEC WZ_CS_GetCalcRegGuildList %d",iMapSvrGroup);
-
+ qSql.Format("EXEC WZ_CS_GetCalcRegGuildList %d", iMapSvrGroup);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
-
- while(sqlRet != SQL_NO_DATA && sqlRet != SQL_NULL_DATA)
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
+
+ while (sqlRet != SQL_NO_DATA && sqlRet != SQL_NULL_DATA)
{
if (*lpiCount > iMAX_COUNT)
{
break;
}
- char szGuildName[MAX_GUILDNAMESTRING+MAX_GUILDNAMESTRING] = {'\0'};
-
+ char szGuildName[MAX_GUILDNAMESTRING + MAX_GUILDNAMESTRING] = { '\0' };
+
m_DBQuery.GetStr("REG_SIEGE_GUILD", szGuildName);
-
+
memcpy(&lpCalcRegGuildList[*lpiCount], szGuildName, MAX_GUILDNAMESTRING);
-
+
lpCalcRegGuildList[*lpiCount].iRegMarkCount = m_DBQuery.GetInt("REG_MARKS");
lpCalcRegGuildList[*lpiCount].iGuildMemberCount = m_DBQuery.GetInt("GUILD_MEMBER");
lpCalcRegGuildList[*lpiCount].iGuildMasterLevel = m_DBQuery.GetInt("GM_LEVEL");
lpCalcRegGuildList[*lpiCount].iSeqNum = m_DBQuery.GetInt("SEQ_NUM");
-
+
*lpiCount = *lpiCount + 1;
-
sqlRet = m_DBQuery.Fetch();
}
-
+
if (sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
return TRUE;
}
-
+
m_DBQuery.Clear();
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryCsGuildUnionInfo(int iMapSvrGroup, char* lpszGuildName, int iCsGuildID, CSP_CSGUILDUNIONINFO* lpCsGuildUnionInfo, int* lpiCount)
+BOOL CCastleDBSet::DSDB_QueryCsGuildUnionInfo(int iMapSvrGroup, char* lpszGuildName, int iCsGuildID, LPCSP_CSGUILDUNIONINFO lpCsGuildUnionInfo, int* lpiCount)
{
if (lpszGuildName == NULL || lpCsGuildUnionInfo == NULL || lpiCount == NULL)
{
@@ -974,75 +941,68 @@ BOOL CCastleDBSet::DSDB_QueryCsGuildUnionInfo(int iMapSvrGroup, char* lpszGuildN
}
int iRET_COUNT = *lpiCount;
-
- if ( iRET_COUNT < 0 )
+
+ if (iRET_COUNT < 0)
{
return TRUE;
}
-
+
CString qSql;
- qSql.Format("EXEC WZ_CS_GetCsGuildUnionInfo '%s'",lpszGuildName);
-
+ qSql.Format("EXEC WZ_CS_GetCsGuildUnionInfo '%s'", lpszGuildName);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
- while(sqlRet != SQL_NO_DATA && sqlRet != SQL_NULL_DATA)
+ while (sqlRet != SQL_NO_DATA && sqlRet != SQL_NULL_DATA)
{
if (iRET_COUNT > 100)
{
break;
}
- char szGuildName[MAX_GUILDNAMESTRING+MAX_GUILDNAMESTRING] = {'\0'};
-
+ char szGuildName[MAX_GUILDNAMESTRING + MAX_GUILDNAMESTRING] = { '\0' };
+
m_DBQuery.GetStr("GUILD_NAME", szGuildName);
-
+
memcpy(&lpCsGuildUnionInfo[iRET_COUNT], szGuildName, MAX_GUILDNAMESTRING);
lpCsGuildUnionInfo[iRET_COUNT].iCsGuildID = iCsGuildID;
-
+
iRET_COUNT++;
-
sqlRet = m_DBQuery.Fetch();
}
-
+
if (sqlRet == SQL_NULL_DATA)
{
m_DBQuery.Clear();
return TRUE;
}
-
+
m_DBQuery.Clear();
-
*lpiCount = iRET_COUNT;
-
return FALSE;
}
BOOL CCastleDBSet::DSDB_QueryCsClearTotalGuildInfo(int iMapSvrGroup)
{
CString qSql;
- qSql.Format("DELETE MuCastle_SIEGE_GUILDLIST WHERE MAP_SVR_GROUP = %d",iMapSvrGroup);
-
+ qSql.Format("DELETE MuCastle_SIEGE_GUILDLIST WHERE MAP_SVR_GROUP = %d", iMapSvrGroup);
+
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
-
+
m_DBQuery.Clear();
return FALSE;
}
-#ifdef ADD_CASTLE_TOTAL_GUILD_SCORE_20061123
BOOL CCastleDBSet::DSDB_QueryCsSaveTotalGuildInfo(int iMapSvrGroup, char* lpszGuildName, int iCsGuildID, int iCsGuildInvolved, int iCsGuildScore)
-#else
-BOOL CCastleDBSet::DSDB_QueryCsSaveTotalGuildInfo(int iMapSvrGroup, char* lpszGuildName, int iCsGuildID, int iCsGuildInvolved)
-#endif
{
if (lpszGuildName == NULL)
{
@@ -1050,13 +1010,7 @@ BOOL CCastleDBSet::DSDB_QueryCsSaveTotalGuildInfo(int iMapSvrGroup, char* lpszGu
}
CString qSql;
-#ifdef ADD_CASTLE_TOTAL_GUILD_SCORE_20061123
- qSql.Format("EXEC WZ_CS_SetSiegeGuildInfo %d, '%s', %d, %d, %d",
- iMapSvrGroup, lpszGuildName, iCsGuildID, iCsGuildInvolved, iCsGuildScore);
-#else
- qSql.Format("EXEC WZ_CS_SetSiegeGuildInfo %d, '%s', %d, %d",
- iMapSvrGroup, lpszGuildName, iCsGuildID, iCsGuildInvolved);
-#endif
+ qSql.Format("EXEC WZ_CS_SetSiegeGuildInfo %d, '%s', %d, %d, %d", iMapSvrGroup, lpszGuildName, iCsGuildID, iCsGuildInvolved, iCsGuildScore);
if (m_DBQuery.Exec(qSql) == FALSE)
{
@@ -1090,53 +1044,51 @@ BOOL CCastleDBSet::DSDB_QueryCsSaveTotalGuildOK(int iMapSvrGroup, int* lpiResult
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryCsLoadTotalGuildInfo(int iMapSvrGroup, CSP_CSLOADTOTALGUILDINFO* lpLoadTotalGuildInfo, int* lpiCount)
+BOOL CCastleDBSet::DSDB_QueryCsLoadTotalGuildInfo(int iMapSvrGroup, LPCSP_CSLOADTOTALGUILDINFO lpLoadTotalGuildInfo, int* lpiCount)
{
if (lpLoadTotalGuildInfo == NULL || lpiCount == NULL)
{
return TRUE;
}
-
+
int iMAX_COUNT = *lpiCount;
-
- if ( iMAX_COUNT > 100 )
+
+ if (iMAX_COUNT > 100)
{
iMAX_COUNT = 100;
}
-
- *lpiCount=0;
-
+
+ *lpiCount = 0;
+
CString qSql;
- qSql.Format("EXEC WZ_CS_GetSiegeGuildInfo %d",iMapSvrGroup);
+ qSql.Format("EXEC WZ_CS_GetSiegeGuildInfo %d", iMapSvrGroup);
if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return TRUE;
}
- short sqlRet = m_DBQuery.Fetch();
- while(sqlRet != SQL_NO_DATA && sqlRet != SQL_NULL_DATA)
+ SQLRETURN sqlRet = m_DBQuery.Fetch();
+
+ while (sqlRet != SQL_NO_DATA && sqlRet != SQL_NULL_DATA)
{
if (*lpiCount > iMAX_COUNT)
{
break;
}
-
- char szGuildName[MAX_GUILDNAMESTRING+MAX_GUILDNAMESTRING] = {'\0'};
-
+
+ char szGuildName[MAX_GUILDNAMESTRING + MAX_GUILDNAMESTRING] = { '\0' };
+
m_DBQuery.GetStr("GUILD_NAME", szGuildName);
-
+
memcpy(&lpLoadTotalGuildInfo[*lpiCount], szGuildName, MAX_GUILDNAMESTRING);
-
+
lpLoadTotalGuildInfo[*lpiCount].iCsGuildID = m_DBQuery.GetInt("GUILD_ID");
lpLoadTotalGuildInfo[*lpiCount].iGuildInvolved = m_DBQuery.GetInt("GUILD_INVOLVED");
-#ifdef ADD_CASTLE_TOTAL_GUILD_SCORE_20061123
lpLoadTotalGuildInfo[*lpiCount].iGuildScore = m_DBQuery.GetInt("GUILD_SCORE");
-#endif
-
+
*lpiCount = *lpiCount + 1;
-
sqlRet = m_DBQuery.Fetch();
}
@@ -1145,19 +1097,19 @@ BOOL CCastleDBSet::DSDB_QueryCsLoadTotalGuildInfo(int iMapSvrGroup, CSP_CSLOADTO
m_DBQuery.Clear();
return TRUE;
}
-
+
m_DBQuery.Clear();
return FALSE;
}
-BOOL CCastleDBSet::DSDB_QueryCastleNpcUpdate(int iMapSvrGroup, CSP_REQ_NPCUPDATEDATA* lpNpcSaveData)
+BOOL CCastleDBSet::DSDB_QueryCastleNpcUpdate(int iMapSvrGroup, LPCSP_REQ_NPCUPDATEDATA lpNpcSaveData)
{
if (lpNpcSaveData == NULL)
{
return TRUE;
}
- CSP_NPCSAVEDATA* lpMsgBody = (CSP_NPCSAVEDATA*)&lpNpcSaveData[1];
+ LPCSP_NPCSAVEDATA lpMsgBody = (LPCSP_NPCSAVEDATA)&lpNpcSaveData[1];
CString qSql;
qSql.Format("DELETE MuCastle_NPC WHERE MAP_SVR_GROUP = %d",iMapSvrGroup);
@@ -1172,12 +1124,7 @@ BOOL CCastleDBSet::DSDB_QueryCastleNpcUpdate(int iMapSvrGroup, CSP_REQ_NPCUPDATE
for (int iNPC_COUNT = 0; iNPC_COUNT < lpNpcSaveData->iCount; iNPC_COUNT++)
{
- qSql.Format("EXEC WZ_CS_ReqNpcUpdate %d, %d, %d, %d, %d, %d, %d, %d, %d, %d",
- iMapSvrGroup,lpMsgBody[iNPC_COUNT].iNpcNumber,lpMsgBody[iNPC_COUNT].iNpcIndex,
- lpMsgBody[iNPC_COUNT].iNpcDfLevel,lpMsgBody[iNPC_COUNT].iNpcRgLevel,
- lpMsgBody[iNPC_COUNT].iNpcMaxHp,lpMsgBody[iNPC_COUNT].iNpcHp,
- lpMsgBody[iNPC_COUNT].btNpcX,lpMsgBody[iNPC_COUNT].btNpcY,
- lpMsgBody[iNPC_COUNT].btNpcDIR);
+ qSql.Format("EXEC WZ_CS_ReqNpcUpdate %d, %d, %d, %d, %d, %d, %d, %d, %d, %d", iMapSvrGroup,lpMsgBody[iNPC_COUNT].iNpcNumber,lpMsgBody[iNPC_COUNT].iNpcIndex, lpMsgBody[iNPC_COUNT].iNpcDfLevel,lpMsgBody[iNPC_COUNT].iNpcRgLevel, lpMsgBody[iNPC_COUNT].iNpcMaxHp,lpMsgBody[iNPC_COUNT].iNpcHp, lpMsgBody[iNPC_COUNT].btNpcX,lpMsgBody[iNPC_COUNT].btNpcY, lpMsgBody[iNPC_COUNT].btNpcDIR);
if (m_DBQuery.Exec(qSql) == FALSE)
{
@@ -1189,5 +1136,4 @@ BOOL CCastleDBSet::DSDB_QueryCastleNpcUpdate(int iMapSvrGroup, CSP_REQ_NPCUPDATE
}
return FALSE;
-}
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/DataServer/DbSet/CastleDBSet.h b/DataServer/DbSet/CastleDBSet.h
index 83ddb63..ea2dd7a 100644
--- a/DataServer/DbSet/CastleDBSet.h
+++ b/DataServer/DbSet/CastleDBSet.h
@@ -1,20 +1,11 @@
-// CastleDBSet.h: interface for the CCastleDBSet class.
-//
-//////////////////////////////////////////////////////////////////////
-
-#if !defined(AFX_CASTLEDBSET_H__866EE47E_B854_4D47_8664_64C3026FFE59__INCLUDED_) && defined(MU_CASTLESIEGE_DS_PROTOCOL_20041105)
-#define AFX_CASTLEDBSET_H__866EE47E_B854_4D47_8664_64C3026FFE59__INCLUDED_
-
-#if _MSC_VER > 1000
+#ifndef __CASTLEDBSET_H__
+#define __CASTLEDBSET_H__
#pragma once
-#endif // _MSC_VER > 1000
-//#include "Include\ProDef.h"
#include "..\Include\Sprodef.h"
-
#include "DBConBase.h"
-struct CASTLE_DATA
+typedef struct CASTLE_DATA
{
WORD wStartYear;
BYTE btStartMonth;
@@ -25,56 +16,52 @@ struct CASTLE_DATA
BYTE btIsSiegeGuildList;
BYTE btIsSiegeEnded;
BYTE btIsCastleOccupied;
- char szCastleOwnGuild[MAX_GUILDNAMESTRING+1];
+ char szCastleOwnGuild[MAX_GUILDNAMESTRING + 1];
__int64 i64CastleMoney;
int iTaxRateChaos;
int iTaxRateStore;
int iTaxHuntZone;
int iFirstCreate;
-};
+} *LPCASTLE_DATA;
-class CCastleDBSet : public CDBConBase
+class CCastleDBSet : public CDBConBase
{
public:
CCastleDBSet();
virtual ~CCastleDBSet();
-
+
BOOL Connect();
- BOOL DSDB_QueryCastleTotalInfo(int iMapSvrGroup, int iCastleEventCycle, CASTLE_DATA* lpCastleData);
- BOOL DSDB_QueryOwnerGuildMaster(int iMapSvrGroup, CSP_ANS_OWNERGUILDMASTER* lpOwnerGuildMaster);
- BOOL DSDB_QueryCastleNpcBuy(int iMapSvrGroup, CSP_REQ_NPCBUY* lpNpcBuy, int* lpiResult);
- BOOL DSDB_QueryCastleNpcRepair(int iMapSvrGroup, CSP_REQ_NPCREPAIR* lpNpcRepair, CSP_ANS_NPCREPAIR* lpNpcRepairResult, int* lpiResult);
- BOOL DSDB_QueryCastleNpcUpgrade(int iMapSvrGroup, CSP_REQ_NPCUPGRADE* lpNpcUpgrade);
- BOOL DSDB_QueryTaxInfo(int iMapSvrGroup, CSP_ANS_TAXINFO* lpTaxInfo);
- BOOL DSDB_QueryTaxRateChange(int iMapSvrGroup, int iTaxType, int iTaxRate, CSP_ANS_TAXRATECHANGE* lpTaxRateChange, int* lpiResult);
- BOOL DSDB_QueryCastleMoneyChange(int iMapSvrGroup, int iMoneyChange, __int64* i64ResultMoney, int* lpiResult);
- BOOL DSDB_QuerySiegeDateChange(int iMapSvrGroup, CSP_REQ_SDEDCHANGE* lpSdEdChange, int* lpiResult);
- BOOL DSDB_QueryGuildMarkRegInfo(int iMapSvrGroup, char* lpszGuildName, CSP_ANS_GUILDREGINFO* lpGuildRegInfo, int* lpiResult);
- BOOL DSDB_QuerySiegeEndedChange(int iMapSvrGroup, int bIsCastleSiegeEnded, int* lpiResult);
- BOOL DSDB_QueryCastleOwnerChange(int iMapSvrGroup, CSP_REQ_CASTLEOWNERCHANGE* lpCastleOwnerInfo, CSP_ANS_CASTLEOWNERCHANGE* lpCastleOwnerInfoResult, int* lpiResult);
- BOOL DSDB_QueryRegAttackGuild(int iMapSvrGroup, CSP_REQ_REGATTACKGUILD* lpRegAttackGuild, CSP_ANS_REGATTACKGUILD* lpRegAttackGuildResult, int* lpiResult);
- BOOL DSDB_QueryRestartCastleState(int iMapSvrGroup, CSP_REQ_CASTLESIEGEEND* lpCastleSiegeEnd, int* lpiResult);
- BOOL DSDB_QueryGuildMarkRegMark(int iMapSvrGroup, char* lpszGuildName, CSP_ANS_GUILDREGMARK* lpGuildRegMark, int* lpiResult);
- BOOL DSDB_QueryGuildMarkReset(int iMapSvrGroup, char* lpszGuildName, CSP_ANS_GUILDRESETMARK* lpGuildResetMark);
- BOOL DSDB_QueryGuildSetGiveUp(int iMapSvrGroup, char* lpszGuildName, int bIsGiveUp, CSP_ANS_GUILDSETGIVEUP* lpGuildSetGiveUp);
- BOOL DSDB_QueryCastleNpcRemove(int iMapSvrGroup, CSP_REQ_NPCREMOVE* lpNpcRemove, int* lpiResult);
+ BOOL DSDB_QueryCastleTotalInfo(int iMapSvrGroup, int iCastleEventCycle, LPCASTLE_DATA lpCastleData);
+ BOOL DSDB_QueryOwnerGuildMaster(int iMapSvrGroup, LPCSP_ANS_OWNERGUILDMASTER lpOwnerGuildMaster);
+ BOOL DSDB_QueryCastleNpcBuy(int iMapSvrGroup, LPCSP_REQ_NPCBUY lpNpcBuy, int* lpiResult);
+ BOOL DSDB_QueryCastleNpcRepair(int iMapSvrGroup, LPCSP_REQ_NPCREPAIR lpNpcRepair, LPCSP_ANS_NPCREPAIR lpNpcRepairResult, int* lpiResult);
+ BOOL DSDB_QueryCastleNpcUpgrade(int iMapSvrGroup, LPCSP_REQ_NPCUPGRADE lpNpcUpgrade);
+ BOOL DSDB_QueryTaxInfo(int iMapSvrGroup, LPCSP_ANS_TAXINFO lpTaxInfo);
+ BOOL DSDB_QueryTaxRateChange(int iMapSvrGroup, int iTaxType, int iTaxRate, LPCSP_ANS_TAXRATECHANGE lpTaxRateChange, int* lpiResult);
+ BOOL DSDB_QueryCastleMoneyChange(int iMapSvrGroup, int iMoneyChange, __int64* i64ResultMoney, int* lpiResult);
+ BOOL DSDB_QuerySiegeDateChange(int iMapSvrGroup, LPCSP_REQ_SDEDCHANGE lpSdEdChange, int* lpiResult);
+ BOOL DSDB_QueryGuildMarkRegInfo(int iMapSvrGroup, char* lpszGuildName, LPCSP_ANS_GUILDREGINFO lpGuildRegInfo, int* lpiResult);
+ BOOL DSDB_QuerySiegeEndedChange(int iMapSvrGroup, BOOL bIsCastleSiegeEnded, int* lpiResult);
+ BOOL DSDB_QueryCastleOwnerChange(int iMapSvrGroup, LPCSP_REQ_CASTLEOWNERCHANGE lpCastleOwnerInfo, LPCSP_ANS_CASTLEOWNERCHANGE lpCastleOwnerInfoResult, int* lpiResult);
+ BOOL DSDB_QueryRegAttackGuild(int iMapSvrGroup, LPCSP_REQ_REGATTACKGUILD lpRegAttackGuild, LPCSP_ANS_REGATTACKGUILD lpRegAttackGuildResult, int* lpiResult);
+ BOOL DSDB_QueryRestartCastleState(int iMapSvrGroup, LPCSP_REQ_CASTLESIEGEEND lpCastleSiegeEnd, int* lpiResult);
+ BOOL DSDB_QueryGuildMarkRegMark(int iMapSvrGroup, char* lpszGuildName, LPCSP_ANS_GUILDREGMARK lpGuildRegMark, int* lpiResult);
+ BOOL DSDB_QueryGuildMarkReset(int iMapSvrGroup, char* lpszGuildName, LPCSP_ANS_GUILDRESETMARK lpGuildResetMark);
+ BOOL DSDB_QueryGuildSetGiveUp(int iMapSvrGroup, char* lpszGuildName, BOOL bIsGiveUp, LPCSP_ANS_GUILDSETGIVEUP lpGuildSetGiveUp);
+ BOOL DSDB_QueryCastleNpcRemove(int iMapSvrGroup, LPCSP_REQ_NPCREMOVE lpNpcRemove, int* lpiResult);
BOOL DSDB_QueryResetCastleTaxInfo(int iMapSvrGroup, int* lpiResult);
BOOL DSDB_QueryResetSiegeGuildInfo(int iMapSvrGroup, int* lpiResult);
BOOL DSDB_QueryResetRegSiegeInfo(int iMapSvrGroup, int* lpiResult);
- BOOL DSDB_QueryCastleNpcInfo(int iMapSvrGroup, CSP_NPCDATA* lpNpcData, int* lpiCount);
- BOOL DSDB_QueryAllGuildMarkRegInfo(int iMapSvrGroup, CSP_GUILDREGINFO* lpGuildRegInfo, int* lpiCount);
- BOOL DSDB_QueryFirstCreateNPC(int iMapSvrGroup, CSP_REQ_NPCSAVEDATA* lpNpcSaveData);
- BOOL DSDB_QueryCalcRegGuildList(int iMapSvrGroup, CSP_CALCREGGUILDLIST* lpCalcRegGuildList, int* lpiCount);
- BOOL DSDB_QueryCsGuildUnionInfo(int iMapSvrGroup, char* lpszGuildName, int iCsGuildID, CSP_CSGUILDUNIONINFO* lpCsGuildUnionInfo, int* lpiCount);
+ BOOL DSDB_QueryCastleNpcInfo(int iMapSvrGroup, LPCSP_NPCDATA lpNpcData, int* lpiCount);
+ BOOL DSDB_QueryAllGuildMarkRegInfo(int iMapSvrGroup, LPCSP_GUILDREGINFO lpGuildRegInfo, int* lpiCount);
+ BOOL DSDB_QueryFirstCreateNPC(int iMapSvrGroup, LPCSP_REQ_NPCSAVEDATA lpNpcSaveData);
+ BOOL DSDB_QueryCalcRegGuildList(int iMapSvrGroup, LPCSP_CALCREGGUILDLIST lpCalcRegGuildList, int* lpiCount);
+ BOOL DSDB_QueryCsGuildUnionInfo(int iMapSvrGroup, char* lpszGuildName, int iCsGuildID, LPCSP_CSGUILDUNIONINFO lpCsGuildUnionInfo, int* lpiCount);
BOOL DSDB_QueryCsClearTotalGuildInfo(int iMapSvrGroup);
-#ifdef ADD_CASTLE_TOTAL_GUILD_SCORE_20061123
- BOOL DSDB_QueryCsSaveTotalGuildInfo(int iMapSvrGroup, char* lpszGuildName, int iCsGuildID, int iCsGuildInvolved, int iCsGuildScore);
-#else
- BOOL DSDB_QueryCsSaveTotalGuildInfo(int iMapSvrGroup, char* lpszGuildName, int iCsGuildID, int iCsGuildInvolved);
-#endif
+ BOOL DSDB_QueryCsSaveTotalGuildInfo(int iMapSvrGroup, char* lpszGuildName, int iCsGuildID, int iCsGuildInvolved, int iCsGuildScore);
BOOL DSDB_QueryCsSaveTotalGuildOK(int iMapSvrGroup, int* lpiResult);
- BOOL DSDB_QueryCsLoadTotalGuildInfo(int iMapSvrGroup, CSP_CSLOADTOTALGUILDINFO* lpLoadTotalGuildInfo, int* lpiCount);
- BOOL DSDB_QueryCastleNpcUpdate(int iMapSvrGroup, CSP_REQ_NPCUPDATEDATA* lpNpcSaveData);
+ BOOL DSDB_QueryCsLoadTotalGuildInfo(int iMapSvrGroup, LPCSP_CSLOADTOTALGUILDINFO lpLoadTotalGuildInfo, int* lpiCount);
+ BOOL DSDB_QueryCastleNpcUpdate(int iMapSvrGroup, LPCSP_REQ_NPCUPDATEDATA lpNpcSaveData);
};
-#endif // !defined(AFX_CASTLEDBSET_H__866EE47E_B854_4D47_8664_64C3026FFE59__INCLUDED_)
+#endif
diff --git a/DataServer/DbSet/ChaosCastleFinalDBSet.cpp b/DataServer/DbSet/ChaosCastleFinalDBSet.cpp
index bcdf4f0..e4d0aa9 100644
--- a/DataServer/DbSet/ChaosCastleFinalDBSet.cpp
+++ b/DataServer/DbSet/ChaosCastleFinalDBSet.cpp
@@ -11,963 +11,804 @@ ChaosCastleFinalDBSet::~ChaosCastleFinalDBSet()
BOOL ChaosCastleFinalDBSet::Connect()
{
- if (m_DBQuery.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass))
- return 1;
- MsgBox("ChaosCastleFinalDBSet ODBC Connect Fail");
- return 0;
+ if (m_Query.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass) == FALSE)
+ {
+ MsgBox("ChaosCastleFinalDBSet ODBC Connect Fail");
+ return FALSE;
+ }
+
+ return TRUE;
}
-int ChaosCastleFinalDBSet::ReqCCFRanking(_stCCFRankingInfo *CCFRankingInfo, int nCCFtype, char *btUserCount, int nServerCategory)
+BOOL ChaosCastleFinalDBSet::ReqCCFRanking(_stCCFRankingInfo* CCFRankingInfo, int nCCFtype, BYTE& btUserCount, int nServerCategory)
{
- int result;
- __int16 sqlRetrun;
- CString szquery;
int iCnt = 0;
- if (this->m_DBQuery.IsConnected())
+ if (m_Query.IsConnected() == FALSE)
{
- if (nServerCategory == 1)
- szquery.Format("WZ_ChaosCastleFinal_GetRank_r %d",nCCFtype);
- else
- szquery.Format("WZ_ChaosCastleFinal_GetRank %d",nCCFtype);
- if (this->m_DBQuery.Exec(szquery))
- {
- for (sqlRetrun = this->m_DBQuery.Fetch(); sqlRetrun != 100; sqlRetrun = this->m_DBQuery.Fetch())
- {
- if (sqlRetrun == -1)
- break;
-
- CCFRankingInfo[iCnt].byRank = this->m_DBQuery.GetInt("mRank");
- this->m_DBQuery.GetStr("mName", CCFRankingInfo[iCnt].szCharName);
- CCFRankingInfo[iCnt++].nPoint = this->m_DBQuery.GetInt("mPoint");
- if (iCnt >= 50)
- break;
- }
- *btUserCount = iCnt;
- this->m_DBQuery.Clear();
- result = 0;
- }
- else
- {
- LogAddC(2,"Error WZ_CCF_GET_RANKLIST m_DBQuery.Exec %s %d", __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = -1;
- }
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ return -1;
}
+
+ CString szquery;
+
+ if (nServerCategory == 1)
+ {
+ szquery.Format("WZ_ChaosCastleFinal_GetRank_r %d", nCCFtype);
+ }
+
else
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- result = -1;
+ szquery.Format("WZ_ChaosCastleFinal_GetRank %d", nCCFtype);
}
- return result;
-}
+ if (m_Query.Exec(szquery) == FALSE)
+ {
+ LogAddC(LOGC_RED, "Error WZ_CCF_GET_RANKLIST m_Query.Exec %s %d", __FILE__, __LINE__);
+ m_Query.Clear();
+ return -1;
+ }
+
+ SQLRETURN sqlRetrun = m_Query.Fetch();
+
+ while (sqlRetrun != SQL_NO_DATA && sqlRetrun != SQL_NULL_DATA)
+ {
+ CCFRankingInfo[iCnt].byRank = m_Query.GetInt("mRank");
+ m_Query.GetStr("mName", CCFRankingInfo[iCnt].szCharName);
+ CCFRankingInfo[iCnt].nPoint = m_Query.GetInt("mPoint");
+ iCnt++;
+
+ if (iCnt >= 50)
+ {
+ break;
+ }
+
+ sqlRetrun = m_Query.Fetch();
+ }
+
+ btUserCount = iCnt;
+ m_Query.Clear();
+ return FALSE;
+}
void ChaosCastleFinalDBSet::Save_CCF_Point(char *Name, int nPoint, int nCCFType)
{
- __int16 sqlReturn;
+ if (m_Query.IsConnected() == FALSE)
+ {
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ return;
+ }
+
CString qSql;
+ qSql.Format("WZ_ChaosCastleFinal_Save '%s', %d, %d",Name,nPoint,nCCFType);
- if (this->m_DBQuery.IsConnected())
+ if (m_Query.Exec(qSql) == FALSE)
{
-
- qSql.Format("WZ_ChaosCastleFinal_Save '%s', %d, %d",Name,nPoint,nCCFType);
- if (!this->m_DBQuery.Exec(qSql))
- LogAddTD("Error-L1 [ChaosCastleFinal] [WZ_ChaosCastleFinal_Save] NAME:%s, Point:%d ,CCFType:%d ",Name,nPoint,nCCFType);
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn == 100 || sqlReturn == -1)
- LogAddTD("Error-L2 [ChaosCastleFinal] [WZ_ChaosCastleFinal_Save] %d, %s , %d",sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
+ LogAddTD("Error-L1 [ChaosCastleFinal] [WZ_ChaosCastleFinal_Save] NAME:%s, Point:%d ,CCFType:%d ", Name, nPoint, nCCFType);
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
+ LogAddTD("Error-L2 [ChaosCastleFinal] [WZ_ChaosCastleFinal_Save] %d, %s , %d", sqlReturn, __FILE__, __LINE__);
}
-}
+ m_Query.Clear();
+}
-int ChaosCastleFinalDBSet::CCFRankRenew(char byCCFType)
+BOOL ChaosCastleFinalDBSet::CCFRankRenew(BYTE byCCFType)
{
int result;
CString q;
- if (this->m_DBQuery.IsConnected())
+ if (m_Query.IsConnected() == FALSE)
{
- q.Format("WZ_ChaosCastleFinal_Renew %d", byCCFType);
- if (this->m_DBQuery.Exec(q))
- {
- this->m_DBQuery.Clear();
- result = 0;
- }
- else
- {
- LogAddTD("Error-L1 [ChaosCastleFinalDBSet][WZ_ChaosCastleFinal_Renew]");
- result = -1;
- }
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ return -1;
}
- else
+
+ CString q;
+ q.Format("WZ_ChaosCastleFinal_Renew %d", byCCFType);
+
+ if (m_Query.Exec(q) == FALSE)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- result = -1;
+ LogAddTD("Error-L1 [ChaosCastleFinalDBSet][WZ_ChaosCastleFinal_Renew]");
+ return -1;
}
- return result;
-}
+ m_Query.Clear();
+ return FALSE;
+}
-void ChaosCastleFinalDBSet::GetPermission(char *Name, int nCCFType, int *nReturn)
+void ChaosCastleFinalDBSet::GetPermission(char* Name, int nCCFType, int& nReturn)
{
- __int16 sqlReturn;
+ if (m_Query.IsConnected() == FALSE)
+ {
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ nReturn = 1;
+ return;
+ }
+
CString qSql;
+ qSql.Format("WZ_ChaosCastleFinal_GetPermission '%s' , %d", Name, nCCFType);
- if (this->m_DBQuery.IsConnected())
+ if (m_Query.Exec(qSql) == FALSE)
{
- qSql.Format("WZ_ChaosCastleFinal_GetPermission '%s' , %d",Name,nCCFType);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *nReturn = this->m_DBQuery.GetInt(1);
- if (*nReturn == -1)
- LogAddTD("error-L3 : [ChaosCastleFinalDBSet] WZ_ChaosCastleFinal_GetPermission #3 %d %s %d",
- sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_ChaosCastleFinal_GetPermission][A2] %s %d Return %d,%s,%d ",
- Name,nCCFType,sqlReturn, __FILE__, __LINE__);
- }
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_ChaosCastleFinal_GetPermission][A1] %s %d ", Name, nCCFType);
- }
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_ChaosCastleFinal_GetPermission][A1] %s %d ", Name, nCCFType);
+ return;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- *nReturn = 1;
+ m_Query.Clear();
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_ChaosCastleFinal_GetPermission][A2] %s %d Return %d,%s,%d ", Name, nCCFType, sqlReturn, __FILE__, __LINE__);
+ return;
}
+
+ nReturn = m_Query.GetInt(1);
+
+ if (nReturn == -1)
+ {
+ LogAddTD("error-L3 : [ChaosCastleFinalDBSet] WZ_ChaosCastleFinal_GetPermission #3 %d %s %d", sqlReturn, __FILE__, __LINE__);
+ }
+
+ m_Query.Clear();
}
-int ChaosCastleFinalDBSet::Save_ChaosCastle_KillPoint(char *szName, int nPoint, int CastleIndex, int *SubResult, int *CurrntPoint, int *TotalPoint)
+BOOL ChaosCastleFinalDBSet::Save_ChaosCastle_KillPoint(char* szName, int nPoint, int CastleIndex, int& SubResult, int& CurrntPoint, int& TotalPoint)
{
- int result;
- __int16 sqlReturn;
- CString qSql;
- char szCharName[11];
-
- if (this->m_DBQuery.IsConnected())
+ if (m_Query.IsConnected() == FALSE)
{
- szCharName[10] = 0;
- memcpy(szCharName, szName, 0xAu);
-
- if (strlen(szCharName) && (strlen(szCharName) <= 0xA))
- {
- qSql.Format("EXEC WZ_ChaosCastle_SaveKillPoint '%s', %d ,%d ",szName,nPoint,CastleIndex);
-
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *SubResult = this->m_DBQuery.GetInt("Result");
- *CurrntPoint = this->m_DBQuery.GetInt("CurrentPoint");
- *TotalPoint = this->m_DBQuery.GetInt("TotalPoint");
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][Save_ChaosCastle_KillPoint] [%s] nPoint:%d CastleIndex: %d Return %d,%s,%d ",
- szName,nPoint,CastleIndex,sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
-
- result = 0;
- }
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][Save_ChaosCastle_KillPoint] [%s] KillPoint:%d CastleIndex :%d ",
- szCharName,nPoint,CastleIndex);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szCharName, __FILE__, __LINE__);
- result = 0;
- }
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ SubResult = -1;
+ CurrntPoint = 0;
+ TotalPoint = 0;
+ return FALSE;
}
- else
+
+ char szCharName[MAX_IDSTRING + 1];
+ szCharName[MAX_IDSTRING] = '\0';
+ memcpy(szCharName, szName, MAX_IDSTRING);
+
+ if (strlen(szCharName) == 0 || strlen(szCharName) > MAX_IDSTRING)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- *SubResult = -1;
- *CurrntPoint = 0;
- *TotalPoint = 0;
- result = 0;
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szCharName, __FILE__, __LINE__);
+ return FALSE;
}
- return result;
-}
-
-int ChaosCastleFinalDBSet::GetUBFAccountUserInfo(char *szAccountID, char *szName, int nServerCode, int IsUnityBattleFieldServer, PMSG_ANS_UBF_ACCOUNT_USERINFO *pMsg)
-{
- int result; // eax
- __int16 sqlReturn;
CString qSql;
- char szCharName[11];
- char szId[11];
+ qSql.Format("EXEC WZ_ChaosCastle_SaveKillPoint '%s', %d ,%d ", szName, nPoint, CastleIndex);
-
- if (this->m_DBQuery.IsConnected())
+ if (m_Query.Exec(qSql) == FALSE)
{
- szId[10] = 0;
- memcpy(szId, szAccountID, 0xAu);
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][Save_ChaosCastle_KillPoint] [%s] KillPoint:%d CastleIndex :%d ", szCharName, nPoint, CastleIndex);
+ m_Query.Clear();
+ return FALSE;
+ }
- if (strlen(szId) && (strlen(szId) <= 0xA))
- {
- szCharName[10] = 0;
- memcpy(szCharName, szName, 0xAu);
- if (strlen(szCharName) && (strlen(szCharName) <= 0xA))
- {
- qSql.Format("EXEC WZ_UnityBattleFieldAccountUserInfoSelect_r '%s', '%s', %d, %d",
- szAccountID,szName,nServerCode,IsUnityBattleFieldServer);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn == 100)
- {
- LogAddTD("[CCF][WZ_UnityBattleFieldAccountUserInfoSelect_r] No Result Not Error [%s][%s]ServerCode:%d Return %d,%s,%d ",
- szId,szName,nServerCode,sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
- }
- else if (sqlReturn == -1)
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserInfoSelect_r] [%s][%s]ServerCode:%d Return %d,%s,%d ",
- szId,szName,nServerCode,sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
- }
- else
- {
- pMsg->btRegisterState = this->m_DBQuery.GetInt("RegisterState");
- pMsg->btRegisterMonth = this->m_DBQuery.GetInt("RegisterMonth");
- pMsg->btRegisterDay = this->m_DBQuery.GetInt("RegisterDay");
- this->m_DBQuery.Clear();
- result = 1;
- }
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserInfoSelect_r] [%s][%s] ServerCode:%d, ServerType:%d ",
- szId,szCharName,nServerCode,IsUnityBattleFieldServer);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szCharName, __FILE__, __LINE__);
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szId, __FILE__, __LINE__);
- result = 0;
- }
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][Save_ChaosCastle_KillPoint] [%s] nPoint:%d CastleIndex: %d Return %d,%s,%d ", szName, nPoint, CastleIndex, sqlReturn, __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
}
- else
+
+ SubResult = m_Query.GetInt("Result");
+ CurrntPoint = m_Query.GetInt("CurrentPoint");
+ TotalPoint = m_Query.GetInt("TotalPoint");
+
+ m_Query.Clear();
+ return TRUE;
+}
+
+BOOL ChaosCastleFinalDBSet::GetUBFAccountUserInfo(char* szAccountID, char* szName, int nServerCode, BOOL IsUnityBattleFieldServer, LPPMSG_ANS_UBF_ACCOUNT_USERINFO pMsg)
+{
+ if (m_Query.IsConnected() == FALSE)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
pMsg->btRegisterState = 0;
pMsg->btRegisterMonth = 0;
pMsg->btRegisterDay = 0;
- result = 0;
+ return FALSE;
}
- return result;
-}
+ char szId[MAX_IDSTRING + 1];
+ szId[MAX_IDSTRING] = '\0';
+ memcpy(szId, szAccountID, MAX_IDSTRING);
-int ChaosCastleFinalDBSet::RegisterUBFAccountUser(char *szAccountID, char *szName, char *szBattleName, int nServerCode, int nRegisterState, int nRegisterMonth, int nRegisterDay, char *nResult, unsigned __int16 *nLeftSec)
-{
- int result;
- __int16 sqlReturn;
- CString qSql;
- char szUBFName[11];
- char szCharName[11];
- char szId[11];
+ if (strlen(szId) == 0 || strlen(szId) > MAX_IDSTRING)
+ {
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szId, __FILE__, __LINE__);
+ return FALSE;
+ }
+ char szCharName[MAX_IDSTRING + 1];
+ szCharName[MAX_IDSTRING] = '\0';
+ memcpy(szCharName, szName, MAX_IDSTRING);
- if (this->m_DBQuery.IsConnected())
+ if (strlen(szCharName) == 0 || strlen(szCharName) > MAX_IDSTRING)
{
- szId[10] = 0;
- memcpy(szId, szAccountID, 0xAu);
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szCharName, __FILE__, __LINE__);
+ return FALSE;
+ }
- if (strlen(szId) && (strlen(szId) <= 0xA))
- {
- szCharName[10] = 0;
- memcpy(szCharName, szName, 0xAu);
- strlen(szCharName);
- if (strlen(szCharName) && (strlen(szCharName) <= 0xA))
- {
- szUBFName[10] = 0;
- memcpy(szUBFName, szBattleName, 0xAu);
- strlen(szUBFName);
- if (strlen(szUBFName) && (strlen(szUBFName) <= 0xA))
- {
-
- qSql.Format("EXEC WZ_UnityBattleFieldAccountUserAdd_r '%s', '%s', %d, %d, %d, %d",
- szId,szCharName,nServerCode,nRegisterState,nRegisterMonth,nRegisterDay);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *nResult = this->m_DBQuery.GetInt("Result");
- *nLeftSec = this->m_DBQuery.GetInt("Left_Second");
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserAdd_r] [%s][%s] sqlReturn:%d,%s,%d ",
- szId,szCharName,sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserAdd_r] '%s', '%s', %d, %d, %d, %d ",
- szId,szCharName,nServerCode,nRegisterState,nRegisterMonth,nRegisterDay);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szUBFName, __FILE__, __LINE__);
- result = 0;
- }
- }
- else
- {
- LogAddC(2, "%s] ؎֥ ߡׯ %s %d",szCharName, __FILE__, __LINE__);
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szId, __FILE__, __LINE__);
- result = 0;
- }
+ CString qSql;
+ qSql.Format("EXEC WZ_UnityBattleFieldAccountUserInfoSelect_r '%s', '%s', %d, %d", szAccountID, szName, nServerCode, IsUnityBattleFieldServer);
+
+ if (m_Query.Exec(qSql) == FALSE)
+ {
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserInfoSelect_r] [%s][%s] ServerCode:%d, ServerType:%d ", szId, szCharName, nServerCode, IsUnityBattleFieldServer);
+ m_Query.Clear();
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- *nResult = -1;
- *nLeftSec = 0;
- result = 0;
+ LogAddTD("[CCF][WZ_UnityBattleFieldAccountUserInfoSelect_r] No Result Not Error [%s][%s]ServerCode:%d Return %d,%s,%d ", szId, szName, nServerCode, sqlReturn, __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
}
- return result;
-}
+ if (sqlReturn == SQL_NULL_DATA)
+ {
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserInfoSelect_r] [%s][%s]ServerCode:%d Return %d,%s,%d ", szId, szName, nServerCode, sqlReturn, __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
+ }
-bool ChaosCastleFinalDBSet::CopyUBFAccountUser(char *szAccountID, char *szName, __int16 GameServerCode, BYTE* subResult)
+ pMsg->btRegisterState = m_Query.GetInt("RegisterState");
+ pMsg->btRegisterMonth = m_Query.GetInt("RegisterMonth");
+ pMsg->btRegisterDay = m_Query.GetInt("RegisterDay");
+
+ m_Query.Clear();
+ return TRUE;
+}
+
+BOOL ChaosCastleFinalDBSet::RegisterUBFAccountUser(char* szAccountID, char* szName, char* szBattleName, int nServerCode, int nRegisterState, int nRegisterMonth, int nRegisterDay, BYTE& nResult, WORD& nLeftSec)
{
- int result;
- __int16 sqlReturn;
- CString qSql;
- char szCharName[11];
- char szId[11];
+ if (m_Query.IsConnected() == FALSE)
+ {
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ nResult = -1;
+ nLeftSec = 0;
+ return FALSE;
+ }
- if (this->m_DBQuery.IsConnected())
+ char szId[MAX_IDSTRING + 1];
+ szId[MAX_IDSTRING] = '\0';
+ memcpy(szId, szAccountID, MAX_IDSTRING);
+
+ if (strlen(szId) == 0 || strlen(szId) > MAX_IDSTRING)
{
- szId[10] = 0;
- memcpy(szId, szAccountID, 0xAu);
- if (strlen(szId) && (strlen(szId) <= 0xA))
- {
- szCharName[10] = 0;
- memcpy(szCharName, szName, 0xAu);
- if (strlen(szCharName) && (strlen(szCharName) <= 0xA))
- {
-
- qSql.Format("EXEC WZ_UnityBattleFieldAccountUserDataCopy_r '%s', '%s',%d",
- szId,szCharName,GameServerCode);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *subResult = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserDataCopy] [%s][%s] sqlReturn:%d,%s,%d ",
- szId,szCharName,sqlReturn, __FILE__, __LINE__);
- result = 0;
- }
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserDataCopy_r] '%s', '%s'",
- szId,szCharName);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szCharName, __FILE__, __LINE__);
- result = 0;
- }
- }
- else
- {
- LogAddC(2, "%s] ؎֥ ߡׯ %s %d",szId, __FILE__, __LINE__);
- result = 0;
- }
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szId, __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ char szCharName[MAX_IDSTRING + 1];
+ szCharName[MAX_IDSTRING] = '\0';
+ memcpy(szCharName, szName, MAX_IDSTRING);
+
+ if (strlen(szCharName) == 0 || strlen(szCharName) > MAX_IDSTRING)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- *subResult = 0;
- result = 0;
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szCharName, __FILE__, __LINE__);
+ return FALSE;
}
- return result;
-}
+ char szUBFName[MAX_IDSTRING + 1];
+ szUBFName[MAX_IDSTRING] = '\0';
+ memcpy(szUBFName, szBattleName, MAX_IDSTRING);
+
+ if (strlen(szUBFName) == 0 || strlen(szUBFName) > MAX_IDSTRING)
+ {
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szUBFName, __FILE__, __LINE__);
+ return FALSE;
+ }
-bool ChaosCastleFinalDBSet::CopyUBFAccountUserPromotionMode(char *szAccountID, char *szName, __int16 GameServerCode, BYTE *subResult)
-{
- int result;
- __int16 sqlReturn;
CString qSql;
- char szCharName[11];
- char szId[11];
+ qSql.Format("EXEC WZ_UnityBattleFieldAccountUserAdd_r '%s', '%s', %d, %d, %d, %d", szId, szCharName, nServerCode, nRegisterState, nRegisterMonth, nRegisterDay);
+ if (m_Query.Exec(qSql) == FALSE)
+ {
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserAdd_r] '%s', '%s', %d, %d, %d, %d ", szId, szCharName, nServerCode, nRegisterState, nRegisterMonth, nRegisterDay);
+ m_Query.Clear();
+ return FALSE;
+ }
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
- if (this->m_DBQuery.IsConnected())
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- szId[10] = 0;
- memcpy(szId, szAccountID, 0xAu);
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserAdd_r] [%s][%s] sqlReturn:%d,%s,%d ", szId, szCharName, sqlReturn, __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
+ }
- if (strlen(szId) && (strlen(szId) <= 0xA))
- {
- szCharName[10] = 0;
- memcpy(szCharName, szName, 0xAu);
-
- if (strlen(szCharName) && (strlen(szCharName) <= 0xA))
- {
- qSql.Format("EXEC WZ_UnityBattleFieldAccountUserDataCopy_Promotion '%s', '%s',%d",
- szId,szCharName,GameServerCode);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *subResult = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("Error-L3 [CCFDBSet][WZ_UnityBattleFieldAccountUserDataCopy_Promotion] [%s][%s] sqlReturn:%d,%s,%d ",
- szId,szCharName,sqlReturn, __FILE__, __LINE__);
- result = 0;
- }
- }
- else
- {
- LogAddTD("Error-L3 [CCFDBSet][WZ_UnityBattleFieldAccountUserDataCopy_Promotion] '%s', '%s'", szId, szCharName);
- this->m_DBQuery.Clear();
-
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szCharName, __FILE__, __LINE__);
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szId, __FILE__, __LINE__);
- result = 0;
- }
+ nResult = m_Query.GetInt("Result");
+ nLeftSec = m_Query.GetInt("Left_Second");
+
+ m_Query.Clear();
+ return TRUE;
+}
+
+BOOL ChaosCastleFinalDBSet::CopyUBFAccountUser(char* szAccountID, char* szName, WORD GameServerCode, BYTE& subResult)
+{
+ if (m_Query.IsConnected() == FALSE)
+ {
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ subResult = 0;
+ return FALSE;
}
- else
+
+ char szId[MAX_IDSTRING + 1];
+ szId[MAX_IDSTRING] = '\0';
+ memcpy(szId, szAccountID, MAX_IDSTRING);
+
+ if (strlen(szId) == 0 || strlen(szId) > MAX_IDSTRING)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- *subResult = 0;
- result = 0;
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szId, __FILE__, __LINE__);
+ return FALSE;
}
- return result;
-}
+ char szCharName[MAX_IDSTRING + 1];
+ szCharName[MAX_IDSTRING] = '\0';
+ memcpy(szCharName, szName, MAX_IDSTRING);
-int ChaosCastleFinalDBSet::GetWinAllRewardInfoOfUBF(char *szCharName, int nServerCode, char btServerKind, char btContentsType, PMSG_ANS_UBF_GET_REWARD *pMsg)
-{
- int result; // eax
- __int16 sqlReturn; // [esp+F8h] [ebp-44h]
- CString qSql; // [esp+104h] [ebp-38h]
- char szName[11]; // [esp+110h] [ebp-2Ch]
-
- szName[10] = 0;
- memcpy(szName, szCharName, 0xAu);
-
- if (strlen(szName) && (strlen(szName) <= 0xA))
- {
- qSql.Format("EXEC WZ_All_GetAndUpdate_RewardInfoOfUnityBattleField %d, '%s', %d, %d ",
- btServerKind,
- szName,
- nServerCode,
- btContentsType);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- pMsg->btResult = this->m_DBQuery.GetInt("Result");
- pMsg->btContentsType = this->m_DBQuery.GetInt("ContentsType");
- pMsg->btArrayCCF_Reward[0] = this->m_DBQuery.GetInt("CCF_Reward_PreLeague");
- pMsg->btArrayCCF_Reward[1] = this->m_DBQuery.GetInt("CCF_Reward_SemiLeague");
- pMsg->btArrayCCF_Reward[2] = this->m_DBQuery.GetInt("CCF_Reward_FinalLeague");
- pMsg->btArrayCCF_Reward[3] = this->m_DBQuery.GetInt("CCF_Reward_LastWinner");
- pMsg->btArrayDSF_Reward[0] = this->m_DBQuery.GetInt("DSF_Reward_PreLeague");
- pMsg->btArrayDSF_Reward[1] = this->m_DBQuery.GetInt("DSF_Reward_SemiLeague");
- pMsg->btArrayDSF_Reward[2] = this->m_DBQuery.GetInt("DSF_Reward_FinalLeague");
- pMsg->btArrayDSF_Reward[3] = this->m_DBQuery.GetInt("DSF_Reward_LastWinner");
- pMsg->btArrayCCN_Reward[0] = this->m_DBQuery.GetInt("CC_Reward_General");
- pMsg->btArrayCCN_Reward[1] = this->m_DBQuery.GetInt("CC_Reward_LastWinner");
- pMsg->btArrayDSN_Reward[0] = this->m_DBQuery.GetInt("DSN_Reward_Type_1");
- pMsg->btArrayDSN_Reward[1] = this->m_DBQuery.GetInt("DSN_Reward_Type_2");
- pMsg->btArrayDSN_Reward[2] = this->m_DBQuery.GetInt("DSN_Reward_Type_3");
- pMsg->btArrayDSN_Reward[3] = this->m_DBQuery.GetInt("DSN_Reward_Type_4");
- pMsg->btArrayDSN_Reward[4] = this->m_DBQuery.GetInt("DSN_Reward_Type_5");
- pMsg->btArrayDSN_Reward[5] = this->m_DBQuery.GetInt("DSN_Reward_Type_6");
- pMsg->btArrayDSN_Reward[6] = this->m_DBQuery.GetInt("DSN_Reward_Type_7");
- pMsg->btArrayDSN_Reward[7] = this->m_DBQuery.GetInt("DSN_Reward_Type_8");
- pMsg->btArrayDSN_Reward[8] = this->m_DBQuery.GetInt("DSN_Reward_Type_9");
- pMsg->btArrayDSN_Reward[9] = this->m_DBQuery.GetInt("DSN_Reward_Type_10");
- pMsg->btArrayDSN_Reward[10] = this->m_DBQuery.GetInt("DSN_Reward_Type_11");
- pMsg->btArrayDSN_Reward[11] = this->m_DBQuery.GetInt("DSN_Reward_Type_12");
- pMsg->btArrayDSN_Reward[12] = this->m_DBQuery.GetInt("DSN_Reward_Type_13");
- pMsg->btArrayDSN_Reward[13] = this->m_DBQuery.GetInt("DSN_Reward_Type_14");
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_All_GetAndUpdate_RewardInfoOfUnityBattleField] [%s][%d] Return %d,%s,%d ",
- szName,nServerCode,sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_All_GetAndUpdate_RewardInfoOfUnityBattleField] [ServerKind:%d][%s][%d][%d]",
- btServerKind,szName,nServerCode,btContentsType);
- this->m_DBQuery.Clear();
- result = 0;
- }
+ if (strlen(szCharName) == 0 || strlen(szCharName) > MAX_IDSTRING)
+ {
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szCharName, __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ CString qSql;
+ qSql.Format("EXEC WZ_UnityBattleFieldAccountUserDataCopy_r '%s', '%s',%d", szId, szCharName, GameServerCode);
+
+ if (m_Query.Exec(qSql) == FALSE)
{
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szName, __FILE__, __LINE__);
- result = 0;
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserDataCopy_r] '%s', '%s'", szId, szCharName);
+ m_Query.Clear();
+ return FALSE;
}
- return result;
-}
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ m_Query.Clear();
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldAccountUserDataCopy] [%s][%s] sqlReturn:%d,%s,%d ", szId, szCharName, sqlReturn, __FILE__, __LINE__);
+ return FALSE;
+ }
-int ChaosCastleFinalDBSet::SetReceivedWinnerItemOfUBF(char *szCharName, int nServerCode, char btReceived, char *SubResult)
+ subResult = m_Query.GetInt(1);
+
+ m_Query.Clear();
+ return TRUE;
+}
+
+BOOL ChaosCastleFinalDBSet::CopyUBFAccountUserPromotionMode(char* szAccountID, char* szName, WORD GameServerCode, BYTE& subResult)
{
- int result; // eax
- __int16 sqlReturn; // [esp+F8h] [ebp-44h]
- CString qSql; // [esp+104h] [ebp-38h]
- char szName[11]; // [esp+110h] [ebp-2Ch]
+ if (m_Query.IsConnected() == FALSE)
+ {
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ subResult = 0;
+ return FALSE;
+ }
+
+ char szId[MAX_IDSTRING + 1];
+ szId[MAX_IDSTRING] = '\0';
+ memcpy(szId, szAccountID, MAX_IDSTRING);
- if (this->m_DBQuery.IsConnected())
+ if (strlen(szId) == 0 || strlen(szId) > MAX_IDSTRING)
{
- szName[10] = 0;
- memcpy(szName, szCharName, 0xAu);
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szId, __FILE__, __LINE__);
+ return FALSE;
+ }
- if (strlen(szName) && (strlen(szName) <= 0xA))
- {
- qSql.Format("EXEC WZ_UnityBattleField_SetReceivedWinnerItem_r '%s', %d, %d",
- szName,nServerCode,btReceived);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *SubResult = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleField_SetReceivedWinnerItem_r] [%s][%d] Return %d,%s,%d ",
- szName,nServerCode,sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleField_SetReceivedWinnerItem_r] [%s][%d][%d]",
- szName,nServerCode,btReceived);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szName, __FILE__, __LINE__);
- result = 0;
- }
+ char szCharName[MAX_IDSTRING + 1];
+ szCharName[MAX_IDSTRING] = '\0';
+ memcpy(szCharName, szName, MAX_IDSTRING);
+
+ if (strlen(szCharName) == 0 || strlen(szCharName) > MAX_IDSTRING)
+ {
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szCharName, __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ CString qSql;
+ qSql.Format("EXEC WZ_UnityBattleFieldAccountUserDataCopy_Promotion '%s', '%s',%d", szId, szCharName, GameServerCode);
+
+ if (m_Query.Exec(qSql) == FALSE)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- *SubResult = 0;
- result = 0;
+ LogAddTD("Error-L3 [CCFDBSet][WZ_UnityBattleFieldAccountUserDataCopy_Promotion] '%s', '%s'", szId, szCharName);
+ m_Query.Clear();
+ return FALSE;
}
- return result;
-}
+ SQLRETURN sqlReturn = m_Query.Fetch();
-int ChaosCastleFinalDBSet::SetCancelToJionUnityBattlefiled(char *szAccountID, char *szName, __int16 GameServerCode, char *subResult)
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ m_Query.Clear();
+ LogAddTD("Error-L3 [CCFDBSet][WZ_UnityBattleFieldAccountUserDataCopy_Promotion] [%s][%s] sqlReturn:%d,%s,%d ", szId, szCharName, sqlReturn, __FILE__, __LINE__);
+ return FALSE;
+ }
+
+ subResult = m_Query.GetInt(1);
+
+ m_Query.Clear();
+ return TRUE;
+}
+
+BOOL ChaosCastleFinalDBSet::GetWinAllRewardInfoOfUBF(char* szCharName, int nServerCode, BYTE btServerKind, BYTE btContentsType, LPPMSG_ANS_UBF_GET_REWARD pMsg)
{
- int result;
- __int16 sqlReturn;
+ char szName[MAX_IDSTRING + 1];
+ szName[MAX_IDSTRING] = '\0';
+ memcpy(szName, szCharName, MAX_IDSTRING);
+
+ if (strlen(szName) == 0 || strlen(szName) > MAX_IDSTRING)
+ {
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szName, __FILE__, __LINE__);
+ return FALSE;
+ }
+
CString qSql;
- char Return;
- char szCharName[11];
- char szId[11];
+ qSql.Format("EXEC WZ_All_GetAndUpdate_RewardInfoOfUnityBattleField %d, '%s', %d, %d ", btServerKind, szName, nServerCode, btContentsType);
+
+ if (m_Query.Exec(qSql) == FALSE)
+ {
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_All_GetAndUpdate_RewardInfoOfUnityBattleField] [ServerKind:%d][%s][%d][%d]", btServerKind, szName, nServerCode, btContentsType);
+ m_Query.Clear();
+ return FALSE;
+ }
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_All_GetAndUpdate_RewardInfoOfUnityBattleField] [%s][%d] Return %d,%s,%d ", szName, nServerCode, sqlReturn, __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
+ }
+
+ enum
+ {
+ REWARD_TYPE_1 = 0x0,
+ REWARD_TYPE_2 = 0x1,
+ REWARD_TYPE_3 = 0x2,
+ REWARD_TYPE_4 = 0x3,
+ REWARD_TYPE_5 = 0x4,
+ REWARD_TYPE_6 = 0x5,
+ REWARD_TYPE_7 = 0x6,
+ REWARD_TYPE_8 = 0x7,
+ REWARD_TYPE_9 = 0x8,
+ REWARD_TYPE_10 = 0x9,
+ REWARD_TYPE_11 = 0xA,
+ REWARD_TYPE_12 = 0xB,
+ REWARD_TYPE_13 = 0xC,
+ REWARD_TYPE_14 = 0xD,
+ };
+
+
+ pMsg->btResult = m_Query.GetInt("Result");
+ pMsg->btContentsType = m_Query.GetInt("ContentsType");
+
+ pMsg->btArrayCCF_Reward[REWARD_TYPE_1] = m_Query.GetInt("CCF_Reward_PreLeague");
+ pMsg->btArrayCCF_Reward[REWARD_TYPE_2] = m_Query.GetInt("CCF_Reward_SemiLeague");
+ pMsg->btArrayCCF_Reward[REWARD_TYPE_3] = m_Query.GetInt("CCF_Reward_FinalLeague");
+ pMsg->btArrayCCF_Reward[REWARD_TYPE_4] = m_Query.GetInt("CCF_Reward_LastWinner");
+ pMsg->btArrayDSF_Reward[REWARD_TYPE_1] = m_Query.GetInt("DSF_Reward_PreLeague");
+ pMsg->btArrayDSF_Reward[REWARD_TYPE_2] = m_Query.GetInt("DSF_Reward_SemiLeague");
+ pMsg->btArrayDSF_Reward[REWARD_TYPE_3] = m_Query.GetInt("DSF_Reward_FinalLeague");
+ pMsg->btArrayDSF_Reward[REWARD_TYPE_4] = m_Query.GetInt("DSF_Reward_LastWinner");
+ pMsg->btArrayCCN_Reward[REWARD_TYPE_1] = m_Query.GetInt("CC_Reward_General");
+ pMsg->btArrayCCN_Reward[REWARD_TYPE_2] = m_Query.GetInt("CC_Reward_LastWinner");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_1] = m_Query.GetInt("DSN_Reward_Type_1");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_2] = m_Query.GetInt("DSN_Reward_Type_2");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_3] = m_Query.GetInt("DSN_Reward_Type_3");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_4] = m_Query.GetInt("DSN_Reward_Type_4");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_5] = m_Query.GetInt("DSN_Reward_Type_5");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_6] = m_Query.GetInt("DSN_Reward_Type_6");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_7] = m_Query.GetInt("DSN_Reward_Type_7");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_8] = m_Query.GetInt("DSN_Reward_Type_8");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_9] = m_Query.GetInt("DSN_Reward_Type_9");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_10] = m_Query.GetInt("DSN_Reward_Type_10");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_11] = m_Query.GetInt("DSN_Reward_Type_11");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_12] = m_Query.GetInt("DSN_Reward_Type_12");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_13] = m_Query.GetInt("DSN_Reward_Type_13");
+ pMsg->btArrayDSN_Reward[REWARD_TYPE_14] = m_Query.GetInt("DSN_Reward_Type_14");
+
+ m_Query.Clear();
+ return TRUE;
+}
+BOOL ChaosCastleFinalDBSet::SetReceivedWinnerItemOfUBF(char* szCharName, int nServerCode, BYTE btReceived, BYTE& SubResult)
+{
+ if (m_Query.IsConnected() == FALSE)
+ {
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ SubResult = 0;
+ return FALSE;
+ }
+
+ char szName[MAX_IDSTRING + 1];
+ szName[MAX_IDSTRING] = '\0';
+ memcpy(szName, szCharName, MAX_IDSTRING);
- if (this->m_DBQuery.IsConnected())
+ if (strlen(szName) == 0 || strlen(szName) > MAX_IDSTRING)
{
- szId[10] = 0;
- memcpy(szId, szAccountID, 0xAu);
- szCharName[10] = 0;
- memcpy(szCharName, szName, 0xAu);
- Return = 0;
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szName, __FILE__, __LINE__);
+ return FALSE;
+ }
- if (strlen(szId) && (strlen(szId) <= 0xA))
- {
+ CString qSql;
+ qSql.Format("EXEC WZ_UnityBattleField_SetReceivedWinnerItem_r '%s', %d, %d", szName, nServerCode, btReceived);
- if (strlen(szCharName) && (strlen(szCharName) <= 0xA))
- {
-
- qSql.Format("EXEC WZ_UnityBattleFieldCancelToJoin_r '%s','%s',%d",
- szId,szCharName,GameServerCode);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *subResult = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][SetCancelToJionUnityBattlefiled] [%s][%d] Return %d,%s,%d ",
- szName,GameServerCode,sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddTD("Error-L3 [UBF][WZ_UnityBattleFieldCancelToJoin_r] [%s][%s][%d]", szId, szCharName, GameServerCode);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szId, __FILE__, __LINE__);
- result = 0;
- }
- }
- else
- {
- LogAddC(2, "%s] ؎֥ ߡׯ %s %d",szId, __FILE__, __LINE__);
- result = 0;
- }
+ if (m_Query.Exec(qSql) == FALSE)
+ {
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleField_SetReceivedWinnerItem_r] [%s][%d][%d]", szName, nServerCode, btReceived);
+ m_Query.Clear();
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- *subResult = 0;
- result = 0;
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleField_SetReceivedWinnerItem_r] [%s][%d] Return %d,%s,%d ", szName, nServerCode, sqlReturn, __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
}
- return result;
+
+ SubResult = m_Query.GetInt(1);
+
+ m_Query.Clear();
+ return TRUE;
}
-
-char ChaosCastleFinalDBSet::DeleteCharacterUnityBattlefiled(char *szAccountID, char *szName, __int16 GameServerCode)
+BOOL ChaosCastleFinalDBSet::SetCancelToJionUnityBattlefiled(char* szAccountID, char* szName, WORD GameServerCode, BYTE& subResult)
{
- char result;
- __int16 sqlReturn;
- CString qSql;
- char Return;
- char szCharName[11];
- char szId[11];
+ if (m_Query.IsConnected() == FALSE)
+ {
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ subResult = 0;
+ return FALSE;
+ }
+
+ char szId[MAX_IDSTRING + 1];
+ szId[MAX_IDSTRING] = '\0';
+ memcpy(szId, szAccountID, MAX_IDSTRING);
+
+ char szCharName[MAX_IDSTRING + 1];
+ szCharName[MAX_IDSTRING] = '\0';
+ memcpy(szCharName, szName, MAX_IDSTRING);
+
+ BYTE Return = 0;
- if (this->m_DBQuery.IsConnected())
+ if (strlen(szId) == 0 || strlen(szId) > MAX_IDSTRING)
{
- szId[10] = 0;
- memcpy(szId, szAccountID, 0xAu);
- szCharName[10] = 0;
- memcpy(szCharName, szName, 0xAu);
- Return = 0;
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szId, __FILE__, __LINE__);
+ return FALSE;
+ }
- if (strlen(szId) && (strlen(szId) <= 0xA))
- {
- if (strlen(szCharName) && (strlen(szCharName) <= 0xA))
- {
- qSql.Format("EXEC WZ_UnityBattleFieldDeleteCharacter_r '%s','%s',%d",
- szId,szCharName,GameServerCode);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- Return = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
- result = Return;
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldDeleteCharacter_r] [%s] Return %d,%s,%d ",
- szCharName,sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("Error-L3 [UBF][WZ_UnityBattleFieldDeleteCharacter_r] [%s][%s][%d]",
- szId,szCharName,GameServerCode);
- result = 2;
- }
- }
- else
- {
- LogAddC(2, "%s] ؎֥ ߡׯ %s %d",szId, __FILE__, __LINE__);
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szId, __FILE__, __LINE__);
- result = 0;
- }
+ if (strlen(szCharName) == 0 || strlen(szCharName) > MAX_IDSTRING)
+ {
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szId, __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ CString qSql;
+ qSql.Format("EXEC WZ_UnityBattleFieldCancelToJoin_r '%s','%s',%d", szId, szCharName, GameServerCode);
+
+ if (m_Query.Exec(qSql) == FALSE)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- result = 0;
+ LogAddTD("Error-L3 [UBF][WZ_UnityBattleFieldCancelToJoin_r] [%s][%s][%d]", szId, szCharName, GameServerCode);
+ m_Query.Clear();
+ return FALSE;
}
- return result;
-}
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][SetCancelToJionUnityBattlefiled] [%s][%d] Return %d,%s,%d ", szName, GameServerCode, sqlReturn, __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
+ }
-int ChaosCastleFinalDBSet::GetRealNameAndServerCode(char *szUBFName, PMSG_ANS_GET_UBF_REAL_NAME *pMsg)
+ subResult = m_Query.GetInt(1);
+
+ m_Query.Clear();
+ return TRUE;
+}
+
+BYTE ChaosCastleFinalDBSet::DeleteCharacterUnityBattlefiled(char* szAccountID, char* szName, WORD GameServerCode)
{
- int result;
- __int16 sqlReturn;
- CString qSql;
- char szCahrUBFName[11];
+ if (m_Query.IsConnected() == FALSE)
+ {
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ return FALSE;
+ }
+
+ char szId[MAX_IDSTRING + 1];
+ szId[MAX_IDSTRING] = '\0';
+ memcpy(szId, szAccountID, MAX_IDSTRING);
+
+ char szCharName[MAX_IDSTRING + 1];
+ szCharName[MAX_IDSTRING] = '\0';
+ memcpy(szCharName, szName, MAX_IDSTRING);
+ BYTE Return = 0;
- if (this->m_DBQuery.IsConnected())
+ if (strlen(szId) == 0 || strlen(szId) > MAX_IDSTRING)
{
- szCahrUBFName[10] = 0;
- memcpy(szCahrUBFName, szUBFName, 0xAu);
- if (strlen(szCahrUBFName) && (strlen(szCahrUBFName) <= 0xA))
- {
- qSql.Format("EXEC WZ_UnityBattleFieldGetRealName_r '%s'",
- szCahrUBFName);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- this->m_DBQuery.GetStr("Name", pMsg->szRealName);
- pMsg->iServerCode = this->m_DBQuery.GetInt("ServerCode");
- memcpy(pMsg->szUBFName, szCahrUBFName, 0xAu);
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldGetRealName_r] [%s] Return %d,%s,%d ",
- szCahrUBFName,sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddTD("Error-L3 [UBF][WZ_UnityBattleFieldGetRealName_r] [%s]", szCahrUBFName);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szUBFName, __FILE__, __LINE__);
- result = 0;
- }
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szId, __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ if (strlen(szCharName) == 0 || strlen(szCharName) > MAX_IDSTRING)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- result = 0;
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szId, __FILE__, __LINE__);
+ return FALSE;
}
- return result;
-}
+ CString qSql;
+ qSql.Format("EXEC WZ_UnityBattleFieldDeleteCharacter_r '%s','%s',%d", szId, szCharName, GameServerCode);
-int ChaosCastleFinalDBSet::GetRealNameAndServerCode(char *szUBFName, char *szRealName, int *ServerCode, int IsUBFServer)
+ if (m_Query.Exec(qSql) == FALSE)
+ {
+ m_Query.Clear();
+ LogAddTD("Error-L3 [UBF][WZ_UnityBattleFieldDeleteCharacter_r] [%s][%s][%d]", szId, szCharName, GameServerCode);
+ return 2;
+ }
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldDeleteCharacter_r] [%s] Return %d,%s,%d ", szCharName, sqlReturn, __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
+ }
+
+ Return = m_Query.GetInt(1);
+
+ m_Query.Clear();
+ return Return;
+}
+
+BOOL ChaosCastleFinalDBSet::GetRealNameAndServerCode(char* szUBFName, LPPMSG_ANS_GET_UBF_REAL_NAME pMsg)
{
- int result;
- __int16 sqlReturn;
+ if (m_Query.IsConnected() == FALSE)
+ {
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ return FALSE;
+ }
+
+ char szCahrUBFName[MAX_IDSTRING + 1];
+ szCahrUBFName[MAX_IDSTRING] = '\0';
+ memcpy(szCahrUBFName, szUBFName, MAX_IDSTRING);
+
+ if (strlen(szCahrUBFName) == 0 || strlen(szCahrUBFName) > MAX_IDSTRING)
+ {
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szUBFName, __FILE__, __LINE__);
+ return FALSE;
+ }
+
CString qSql;
- char szCahrUBFName[11];
+ qSql.Format("EXEC WZ_UnityBattleFieldGetRealName_r '%s'", szCahrUBFName);
- if (this->m_DBQuery.IsConnected())
+ if (m_Query.Exec(qSql) == FALSE)
{
- szCahrUBFName[10] = 0;
- memcpy(szCahrUBFName, szUBFName, 0xAu);
- strlen(szCahrUBFName);
- if (strlen(szCahrUBFName) && (strlen(szCahrUBFName) <= 0xA))
- {
- qSql.Format("EXEC WZ_UnityBattleFieldGetRealName_r '%s'",szCahrUBFName);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- this->m_DBQuery.GetStr("Name", szRealName);
- *ServerCode = this->m_DBQuery.GetInt("ServerCode");
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldGetRealName_r] [%s] Return %d,%s,%d ",
- szCahrUBFName,sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddTD("Error-L3 [UBF][WZ_UnityBattleFieldGetRealName_r] [%s]", szCahrUBFName);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddC(2, "%s] ؎֥ ߡׯ %s %d",szUBFName, __FILE__, __LINE__);
- result = 0;
- }
+ LogAddTD("Error-L3 [UBF][WZ_UnityBattleFieldGetRealName_r] [%s]", szCahrUBFName);
+ m_Query.Clear();
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- LogAddTD("[UBF] this->m_DBQuery.IsConnected: FALSE");
- result = 0;
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldGetRealName_r] [%s] Return %d,%s,%d ", szCahrUBFName, sqlReturn, __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
}
- return result;
+
+ m_Query.GetStr("Name", pMsg->szRealName);
+ pMsg->iServerCode = m_Query.GetInt("ServerCode");
+ memcpy(pMsg->szUBFName, szCahrUBFName, MAX_IDSTRING);
+
+ m_Query.Clear();
+ return TRUE;
}
+BOOL ChaosCastleFinalDBSet::GetRealNameAndServerCode(char* szUBFName, char* szRealName, int* ServerCode, BOOL IsUBFServer)
+{
+ if (m_Query.IsConnected() == FALSE)
+ {
+ LogAddTD("[UBF] m_Query.IsConnected: FALSE");
+ return FALSE;
+ }
+
+ char szCahrUBFName[MAX_IDSTRING + 1];
+ szCahrUBFName[MAX_IDSTRING] = '\0';
+ memcpy(szCahrUBFName, szUBFName, MAX_IDSTRING);
+
+ if (strlen(szCahrUBFName) == 0 || strlen(szCahrUBFName) > MAX_IDSTRING)
+ {
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szUBFName, __FILE__, __LINE__);
+ return FALSE;
+ }
+
+ CString qSql;
+ qSql.Format("EXEC WZ_UnityBattleFieldGetRealName_r '%s'", szCahrUBFName);
+
+ if (m_Query.Exec(qSql) == FALSE)
+ {
+ LogAddTD("Error-L3 [UBF][WZ_UnityBattleFieldGetRealName_r] [%s]", szCahrUBFName);
+ m_Query.Clear();
+ return FALSE;
+ }
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldGetRealName_r] [%s] Return %d,%s,%d ", szCahrUBFName, sqlReturn, __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
+ }
+
+ m_Query.GetStr("Name", szRealName);
+ *ServerCode = m_Query.GetInt("ServerCode");
-int ChaosCastleFinalDBSet::SetRewardInfoOfUnityBattleField(char *btResult, char btServerKind, char *szAccountID, char *szName, __int16 wServerCode, char btContentsType, char btSubContentsType, int iItemCode, char btItemCount, char btTakeState)
+ m_Query.Clear();
+ return TRUE;
+}
+
+BOOL ChaosCastleFinalDBSet::SetRewardInfoOfUnityBattleField(BYTE& btResult, BYTE btServerKind, char* szAccountID, char* szName, WORD wServerCode, BYTE btContentsType, BYTE btSubContentsType, int iItemCode, BYTE btItemCount, BYTE btTakeState)
{
- int result;
- __int16 sqlReturn;
+ char szId[MAX_IDSTRING + 1];
+ szId[MAX_IDSTRING] = '\0';
+ memcpy(szId, szAccountID, MAX_IDSTRING);
+
+ char szCahrName[MAX_IDSTRING + 1];
+ szCahrName[MAX_IDSTRING] = '\0';
+ memcpy(szCahrName, szName, MAX_IDSTRING);
+
+ if (strlen(szCahrName) == 0 || strlen(szCahrName) > MAX_IDSTRING || strlen(szId) == 0 || strlen(szId) > MAX_IDSTRING)
+ {
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szCahrName, __FILE__, __LINE__);
+ return FALSE;
+ }
+
CString qSql;
- char szCahrName[11];
- char szId[11];
-
- szId[10] = 0;
- memcpy(szId, szAccountID, 0xAu);
- szCahrName[10] = 0;
- memcpy(szCahrName, szName, 0xAu);
-
- if (strlen(szCahrName) && (strlen(szCahrName) <= 0xA) &&
- (strlen(szId)) && (strlen(szId) <= 0xA))
-#pragma message ("check this!!!")
- {
- qSql.Format("EXEC WZ_Set_RewardInfoOfUnityBattleField %d, '%s','%s', %d, %d, %d,% d, %d, %d ",
- btServerKind,
- szId,
- szCahrName,
- wServerCode,
- btContentsType,
- btSubContentsType,
- iItemCode,
- btItemCount,
- btTakeState);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *btResult = this->m_DBQuery.GetInt("Result");
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- LogAddTD(
- "Error-L3 [ChaosCastleFinalDBSet][WZ_Set_RewardInfoOfUnityBattleField] [%s][%s][%d][%d] Return %d,%s,%d ",
- szId,
- szCahrName,
- btContentsType,
- btTakeState,
- sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddTD("Error-L3 [UBF][WZ_Set_RewardInfoOfUnityBattleField] [%s][%s][%d][%d]",
- szId,
- szCahrName,
- btContentsType,
- btTakeState);
- this->m_DBQuery.Clear();
- result = 0;
- }
+ qSql.Format("EXEC WZ_Set_RewardInfoOfUnityBattleField %d, '%s','%s', %d, %d, %d, %d, %d, %d ", btServerKind, szId, szCahrName, wServerCode, btContentsType, btSubContentsType, iItemCode, btItemCount, btTakeState);
+
+ if (m_Query.Exec(qSql) == FALSE)
+ {
+ LogAddTD("Error-L3 [UBF][WZ_Set_RewardInfoOfUnityBattleField] [%s][%s][%d][%d]", szId, szCahrName, btContentsType, btTakeState);
+ m_Query.Clear();
+ return FALSE;
}
- else
+
+ SQLRETURN sqlReturn = m_Query.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szCahrName, __FILE__, __LINE__);
- result = 0;
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_Set_RewardInfoOfUnityBattleField] [%s][%s][%d][%d] Return %d,%s,%d ", szId, szCahrName, btContentsType, btTakeState, sqlReturn, __FILE__, __LINE__);
+ m_Query.Clear();
+ return FALSE;
}
- return result;
+
+ btResult = m_Query.GetInt("Result");
+
+ m_Query.Clear();
+ return TRUE;
}
\ No newline at end of file
diff --git a/DataServer/DbSet/ChaosCastleFinalDBSet.h b/DataServer/DbSet/ChaosCastleFinalDBSet.h
index 77ec83d..eeaddd0 100644
--- a/DataServer/DbSet/ChaosCastleFinalDBSet.h
+++ b/DataServer/DbSet/ChaosCastleFinalDBSet.h
@@ -1,33 +1,40 @@
+#ifndef __CHAOSCASTLEFINALDBSET_H__
+#define __CHAOSCASTLEFINALDBSET_H__
#pragma once
-//#include "Include\ProDef.h"
-#include "..\Include\Sprodef.h"
+#include "..\Include\Sprodef.h"
#include "DBConBase.h"
class ChaosCastleFinalDBSet : public CDBConBase
{
public:
-
ChaosCastleFinalDBSet();
virtual ~ChaosCastleFinalDBSet();
- int Connect();
- int ReqCCFRanking(_stCCFRankingInfo *CCFRankingInfo, int nCCFtype, char *btUserCount, int nServerCategory); // idb
- void Save_CCF_Point(char *Name, int nPoint, int nCCFType); // idb
- int CCFRankRenew(char byCCFType); // idb
- void GetPermission(char *Name, int nCCFType, int *nReturn); // idb
- int Save_ChaosCastle_KillPoint(char *szName, int nPoint, int CastleIndex, int *SubResult, int *CurrntPoint, int *TotalPoint); // idb
- int GetUBFAccountUserInfo(char *szAccountID, char *szName, int nServerCode, int IsUnityBattleFieldServer, PMSG_ANS_UBF_ACCOUNT_USERINFO *pMsg); // idb
- int RegisterUBFAccountUser(char *szAccountID, char *szName, char *szBattleName, int nServerCode, int nRegisterState, int nRegisterMonth, int nRegisterDay, char *nResult, unsigned __int16 *nLeftSec); // idb
- bool CopyUBFAccountUser(char *szAccountID, char *szName, __int16 GameServerCode, BYTE* subResult); // idb
- bool CopyUBFAccountUserPromotionMode(char *szAccountID, char *szName, __int16 GameServerCode, BYTE* subResult); // idb
- int GetWinAllRewardInfoOfUBF(char *szCharName, int nServerCode, char btServerKind, char btContentsType, PMSG_ANS_UBF_GET_REWARD *pMsg); // idb
- int SetReceivedWinnerItemOfUBF(char *szCharName, int nServerCode, char btReceived, char *SubResult); // idb
- int SetCancelToJionUnityBattlefiled(char *szAccountID, char *szName, __int16 GameServerCode, char *subResult); // idb
- char DeleteCharacterUnityBattlefiled(char *szAccountID, char *szName, __int16 GameServerCode); // idb
- int GetRealNameAndServerCode(char *szUBFName, PMSG_ANS_GET_UBF_REAL_NAME *pMsg); // idb
- int GetRealNameAndServerCode(char *szUBFName, char *szRealName, int *ServerCode, int IsUBFServer); // idb
- int SetRewardInfoOfUnityBattleField(char *btResult, char btServerKind, char *szAccountID, char *szName, __int16 wServerCode, char btContentsType, char btSubContentsType, int iItemCode, char btItemCount, char btTakeState); // idb
-
-};
\ No newline at end of file
+ BOOL Connect();
+
+ BOOL ReqCCFRanking(_stCCFRankingInfo* CCFRankingInfo, int nCCFtype, BYTE& btUserCount, int nServerCategory);
+ void Save_CCF_Point(char* Name, int nPoint, int nCCFType);
+ BOOL CCFRankRenew(BYTE byCCFType);
+ void GetPermission(char* Name, int nCCFType, int& nReturn);
+
+ BOOL Save_ChaosCastle_KillPoint(char* szName, int nPoint, int CastleIndex, int& SubResult, int& CurrntPoint, int& TotalPoint);
+
+ BOOL GetUBFAccountUserInfo(char* szAccountID, char* szName, int nServerCode, BOOL IsUnityBattleFieldServer, LPPMSG_ANS_UBF_ACCOUNT_USERINFO pMsg);
+ BOOL RegisterUBFAccountUser(char* szAccountID, char* szName, char* szBattleName, int nServerCode, int nRegisterState, int nRegisterMonth, int nRegisterDay, BYTE& nResult, WORD& nLeftSec);
+ BOOL CopyUBFAccountUser(char* szAccountID, char* szName, WORD GameServerCode, BYTE& subResult);
+ BOOL CopyUBFAccountUserPromotionMode(char* szAccountID, char* szName, WORD GameServerCode, BYTE& subResult);
+ BOOL GetWinAllRewardInfoOfUBF(char* szCharName, int nServerCode, BYTE btServerKind, BYTE btContentsType, LPPMSG_ANS_UBF_GET_REWARD pMsg);
+ BOOL SetReceivedWinnerItemOfUBF(char* szCharName, int nServerCode, BYTE btReceived, BYTE& SubResult);
+ BOOL SetCancelToJionUnityBattlefiled(char* szAccountID, char* szName, WORD GameServerCode, BYTE& subResult);
+ BYTE DeleteCharacterUnityBattlefiled(char* szAccountID, char* szName, WORD GameServerCode);
+ BOOL GetRealNameAndServerCode(char* szUBFName, LPPMSG_ANS_GET_UBF_REAL_NAME pMsg);
+ BOOL GetRealNameAndServerCode(char* szUBFName, char* szRealName, int* ServerCode, BOOL IsUBFServer);
+ BOOL SetRewardInfoOfUnityBattleField(BYTE& btResult, BYTE btServerKind, char* szAccountID, char* szName, WORD wServerCode, BYTE btContentsType, BYTE btSubContentsType, int iItemCode, BYTE btItemCount, BYTE btTakeState);
+
+public:
+ CQuery m_Query;
+};
+
+#endif
\ No newline at end of file
diff --git a/DataServer/DbSet/CharDBSet.cpp b/DataServer/DbSet/CharDBSet.cpp
index 75cb2c2..f3f47fa 100644
--- a/DataServer/DbSet/CharDBSet.cpp
+++ b/DataServer/DbSet/CharDBSet.cpp
@@ -1,60 +1,50 @@
-// CharDBSet.cpp: implementation of the CCharDBSet class.
-// Decompilation Completed -> All Same as WebZen
-//////////////////////////////////////////////////////////////////////
-
-#include "stdafx.h"
+#include "stdafx.h"
#include "CharDBSet.h"
#include "..\MainFrm.h"
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
-
CCharDBSet::CCharDBSet()
{
-
}
CCharDBSet::~CCharDBSet()
{
-
}
BOOL CCharDBSet::Connect()
{
- if( m_DBQuery.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass) == FALSE )
+ if (m_DBQuery.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass) == FALSE)
{
MsgBox("Character DB Connect Fail");
return FALSE;
}
- if(this->CheckSP_WZ_CreateCharacterGetVersion() == FALSE)
+ if (CheckSP_WZ_CreateCharacterGetVersion() == FALSE)
{
- MsgBox("Error : WZ_CreateChracter Stored Procedure Version : %d", this->m_CreateCharacterVer);
+ MsgBox("Error : WZ_CreateChracter Stored Procedure Version : %d", m_CreateCharacterVer);
return FALSE;
}
- this->DefaultCreateCharacterAllDelete();
+ DefaultCreateCharacterAllDelete();
+ DefaultCharacterCreate(DB_CLASS_TYPE_WIZARD);
+ DefaultCharacterCreate(DB_CLASS_TYPE_KNIGHT);
+ DefaultCharacterCreate(DB_CLASS_TYPE_ELF);
+ DefaultCharacterCreate(DB_CLASS_TYPE_MAGUMSA);
+ DefaultCharacterCreate(DB_CLASS_TYPE_DARKLORD);
+ DefaultCharacterCreate(DB_CLASS_TYPE_SUMMONER);
+ DefaultCharacterCreate(DB_CLASS_TYPE_MONK);
+ DefaultCharacterCreate(DB_CLASS_TYPE_GROWLANCER);
- this->DefaultCharacterCreate(DB_CLASS_TYPE_WIZARD);
- this->DefaultCharacterCreate(DB_CLASS_TYPE_KNIGHT);
- this->DefaultCharacterCreate(DB_CLASS_TYPE_ELF);
- this->DefaultCharacterCreate(DB_CLASS_TYPE_MAGUMSA);
- this->DefaultCharacterCreate(DB_CLASS_TYPE_DARKLORD);
- this->DefaultCharacterCreate(DB_CLASS_TYPE_SUMMONER);
- this->DefaultCharacterCreate(DB_CLASS_TYPE_MONK);
- this->DefaultCharacterCreate(DB_CLASS_TYPE_LANCER);
return TRUE;
}
-BOOL CCharDBSet::GetCharacter(char *name)
+BOOL CCharDBSet::GetCharacter(char* name)
{
CString qSQL;
char buffer[256];
qSQL.Format("SELECT Name FROM Character WHERE Name='%s'", name);
- if(m_DBQuery.ExecGetStr(qSQL, buffer) == FALSE)
+ if (m_DBQuery.ExecGetStr(qSQL, buffer) == FALSE)
{
return FALSE;
}
@@ -64,72 +54,68 @@ BOOL CCharDBSet::GetCharacter(char *name)
int CCharDBSet::DeleteCharacter(char* AccoundID, char* CharacterID)
{
- if( strlen(CharacterID) < 1)
+ if (strlen(CharacterID) < 1)
{
return 3;
}
CString qSql;
-
qSql.Format("DELETE FROM Character WHERE AccountID='%s' AND Name='%s' ", AccoundID, CharacterID);
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return 2;
}
m_DBQuery.Clear();
-
return 1;
}
int CCharDBSet::DeleteCharacter_DregInfo(char* CharacterID)
{
CString qSql;
-
qSql.Format("EXEC WZ_Delete_C_DregInfo '%s'", CharacterID);
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return 2;
}
m_DBQuery.Clear();
-
return 1;
}
int CCharDBSet::CreateCharacter(CString accountId, CString Name, BYTE Class)
{
CString qSql;
-
int result = 3;
qSql.Format("WZ_CreateCharacter '%s', '%s', '%d'", accountId, Name, Class);
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
- if (gbIsJumpingServer)
- {
- this->CreateCharacterMoneyUpdate(Name);
- }
return result;
}
- if(m_DBQuery.Fetch() != SQL_NO_DATA)
+ if (m_DBQuery.Fetch() != SQL_NO_DATA)
{
result = m_DBQuery.GetInt(1);
}
m_DBQuery.Clear();
+ if (gbIsJumpingServer != FALSE)
+ {
+ CreateCharacterMoneyUpdate(Name);
+ }
+
return result;
}
-__int64 CCharDBSet::DefaultCharacterCreate(BYTE classskin)
+BOOL CCharDBSet::DefaultCharacterCreate(BYTE classskin)
{
CharacterInfo_Struct tCharInfo;
BYTE defclass;
@@ -137,7 +123,7 @@ __int64 CCharDBSet::DefaultCharacterCreate(BYTE classskin)
defclass = classskin >> 4;
- if(defclass > MAX_CLASSTYPE-1)
+ if (defclass > MAX_CLASSTYPE - 1)
{
MsgBox("error-L3 : Class over value %s %d", __FILE__, __LINE__);
defclass = CLASS_KNIGHT;
@@ -164,49 +150,41 @@ __int64 CCharDBSet::DefaultCharacterCreate(BYTE classskin)
tCharInfo.PkLevel = PK_LEVEL_DEFAULT;
tCharInfo.PkTime = 0;
-#ifdef PERSONAL_SHOP_20040113
- for (n = 0; n < MAX_INVENTORY_EXTEND; n++)
- {
- memset(&tCharInfo.dbInventory[MAX_ITEMDBBYTE * n], 0xFF, MAX_ITEMDBBYTE);
- }
-#else
for (n = 0; n < MAX_INVENTORY; n++)
{
memset(&tCharInfo.dbInventory[MAX_ITEMDBBYTE * n], 0xFF, MAX_ITEMDBBYTE);
}
-#endif
- for ( n = 0; n < MAX_MAGIC; n++ )
+ for (n = 0; n < MAX_MAGIC; n++)
{
tCharInfo.dbMagicList[3 * n] = 0xFF;
tCharInfo.dbMagicList[3 * n + 1] = 0;
tCharInfo.dbMagicList[3 * n + 2] = 0;
}
-
- for ( n = 0; n < MAX_DBQUEST; n++ )
+
+ for (n = 0; n < MAX_DBQUEST; n++)
{
tCharInfo.dbQuest[n] = 0xFF;
}
- if(defclass == CLASS_WIZARD)
+ if (defclass == CLASS_WIZARD)
{
tCharInfo.dbMagicList[0] = AT_SKILL_ENERGYBALL;
}
- if(defclass == CLASS_DARKLORD)
+ if (defclass == CLASS_DARKLORD)
{
tCharInfo.dbMagicList[0] = AT_SKILL_SPEAR;
}
- ItemByteConvert16(tCharInfo.dbInventory, DCInfo.DefClass[defclass].Equipment, MAX_EQUIPMENT+2);
-
- this->DefaultCreateCharacterInsert(&tCharInfo);
+ ItemByteConvert16(tCharInfo.dbInventory, DCInfo.DefClass[defclass].Equipment, MAX_EQUIPMENT + 3);
+ DefaultCreateCharacterInsert(&tCharInfo);
return TRUE;
}
void CCharDBSet::SetSP_WZ_CreateCharacterGetVersion(int version)
{
- this->m_CreateCharacterVer = version;
+ m_CreateCharacterVer = version;
}
BOOL CCharDBSet::CheckSP_WZ_CreateCharacterGetVersion()
@@ -216,16 +194,16 @@ BOOL CCharDBSet::CheckSP_WZ_CreateCharacterGetVersion()
qSql.Format("exec WZ_CreateCharacter_GetVersion");
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
return FALSE;
}
- if(m_DBQuery.Fetch() != SQL_NO_DATA)
+ if (m_DBQuery.Fetch() != SQL_NO_DATA)
{
version = m_DBQuery.GetInt(1);
- if(version == this->m_CreateCharacterVer)
+ if (version == m_CreateCharacterVer)
{
m_DBQuery.Clear();
return TRUE;
@@ -233,34 +211,32 @@ BOOL CCharDBSet::CheckSP_WZ_CreateCharacterGetVersion()
}
m_DBQuery.Clear();
-
return FALSE;
}
BOOL CCharDBSet::DefaultCreateCharacterAllDelete()
{
- if(m_DBQuery.Exec("DELETE FROM DefaultClassType") == FALSE)
+ if (m_DBQuery.Exec("DELETE FROM DefaultClassType") == FALSE)
{
LogAddTD("error-L3 : DELETE FROM DefaultClassType %s %d", __FILE__, __LINE__);
return FALSE;
}
+
return TRUE;
}
BOOL CCharDBSet::DefaultCreateCharacterInsert(LPCharacterInfo_Struct lpObj)
{
CString qSql;
-
qSql.Format("INSERT INTO DefaultClassType (Level, Class, Strength, Dexterity, Vitality, Energy, Life, MaxLife, Mana, MaxMana, MapNumber, MapPosX, MapPosY, DbVersion, LevelUpPoint,Leadership) VALUES (%d,%d,%d,%d,%d, %d, %f,%f,%f,%f, %d,%d,%d, %d, %d, %d)",
lpObj->Level, lpObj->Class, lpObj->Strength, lpObj->Dexterity, lpObj->Vitality, lpObj->Energy, lpObj->Life, lpObj->MaxLife, lpObj->Mana, lpObj->MaxMana, lpObj->MapNumber, lpObj->MapX, lpObj->MapY, 3, lpObj->LevelUpPoint, lpObj->Leadership);
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
return FALSE;
}
- //qSql.Format("UPDATE DefaultClassType SET Inventory=? where Class=%d", lpObj->Class);
- qSql.Format("WZ_SetDefaultCharacter %d, ?",lpObj->Class);
+ qSql.Format("WZ_SetDefaultCharacter %d, ?", lpObj->Class);
m_DBQuery.WriteBlob(qSql, lpObj->dbInventory, MAX_DBINVENTORY);
qSql.Format("UPDATE DefaultClassType SET MagicList=? where Class=%d", lpObj->Class);
@@ -277,7 +253,7 @@ BYTE CCharDBSet::CurCharNameSave(char* Name)
CString qSql;
qSql.Format("INSERT INTO T_CurCharName (Name) VALUES('%s')", Name);
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
return 0x00;
}
@@ -287,15 +263,10 @@ BYTE CCharDBSet::CurCharNameSave(char* Name)
BYTE CCharDBSet::SaveCharacter(char* Name, LPCharacterInfo_Struct lpObj)
{
- int sresult;
- char chBuffer[512];
- char result;
+ BYTE result = 1;
CString qSql;
- result = 1;
- strcpy(chBuffer, "UPDATE Character SET cLevel=%d, Class=%d, LevelUpPoint=%d, Experience=%d, Strength=%d, Dexterity=%d, Vitality=%d, En"
- "ergy=%d, Money=%d, Life=%f, MaxLife=%f, Mana=%f, MaxMana=%f, MapNumber=%d, MapPosX=%d, MapPosY=%d, MapDir=%d, PkCount=%d, ");
- memset(&chBuffer[239], 0, 0x111u);
+ char chBuffer[512] = "UPDATE Character SET cLevel=%d, Class=%d, LevelUpPoint=%d, Experience=%d, Strength=%d, Dexterity=%d, Vitality=%d, Energy=%d, Money=%d, Life=%f, MaxLife=%f, Mana=%f, MaxMana=%f, MapNumber=%d, MapPosX=%d, MapPosY=%d, MapDir=%d, PkCount=%d, ";
strcat(chBuffer, " PkLevel=%d, ");
strcat(chBuffer, " PkTime=%d, ");
strcat(chBuffer, " DbVersion=3, ");
@@ -305,76 +276,46 @@ BYTE CCharDBSet::SaveCharacter(char* Name, LPCharacterInfo_Struct lpObj)
strcat(chBuffer, " LDate = getdate() ");
strcat(chBuffer, " where Name = '%s' ");
- qSql.Format(chBuffer,
- lpObj->Level,
- lpObj->Class,
- lpObj->LevelUpPoint,
- lpObj->Experience,
- lpObj->Strength,
- lpObj->Dexterity,
- lpObj->Vitality,
- lpObj->Energy,
- lpObj->Money,
- lpObj->Life,
- lpObj->MaxLife,
- lpObj->Mana,
- lpObj->MaxMana,
- lpObj->MapNumber,
- lpObj->MapX,
- lpObj->MapY,
- lpObj->Dir,
- lpObj->PkCount,
- lpObj->PkLevel,
- lpObj->PkTime,
- lpObj->Leadership,
- lpObj->ChatLitmitTime,
- lpObj->FruitPoint,
- Name);
- if (this->m_DBQuery.Exec(qSql))
- {
- qSql.Format("WZ_SetSaveItem '%s', '%s', ?", lpObj->AccountID, Name);
- this->m_DBQuery.WriteBlob(qSql, lpObj->dbInventory, 3792);
- qSql.Format("UPDATE Character SET MagicList=? where Name='%s'", Name);
- this->m_DBQuery.WriteBlob(qSql, lpObj->dbMagicList, 450);
- qSql.Format("UPDATE Character SET Quest=? where Name='%s'", Name);
-
- this->m_DBQuery.WriteBlob(qSql, lpObj->dbQuest, 50);
- sresult = 1;
- }
- else
+ qSql.Format(chBuffer, lpObj->Level, lpObj->Class, lpObj->LevelUpPoint, lpObj->Experience, lpObj->Strength, lpObj->Dexterity, lpObj->Vitality, lpObj->Energy, lpObj->Money, lpObj->Life, lpObj->MaxLife, lpObj->Mana, lpObj->MaxMana, lpObj->MapNumber, lpObj->MapX, lpObj->MapY, lpObj->Dir, lpObj->PkCount, lpObj->PkLevel, lpObj->PkTime, lpObj->Leadership, lpObj->ChatLitmitTime, lpObj->FruitPoint, Name);
+
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
- sresult = 0;
+ return 0;
}
- return sresult;
- return 0x01;
+ qSql.Format("WZ_SetSaveItem '%s', '%s', ?", lpObj->AccountID, Name);
+ m_DBQuery.WriteBlob(qSql, lpObj->dbInventory, MAX_DBINVENTORY);
+
+ qSql.Format("UPDATE Character SET MagicList=? where Name='%s'", Name);
+ m_DBQuery.WriteBlob(qSql, lpObj->dbMagicList, MAX_DBMAGIC);
+
+ qSql.Format("UPDATE Character SET Quest=? where Name='%s'", Name);
+ m_DBQuery.WriteBlob(qSql, lpObj->dbQuest, MAX_DBQUEST);
+
+ return 1;
}
-//#define OLD_GETCHAR
-#ifdef OLD_GETCHAR
+
BOOL CCharDBSet::GetCharacter(char* szAccountID, char* Name, LPCharacterInfo_Struct lpObj)
{
CString qSql;
char chBuffer[512] = "SELECT AccountID, cLevel, Class, LevelUpPoint, Experience, Strength, Dexterity, Vitality, Energy, Money, Life, MaxLife, Mana, MaxMana, MapNumber, MapPosX, MapPosY, MapDir, PkCount, PkLevel, PkTime, CtlCode,";
-
strcat(chBuffer, " Leadership, ");
-
strcat(chBuffer, " ChatLimitTime, ");
strcat(chBuffer, " FruitPoint, ");
- strcat(chBuffer, " ExGameServerCode, ");
strcat(chBuffer, " ExtendedInvenCount, ");
strcat(chBuffer, " DbVersion ");
strcat(chBuffer, " FROM Character where Name = '%s' ");
qSql.Format(chBuffer, Name);
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return FALSE;
}
- if(m_DBQuery.Fetch() == SQL_NO_DATA)
+ if (m_DBQuery.Fetch() == SQL_NO_DATA)
{
m_DBQuery.Clear();
return FALSE;
@@ -382,7 +323,7 @@ BOOL CCharDBSet::GetCharacter(char* szAccountID, char* Name, LPCharacterInfo_Str
m_DBQuery.GetStr("AccountID", lpObj->AccountID);
- if( strcmp(lpObj->AccountID, szAccountID) != 0)
+ if (strcmp(lpObj->AccountID, szAccountID) != 0)
{
LogAddC(LOGC_RED, "error-L1 :ij¸¯ÅÍÀÇ °èÁ¤°ú ¿äûÇÑ °èÁ¤ÀÌ ¸ÂÁö¾Ê´Ù.%s %s", lpObj->AccountID, szAccountID);
m_DBQuery.Clear();
@@ -412,65 +353,64 @@ BOOL CCharDBSet::GetCharacter(char* szAccountID, char* Name, LPCharacterInfo_Str
int ctlcode = m_DBQuery.GetInt("CtlCode");
- if(ctlcode < 0)
+ if (ctlcode < 0)
{
ctlcode = 0;
}
lpObj->CtlCode = ctlcode;
-
+
int dbversion = m_DBQuery.GetInt("DbVersion");
-
- if(dbversion < 0)
+
+ if (dbversion < 0)
{
dbversion = 0;
}
lpObj->DbVersion = dbversion;
-
+
int leadership = m_DBQuery.GetInt("Leadership");
- if(leadership < 0)
+ if (leadership < 0)
{
leadership = 0;
}
int ChatLitmitTime = m_DBQuery.GetInt("ChatLimitTime");
-
- if(ChatLitmitTime < 0)
+
+ if (ChatLitmitTime < 0)
{
ChatLitmitTime = 0;
}
lpObj->Leadership = leadership;
lpObj->ChatLitmitTime = ChatLitmitTime;
-
+
int iFruitPoint = m_DBQuery.GetInt("FruitPoint");
- if(iFruitPoint < 0)
+ if (iFruitPoint < 0)
{
lpObj->FruitPoint = 0;
LogAddC(LOGC_RED, "[Fruit System] [%s][%s] Fruit Ä÷³ %d -> 0 À¸·Î ¼öÁ¤ ", lpObj->AccountID, Name, iFruitPoint);
}
+
else
{
lpObj->FruitPoint = iFruitPoint;
}
lpObj->btExtendedInvenCount = m_DBQuery.GetInt("ExtendedInvenCount");
- //lpObj->sExGameServerCode = m_DBQuery.GetInt("ExGameServerCode");
-
m_DBQuery.Clear();
- ///////////////////////////////////
+
qSql.Format("SELECT ExtendedWarehouseCount from AccountCharacter where Id='%s'", szAccountID);
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return FALSE;
}
- if(m_DBQuery.Fetch() == SQL_NO_DATA)
+ if (m_DBQuery.Fetch() == SQL_NO_DATA)
{
m_DBQuery.Clear();
return FALSE;
@@ -478,283 +418,110 @@ BOOL CCharDBSet::GetCharacter(char* szAccountID, char* Name, LPCharacterInfo_Str
lpObj->btExtendedWarehouseCount = m_DBQuery.GetInt("ExtendedWarehouseCount");
m_DBQuery.Clear();
- ///////////////////////////////////
-
- ///////////////////////////////////
- qSql.Format("SELECT Inventory from Character where Name='%s'", Name);
+ qSql.Format("WZ_GetLoadInventory '%s', '%s'", szAccountID, Name);
int nRet = m_DBQuery.ReadBlob(qSql, lpObj->dbInventory);
- if(nRet == 0)
+ if (nRet == 0)
{
- for(int n = 0; n < MAX_DBINVENTORY; n++)
+ for (int i = 0; i < MAX_DBINVENTORY; i++)
{
- lpObj->dbInventory[n] = 0xFF;
+ lpObj->dbInventory[i] = 0xFF;
}
}
- else if(nRet == -1)
+
+ else if (nRet == -1)
{
return FALSE;
}
- else if(nRet == 760)
+
+ else if (nRet == 760)
{
- for(int n = 760; n < MAX_DBINVENTORY; n++)
+ for (int i = 760; i < MAX_DBINVENTORY; i++)
{
- lpObj->dbInventory[n] = 0xFF;
+ lpObj->dbInventory[i] = 0xFF;
}
}
- else if(nRet > 0 && nRet < MAX_DBINVENTORY)
+
+ else if (nRet > 0 && nRet < MAX_DBINVENTORY)
{
- for(int n = nRet; n < MAX_DBINVENTORY; n++)
+ for (int i = nRet; i < MAX_DBINVENTORY; i++)
{
- lpObj->dbInventory[n] = 0xFF;
+ lpObj->dbInventory[i] = 0xFF;
}
}
- ///////////////////////////////////
- ///////////////////////////////////
qSql.Format("SELECT MagicList from Character where Name='%s'", Name);
nRet = m_DBQuery.ReadBlob(qSql, lpObj->dbMagicList);
- if(nRet == 0)
+ if (nRet == 0)
{
- for (int n = 0; n < MAX_MAGIC; n++ )
+ for (int n = 0; n < MAX_MAGIC; n++)
{
lpObj->dbMagicList[3 * n] = 0xFF;
lpObj->dbMagicList[3 * n + 1] = 0;
lpObj->dbMagicList[3 * n + 2] = 0;
}
}
- else if(nRet == -1)
+
+ else if (nRet == -1)
{
return FALSE;
}
- else if(nRet > 0 && nRet < MAX_DBMAGIC)
- {
- int n = nRet;
- while(n < MAX_DBMAGIC)
+ else if (nRet > 0 && nRet < MAX_MAGIC)
+ {
+ for (int i = nRet; i < MAX_MAGIC; i += 3)
{
- lpObj->dbMagicList[n] = 0xFF;
- lpObj->dbMagicList[n + 1] = 0;
- lpObj->dbMagicList[n + 2] = 0;
- n += 3;
+ lpObj->dbMagicList[i] = 0xFF;
+ lpObj->dbMagicList[i + 1] = 0;
+ lpObj->dbMagicList[i + 2] = 0;
}
}
- ///////////////////////////////////
- ///////////////////////////////////
qSql.Format("SELECT Quest from Character where Name='%s'", Name);
nRet = m_DBQuery.ReadBlob(qSql, lpObj->dbQuest);
- if(nRet == 0)
+ if (nRet == 0)
{
- for (int n = 0; n < MAX_DBQUEST; n++ )
+ for (int i = 0; i < MAX_DBQUEST; i++)
{
- lpObj->dbQuest[n] = 0xFF;
+ lpObj->dbQuest[i] = 0xFF;
}
}
- else if(nRet == -1)
- {
- return FALSE;
- }
- ///////////////////////////////////
-
- return TRUE;
-}
-#else
-int CCharDBSet::GetCharacter(char *szAccountID, char *Name, CharacterInfo_Struct *lpObj)
-{
- CString qSql;
-
- char chBuffer[512] = "SELECT AccountID, cLevel, Class, LevelUpPoint, Experience, Strength, Dexterity, Vitality, Energy, Money, Life, MaxLife, Mana, MaxMana, MapNumber, MapPosX, MapPosY, MapDir, PkCount, PkLevel, PkTime, CtlCode,";
-
- strcat(chBuffer, " Leadership, ");
- strcat(chBuffer, " ChatLimitTime, ");
- strcat(chBuffer, " FruitPoint, ");
- strcat(chBuffer, " ExtendedInvenCount, ");
- strcat(chBuffer, " DbVersion ");
- strcat(chBuffer, " FROM Character where Name = '%s' ");
-
- qSql.Format(chBuffer, Name);
- if (!this->m_DBQuery.Exec(qSql))
+ else if (nRet == -1)
{
- this->m_DBQuery.Clear();
- return 0;
- }
- if (this->m_DBQuery.Fetch() == SQL_NO_DATA)
- {
- this->m_DBQuery.Clear();
- return 0;
- }
- this->m_DBQuery.GetStr("AccountID", lpObj->AccountID);
-
- if (strcmp(lpObj->AccountID, szAccountID) != 0)
- {
- LogAddC(LOGC_RED, "error-L1 :ij¸¯ÅÍÀÇ °èÁ¤°ú ¿äûÇÑ °èÁ¤ÀÌ ¸ÂÁö¾Ê´Ù.%s %s", lpObj->AccountID, szAccountID);
- this->m_DBQuery.Clear();
- return 0;
- }
- lpObj->Level = this->m_DBQuery.GetInt("cLevel");
- lpObj->Class = this->m_DBQuery.GetInt("Class");
- lpObj->LevelUpPoint = this->m_DBQuery.GetInt("LevelUpPoint");
- lpObj->Experience = this->m_DBQuery.GetInt("Experience");
- lpObj->Strength = this->m_DBQuery.GetInt("Strength");
- lpObj->Dexterity = this->m_DBQuery.GetInt("Dexterity");
- lpObj->Vitality = this->m_DBQuery.GetInt("Vitality");
- lpObj->Energy = this->m_DBQuery.GetInt("Energy");
- lpObj->Money = this->m_DBQuery.GetInt("Money");
- lpObj->Life = this->m_DBQuery.GetFloat("Life");
- lpObj->MaxLife = this->m_DBQuery.GetFloat("MaxLife");
- lpObj->Mana = this->m_DBQuery.GetFloat("Mana");
- lpObj->MaxMana = this->m_DBQuery.GetFloat("MaxMana");
- lpObj->MapNumber = this->m_DBQuery.GetInt("MapNumber");
- lpObj->MapX = this->m_DBQuery.GetInt("MapPosX");
- lpObj->MapY = this->m_DBQuery.GetInt("MapPosY");
- lpObj->Dir = this->m_DBQuery.GetInt("MapDir");
- lpObj->PkCount = this->m_DBQuery.GetInt("PkCount");
- lpObj->PkLevel = this->m_DBQuery.GetInt("PkLevel");
- lpObj->PkTime = this->m_DBQuery.GetInt("PkTime");
- int ctlcode = this->m_DBQuery.GetInt("CtlCode");
-
- if (ctlcode < 0)
- ctlcode = 0;
- lpObj->CtlCode = ctlcode;
- int dbversion = this->m_DBQuery.GetInt("DbVersion");
- if (dbversion < 0)
- dbversion = 0;
- lpObj->DbVersion = dbversion;
- int leadership = this->m_DBQuery.GetInt("Leadership");
- if (leadership < 0)
- leadership = 0;
- int ChatLitmitTime = this->m_DBQuery.GetInt("ChatLimitTime");
- if (ChatLitmitTime < 0)
- ChatLitmitTime = 0;
- lpObj->Leadership = leadership;
- lpObj->ChatLitmitTime = ChatLitmitTime;
- int iFruitPoint = this->m_DBQuery.GetInt("FruitPoint");
- if (iFruitPoint >= 0)
- {
- lpObj->FruitPoint = iFruitPoint;
- }
- else
- {
- lpObj->FruitPoint = 0;
- LogAddC(LOGC_RED, "[Fruit System] [%s][%s] Fruit Ä÷³ %d -> 0 À¸·Î ¼öÁ¤ ", lpObj->AccountID, Name, iFruitPoint);
- }
- lpObj->btExtendedInvenCount = this->m_DBQuery.GetInt("ExtendedInvenCount");
- this->m_DBQuery.Clear();
- qSql.Format("SELECT ExtendedWarehouseCount from AccountCharacter where Id='%s'", szAccountID);
-
- if (!this->m_DBQuery.Exec(qSql))
- {
- this->m_DBQuery.Clear();
- return 0;
- }
- if (this->m_DBQuery.Fetch() == 100)
- {
- this->m_DBQuery.Clear();
- return 0;
- }
- lpObj->btExtendedWarehouseCount = this->m_DBQuery.GetInt("ExtendedWarehouseCount");
- this->m_DBQuery.Clear();
-
- qSql.Format("WZ_GetLoadInventory '%s', '%s'", szAccountID, Name);
-
- int nRet = this->m_DBQuery.ReadBlob(qSql, lpObj->dbInventory);
- if (nRet)
- {
- if (nRet == -1)
- {
- return 0;
- }
- if (nRet == 760)
- {
- for (int j = 760; j < MAX_DBINVENTORY; ++j)
- lpObj->dbInventory[j] = 0xFF;
- }
- else if (nRet > 0 && nRet < MAX_DBINVENTORY)
- {
- for (int k = nRet; k < MAX_DBINVENTORY; ++k)
- lpObj->dbInventory[k] = 0xFF;
- }
- }
- else
- {
- for (int i = 0; i < MAX_DBINVENTORY; ++i)
- lpObj->dbInventory[i] = 0xFF;
- }
- qSql.Format("SELECT MagicList from Character where Name='%s'", Name);
-
- nRet = this->m_DBQuery.ReadBlob(qSql, lpObj->dbMagicList);
- if (nRet)
- {
- if (nRet == -1)
- {
- return 0;
- }
- if (nRet > 0 && nRet < MAX_MAGIC)
- {
- for (int l = nRet; l < MAX_MAGIC; l += 3)
- {
- lpObj->dbMagicList[l] = 0xFF;
- lpObj->dbMagicList[l + 1] = 0;
- lpObj->dbMagicList[l + 2] = 0;
- }
- }
- }
- else
- {
- for (int n = 0; n < MAX_MAGIC; ++n)
- {
- lpObj->dbMagicList[3 * n] = 0xFF;
- lpObj->dbMagicList[3 * n + 1] = 0;
- lpObj->dbMagicList[3 * n + 2] = 0;
- }
- }
- qSql.Format("SELECT Quest from Character where Name='%s'", Name);
- nRet = this->m_DBQuery.ReadBlob(qSql, lpObj->dbQuest);
- if (nRet)
- {
- if (nRet == -1)
- {
- return 0;
- }
- }
- else
- {
- for (int m = 0; m < MAX_DBQUEST; ++m)
- lpObj->dbQuest[m] = 0xFF;
+ return FALSE;
}
- ///////////////////////////////////
return TRUE;
}
-#endif
-void CCharDBSet::SaveMacroInfo(char* szAccountID, char* Name, BYTE* lpMacroInfo)
+
+void CCharDBSet::SaveMacroInfo(char* szAccountID, char* Name, LPBYTE lpMacroInfo)
{
CString qSql;
qSql.Format("EXEC WZ_MACROINFO_SAVE '%s', '%s', ?", szAccountID, Name);
- m_DBQuery.WriteBlob(qSql, lpMacroInfo, 256);
+ m_DBQuery.WriteBlob(qSql, lpMacroInfo, 511);
}
-BOOL CCharDBSet::LoadMacroInfo(char* szAccountID, char* Name, BYTE* lpMacroInfo)
+BOOL CCharDBSet::LoadMacroInfo(char* szAccountID, char* Name, LPBYTE lpMacroInfo)
{
CString qSql;
qSql.Format("EXEC WZ_MACROINFO_LOAD '%s', '%s'", szAccountID, Name);
int nRet = m_DBQuery.ReadBlob(qSql, lpMacroInfo);
- if(nRet == 0)
+ if (nRet == 0)
{
- for(int n = 0; n < 256; n++)
+ for (int n = 0; n < 511; n++)
{
lpMacroInfo[n] = 0xFF;
}
}
- else if(nRet == -1)
+
+ else if (nRet == -1)
{
return FALSE;
}
@@ -762,75 +529,51 @@ BOOL CCharDBSet::LoadMacroInfo(char* szAccountID, char* Name, BYTE* lpMacroInfo)
return TRUE;
}
-BOOL CCharDBSet::SaveItem(char *Name, BYTE* ItemBuf, char *AccountId)//changed
+BOOL CCharDBSet::SaveItem(char *Name, LPBYTE ItemBuf, char *AccountId)
{
CString qSql;
- int result;
-
qSql.Format("UPDATE Character SET DbVersion=3 where Name = '%s'", Name);
- if (this->m_DBQuery.Exec(qSql))
- {
- qSql.Format("WZ_SetSaveItem '%s', '%s', ?", AccountId, Name);
- m_DBQuery.WriteBlob(qSql, ItemBuf, MAX_DBINVENTORY);
- result = 1;
-}
- else
+
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
- result = 0;
+ return FALSE;
}
- return result;
- // CString qSql;
- //
- //#ifdef ITEM_DBSIZE_EXTEND_20050706
- // qSql.Format("UPDATE Character SET DbVersion=3 where Name = '%s'", Name);
- //#elif defined(PERSONAL_SHOP_20040113)
- // qSql.Format("UPDATE Character SET DbVersion=2 where Name = '%s'", Name);
- //#else
- // qSql.Format("UPDATE Character SET DbVersion=1 where Name = '%s'", Name);
- //#endif
- //
- // if(m_DBQuery.Exec(qSql) == FALSE)
- // {
- // return FALSE;
- // }
- //
- // qSql.Format("UPDATE Character SET Inventory=? where Name='%s'", Name);
- // m_DBQuery.WriteBlob(qSql, ItemBuf, MAX_DBINVENTORY);
- //
- // return TRUE;
+
+ qSql.Format("WZ_SetSaveItem '%s', '%s', ?", AccountId, Name);
+ m_DBQuery.WriteBlob(qSql, ItemBuf, MAX_DBINVENTORY);
+
+ return TRUE;
}
-int CCharDBSet::CharServerMove(char* Name)
+BOOL CCharDBSet::CharServerMove(char* Name)
{
CString qSql;
-
qSql.Format("SP_CHARACTER_TRANSFER '%s'", Name);
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
- LogAddC(LOGC_BLUE,"SP_CHARACTER_TRANSFER error return #1");
- return 1;
+ LogAddC(LOGC_BLUE, "SP_CHARACTER_TRANSFER error return #1");
+ return TRUE;
}
- if(m_DBQuery.Fetch() == SQL_NO_DATA)
+ if (m_DBQuery.Fetch() == SQL_NO_DATA)
{
- LogAddC(LOGC_BLUE,"SP_CHARACTER_TRANSFER error return #2");
+ LogAddC(LOGC_BLUE, "SP_CHARACTER_TRANSFER error return #2");
m_DBQuery.Clear();
- return 1;
+ return TRUE;
}
int error = m_DBQuery.GetInt(1);
-
m_DBQuery.Clear();
- LogAddC(LOGC_BLUE,"SP_CHARACTER_TRANSFER result %d", error);
+ LogAddC(LOGC_BLUE, "SP_CHARACTER_TRANSFER result %d", error);
- if(error != 0)
+ if (error != 0)
{
return error;
}
- return 0;
+ return FALSE;
}
int CCharDBSet::ChangeName(char* AccountId, char* OldName, char* NewName)
@@ -840,48 +583,43 @@ int CCharDBSet::ChangeName(char* AccountId, char* OldName, char* NewName)
qSql.Format("WZ_ChangeCharacterName '%s', '%s', '%s'", AccountId, OldName, NewName);
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return 5;
}
- if(m_DBQuery.Fetch() != SQL_NO_DATA)
+ if (m_DBQuery.Fetch() != SQL_NO_DATA)
{
result = m_DBQuery.GetInt(1);
}
m_DBQuery.Clear();
-
return result;
}
int CCharDBSet::GetCharacterID(char* chName, char* chUserID)
{
CString qSql;
-
qSql.Format("SELECT AccountID FROM Character WHERE Name = '%s'", chName);
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return 1;
}
- if(m_DBQuery.Fetch() == SQL_NO_DATA)
+ if (m_DBQuery.Fetch() == SQL_NO_DATA)
{
m_DBQuery.Clear();
return 2;
}
- char chBuffer[MAX_IDSTRING+1];
-
+ char chBuffer[MAX_IDSTRING + 1];
m_DBQuery.GetStr(1, chBuffer);
-
- memcpy(chUserID, chBuffer, MAX_IDSTRING+1);
+ memcpy(chUserID, chBuffer, sizeof(chBuffer));
m_DBQuery.Clear();
-
return 0;
}
@@ -892,13 +630,13 @@ DWORD CCharDBSet::GetCharacterClass(char* chName)
qSql.Format("SELECT Class FROM Character WHERE Name = '%s'", chName);
- if(m_DBQuery.Exec(qSql) == FALSE)
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
m_DBQuery.Clear();
return -1;
}
- if(m_DBQuery.Fetch() == SQL_NO_DATA)
+ if (m_DBQuery.Fetch() == SQL_NO_DATA)
{
m_DBQuery.Clear();
return -2;
@@ -907,319 +645,277 @@ DWORD CCharDBSet::GetCharacterClass(char* chName)
dwReturn = m_DBQuery.GetInt(1);
m_DBQuery.Clear();
-
return dwReturn;
}
-//Season 12+
-void CCharDBSet::RuudToken_Update(char *AccountID, char *Name, unsigned int dwRuudCnt)
+void CCharDBSet::SaveUserSetting(char* szAccountID, LPBYTE lpSaveData)
{
- int nRetrun;
- __int16 sqlReturn;
- CString sql;
- char szCahrName[11]; // [esp+F8h] [ebp-40h]
- char szId[MAX_IDSTRING + 1]; // [esp+10Ch] [ebp-2Ch]
-
- szId[10] = 0;
- memcpy(szId, AccountID, 0xAu);
- szCahrName[10] = 0;
- memcpy(szCahrName, Name, 0xAu);
+ CString qSql;
+ qSql.Format("EXEC WZ_UserSettingInfo_Save '%s', ?", szAccountID);
- if (strlen(szCahrName) && (strlen(szCahrName) <= 0xA) &&
- (strlen(szId)) && (strlen(szId) <= 0xA))
- {
-
- sql.Format("WZ_RuudTokenUpdate '%s','%s', %d",
- szId,
- szCahrName,
- dwRuudCnt);
- if (m_DBQuery.Exec(sql))
- {
- sqlReturn = m_DBQuery.Fetch();
- if (sqlReturn != SQL_NO_DATA || sqlReturn != -1)
- {
- nRetrun = m_DBQuery.GetInt(1);
- if (nRetrun)
- {
- LogAddTD("RuudToken_Update return %d ACC:%s , Name:%s, ruud :%d ", nRetrun, szId, szCahrName, dwRuudCnt);
- LogAddTD("RuudToken_Update -1 == UpdateFail, -2 == InsertFail");
- }
- m_DBQuery.Clear();
- }
- else
- {
- LogAddTD(
- "Error-L2 [CAccountCharDBSet] [RuudToken_Update] %d, %s , %d",
- sqlReturn,__FILE__,__LINE__);
- m_DBQuery.Clear();
- }
- }
- else
- {
- LogAddTD("Error-L1 [CAccountCharDBSet][RuudToken_Update] ACC:%s NAME:%s, Ruud:%d ", szId, szCahrName, dwRuudCnt);
- m_DBQuery.Clear();
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szCahrName,__FILE__, __LINE__);
- }
+ m_DBQuery.WriteBlob(qSql, lpSaveData, 255);
}
-BOOL CCharDBSet::LoadSnsInfo(char *szAccountID, char *Name, BYTE *lpSnsInfo)
+BOOL CCharDBSet::LoadUserSetting(char* szAccountID, LPBYTE lpSaveData)
{
- int result;
CString qSql;
+ qSql.Format("EXEC WZ_UserSettingInfo_Load '%s'", szAccountID);
- qSql.Format("EXEC WZ_SnsInfo_Load '%s', '%s'",szAccountID,Name);
- int nRet = m_DBQuery.ReadBlob(qSql, lpSnsInfo);
- if (nRet)
+ int nRet = m_DBQuery.ReadBlob(qSql, lpSaveData);
+
+ if (nRet == 0)
{
- if (nRet == -1)
+ for (int i = 0; i < 255; i++)
{
- result = 2;
- }
- else
- {
- result = 0;
+ lpSaveData[i] = 0xFF;
}
+
+ return TRUE;
}
- else
+
+ if (nRet == -1)
{
- for (int i = 0; i < 255; ++i)
- lpSnsInfo[i] = -1;
- result = 1;
+ return 2;
}
- return result;
+
+ return FALSE;
}
-int CCharDBSet::DeleteSnsInfo(char *szAccountID, char *szName)
+BOOL CCharDBSet::DeleteUserSetting(char* szAccountID)
{
-
- int result;
CString qSql;
+ qSql.Format("exec WZ_DeleteUserSettingInfo '%s', '%s'", szAccountID);
- qSql.Format("exec WZ_DeleteSnsInfo '%s', '%s'",szAccountID,szName);
-
- if (this->m_DBQuery.Exec(qSql) == 1)
- {
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
+ if (m_DBQuery.Exec(qSql) == TRUE)
{
- this->m_DBQuery.Clear();
- result = 0;
+ m_DBQuery.Clear();
+ return TRUE;
}
- return result;
+
+ m_DBQuery.Clear();
+ return FALSE;
}
-void CCharDBSet::SaveSnsInfo(char *szAccountID, char *Name, BYTE *lpSnsInfo)
+void CCharDBSet::SaveSnsInfo(char* szAccountID, char* Name, LPBYTE lpSnsInfo)
{
CString qSql;
+ qSql.Format("EXEC WZ_SnsInfo_Save '%s', '%s', ?", szAccountID, Name);
- qSql.Format("EXEC WZ_SnsInfo_Save '%s', '%s', ?",szAccountID,Name);
m_DBQuery.WriteBlob(qSql, lpSnsInfo, 255);
}
-//----- (00437040) --------------------------------------------------------
-void CCharDBSet::SaveUserSetting(char *szAccountID, BYTE *lpSaveData)
+BOOL CCharDBSet::LoadSnsInfo(char* szAccountID, char* Name, LPBYTE lpSnsInfo)
{
CString qSql;
+ qSql.Format("EXEC WZ_SnsInfo_Load '%s', '%s'", szAccountID, Name);
- qSql.Format("EXEC WZ_UserSettingInfo_Save '%s', ?",szAccountID);
- m_DBQuery.WriteBlob(qSql, lpSaveData, 255);
-}
-
-//----- (00437120) --------------------------------------------------------
-int CCharDBSet::LoadUserSetting(char *szAccountID, BYTE *lpSaveData)
-{
- int result;
- CString qSql;
+ int nRet = m_DBQuery.ReadBlob(qSql, lpSnsInfo);
- qSql.Format("EXEC WZ_UserSettingInfo_Load '%s'",szAccountID);
- int nRet = m_DBQuery.ReadBlob(qSql, lpSaveData);
- if (nRet)
+ if (nRet == 0)
{
- if (nRet == -1)
+ for (int i = 0; i < 255; i++)
{
- result = 2;
- }
- else
- {
- result = 0;
+ lpSnsInfo[i] = 0xFF;
}
+
+ return TRUE;
}
- else
+
+ if (nRet == -1)
{
- for (int i = 0; i < 255; ++i)
- lpSaveData[i] = -1;
- result = 1;
+ return 2;
}
- return result;
+
+ return FALSE;
}
-BOOL CCharDBSet::DeleteUserSetting(char *szAccountID)
+BOOL CCharDBSet::DeleteSnsInfo(char* szAccountID, char* szName)
{
- int result;
CString qSql;
-
- qSql.Format("exec WZ_DeleteUserSettingInfo '%s', '%s'",szAccountID);
+ qSql.Format("exec WZ_DeleteSnsInfo '%s', '%s'", szAccountID, szName);
- if (this->m_DBQuery.Exec(qSql) == 1)
+ if (m_DBQuery.Exec(qSql) == TRUE)
{
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- this->m_DBQuery.Clear();
- result = 0;
+ m_DBQuery.Clear();
+ return TRUE;
}
- return result;
+
+ m_DBQuery.Clear();
+ return FALSE;
}
-__int64 CCharDBSet::SaveEventInvenItem(char *Name, BYTE *ItemBuf, char *AccountId)
+BOOL CCharDBSet::SaveEventInvenItem(char* Name, LPBYTE ItemBuf, char* AccountId)
{
CString qSql;
qSql.Format("WZ_SetSaveEventInventory '%s', '%s', ?", AccountId, Name);
- this->m_DBQuery.WriteBlob(qSql, ItemBuf, 512);
- this->m_DBQuery.Clear();
+ m_DBQuery.WriteBlob(qSql, ItemBuf, MAX_DBEVENTINVENTORY);
+
+ m_DBQuery.Clear();
return TRUE;
}
-int CCharDBSet::LoadEventInvenItem(char *Name, char *ItemBuf, char *AccountId, int *DbVersion)
+BOOL CCharDBSet::LoadEventInvenItem(char* Name, char* ItemBuf, char* AccountId, int& DbVersion)
{
- int result;
CString qSql;
+ qSql.Format("WZ_GetLoadEventInventory '%s', '%s'", AccountId, Name);
- qSql.Format("WZ_GetLoadEventInventory '%s', '%s'",AccountId,Name);
-
- if (this->m_DBQuery.ReadBlob(qSql, ItemBuf) == -1)
+ int nRet = m_DBQuery.ReadBlob(qSql, ItemBuf);
+
+ if (nRet == -1)
+ {
+ m_DBQuery.Clear();
+ return FALSE;
+ }
+
+ qSql.Format("SELECT DbVersion from T_Event_Inventory where AccountID='%s'", AccountId);
+
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
- this->m_DBQuery.Clear();
- result = 0;
+ m_DBQuery.Clear();
+ return FALSE;
}
- else
+
+ if (m_DBQuery.Fetch() == SQL_NO_DATA)
{
- qSql.Format("SELECT DbVersion from T_Event_Inventory where AccountID='%s'",AccountId);
- if (this->m_DBQuery.Exec(qSql))
- {
- if (this->m_DBQuery.Fetch() == 100)
- {
- this->m_DBQuery.Clear();
- result = 0;
- }
- else
- {
- *DbVersion = this->m_DBQuery.GetInt(1);
- this->m_DBQuery.Clear();
- result = 1;
- }
- }
- else
- {
- this->m_DBQuery.Clear();
- result = 0;
- }
+ m_DBQuery.Clear();
+ return FALSE;
}
- return result;
+
+ DbVersion = m_DBQuery.GetInt(1);
+
+ m_DBQuery.Clear();
+ return TRUE;
}
-int CCharDBSet::CreateCharacterMoneyUpdate(CString Name)
+void CCharDBSet::RuudToken_Update(char* AccountID, char* Name, DWORD dwRuudCnt)
{
- int result;
+ char szId[MAX_IDSTRING + 1];
+ szId[MAX_IDSTRING] = '\0';
+ memcpy(szId, AccountID, MAX_IDSTRING);
+
+ char szCahrName[MAX_IDSTRING + 1];
+ szCahrName[MAX_IDSTRING] = '\0';
+ memcpy(szCahrName, Name, MAX_IDSTRING);
+
+ if (strlen(szCahrName) == 0 || strlen(szCahrName) > MAX_IDSTRING || strlen(szId) == 0 || strlen(szId) > MAX_IDSTRING)
+ {
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szCahrName, __FILE__, __LINE__);
+ return;
+ }
+
CString qSql;
+ qSql.Format("WZ_RuudTokenUpdate '%s','%s', %d", szId, szCahrName, dwRuudCnt);
- qSql.Format("UPDATE Character SET Money = 1000000000 WHERE Name = '%s'",Name);
-
- if (this->m_DBQuery.Exec(qSql))
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
- this->m_DBQuery.Clear();
- result = 1;
+ LogAddTD("Error-L1 [CAccountCharDBSet][RuudToken_Update] ACC:%s NAME:%s, Ruud:%d ", szId, szCahrName, dwRuudCnt);
+ m_DBQuery.Clear();
+ return;
}
- else
+
+ SQLRETURN sqlReturn = m_DBQuery.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
{
- this->m_DBQuery.Clear();
- result = 0;
+ LogAddTD("Error-L2 [CAccountCharDBSet] [RuudToken_Update] %d, %s , %d", sqlReturn, __FILE__, __LINE__);
+ m_DBQuery.Clear();
+ return;
}
- return result;
+
+ int nRetrun = m_DBQuery.GetInt(1);
+
+ if (nRetrun != 0)
+ {
+ LogAddTD("RuudToken_Update return %d ACC:%s , Name:%s, ruud :%d ", nRetrun, szId, szCahrName, dwRuudCnt);
+ LogAddTD("RuudToken_Update -1 == UpdateFail, -2 == InsertFail");
+ }
+
+ m_DBQuery.Clear();
}
-BOOL CCharDBSet::RestoreJumpingPkLevel(char *Name, BYTE btPkLevel)
+void CCharDBSet::RuudToken_LoadCount(char* AccountID, char* Name, int& nRuudCnt)
{
- int result;
- CString qSql;
+ char szId[MAX_IDSTRING + 1];
+ szId[MAX_IDSTRING] = '\0';
+ memcpy(szId, AccountID, MAX_IDSTRING);
- qSql.Format("UPDATE Character SET PkLevel = %d WHERE Name = '%s'",
- btPkLevel,
- Name);
+ char szCahrName[MAX_IDSTRING + 1];
+ szCahrName[MAX_IDSTRING] = '\0';
+ memcpy(szCahrName, Name, MAX_IDSTRING);
- if (this->m_DBQuery.Exec(qSql))
+ if (strlen(szCahrName) == 0 || strlen(szCahrName) > MAX_IDSTRING || strlen(szId) == 0 || strlen(szId) > MAX_IDSTRING)
{
- this->m_DBQuery.Clear();
- result = 1;
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szCahrName, __FILE__, __LINE__);
+ return;
}
- else
+
+ CString q;
+ nRuudCnt = 0;
+
+ q.Format("WZ_RuudTokenLoad '%s','%s'", szId, szCahrName);
+
+ if (m_DBQuery.Exec(q) == FALSE)
{
- this->m_DBQuery.Clear();
- result = 0;
+ LogAddTD("Error-L3 [CAccountCharDBSet][WZ_RuudTokenLoad][A1] %s %s", szId, szCahrName);
+ return;
}
- return result;
-}
+
+ SQLRETURN sqlReturn = m_DBQuery.Fetch();
-void CCharDBSet::RuudToken_LoadCount(char *AccountID, char *Name, int *nRuudCnt)
-{
- __int16 sqlReturn;
- CString qSql;
- char szCahrName[11];
- char szId[MAX_IDSTRING + 1];
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ m_DBQuery.Clear();
+ LogAddTD("Error-L3 [CAccountCharDBSet][WZ_RuudTokenLoad][A2] ACC:%s,NAME:%s sqlReturn:%d File %s Line %d ", szId, szCahrName, sqlReturn, __FILE__, __LINE__);
+ return;
+ }
- szId[10] = 0;
- memcpy(szId, AccountID, 0xAu);
- szCahrName[10] = 0;
- memcpy(szCahrName, Name, 0xAu);
+ nRuudCnt = m_DBQuery.GetInt(1);
+ LogAddTD("[RuudToken_LoadCount]Acc:%s,Name:%s,Ruud:%d", szId, szCahrName, nRuudCnt);
- if (strlen(szCahrName) && (strlen(szCahrName) <= 0xA) && (strlen(szId)) && (strlen(szId) <= 0xA))
+ if (nRuudCnt == -1)
{
- *nRuudCnt = 0;
- qSql.Format("WZ_RuudTokenLoad '%s','%s'",szId,szCahrName);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- *nRuudCnt = this->m_DBQuery.GetInt(1);
- LogAddTD("[RuudToken_LoadCount]Acc:%s,Name:%s,Ruud:%d", szId, szCahrName, *nRuudCnt);
- if (*nRuudCnt == -1)
- *nRuudCnt = 0;
- this->m_DBQuery.Clear();
- }
- else
- {
- this->m_DBQuery.Clear();
- LogAddTD("Error-L3 [CAccountCharDBSet][WZ_RuudTokenLoad][A2] ACC:%s,NAME:%s sqlReturn:%d File %s Line %d ",
- szId,szCahrName,sqlReturn, __FILE__, __LINE__);
- }
- }
- else
- {
- LogAddTD("Error-L3 [CAccountCharDBSet][WZ_RuudTokenLoad][A1] %s %s", szId, szCahrName);
- }
+ nRuudCnt = 0;
}
- else
+
+ m_DBQuery.Clear();
+}
+
+BOOL CCharDBSet::CreateCharacterMoneyUpdate(CString Name)
+{
+ CString qSql;
+ qSql.Format("UPDATE Character SET Money = 1000000000 WHERE Name = '%s'",Name);
+
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
- LogAddC(2,"%s",szCahrName, __FILE__, __LINE__);
+ m_DBQuery.Clear();
+ return FALSE;
}
+
+ m_DBQuery.Clear();
+ return TRUE;
}
+BOOL CCharDBSet::RestoreJumpingPkLevel(char* Name, BYTE btPkLevel)
+{
+ CString qSql;
+ qSql.Format("UPDATE Character SET PkLevel = %d WHERE Name = '%s'", btPkLevel, Name);
-void CCharDBSet::RewardJumpingItem(char *Name, BYTE *JumpingInventoryBuf)
+ if (m_DBQuery.Exec(qSql) == FALSE)
+ {
+ m_DBQuery.Clear();
+ return FALSE;
+ }
+
+ m_DBQuery.Clear();
+ return TRUE;
+}
+
+void CCharDBSet::RewardJumpingItem(char* Name, LPBYTE JumpingInventoryBuf)
{
+ CString qSql;
+ qSql.Format("UPDATE Character SET Inventory=? where Name='%s'", Name);
- CString qSql; // [esp+D4h] [ebp-20h]
- qSql.Format("UPDATE Character SET Inventory=? where Name='%s'",Name);
- this->m_DBQuery.WriteBlob(qSql, JumpingInventoryBuf, 3776);
- this->m_DBQuery.Clear();
+ m_DBQuery.WriteBlob(qSql, JumpingInventoryBuf, MAX_DBINVENTORY - MAX_ITEMDBBYTE);
+ m_DBQuery.Clear();
}
diff --git a/DataServer/DbSet/CharDBSet.h b/DataServer/DbSet/CharDBSet.h
index 0f06566..1d0d8eb 100644
--- a/DataServer/DbSet/CharDBSet.h
+++ b/DataServer/DbSet/CharDBSet.h
@@ -1,68 +1,25 @@
-// CharDBSet.h: interface for the CCharDBSet class.
-//
-//////////////////////////////////////////////////////////////////////
-
-#if !defined(AFX_CHARDBSET_H__BED5C4C4_EA0B_4126_A05F_9584C5F0E889__INCLUDED_)
-#define AFX_CHARDBSET_H__BED5C4C4_EA0B_4126_A05F_9584C5F0E889__INCLUDED_
-
-#if _MSC_VER > 1000
+#ifndef __CHARDBSET_H__
+#define __CHARDBSET_H__
#pragma once
-#endif // _MSC_VER > 1000
-//#include "Include\ProDef.h"
#include "..\Include\Sprodef.h"
-typedef struct
+typedef struct CharacterInfo_Struct
{
- /*int registry;
- char AccountID[11];
- char Name[11];
- char Class;
- int Level;
- int LevelUpPoint;
- int Experience;
- int NextExperience;
- int Money;
- __int16 Strength;
- __int16 Dexterity;
- __int16 Vitality;
- __int16 Energy;
- __int16 Leadership;
- unsigned __int16 ChatLitmitTime;
- float Life;
- float MaxLife;
- float Mana;
- float MaxMana;
- int PkCount;
- int PkLevel;
- int PkTime;
- BYTE dbInventory[3792];
- BYTE dbMagicList[450];
- BYTE dbQuest[50];
- char MapNumber;
- char MapX;
- char MapY;
- char Dir;
- char CtlCode;
- char DbVersion;
- int FruitPoint;
- char btExtendedInvenCount;
- char btExtendedWarehouseCount;
- int iUserGuid;*/
int registry;
- char AccountID[MAX_IDSTRING+1];
- char Name[MAX_IDSTRING+1];
+ char AccountID[MAX_IDSTRING + 1];
+ char Name[MAX_IDSTRING + 1];
BYTE Class;
int Level;
int LevelUpPoint;
int Experience;
int NextExperience;
int Money;
- WORD Strength;
- WORD Dexterity;
- WORD Vitality;
- WORD Energy;
- WORD Leadership;
+ short Strength;
+ short Dexterity;
+ short Vitality;
+ short Energy;
+ short Leadership;
WORD ChatLitmitTime;
float Life;
float MaxLife;
@@ -84,50 +41,65 @@ typedef struct
BYTE btExtendedInvenCount;
BYTE btExtendedWarehouseCount;
int iUserGuid;
-}CharacterInfo_Struct, *LPCharacterInfo_Struct;
+} *LPCharacterInfo_Struct;
-class CCharDBSet
+class CCharDBSet
{
public:
CCharDBSet();
virtual ~CCharDBSet();
- BOOL Connect();//
- BOOL GetCharacter(char *name);//
- int DeleteCharacter(char* AccoundID, char* CharacterID);//
- int DeleteCharacter_DregInfo(char* CharacterID);//
- int CreateCharacter(CString accountId, CString Name, BYTE Class);//
- __int64 DefaultCharacterCreate(BYTE classskin);
- void SetSP_WZ_CreateCharacterGetVersion(int version);//
- BOOL CheckSP_WZ_CreateCharacterGetVersion();//
- BOOL DefaultCreateCharacterAllDelete();//
- BOOL DefaultCreateCharacterInsert(LPCharacterInfo_Struct lpObj);//
- BYTE CurCharNameSave(char *Name);//
- BYTE SaveCharacter(char *Name, LPCharacterInfo_Struct lpObj);//
- BOOL GetCharacter(char *szAccountID, char *Name, LPCharacterInfo_Struct lpObj);//
- void SaveMacroInfo(char *szAccountID, char* Name, BYTE* lpMacroInfo);//
- BOOL LoadMacroInfo(char *szAccountID, char* Name, BYTE* lpMacroInfo);//
- BOOL SaveItem(char *Name, BYTE* ItemBuf, char *AccountId);//
- int CharServerMove(char *Name);//
- int ChangeName(char* AccountId, char* OldName, char* NewName);//
- int GetCharacterID(char* chName, char* chUserID);//
- DWORD GetCharacterClass(char *chName);//
- void SaveUserSetting(char *szAccountID, BYTE *lpSaveData);//
- int LoadUserSetting(char *szAccountID, BYTE *lpSaveData);//
- BOOL DeleteUserSetting(char *szAccountID);
- void SaveSnsInfo(char *szAccountID, char *Name, BYTE *lpSnsInfo);
- BOOL LoadSnsInfo(char *szAccountID, char *Name, BYTE *lpSnsInfo);
- BOOL DeleteSnsInfo(char *szAccountID, char *szName);
- __int64 SaveEventInvenItem(char *Name, BYTE *ItemBuf, char *AccountId);
- int LoadEventInvenItem(char *Name, char *ItemBuf, char *AccountId, int *DbVersion);
- void RuudToken_Update(char *AccountID, char *Name, unsigned int dwRuudCnt);
- void RuudToken_LoadCount(char *AccountID, char *Name, int *nRuudCnt);
- int CreateCharacterMoneyUpdate(CString Name);
- BOOL RestoreJumpingPkLevel(char *Name, BYTE btPkLevel);
- void RewardJumpingItem(char* Name, BYTE* JumpingInventoryBuf);
+ BOOL Connect();
+
+ BOOL GetCharacter(char* name);
+ int DeleteCharacter(char* AccoundID, char* CharacterID);
+ int DeleteCharacter_DregInfo(char* CharacterID);
+ int CreateCharacter(CString accountId, CString Name, BYTE Class);
+
+ BOOL DefaultCharacterCreate(BYTE classskin);
+ void SetSP_WZ_CreateCharacterGetVersion(int version);
+ BOOL CheckSP_WZ_CreateCharacterGetVersion();
+ BOOL DefaultCreateCharacterAllDelete();
+ BOOL DefaultCreateCharacterInsert(LPCharacterInfo_Struct lpObj);
+
+ BYTE CurCharNameSave(char* Name);
+
+ BYTE SaveCharacter(char* Name, LPCharacterInfo_Struct lpObj);
+ BOOL GetCharacter(char* szAccountID, char* Name, LPCharacterInfo_Struct lpObj);
+
+ void SaveMacroInfo(char* szAccountID, char* Name, LPBYTE lpMacroInfo);
+ BOOL LoadMacroInfo(char* szAccountID, char* Name, LPBYTE lpMacroInfo);
+
+ BOOL SaveItem(char* Name, LPBYTE ItemBuf, char* AccountId);
+
+ BOOL CharServerMove(char* Name);
+
+ int ChangeName(char* AccountId, char* OldName, char* NewName);
+
+ int GetCharacterID(char* chName, char* chUserID);
+ DWORD GetCharacterClass(char* chName);
+
+ void SaveUserSetting(char* szAccountID, LPBYTE lpSaveData);
+ BOOL LoadUserSetting(char* szAccountID, LPBYTE lpSaveData);
+ BOOL DeleteUserSetting(char* szAccountID);
+
+ void SaveSnsInfo(char* szAccountID, char* Name, LPBYTE lpSnsInfo);
+ BOOL LoadSnsInfo(char* szAccountID, char* Name, LPBYTE lpSnsInfo);
+ BOOL DeleteSnsInfo(char* szAccountID, char* szName);
+
+ BOOL SaveEventInvenItem(char* Name, LPBYTE ItemBuf, char* AccountId);
+ BOOL LoadEventInvenItem(char* Name, char* ItemBuf, char* AccountId, int& DbVersion);
+
+ void RuudToken_Update(char* AccountID, char* Name, DWORD dwRuudCnt);
+ void RuudToken_LoadCount(char* AccountID, char* Name, int& nRuudCnt);
+
+ BOOL CreateCharacterMoneyUpdate(CString Name);
+ BOOL RestoreJumpingPkLevel(char* Name, BYTE btPkLevel);
+ void RewardJumpingItem(char* Name, LPBYTE JumpingInventoryBuf);
+
public:
int m_CreateCharacterVer;
CQuery m_DBQuery;
};
-#endif // !defined(AFX_CHARDBSET_H__BED5C4C4_EA0B_4126_A05F_9584C5F0E889__INCLUDED_)
+#endif
diff --git a/DataServer/DbSet/CharPreviewDBSet.cpp b/DataServer/DbSet/CharPreviewDBSet.cpp
index 6602dc5..2f74216 100644
--- a/DataServer/DbSet/CharPreviewDBSet.cpp
+++ b/DataServer/DbSet/CharPreviewDBSet.cpp
@@ -1,28 +1,17 @@
-// CharPreviewDBSet.cpp: implementation of the CCharPreviewDBSet class.
-// Decompilation Completed -> All Same as WebZen
-//////////////////////////////////////////////////////////////////////
-
-#include "stdafx.h"
+#include "stdafx.h"
#include "CharPreviewDBSet.h"
-//#include "..\common\winutil.h"
-
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
CCharPreviewDBSet::CCharPreviewDBSet()
{
-
}
CCharPreviewDBSet::~CCharPreviewDBSet()
{
-
}
BOOL CCharPreviewDBSet::Conenect()
{
- if( m_DBQuery.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass) == FALSE )
+ if (m_DBQuery.Connect(3, szDbConnectDsn, szDbConnectID, szDbConnectPass) == FALSE)
{
MsgBox("CharPreviewDBSet ODBC Connect Fail");
return FALSE;
@@ -30,223 +19,121 @@ BOOL CCharPreviewDBSet::Conenect()
return TRUE;
}
-int CCharPreviewDBSet::GetChar(char *Name, char *AccountId, int *_level, int *_class, BYTE *Inventory, BYTE *_ctlcode, BYTE *_dbverstion, BYTE *_pkLevel, BYTE *_btGuildStatus)
+
+BOOL CCharPreviewDBSet::GetChar(char* Name, char* AccountId, int& _level, int& _class, LPBYTE Inventory, BYTE& _ctlcode, BYTE& _dbverstion, BYTE& _pkLevel, BYTE& _btGuildStatus)
{
- int nRet;
- int dbverstion;
- int ctlcode;
CString qSql;
- if (!SQLSyntexCheck(Name))
+ if (SQLSyntexCheck(Name) == FALSE)
{
- return 0;
+ return FALSE;
}
+
qSql.Format("SELECT Name, cLevel, Class, PkLevel, CtlCode, DbVersion FROM Character WHERE Name='%s'", Name);
- if (!this->m_DBQuery.Exec(qSql))
+
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
- this->m_DBQuery.Clear();
- return 0;
+ m_DBQuery.Clear();
+ return FALSE;
}
- if (this->m_DBQuery.Fetch() == 100)
+
+ if (m_DBQuery.Fetch() == SQL_NO_DATA)
{
- this->m_DBQuery.Clear();
- return 0;
+ m_DBQuery.Clear();
+ return FALSE;
}
- this->m_DBQuery.GetStr("Name", Name);
- *_level = this->m_DBQuery.GetInt("cLevel");
- *_class = this->m_DBQuery.GetInt("Class");
- *_pkLevel = this->m_DBQuery.GetInt("PkLevel");
- //ctlcode = this->m_DBQuery.GetInt("CtlCode");
- //if (ctlcode < 0)
- // LOBYTE(ctlcode) = 0;
- //*_ctlcode = ctlcode;
- ctlcode = m_DBQuery.GetInt("CtlCode");
+
+ m_DBQuery.GetStr("Name", Name);
+ _level = m_DBQuery.GetInt("cLevel");
+ _class = m_DBQuery.GetInt("Class");
+ _pkLevel = m_DBQuery.GetInt("PkLevel");
+
+ int ctlcode = m_DBQuery.GetInt("CtlCode");
if (ctlcode < 0)
{
ctlcode = 0;
}
- /*dbverstion = this->m_DBQuery.GetInt("DbVersion");
- if (dbverstion < 0)
- LOBYTE(dbverstion) = 0;
- *_dbverstion = dbverstion;*/
- dbverstion = m_DBQuery.GetInt("DbVersion");
+
+ int dbverstion = m_DBQuery.GetInt("DbVersion");
if (dbverstion < 0)
{
dbverstion = 0;
}
- this->m_DBQuery.Clear();
+
+ m_DBQuery.Clear();
+
qSql.Format("WZ_GetLoadInventory '%s', '%s'", AccountId, Name);
- nRet = this->m_DBQuery.ReadBlob(qSql, Inventory);
- if (nRet)
+ int nRet = m_DBQuery.ReadBlob(qSql, Inventory);
+
+ if (nRet == 0)
{
- if (nRet == -1)
- {
- return 0;
- }
+ memset(Inventory, 0xFF, 120);
}
- else
+
+ else if (nRet == -1)
{
- memset(Inventory, 255, 0x78u);
+ return FALSE;
}
- this->m_DBQuery.Clear();
- qSql.Format("SELECT G_Status FROM GuildMember WHERE Name='%s'", Name);
- *_btGuildStatus = 0xFF;
+ m_DBQuery.Clear();
+
+ qSql.Format("SELECT G_Status FROM GuildMember WHERE Name='%s'", Name);
+ _btGuildStatus = 0xFF;
if (m_DBQuery.Exec(qSql) == TRUE)
{
- if (m_DBQuery.Fetch() == SQL_NO_DATA)
+ if (m_DBQuery.Fetch() != SQL_NO_DATA)
{
- }
- else
- {
- *_btGuildStatus = m_DBQuery.GetInt("G_Status");
+ _btGuildStatus = m_DBQuery.GetInt("G_Status");
}
}
m_DBQuery.Clear();
- return 1;
+ return TRUE;
}
-//BOOL CCharPreviewDBSet::GetChar(char* Name, /*char *AccountId, */int& _level, int& _class, BYTE* Inventory, BYTE& _ctlcode, BYTE& _dbverstion, BYTE& _btGuildStatus)
-//{
-// CString qSql;
-//
-// if(SQLSyntexCheck(Name) == FALSE)
-// {
-// return FALSE;
-// }
-//
-// qSql.Format("SELECT Name, cLevel, Class, CtlCode, DbVersion FROM vCharacterPreview WHERE Name='%s'", Name);
-//
-// if(m_DBQuery.Exec(qSql) == FALSE)
-// {
-// m_DBQuery.Clear();
-// return FALSE;
-// }
-//
-// if(m_DBQuery.Fetch() == SQL_NO_DATA)
-// {
-// m_DBQuery.Clear();
-// return FALSE;
-// }
-//
-// m_DBQuery.GetStr("Name", Name);
-//
-// _level = m_DBQuery.GetInt("cLevel");
-// _class = m_DBQuery.GetInt("Class");
-//
-// int ctlcode = m_DBQuery.GetInt("CtlCode");
-//
-// if(ctlcode < 0)
-// {
-// ctlcode = 0;
-// }
-//
-// _ctlcode = ctlcode;
-//
-// int dbverstion = m_DBQuery.GetInt("DbVersion");
-//
-// if(dbverstion < 0)
-// {
-// dbverstion = 0;
-// }
-//
-// _dbverstion = dbverstion;
-//
-// /*qSql.Format("WZ_GetLoadInventory '%s', '%s'",AccountId,Name);
-//
-// m_DBQuery.ReadBlob(qSql, Inventory);*/
-//
-// m_DBQuery.Clear();
-//
-// qSql.Format("SELECT Inventory FROM Character WHERE Name='%s'", Name);
-// int nRet = m_DBQuery.ReadBlob(qSql, Inventory);
-//
-// if(nRet == 0)
-// {
-// memset(Inventory, 0xFF, 120);
-// }
-// else if(nRet == -1)
-// {
-// return FALSE;
-// }
-//
-// m_DBQuery.Clear();
-//
-//#ifdef ADD_CHARACTERLIST_GUILD_STATUS_01_20050126
-// qSql.Format("SELECT G_Status FROM GuildMember WHERE Name='%s'", Name);
-//
-// _btGuildStatus = 0xFF;
-//
-// if(m_DBQuery.Exec(qSql) == TRUE)
-// {
-// if(m_DBQuery.Fetch() == SQL_NO_DATA)
-// {
-// }
-// else
-// {
-// _btGuildStatus = m_DBQuery.GetInt("G_Status");
-// }
-// }
-//
-// m_DBQuery.Clear();
-//#endif
-//
-// return TRUE;
-//}
-
-BOOL CCharPreviewDBSet::GetRealNameAndServerCode(char *szUBFName, char *szRealName, WORD *ServerCode, int IsUBFServer)
+
+BOOL CCharPreviewDBSet::GetRealNameAndServerCode(char* szUBFName, char* szRealName, int* ServerCode, BOOL IsUBFServer)
{
- int result;
- __int16 sqlReturn;
- CString qSql;
- char szCahrUBFName[11];
+ if (m_DBQuery.IsConnected() == FALSE)
+ {
+ LogAddTD("[UBF] CQuery::IsConnected: FALSE");
+ return FALSE;
+ }
+ char szCahrUBFName[MAX_IDSTRING + 1];
+ szCahrUBFName[MAX_IDSTRING] = '\0';
+ memcpy(szCahrUBFName, szUBFName, MAX_IDSTRING);
- if (this->m_DBQuery.IsConnected())
+ if (strlen(szCahrUBFName) == 0 || strlen(szCahrUBFName) > MAX_IDSTRING)
{
- szCahrUBFName[10] = 0;
- memcpy(szCahrUBFName, szUBFName, 0xAu);
- //strlen(szCahrUBFName);
- if (strlen(szCahrUBFName) && (strlen(szCahrUBFName) <= 0xA))
- {
- qSql.Format("EXEC WZ_UnityBattleFieldGetRealName_r '%s'",szCahrUBFName);
- if (this->m_DBQuery.Exec(qSql))
- {
- sqlReturn = this->m_DBQuery.Fetch();
- if (sqlReturn != 100 && sqlReturn != -1)
- {
- this->m_DBQuery.GetStr("Name", szRealName);
- *ServerCode = this->m_DBQuery.GetInt("ServerCode");
- this->m_DBQuery.Clear();
- result = 1;
- }
- else
- {
- LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldGetRealName_r] [%s] Return %d,%s,%d ",szCahrUBFName,sqlReturn, __FILE__, __LINE__);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddTD("Error-L3 [UBF][WZ_UnityBattleFieldGetRealName_r] [%s]", szCahrUBFName);
- this->m_DBQuery.Clear();
- result = 0;
- }
- }
- else
- {
- LogAddC(2,"%s] ؎֥ ߡׯ %s %d",szUBFName, __FILE__, __LINE__);
- result = 0;
- }
+ LogAddC(LOGC_RED, "%s] ؎֥ ߡׯ %s %d", szUBFName, __FILE__, __LINE__);
+ return FALSE;
}
- else
+
+ CString qSql;
+ qSql.Format("EXEC WZ_UnityBattleFieldGetRealName_r '%s'", szCahrUBFName);
+
+ if (m_DBQuery.Exec(qSql) == FALSE)
{
- LogAddTD("[UBF] CQuery::IsConnected: FALSE");
- result = 0;
+ LogAddTD("Error-L3 [UBF][WZ_UnityBattleFieldGetRealName_r] [%s]", szCahrUBFName);
+ m_DBQuery.Clear();
+ return FALSE;
}
- return result;
+
+ SQLRETURN sqlReturn = m_DBQuery.Fetch();
+
+ if (sqlReturn == SQL_NO_DATA || sqlReturn == SQL_NULL_DATA)
+ {
+ LogAddTD("Error-L3 [ChaosCastleFinalDBSet][WZ_UnityBattleFieldGetRealName_r] [%s] Return %d,%s,%d ", szCahrUBFName, sqlReturn, __FILE__, __LINE__);
+ m_DBQuery.Clear();
+ return FALSE;
+ }
+
+ m_DBQuery.GetStr("Name", szRealName);
+ *ServerCode = m_DBQuery.GetInt("ServerCode");
+
+ m_DBQuery.Clear();
+ return TRUE;
}
\ No newline at end of file
diff --git a/DataServer/DbSet/CharPreviewDBSet.h b/DataServer/DbSet/CharPreviewDBSet.h
index 897fe1c..854814e 100644
--- a/DataServer/DbSet/CharPreviewDBSet.h
+++ b/DataServer/DbSet/CharPreviewDBSet.h
@@ -1,27 +1,20 @@
-// CharPreviewDBSet.h: interface for the CCharPreviewDBSet class.
-//
-//////////////////////////////////////////////////////////////////////
-
-#if !defined(AFX_CHARPREVIEWDBSET_H__9278C328_E1A7_449D_B695_72E6CCBBFF97__INCLUDED_)
-#define AFX_CHARPREVIEWDBSET_H__9278C328_E1A7_449D_B695_72E6CCBBFF97__INCLUDED_
-
-#if _MSC_VER > 1000
+#ifndef __CHARPREVIEWDBSET_H__
+#define __CHARPREVIEWDBSET_H__
#pragma once
-#endif // _MSC_VER > 1000
-class CCharPreviewDBSet
+class CCharPreviewDBSet
{
public:
CCharPreviewDBSet();
virtual ~CCharPreviewDBSet();
BOOL Conenect();
- //BOOL GetChar(char* Name, /*char *AccountId, */int& _level, int& _class, BYTE* Inventory, BYTE& _ctlcode, BYTE& _dbverstion, BYTE& _btGuildStatus);
- BOOL GetChar(char *Name, char *AccountId, int *_level, int *_class, BYTE *Inventory, BYTE *_ctlcode, BYTE *_dbverstion, BYTE *_pkLevel, BYTE *_btGuildStatus); // idb
- BOOL GetRealNameAndServerCode(char *szUBFName, char *szRealName, WORD *ServerCode, int IsUBFServer);//s12
+
+ BOOL GetChar(char* Name, char* AccountId, int& _level, int& _class, LPBYTE Inventory, BYTE& _ctlcode, BYTE& _dbverstion, BYTE& _pkLevel, BYTE& _btGuildStatus);
+ BOOL GetRealNameAndServerCode(char* szUBFName, char* szRealName, int* ServerCode, BOOL IsUBFServer);
public:
CQuery m_DBQuery;
};
-#endif // !defined(AFX_CHARPREVIEWDBSET_H__9278C328_E1A7_449D_B695_72E6CCBBFF97__INCLUDED_)
+#endif
\ No newline at end of file
diff --git a/DataServer/DbSet/CrywolfDBSet.cpp b/DataServer/DbSet/CrywolfDBSet.cpp
index 335f7cf..32f332c 100644
--- a/DataServer/DbSet/CrywolfDBSet.cpp
+++ b/DataServer/DbSet/CrywolfDBSet.cpp
@@ -1,28 +1,17 @@
-// CrywolfDBSet.cpp: implementation of the CCrywolfDBSet class.
-// Decompilation Completed -> All Same as WebZen
-//////////////////////////////////////////////////////////////////////
-
#include "stdafx.h"
-#ifdef MU_CRYWOLF_DS_PROTOCOL_20050505
#include "CrywolfDBSet.h"
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
-
CCrywolfDBSet::CCrywolfDBSet()
{
-
}
CCrywolfDBSet::~CCrywolfDBSet()
{
-
}
BOOL CCrywolfDBSet::Connect()
{
- return this->CDBConBase::Connect(szDbConnectID, szDbConnectPass);
+ return CDBConBase::Connect(szDbConnectID, szDbConnectPass);
}
BOOL CCrywolfDBSet::DSDB_QueryCrywolfStateUpdate()
@@ -33,43 +22,38 @@ BOOL CCrywolfDBSet::DSDB_QueryCrywolfStateUpdate()
BOOL CCrywolfDBSet::DSDB_QueryCrywolfInfoLoad(int iMapSvrGroup, LPCWP_ANS_CRYWOLFINFOLOAD lpAnsMsg)
{
CString szQuery;
-
szQuery.Format("EXEC WZ_CW_InfoLoad %d", iMapSvrGroup);
- if(this->m_DBQuery.Exec(szQuery) == FALSE)
+ if (m_DBQuery.Exec(szQuery) == FALSE)
{
- this->m_DBQuery.Clear();
+ m_DBQuery.Clear();
return TRUE;
}
- if(this->m_DBQuery.Fetch() == SQL_NO_DATA)
+ if (m_DBQuery.Fetch() == SQL_NO_DATA)
{
- this->m_DBQuery.Clear();
+ m_DBQuery.Clear();
return TRUE;
}
- lpAnsMsg->iOccupationState = this->m_DBQuery.GetInt("CRYWOLF_OCCUFY");
- lpAnsMsg->iCrywolfState = this->m_DBQuery.GetInt("CRYWOLF_STATE");
-
- this->m_DBQuery.Clear();
+ lpAnsMsg->iOccupationState = m_DBQuery.GetInt("CRYWOLF_OCCUFY");
+ lpAnsMsg->iCrywolfState = m_DBQuery.GetInt("CRYWOLF_STATE");
+ m_DBQuery.Clear();
return FALSE;
}
BOOL CCrywolfDBSet::DSDB_QueryCrywolfInfoSave(int iMapSvrGroup, LPCWP_REQ_CRYWOLFINFOSAVE lpReqMsg)
{
CString szQuery;
-
szQuery.Format("EXEC WZ_CW_InfoSave %d, %d, %d", iMapSvrGroup, lpReqMsg->iCrywolfState, lpReqMsg->iOccupationState);
- if(this->m_DBQuery.Exec(szQuery) == FALSE)
+ if (m_DBQuery.Exec(szQuery) == FALSE)
{
- this->m_DBQuery.Clear();
+ m_DBQuery.Clear();
return TRUE;
}
- this->m_DBQuery.Clear();
-
+ m_DBQuery.Clear();
return FALSE;
-}
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/DataServer/DbSet/CrywolfDBSet.h b/DataServer/DbSet/CrywolfDBSet.h
index 149b6f5..c336c99 100644
--- a/DataServer/DbSet/CrywolfDBSet.h
+++ b/DataServer/DbSet/CrywolfDBSet.h
@@ -1,17 +1,8 @@
-// CrywolfDBSet.h: interface for the CCrywolfDBSet class.
-//
-//////////////////////////////////////////////////////////////////////
-
-#if !defined(AFX_CRYWOLFDBSET_H__DE77448E_DEA3_4B5A_83A0_9F0B04EFF3DE__INCLUDED_) && defined(MU_CRYWOLF_DS_PROTOCOL_20050505)
-#define AFX_CRYWOLFDBSET_H__DE77448E_DEA3_4B5A_83A0_9F0B04EFF3DE__INCLUDED_
-
-#if _MSC_VER > 1000
+#ifndef __CRYWOLFDBSET_H__
+#define __CRYWOLFDBSET_H__
#pragma once
-#endif // _MSC_VER > 1000
-//#include "Include\ProDef.h"
#include "..\Include\Sprodef.h"
-
#include "DBConBase.h"
class CCrywolfDBSet : public CDBConBase
@@ -24,7 +15,6 @@ class CCrywolfDBSet : public CDBConBase
BOOL DSDB_QueryCrywolfStateUpdate();
BOOL DSDB_QueryCrywolfInfoLoad(int iMapSvrGroup, LPCWP_ANS_CRYWOLFINFOLOAD lpAnsMsg);
BOOL DSDB_QueryCrywolfInfoSave( int iMapSvrGroup, LPCWP_REQ_CRYWOLFINFOSAVE lpReqMsg);
-
};
-#endif // !defined(AFX_CRYWOLFDBSET_H__DE77448E_DEA3_4B5A_83A0_9F0B04EFF3DE__INCLUDED_)
+#endif
\ No newline at end of file
diff --git a/DataServer/DbSet/DBConBase.cpp b/DataServer/DbSet/DBConBase.cpp
index 62ed6f8..4dfa3f2 100644
--- a/DataServer/DbSet/DBConBase.cpp
+++ b/DataServer/DbSet/DBConBase.cpp
@@ -1,34 +1,18 @@
-// DBConBase.cpp: implementation of the CDBConBase class.
-// Decompilation Completed -> All Same as WebZen
-//////////////////////////////////////////////////////////////////////
-
#include "stdafx.h"
#include "..\Dataserver.h"
#include "DBConBase.h"
-#ifdef _DEBUG
-#undef THIS_FILE
-static char THIS_FILE[]=__FILE__;
-#define new DEBUG_NEW
-#endif
-
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
-
CDBConBase::CDBConBase()
{
-
}
CDBConBase::~CDBConBase()
{
-
}
BOOL CDBConBase::Connect(char* szConID, char* szConPass)
{
- if(m_DBQuery.Connect(3, szDbConnectDsn, szConID, szConPass) == FALSE)
+ if (m_DBQuery.Connect(3, szDbConnectDsn, szConID, szConPass) == FALSE)
{
MsgBox("%s DB Connect Fail", szDbConnectDsn);
return FALSE;
diff --git a/DataServer/DbSet/DBConBase.h b/DataServer/DbSet/DBConBase.h
index 9ee7f25..0854591 100644
--- a/DataServer/DbSet/DBConBase.h
+++ b/DataServer/DbSet/DBConBase.h
@@ -1,13 +1,6 @@
-// DBConBase.h: interface for the CDBConBase class.
-//
-//////////////////////////////////////////////////////////////////////
-
-#if !defined(AFX_DBCONBASE_H__BE3ED0E9_1405_4FBF_AFA1_BD5CAA52A86E__INCLUDED_)
-#define AFX_DBCONBASE_H__BE3ED0E9_1405_4FBF_AFA1_BD5CAA52A86E__INCLUDED_
-
-#if _MSC_VER > 1000
+#ifndef __DBCONBASE_H__
+#define __DBCONBASE_H__
#pragma once
-#endif // _MSC_VER > 1000
class CDBConBase
{
@@ -21,4 +14,4 @@ class CDBConBase
BOOL Connect(char* szConID, char* szConPass);
};
-#endif // !defined(AFX_DBCONBASE_H__BE3ED0E9_1405_4FBF_AFA1_BD5CAA52A86E__INCLUDED_)
+#endif
\ No newline at end of file
diff --git a/DataServer/MainFrm.cpp b/DataServer/MainFrm.cpp
index d3db8d0..2c719ad 100644
--- a/DataServer/MainFrm.cpp
+++ b/DataServer/MainFrm.cpp
@@ -1,22 +1,11 @@
-
-// MainFrm.cpp : implementation of the CMainFrame class
-//
-
#include "stdafx.h"
#include "Dataserver.h"
-
#include "MainFrm.h"
#include "ServerPrc.h"
#include "WZIPCheck.h"
#include "BadSyntaxChk.h"
#include "MapServerManager_DS.h"
-#ifdef _DEBUG
-#define new DEBUG_NEW
-#undef THIS_FILE
-static char THIS_FILE[] = __FILE__;
-#endif
-
char szVersion[] = DATASERVER_VERSION;
CActiveMng cAM;
@@ -44,8 +33,6 @@ CWarehouseDBSet CWhDBSet;
CZenEvenDb CZenEvenDBSet;
CCharPreviewDBSet gCharPreDBSet;
LuckyItemDBSet g_LuckyItemDBSet;
-
-//season 12+
CMonsterKillInfoDbSet g_MonsterKillInfoDbSet;
CBlockChatUserDBSet g_BlockChatUserDBSet;
LabyrinthDBSet g_LabyrinthDBSet;
@@ -69,24 +56,16 @@ CRuudLogDbSet g_RuudLogDBSet;
CGremoryCaseDBSet g_CGremoryCaseDBSet;
CDevilSquareFinalDBSet g_DSFDBset;
ChaosCastleFinalDBSet g_CCFDbSet;
-int gbIsJumpingServer;
+BOOL gbIsJumpingServer;
CQuestExpDBSet g_QuestExpDBSet;
CPeriodItemExDBSet PeriodItemExDBSet;
-#ifdef MASTER_LEVEL_UP_SYSTEM_20070912
CMasterLevelSystemDBSet MasterLevelSystemDBSet;
-#endif
CQuestMonKillDBSet QuestMonKillDBSet;
-#ifdef MU_CRYWOLF_DS_PROTOCOL_20050505
CCrywolfDBSet CrywolfDBSet;
-#endif
-#ifdef MU_CASTLESIEGE_DS_PROTOCOL_20041105
CCastleDBSet CastleDBSet;
-#endif
-#ifdef DARKLORD_WORK
CPetDBSet PetDBSet;
-#endif
CCharDBSet gCharDbSet;
CAccountCharDBSet gACDbSet;
@@ -100,10 +79,7 @@ char szDbConnectDsn[52];
#define WM_ASYNCSELECTMSG_CLIENT (WM_USER+1001)
-#define WM_ASYNCSELECTMSG_SERVERACCEPT (WM_USER+1002) // 서버의 접속을 기다리는 메시지
-
-/////////////////////////////////////////////////////////////////////////////
-// CMainFrame
+#define WM_ASYNCSELECTMSG_SERVERACCEPT (WM_USER+1002)
IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
diff --git a/DataServer/common/ItemSocketOptionDefine.h b/DataServer/common/ItemSocketOptionDefine.h
deleted file mode 100644
index 11bbf70..0000000
--- a/DataServer/common/ItemSocketOptionDefine.h
+++ /dev/null
@@ -1,182 +0,0 @@
-#ifndef _SOCKETOPTIONDEFINE_
-#define _SOCKETOPTIONDEFINE_
-
-#define MAX_SEED_TYPE 6
-#define MAX_SEED_COUNT 50
-#define MAX_SPHERE_LEVEL 5
-#define MAX_SEEDSPHERE MAX_SEED_COUNT
-
-#define MAX_BONUS_OPTION 6
-#define MAX_SET_OPTION 2
-
-#define MAX_SOCKET_SLOT 5
-
-#define MAX_EQUIP_SOCKET_ITEM 7
-
-#define MAX_SEEDSPHERE_OPTION_DATA ( MAX_EQUIP_SOCKET_ITEM * MAX_SOCKET_SLOT )
-#define MAX_BONUS_OPTION_DATA MAX_EQUIP_SOCKET_ITEM
-#define MAX_SET_OPTION_DATA MAX_SET_OPTION
-#define MAX_USER_SOCKET_OPTION_DATA ( ( MAX_EQUIP_SOCKET_ITEM * MAX_SOCKET_SLOT ) + MAX_BONUS_OPTION + MAX_SET_OPTION )
-
-//
-#define MAX_SEED_EXTRACT_SUCCESS_RATE 90
-#define MAX_SEEDSPHERE_COMPOSITE_SUCCESS_RATE 90
-
-//#define MAX_USER_SEEDSPHERE_EQUIP 7
-//#define MAX_USER_SEEDSPHERE_DATA ( MAX_USER_SEEDSPHERE_EQUIP * MAX_SOCKET_SLOT )
-
-#define MAX_OPTION_STRING 30
-
-#define SOCKETSLOT_NONE 0xFF
-#define SOCKETSLOT_EMPTY 0xFE
-
-enum
-{
- SEED_TYPE_NONE = 0,
- SEED_TYPE_FIRE = 1,
- SEED_TYPE_WATER = 2,
- SEED_TYPE_ICE = 3,
- SEED_TYPE_WIND = 4,
- SEED_TYPE_LIGHTNING = 5,
- SEED_TYPE_EARTH = 6,
- SEED_TYPE_UNIQUE = 7,
- SEED_TYPE_MAX
-};
-
-enum
-{
- SOCKET_OPTION_TYPE_NONE = 0,
- SOCKET_OPTION_TYPE_SEED = 1,
- SOCKET_OPTION_TYPE_BONUS = 2,
- SOCKET_OPTION_TYPE_SET = 3,
-};
-
-enum
-{
- SEED_OPTION_TYPE_NONE = 0,
- SEED_OPTION_TYPE_VALUE = 1,
- SEED_OPTION_TYPE_RATE = 2,
- SEED_OPTION_TYPE_PER_LEVEL = 3,
- SEED_OPTION_TYPE_PER_HP = 4,
- SEED_OPTION_TYPE_PER_MP = 5,
-};
-
-// ʽ ɼ Ÿ
-enum
-{
- //
- BONUS_OPTION_WEAPON_ATTACK_POWER = 0,
- BONUS_OPTION_WEAPON_ATTACK_SKILL_POWER = 1,
- // ̷
-#ifdef MODIFY_SOCKET_ITEM_NEW_OPTION_20080818
- BONUS_OPTION_STAFF_ATTACK_POWER = 2,
-#else
- BONUS_OPTION_STAFF_MAGIC_POWER = 2,
-#endif // MODIFY_SOCKET_ITEM_NEW_OPTION_20080818
- BONUS_OPTION_STAFF_ATTACK_SKILL_POWER = 3,
- //
- BONUS_OPTION_PROTECT_BLOCK_POWER = 4,
- BONUS_OPTION_PROTECT_MAX_HP_INC = 5,
-};
-
-enum
-{
- SET_OPTION_DOUBLE_DAMAGE_RATE_INC = 0,
- SET_OPTION_IGNORE_ENEMY_DEFENSE = 1,
-};
-
-// õ彺Ǿ ε ɷġ Ÿ
-enum
-{
- // Ӽ ( ȭ)
- SEED_EFFECT_TYPE_FIRE_BEGIN = 0,
- SEED_EFFECT_TYPE_ATTACK_POWER = 0,
- SEED_EFFECT_TYPE_ATTACK_SPEED = 1,
- SEED_EFFECT_TYPE_MAX_ATTACK_POWER = 2,
- SEED_EFFECT_TYPE_MIN_ATTACK_POWER = 3,
- SEED_EFFECT_TYPE_MIN_MAX_ATTACK_POWER = 4,
-#ifdef MODIFY_SOCKET_ITEM_NEW_OPTION_20080818
- SEED_EFFECT_TYPE_REDUCE_AG_RATE = 5, // AGҸ (ű)
-#else
- SEED_EFFECT_TYPE_ATTACK_SKILL_POWER = 5, // ųݷ» ( -> )
- SEED_EFFECT_TYPE_ATTACK_ACCURACY = 6, // ݼ ( -> )
- SEED_EFFECT_TYPE_PERSONAL_ATTACK_ACCURACY = 7, // ΰݼ ()
- SEED_EFFECT_TYPE_MAGIC_POWER = 8, // ()
-#endif // MODIFY_SOCKET_ITEM_NEW_OPTION_20080818
- SEED_EFFECT_TYPE_FIRE_END = 9,
- // Ӽ ( ȭ)
- SEED_EFFECT_TYPE_WATER_BEGIN = 10,
- SEED_EFFECT_TYPE_SUCCESS_BLOCK = 10,
- SEED_EFFECT_TYPE_BLOCK_POWER = 11,
- SEED_EFFECT_TYPE_SHIELD_BLOCK_POWER = 12,
- SEED_EFFECT_TYPE_REDUCE_DAMAGE = 13,
- SEED_EFFECT_TYPE_REFLECT_DAMAGE = 14,
- SEED_EFFECT_TYPE_WATER_END = 15,
- // Ӽ ( ȭ)
- SEED_EFFECT_TYPE_ICE_BEGIN = 16,
- SEED_EFFECT_TYPE_MONSTER_KILL_REFILL_HP = 16,
- SEED_EFFECT_TYPE_MONSTER_KILL_REFILL_MP = 17,
-#ifdef MODIFY_SOCKET_ITEM_NEW_OPTION_20080818
- SEED_EFFECT_TYPE_ATTACK_SKILL_POWER = 18,
- SEED_EFFECT_TYPE_ATTACK_ACCURACY = 19,
- SEED_EFFECT_TYPE_ITEM_DURABILITY_IMPROVE = 20, // ۳°ȭ (ű)
-#else
- SEED_EFFECT_TYPE_SD_POINT_REDUCE_RATE_INC = 18, // ųݷ» ( -> )
- SEED_EFFECT_TYPE_SD_IGNORE_RATE_INC = 19, // ݼ ( -> )
-#endif // MODIFY_SOCKET_ITEM_NEW_OPTION_20080818
- SEED_EFFECT_TYPE_ICE_END = 20,
- // ٶ Ӽ ( ȭ)
- SEED_EFFECT_TYPE_WIND_BEGIN = 21,
- SEED_EFFECT_TYPE_REFILL_HP_INC = 21,
- SEED_EFFECT_TYPE_MAX_HP_INC = 22,
- SEED_EFFECT_TYPE_MAX_MP_INC = 23,
- SEED_EFFECT_TYPE_REFILL_MP_INC = 24,
- SEED_EFFECT_TYPE_MAX_AG_INC = 25,
- SEED_EFFECT_TYPE_REFILL_AG_INC = 26,
- SEED_EFFECT_TYPE_MONSTER_KILL_ZEN_INC = 27,
- SEED_EFFECT_TYPE_WIND_END = 28,
- // Ӽ ( ȭ)
- SEED_EFFECT_TYPE_THUNDER_BEGIN = 29,
- SEED_EFFECT_TYPE_EXCELLENT_DAMAGE_INC = 29,
- SEED_EFFECT_TYPE_EXCELLENT_DAMAGE_RATE_INC = 30,
- SEED_EFFECT_TYPE_CRITICAL_DAMAGE_INC = 31,
- SEED_EFFECT_TYPE_CRITICAL_DAMAGE_RATE_INC = 32,
- SEED_EFFECT_TYPE_THUNDER_END = 33,
- // Ӽ ( ȭ)
- SEED_EFFECT_TYPE_EARTH_BEGIN = 34,
- SEED_EFFECT_TYPE_STRENGTH_INC = 34,
- SEED_EFFECT_TYPE_DEXTERITY_INC = 35,
- SEED_EFFECT_TYPE_VITALITY_INC = 36,
- SEED_EFFECT_TYPE_ENERGY_INC = 37,
- SEED_EFFECT_TYPE_REQUIRE_STRENGTH_DEC = 38,
- SEED_EFFECT_TYPE_REQUIRE_DEXTERITY_DEC = 39,
- SEED_EFFECT_TYPE_EARTH_END = 40,
- // ũ ɼ
- SEED_EFFECT_TYPE_UNIQUE_BEGIN = 41,
- SEED_EFFECT_TYPE_UNIQUE_1 = 41,
- SEED_EFFECT_TYPE_UNIQUE_2 = 42,
- SEED_EFFECT_TYPE_UNIQUE_END = 43,
- // Ʈ ɼ
- SEED_EFFECT_TYPE_SET_BEGIN = 44,
- SEED_EFFECT_TYPE_SET_DOUBLE_DAMAGE_RATE_INC = 44,
- SEED_EFFECT_TYPE_SET_IGNORE_ENERMY_DEFENSE = 45,
- SEED_EFFECT_TYPE_SET_END = 45,
-};
-
-typedef struct
-{
- BYTE m_SocketOptionIndex;
- BYTE m_SocketOptionValueType;
- WORD m_SocketOptionValue;
- BYTE m_SocketOptionCount;
-
- void Clear()
- {
- m_SocketOptionIndex = SOCKETSLOT_NONE;
- m_SocketOptionValue = 0;
- m_SocketOptionValueType = 0;
- m_SocketOptionCount = 0;
- }
-}SOCKET_OPTION_LIST, *LPSOCKET_OPTION_LIST;
-
-#endif // _SOCKETOPTIONDEFINE_
\ No newline at end of file
diff --git a/DataServer/common/zzzitem.cpp b/DataServer/common/zzzitem.cpp
index 9eaa22c..020737d 100644
--- a/DataServer/common/zzzitem.cpp
+++ b/DataServer/common/zzzitem.cpp
@@ -6,39 +6,12 @@
#include "..\\Include\\ReadScript.h"
#include "..\\common\\Winutil.h"
#include "ZzzItem.h"
-
-#ifdef SCRIPT_DECODE_WORK
-#include "..\\common\\WZScriptEncode.h"
-#endif
-
#include "..\\common\\SetItemOption.h"
-#ifdef AUTH_GAMESERVER
-#include "..\\common\\WzMemScript.h"
-#endif
-
-#ifndef CHARACTERDB_SERVER
-#ifdef ADD_ITEM_SOCKET_OPTION_SYSTEM_20080415
-#include "ItemSocketOptionDefine.h"
-extern CItemSocketOptionSystem g_SocketOptionSystem;
-#endif // ADD_ITEM_SOCKET_OPTION_SYSTEM_20080415
-#endif
-
-#ifdef DARKLORD_WORK
CPetItemExp gPetItemExp;
-#endif
-
-#ifdef ADD_RANDOM_RANGE_OF_ITEMINDEX_20050808
int g_MaxItemIndexOfEachItemType[MAX_ITEM_TYPE] = { 0, };
-#endif
-
-
-//extern void GCServerMsgStringSend(char *szMsg, int aIndex, BYTE type);
-
ITEM_ATTRIBUTE ItemAttribute[MAX_ITEM];
-//----------------------------------------------------------------------------
-// 아이템 정보를 초기화 한다.
CItem::CItem()
{
Clear();
diff --git a/DataServer/include/Sprodef.h b/DataServer/include/Sprodef.h
index a038ee6..3ab4e9e 100644
--- a/DataServer/include/Sprodef.h
+++ b/DataServer/include/Sprodef.h
@@ -1,10 +1,6 @@
#ifndef __SPRODEF_H__
#define __SPRODEF_H__
-#define VER_CHATWINDOW_OPTION
-
-//#define PROPERTY_ITEM_WORK // 고유정보가 들어가 있는 아이템
-
// Server Header Protocol BYTE(Size)
typedef struct
{
@@ -26,19 +22,12 @@ typedef struct
BYTE Subcode;
} SHPW_HEAD, *LPSHPW_HEAD;
-//----------------------------------------------------------------------------
-// 결과 공통
-//----------------------------------------------------------------------------
typedef struct
{
PBMSG_HEAD h;
BYTE Result;
} SDHP_DEFAULT_RESULT, *LPSDHP_DEFAULT_RESULT;
-
-//----------------------------------------------------------------------------
-// 결과를 보낼때 사용
-//----------------------------------------------------------------------------
typedef struct
{
PBMSG_HEAD h;
@@ -697,79 +686,6 @@ short Number;
} SDHP_ACCOUNTRESULT, *LPSDHP_ACCOUNTRESULT;
*/
-//----------------------------------------------------------------------------
-// [0x20] 특정아이디의 비번질문을 얻고자 요청한다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Id[MAX_IDSTRING];
-} SDHP_PASSQUESTION_QUERY, *LPSDHP_PASSQUESTION_QUERY;
-
-//----------------------------------------------------------------------------
-// [0x20] 특정아이디의 비번질문을 얻고자 요청한다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- BYTE Result;
- char Question[MAX_QUESTIONSTR];
-} SDHP_PASSQUESTION_QUERY_RESULT, *LPSDHP_PASSQUESTION_QUERY_RESULT;
-
-
-//----------------------------------------------------------------------------
-// [0x21] 비밀번호 문의
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Id[MAX_IDSTRING];
- char JoominN[MAX_JOOMINNUMBERSTR];
- char Answer[MAX_ANSWERSTR];
- char IpAddress[17];
-} SDHP_PASSQUERY, *LPSDHP_PASSQUERY;
-
-//----------------------------------------------------------------------------
-// [0x21] 비밀번호 문의 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- BYTE Result;
- char Password[MAX_IDSTRING];
-} SDHP_PASSQUERY_RESULT, *LPSDHP_PASSQUERY_RESULT;
-
-
-//----------------------------------------------------------------------------
-// [0x22] 비밀번호 변경신청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Id[MAX_IDSTRING];
- char PassOld[MAX_IDSTRING];
- char PassNew[MAX_IDSTRING];
- char JoominN[MAX_JOOMINNUMBERSTR];
- char IpAddress[17];
-} SDHP_PASSCHANGE, *LPSDHP_PASSCHANGE;
-
-
-//----------------------------------------------------------------------------
-// [0x22] 비밀번호 변경신청 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- BYTE Result;
-} SDHP_PASSCHANGE_RESULT, *LPSDHP_PASSCHANGE_RESULT;
-
-
//----------------------------------------------------------------------------
// [0x2D] 고유 아이템 정보를 요청한다.
//----------------------------------------------------------------------------
@@ -1523,9 +1439,7 @@ typedef struct
BYTE QkeyDefine;
BYTE WkeyDefine;
BYTE EkeyDefine;
-#ifdef VER_CHATWINDOW_OPTION
BYTE ChatWindow;
-#endif
#ifdef ADD_SEASON_3_NEW_UI_20071122
BYTE RkeyDefine;
@@ -1539,72 +1453,6 @@ typedef struct
BYTE PlayGuideCheck;
} SDHP_SKILLKEYDATA, *LPSDHP_SKILLKEYDATA;
-typedef struct
-{
- PBMSG_HEAD h; // C1:17
- int iUserIndex; // 4
- char chAccountID[MAX_IDSTRING + 1]; //
- char chCharacterName[MAX_IDSTRING + 1]; //
-}PMSG_CHARACTER_RESET, *LPPMSG_CHARACTER_RESET;
-
-typedef struct
-{
- PBMSG_HEAD h; // C1:17
- int iUserIndex; // 4
- int ResetNumber; //
-}PMSG_ANS_CHARACTER_RESET, *LPPMSG_ANS_CHARACTER_RESET;
-
-typedef struct
-{
- PBMSG_HEAD h; // C1:17
- int iUserIndex; // 4
- char chAccountID[MAX_IDSTRING + 1]; //
- char chCharacterName[MAX_IDSTRING + 1]; //
-
- int m_iRuleIndex; //
- BOOL m_bClearStat; //
- int m_iLevelAfterReset; //
- int m_iLevelUpPoint; //
- BOOL m_bReqSpecialItem; //
- BOOL m_bBornPlace; //
- int m_iResetNumber; //
- BOOL m_bClearBuffState; //
- BOOL m_bClearMagicList; //
-}PMSG_REQ_SAVE_CHARACTER_RESET, *LPPMSG_REQ_SAVE_CHARACTER_RESET;
-
-typedef struct
-{
- PBMSG_HEAD h; // C1:17
- int iUserIndex; // 4
-
- int m_iRuleIndex; //
- BOOL m_bClearStat; //
- int m_iLevelAfterReset; //
- int m_iLevelUpPoint; //
- BOOL m_bReqSpecialItem; //
- BOOL m_bBornPlace; //
- int m_iResetNumber; //
- BOOL m_bClearBuffState; //
- BOOL m_bClearMagicList; //
-}PMSG_ANS_SAVE_CHARACTER_RESET, *LPPMSG_ANS_SAVE_CHARACTER_RESET;
-
-typedef struct
-{
- PBMSG_HEAD h; // C1:17
- char chAccountID[MAX_IDSTRING + 1];
- int iUserIndex;
- BYTE AccountType;
- INT64 EndTime;
-}PMSG_REQ_VIP, *LPPMSG_REQ_VIP;
-
-typedef struct
-{
- PBMSG_HEAD h; // C1:17
- int iUserIndex;
- BYTE AccountType;
- INT64 EndTime;
-}PMSG_ANS_VIP, *LPPMSG_ANS_VIP;
-
//----------------------------------------------------------------------------
// [0x60] 옵션 키 값을 받는다.
//----------------------------------------------------------------------------
@@ -1623,2198 +1471,881 @@ typedef struct
BYTE WkeyDefine;
BYTE EkeyDefine;
-#ifdef VER_CHATWINDOW_OPTION
BYTE ChatWindow;
-#endif
#ifdef ADD_SEASON_3_NEW_UI_20071122
BYTE RkeyDefine;
#endif
-#ifdef UPDATE_OPTIONKEY_LEVEL_20080116
- int QWERLevel; // 클라이언트는 BYTE QWERLevel[4] 사용
-#endif
- BYTE EnableTransfromMode;
- short PlayGuideLv;
- BYTE PlayGuideCheck;
-} SDHP_SKILLKEYDATA_SEND, *LPSDHP_SKILLKEYDATA_SEND;
-
-
-//----------------------------------------------------------------------------
-// [0x60] 이벤트 시작을 알린다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE Event;
-} SDHP_EVENTSTART, *LPSDHP_EVENTSTART;
-
-
-//----------------------------------------------------------------------------
-// [0x61] 인증서버에서 이벤트 시작 또는 종료를 알린다
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE Event; // 이벤트 번호
- BYTE Stat; // 상태 0 : 종료 1 : 시작
-} SDHP_EVENTCONTROL, *LPSDHP_EVENTCONTROL;
-
-
-//----------------------------------------------------------------------------
-// [0x62] 인증서버에서 Reload 설정을 알린다
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE Option; // 옵션 번호
-} SDHP_OPTIONCONTROL, *LPSDHP_OPTIONCONTROL;
-
-// 0x30
-typedef struct
-{
- PBMSG_HEAD h;
- char Account[MAX_IDSTRING];
- char Name[MAX_IDSTRING];
-} SDHP_LOVEHEARTEVENT, *LPSDHP_LOVEHEARTEVENT;
-
-// 0x30
-typedef struct
-{
- PBMSG_HEAD h;
-
- BYTE Result;
-
- char Name[MAX_IDSTRING];
- int Number;
-
-} SDHP_LOVEHEARTEVENT_RESULT, *LPSDHP_LOVEHEARTEVENT_RESULT;
-
-// 0x40 전체 공지
-typedef struct
-{
- PBMSG_HEAD h;
- char Notice[61];
-} SDHP_NOTICE, *LPSDHP_NOTICE;
-
-// 0x41 유저 공지
-typedef struct
-{
- PBMSG_HEAD h;
- char szId[10];
- char Notice[61];
-} SDHP_USER_NOTICE, *LPSDHP_USER_NOTICE;
-
-
-// 0x42 게임 블럭
-typedef struct
-{
- PBMSG_HEAD h;
- int ClientIndex;
- char AccountID[MAX_IDSTRING];
- BYTE ServerNum;
- char CharName[MAX_IDSTRING];
- BYTE Type;
-} SDHP_GAME_BLOCK, *LPSDHP_GAME_BLOCK;
-
-// 0x42 게임 블럭 결과
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE Result;
-} SDHP_GAME_BLOCK_RESULT, *LPSDHP_GAME_BLOCK_RESULT;
-
-
-// 0xCF 캐릭터 이동
-typedef struct
-{
- PBMSG_HEAD h;
- char Account[MAX_IDSTRING];
- short Number;
-} SDHP_CHARACTER_TRANSFER, *LPSDHP_CHARACTER_TRANSFER;
-
-typedef struct
-{
- PBMSG_HEAD h;
- char Account[MAX_IDSTRING];
- short Number;
- BYTE Result;
-} SDHP_CHARACTER_TRANSFER_RESULT, *LPSDHP_CHARACTER_TRANSFER_RESULT;
-
-#ifdef UPDATE_CHANGE_CHARACTERNAME_20080410 // 캐릭명 변경 프로토콜
-//----------------------------------------------------------------------------
-// GD[0x16] 캐릭터 변경을 요청.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- int aIndex;
- char AccountId[MAX_IDSTRING];
- char OldName[MAX_IDSTRING];
- char NewName[MAX_IDSTRING];
-} SDHP_CHANGE_NAME, *LPSDHP_CHANGE_NAME;
-
-//----------------------------------------------------------------------------
-// DG[0x16] 캐릭터 변경을 요청 결과.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- int aIndex;
- char AccountId[MAX_IDSTRING];
- char OldName[MAX_IDSTRING];
- char NewName[MAX_IDSTRING];
- BYTE btResult; // 0: 성공, 1: 동일 캐릭터명 존재
-} SDHP_CHANGE_NAME_RESULT, *LPSDHP_CHANGE_NAME_RESULT;
-#endif // UPDATE_CHANGE_CHARACTERNAME_20080410
-
-//##__FRIEND_WORK__
-#ifdef __FRIEND_WORK__
-
-//----------------------------------------------------------------------------
-// GD[0x60] 친구 리스트를 요청한다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
- BYTE pServer;
-} FHP_FRIENDLIST_REQ, *LPFHP_FRIENDLIST_REQ;
-
-//----------------------------------------------------------------------------
-// DG[0x60] 친구 리스트를 요청에 대한 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
- BYTE Count;
- BYTE MailCount;
-} FHP_FRIENDLIST_COUNT, *LPFHP_FRIENDLIST_COUNT;
-
-//----------------------------------------------------------------------------
-// DG[0x60] 친구 리스트를 요청에 대한 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- char Name[MAX_IDSTRING];
- BYTE Server;
-} FHP_FRIENDLIST, *LPFHP_FRIENDLIST;
-
-//----------------------------------------------------------------------------
-// GD[0x61] 대기중인 친구 리스트를 요청한다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
-} FHP_WAITFRIENDLIST_REQ, *LPFHP_WAITFRIENDLIST_REQ;
-
-//----------------------------------------------------------------------------
-// DG[0x61] 대기중인 친구 리스트를 요청 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
- char FriendName[MAX_IDSTRING];
-} FHP_WAITFRIENDLIST_COUNT, *LPFHP_WAITFRIENDLIST_COUNT;
-
-//----------------------------------------------------------------------------
-// GD[0x62] 상태를 알린다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
- BYTE State;
-} FHP_FRIEND_STATE_C, *LPFHP_FRIEND_STATE_C;
-
-//----------------------------------------------------------------------------
-// DG[0x62] 상태를 알린다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
- char FriendName[MAX_IDSTRING];
- BYTE State;
-} FHP_FRIEND_STATE, *LPFHP_FRIEND_STATE;
-
-//----------------------------------------------------------------------------
-// GD[0x63] 친구 추가 요청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
- char FriendName[MAX_IDSTRING];
-} FHP_FRIEND_ADD_REQ, *LPFHP_FRIEND_ADD_REQ;
-
-
-//----------------------------------------------------------------------------
-// DG[0x63] 친구 추가 요청 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- BYTE Result;
- char Name[MAX_IDSTRING];
- char FriendName[MAX_IDSTRING];
- BYTE Server;
-} FHP_FRIEND_ADD_RESULT, *LPFHP_FRIEND_ADD_RESULT;
-
-
-//----------------------------------------------------------------------------
-// GD[0x64] 대기중인 친구 추가 요청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE Result;
- short Number;
- char Name[MAX_IDSTRING];
- char FriendName[MAX_IDSTRING];
-} FHP_WAITFRIEND_ADD_REQ, *LPFHP_WAITFRIEND_ADD_REQ;
-
-//----------------------------------------------------------------------------
-// DG[0x64] 대기중인 친구 추가 요청 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- BYTE Result;
- char Name[MAX_IDSTRING];
- char FriendName[MAX_IDSTRING];
- BYTE pServer;
-} FHP_WAITFRIEND_ADD_RESULT, *LPFHP_WAITFRIEND_ADD_RESULT;
-
-
-//----------------------------------------------------------------------------
-// GD[0x65] 친구를 삭제한다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
- char FriendName[MAX_IDSTRING];
-} FHP_FRIEND_DEL_REQ, *LPFHP_FRIEND_DEL_REQ;
-
-//----------------------------------------------------------------------------
-// DG[0x65] 친구를 삭제 결과를 알린다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- BYTE Result;
- char Name[MAX_IDSTRING];
- char FriendName[MAX_IDSTRING];
-} FHP_FRIEND_DEL_RESULT, *LPFHP_FRIEND_DEL_RESULT;
-
-
-
-//----------------------------------------------------------------------------
-// GD[0x66] 대화방 개설을 요청한다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
- char fName[MAX_IDSTRING]; // 대화 상대
-
-} FHP_FRIEND_CHATROOM_CREATE_REQ, *LPFHP_FRIEND_CHATROOM_CREATE_REQ;
-
-//----------------------------------------------------------------------------
-// GD[0x66] 대화방 개설을 요청결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE Result;
- short Number;
- char Name[MAX_IDSTRING];
- char FriendName[MAX_IDSTRING];
- char ServerIp[15];
- WORD RoomNumber;
- DWORD Ticket;
- BYTE Type;
-} FHP_FRIEND_CHATROOM_CREATE_RESULT, *LPFHP_FRIEND_CHATROOM_CREATE_RESULT;
-
-//----------------------------------------------------------------------------
-// GD[0x70] 다른유저에게 쪽지를 보낸다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
- short Number;
- DWORD WindowGuid;
- char Name[MAX_IDSTRING];
- char ToName[MAX_IDSTRING];
- char Subject[MAX_MEMO_SUBJECT];
- BYTE Dir;
- BYTE Action;
- short MemoSize;
-
-#ifdef ITEM_INDEX_EXTEND_20050706
- BYTE Photo[MAX_PREVIEWCHARSET + 9];
-#else
-#ifdef DARKLORD_WORK
- BYTE Photo[MAX_PREVIEWCHARSET + 4];
-#else
- BYTE Photo[MAX_PREVIEWCHARSET + 3];
-#endif
-#endif
-
- char Memo[MAX_MEMO];
-} FHP_FRIEND_MEMO_SEND, *LPFHP_FRIEND_MEMO_SEND;
-
-//----------------------------------------------------------------------------
-// GD[0x70] 다른 유저에게 쪽지를 보낸 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
- BYTE Result;
- DWORD WindowGuid;
-} FHP_FRIEND_MEMO_SEND_RESULT, *LPFHP_FRIEND_MEMO_SEND_RESULT;
-
-//----------------------------------------------------------------------------
-// GD[0x71] 쪽지 리스트 요청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- WORD Number;
- char Name[MAX_IDSTRING];
-} FHP_FRIEND_MEMO_LIST_REQ, *LPFHP_FRIEND_MEMO_LIST_REQ;
-
-
-//----------------------------------------------------------------------------
-// DG[0x71] 쪽지 리스트를 보낸다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
- WORD Number;
- WORD MemoIndex;
- char SendName[MAX_IDSTRING];
- char RecvName[MAX_IDSTRING];
- char Date[MAX_DATE];
- char Subject[MAX_MEMO_SUBJECT];
- BYTE read;
-} FHP_FRIEND_MEMO_LIST, *LPFHP_FRIEND_MEMO_LIST;
-
-
-//----------------------------------------------------------------------------
-// GD[0x72] 쪽지 내용을 보내달라고 요청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- WORD MemoIndex;
- char Name[MAX_IDSTRING];
-} FHP_FRIEND_MEMO_RECV_REQ, *LPFHP_FRIEND_MEMO_RECV_REQ;
-
-//----------------------------------------------------------------------------
-// DG[0x72] 쪽지 내용을 보낸다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
- WORD MemoIndex;
- short MemoSize;
-
-#ifdef ITEM_INDEX_EXTEND_20050706
- BYTE Photo[MAX_PREVIEWCHARSET + 9];
-#else
-#ifdef DARKLORD_WORK
- BYTE Photo[MAX_PREVIEWCHARSET + 4];
-#else
- BYTE Photo[MAX_PREVIEWCHARSET + 3];
-#endif
-#endif
-
- BYTE Dir;
- BYTE Action;
- char Memo[MAX_MEMO];
-} FHP_FRIEND_MEMO_RECV, *LPFHP_FRIEND_MEMO_RECV;
-
-//----------------------------------------------------------------------------
-// GD[0x73] 쪽지 삭제 요청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- WORD MemoIndex;
- char Name[MAX_IDSTRING];
-} FHP_FRIEND_MEMO_DEL_REQ, *LPFHP_FRIEND_MEMO_DEL_REQ;
-
-//----------------------------------------------------------------------------
-// DG[0x73] 쪽지 삭제 요청 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE Result;
- WORD MemoIndex;
- short Number;
- char Name[MAX_IDSTRING];
-} FHP_FRIEND_MEMO_DEL_RESULT, *LPFHP_FRIEND_MEMO_DEL_RESULT;
-
-//----------------------------------------------------------------------------
-// GD[0x74] 친구 초대 요청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- short Number;
- char Name[MAX_IDSTRING];
- char FriendName[MAX_IDSTRING];
- WORD RoomNumber;
- DWORD WindowGuid;
-} FHP_FRIEND_INVITATION_REQ, *LPFHP_FRIEND_INVITATION_REQ;
-
-//----------------------------------------------------------------------------
-// DG[0x74] 친구 초대 요청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE Result;
- short Number;
- char Name[MAX_IDSTRING];
- DWORD WindowGuid;
-} FHP_FRIEND_INVITATION_RET, *LPFHP_FRIEND_INVITATION_RET;
-
-
-#ifdef MAP_SERVER_WORK_20041030 // 서버 맵분할 관련 패킷 - 게임서버 <-> 인증서버
-
-//----------------------------------------------------------------------------
-// GJ [0x7A] 인증서버에게 특정 사용자가 맵서버를 이동해야 함을 알림 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- INT iIndex; // 게임서버 사용자 인덱스
- CHAR szAccountID[MAX_IDSTRING + 1]; // 인증받을 ID
- CHAR szCharName[MAX_IDSTRING + 1]; // 인증받을 케릭명
- WORD wCurMapSvrCode; // 현재의 맵서버 코드 (이전 서버코드가 될것임)
- WORD wDstMapSvrCode; // 이동할 맵서버 코드 (목적 서버코드가 될것임)
- WORD wMapNumber; // 이동할 맵번호
- BYTE btX; // 이동활 좌표 X
- BYTE btY; // 이동활 좌표 Y
-#ifdef MAP_SERVER_ADDINFO_20050509
-#ifdef PCBANG_ADVANTAGE // 한국전용 (FOR_KOREA)
- BYTE bPcBangUser; // PC방 사용자인지 여부
-#endif
-#endif
-#ifdef MAP_SERVER_ADDINFO_ADULT_20050610 // 태국전용 (FOR_THAILAND)
- BYTE bIsAdult; // 성인인지 여부
-#endif
-#ifdef CHN_PLAYTIME_LIMIT_SYSTEM_20050818
- INT iAddPlayTime; // 중국 피로드 - 게임시간 (5시간 지나면 게임혜택 0%)
-#endif
-#ifdef VTM_PLAYTIME_LIMIT_SYSTEM_20060626
- INT iAddPlayTime; // 베트남 피로도 - 게임시간 (5시간 지나면 게임혜택 0%)
-#endif
-} PMSG_REQ_MAPSVRMOVE, *LPPMSG_REQ_MAPSVRMOVE;
-
-
-//----------------------------------------------------------------------------
-// JG [0x7A] 인증서버가 특정 사용자의 맵서버 이동에 대한 결과를 알림 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- INT iIndex; // 게임서버 사용자 인덱스
- CHAR szAccountID[MAX_IDSTRING + 1]; // 인증받은 ID
- CHAR szCharName[MAX_IDSTRING + 1]; // 인증받은 케릭명
- WORD wCurMapSvrCode; // 현재의 맵서버 코드 (이전 서버코드가 될것임)
- WORD wDstMapSvrCode; // 이동할 맵서버 코드 (목적 서버코드가 될것임)
- WORD wMapNumber; // 이동할 맵번호
- BYTE btX; // 이동활 좌표 X
- BYTE btY; // 이동활 좌표 Y
- INT iResult; // 이동요청 결과 (0:성공/1:계정틀림/2:게임서버인덱스없음/3:대상서버풀/4:이미이동요청중)
- // 0 : 실패
- // 1 : 성공
- INT iJoinAuthCode1; // 인증 AUTH 코드 - 1
- INT iJoinAuthCode2; // 인증 AUTH 코드 - 2
- INT iJoinAuthCode3; // 인증 AUTH 코드 - 3
- INT iJoinAuthCode4; // 인증 AUTH 코드 - 4
-#ifdef MAP_SERVER_ADDINFO_20050509
-#ifdef PCBANG_ADVANTAGE
- BYTE bPcBangUser; // PC방 사용자인지 여부
-#endif
-#endif
-#ifdef MAP_SERVER_ADDINFO_ADULT_20050610 // 태국전용 (FOR_THAILAND)
- BYTE bIsAdult; // 성인인지 여부
-#endif
-#ifdef CHN_PLAYTIME_LIMIT_SYSTEM_20050818
- INT iAddPlayTime; // 중국 피로드 - 게임시간 (5시간 지나면 게임혜택 0%)
-#endif
-#ifdef VTM_PLAYTIME_LIMIT_SYSTEM_20060626
- INT iAddPlayTime; // 베트남 피로도 - 게임시간 (5시간 지나면 게임혜택 0%)
-#endif
-} PMSG_ANS_MAPSVRMOVE, *LPPMSG_ANS_MAPSVRMOVE;
-
-
-//----------------------------------------------------------------------------
-// GJ [0x7B] 인증서버에게 특정 사용자가 맵서버 이동 후 인증을 요청함을 알림 (0xC1) -> 인증서버는 해당 사용자의 게임서버 코드도 갱신
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- INT iIndex; // 게임서버 사용자 인덱스
- CHAR szAccountID[MAX_IDSTRING + 1]; // 인증받을 ID
- CHAR szCharName[MAX_IDSTRING + 1]; // 인증받을 케릭명
- WORD wDstMapSvrCode; // 사용자가 이동한 게임서버 코드 (현재 접속한 게임서버에서 넣어줌)
- INT iJoinAuthCode1; // 인증 AUTH 코드 - 1
- INT iJoinAuthCode2; // 인증 AUTH 코드 - 2
- INT iJoinAuthCode3; // 인증 AUTH 코드 - 3
- INT iJoinAuthCode4; // 인증 AUTH 코드 - 4
-} PMSG_REQ_MAPSVRAUTH, *LPPMSG_REQ_MAPSVRAUTH;
-
-
-//----------------------------------------------------------------------------
-// JG [0x7B] 인증서버에게 특정 사용자가 맵서버 이동 후 인증요청에 대한 결과 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- INT iIndex; // 게임서버 사용자 인덱스
- CHAR szAccountID[MAX_IDSTRING + 1]; // 인증받을 ID (인증서버에서 다시 보냄)
- CHAR szCharName[MAX_IDSTRING + 1]; // 인증받을 케릭명 (인증서버에서 다시 보냄)
- WORD wPrevMapSvrCode; // 이전 게임서버 코드
- WORD wMapNumber; // 이동할 맵번호
- BYTE btX; // 이동활 좌표 X
- BYTE btY; // 이동활 좌표 Y
- INT iResult; // 이동요청 결과 (0:성공/1:계정틀림/2:인증코드틀림/3:서버코드틀림/4:서버이동중아님)
-
- // 아래는 기존의 인증결과 정보 들
- INT iUserNumber;
- INT iDBNumber;
-#ifdef UPDATE_USERPASSWORD_LENGTH_20090424
- CHAR cJoominNumber[13];//[MAX_JOOMINNUMBER_LENGTH]; // 주민번호 뒷자리
-#else
- CHAR cJoominNumber[13]; // 주민번호 뒷자리
-#endif // UPDATE_USERPASSWORD_LENGTH_20090424
-
- BYTE btBlockCode; // 블록코드는 별도로 받음
-#ifdef FOR_THAILAND
- CHAR AuthAdult; // 성인 인증 코드
-#endif
-#ifdef ADD_PROTOCOL_PCBANG_GUID
- INT iPcBangGuid;
-#endif
-#ifdef MAP_SERVER_ADDINFO_20050509
-#ifdef PCBANG_ADVANTAGE
- BYTE bPcBangUser; // PC방 사용자인지 여부
-#endif
-#endif
-#ifdef MAP_SERVER_ADDINFO_ADULT_20050610 // 태국전용 (FOR_THAILAND)
- BYTE bIsAdult; // 성인인지 여부
-#endif
-#ifdef CHN_PLAYTIME_LIMIT_SYSTEM_20050818
-#ifdef MODIFY_CHN_PLAYTIME_LIMIT_SYSTEM_01_20070509
- int iVerifiedType; // 중국 피로도 성인 인증 타입 ( 0 : 성인, 1 : 미성년자, 2 : 오류 )
-#endif // MODIFY_CHN_PLAYTIME_LIMIT_SYSTEM_01_20070509
- INT iAddPlayTime; // 중국 피로드 - 게임시간 (5시간 지나면 게임혜택 0%)
-#endif
-#ifdef VTM_PLAYTIME_LIMIT_SYSTEM_20060626
- INT iAddPlayTime; // 베트남 피로도 - 게임시간 (5시간 지나면 게임혜택 0%)
-#endif
-} PMSG_ANS_MAPSVRAUTH, *LPPMSG_ANS_MAPSVRAUTH;
-
-#ifdef ADD_HACKING_TOOL_BLOCK_20090311
-//----------------------------------------------------------------------------
-// GJ [0x8A] 인증서버에 해킹 프로그램의 사용 여부 확인의 브로드 캐스팅을 요청한다. (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
-
- char chHackToolFilename[64];
-} PMSG_HACKTOOL_USE_STATISTICS_REQ, *LPPMSG_HACKTOOL_USE_STATISTICS_REQ;
-
-//----------------------------------------------------------------------------
-// JG [0x8A] 전체 게임서버에 해킹 프로그램의 사용 여부 확인을 요청한다. (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
-
- char chHackToolFilename[64];
-} PMSG_HACKTOOL_USE_STATISTICS, *LPPMSG_HACKTOOL_USE_STATISTICS;
-
-//----------------------------------------------------------------------------
-// GJ [0x8B] 인증서버에 해킹 프로그램의 사용자의 맵이동 제한을 요청한다. (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
-
- BYTE btModifyType; // 설정 타입 ( 1 : 추가, 2 : 수정, 3 : 삭제 )
- DWORD dwReservationTime; // 블록 시작 시간
- DWORD dwBlockTerm; // 블록 기간 (단위 : 초)
- WORD wBlockRate; // 블록 확률
- char chHackToolFilename[64];
-} PMSG_RESERVE_HACKTOOL_MAP_MOVE_REQ, *LPPMSG_RESERVE_HACKTOOL_MAP_MOVE_REQ;
-
-//----------------------------------------------------------------------------
-// GC [0x8B] 전체 게임서버에 해킹 프로그램의 사용자의 맵이동 제한을 요청한다. (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
-
- BYTE btModifyType; // 설정 타입 ( 1 : 추가, 2 : 수정, 3 : 삭제 )
- DWORD dwReservationTime; // 블록 시작 시간
- DWORD dwBlockTerm; // 블록 기간 (단위 : 초)
- WORD wBlockRate; // 블록 확률
- char chHackToolFilename[64];
-} PMSG_RESERVE_HACKTOOL_MAP_MOVE, *LPPMSG_RESERVE_HACKTOOL_MAP_MOVE;
-
-//----------------------------------------------------------------------------
-// GJ [0x8C] 전체 게임서버에 해킹 프로그램의 통계를 인증서버로 전달한다. (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
-
- WORD wCurrentUserCount;
- WORD wHackToolUserCount;
- char chHackToolFilename[64];
-} PMSG_HACKTOOL_USE_STATISTICS_ANS, *LPPMSG_HACKTOOL_USE_STATISTICS_ANS;
-
-//----------------------------------------------------------------------------
-// GJ [0x8C] 전체 게임서버에 해킹 프로그램의 통계를 인증서버로 전달한다. (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
-
- char chMessage[256];
-}PMSG_HACKTOOL_USE_STATISTICS_TOTAL, *LPPMSG_HACKTOOL_USE_STATISTICS_TOTAL;
-#endif // ADD_HACKING_TOOL_BLOCK_20090311
-
-//----------------------------------------------------------------------------
-// JG [0x7C] 특정 게임서버의 현재 최대 사용자 수를 주기적으로 보냄 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- INT iSvrCode; // 사용자가 이동한 게임서버 코드 (게임서버에서 넣어줌)
- INT iMaxUserCount; // 현재 서버의 최대 사용자 수
- INT iCurUserCount; // 현재 서버의 접속 사용자 수
-} PMSG_NOTIFY_MAXUSER, *LPPMSG_NOTIFY_MAXUSER;
-
-#endif
-
-#ifdef UPDATE_RESEND_GETCHARlIST_DISABLE_20090605
-//----------------------------------------------------------------------------
-// GJ [0x8F] 블럭시킬 아이피를 등록한다. (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
-
- char BlockIp[17];
-} PMSG_BLOCK_IP, *LPPMSG_BLOCK_IP;
-#endif // UPDATE_RESEND_GETCHARlIST_DISABLE_20090605
-
-//----------------------------------------------------------------------------
-// 채팅 서버와의 프로토콜 교환
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// DG[0xA0] 채팅 서버에 방 개설을 요청한다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- char Name[MAX_IDSTRING]; // 방 개설을 요청한 사람
- char FriendName[MAX_IDSTRING]; // 최초 대화 상대
- short UserNumber;
- short ServerNumber;
- short FriendNumber;
- short FriendServerNumber;
-} FHP_CHAT_ROOMCREATE, *LPFHP_CHAT_ROOMCREATE;
-
-//----------------------------------------------------------------------------
-// DG[0xA0] 채팅 서버에 방 개설을 요청 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE Result;
- WORD RoomNumber;
- char Name[MAX_IDSTRING]; // 방 개설을 요청한 사람
- char FriendName[MAX_IDSTRING]; // 대화 상대
- short UserNumber;
- short ServerNumber;
- DWORD Ticket;
- DWORD FriendTicket;
- BYTE Type;
-} FHP_CHAT_ROOMCREATE_RESULT, *LPFHP_CHAT_ROOMCREATE_RESULT;
-
-//----------------------------------------------------------------------------
-// DG[0xA1] 채팅 서버에 친구를 초대한다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- WORD RoomNumber;
- char Name[MAX_IDSTRING]; // 방 개설을 요청한 사람
- short UserNumber;
- short ServerNumber;
- BYTE Type;
-} FHP_CHAT_JOINUSER_REQ, *LPFHP_CHAT_JOINUSER_REQ;
-
-//----------------------------------------------------------------------------
-// DG[0xA1] 채팅 서버에 친구를 초대한 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE Result;
- WORD RoomNumber;
- char Name[MAX_IDSTRING]; // 방 개설을 요청한 사람
- short UserNumber;
- short ServerNumber;
- DWORD Ticket;
- DWORD FriendTicket;
-} FHP_CHAT_JOINUSER_RESULT, *LPFHP_CHAT_JOINUSER_RESULT;
-
-//----------------------------------------------------------------------------
-// CD[0xA2] 상대에게 말을 걸어 초대한다.
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- WORD RoomNumber;
- char Name[MAX_IDSTRING]; // 말을 건 사용자
- DWORD Ticket;
- char Msg[100];
-} FHP_CHAT_ROOMINVITATION, *LPFHP_CHAT_ROOMINVITATION;
-
-
-#endif
-//##__FRIEND_WORK__
-
-
-
-//----------------------------------------------------------------------------
-// 길드 & 연합 서버그룹(마야 등) 채팅 프로토콜
-//
-// Lastest : 20050706
-//
-//----------------------------------------------------------------------------
-
-#ifdef ADD_SERVERGROUP_CHATTING_FOR_GUILD_UNION_01_20050706
-
-//----------------------------------------------------------------------------
-// GEXD[0x50] 서버그룹 길드 채팅
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- INT iGuildNum;
- char szCharacterName[MAX_IDSTRING];
- char szChattingMsg[MAX_CHAT];
-
-} EXSDHP_SERVERGROUP_GUILD_CHATTING_SEND, *LPEXSDHP_SERVERGROUP_GUILD_CHATTING_SEND;
-
-typedef struct
-{
- PBMSG_HEAD h;
- INT iGuildNum;
- char szCharacterName[MAX_IDSTRING];
- char szChattingMsg[MAX_CHAT];
-
-} EXSDHP_SERVERGROUP_GUILD_CHATTING_RECV, *LPEXSDHP_SERVERGROUP_GUILD_CHATTING_RECV;
-
-
-//----------------------------------------------------------------------------
-// GEXD[0x51] 서버그룹 연합 채팅
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- INT iUnionNum;
- char szCharacterName[MAX_IDSTRING];
- char szChattingMsg[MAX_CHAT];
-
-} EXSDHP_SERVERGROUP_UNION_CHATTING_SEND, *LPEXSDHP_SERVERGROUP_UNION_CHATTING_SEND;
-
-typedef struct
-{
- PBMSG_HEAD h;
- INT iUnionNum;
- char szCharacterName[MAX_IDSTRING];
- char szChattingMsg[MAX_CHAT];
-
-} EXSDHP_SERVERGROUP_UNION_CHATTING_RECV, *LPEXSDHP_SERVERGROUP_UNION_CHATTING_RECV;
-
-#endif
-
-
-
-
-//----------------------------------------------------------------------------
-// 새로운 길드 시스템 프로토콜
-//
-// Lastest : 20040913, 20040922, 20041006
-//
-//----------------------------------------------------------------------------
-
-#ifdef ADD_NEW_GUILD_01_20040913
-
-//----------------------------------------------------------------------------
-// GEXD[0xE1] 직책을 임명 / 변경 / 해제 요청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- WORD wUserIndex; // 임명하는 유저(길마, 부길마) 인덱스
- BYTE btType; // 임명(0x01) / 변경(0x02) / 해제(0x03)
-
- BYTE btGuildStatus; // 임명하는 직책.
- char szGuildName[MAX_GUILDNAMESTRING + 1]; // 길드 이름.
- char szTargetName[MAX_IDSTRING + 1]; // 대상 유저 이름.
-
-} EXSDHP_GUILD_ASSIGN_STATUS_REQ, *LPEXSDHP_GUILD_ASSIGN_STATUS_REQ;
-
-
-//----------------------------------------------------------------------------
-// EXDG[0xE1] 직책을 임명 / 변경 / 해제 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE btFlag; // 요청서버인지 판단.
- WORD wUserIndex; // 임명하는 유저(길마, 부길마) 인덱스
- BYTE btType; // 임명(0x01) / 변경(0x02) / 해제(0x03)
- BYTE btResult; // 결과
-
- BYTE btGuildStatus; // 임명된 직책.
- char szGuildName[MAX_GUILDNAMESTRING + 1]; // 길드 이름.
- char szTargetName[MAX_IDSTRING + 1]; // 대상 유저 이름.
-
-} EXSDHP_GUILD_ASSIGN_STATUS_RESULT, *LPEXSDHP_GUILD_ASSIGN_STATUS_RESULT;
-
-#endif
-// ## ADD_NEW_GUILD_01_20040913
-
-
-#ifdef ADD_NEW_GUILD_02_20040922
-
-//----------------------------------------------------------------------------
-// GEXD[0xE2] 길드 타입을 설정하는 요청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- WORD wUserIndex; // 길드타입을 설정하는 유저 인덱스
- BYTE btGuildType; // 설정할 길드타입 일반길드(0x01) / 용병길드(0x02) / 클랜(0x03)
-
- char szGuildName[MAX_GUILDNAMESTRING + 1]; // 길드 이름.
-
-} EXSDHP_GUILD_ASSIGN_TYPE_REQ, *LPEXSDHP_GUILD_ASSIGN_TYPE_REQ;
-
-
-//----------------------------------------------------------------------------
-// EXDG[0xE2] 길드 타입을 설정하는 요청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE btFlag; // 요청서버인지 판단.
- WORD wUserIndex; // 임명하는 유저(길마, 부길마) 인덱스
- BYTE btGuildType; // 설정할 길드타입 일반길드(0x01) / 용병길드(0x02) / 클랜(0x03)
- BYTE btResult; // 결과
-
- char szGuildName[MAX_GUILDNAMESTRING + 1]; // 길드 이름.
-
-} EXSDHP_GUILD_ASSIGN_TYPE_RESULT, *LPEXSDHP_GUILD_ASSIGN_TYPE_RESULT;
-
-#endif
-
-
-#ifdef ADD_NEW_UNION_01_20041006
-typedef struct {}__UNION_SPROTOCOL_H___;
-//----------------------------------------------------------------------------
-// GEXD[0xE5] Union, Rival 관계 맺기
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- WORD wRequestUserIndex;
- WORD wTargetUserIndex;
-
- BYTE btRelationShipType;
-
- INT iRequestGuildNum;
- INT iTargetGuildNum;
-
-} EXSDHP_RELATIONSHIP_JOIN_REQ, *LPEXSDHP_RELATIONSHIP_JOIN_REQ;
-
-//----------------------------------------------------------------------------
-// EXDG[0xE5] Union, Rival 관계 맺기 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE btFlag; // 요청서버인지 판단.
- WORD wRequestUserIndex;
- WORD wTargetUserIndex;
-
- BYTE btResult; // 결과
-
- BYTE btRelationShipType;
-
- INT iRequestGuildNum;
- INT iTargetGuildNum;
-
- CHAR szRequestGuildName[MAX_GUILDNAMESTRING + 1];
- CHAR szTargetGuildName[MAX_GUILDNAMESTRING + 1];
-
-} EXSDHP_RELATIONSHIP_JOIN_RESULT, *LPEXSDHP_RELATIONSHIP_JOIN_RESULT;
-
-//----------------------------------------------------------------------------
-// GEXD[0xE6] Union, Rival 관계 끊기
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
-
- WORD wRequestUserIndex;
- WORD wTargetUserIndex; // 임명하는 유저(길마, 부길마) 인덱스
-
- BYTE btRelationShipType;
-
- INT iRequestGuildNum;
- INT iTargetGuildNum;
-
-} EXSDHP_RELATIONSHIP_BREAKOFF_REQ, *LPEXSDHP_RELATIONSHIP_BREAKOFF_REQ;
-
-//----------------------------------------------------------------------------
-// EXDG[0xE6] Union, Rival 관계 끊기 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- BYTE btFlag; // 요청서버인지 판단.
-
- WORD wRequestUserIndex;
- WORD wTargetUserIndex;
-
- BYTE btResult; // 결과
-
- BYTE btRelationShipType;
-
- INT iRequestGuildNum;
- INT iTargetGuildNum;
-
-} EXSDHP_RELATIONSHIP_BREAKOFF_RESULT, *LPEXSDHP_RELATIONSHIP_BREAKOFF_RESULT;
-
-
-//----------------------------------------------------------------------------
-// ★ EXDG[0xE7] 특정 Union 의 RelationShip 리스트 전송 ( BroadCastring 됨 )
-//----------------------------------------------------------------------------
-
-// 모든 길드는 유니온이다.
-// '공식적인 유니온'은 '유니온 2개 이상의 결합 유니온' 이다.
-// -> 공식유니온 = 유니온 + 유니온 + 유니온 + ...
-typedef struct
-{
- PWMSG_HEAD h;
-
- BYTE btFlag; // 요청서버인지 판단.
-
- BYTE btRelationShipType;
- BYTE btRelationShipMemberCount;
-
-#ifdef ADD_UNION_GET_UNIONMARK_01_20041222
- BYTE pUnionMasterGuildMark[MAX_GUILDMARKSIZE];
-#endif
-
- CHAR szUnionMasterGuildName[MAX_GUILDNAMESTRING + 1];
- INT iUnionMasterGuildNumber;
- INT iRelationShipMember[MAX_RELATIONSHIP_COUNT];
-} EXSDHP_UNION_RELATIONSHIP_LIST, *LPEXSDHP_UNION_RELATIONSHIP_LIST;
-
-//----------------------------------------------------------------------------
-// ★ EXDG[0xE8] 길드의 RelationShip 변경을 Notification 한다. ( BroadCastring 됨 )
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
-
- BYTE btFlag; // 요청서버인지 판단.
- BYTE btUpdateFlag; // 갱신된 목록에 대한 상세 정보
-
- // [0x10] 유니온 해체 됐다.
-
-
- BYTE btGuildListCount; // Guild 카운트.
- INT iGuildList[MAX_RELATIONSHIP_COUNT]; // Update 될 길드 리스트.
-
-} EXSDHP_NOTIFICATION_RELATIONSHIP, *LPEXSDHP_NOTIFICATION_RELATIONSHIP;
-
-//----------------------------------------------------------------------------
-// ★ EXDG[0xE9] 연합 리스트를 보내준다. ( P2P 됨 )
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
-
- WORD wRequestUserIndex;
- INT iUnionMasterGuildNumber;
-
-} EXSDHP_UNION_LIST_REQ, *LPEXSDHP_UNION_LIST_REQ;
-
-typedef struct
-{
- PWMSG_HEAD h;
- BYTE btCount;
- BYTE btResult;
-
- WORD wRequestUserIndex;
- INT iTimeStamp; // 캐싱을 위한 최근 갱신 시간을 보내준다.
-
- BYTE btRivalMemberNum;
- BYTE btUnionMemberNum;
-
-} EXSDHP_UNION_LIST_COUNT, *LPEXSDHP_UNION_LIST_COUNT;
-
-typedef struct
-{
- BYTE btMemberNum;
- BYTE Mark[MAX_GUILDMARKSIZE];
- char szGuildName[MAX_GUILDNAMESTRING];
-
-} EXSDHP_UNION_LIST, *LPEXSDHP_UNION_LIST;
-
-
-#endif
-
-#ifdef ADD_ABILITY_OF_UNIONMASTER_TO_KICK_OUT_UNIONMEMBER_01_20050418
-
-//----------------------------------------------------------------------------
-// GEXD[0xEB][0x01] Union Member 강제 탈퇴 요청
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
-
- WORD wRequestUserIndex;
-
- BYTE btRelationShipType;
-
- char szUnionMasterGuildName[MAX_GUILDNAMESTRING];
- char szUnionMemberGuildName[MAX_GUILDNAMESTRING];
-
-} EXSDHP_KICKOUT_UNIONMEMBER_REQ, *LPEXSDHP_KICKOUT_UNIONMEMBER_REQ;
-
-//----------------------------------------------------------------------------
-// EXDG[0xEB][0x01] Union Member 강제 탈퇴 결과
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- BYTE btFlag; // 요청서버인지 판단.
-
- WORD wRequestUserIndex;
- BYTE btRelationShipType;
-
- BYTE btResult; // 결과
-
- char szUnionMasterGuildName[MAX_GUILDNAMESTRING + 1];
- char szUnionMemberGuildName[MAX_GUILDNAMESTRING + 1];
-
-} EXSDHP_KICKOUT_UNIONMEMBER_RESULT, *LPEXSDHP_KICKOUT_UNIONMEMBER_RESULT;
-
-#endif
-
-
-#ifdef ADD_MANAGER_SENDMAIL
-//----------------------------------------------------------------------------
-// CG [0x63] 인증서버 -> 게임서버 쪽지 보내기
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
-
- char Name[MAX_IDSTRING];
- char TargetName[MAX_IDSTRING];
- char Subject[MAX_MEMO_SUBJECT];
- short MemoSize;
- char Memo[MAX_MEMO];
-} PMSG_JG_MEMO_SEND, *LPPMSG_JG_MEMO_SEND;
-#endif
-
-
-#ifdef MU_CASTLESIEGE_DS_PROTOCOL_20041105 // 공성전 관련 추가된 프로토콜 (GS <-> DS)
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x00] 성 전체 정보 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCastleEventCycle; // 공성전 주기
-} CSP_REQ_CASTLEDATA, *LPCSP_REQ_CASTLEDATA;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x00] 성 전체 정보 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- WORD wStartYear; // 공성 시작 - 년
- BYTE btStartMonth; // 공성 시작 - 월
- BYTE btStartDay; // 공성 시작 - 일
- WORD wEndYear; // 공성 종료 - 년
- BYTE btEndMonth; // 공성 종료 - 월
- BYTE btEndDay; // 공성 종료 - 일
- BYTE btIsSiegeGuildList; // 공성관련 길드정보가 이미 구축되었는가 ?
- BYTE btIsSiegeEnded; // 공성이 이미 치루어 졌는가 ?
- BYTE btIsCastleOccupied; // 성이 이미 사용자들에게 차지된 상태인가 ?
- CHAR szCastleOwnGuild[MAX_GUILDNAMESTRING]; // 캐슬을 차지한 길드명 (없으면 "")
- INT64 i64CastleMoney; // 현재 성의 보유 젠
- INT iTaxRateChaos; // 카오스 조합 세율
- INT iTaxRateStore; // 상점 세율
- INT iTaxHuntZone; // 사냥터 입장료
- INT iFirstCreate; // 이것이 최초로 만드는 것인가 ?
-} CSP_ANS_CASTLEDATA, *LPCSP_ANS_CASTLEDATA;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x01] 수성측 길드의 길마이름 요청 -> 경비병 NPC 성 상태 출력 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
-} CSP_REQ_OWNERGUILDMASTER, *LPCSP_REQ_OWNERGUILDMASTER;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x01] 수성측 길드의 길마이름 요청 응답 -> 경비병 NPC 성 상태 출력 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공/2:성주인없음/3:성정보비정상/4:성길드없어짐)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- CHAR szCastleOwnGuild[MAX_GUILDNAMESTRING]; // 캐슬을 차지한 길드명 (없으면 "")
- CHAR szCastleOwnGuildMaster[MAX_IDSTRING]; // 캐슬을 차지한 길드마스터명 (없으면 "")
-} CSP_ANS_OWNERGUILDMASTER, *LPCSP_ANS_OWNERGUILDMASTER;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x03] 수성측 NPC 구입 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
- INT iNpcDfLevel; // 방어력 레벨
- INT iNpcRgLevel; // 회복력 레벨
- INT iNpcMaxHp; // 최대 HP
- INT iNpcHp; // HP
- BYTE btNpcX; // 좌표 - X
- BYTE btNpcY; // 좌표 - Y
- BYTE btNpcDIR; // 방향
- INT iBuyCost; // NPC구입비용
-} CSP_REQ_NPCBUY, *LPCSP_REQ_NPCBUY;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x03] 수성측 NPC 구입 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
- INT iBuyCost; // NPC구입비용
-} CSP_ANS_NPCBUY, *LPCSP_ANS_NPCBUY;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x04] 수성측 NPC 수리 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
- INT iRepairCost; // NPC수리비용
-} CSP_REQ_NPCREPAIR, *LPCSP_REQ_NPCREPAIR;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x04] 수성측 NPC 수리 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
- INT iNpcMaxHp; // 최대 HP
- INT iNpcHp; // 수정될 HP
- INT iRepairCost; // NPC수리비용
-} CSP_ANS_NPCREPAIR, *LPCSP_ANS_NPCREPAIR;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x05] 수성측 NPC 업그레이드 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
- INT iNpcUpType; // NPC업그레이드 타입 (1:방어력/2:회복력/3:최대HP)
- INT iNpcUpValue; // NPC업그레이드 수치
- INT iNpcUpIndex; // NPC업그레이드 레벨의 인덱스 (MAX HP도 레벨화)
-} CSP_REQ_NPCUPGRADE, *LPCSP_REQ_NPCUPGRADE;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x05] 수성측 NPC 업그레이드 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
- INT iNpcUpType; // NPC업그레이드 타입 (1:방어력/2:회복력/3:최대HP)
- INT iNpcUpValue; // NPC업그레이드 수치
- INT iNpcUpIndex; // NPC업그레이드 레벨의 인덱스 (MAX HP도 레벨화)
-} CSP_ANS_NPCUPGRADE, *LPCSP_ANS_NPCUPGRADE;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x06] 성주측 세금정보 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
-} CSP_REQ_TAXINFO, *LPCSP_REQ_TAXINFO;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x06] 성주측 세금정보 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT64 i64CastleMoney; // 현재 성의 자금
- INT iTaxRateChaos; // 카오스 조합 세율
- INT iTaxRateStore; // 상점 세율
- INT iTaxHuntZone; // 사냥터 입장료
-} CSP_ANS_TAXINFO, *LPCSP_ANS_TAXINFO;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x07] 성주측 성정보 수정 요청 - 세율 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iTaxKind; // 세율 종류 (1:카오스 조합 / 2:상점 / 3:사냥터 입장료)
- INT iTaxRate; // 세율
-} CSP_REQ_TAXRATECHANGE, *LPCSP_REQ_TAXRATECHANGE;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x07] 성주측 성정보 수정 요청 응답 - 세율 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iTaxKind; // 세율 종류 (1:카오스 조합 / 2:상점 / 3:사냥터 입장료)
- INT iTaxRate; // 세율
-} CSP_ANS_TAXRATECHANGE, *LPCSP_ANS_TAXRATECHANGE;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x08] 성주측 성정보 수정요청 - 소유 젠 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iMoneyChanged; // 상대적인 젠 증가분 (+/-)
-} CSP_REQ_MONEYCHANGE, *LPCSP_REQ_MONEYCHANGE;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x08] 성주측 성정보 수정요청 응답 - 소유 젠 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iMoneyChanged; // 상대적인 젠 증가분 (+/-)
- INT64 i64CastleMoney; // 계산된 결과
-} CSP_ANS_MONEYCHANGE, *LPCSP_ANS_MONEYCHANGE;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x09] 성주측 성정보 수정요청 - 공성 시작/종료 날짜 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- WORD wStartYear; // 공성 시작 - 년
- BYTE btStartMonth; // 공성 시작 - 월
- BYTE btStartDay; // 공성 시작 - 일
- WORD wEndYear; // 공성 종료 - 년
- BYTE btEndMonth; // 공성 종료 - 월
- BYTE btEndDay; // 공성 종료 - 일
-} CSP_REQ_SDEDCHANGE, *LPCSP_REQ_SDEDCHANGE;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x09] 성주측 성정보 수정요청 응답 - 공성 시작/종료 날짜 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- WORD wStartYear; // 공성 시작 - 년
- BYTE btStartMonth; // 공성 시작 - 월
- BYTE btStartDay; // 공성 시작 - 일
- WORD wEndYear; // 공성 종료 - 년
- BYTE btEndMonth; // 공성 종료 - 월
- BYTE btEndDay; // 공성 종료 - 일
-} CSP_ANS_SDEDCHANGE, *LPCSP_ANS_SDEDCHANGE;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x0A] 공성측 특정 등록 길드 정보 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
-} CSP_REQ_GUILDREGINFO, *LPCSP_REQ_GUILDREGINFO;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x0A] 공성측 특정 등록 길드 정보 요청 응답 (0xC2)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
- INT iRegMarkCount; // 등록된 문장수
- bool bIsGiveUp; // 포기여부
- BYTE btRegRank; // 등록순위
-} CSP_ANS_GUILDREGINFO, *LPCSP_ANS_GUILDREGINFO;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x0B] 성주측 성정보 수정요청 - 공성 종료 여부 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- BOOL bIsSiegeEnded; // 공성 종료 여부
-} CSP_REQ_SIEGEENDCHANGE, *LPCSP_REQ_SIEGEENDCHANGE;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x0B] 성주측 성정보 수정요청 응답 - 공성 종료 여부 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- BOOL bIsSiegeEnded; // 공성 종료 여부
-} CSP_ANS_SIEGEENDCHANGE, *LPCSP_ANS_SIEGEENDCHANGE;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x0C] 성주측 성정보 수정요청 - 성의 주인길드, 차지된 상태 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- BOOL bIsCastleOccupied; // 성이 이미 차지되었는가 ?
- CHAR szOwnerGuildName[MAX_GUILDNAMESTRING]; // 성의 주인길드 이름
-} CSP_REQ_CASTLEOWNERCHANGE, *LPCSP_REQ_CASTLEOWNERCHANGE;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x0C] 성주측 성정보 수정요청 응답 - 성의 주인길드, 차지된 상태 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- BOOL bIsCastleOccupied; // 성이 이미 차지되었는가 ?
- CHAR szOwnerGuildName[MAX_GUILDNAMESTRING]; // 성의 주인길드 이름
-} CSP_ANS_CASTLEOWNERCHANGE, *LPCSP_ANS_CASTLEOWNERCHANGE;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x0D] 공성측 길드의 공성전 등록 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- CHAR szEnemyGuildName[MAX_GUILDNAMESTRING]; // 최종 공격길드 이름
-} CSP_REQ_REGATTACKGUILD, *LPCSP_REQ_REGATTACKGUILD;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x0D] 공성측 길드의 공성전 등록 요청 응답 C1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공/2:이미등록됨/3:수성측길드/4:길드없음/5:길마레벨부족/6:등록길드수초과/7:길드원수부족)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- CHAR szEnemyGuildName[MAX_GUILDNAMESTRING]; // 최종 공격길드 이름
-} CSP_ANS_REGATTACKGUILD, *LPCSP_ANS_REGATTACKGUILD;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x0E] 공성주기 끝 - 정보 초기화 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_REQ_CASTLESIEGEEND, *LPCSP_REQ_CASTLESIEGEEND;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x0E] 공성주기 끝 - 정보 초기화 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_ANS_CASTLESIEGEEND, *LPCSP_ANS_CASTLESIEGEEND;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x0F] 자신의 맵서버군에게 특정 메시지 전달 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- CHAR szMsgText[128]; // 자신의 맵서버군에게 전달할 메시지
-} CSP_REQ_MAPSVRMULTICAST, *LPCSP_REQ_MAPSVRMULTICAST;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x0F] 자신의 맵서버군에게 특정 메시지 전달 요청 -> 전달 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- CHAR szMsgText[128]; // 자신의 맵서버군에게 전달할 메시지
-} CSP_ANS_MAPSVRMULTICAST, *LPCSP_ANS_MAPSVRMULTICAST;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x10] 공성측 특정 등록 길드 마크 등록 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
- INT iItemPos; // 성주의 표식의 위치
-} CSP_REQ_GUILDREGMARK, *LPCSP_REQ_GUILDREGMARK;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x10] 공성측 특정 등록 길드 마크 등록 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
- INT iItemPos; // 성주의 표식의 위치
- INT iRegMarkCount; // 등록된 문장수
-} CSP_ANS_GUILDREGMARK, *LPCSP_ANS_GUILDREGMARK;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x11] 공성측 특정 등록 길드 마크 개수 초기화 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
-} CSP_REQ_GUILDRESETMARK, *LPCSP_REQ_GUILDRESETMARK;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x11] 공성측 특정 등록 길드 마크 개수 초기화 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
- INT iRegMarkCount; // 이전까지 등록된 문장수 (현재는 없는것)
-} CSP_ANS_GUILDRESETMARK, *LPCSP_ANS_GUILDRESETMARK;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x12] 공성측 특정 등록 길드 공성 포기여부 수정 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
- BOOL bIsGiveUp; // 공성 포기여부
-} CSP_REQ_GUILDSETGIVEUP, *LPCSP_REQ_GUILDSETGIVEUP;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x12] 공성측 특정 등록 길드 공성 포기여부 수정 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
- BOOL bIsGiveUp; // 공성 포기여부
- INT iRegMarkCount; // 등록된 문장수 (DB에서는 지워지고 돈으로 환불 받을 것)
-} CSP_ANS_GUILDSETGIVEUP, *LPCSP_ANS_GUILDSETGIVEUP;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x16] 수성측 NPC 제거 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
-} CSP_REQ_NPCREMOVE, *LPCSP_REQ_NPCREMOVE;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x16] 수성측 NPC 제거 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
-} CSP_ANS_NPCREMOVE, *LPCSP_ANS_NPCREMOVE;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x17] 현재의 공성상태 동기화 요청 (상태, 세율) (0xC1)
-//----------------------------------------------------------------------------
-typedef struct {
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCastleState; // 현재 성 상태
- INT iTaxRateChaos; // 현재 성 세율 (카오스 조합)
- INT iTaxRateStore; // 현재 성 세율 (상점)
- INT iTaxHuntZone; // 사냥터 입장료
- CHAR szOwnerGuildName[MAX_GUILDNAMESTRING]; // 현재 성을 차지하고 있는 길드이름
-} CSP_REQ_CASTLESTATESYNC, *LPCSP_REQ_CASTLESTATESYNC;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x17] 현재의 공성상태 동기화 요청 응답 (상태, 세율) (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCastleState; // 현재 성 상태
- INT iTaxRateChaos; // 현재 성 세율 (카오스 조합)
- INT iTaxRateStore; // 현재 성 세율 (상점)
- INT iTaxHuntZone; // 사냥터 입장료
- CHAR szOwnerGuildName[MAX_GUILDNAMESTRING]; // 현재 성을 차지하고 있는 길드이름
-} CSP_ANS_CASTLESTATESYNC, *LPCSP_ANS_CASTLESTATESYNC;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x18] 맵서버군의 성 공납금 추가 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct {
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCastleTributeMoney; // 성 공납금
-} CSP_REQ_CASTLETRIBUTEMONEY, *LPCSP_REQ_CASTLETRIBUTEMONEY;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x18] 맵서버군의 성 공납금 추가 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct {
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_ANS_CASTLETRIBUTEMONEY, *LPCSP_ANS_CASTLETRIBUTEMONEY;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x19] 맵서버군의 성 세율, 돈 초기화 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct {
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_REQ_RESETCASTLETAXINFO, *LPCSP_REQ_RESETCASTLETAXINFO;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x19] 맵서버군의 성 세율, 돈 초기화 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct {
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_ANS_RESETCASTLETAXINFO, *LPCSP_ANS_RESETCASTLETAXINFO;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x1A] 공성 참여길드 리스트 초기화 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct {
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_REQ_RESETSIEGEGUILDINFO, *LPCSP_REQ_RESETSIEGEGUILDINFO;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x1A] 공성 참여길드 리스트 초기화 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct {
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_ANS_RESETSIEGEGUILDINFO, *LPCSP_ANS_RESETSIEGEGUILDINFO;
-
-
-//----------------------------------------------------------------------------
-// GD [0x80][0x1B] 공성 참여신청 길드 리스트 초기화 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct {
- PBMSG_HEAD2 h;
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_REQ_RESETREGSIEGEINFO, *LPCSP_REQ_RESETREGSIEGEINFO;
-
-
-//----------------------------------------------------------------------------
-// DG [0x80][0x1B] 공성 참여신청 길드 리스트 초기화 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct {
- PBMSG_HEAD2 h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_ANS_RESETREGSIEGEINFO, *LPCSP_ANS_RESETREGSIEGEINFO;
-
-
-//----------------------------------------------------------------------------
-// GD [0x81] 공성전 최초 모든 초기화 데이터 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCastleEventCycle; // 공성전 주기
-} CSP_REQ_CSINITDATA, *LPCSP_REQ_CSINITDATA;
-
-
-//----------------------------------------------------------------------------
-// DG [0x81] 공성전 최초 모든 초기화 데이터 요청 응답 (0xC2)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- WORD wStartYear; // 공성 시작 - 년
- BYTE btStartMonth; // 공성 시작 - 월
- BYTE btStartDay; // 공성 시작 - 일
- WORD wEndYear; // 공성 종료 - 년
- BYTE btEndMonth; // 공성 종료 - 월
- BYTE btEndDay; // 공성 종료 - 일
- BYTE btIsSiegeGuildList; // 공성관련 길드정보가 이미 구축되었는가 ?
- BYTE btIsSiegeEnded; // 공성이 이미 치루어 졌는가 ?
- BYTE btIsCastleOccupied; // 성이 이미 사용자들에게 차지된 상태인가 ?
- CHAR szCastleOwnGuild[MAX_GUILDNAMESTRING]; // 캐슬을 차지한 길드명 (없으면 "")
- INT64 i64CastleMoney; // 현재 성의 보유 젠
- INT iTaxRateChaos; // 카오스 조합 세율
- INT iTaxRateStore; // 상점 세율
- INT iTaxHuntZone; // 사냥터 입장료
- INT iFirstCreate; // 이것이 최초로 만드는 것인가 ?
- INT iCount; // 데이터 개수
-} CSP_ANS_CSINITDATA, *LPCSP_ANS_CSINITDATA;
-
-typedef struct
-{
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
- INT iNpcDfLevel; // 방어력 레벨
- INT iNpcRgLevel; // 회복력 레벨
- INT iNpcMaxHp; // 최대 HP
- INT iNpcHp; // HP
- BYTE btNpcX; // 좌표 - X
- BYTE btNpcY; // 좌표 - Y
- BYTE btNpcDIR; // 방향
-} CSP_CSINITDATA, *LPCSP_CSINITDATA;
-
-
-//----------------------------------------------------------------------------
-// GD [0x82] 수성측 NPC정보 정보 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
-} CSP_REQ_NPCDATA, *LPCSP_REQ_NPCDATA;
-
-
-//----------------------------------------------------------------------------
-// DG [0x82] 수성측 NPC정보 정보 요청 응답 (0xC2)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iCount; // 데이터 개수
-} CSP_ANS_NPCDATA, *LPCSP_ANS_NPCDATA;
-
-typedef struct
-{
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
- INT iNpcDfLevel; // 방어력 레벨
- INT iNpcRgLevel; // 회복력 레벨
- INT iNpcMaxHp; // 최대 HP
- INT iNpcHp; // HP
- BYTE btNpcX; // 좌표 - X
- BYTE btNpcY; // 좌표 - Y
- BYTE btNpcDIR; // 방향
-} CSP_NPCDATA, *LPCSP_NPCDATA;
-
-
-//----------------------------------------------------------------------------
-// GD [0x83] 공성측 등록 길드 정보 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PBMSG_HEAD h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
-} CSP_REQ_ALLGUILDREGINFO, *LPCSP_REQ_ALLGUILDREGINFO;
-
-
-//----------------------------------------------------------------------------
-// DG [0x83] 공성측 등록 길드 정보 요청 응답 (0xC2)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iIndex; // 게임서버 오브젝트 인덱스
- INT iCount; // 데이터 개수
-} CSP_ANS_ALLGUILDREGINFO, *LPCSP_ANS_ALLGUILDREGINFO;
-
-typedef struct
-{
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
- INT iRegMarkCount; // 등록된 문장수
- bool bIsGiveUp; // 포기여부
- BYTE btRegRank; // 등록순위
-} CSP_GUILDREGINFO, *LPCSP_GUILDREGINFO;
-
-
-//----------------------------------------------------------------------------
-// GD [0x84] 수성측 NPC 리스트 즉시 생성 요청 (0xC2)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCount; // 데이터 개수
-} CSP_REQ_NPCSAVEDATA, *LPCSP_REQ_NPCSAVEDATA;
-
-typedef struct
-{
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
- INT iNpcDfLevel; // 방어력 레벨
- INT iNpcRgLevel; // 회복력 레벨
- INT iNpcMaxHp; // 최대 HP
- INT iNpcHp; // HP
- BYTE btNpcX; // 좌표 - X
- BYTE btNpcY; // 좌표 - Y
- BYTE btNpcDIR; // 방향
-} CSP_NPCSAVEDATA, *LPCSP_NPCSAVEDATA;
+#ifdef UPDATE_OPTIONKEY_LEVEL_20080116
+ int QWERLevel; // 클라이언트는 BYTE QWERLevel[4] 사용
+#endif
+ BYTE EnableTransfromMode;
+ short PlayGuideLv;
+ BYTE PlayGuideCheck;
+} SDHP_SKILLKEYDATA_SEND, *LPSDHP_SKILLKEYDATA_SEND;
//----------------------------------------------------------------------------
-// DG [0x84] 수성측 NPC 리스트 즉시 생성 요청 응답 (0xC1)
+// [0x60] 이벤트 시작을 알린다.
//----------------------------------------------------------------------------
typedef struct
{
PBMSG_HEAD h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_ANS_NPCSAVEDATA, *LPCSP_ANS_NPCSAVEDATA;
+ BYTE Event;
+} SDHP_EVENTSTART, *LPSDHP_EVENTSTART;
//----------------------------------------------------------------------------
-// GD [0x85] 공성측 길드선정 후보자료 요청 (0xC1)
+// [0x61] 인증서버에서 이벤트 시작 또는 종료를 알린다
//----------------------------------------------------------------------------
typedef struct
{
PBMSG_HEAD h;
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_REQ_CALCREGGUILDLIST, *LPCSP_REQ_CALCREGGUILDLIST;
-
-
-//----------------------------------------------------------------------------
-// DG [0x85] 공성측 길드선정 후보자료 요청 응답 (0xC2)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCount; // 데이터 개수
-} CSP_ANS_CALCREGGUILDLIST, *LPCSP_ANS_CALCREGGUILDLIST;
-
-typedef struct
-{
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
- INT iRegMarkCount; // 등록된 문장수
- INT iGuildMemberCount; // 길드멤버 수
- INT iGuildMasterLevel; // 길드마스터 레벨
- INT iSeqNum; // 등록 순서
-} CSP_CALCREGGUILDLIST, *LPCSP_CALCREGGUILDLIST;
+ BYTE Event; // 이벤트 번호
+ BYTE Stat; // 상태 0 : 종료 1 : 시작
+} SDHP_EVENTCONTROL, *LPSDHP_EVENTCONTROL;
//----------------------------------------------------------------------------
-// GD [0x86] 공/수 길드의 연합정보를 요청 (0xC2)
+// [0x62] 인증서버에서 Reload 설정을 알린다
//----------------------------------------------------------------------------
typedef struct
{
- PWMSG_HEAD h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCount; // 데이터 개수
-} CSP_REQ_CSGUILDUNIONINFO, *LPCSP_REQ_CSGUILDUNIONINFO;
+ PBMSG_HEAD h;
+ BYTE Option; // 옵션 번호
+} SDHP_OPTIONCONTROL, *LPSDHP_OPTIONCONTROL;
+// 0x30
typedef struct
{
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
- INT iCsGuildID; // 공성시 사용하는 공/수 길드 체크값
-} CSP_CSGUILDUNIONINFO, *LPCSP_CSGUILDUNIONINFO;
-
+ PBMSG_HEAD h;
+ char Account[MAX_IDSTRING];
+ char Name[MAX_IDSTRING];
+} SDHP_LOVEHEARTEVENT, *LPSDHP_LOVEHEARTEVENT;
-//----------------------------------------------------------------------------
-// DG [0x86] 공/수 길드의 연합정보를 요청 응답 (0xC2)
-//----------------------------------------------------------------------------
+// 0x30
typedef struct
{
- PWMSG_HEAD h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCount; // 데이터 개수
-} CSP_ANS_CSGUILDUNIONINFO, *LPCSP_ANS_CSGUILDUNIONINFO;
-
-// 응답으로 이 뒤에 CSP_CSGUILDUNIONINFO 의 데이터가 iCount 개 존재
-
+ PBMSG_HEAD h;
-//----------------------------------------------------------------------------
-// GD [0x87] 공/수 길드의 최종정보를 저장 요청 (0xC2)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCount; // 데이터 개수
-} CSP_REQ_CSSAVETOTALGUILDINFO, *LPCSP_REQ_CSSAVETOTALGUILDINFO;
+ BYTE Result;
-typedef struct
-{
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
- INT iCsGuildID; // 공/수 각 길드의 고유의 ID (1:수성 / 2이상:공성)
- INT iGuildInvolved; // 공성전의 당사자 길드 들인가 ?
-#ifdef ADD_CASTLE_TOTAL_GUILD_SCORE_20061123
- INT iGuildScore; // 선정될 당시의 길드 점수
-#endif
-} CSP_CSSAVETOTALGUILDINFO, *LPCSP_CSSAVETOTALGUILDINFO;
+ char Name[MAX_IDSTRING];
+ int Number;
+} SDHP_LOVEHEARTEVENT_RESULT, *LPSDHP_LOVEHEARTEVENT_RESULT;
-//----------------------------------------------------------------------------
-// DG [0x87] 공/수 길드의 최종정보를 저장 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
+// 0x40 전체 공지
typedef struct
{
PBMSG_HEAD h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_ANS_CSSAVETOTALGUILDINFO, *LPCSP_ANS_CSSAVETOTALGUILDINFO;
-
+ char Notice[61];
+} SDHP_NOTICE, *LPSDHP_NOTICE;
-//----------------------------------------------------------------------------
-// GD [0x88] 공/수 길드의 최종정보를 불러오기 요청 (0xC1)
-//----------------------------------------------------------------------------
+// 0x41 유저 공지
typedef struct
{
PBMSG_HEAD h;
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_REQ_CSLOADTOTALGUILDINFO, *LPCSP_REQ_CSLOADTOTALGUILDINFO;
+ char szId[10];
+ char Notice[61];
+} SDHP_USER_NOTICE, *LPSDHP_USER_NOTICE;
-//----------------------------------------------------------------------------
-// DG [0x88] 공/수 길드의 최종정보를 불러오기 요청 응답 (0xC2)
-//----------------------------------------------------------------------------
+// 0x42 게임 블럭
typedef struct
{
- PWMSG_HEAD h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCount; // 데이터 개수
-} CSP_ANS_CSLOADTOTALGUILDINFO, *LPCSP_ANS_CSLOADTOTALGUILDINFO;
+ PBMSG_HEAD h;
+ int ClientIndex;
+ char AccountID[MAX_IDSTRING];
+ BYTE ServerNum;
+ char CharName[MAX_IDSTRING];
+ BYTE Type;
+} SDHP_GAME_BLOCK, *LPSDHP_GAME_BLOCK;
+// 0x42 게임 블럭 결과
typedef struct
{
- CHAR szGuildName[MAX_GUILDNAMESTRING]; // 길드이름
- INT iCsGuildID; // 공/수 각 길드의 고유의 ID (1:수성 / 2이상:공성)
- INT iGuildInvolved; // 공성전의 당사자 길드 들인가 ?
-#ifdef ADD_CASTLE_TOTAL_GUILD_SCORE_20061123
- INT iGuildScore; // 길드 선정 당시의 점수
-#endif
-} CSP_CSLOADTOTALGUILDINFO, *LPCSP_CSLOADTOTALGUILDINFO;
-
+ PBMSG_HEAD h;
+ BYTE Result;
+} SDHP_GAME_BLOCK_RESULT, *LPSDHP_GAME_BLOCK_RESULT;
-//----------------------------------------------------------------------------
-// GD [0x89] 수성측 NPC 리스트 정보갱신 요청 (0xC2)
-//----------------------------------------------------------------------------
-typedef struct
-{
- PWMSG_HEAD h;
- WORD wMapSvrNum; // 맵 서버군 번호
- INT iCount; // 데이터 개수
-} CSP_REQ_NPCUPDATEDATA, *LPCSP_REQ_NPCUPDATEDATA;
+// 0xCF 캐릭터 이동
typedef struct
{
- INT iNpcNumber; // NPC번호
- INT iNpcIndex; // NPC인덱스
- INT iNpcDfLevel; // 방어력 레벨
- INT iNpcRgLevel; // 회복력 레벨
- INT iNpcMaxHp; // 최대 HP
- INT iNpcHp; // HP
- BYTE btNpcX; // 좌표 - X
- BYTE btNpcY; // 좌표 - Y
- BYTE btNpcDIR; // 방향
-} CSP_NPCUPDATEDATA, *LPCSP_NPCUPDATEDATA;
-
+ PBMSG_HEAD h;
+ char Account[MAX_IDSTRING];
+ short Number;
+} SDHP_CHARACTER_TRANSFER, *LPSDHP_CHARACTER_TRANSFER;
-//----------------------------------------------------------------------------
-// DG [0x89] 수성측 NPC 리스트 정보갱신 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
typedef struct
{
PBMSG_HEAD h;
- INT iResult; // 성공여부 (0:실패/1:성공)
- WORD wMapSvrNum; // 맵 서버군 번호
-} CSP_ANS_NPCUPDATEDATA, *LPCSP_ANS_NPCUPDATEDATA;
-
-
-#endif // MU_CASTLESIEGE_DS_PROTOCOL_20041105
-
-
-
-
-
-#ifdef MU_CRYWOLF_DS_PROTOCOL_20050505 // 크라이울프 관련 GS <-> DS 프로토콜 정의
+ char Account[MAX_IDSTRING];
+ short Number;
+ BYTE Result;
+} SDHP_CHARACTER_TRANSFER_RESULT, *LPSDHP_CHARACTER_TRANSFER_RESULT;
//----------------------------------------------------------------------------
-// GD [0xB0] 크라이울프 현재 상태 동기화 요청 (0xC1)
+// GD[0x16] 캐릭터 변경을 요청.
//----------------------------------------------------------------------------
typedef struct
{
PBMSG_HEAD h;
-
- WORD wMapSvrNum; // 맵 서버군 번호
-
- INT iCrywolfState; // 현재 크라이울프 진행 상태
- INT iOccupationState; // 현재 크라이울프 점령 상태
-
-} CWP_REQ_CRYWOLFSYNC, *LPCWP_REQ_CRYWOLFSYNC;
-
+ int aIndex;
+ char AccountId[MAX_IDSTRING];
+ char OldName[MAX_IDSTRING];
+ char NewName[MAX_IDSTRING];
+} SDHP_CHANGE_NAME, *LPSDHP_CHANGE_NAME;
//----------------------------------------------------------------------------
-// DG [0xB0] 크라이울프 현재 상태 동기화 요청 응답 (0xC1)
+// DG[0x16] 캐릭터 변경을 요청 결과.
//----------------------------------------------------------------------------
typedef struct
{
PBMSG_HEAD h;
+ int aIndex;
+ char AccountId[MAX_IDSTRING];
+ char OldName[MAX_IDSTRING];
+ char NewName[MAX_IDSTRING];
+ BYTE btResult; // 0: 성공, 1: 동일 캐릭터명 존재
+} SDHP_CHANGE_NAME_RESULT, *LPSDHP_CHANGE_NAME_RESULT;
- BYTE btResult;
- INT iCrywolfState; // 현재 크라이울프 진행 상태
- INT iOccupationState; // 현재 크라이울프 점령 상태
+typedef struct CSP_REQ_CASTLEDATA
+{
+ PBMSG_HEAD2 h; // C1:80:00 GS->DS
+ WORD wMapSvrNum;
+ int iCastleEventCycle;
+} *LPCSP_REQ_CASTLEDATA;
+
+typedef struct CSP_ANS_CASTLEDATA
+{
+ PBMSG_HEAD2 h; // C1:80:00 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ WORD wStartYear;
+ BYTE btStartMonth;
+ BYTE btStartDay;
+ WORD wEndYear;
+ BYTE btEndMonth;
+ BYTE btEndDay;
+ BYTE btIsSiegeGuildList;
+ BYTE btIsSiegeEnded;
+ BYTE btIsCastleOccupied;
+ char szCastleOwnGuild[MAX_GUILDNAMESTRING];
+ __int64 i64CastleMoney;
+ int iTaxRateChaos;
+ int iTaxRateStore;
+ int iTaxHuntZone;
+ int iFirstCreate;
+} *LPCSP_ANS_CASTLEDATA;
+
+typedef struct CSP_REQ_OWNERGUILDMASTER
+{
+ PBMSG_HEAD2 h; // C1:80:01 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+} *LPCSP_REQ_OWNERGUILDMASTER;
+
+typedef struct CSP_ANS_OWNERGUILDMASTER
+{
+ PBMSG_HEAD2 h; // C1:80:01 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ char szCastleOwnGuild[MAX_GUILDNAMESTRING];
+ char szCastleOwnGuildMaster[MAX_IDSTRING];
+} *LPCSP_ANS_OWNERGUILDMASTER;
+
+typedef struct CSP_REQ_NPCBUY
+{
+ PBMSG_HEAD2 h; // C1:80:03 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+ int iNpcNumber;
+ int iNpcIndex;
+ int iNpcDfLevel;
+ int iNpcRgLevel;
+ int iNpcMaxHp;
+ int iNpcHp;
+ BYTE btNpcX;
+ BYTE btNpcY;
+ BYTE btNpcDIR;
+ int iBuyCost;
+} *LPCSP_REQ_NPCBUY;
+
+typedef struct CSP_ANS_NPCBUY
+{
+ PBMSG_HEAD2 h; // C1:80:03 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ int iNpcNumber;
+ int iNpcIndex;
+ int iBuyCost;
+} *LPCSP_ANS_NPCBUY;
+
+typedef struct CSP_REQ_NPCREPAIR
+{
+ PBMSG_HEAD2 h; // C1:80:04 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+ int iNpcNumber;
+ int iNpcIndex;
+ int iRepairCost;
+} *LPCSP_REQ_NPCREPAIR;
+
+typedef struct CSP_ANS_NPCREPAIR
+{
+ PBMSG_HEAD2 h; // C1:80:04 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ int iNpcNumber;
+ int iNpcIndex;
+ int iNpcMaxHp;
+ int iNpcHp;
+ int iRepairCost;
+} *LPCSP_ANS_NPCREPAIR;
+
+typedef struct CSP_REQ_NPCUPGRADE
+{
+ PBMSG_HEAD2 h; // C1:80:05 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+ int iNpcNumber;
+ int iNpcIndex;
+ int iNpcUpType;
+ int iNpcUpValue;
+ int iNpcUpIndex;
+} *LPCSP_REQ_NPCUPGRADE;
+
+typedef struct CSP_ANS_NPCUPGRADE
+{
+ PBMSG_HEAD2 h; // C1:80:05 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ int iNpcNumber;
+ int iNpcIndex;
+ int iNpcUpType;
+ int iNpcUpValue;
+ int iNpcUpIndex;
+} *LPCSP_ANS_NPCUPGRADE;
+
+typedef struct CSP_REQ_TAXINFO
+{
+ PBMSG_HEAD2 h; // C1:80:06 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+} *LPCSP_REQ_TAXINFO;
+
+typedef struct CSP_ANS_TAXINFO
+{
+ PBMSG_HEAD2 h; // C1:80:06 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ __int64 i64CastleMoney;
+ int iTaxRateChaos;
+ int iTaxRateStore;
+ int iTaxHuntZone;
+} *LPCSP_ANS_TAXINFO;
+
+typedef struct CSP_REQ_TAXRATECHANGE
+{
+ PBMSG_HEAD2 h; // C1:80:07 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+ int iTaxKind;
+ int iTaxRate;
+} *LPCSP_REQ_TAXRATECHANGE;
+
+typedef struct CSP_ANS_TAXRATECHANGE
+{
+ PBMSG_HEAD2 h; // C1:80:07 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ int iTaxKind;
+ int iTaxRate;
+} *LPCSP_ANS_TAXRATECHANGE;
+
+
+typedef struct CSP_REQ_MONEYCHANGE
+{
+ PBMSG_HEAD2 h; // C1:80:08 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+ int iMoneyChanged;
+} *LPCSP_REQ_MONEYCHANGE;
+
+typedef struct CSP_ANS_MONEYCHANGE
+{
+ PBMSG_HEAD2 h; // C1:80:08 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ int iMoneyChanged;
+ __int64 i64CastleMoney;
+} *LPCSP_ANS_MONEYCHANGE;
+
+typedef struct CSP_REQ_SDEDCHANGE
+{
+ PBMSG_HEAD2 h; // C1:80:09 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+ WORD wStartYear;
+ BYTE btStartMonth;
+ BYTE btStartDay;
+ WORD wEndYear;
+ BYTE btEndMonth;
+ BYTE btEndDay;
+} *LPCSP_REQ_SDEDCHANGE;
+
+typedef struct CSP_ANS_SDEDCHANGE
+{
+ PBMSG_HEAD2 h; // C1:80:09 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ WORD wStartYear;
+ BYTE btStartMonth;
+ BYTE btStartDay;
+ WORD wEndYear;
+ BYTE btEndMonth;
+ BYTE btEndDay;
+} *LPCSP_ANS_SDEDCHANGE;
+
+typedef struct CSP_REQ_GUILDREGINFO
+{
+ PBMSG_HEAD2 h; // C1:80:0A GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+ char szGuildName[MAX_GUILDNAMESTRING];
+} *LPCSP_REQ_GUILDREGINFO;
+
+typedef struct CSP_ANS_GUILDREGINFO
+{
+ PBMSG_HEAD2 h; // C1:80:0A DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ char szGuildName[MAX_GUILDNAMESTRING];
+ int iRegMarkCount;
+ bool bIsGiveUp;
+ BYTE btRegRank;
+} *LPCSP_ANS_GUILDREGINFO;
+
+typedef struct CSP_REQ_SIEGEENDCHANGE
+{
+ PBMSG_HEAD2 h; // C1:80:0B GS->DS
+ WORD wMapSvrNum;
+ BOOL bIsSiegeEnded;
+} *LPCSP_REQ_SIEGEENDCHANGE;
+
+typedef struct CSP_ANS_SIEGEENDCHANGE
+{
+ PBMSG_HEAD2 h; // C1:80:0B DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ BOOL bIsSiegeEnded;
+} *LPCSP_ANS_SIEGEENDCHANGE;
+
+typedef struct CSP_REQ_CASTLEOWNERCHANGE
+{
+ PBMSG_HEAD2 h; // C1:80:0C GS->DS
+ WORD wMapSvrNum;
+ BOOL bIsCastleOccupied;
+ char szOwnerGuildName[MAX_GUILDNAMESTRING];
+} *LPCSP_REQ_CASTLEOWNERCHANGE;
+
+typedef struct CSP_ANS_CASTLEOWNERCHANGE
+{
+ PBMSG_HEAD2 h; // C1:80:0C DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ BOOL bIsCastleOccupied;
+ char szOwnerGuildName[MAX_GUILDNAMESTRING];
+} *LPCSP_ANS_CASTLEOWNERCHANGE;
+
+typedef struct CSP_REQ_REGATTACKGUILD
+{
+ PBMSG_HEAD2 h; // C1:80:0D GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+ char szEnemyGuildName[MAX_GUILDNAMESTRING];
+} *LPCSP_REQ_REGATTACKGUILD;
+
+typedef struct CSP_ANS_REGATTACKGUILD
+{
+ PBMSG_HEAD2 h; // C1:80:0D DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ char szEnemyGuildName[MAX_GUILDNAMESTRING];
+} *LPCSP_ANS_REGATTACKGUILD;
+
+typedef struct CSP_REQ_CASTLESIEGEEND
+{
+ PBMSG_HEAD2 h; // C1:80:0E GS->DS
+ WORD wMapSvrNum;
+} *LPCSP_REQ_CASTLESIEGEEND;
+
+typedef struct CSP_ANS_CASTLESIEGEEND
+{
+ PBMSG_HEAD2 h; // C1:80:0E DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+} *LPCSP_ANS_CASTLESIEGEEND;
+
+typedef struct CSP_REQ_MAPSVRMULTICAST
+{
+ PBMSG_HEAD2 h; // C1:80:0F GS->DS
+ WORD wMapSvrNum;
+ char szMsgText[128];
+} *LPCSP_REQ_MAPSVRMULTICAST;
+
+typedef struct CSP_ANS_MAPSVRMULTICAST
+{
+ PBMSG_HEAD2 h; // C1:80:0F DS->GS
+ WORD wMapSvrNum;
+ char szMsgText[128];
+} *LPCSP_ANS_MAPSVRMULTICAST;
+
+typedef struct CSP_REQ_GUILDREGMARK
+{
+ PBMSG_HEAD2 h; // C1:80:10 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+ char szGuildName[MAX_GUILDNAMESTRING];
+ int iItemPos;
+} *LPCSP_REQ_GUILDREGMARK;
+
+typedef struct CSP_ANS_GUILDREGMARK
+{
+ PBMSG_HEAD2 h; // C1:80:10 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ char szGuildName[MAX_GUILDNAMESTRING];
+ int iItemPos;
+ int iRegMarkCount;
+} *LPCSP_ANS_GUILDREGMARK;
+
+typedef struct CSP_REQ_GUILDRESETMARK
+{
+ PBMSG_HEAD2 h; // C1:80:11 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+ char szGuildName[MAX_GUILDNAMESTRING];
+} *LPCSP_REQ_GUILDRESETMARK;
+
+typedef struct CSP_ANS_GUILDRESETMARK
+{
+ PBMSG_HEAD2 h; // C1:80:11 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ char szGuildName[MAX_GUILDNAMESTRING];
+ int iRegMarkCount;
+} *LPCSP_ANS_GUILDRESETMARK;
+
+typedef struct CSP_REQ_GUILDSETGIVEUP
+{
+ PBMSG_HEAD2 h; // C1:80:12 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+ char szGuildName[MAX_GUILDNAMESTRING];
+ BOOL bIsGiveUp;
+} *LPCSP_REQ_GUILDSETGIVEUP;
-} CWP_ANS_CRYWOLFSYNC, *LPCWP_ANS_CRYWOLFSYNC;
+typedef struct CSP_ANS_GUILDSETGIVEUP
+{
+ PBMSG_HEAD2 h; // C1:80:12 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ char szGuildName[MAX_GUILDNAMESTRING];
+ BOOL bIsGiveUp;
+ int iRegMarkCount;
+} *LPCSP_ANS_GUILDSETGIVEUP;
-//----------------------------------------------------------------------------
-// GD [0xB1] 크라이울프 정보 로드 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
+typedef struct CSP_REQ_NPCREMOVE
{
- PBMSG_HEAD h;
+ PBMSG_HEAD2 h; // C1:80:16 GS->DS
+ WORD wMapSvrNum;
+ int iNpcNumber;
+ int iNpcIndex;
+} *LPCSP_REQ_NPCREMOVE;
+
+typedef struct CSP_ANS_NPCREMOVE
+{
+ PBMSG_HEAD2 h; // C1:80:16 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iNpcNumber;
+ int iNpcIndex;
+} *LPCSP_ANS_NPCREMOVE;
+
+typedef struct CSP_REQ_CASTLESTATESYNC
+{
+ PBMSG_HEAD2 h; // C1:80:17 GS->DS
+ WORD wMapSvrNum;
+ int iCastleState;
+ int iTaxRateChaos;
+ int iTaxRateStore;
+ int iTaxHuntZone;
+ char szOwnerGuildName[MAX_GUILDNAMESTRING];
+} *LPCSP_REQ_CASTLESTATESYNC;
+
+typedef struct CSP_ANS_CASTLESTATESYNC
+{
+ PBMSG_HEAD2 h; // C1:80:17 DS->GS
+ WORD wMapSvrNum;
+ int iCastleState;
+ int iTaxRateChaos;
+ int iTaxRateStore;
+ int iTaxHuntZone;
+ char szOwnerGuildName[MAX_GUILDNAMESTRING];
+} *LPCSP_ANS_CASTLESTATESYNC;
+
+typedef struct CSP_REQ_CASTLETRIBUTEMONEY
+{
+ PBMSG_HEAD2 h; // C1:80:18 GS->DS
+ WORD wMapSvrNum;
+ int iCastleTributeMoney;
+} *LPCSP_REQ_CASTLETRIBUTEMONEY;
+
+typedef struct CSP_ANS_CASTLETRIBUTEMONEY
+{
+ PBMSG_HEAD2 h; // C1:80:18 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+} *LPCSP_ANS_CASTLETRIBUTEMONEY;
+
+typedef struct CSP_REQ_RESETCASTLETAXINFO
+{
+ PBMSG_HEAD2 h; // C1:80:19 GS->DS
+ WORD wMapSvrNum;
+} *LPCSP_REQ_RESETCASTLETAXINFO;
+
+typedef struct CSP_ANS_RESETCASTLETAXINFO
+{
+ PBMSG_HEAD2 h; // C1:80:19 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+} *LPCSP_ANS_RESETCASTLETAXINFO;
+
+typedef struct CSP_REQ_RESETSIEGEGUILDINFO
+{
+ PBMSG_HEAD2 h; // C1:80:1A GS->DS
+ WORD wMapSvrNum;
+} *LPCSP_REQ_RESETSIEGEGUILDINFO;
+
+typedef struct CSP_ANS_RESETSIEGEGUILDINFO
+{
+ PBMSG_HEAD2 h; // C1:80:1A DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+} *LPCSP_ANS_RESETSIEGEGUILDINFO;
+
+typedef struct CSP_REQ_RESETREGSIEGEINFO
+{
+ PBMSG_HEAD2 h; // C1:80:1B GS->DS
+ WORD wMapSvrNum;
+} *LPCSP_REQ_RESETREGSIEGEINFO;
+
+typedef struct CSP_ANS_RESETREGSIEGEINFO
+{
+ PBMSG_HEAD2 h; // C1:80:1B DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+} *LPCSP_ANS_RESETREGSIEGEINFO;
+
+typedef struct CSP_REQ_CSINITDATA
+{
+ PBMSG_HEAD h; // C1:81 GS->DS
+ WORD wMapSvrNum;
+ int iCastleEventCycle;
+} *LPCSP_REQ_CSINITDATA;
+
+typedef struct CSP_ANS_CSINITDATA
+{
+ PWMSG_HEAD h; // C2:81 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ WORD wStartYear;
+ BYTE btStartMonth;
+ BYTE btStartDay;
+ WORD wEndYear;
+ BYTE btEndMonth;
+ BYTE btEndDay;
+ BYTE btIsSiegeGuildList;
+ BYTE btIsSiegeEnded;
+ BYTE btIsCastleOccupied;
+ BYTE szCastleOwnGuild[MAX_GUILDNAMESTRING];
+ __int64 i64CastleMoney;
+ int iTaxRateChaos;
+ int iTaxRateStore;
+ int iTaxHuntZone;
+ int iFirstCreate;
+ int iCount;
+} *LPCSP_ANS_CSINITDATA;
+
+typedef struct CSP_CSINITDATA
+{
+ int iNpcNumber;
+ int iNpcIndex;
+ int iNpcDfLevel;
+ int iNpcRgLevel;
+ int iNpcMaxHp;
+ int iNpcHp;
+ BYTE btNpcX;
+ BYTE btNpcY;
+ BYTE btNpcDIR;
+} *LPCSP_CSINITDATA;
+
+typedef struct CSP_REQ_NPCDATA
+{
+ PBMSG_HEAD h; // C1:82 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+} *LPCSP_REQ_NPCDATA;
+
+typedef struct CSP_ANS_NPCDATA
+{
+ PWMSG_HEAD h; // C2:82 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ int iCount;
+} *LPCSP_ANS_NPCDATA;
+
+typedef struct CSP_NPCDATA
+{
+ int iNpcNumber;
+ int iNpcIndex;
+ int iNpcDfLevel;
+ int iNpcRgLevel;
+ int iNpcMaxHp;
+ int iNpcHp;
+ BYTE btNpcX;
+ BYTE btNpcY;
+ BYTE btNpcDIR;
+} *LPCSP_NPCDATA;
+
+typedef struct CSP_REQ_ALLGUILDREGINFO
+{
+ PBMSG_HEAD h; // C1:83 GS->DS
+ WORD wMapSvrNum;
+ int iIndex;
+} *LPCSP_REQ_ALLGUILDREGINFO;
+
+typedef struct CSP_ANS_ALLGUILDREGINFO
+{
+ PWMSG_HEAD h; // C2:83 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iIndex;
+ int iCount;
+} *LPCSP_ANS_ALLGUILDREGINFO;
+
+typedef struct CSP_GUILDREGINFO
+{
+ char szGuildName[MAX_GUILDNAMESTRING];
+ int iRegMarkCount;
+ bool bIsGiveUp;
+ BYTE btRegRank;
+} *LPCSP_GUILDREGINFO;
+
+typedef struct CSP_REQ_NPCSAVEDATA
+{
+ PWMSG_HEAD h; // C2:84 GS->DS
+ WORD wMapSvrNum;
+ int iCount;
+} *LPCSP_REQ_NPCSAVEDATA;
+
+typedef struct CSP_NPCSAVEDATA
+{
+ int iNpcNumber;
+ int iNpcIndex;
+ int iNpcDfLevel;
+ int iNpcRgLevel;
+ int iNpcMaxHp;
+ int iNpcHp;
+ BYTE btNpcX;
+ BYTE btNpcY;
+ BYTE btNpcDIR;
+} *LPCSP_NPCSAVEDATA;
+
+typedef struct CSP_ANS_NPCSAVEDATA
+{
+ PBMSG_HEAD h; // C1:84 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+} *LPCSP_ANS_NPCSAVEDATA;
+
+typedef struct CSP_REQ_CALCREGGUILDLIST
+{
+ PBMSG_HEAD h; // C1:85 GS->DS
+ WORD wMapSvrNum;
+} *LPCSP_REQ_CALCREGGUILDLIST;
+
+typedef struct CSP_ANS_CALCREGGUILDLIST
+{
+ PWMSG_HEAD h; // C2:85 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iCount;
+} *LPCSP_ANS_CALCREGGUILDLIST;
+
+typedef struct CSP_CALCREGGUILDLIST
+{
+ char szGuildName[MAX_GUILDNAMESTRING];
+ int iRegMarkCount;
+ int iGuildMemberCount;
+ int iGuildMasterLevel;
+ int iSeqNum;
+} *LPCSP_CALCREGGUILDLIST;
+
+typedef struct CSP_REQ_CSGUILDUNIONINFO
+{
+ PWMSG_HEAD h; // C2:86 GS->DS
+ WORD wMapSvrNum;
+ int iCount;
+} *LPCSP_REQ_CSGUILDUNIONINFO;
+
+typedef struct CSP_CSGUILDUNIONINFO
+{
+ char szGuildName[MAX_GUILDNAMESTRING];
+ int iCsGuildID;
+} *LPCSP_CSGUILDUNIONINFO;
- WORD wMapSvrNum; // 맵 서버군 번호
+typedef struct CSP_ANS_CSGUILDUNIONINFO
+{
+ PWMSG_HEAD h; // C2:86 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iCount;
+} *LPCSP_ANS_CSGUILDUNIONINFO;
-} CWP_REQ_CRYWOLFINFOLOAD, *LPCWP_REQ_CRYWOLFINFOLOAD;
+typedef struct CSP_REQ_CSSAVETOTALGUILDINFO
+{
+ PWMSG_HEAD h; // C2:87 GS->DS
+ WORD wMapSvrNum;
+ int iCount;
+} *LPCSP_REQ_CSSAVETOTALGUILDINFO;
+typedef struct CSP_CSSAVETOTALGUILDINFO
+{
+ char szGuildName[MAX_GUILDNAMESTRING];
+ int iCsGuildID;
+ int iGuildInvolved;
+ int iGuildScore;
+} *LPCSP_CSSAVETOTALGUILDINFO;
-//----------------------------------------------------------------------------
-// DG [0xB1] 크라이울프 정보 로드 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
+typedef struct CSP_ANS_CSSAVETOTALGUILDINFO
{
- PBMSG_HEAD h;
+ PBMSG_HEAD h; // C1:87 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+} *LPCSP_ANS_CSSAVETOTALGUILDINFO;
- BYTE btResult;
+typedef struct CSP_REQ_CSLOADTOTALGUILDINFO
+{
+ PBMSG_HEAD h; // C1:88 GS->DS
+ WORD wMapSvrNum;
+} *LPCSP_REQ_CSLOADTOTALGUILDINFO;
- INT iCrywolfState; // 현재 크라이울프 진행 상태
- INT iOccupationState; // 현재 크라이울프 점령 상태
+typedef struct CSP_ANS_CSLOADTOTALGUILDINFO
+{
+ PWMSG_HEAD h; // C2:88 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+ int iCount;
+} *LPCSP_ANS_CSLOADTOTALGUILDINFO;
-} CWP_ANS_CRYWOLFINFOLOAD, *LPCWP_ANS_CRYWOLFINFOLOAD;
+typedef struct CSP_CSLOADTOTALGUILDINFO
+{
+ char szGuildName[MAX_GUILDNAMESTRING];
+ int iCsGuildID;
+ int iGuildInvolved;
+ int iGuildScore;
+} *LPCSP_CSLOADTOTALGUILDINFO;
-//----------------------------------------------------------------------------
-// GD [0xB2] 크라이울프 정보 저장 요청 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
+typedef struct CSP_REQ_NPCUPDATEDATA
{
- PBMSG_HEAD h;
+ PWMSG_HEAD h; // C2:89 GS->DS
+ WORD wMapSvrNum;
+ int iCount;
+} *LPCSP_REQ_NPCUPDATEDATA;
- WORD wMapSvrNum; // 맵 서버군 번호
+typedef struct CSP_NPCUPDATEDATA
+{
+ int iNpcNumber;
+ int iNpcIndex;
+ int iNpcDfLevel;
+ int iNpcRgLevel;
+ int iNpcMaxHp;
+ int iNpcHp;
+ BYTE btNpcX;
+ BYTE btNpcY;
+ BYTE btNpcDIR;
+} *LPCSP_NPCUPDATEDATA;
- INT iCrywolfState; // 현재 크라이울프 진행 상태
- INT iOccupationState; // 현재 크라이울프 점령 상태
+typedef struct CSP_ANS_NPCUPDATEDATA
+{
+ PBMSG_HEAD h; // C1:89 DS->GS
+ int iResult;
+ WORD wMapSvrNum;
+} *LPCSP_ANS_NPCUPDATEDATA;
-} CWP_REQ_CRYWOLFINFOSAVE, *LPCWP_REQ_CRYWOLFINFOSAVE;
+typedef struct CWP_REQ_CRYWOLFSYNC
+{
+ PBMSG_HEAD h; // C1:B0 GS->DS
+ WORD wMapSvrNum;
+ int iCrywolfState;
+ int iOccupationState;
+} *LPCWP_REQ_CRYWOLFSYNC;
+typedef struct CWP_ANS_CRYWOLFSYNC
+{
+ PBMSG_HEAD h; // C1:B0 DS->GS
+ BYTE btResult;
+ int iCrywolfState;
+ int iOccupationState;
+} *LPCWP_ANS_CRYWOLFSYNC;
-//----------------------------------------------------------------------------
-// DG [0xB2] 크라이울프 정보 저장 요청 응답 (0xC1)
-//----------------------------------------------------------------------------
-typedef struct
+typedef struct CWP_REQ_CRYWOLFINFOLOAD
{
- PBMSG_HEAD h;
+ PBMSG_HEAD h; // C1:B1 GS->DS
+ WORD wMapSvrNum;
+} *LPCWP_REQ_CRYWOLFINFOLOAD;
- BYTE btResult;
+typedef struct CWP_ANS_CRYWOLFINFOLOAD
+{
+ PBMSG_HEAD h; // C1:B1 DS->GS
+ BYTE btResult;
+ int iCrywolfState;
+ int iOccupationState;
+} *LPCWP_ANS_CRYWOLFINFOLOAD;
-} CWP_ANS_CRYWOLFINFOSAVE, *LPCWP_ANS_CRYWOLFINFOSAVE;
+typedef struct CWP_REQ_CRYWOLFINFOSAVE
+{
+ PBMSG_HEAD h; // C1:B2 GS->DS
+ WORD wMapSvrNum;
+ int iCrywolfState;
+ int iOccupationState;
+} *LPCWP_REQ_CRYWOLFINFOSAVE;
-#endif // MU_CRYWOLF_DS_PROTOCOL_20050505
+typedef struct CWP_ANS_CRYWOLFINFOSAVE
+{
+ PBMSG_HEAD h; // C1:B2 DS->GS
+ BYTE btResult;
+} *LPCWP_ANS_CRYWOLFINFOSAVE;
#ifdef MASTER_LEVEL_UP_SYSTEM_20070912 // DS <-> GS 프로토콜
//----------------------------------------------------------------------------
@@ -3990,48 +2521,51 @@ struct _tagSDHP_REQ_EVENT_MONSTER_KILL_INFO_SAVE
__int64 DamageScore;
};
-/* 706 */
-struct _ST_BLOCK_CHATTING_USER
+typedef struct _ST_BLOCK_CHATTING_USER
{
+ _ST_BLOCK_CHATTING_USER()
+ {
+ bIsUsed = false;
+ btSlotNum = 0;
+ memset(szCharName, 0, sizeof(szCharName));
+ }
+
bool bIsUsed;
- char btSlotNum;
- char szCharName[11];
+ BYTE btSlotNum;
+ char szCharName[MAX_IDSTRING + 1];
};
-/* 707 */
-struct SDHP_ANS_BLOCK_CHAT_USER_INFO
+typedef struct SDHP_REQ_BLOCK_CHAT_USER_INFO
{
- PWMSG_HEAD2 h;
+ PBMSG_HEAD h; // C1:6E:00 GS->DS
+ int iUserIndex;
+ char szCharName[MAX_IDSTRING + 1];
+} *LPSDHP_REQ_BLOCK_CHAT_USER_INFO;
+
+typedef struct SDHP_ANS_BLOCK_CHAT_USER_INFO
+{
+ PWMSG_HEAD2 h; // C2:6E:00 DS->GS
int nUserIndex;
- char szCharName[11];
- char btUserCnt;
+ char szCharName[MAX_IDSTRING + 1];
+ BYTE btUserCnt;
_ST_BLOCK_CHATTING_USER BlockCharList[20];
-};
+} *LPSDHP_ANS_BLOCK_CHAT_USER_INFO;
-/* 708 */
-struct SDHP_REQ_ADD_BLOCK_CHAT_USER_INFO
+typedef struct SDHP_REQ_ADD_BLOCK_CHAT_USER_INFO
{
- PBMSG_HEAD2 h;
+ PBMSG_HEAD2 h; // C1:6E:01 GS->DS
int nUserIndex;
- char szCharName[11];
+ char szCharName[MAX_IDSTRING + 1];
_ST_BLOCK_CHATTING_USER szBlockChar;
-};
+} *LPSDHP_REQ_ADD_BLOCK_CHAT_USER_INFO;
-/* 709 */
-struct SDHP_REQ_DEL_BLOCK_CHAT_USER_INFO
+typedef struct SDHP_REQ_DEL_BLOCK_CHAT_USER_INFO
{
- PBMSG_HEAD2 h;
+ PBMSG_HEAD2 h; // C1:6E:02 GS->DS
int nUserIndex;
- char szCharName[11];
+ char szCharName[MAX_IDSTRING + 1];
_ST_BLOCK_CHATTING_USER szBlockChar;
-};
-/* 1127 */
-struct SDHP_REQ_BLOCK_CHAT_USER_INFO
-{
- PBMSG_HEAD h;
- int iUserIndex;
- char szCharName[11];
-};
+} *LPSDHP_REQ_DEL_BLOCK_CHAT_USER_INFO;
struct _SDHP_REQ_RESTORE_ITEM_LIST_SAVE
{
@@ -5128,7 +3662,7 @@ struct _tagPMSG_REQ_JEWEL_UPGRADE_INFO_INSERT_DS
struct SDHP_REQ_SAVE_ITL_GUILDPOINT
{
PBMSG_HEAD2 h;
- char GuildName[9];
+ char GuildName[MAX_GUILDNAMESTRING + 1];
int nType;
char byWin;
char byLose;
@@ -5140,7 +3674,7 @@ struct SDHP_REQ_SAVE_ITL_GUILDPOINT
struct SDHP_REQ_SAVE_ITL_GUILDCOUNT
{
PBMSG_HEAD2 h;
- char GuildName[9];
+ char GuildName[MAX_GUILDNAMESTRING + 1];
char byCount;
};
@@ -5149,7 +3683,7 @@ struct SDHP_REQ_SAVE_ITL_USERPOINT
{
PBMSG_HEAD2 h;
char UserName[11];
- char GName[9];
+ char GName[MAX_GUILDNAMESTRING + 1];
int nOccupiedCount;
int nKillP;
int nInvalidationCount;
@@ -5162,7 +3696,7 @@ struct SDHP_REQ_SAVE_ITL_USERPOINT
struct _tagPMSG_REQ_ITL_GUILDCOUNTREQ
{
PBMSG_HEAD2 h;
- char GuildName[9];
+ char GuildName[MAX_GUILDNAMESTRING + 1];
int nUserIndex;
unsigned __int16 wMapSverNum;
};
@@ -5241,7 +3775,7 @@ struct _tagPMSG_ANS_ITL_REWARDLIST
struct _tagPMSG_REQ_ITL_USERCOUNTREQ
{
PBMSG_HEAD2 h;
- char UserName[9];
+ char UserName[MAX_GUILDNAMESTRING + 1];
int nUserIndex;
};
@@ -5373,12 +3907,12 @@ struct _tagSDHP_REQ_GREMORY_CASE_SELECT
/* 816 */
struct _stCancelGuildNames
{
- char szGuildNames[9];
+ char szGuildNames[MAX_GUILDNAMESTRING + 1];
};
/* 814 */
struct _stABWinGuildInfoDS
{
- char szGuildName[9];
+ char szGuildName[MAX_GUILDNAMESTRING + 1];
DWORD dwGuild;
WORD wOccupyObelisk;
WORD wObeliskGroup;
@@ -5397,7 +3931,7 @@ struct _tagPMSG_REQ_ARCA_BATTLE_GUILD_JOIN_DS
{
PBMSG_HEAD2 h;
char szGuildMaster[11];
- char szGuildName[9];
+ char szGuildName[MAX_GUILDNAMESTRING + 1];
unsigned int dwGuild;
unsigned __int16 wNumber;
};
@@ -5415,7 +3949,7 @@ struct _tagPMSG_REQ_ARCA_BATTLE_GUILD_MEMBER_JOIN_DS
{
PBMSG_HEAD2 h;
char szCharName[11];
- char szGuildName[9];
+ char szGuildName[MAX_GUILDNAMESTRING + 1];
unsigned int dwGuild;
unsigned __int16 wNumber;
};
@@ -5524,7 +4058,7 @@ struct _tagPMSG_REQ_AB_JOIN_MEMBER_UNDER_DS
struct _stGuildUnderMember
{
char btGuildMemberCnt;
- char szGuildNames[9];
+ char szGuildNames[MAX_GUILDNAMESTRING + 1];
};
/* 985 */
@@ -5579,7 +4113,7 @@ struct _tagPMSG_REQ_REMOVE_GUILD_BUFF_DS
{
PBMSG_HEAD2 h;
unsigned __int16 wMapSvrNum;
- char szGuildName[9];
+ char szGuildName[MAX_GUILDNAMESTRING + 1];
};
/* 1024 */
@@ -5657,18 +4191,6 @@ struct SDHP_RENEW_RANKING
char byCCFType;
};
-/* 1080 */
-struct PMSG_REQ_UBF_ACCOUNT_USERINFO
-{
- PBMSG_HEAD2 h;
- int iUserIndex;
- char szAccountID[11];
- char szName[11];
- int iServerCode;
- int IsUnityBattleFieldServer;
- char btObserverMode;
-};
-
/* 1081 */
struct PMSG_UBF_REGISTER_ACCOUNT_USER
{
@@ -5734,17 +4256,6 @@ struct PMSG_ANS_UBF_SET_RECEIVED_REWARD
char btSubReturn;
};
-/* 1087 */
-struct PMSG_REQ_UBF_GET_REWARD
-{
- PBMSG_HEAD2 h;
- int iUserIndex;
- int iServerCode;
- char btServerKind;
- char btContentsType;
- char szName[11];
-};
-
/* 1088 */
struct PMSG_UBF_REQ_CANCEL_REGISTER_USER
{
@@ -5831,7 +4342,7 @@ struct PMSG_REQ_SAVE_DSF_USERPOINT
{
PBMSG_HEAD2 h;
char UserName[11];
- char GName[9];
+ char GName[MAX_GUILDNAMESTRING + 1];
int nPoint;
int Type;
int nEnterCount;
@@ -5957,7 +4468,7 @@ struct _stDSFRewardList
{
char byRank;
char szCharName[11];
- char szGuildName[9];
+ char szGuildName[MAX_GUILDNAMESTRING + 1];
char byEnterCount;
char byPoint;
char byGotReward;
@@ -6101,28 +4612,66 @@ struct SDHP_ANS_KILLPOINT_RESULT
int nTotalPoint;
};
-/* 827 */
-struct PMSG_ANS_UBF_ACCOUNT_USERINFO
+typedef struct PMSG_REQ_UBF_ACCOUNT_USERINFO
{
- PBMSG_HEAD2 h;
+ PBMSG_HEAD2 h; // C1:FA:01 GS->DS
int iUserIndex;
- char btResult;
- char btRegisterState;
- char btRegisterMonth;
- char btRegisterDay;
- char btObserverMode;
-};
+ char szAccountID[MAX_IDSTRING + 1];
+ char szName[MAX_IDSTRING + 1];
+ int iServerCode;
+ BOOL IsUnityBattleFieldServer;
+ BYTE btObserverMode;
+} *LPPMSG_REQ_UBF_ACCOUNT_USERINFO;
-/* 829 */
-struct PMSG_ANS_GET_UBF_REAL_NAME
+typedef struct PMSG_ANS_UBF_ACCOUNT_USERINFO
{
- PBMSG_HEAD2 h;
+ PBMSG_HEAD2 h; // C1:FA:01 DS->GS
+ int iUserIndex;
+ BYTE btResult;
+ BYTE btRegisterState;
+ BYTE btRegisterMonth;
+ BYTE btRegisterDay;
+ BYTE btObserverMode;
+} *LPPMSG_ANS_UBF_ACCOUNT_USERINFO;
+
+typedef struct PMSG_REQ_UBF_GET_REWARD
+{
+ PBMSG_HEAD2 h; // C1:FA:06 GS->DS
int iUserIndex;
- char szUBFName[11];
- char szRealName[11];
int iServerCode;
- char btRetrun;
-};
+ BYTE btServerKind;
+ BYTE btContentsType;
+ char szName[MAX_IDSTRING + 1];
+} *LPPMSG_REQ_UBF_GET_REWARD;
+
+typedef struct PMSG_ANS_UBF_GET_REWARD
+{
+ PBMSG_HEAD2 h; // C1:FA:06 DS->GS
+ int iUserIndex;
+ BYTE btResult;
+ BYTE btContentsType;
+ BYTE btArrayCCF_Reward[4];
+ BYTE btArrayDSF_Reward[4];
+ BYTE btArrayCCN_Reward[2];
+ BYTE btArrayDSN_Reward[14];
+} *LPPMSG_ANS_UBF_GET_REWARD;
+
+typedef struct PMSG_REQ_GET_UBF_REAL_NAME
+{
+ PBMSG_HEAD2 h; // C1:FA:08 GS->DS
+ int iUserIndex;
+ char szUBFName[MAX_IDSTRING + 1];
+} *LPPMSG_REQ_GET_UBF_REAL_NAME;
+
+typedef struct PMSG_ANS_GET_UBF_REAL_NAME
+{
+ PBMSG_HEAD2 h; // C1:FA:08 DS->GS
+ int iUserIndex;
+ char szUBFName[MAX_IDSTRING + 1];
+ char szRealName[MAX_IDSTRING + 1];
+ int iServerCode;
+ BYTE btRetrun;
+} *LPPMSG_ANS_GET_UBF_REAL_NAME;
/* 671 */
@@ -6165,36 +4714,36 @@ struct _stDSFGoFinalPartyInfo
char btEnterDay;
};
-/* 817 */
-struct _stArcaBattleMarkTopRank
+typedef struct _stArcaBattleMarkTopRank
{
- _stArcaBattleMarkTopRank::_stArcaBattleMarkTopRank()
+ _stArcaBattleMarkTopRank()
{
- this->btRank = 0;
- this->dwMarkCnt = 0;
- memset(this->szGuildNames, 0, 9u);
+ btRank = 0;
+ dwMarkCnt = 0;
+ memset(szGuildNames, 0, sizeof(szGuildNames));
}
- char btRank;
- char szGuildNames[9];
+
+ BYTE btRank;
+ char szGuildNames[MAX_GUILDNAMESTRING + 1];
BYTE dwMarkCnt;
};
-/* 818 */
-struct _stABAllGuildMark
+typedef struct _stABAllGuildMark
{
_stABAllGuildMark()
{
- this->dwMarkCnt = 0;
- memset(this->szGuildName, 0, 9);
+ dwMarkCnt = 0;
+ memset(szGuildName, 0, sizeof(szGuildName));
}
- char szGuildName[9];
+
+ char szGuildName[MAX_GUILDNAMESTRING + 1];
DWORD dwMarkCnt;
};
/* 819 */
struct _stABJoinUserInfoDS
{
- char szGuildName[9];
+ char szGuildName[MAX_GUILDNAMESTRING + 1];
unsigned int dwGuild;
char szUserName[11];
};
@@ -6204,7 +4753,7 @@ struct _stABJoinUserInfoDS
struct _tagPMSG_ANS_REMOVE_GUILD_BUFF_DS
{
PBMSG_HEAD2 h;
- char szGuildName[9];
+ char szGuildName[MAX_GUILDNAMESTRING + 1];
};
/* 1006 */
@@ -6229,7 +4778,7 @@ struct _tagPMSG_REQ_ARCA_BATTLE_MARK_REG_DS
PBMSG_HEAD2 h;
unsigned __int16 wNumber;
char szGuildMaster[11];
- char szGuildName[9];
+ char szGuildName[MAX_GUILDNAMESTRING + 1];
unsigned int dwMarkCnt;
unsigned int dwGuildNum;
};
@@ -6261,13 +4810,12 @@ struct _tagPMSG_REQ_ARCA_BATTLE_IS_TOP_RANK
unsigned int dwGuildNum;
};
-/* 1011 */
-struct _tagPMSG_REQ_AB_MARK_REG_UPDATE_DS
+typedef struct _tagPMSG_REQ_AB_MARK_REG_UPDATE_DS
{
- PBMSG_HEAD2 h;
- unsigned int dwGuildNum;
- unsigned int dwMarkCnt;
-};
+ PBMSG_HEAD2 h; // C1:F8:57 GS->DS
+ DWORD dwGuildNum;
+ DWORD dwMarkCnt;
+} *LPPMSG_REQ_AB_MARK_REG_UPDATE_DS;
/* 997 */
struct _tagPMSG_ANS_AE_PLAY_DS
@@ -6295,28 +4843,20 @@ struct _tagPMSG_REQ_AE_PLAY_DS
char btPlay;
};
-/* 826 */
-struct _stCCFRankingInfo
+typedef struct _stCCFRankingInfo
{
- char szCharName[11];
- char byRank;
- int nPoint;
-};
+ _stCCFRankingInfo()
+ {
+ memset(szCharName, 0, sizeof(szCharName));
+ byRank = 0;
+ nPoint = 0;
+ }
-/* 828 */
-struct PMSG_ANS_UBF_GET_REWARD
-{
- PBMSG_HEAD2 h;
- int iUserIndex;
- char btResult;
- char btContentsType;
- char btArrayCCF_Reward[4];
- char btArrayDSF_Reward[4];
- char btArrayCCN_Reward[2];
- char btArrayDSN_Reward[14];
+ char szCharName[MAX_IDSTRING + 1];
+ BYTE byRank;
+ int nPoint;
};
-
/* 1079 */
struct _tagPMSG_ANS_ITL_USERCOUNTANS
{
@@ -6330,7 +4870,7 @@ struct _stITLRewardList
{
char byRank;
char szCharName[11];
- char szGuildName[9];
+ char szGuildName[MAX_GUILDNAMESTRING + 1];
char byEnterCount;
char byPoint;
char byGotReward;
@@ -6339,7 +4879,7 @@ struct _stITLRewardList
/* 834 */
struct _stITLRankingInfo
{
- char szGuildName[9];
+ char szGuildName[MAX_GUILDNAMESTRING + 1];
char byRank;
char byITLType;
char byWin;
diff --git a/DataServer/include/define.h b/DataServer/include/define.h
index 941951c..ba9a4ab 100644
--- a/DataServer/include/define.h
+++ b/DataServer/include/define.h
@@ -1,11 +1,7 @@
-//----------------------------------------------------------------------------
-// MU 서버프로젝트 전반에 걸쳐 정의되어 사용되어지는 것들..
-//----------------------------------------------------------------------------
-#ifndef __DEFINE_H__
+#ifndef __DEFINE_H__
#define __DEFINE_H__
-#include "..\\Include\\Public.h"
-//----------------------------------------------------------------------------
+#include "..\include\public.h"
enum DB_CLASS_TYPE
{
@@ -16,7 +12,7 @@ enum DB_CLASS_TYPE
DB_CLASS_TYPE_DARKLORD = 0x40,
DB_CLASS_TYPE_SUMMONER = 0x50,
DB_CLASS_TYPE_MONK = 0x60,
- DB_CLASS_TYPE_LANCER = 0x70,
+ DB_CLASS_TYPE_GROWLANCER = 0x70,
};
enum AMS
@@ -26,4939 +22,59 @@ enum AMS
AM_ACTIVE = 0x1,
};
+#define LOG_PRINT 1
+//#define DEBUG_IOCP_LOG
-//----------------------------------------------------------------------------
-// 컴파일시에 사용되는 것
-//#define _DEBUG_PROTOCOL // 프로토콜을 디버그 시에 사용
-#define LOG_PRINT 1 // 로그를 출력할것인가?
-#define SPEEDHACK_CHECK 1 // 스피드핵을 체크할것인가?
+#define ST_JOINSERVER 0
+#define ST_GAMESERVER 1
-#define TESTSERVER 0 // Service:0 테스트 서버인가..
-#define LOCALCONNECT 0 // Service:0 사내에서만 접속 가능하게..
-#define DATANOSAVE 0 // Service:0 데이터가 저장되지 않게 한다.
+#define DEFMAPSERVERPORT 55900
+#define DEFJOINSERVERPORT 55970
+#define DEFDATASERVERPORT 55960
+#define DEFEXDBSERVERPORT 55906
-#define DBGUILDLOAD 1 // Service:1, DB서버에 접속해서 길드 정보를 가지고 오는가..
+#define MAX_CHAT 60
+#define MAX_GUILDNOTICE 60
+#define MAX_IDSTRING 10
-/*enum GAME_VERSION_ENUM
-{
-G_V_97D,
-G_V_99B,
-G_V_S1,
-G_V_S2,
-G_V_S2_2,
-G_V_S3_E1,
-G_V_S3_E2,
-G_V_S4_5,
-G_V_S4_6, //S4.5.1
-};*/
-
-#define G_V_97D 0
-#define G_V_97_99 1
-#define G_V_99B 2
-#define G_V_S1 3
-#define G_V_S1_512 4
-#define G_V_S2 5
-#define G_V_S2_2 6
-#define G_V_S3_E1 7
-#define G_V_S3_E2 8
-#define G_V_S4_5 9
-#define G_V_S4_6 10
-#define CHARACTERDB_SERVER
-#define GAME_VERSION G_V_S4_6
-
-//#define ADD_ANTI_HACK_01_20051027 //SpeedHack FIX! - BAD
-
-#if GAME_VERSION >= G_V_S4_6
-//#define KOREAN_S4_6
-//#define GLOBAL_S4_6
-#define JAPAN_S4_6
-#endif
-
-#if GAME_VERSION >= G_V_99B
-#define EVENT_STONE
-#define EVENT_RENA_20040909
-#define EVENT_LOTTO
-#define USER_ENTER_BLOODCASTLE7_WITH6_20040330
-#define EVENT_FRIENDSHIP_20040204
-#define EVENT_STONE_OF_FRIENDSHIP_20040206
-#define MODIFY_INVEN_CLEAR_MACRO_20071212
-#endif
-
-
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-//#endif
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-
-
-//#ifdef USA
-#if GAME_VERSION >= G_V_S4_6
-// 미국 버전 테스트를 위한 데이터로딩 검사.
-// #define TEST_LOADING_STEP_20060211
-
-// 1) 유저 인증 시 레벨 캡(현재 60 레벨) 적용을 위한 작업
-// 2) 인증 서버에 존재하는 계정, 캐릭터, 레벨 정보 테이블의 무결성을 위한 작업
-// 3) 캐릭터 삭제 시 인증서버에 알려 해당 테이블에서 삭제해준다. (apple)
-
-// [업데이트] 캐릭터 리스트 중복요청금지(goni)
-#define UPDATE_RESEND_GETCHARlIST_DISABLE_20090605
-
-// [버그수정] 중국 접속 공격 차단
-#define MODIFY_CONNNECT_HACK_ATTACK_20090409
-#ifdef MODIFY_CONNNECT_HACK_ATTACK_20090409
-#define TEMPLOG_PRINT 0 // 1 이면 로그 파일을 따로 생성,출력 한다.
-#endif
-
-#define NOTIFY_CHARACTER_DELETE_FROM_GS_TO_JS_20060322
-
-// MuLog 기록 값 변경
-#define LOGINSERVER_MULOG
-
-// 패스워드 길이 20바이트로 증가
-#define PW_KUZIMO
-#ifdef GLOBAL_S4_6
-#define UPDATE_USERPASSWORD_LENGTH_20090424
-#endif
-
-// [업데이트] 통합빌링 추가(goni)
-#define UPDATE_UNIFICATIONBILL_20090203
-
-//#define MODIFY_HACKLOG_OF_ATTACK_20050714 // 공격 핵 로그 수정 (b4nfter)
-//#define MODIFY_HACKLOG_OF_ATTACK_20050518 // 공격 핵 로그 수정 (u4us)
-//#define CHECK_ATTACK_AREA
-
-// [업데이트] 화이트엔젤 아이템 지급 이벤트 (RKFKA)
-#define WHITEANGEL_GET_ITEM_EVENT_20060822
-
-#endif
-
-#if defined ( FOR_KOREA ) || defined ( EVENT_FRIENDSHIP_20040204 ) || defined ( EVENT_LOTTO )
-#define ADD_ITEM_OF_FRIENDSHIP_EVENT_20040729
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// 이벤트 관련 설정 코드
-//
-// 주의: 두개 이상의 이벤트 실행시 버그 발생 확인 요망
-///////////////////////////////////////////////////////////////////////////////
-
-// EVENT_SERVER_OPEN_COMMEMORATION_20050510 // 서버 오픈 기념 이벤트 (u4us)
-// EVENT_RENA_20040909 // 레나 이벤트 (u4us)
-// EVENT_LOTTO // 복권 이벤트 (u4us)
-
-// EVENT_STONE_OF_FRIENDSHIP_20040206
-// EVENT_RENA_FOR_CASTLE_SIEGE_20041116
-// EVENT_FRIENDSHIP_20040204
-
-
-///////////////////////////////////////////////////////////////////////////////
-
-#if GAME_VERSION >= G_V_99B
-#define DELETE_DARKLORD_PET_SERIAL_ZERO_20050617 // 일본 버그패치
-#define DARKLORD_PET_INFO_FORCE_TO_SET_20050531 // 상점에서 다크로드 펫을 살 경우 기본정보를 강제로 세팅
-#endif
-
-#define APPLY_TESTSERVER // 테스트 서버에만 적용중 또는 적용 예정 중인것들
-
-// 테스트 서버에 적용되는 것들은 여기에 추가!!!!!
-#ifdef APPLY_TESTSERVER
-
-#if TESTSERVER == 1
-// [업데이트] 3차 전직을 하여 마스터 레벨인 경우만 MasterLevelSystem 정보를 로딩하고 저장하도록 수정 2008-12-12 by riverstyx
-// 현재 마스터레벨이 아닌유저도 MasterLevelSystem에 정보를 저장하고 로딩하는 불필요한 로직을 사용함
-//#define MODIFY_3RDCHANGEUP_MASTERLEVEL
-#endif
-
-#ifndef FOR_KOREA
-
-// EventItembag 번호 겹치는 문제(pelero)
-#define MODIFY_FIRECRACKER_EVENTITEMBAG_NUMBER_CHANGE_20090930
-
-// 해외 부분유료화 7차 업데이트 (pelero)
-#define ADD_PARTIALY_CHARGE_SYSTEM_07_20090915
-#ifdef ADD_PARTIALY_CHARGE_SYSTEM_07_20090915
-// 엘리트 SD 회복 물약 추가(pelero)
-#define ADD_ELITE_SD_POTION_20090918
-// 파티시 경험치 증가 스크롤 추가(pelero)
-#define ADD_PARTY_EXP_INCREASE_SCROLL_20090916
-// 오라 아이템 추가(pelero)
-#define ADD_AURA_CASH_ITEM_20090915
-// 유니콘 펫 추가(pelero)
-#define ADD_UNICORN_PET_20090915
-// 치명 마법 반지 추가(pelero)
-#define ADD_CRITICAL_WIZARD_RING_20090915
-#endif // ADD_PARTIALY_CHARGE_SYSTEM_07_20090915
-
-// 크리스가 창고에 안 들어가는 버그(pelero)
-#define MODIFY_KRIS_MOVE_WAREHOUSE_BUGFIX_20090904
-
-// 캐쉬 아이템중 공격력, 방어력, 마나, 생명을 증가시켜주는 아이템 사용시
-// 아이템 이펙트와 버프이펙트 중복 적용되는 버그 (musang33)
-#define MODIFY_CASHITEM_EFFECT_REITERATION_APPLY_20090903
-
-// 갬블링시에 엑설런트 장비에도 행운 옵션이 붙을 수 있도록 변경(pelero)
-#define MODIFY_GAMBLING_ATTACH_LUCK_OPTION_20090901
-
-// 환영 사원 종료 후 맵 이동시 아이템 삭제 버그(pelero)
-#define MODIFY_ILLUSIONTEMPLE_MOVEGATE_ITEM_DELETE_BUGFIX_20090826
-
-// 결투장에서 다크스피릿이 재착용해야 사용되는 버그(pelero)
-#define MODIFY_PKFIELD_DARK_SPRIT_BUGFIX_20090804
-
-// 벚꽃 이벤트 관련 NPC를 등록(pelero)
-#define MODIFY_CHEREEY_NPC_REGISTER_NPC_GROUP_20090803
-
-// 수호 부적과 보호 부적은 각각 중복으로 사용하지 못하도록 처리(pelero)
-#define MODIFY_CHARM_GUARDIAN_CHARM_PROTECTITEM_NON_DUPLICATION_20090720
-
-// 결투중 결투 종료 카운트 중에 또다시 결투 종료 요청시 카운트가 초기화 되는 버그(pelero)
-#define MODIFY_NEWPVP_ENDING_COUNTDOWN_BUGFIX_20090715
-
-// 불카누스에서 인장류가 검투사의 명예보다 우선 적용 되도록 수정(pelero)
-#define MODIFY_PCS_MARKS_GLORYOFGLADIATOR_SEQUENCE_20090715
-
-// 결투중 종료시에 초기화 문제(pelero)
-#define MODIFY_NEWPVP_GAME_CLOSING_BUGFIX_20070715
-
-// 눈사람 변신 반지, 팬더 변신 반지 버그 수정(pelero)
-#define MODIFY_SNOW_MAN_PANDA_POLYMORPH_RING_BUGFIX_20090715
-
-// 여름 불꽃놀이 이벤트(pelero)
-#define ADD_SUMMER_FIRECRACKER_MONSTER_EVENT_20090610
-
-// 황금 군단 이벤트 리뉴얼 20090311 (natinda)
-//#define ADD_GOLDEN_EVENT_RENEWAL_20090311 DESACTIVADO POR 007JODEX
-
-// 쿤둔&벚꽃 아이템백 리뉴얼 작업 by natinda
-#define MODIFY_KUNDUN_EVENTBAG_RENEWAL_2009_02_04
-#endif // FOR_KOREA
-
-// [버그 수정] PathFind 버그수정(goni)
-#define MODIFY_PATHFIND_BUGFIX_20090609
-#if GAME_VERSION >= G_V_S4_6
-// [보상 변경] 카오스 캐슬 보상 관련 변경 by natinda
-#define MODIFY_CHAOSCASTLE_REWARD_20090608
-#endif
-
-#if defined( FOR_KOREA ) && GAME_VERSION >= G_V_S4_6// 수리비 공식 국내만 적용
-// [공식 수정] 자동 수리비 공식 관련 변경
-#define MODIFY_AUTOREPAIR_CALC_20090608
-#endif // FOR_KOREA
-
-// [버그 수정] 전체 수리비용 관련 문제 (natinda)
-#if GAME_VERSION >= G_V_S4_6
-#define MODIFY_CALREPAIRRATE_20090528
-#endif
-
-#if GAME_VERSION >= G_V_S4_6
-// [업데이트] EventItemBag 확장_addoption 값에 따라 옵션을 넣어줌.(goni)
-#define UPDATE_PROBABILITYITEMBAG_ADDOPTION_VALUE_20090526
-
-// 프리미엄아이템 추가(팬더변신반지, 팬더펫) 2009-04-30 by riverstyx
-// #define PREMIUMITEM_20090106 활성화 되어있어야 함
-#define ADD_PREMIUMITEM_PANDA
-
-// [버그 수정] 무기 스킬을 강화한 후 무기를 장착 해제하면
-// 스킬트리가 비정상적으로 표시 되는 버그(pelero)
-#define MODIFY_WEAPONSKILL_STRENGTHEN_ICON_BUGFIX_2ND_20090514
-
-// [설정수정] 이벤트맵 진입시 스킬 버프를 지우도록 수정(pelero)
-#define ADD_EVENT_MAP_BUFF_EFFECT_DELETE_20090421
-#endif
-
-// [버그수정] 인피니티 에로우 시전시 +2화살의 마나감소 버그(pelero)
-#define MODIFY_INFINITY_ARROW_USE_MANA_BUGFIX_20090416
-
-#if GAME_VERSION >= G_V_S4_5
-// [버그수정] 피의 환영사원 입장권(두루마리/피의두루마리)의 내구도가 0되어도 삭제 안되는 버그 수정
-// 국내도 발생가능 TW_0074(riverstyx) - 국내로 옮겨옴 20090416
-#define MODIFY_ILLUSIONTEMPLE_FREE_TICK_20080617
-
-// [버그수정] 환영 사원에서 라이트닝 쇼크 사용시 버그(pelero)
-#define MODIFY_LIGHTNINGSHOCK_ILLUSIONTEMPLE_BUGFIX_20090414
-
-// [버그수정] 눈사람 변신 반지 장비창에서 창고로 넣을때 변신 안풀리는 버그(pelero)
-#define MODIFY_SNOW_MAN_POLYMORPH_RING_BUGFIX_20090414
-#endif
-
-// [버그수정] 물건을 수리시 수리비용보다 소유젠이 많아야 수리되는 버그(pelero)
-// 소유젠이 수리비와 같을 때도 수리되도록 수정
-#define MODIFY_ITEM_REPAIR_HIRE_BUGFIX_20090415
-
-// [버그수정] 창고에서 물건을 찾을 때 사용료보다 소유젠이 많아야 찾아지는 버그(pelero)
-// 소유젠이 사용료와 같을 때도 찾아지도록 수정
-#define MODIFY_WAREHOUSE_HIRE_BUGFIX_20090413
-
-#if GAME_VERSION >= G_V_S4_5
-// [버그수정] 피씨방버프 부분유료화 버프 처리 로직 개선 2008-04-08 by riverstyx
-// 디파인으로 구분되어 처리되던 피씨방, 해외 부분 유료화 아이템 버프 처리 로직을 하나로 합친다.
-// CheckItemOptForGetExpEx <- (CheckItemOptForGetExp, CPCBangPointSystem::CheckItemOptForGetExp, CNewPVP::CheckItemOptForGetExp) 통합
-// 안정화되면 아래 디파인은 정리할 예정
-// 기존 버프 처리 디파인은 제거
-// MODIFY_MARKITEM_20080506 - 제거
-// MODIFY_EVENTMAP_REWARD_BUGFIX_20080404 - 제거
-// MODIFY_BUFF_SYSTEM_EXTENTION_CASHSHOP_20080318 - 버프 처리 로직에서 제거
-// BUGFIX_BUFF_EFFECT_SYSTEM_FOR_PCBANG_ITEM_20071205 - 버프 처리 로직에서 제거
-#define MODIFY_BUFF_EFFECT_SYSTEM_CHECKLOGIC
-#endif
-
-
-// 루아
-//#define MODIFY_LUA_SCRIPT_20090430
-
-// [버그수정] 공성전 시 공성전 참여길드인데도 PK카운트가 올라가는 현상 수정 2009-04-30 by riverstyx
-#define MODIFY_CASTLESIEGE_STATENOTIFY_JOINGUILD_BUGFIX
-
-// [업데이트] 해킹 툴 블록 기능을 전체 서버에 가능하도록 인증서버와의 연동 기능 추가 (hnine)
-#define MODIFY_HACKTOOL_BLOCK_ALL_SESSION_20090422
-#if GAME_VERSION >= G_V_S3_E1
-// [버그수정] 3차날개 조합가격 버그수정(goni)
-#define MODIFY_THIRD_WING_EXITEMMONEY_BUGFIX_20090423
-#endif
-// [버그수정] Movereq.txt 파일의 최대 맵 인덱스 제한 상승 40 -> 50 (hnine)
-#define MODIFY_MOVEREQ_MAP_INDEX_LITMIT_20090421
-
-#ifdef FOR_KOREA // 현재는 국내만 적용
-// [업데이트] 맵이동을 채팅 메시지가 아닌 맵 이동 요청 프로토콜로 변경 (hnine)
-#if GAME_VERSION >= G_V_S4_6
-//#define ADD_MAPMOVE_PROTOCOL_20090327 //TEST MOVE
-#endif
-#define USE_MAPMOVE_KEY_GENERATOR_SERVER_SIDE
-#endif // FOR_KOREA
-
-// [업데이트] 해킹 툴 블록 기능을 단일 서버에만 적용되도록 임시 수정 (hnine)
-#define MODIFY_HACKING_TOOL_BLOCK_SINGLE_SERVER_20090325
-
-// [버그수정] 드래곤 어택 이벤트 몹에서 떨군 축석을 상점에 판매시 4억이 넘는 금액으로 팔리는 문제. by natinda 20090410
-#define MODIFY_JEWELOFBLESS_SELL_BUGFIX
-
-// [업데이트] 통합빌링 추가(goni)
-#define UPDATE_UNIFICATIONBILL_20090203
-
-// [버그수정] 파워 슬레쉬 거리 버그 수정 테스트 후 삭제(grooving)
-#define MLS_POWERSLASH_DISTANCE_20090216
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] 아이로봇 및 해킹 툴 블록 기능 추가 (hnine)
-#define ADD_HACKING_TOOL_BLOCK_20090311
-
-// [버그수정] 크로스 실드 엑설런트 옵션 적용(pelero)
-#define MODIFY_CROSS_SHIELD_EX_OPTION_APPLY_20090326
-#endif
-
-#if GAME_VERSION >= G_V_S4_5
-// [버그수정] 벚꽃관련 아이템의 판매 가격에 갯수 적용(pelero)
-#define MODIFY_CHERRYBLOSSOM_SELL_MONEY_BUGFIX_20090325
-#endif
-
-// [버그수정] 캐쉬샵 리스트가 없을경우(등록되지 않거나 샵서버와의 연결 문제로 못받았을경우) empty packet을 보내지 않도록 한다. by natinda 20090218
-#define MODIFY_BUGFIX_CASHSHOP_OPEN_INTERFACE
-
-// [업데이트] 이벤트 아이템 발급 로그에 발급된 아이템 정보 추가 2009-03-18 by riverstyx
-#define ADD_COUPON_EVENTITEM_LOG
-
-// [버그수정] Teleport 시 타켓 좌표 Y를 OBJECTSTRUCT.TX 에 입력하는 버그수정 2009-03-12 by riverstyx
-#define MODIFY_TELEPORT_TARGETPOSITION_BUGFIX
-
-// [버그수정] 카오스카드 조합 - 개인상점 오픈시 카오스 조합 불가 2009-03-12 by riverstyx
-#define MODIFY_PCS_CHAOSMIX_PSHOP_BUGFIX
-
-#if GAME_VERSION >= G_V_S4_6
-// [업데이트] 불카누스, PK Field 2009-01-08 by riverstyx
-#define ADD_NEWPVP_PKFIELD
-
-// [업데이트] 겜블링 시스템 업데이트(pelero)
-#define ADD_GAMBLING_20090120
-#endif
-
-#ifdef ADD_NEWPVP_PKFIELD
-// PKField 작업중에 셋트 Life 버그 발견 우선 PKField 반영시에 적용할 예정이다.
-// [버그수정] Life 최대 값 감소시 현재 감소된 값 전송.아이템 효과 적용에서 분리 2009-02-02 by riverstyx
-// 삭제예정
-//#define MODIFY_LIFE_CHANGEMAXVALUE
-
-// [버그수정] Life, Shield 백분율로 100%(Life > MaxLife + AddLife) 넘어가는 버그수정(NewPVP에서만 사용) 2009-04-17 by riverstyx
-#define MODIFY_LIFE_CHANGEMAXVALUE_BUGFIX
-// [업데이트] 벚꽃상자 불카누스에서만 드랍되도록 수정(pelero)
-#define MODIFY_CHERRYBLOSSOM_DROP_VULCANUS_20090324
-#endif // ADD_NEWPVP_PKFIELD
-
-#ifdef ADD_GAMBLING_20090120
-// [업데이트] 겜블링 시스템 보완
-#define MODIFY_GAMBLING_COMPLEMENT_20090513
-// [업데이트] 겜블링 진행여부 스크립트 적용
-#define ADD_IS_ENABLED_GAMBLING_20090504
-// [버그수정] 겜블링 시스템 1차 버그 수정(pelero)
-#define MODIFY_GAMBLING_BUGFIX_1_20090323
-// [업데이트] 스트라이커 셉터 처리 추가(pelero)
-#define ADD_STRIKER_SCEPTER_20090317
-// [업데이트] 에어린보우 추가(pelero)
-#define ADD_AERINBOW_20090309
-#endif // ADD_GAMBLING_20090120
-
-#if GAME_VERSION >= G_V_S2_2
-// 국내 프리미엄 아이템(카오스카드) 추가
-#define ADD_PCS_LOTTERY_SYSTEM_20070117
-#define MODIFY_PCS_CHAOSMIX_REFACTORING_20070903
-#endif
-
-#if GAME_VERSION >= G_V_S3_E2
-// [버그수정] 마스터레벨 경험치 비율을 정수형으로 읽어오는 버그(pelero)
-#define MODIFY_MASTER_LEVEL_ADD_EXPERIENCE_BUGFIX_20090304
-#endif
-
-#if GAME_VERSION >= G_V_S4_5
-// [버그수정] 피씨방 이용자 경험치(Rate) 설정 2009-02-19 by riverstyx
-#define UPDATE_PCBANGPOINTSYSTEM_BUGFIX
-#endif
-
-#if GAME_VERSION >= G_V_S4_6
-// [업데이트] 수성측길드나 수성측연합길드인지 판단(goni)
-#define UPDATE_CHECK_CASTLE_OWNERMEMBER_20090217
-#endif
-
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] 피씨방 이용자 경험치(Rate) 설정 2009-02-16 by riverstyx
-#define ADD_PCBANG_EXPRATE
-#endif
-
-#if GAME_VERSION >= G_V_S4_5
-// [버그수정] 디비렉으로 인한 카오스 조합 복사 버그수정(goni)
-#define MODIFY_CHAOS_ITEM_COPY_BUGFIX_20090211
-
-// [버그수정] 서버에서 몬스터 리로드 옵션 기능 수행시 세루판이 바보가 된 채로 리젠(pelero)
-#define MODIFY_SELUPAN_REGEN_MONSTER_RELOADING_BUGFIX_20090128
-#endif
-
-// [업데이트] GM 기능 강화 2008-12-16 by riverstyx
-#define GMCOMMAND_EX
-#if defined( GMCOMMAND_EX ) && GAME_VERSION >= G_V_S4_5
-#define GMCOMMAND_EX_1ST_BUGFIX
-#endif // GMCOMMAND_EX
-
-#if GAME_VERSION >= G_V_99B
-// [업데이트] GM 기능 강화 2009-01-14 by riverstyx
-#define MODIFY_SETITEM_LEADERSHIP_BUGFIX
-#endif
-
-// [업데이트] 다크로드보완_카오틱디세이어 수정(goni)
-#define UPDATE_CHAOTICDESAIR_SKILL_20090109
-
-#if GAME_VERSION >= G_V_99B
-// [업데이트] 다크로드 보완(다크스피릿, 다크호스 인벤수리가능)(goni)
-#define UPDATE_DARKROAD_PET_ITEMREPAIR_20090109
-#endif
-
-#if GAME_VERSION >= G_V_S4_6
-// [업데이트] 국내 프리미엄 아이템판매(grooving)
-#define PREMIUMITEM_20090106
-#endif
-
-#ifdef PREMIUMITEM_20090106
-#define EVENT_LOTTO
-// [업데이트] 쿠폰 이벤트 아이템 리스트(grooving)
-#define COUPON_EVENT_ITEMLIST_20081022
-// [업데이트] 카오스 부적. 카오스부적 실패시 소멸되는 아이템 보호(grooving)
-#define ADD_CHAOSMIXCHARM_ITEM_20080702
-#endif
-
-#if GAME_VERSION >= G_V_S4_5
-// 국내에두 적용함
-// [업데이트] 수호 아이템. 기존 수호천사 아이템 업그레이드 형태. //grooving
-#define ADD_SAFEGUARD_ITEM_20080702
-
-// 쿨러틴이 데비아스에서 바보인 상태로 리젠되는 버그 수정(pelero)
-#define MODIFY_REGEN_SELUPAN_SUMMON_MONSTER_IN_DEVIAS_BUGFIX_20081205
-
-// [업데이트] 해외 크리스마스 이벤트 맵 추가 (riverstyx)
-#define UPDATE_XMASEVENT_MAP_20080930
-#endif
-
-#ifdef UPDATE_XMASEVENT_MAP_20080930
-// [업데이트] 해외 크리스마스 (grooving)
-#define ADD_XMASEVENT_PET_20080930
-
-// [업데이트] 해외 크리스마스 아이템 지급 관련 (natinda)
-#define ADD_GIFTITEM_XMASEVENT_20081030
-
-// [업데이트] 해외 크리스마스 산타클로스 군단
-#define ADD_ITEM_ATTACK_XMASEVENT_20081014
-
-// [업데이트] 해외 크리스마스 이벤트 Npc 추가
-#define ADD_NPC_XMASEVENT_20080930
-
-// [업데이트] 해외 크리스마스 이벤트 버프 추가
-#define ADD_BUFF_XMASEVENT_20080930
-
-// [업데이트] 해외 크리스마스 변신 반지 추가
-#define ADD_XMASEVENT_POLYMORPH_RING_20080930
-
-// [업데이트] 해외 크리스마스 아이템 지급 처리 추가 (riverstyx)
-#define ADD_PAYITEM_20081030
-// [업데이트] EventDB 확장 (riverstyx)
-#define EVENTDB_PROTOCOLEX
-
-// [버그수정] 15레벨 미만 사용자 산타의 마을 입장 레벨제한 설정 2008-12-17 by riverstyx
-#define MODIFY_SANTACLAUSVILLAGE_VISITLEVEL
-
-// [버그수정] 산타의 강화 마력도 +30 적용(소환술사-공방에 저주력추가) 되도록 변경 2008-12-17 by riverstyx
-#define MDOFIY_BUFF_POWER_UP
-
-// [업데이트] 산타의 마을 NPC 선물 설정 파일로 변경 2008-12-17 by riverstyx
-#define ADD_XMASEVENT_LUCKNUMBER
-
-// [버그수정] 산타의 마을 초대장이 수리되는 버그 수정 2008-12-18 by riverstyx
-#define MODIFY_SANTACLAUSVILLAGE_INVITATION
-
-// [버그수정] 루돌프펫, 눈사람 변신반지 전체수리 제외 2008-12-19 by riverstyx
-#define MODIFY_XMASEVENTITEM_REPAIR
-#endif // UPDATE_XMASEVENT_MAP_20080930
-
-// [버그수정] 누적버그수정(goni)
-#define MODIFY_BUGFIX_20081119
-
-//[버그수정] 적대길드로 설정되있지 않은 유저에게도 데미지가 적용되는 버그(pelero)
-#define MODIFY_FIRESCREAM_SPLASH_DAMAGE_BUGFIX_20081121
-
-#if GAME_VERSION >= G_V_S4_6
-// [버그수정] 같은 레벨의 다크스팅거가 엑알바트로스보우보다 데미지가 높은 버그(pelero)
-#define MODIFY_DARKSTINGER_BUGFIX_20081119
-
-// [버그수정] 스피드 핵 임시 처리 (riverstyx)
-#define MODIFY_SPEEDHACK_20080605
-#endif
-
-#if GAME_VERSION >= G_V_99B
-// [버그수정] 이벤트맵에서 이벤트가 종료되면 순간이동 스킬 사용 못하게..(pelero)
-#define MODIFY_DONT_TELEPORT_EVNET_ENDING_IN_EVENTMAP_20081118
-#endif
-
-// [업데이트] 요정 +3 화살 추가(pelero)
-#define UPDATE_ADD_ARROW_TYPE_PLUS_3_20081106
-
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] 신섭 추가로 변경된 정보를 적용 가능하게 설정 추가 2008-11-13 by riverstyx
-#define ADD_NEWSERVER_20081113
-#endif
-
-#ifdef ADD_NEWSERVER_20081113
-// [업데이트] 신섭 카오스캐슬 몬스터 사냥 시 드롭되는 보상 내역 추가 2008-11-13 by riverstyx
-#ifndef MODIFY_CHAOSCASTLE_REWARD_20090608
-#define ADD_NEWSERVER_CHAOSCASTLE_MONSTERITEMS_20081113
-#endif
-// [업데이트] 신섭 이벤트 Off
-#define ADD_NEWSERVER_EVENTOFF_20081114
-#endif // ADD_NEWSERVER_20081113
-
-#if GAME_VERSION >= G_V_S4_6
-// [업데이트] 상용화 7주년 이벤트(행운의 동전)(goni)
-#define UPDATE_LUCKY_COIN_EVENT_20081029
-#endif
-
-// 인벤에서 수리할경우 마을서 수리할때 비해 3배요금 부과(goni)
-#define UPDATE_INVEN_REPAIREMONEY_INC_20081112
-
-#if GAME_VERSION >= G_V_S4_5
-//[버그수정] 세루판 등장전 부화장 내에서 셔먼 스킬을 사용할 경우 파티원들이 바로 입구로 튕기는 버그 2008-11-07 by natinda
-#define MODIFY_RECALLSKIL_BUGFIX_20081107
-#endif
-
-// [해킹] NPC에 보내지는 비정상적인 요청 차단(거래, 친구추가, 길드추가, 파티초대) - 2008-11-06 by riverstyx
-#define MODIFY_REQUESTNPC_HACK
-
-// [버그수정] 보석복사 버그수정 - riverstyx
-// 유저간 거래상태에서 보석조합을(묶음) 요청 후 거래 취소를 요청하여 복사
-#define MODIFY_JEWELMIXSYSTEM_BUGFIX_20081020
-
-// [버그수정] 맵이동시시 이동 위치 버그수정(goni)
-#define MODIFY_MAPMOVE_POSITION_SYNC_BUGFIX_200981024
-
-#if GAME_VERSION >= G_V_S4_5
-// [수치조정] 데몬과 정령의 내구도 감소율 조정(natinda)
-#define MODIFY_DEMON_AND_SPRITE_DURABILITY_20081023
-#endif
-
-// [버그수정] 파이어스크림 강화시 스플래시 데미지가 적용 안되는 버그(pelero)
-#define MODIFY_STRENGTHEN_FIRESCREAM_SPLASH_DAMAGE_BUGFIX_20081017
-
-// [버그수정] 소켓조합 후 카오스박스 아이템 안내려오는 버그수정(goni)
-#define MODIFY_SOCKET_CHAOSMIX_ITEM_MOVE_BUGFIX_200801021
-
-// [버그수정] 포이즌 소뿔전사 변화 반지 착용시 체인 라이트닝 데미지가 이상적으로 증가하여 벨런스 붕괴 (일본/중국) 국내에도 적용해야 될 것으로 보임..(natinda)
-#define MODIFY_CHAIN_LIGHTNING_BUGFIX_20081022
-
-#ifdef CHAOS_MIX_UPGRADE
-// [버그수정] 착용장비를 카오스 조합시 인벤토리가 풀일 경우 올라간 스탯 때문에 입지도 버리지도 못하는 문제 (natinda)
-#define MODIFY_MIXSYSTEM_BUGFIX_20081016
-#endif
-
-// [버그수정] 마검스킬 보완및 수정(goni)
-#define MODIFY_MAGUMSA_SKILL_BUGFIX_20081015
-
-// [버그수정] GetBuffData 리턴값 NULL 검사(goni)
-#define MODIFY_GETBUFFDATA_RETURNVALUE_NULLCHECK_BUGFIX_20080923
-
-// [업데이트] 환영사원 랭킹서버 SendData 수정(goni)
-#define UPDATE_ILLUTIONTEMPLE_RANKINGSERVER_SENDDATA_FIX_20080925
-
-#if GAME_VERSION >= G_V_S3_E2
-// 라이브 그룹 4차 버그수정
-#define ADD_LIVE_GROUP_4TH_BUGFIX_20080908
-#endif
-
-#ifdef ADD_LIVE_GROUP_4TH_BUGFIX_20080908
-// [업데이트] 이카루스 지역에서 다크로드 셔먼 스킬로 날개(3차 날개, 소환술사용, 다크호스)를
-// 착용했는데도 소환이 안되는 버그(pelero) - WOPS번호:30852
-#define MODIFY_RECALL_PARTY_SKILL_SUMMONER_BUGFIX_20080829
-// [업데이트] 생명력 증가 버프가 있는 상황에서 스탯 부족으로
-// 착용이 불가능한 아이템 착용시 생명력 증가 버프 효과가 2배로
-// 증가하는 버그(pelero) - WOPS번호:30867
-#define MODIFY_INCREASE_LIFE_AND_SETITEM_BUGFIX_20080829
-// [업데이트] 마스터 레벨 캐릭터일 경우 엑설런트 옵션인 공격력증가+레벨/20 옵션이
-// 접속 직후에는 레벨+마스터레벨/20이 적용이 안되는 버그(pelero) - WOPS번호:30853
-#define MODIFY_MASTER_LEVEL_ATTACK20UP_BUGFIX_20080828
-// [업데이트] 다크스피릿으로 공격시 엑설런트데미지, 더블데미지가
-// 적용되지 않는 버그 (pelero) - WOPS번호:28829, 26208
-//#define MODIFY_EX_DAMAGE_DARKSPRIT_BUGFIX_20080826
-// [업데이트] 흑마법사 헬버스트 시전시 순간이동 스킬을 사용하여도
-// 헬버스트 지속시간이 누적되는 버그(pelero) - WOPS번호:29010
-#define MODIFY_TELEPORT_USING_HELLBURST_BUGFIX_20080822
-// [업데이트] 환영사원에서 칼리마 마석이 생성되는 버그(pelero) - WOPS번호:27964
-#define MODIFY_ILLUSION_TEMPLE_USE_KALIMA_GATE_BUGFIX_20080821
-// [업데이트] 소환술사의 체인 라이트닝 스킬이 로스트타워 함정에 사용되는 버그(pelero) - WOPS번호:22175
-#define MODIFY_CHAIN_LIGHTNING_USE_TRAP_BUGFIX_20080820
-// [업데이트] 엘리트해골 변신 반지와 크리스마스 변신반지를 함께 착용할 경우
-// 엘리트해골 변신 반지의 내구도만 감소하는 버그, 또한 (13, 10)의 변신반지(0~6)을
-// 제외한 변신 반지들은 2중으로 내구도가 감소하고 있던 것을 수정(pelero) - WOPS번호:20886
-#define MODIFY_CHANGE_RING_DURABILITY_BUGFIX_20080820
-#endif // ADD_LIVE_GROUP_4TH_BUGFIX_20080908
-
-// [버그수정] 마스터스킬 거리수정(goni)
-#define MODIFY_MASTER_SKILL_DISTANCE_BUGFIX_20080909
-
-// [버그수정] 플러스 조합시 날개 아이템을 일반 아이템 조합으로 설정 (hnine)
-#define MODIFY_PLUS_ITEM_MIX_WING_SET_NORMAL_ITEM_20080916
-
-// [버그수정] 시드스피어 조합 이후에 아이템 이동 불가 버그 수정 (hnine)
-#define MODIFY_SOCKET_CHAOSMIX_ITEM_MOVE_BUGFIX_20080910
-
-#ifdef MASTER_LEVEL_SKILL_SYSTEM_20071122
-// [버그수정] 마스터스킬 방어력 증가값 수정(goni)
-#define BUGFIX_MASTERSKILL_INC_DEFENSE_BUGFIX_20080917
-#endif
-
-// [업데이트] 열매공식 수정(goni)
-#define UPDATE_FRUITPOINT_SUCCESSRATE_FIX_200809017
-
-// [업데이트] 라클리온 보스존에서 로그인할 경우 무조건 안전지대로 이동(pelero)
-#define MODIFY_RAKLION_BOSS_ZONE_BANISH_USER_2ND_20080917
-
-// [업데이트] 라클리온 보스전 실패 후 보스 바로 삭제하도록 수정(pelero)
-#define MODIFY_BATTLE_OF_SELUPAN_FAIL_DELETE_IMMEDIATELY_20080917
-
-// [업데이트] 라클리온 보스전 참여 리스트에서 유저 삭제가 제대로 안되는 문제(pelero)
-#define MODIFY_RAKLION_BATTLE_USER_DELETE_BUGFIX_20080916
-
-// [업데이트] R단축키 저장이 제대로 안되는 버그(pelero)
-#define MODIFY_R_HOTKEY_SAVE_BUGFIX_20080910
-
-// [업데이트] 크라이울프에서 라클리온으로 이동되지 않는 버그(pelero)
-#define MODIFY_CRYWOLF_MOVE_RAKLION_BUGFIX_20080910
-
-#if GAME_VERSION >= G_V_S4_5
-// [버그수정] 시즌4 신규스킬 보완 (goni)
-#define MODIFY_SEASON4_NEWSKILL_20080909
-#endif
-
-#if GAME_VERSION >= G_V_S3_E1
-// 라이브 그룹 3차 버그수정
-#define ADD_LIVE_GROUP_3TH_BUGFIX_20080908
-#endif
-
-#ifdef ADD_LIVE_GROUP_3TH_BUGFIX_20080908
-// [업데이트] 알바트로스 보우 사용시 내구도가 줄지 않는 버그(pelero) - WOPS번호:28574
-#define MODIFY_ALBATROS_BOW_DURABILITY_BUGFIX_20080813
-// [업데이트] 계정을 생성하고 처음으로 창고를 열경우
-// 창고젠을 보내주지 않는 현상 수정(pelero) - WOPS번호:27340
-#define MODIFY_NEW_ACCOUNT_WAREHOUSE_ZEN_BUGFIX_20080812
-// [업데이트] 기사가 마스터 스킬중 액티브 스킬(회오리베기, 블로어, 분노의 일격)을
-// 배운 상태에서 콤보를 사용할 경우 2번째 스킬과 3번째 스킬이 같아도
-// 콤보가 발동 되는 버그 (pelero) - WOPS번호:27647
-#define MODIFY_MASTER_LEVEL_COMBO_SKILL_BUGFIX_20080805
-// [업데이트] 마스터레벨 액티브 스킬에 투자한 스킬을 슬롯에
-// 저장하고 재접속하면 리셋되는 버그 (pelero) - WOPS번호:27127
-#define MODIFY_MASTER_SKILL_HOTKEY_BUGFIX_20080804
-// [업데이트] 내구도가 0인 문스톤 팬던트를 착용하고 있어도 효과가
-// 적용되는 버그(즉사하지 않는 버그) (pelero) - WOPS번호:26919
-#define MODIFY_BATTLE_OF_NIGHTMARE_MOONSTONE_PENDANT_BUGFIX_20080731
-// [업데이트] 환영 사원에서도 쉐도우팬텀의 공방 버프가 유지되는 버그(pelero) - WOPS번호:26834
-#define MODIFY_SHADOW_PHANTOM_BUFF_IN_ILLUSION_TEMPLE_BUGFIX_20080731
-// [업데이트] 이카루스에서 펜릴을 장착했는데도 날개가 벗어지지 않는 버그(pelero)
-// 다크호스만 착용했을때 이카루스로 이동하지 못하는 버그
-#define MODIFY_SKYLAND_FENRIR_AND_WING_BUGFIX_20080730
-// [업데이트]지팡이류에 민첩성 감소 옵션이 적용되지 않는 버그(pelero) - WOPS번호:26206
-#define MODIFY_STAFF_DECREASE_DEXTERITY_BUGFIX_20080729
-// [업데이트]이동불가 스킬에 당한 상태에서 스킬에 의한 밀림현상 수정(pelero) - WOPS번호:29691
-#define MODIFY_BACK_SPRING_SKILL_BUGFIX_20080716
-#endif // ADD_LIVE_GROUP_3TH_BUGFIX_20080908
-
-// [버그수정] 플러스 아이템 조합에서 소켓 아이템이 380아이템으로 적용되는 버그를 수정 (hnine)
-#define MODIFY_PLUSITEMMIX_SOCKET_ITEM_DIVISION_20080905
-
-#ifdef ADD_MASTER_LEVEL_SKILL_SYSTEM_ACTIVE_20080107
-// [업데이트] 공격시 안전지역이면 데미지 적용하지 않고 안전지대로 이동시킨다(pelero)
-// 라클리온 이동 버그 관련하여 수정함
-#define MODIFY_SAFEZONE_CHECK_ATTACK_20080903
-#endif
-
-// [업데이트] 고블린 카오스조합 아이템 레벨 성공확률 조정(goni)
-#define UPDATE_CHAOSMIX_LEVELUP_RATE_20080904
-
-// 뭉친패킷 처리(kuzimo)
-#define HACKTOOL_KUZIMO
-
-// [버그수정] 체인라이트닝 버그수정(goni)
-#define MODIFY_CHAINLIGHTNING_BUGFIX_20080902
-
-// [버그수정] 몬스터 걸치기 작업수정(goni)
-#define MODIFY_MONSTER_ATTACK_BUGFIX_20080902
-
-// [ 버그수정] 스피어 드럽 버그수정(goni)
-//#define MODIFY_SPEAR_DROP_BUGFIX_20080901
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] 시즌4 추가 시세밸런스(goni)
-#define UPDATE_SEASON4_MARKET_CONDITIONS_BALANCE_20080828
-
-// [업데이트] 시즌 4 업데이트 - 소켓 아이템 드롭을 라클리온 맵으로 한정 (hnine)
-#define MODIFY_LIMIT_SOCKET_ITEM_DROP_MAP_RAKLION_20080825
-
-// [업데이트] 시즌 4 업데이트 - 로그추가 2차 (hnine)
-#define ADD_SOCKET_OPTION_LOG_02_20080821
-
-// [업데이트] 시즌 4 업데이트 - 신규 소켓 옵션 추가 (hnine)
-//#define MODIFY_SOCKET_ITEM_NEW_OPTION_20080818
-
-// [업데이트] 시즌 4 업데이트 - 상점에서 판매되는 소켓 아이템에 소켓 슬롯 생성 추가 (hnine)
-#define MODIFY_SEASON4_SHOP_SOCKET_ITEM_MAKE_SLOT_20080808
-#endif
-
-#ifdef MASTER_LEVEL_SKILL_SYSTEM_20071122
-// [업데이트] 마스터스킬 추가 작업(goni)
-#define UPDATE_MASTER_SKILL_4RANK_ADDITION_20080808
-#endif
-
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] 이벤트맵 입장권 조합재료 가격 설정
-#define UPDATE_EVENT_MAP_MIXiTEM_VALUE_200800808
-#endif
-
-// [업데이트] 젠 드랍율 축소(goni)
-#define UPDATE_ZEN_DROP_DOWN_20080806
-
-#if GAME_VERSION >= G_V_S4_5
-//[버그수정] 무기스킬강화시 스킬 아이콘수정(goni)
-#define MODIFY_WEAPONSKILL_STRENGTHEN_ICON_BUGFIX_20080807
-
-// [업데이트] 스킬키 단축기 확장(goni)
-#define UPDATE_SKILLKEY_EXPAND_20080804
-
-// [버그수정] 시즌 4 업데이트 - 버그수정 2차 (hnine)
-#define MODIFY_SEASON4_UPDATE_BUGFIX_02_20080804
-
-// [버그수정] 콤보스킬 데이터구조체의 스킬값 확장(goni)
-#define MODIFY_COMBOSKILLDATA_SKILLNUMBER_20080801
-#endif
-
-#if GAME_VERSION >= G_V_S4_5
-// [버그수정] 재접속시 추가생명력 적용문제 수정(goni)
-#define MODIFY_ADDLIFE_BUGFIX_20080730
-#endif
-
-// [업데이트] 시즌 4 업데이트 - 소켓 아이템 시스템 수정 (hnine)
-#define MODIFY_SOCKET_OPTION_SYSTEM_20080725
-
-// [버그수정] 맵서버이동시 인증부분 삭제 제거(goni)
-#define MODIFY_GAMEGARD_AUTH_MAPSERVER_MOVE_20080723
-
-// [업데이트]공성 성문, 석상 보완 작업(최대HP 값 증가) (pelero)
-#define MODIFY_GATE_AND_STATUE_INCREASE_MAX_HP_20080718
-
-#if GAME_VERSION >= G_V_S4_5
-// [버그수정] 시즌 4 업데이트 - 버그수정 1차 (hnine)
-#define MODIFY_SEASON4_UPDATE_BUGFIX_01_20080722
-
-// [업데이트] 시즌 4 업데이트 - 소켓 아이템 버그 수정 5차 (hnine)
-#define MODIFY_ITEM_SOCKET_OPTION_BUGFIX_05_20080715
-
-// [업데이트] 시즌 4 업데이트 - 소켓 아이템 로그 추가 (hnine)
-#define ADD_SOCKET_OPTION_LOG_20080715
-
-// [업데이트] skill(kor).txt 스크립트 확장 - 스킬 타입(riverstyx)
-// 일단 해외만 적용 국내도 적용해야함
-#define ADD_EXPAND_SKILL_SCRIPT_FOR_SKILLTYPE_20080515
-
-// [업데이트] 시즌 4 업데이트 - 소켓 아이템 버그 수정 4차 (hnine)
-#define MODIFY_ITEM_SOCKET_OPTION_BUGFIX_04_20080710
-#endif
-
-// [버그수성] 타겟유저,소환몬인덱스 체크(goni)
-#define MODIFY_TARGETNUMBER_RECALLMON_INDEX_BUFGIX_20080711
-
-// [버그수정] 스킬 최종 요구에너지버그 수정(riverstyx)
-#define MODIFY_SKILL_REQUIREENERGY_20080423
-
-#if GAME_VERSION >= G_V_99B
-// [버그수정] 유저 접속시 다크 스피릿 스킬 초기화 안되는 버그(pelero) - WOPS번호:20295
-#define MODIFY_DARK_SPRIT_SKILL_INITIALIZE_BUGFIX_20080702
-#endif
-
-// [버그수정] 마검사가 가이온 세트 아이템 착용 후 힘스탯이 올라간 상태에서 블러드어택을 배우고
-// 세트 아이템을 벗어 블러드어택 사용 가능 스탯이 아닌 상태에서도 블러드어택이 시전되는 버그(pelero) - WOPS번호:20674
-#define MODIFY_BLOOD_ATTACK_AND_ADD_STRENGTH_BUGFIX_20080701
-
-// [버그수정] 회오리베기 강화 스킬 습득시 스킬 범위가 줄어드는 버그(pelero) - WOPS번호:26969
-#define MODIFY_ML_STRENGTHEN_WHEEL_RANGE_BUGFIX_20080630
-
-// [버그수정] 칸투르 보스전 다크호스 버그(pelero) - WOPS번호:20444
-#define MODIFY_KANTURU_ENTERANCE_DARKHORSE_BUGFIX_20080627
-
-#if GAME_VERSION >= G_V_S4_5
-// [버그수정] 다크로드 펫의 생명력 버그 수정(pelero) - WOPS번호:19787
-#define MODIFY_DARKLORD_SEND_INFO_PROTOCOL_EXTEND_20080626
-#endif
-
-#ifdef MASTER_LEVEL_UP_SYSTEM_20070912
-// [버그수정] 마스터 레벨끼리 악마의 광장에서 파티시 경험치 분배 버그 수정(pelero) - WOPS번호:29466
-#define MODIFY_MASTER_LEVEL_DEVIL_SQUARE_PARTY_EXP_BUGFIX_20080625
-#endif
-
-// [버그수정] 3차 날개 옵션 5% 확률로 생명력 완전 회복 버그 수정(pelero) - WOPS번호:28215
-#define MODIFY_THIRD_WING_OPTION_5_PERCENT_REFILL_ALL_BUGFIX_20080624
-
-// [업데이트] GM 매크로 최대 확장 (hnine)
-#define MODIFY_MAX_GMCMD_EXTEND_20080630
-
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] 시즌 4 업데이트 - 시즌 4 업데이트 추가 패치는 해당 디파인으로 On/off
-#define ADD_SEASON_4_UPDATE_20080617
-#endif
-
-#ifdef ADD_SEASON_4_UPDATE_20080617
-// [버그수정] 블러드캐슬 유저 인덱스 수정(goni)
-#define MODIFY_BLOODCASTLE_USERINDEX_BUGFIX_20080709
-
-// [업데이트] 시즌 4 업데이트 - 아이템 업그레이드/조합 수정 (hnine)
-#define MODIFY_ITEM_UPGRADE_MIX_RATE_FIX_20080627
-// [업데이트] 시즌 4 업데이트 - 마이너스 열매 공식 수정 (hnine)
-#define MODIFY_MINUS_FRUIT_POINT_CALC_20080627
-
-// [업데이트] 시즌4 블러드캐슬 스케줄 변경(goni)
-#define UPDATE_BLOODECASTLE_SCADULE_20080624
-// [업데이트] 시즌4 신규스킬 추가(goni)
-#define ADD_SEASON4_NEW_SKILL_20080522
-// [업데이트] 시즌4 신규캐릭터 환수스킬(Pollution)추가(goni)
-#define UPDATE_ADD_SUMMONER_SKILL_POLLUTION_20080425
-// [업데이트] 시즌 4 업데이트 - 소켓 아이템 시스템 (hnien)
-//#define ADD_ITEM_SOCKET_OPTION_SYSTEM_20080415
-// [업데이트] 시즌 4 업데이트 - 아이템 소켓 데이터 부분 확장 (hnine)
-//#define ADD_ITEM_SOCKET_OPTION_EXTEND_20080422
-// [업데이트] 시즌 4 업데이트 - 소켓 아이템 조합 NPC (hnine)
-#define ADD_ITEM_SOCKET_OPTION_MIX_20080415
-// [업데이트] 시즌 4 업데이트 - 카오스 조합 프로토콜 확장 (hnine)
-#define MODIFY_CHAOSMIX_PROTOCOL_EXTEND_20080526
-// [업데이트] 라클리온 쿨러틴, 아이언 나이트 리젠시 좌표 버그(pelero)
-#define MODIFY_RAKLION_COOLUTIN_AND_IRON_KNIGHT_REGEN_BUGFIX_20080828
-// [업데이트] 부화장 폐쇄 후 유저의 처리(pelero)
-#define MODIFY_RAKLION_BOSS_ZONE_BANISH_USER_20080818
-// [업데이트] 세루판이 이동하면서 스킬을 사용하는 버그(pelero)
-#define MODIFY_RAKLION_SELUPAN_MOVING_USE_SKILL_BUGFIX_20080813
-// [업데이트]간혹 세루판이 나오지 않아서 라클리온 보스전의 전체 스케쥴이 멈추는 버그(pelero)
-#define MODIFY_RAKLION_SELUPAN_NO_REGEN_BUGFIX_20080730
-// [업데이트]세루판 등장 스킬 타겟 수정(pelero)
-#define MODIFY_RAKLION_SELUPAN_FIRST_SKILL_BUGFIX_20080721
-// [업데이트] 시즌4 이벤트용 로그 추가(pelero)
-#define UPDATE_SEASON_4_EVENT_LOG_200800715
-// [업데이트] 시즌4 업데이트 - 라클리온 보스전 버그 수정 2차(pelero)
-#define MODIFY_RAKLION_BUGFIX_2ND_20080710
-// [업데이트] 시즌4 업데이트 - 라클리온 보스전 버그 수정(pelero)
-#define MODIFY_RAKLION_BUGFIX_20080707
-// [업데이트] 신규맵 라클리온 추가(pelero)
-#define ADD_RAKLION_20080408
-// [업데이트] 라클리온에서 사용하는 프로토콜(pelero)
-#define RAKLION_PROTOCOL_20080625
-// [업데이트] 세루판 관련 몬스터 스킬 갯수 추가 TSkillDefine.h (pelero)
-#define UPDATE_MONSTER_SKILLUNIT_SLOT_EXTEND_20080514
-// 시즌4 안정화 후에 삭제 바랍니다.
-#define SEASON4_PATCH_GROOVING
-#endif // ADD_SEASON_4_UPDATE_20080617
-
-#ifdef ADD_ITEM_SOCKET_OPTION_SYSTEM_20080415
-// [버그수정] 시드 추출 실패시 아이템의 레벨을 0~2 다운되도록 수정 (hnine)
-#define MODIFY_SEED_EXTRACT_FAIL_RESULT_20080903
-
-// [버그수정] 시드와 스피어의 드롭 확률을 설정 가능하도록 수정 (hnine)
-#define MODIFY_SET_SEED_SPHERE_DROP_RATE_20080903
-#endif
-
-#ifdef ADD_ITEM_SOCKET_OPTION_SYSTEM_20080415
-// [버그수정] 시즌 4 업데이트 - 소켓 아이템 드롭 기능 수정 (hnine)
-#define MODIFY_SOCKET_ITEM_DROP_SYSTEM_FIX_20080828
-#endif
-
-#ifdef ADD_ITEM_SOCKET_OPTION_SYSTEM_20080415
-// [업데이트] 시즌 4 업데이트 - 소켓 아이템 버그 수정 3차 (hnine)
-#define MODIFY_ITEM_SOCKET_OPTION_BUGFIX_03_20080704
-
-// [업데이트] 시즌 4 업데이트 - 소켓 아이템 버그 수정 2차 (hnine)
-#define MODIFY_ITEM_SOCKET_OPTION_BUGFIX_02_20080630
-#endif
-
-// [버그수정] OBJECTSTRUCT생성시에 문제 가능성이 있어 재수정.테스트 요함.
-#define MEM2_KUZIMO
-
-// [버그수정] LNK4084 경고 메시지 제거를 위한 OBJECTSTRUCT gObj[MAX_OBJECT]의 Heap메모리 이동. 기타 버그 수정.
-#define MEM_KUZIMO
-
-
-#ifdef FOR_KOREA
-// [업데이트] 시즌4 PC방 포인트 관련 수정
-#ifdef PCBANG_POINT_SYSTEM_20070206
-#define PCBANG_KUZIMO
-#endif
-// [보완작업] 패스워드 길이 12bytes로 수정(kuzimo)
-//#define PW_KUZIMO
-#endif // FOR_KOREA
-
-// [버그수정] 악령 버그수정(goni)
-#define MODIFY_EVIL_BUGFIX_20080618
-
-#ifdef MASTER_LEVEL_SKILL_SYSTEM_20071122
-// [버그수정] 몬스터 킬 시 SD, 마나 중첩 회복 버그수정(goni)
-#define MODIFY_SKILL_ML_MONSTER_KILL_SD_BUGFIX_20080514
-#endif
-
-// [버그수정] AddMonster 수정(goni)
-#define MODIFY_ADDMONSTER_BUGFIX_20080423
-
-//[업데이트] 세트아이템 드랍 로그수정 (goni)
-#define UPDATE_SET_ITEM_DROP_LOG_20080420
-
-// [버그수정] 공성서버 진입 불가 관련 추적 로그 (hnine)
-//#define MODIFY_CASTLE_MAP_MOVE_TRACE_LOG_20080418
-
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] 캐릭명 변경(goni)
-#define UPDATE_CHANGE_CHARACTERNAME_20080410
-#endif
-
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] NPC 레오 이벤트 아이템 백 셋트적용(goni)
-#define UPDATE_NPC_REO_NEW_EVENTITEMBACK_20080408
-#endif
-
-//[버그수정] 아이템 겹치는 문제 수정(goni)
-#define MODIFY_ITEMDURABILITY_BUGFIX_20080408
-
-// [버그수정] 소환술사 위크니스, 이너베이션 PVP 적용시간 수정(goni)
-#define MODIFY_SUMMONER_WEAKENESS_ENERVATION_PVPEFFECTTIME_BUGFIX_20080404
-
-// [버그수정] 공성 직인등록시간 리셋수정(goni)
-#define MODIFY_CASTLE_CROWN_ACCESS_TIME_CHECK_BUGFIX_20080403
-
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] 이벤트 아이템 백에 셋트아이템 추가(goni)
-#define UPDATE_PROBABILITYiTEMBAG_ADD_SETITEM_20080329
-
-// [업데이트] ItemSetOption(kor)에 소환술사 클래스 확장(goni)
-#define UPDATE_SETOPTION_SCRIPT_ADD_CLASS_20080321
-
-// [업데이트] 벚꽃놀이 이벤트(riverstyx)
-#define ADD_EVENT_CHERRYBLOSSOM_20080312
-
-// [업데이트] 각 이벤트맵 보상 경험치 배율 추가(pelero)
-#define UPDATE_ADD_EVENT_MAP_EXP_RATE_20080320
-
-// [업데이트] 마검사, 다크로드, 소환술사 파티 세트 경험치 추가(pelero)
-#define UPDATE_ADD_NEW_PARTY_SET_EXP_20080325
-
-// [업데이트] 아이템 시리얼 확장 (hnine)
-#define MODIFY_ITEM_SERIAL_EXPAND_20080227
-#endif
-
-// [업데이트] 아이템 시리얼 중복체크 옵션 리로드 가능하도록 수정 (hnine)
-#define MODIFY_SERIAL_CHECK_OPTION_RELOAD_20080212
-
-//[버그수정] 스킬리스트 사이즈 수정(goni)
-#define MODIFY_SKLL_LIST_SIZE_BUFFIX_20080221
-
-// [업데이트] 쉐도운팬텀공방 최대레벨 스크립트로 변경(goni)
-#define UPDATE_SHADOW_PHANTOM_MAX_LAVEL_LOAD_SCRIPT_20080220
-
-// [업데이트] "/요청 off"시 적대관계 맺기/끊기 요청에대한 거부도 추가(goni)
-#define UPDATE_REQUEST_OFF_ADD_RELATIONSHIP_20080219
-
-#if GAME_VERSION >= G_V_S4_5
-//해외로 빌드시 컴파일 에러가 발생하여 상위 디파인조건을 추가함 riverstyx
-#ifdef FOR_KOREA
-// [버그수정] 피씨방포인트상점 종료시 처리(goni)
-#define MODIFY_PCBANGPOINTSHOP_CLOSEWINDOWS_BUGFIX_20080218
-#endif // FOR_KOREA
-#endif
-
-//////////////////////////////////////////////////////////////////////////
-// 시즌3plus 신규캐릭터 스킬추가
-//////////////////////////////////////////////////////////////////////////
-#if GAME_VERSION >= G_V_S2
-// 380 아이템 엑 안떨어지게(goni)
-#define MODIFY_380_EXCELENT_ITEM_DISABLE_20080212
-#endif
-
-// [버그수정] 슬립시킬 성공률 수정(goni)
-#define MODIFY_SLEEP_SKILL_SUCCESSRATE_BUGFIX_20080125
-
-// [업데이트] 로그추가(goni)
-#define UPDATE_ADD_LOG_20080117
-
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] 옵션 키 레벨추가(goni)
-#define UPDATE_OPTIONKEY_LEVEL_20080116
-
-// [업데이트] 신규캐릭터 신규스킬 추가(goni)
-#define UPDATE_SUMMONER_NEW_SKILL_20080111
-#endif
-
-// [버그수정] 신규캐릭터 summoner 3차날개 버그수정(goni)
-#define MODIFY_SUMMONER_THIRD_WING_BUFGIX_20090109
-
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] 신규맵 평온의 늪 추가(goni)
-#define UPDATE_NEWMAP_SWAMP_OF_CALMNESS_20080108
-#endif
-//////////////////////////////////////////////////////////////////////////
-
-// [버그수정] 마라쥬 NPC 한테 말을 걸경우 상정 종료되 문제 수정(goni)
-#define MODIFY_MIRAGE_NPC_ACT_CLOSESHOP_BUGFIX_20080123
-
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] 마스터레벨 입장 이벤트맵 입장권 재료 드롭확률 조정(goni)
-#define UPDATE_MASTER_LEVEL_EVENTMAP_TICKET_METERIAL_DROPRATE_20080123
-#endif
-
-// [버그수정] 몬스터 생성시 락을 검(goni)
-// #define MODIFY_ADDMONSTER_ADDLOCK_20080117
-
-// [버그수정] 버프 시스템 확장 7차 수정 (hnine)
-#define MODIFY_BUFFSYSTEM_BUGFIX_07_20080109
-
-// [버그수정] 이동제한 버그수정(goni)
-#define MODIFY_MOVEMAP_BUGFIX_20080109
-
-#ifdef DUEL_SYSTEM_20031028
-//[버그수정] 상대방을 PK시 데미지 반사로 자신이 죽을경우 상데방이 PK적용 안되게 수정(goni)
-#define MOIDFY_PK_DAMAGE_REFLECT_NOPK_BUGFIX_20081202
-#endif
-
-#if GAME_VERSION >= G_V_S3_E2
-// [버그수정] 버프 시스템 확장 6차 수정 (hnine)
-#define MODIFY_BUFFSYSTEM_BUGFIX_06_20080102
-#endif
-
-// [버그수정] 정당방위 시간 및 최대 인원수 수정(goni)
-#define MODIFY_SELFDEFENSETIME_MAXSELFDEFIENSE_20071221
-#if GAME_VERSION >= G_V_S3_E2
-// [버그수정] 신규캐릭터 버그수정_1(goni)
-#define MODIFY_SUMMONER_BUGFIX_1_20071221
-#endif
-
-#ifdef MODIFY_BUFF_SYSTEM_EXTENTION_20070917
-// [버그수정] 버프 시스템 확장 5차 수정 (hnine)
-#define MODIFY_BUFFSYSTEM_BUGFIX_05_20071220
-
-// [버그수정] 버프 시스템 확장 4차 수정 (hnine)
-#define MODIFY_BUFFSYSTEM_BUGFIX_04_20071216
-#endif
-
-#if GAME_VERSION >= G_V_S3_E2
-// [버그수정] 공성시 공성 마크가 제대로 출력되지 않는 버그 수정 (hnine)
-#define MODIFY_CASTLESIEGE_MARK_DISPLAY_20071216
-
-// [버그수정] 신규캐릭터 장비 내구소 감소 버그수정(goni)
-#define MODIFY_SUMMONER_ITEM_DURABILITY_DOWN_BUGFIX_20071213
-#endif
-
-// [업데이트] 해외 부분유료화 메크로 국내용으로 수정 (hnine)
-#define MODIFY_INVEN_CLEAR_MACRO_20071212
-
-#ifdef MODIFY_BUFF_SYSTEM_EXTENTION_20070917
-// [업데이트] 버프 시스템 확장 3차 수정 (hnine)
-#define MODIFY_BUFFSYSTEM_BUGFIX_03_20071211
-#endif
-
-// [로그추가] 일본 요청으로 경험치 출력 로그에 몬스터 인덱스와 이벤트 타입 추가(hnine)
-#define MODIFY_EXP_LOG_MONSTER_EVENT_INDEX_20060906
-
-// [버그수정] 클라이언트 접속시 끊기는 문제수정(goni)
-#define MODIFY_JOIN_ERROR_BUGFIX_20071211
-
-#ifdef MODIFY_BUFF_SYSTEM_EXTENTION_20070917
-// [업데이트] 버프 시스템 확장 2차 수정 (hnine)
-#define MODIFY_BUFFSYSTEM_BUGFIX_02_20071204
-#endif
-
-#if GAME_VERSION >= G_V_S3_E2
-// [업데이트] 신규캐릭터 3차날개 조합생성( 차원의 날개 ) (goni)
-#define ADD_SUMMONER_THIRD_WING_MIX_20071203
-
-// [업데이트] 신규캐릭터 2차, 3차날개 (절망의 날개, 차원의 날개) (goni)
-#define ADD_SUMMONER_SECOND_THIRD_WING_20071130
-#endif
-
-#ifdef MODIFY_BUFF_SYSTEM_EXTENTION_20070917
-// [업데이트] 버프 시스템 확장 1차 수정 (hnine)
-#define MODIFY_BUFFSYSTEM_BUGFIX_01_20071128
-#endif
-
-#if GAME_VERSION >= G_V_S3_E2
-// [업데이트] 신규 UI 추가_단축키, 입장횟수(goni)
-#define ADD_SEASON_3_NEW_UI_20071122
-
-// [버그수정] 뷰포트 내의 유저들을 위한 버프 추가 삭제 프로토콜 변경 (hnine)
-#define MODIFY_SEND_BUFFEFFECT_IN_VIEWPORT_20071121
-#endif
-
-// [버그수정] 카오스 조합시 조합 가격이 초과할 경우 확률이 마이너스 값을 가지는 버그 수정 (hnine)
-#define MODIFY_CHAOSMIX_MONEY_OVER_MAX_FIX_RATE_20071114
-
-#if GAME_VERSION >= G_V_S3_E2
-// [업데이트] 시즌 3 신규 캐릭터 추가(goni)
-#define ADD_SEASON_3_NEW_CHARACTER_SUMMONER_20070912
-#endif
-
-// [버그수정] 인벤토리에서 같은 위치로 아이템 이동시 아이템 사라지는 문제(goni)
-#define MODIFY_INVENTORY_ITEM_MOVE_BUGFIX_20071113
-
-#if GAME_VERSION >= G_V_S3_E2
-// [업데이트] 행운의 호박 드롭레벨 설정(goni)
-#define UPDATE_PUMPKIN_OF_LUCK_DROP_LEVEL_20071026
-#endif
-
-// [버그수정] 파티시 정방설정 관련 버그수정(goni)
-#define MODIFY_PARTY_SELFDEFENSE_BUG_FIX_20071022
-
-// [업데이트] 타이틀바에 버전정보추가(goni)
-#define UPDATE_TITLEBAR_VERSION_INFO_120071004
-
-#if GAME_VERSION >= G_V_S3_E2
-// [업데이트] 마스터레벨 시스템(RKFKA)
-#define MASTER_LEVEL_SYSTEM_20070912
-
-// [업데이트] 버프 시스템 전면 수정 (hnine)
-#define MODIFY_BUFF_SYSTEM_EXTENTION_20070917
-
-// [업데이트] 버프 시스템 확장에 따른 기존 스킬 버프 효과 변경 (hnine)
-#define MODIFY_OLD_BUFF_EFFECT_SYSTEM_20071004
-#endif
-
-#if GAME_VERSION >= G_V_S3_E1
-// [업데이트] ItemAddOption에서 카테고리 별로 로드 하도록 설정 (hnine)
-#define MODIFY_ITEMADDOPTION_LOAD_CATEGORY_20070712
-#endif
-
-#if GAME_VERSION >= G_V_S3_E2
-// [업데이트] 시즌 3 신규 맵 엘베란드 추가(goni)
-#define ADD_SEASON_3_NEW_MAP_20070910
-
-// [버그수정] 공성전 사이클 조정 (RKFKA)
-#define MODIFY_CASTLE_SIEGE_CYCLE_RESET_20071009
-#endif
-
-// [업데이트] 해외 부분유료화 on/off (hnine)
-//#define ADD_PARTIALY_CHARGE_ON
-
-// [업데이트] 해외 부분유료화 디파인 정리 (hnine)
-#ifdef ADD_PARTIALY_CHARGE_ON
-// [버그수정] 비약류 사용시 처리 순서 변경 (hnine)
-//#define MODIFY_IMPROVE_POTION_CALC_PROCEDURE_20071023
-
-// [업데이트] 부분유료화 : 환영사원 보상 경험치에 인장류 아이템 효과 설정 (hnine)
-#define MODIFY_SET_MARK_EFFECT_AT_ILLUSIONTEMPLE_20071018
-// [업데이트] 부분유료화 : 국내 아이템과 해외 아이템 중 인덱스가 겹치는 부분 수정 (hnine)
-// 이동의 인장(13,52)->(13,59), 면죄부(13,53)->(13,60)
-#define MODIFY_PCS_OVERLAP_ITEM_BUFF_INDEX_20071011
-
-// [업데이트] 부분유료화 : 행운의 부적의 조합확률 적용을 환영사원 입장권과 3차날개 추가 (hnine)
-#define MODIFY_PCS_LUCKY_CHARM_TICKET_3RD_WING_20071011
-
-// [업데이트] 부분유료화 : 환영사원 자유 입장권 추가 (hnine)
-#define ADD_PCS_ILLUSION_TEMPLE_FREE_TICKET_20071011
-
-// 해외 부분유료화 1차 업데이트 (hnine)
-#define ADD_PARTIALY_CHARGE_SYSTEM_01_20070110
-// 해외 부분유료화 2차 업데이트 (hnine)
-#define ADD_PARTIALY_CHARGE_SYSTEM_02_20070423
-#if GAME_VERSION >= G_V_S3_E2
-// 해외 부분유료화 3차 업데이트 (riverstyx, hnine)
-#define ADD_PARTIALY_CHARGE_SYSTEM_03_20080407
-// 해외 부분유료화 4차 업데이트 (riverstyx)
-#define ADD_PARTIALY_CHARGE_SYSTEM_04_20080723
-// 해외 부분유료화 5차 업데이트 (grooving)
-#define ADD_PARTIALY_CHARGE_SYSTEM_05_20080930
-// 해외 부분유료화 6차 업데이트 (natinda)
-#define ADD_PARTIALY_CHARGE_SYSTEM_06_20090129
-// 해외 부분유료화 7차 업데이트 (pelero)
-//#define ADD_PARTIALY_CHARGE_SYSTEM_07_20090915
-#endif
-
-// 해외 부분유료화 2차는 1차 업데이트가 필요함.
-#if defined ( ADD_PARTIALY_CHARGE_SYSTEM_02_20070423 ) && !defined ( ADD_PARTIALY_CHARGE_SYSTEM_01_20070110 )
-#define ADD_PARTIALY_CHARGE_SYSTEM_01_20070110
-#endif
-// [업데이트] 국내 시즌 2.5와 해외 부분유료화 통합시 발생 에러 수정 (hnine)
-#define MODIFY_SEASON25_PCS_UNIFICATION_20070903
-// [업데이트] 해외부분유료화 조합 관련 리팩토링 추가 (hnine)
-#define MODIFY_PCS_CHAOSMIX_REFACTORING_20070903
-
-// [버그수정] 환영사원 보상경험치 인장 혜택 삭제 (hnine)
-// #define MODIFY_REMOVE_MARK_BENEFIT_ILLUSIONTEMPLE_REWARD_20071116
-
-// [업데이트] 환영사원 메시지 로컬라이징 (hnine)
-// #define MODIFY_ILLUSIONTEMPLE_MESSAGE_LOCALIZING_20071104
-// -> MODIFY_ILLUSIONTEMPLE_MESSAGE_20080417
-
-// [업데이트] 공성 물약 조합시 행운의 부적 사용 차단 (hnine)
-#define MODIFY_LUCKYCHARM_BLOCK_USE_CASTLEPOTION_20071105
-
-#if GAME_VERSION >= G_V_S3_E2
-// [버그수정] 해외 블러드 캐슬 MasterLevel 입장 버그 수정(riverstyx)
-#define MODIFY_MASTER_LEVEL_SYSTEM_20080414
-
-// [버그수정] 해외 이동명령 버그 수정 (riverstyx)
-#define MODIFY_MOVECOMMAND_20080415
-
-// [업데이트] 환영사원 출력 메시지 업데이트 (riverstyx)
-// 일단 해외만 적용
-#define MODIFY_ILLUSIONTEMPLE_MESSAGE_20080417
-
-// [업데이트] 마스터레벨을 0으로 설정할 수 있도록 수정(riverstyx)
-#define MODIFY_MASTER_LEVEL_SYSTEM_COMMAND_20080417
-
-// [버그수정] 10이하 유저 경험치 및 젠 손실 버그 수정(riverstyx)
-// 국내도 있는 버그 일단 해외만 적용
-#define MODIFY_MINLEVEL_EXPRATE_20080630
-
-// [업데이트] 장착된 아이템은 못 팔도록 수정(riverstyx)
-// 클라이언트 버그로 확인됨 디파인 삭제 예정 20081024 (riverstyx)
-//#define ADD_NOT_SELL_EQUIPITEM_20080625
-
-// [버그수정] 악마의 광장 확장된 맴에 종료 30초전 메시지 안가는 버그 수정 (riverstyx)
-// 국내도 있는 버그 일단 해외만 적용
-#define MODIFY_DEVILSQUARE_CLOSE_MSG_20080717
-
-// 악마의 광장 조합 아이템 드랍 관련 - 해외만 적용(grooving)
-#define DEVILSQARE_COMBINE_ITEM_DROP_20090114
-
-// 전투축구 이벤트 일반 유저 명령어로 실행 불능 버그 수정 - 해외만 수정(grooving)
-#define BATTLESOCCERWAR_COMMAND_BUGFIX_20090310
-
-// [버그수정] 세트 아이템 버그 수정(riverstyx)
-//#define MODIFY_SETITEM_BUGFIX_20080731
-
-// [버그수정] 공성서버 접속 사용자가 월드서버(사용자 MAX)로 이동시 발생하는 투명 버그 수정
-// 국내도 발생가능(riverstyx)
-#define MODIFY_MOVECOMMAND_BUGFIX_20080806
-
-// [버그수정] 장착된 아이템 내구도 체크 (riverstyx)
-// 일단 EQUIPMENT_WEAPON_RIGHT, EQUIPMENT_WEAPON_LEFT 체크 - 국내도 있는 버그 일단 해외만 적용
-#define MODIFY_EQUIPITEM_CHECKDURABILITY_20080811
-
-// [버그수정] 아이템 구매/판매 시 구매(60) 판매(18) 제한에 걸린경우 처리함(riverstyx)
-#define MODIFY_SELLBUYITEM_20080811
-
-// [버그수정] 요정 세트 아이템 착용 후 힘스탯이 올라간 상태에서 아이스애로우를 배우고
-// 세트 아이템을 벗어 아이스애로우 사용 가능 스탯이 아닌 상태에서도 시전되는 버그(riverstyx)
-#define MODIFY_SKILL_ICEARROW_AND_ADD_DEXTERITY_BUGFIX_20080820
-#endif
-
-// 해외 부분유료화가 켜 있는 상태에서는 설정되면 안되는 디파인들
-#else
-#ifdef FOR_KOREA
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 로그 추가 6차 (hnine)
-#define EXTEND_LOG_SYSTEM_06_20070308
-#endif
-//////////////////////////////////////////////////////////////////////////
-//
-// ** 아이템을 지급하는 NPC 정리(RKFKA)
-// 루크(PC방 활성화): PC방에서 지급 / EventDB에 등록된 유저 / 한 번 / 아이템백에서 랜덤 지급
-// 레오(화이트엔젤) : 접속하면 지급 / EventDB에 등록된 유저 / 한 번 / 아이템백에서 랜덤 지급
-// 앨런(레드이벤트) : 접속하면 지급 / 모든 유저 / 하루에 한 번 / 아이템백에서 랜덤 지급
-//
-//////////////////////////////////////////////////////////////////////////
-#if GAME_VERSION >= G_V_S3_E2
-// [업데이트] 아이템지급 NPC 도우미 앨런 추가(RKFKA)
-#define ADD_ITEM_GIVE_NPC_ALAN_20070823
-#endif
-#endif // FOR_KOREA
-#endif // ADD_PARTIALY_CHARGE_ON
-
-#if GAME_VERSION >= G_V_S4_5
-// 해외 부부분유료화 아이템구매 요청결과 추가(goni)
-#define UPDATE_BUY_CASHITEM_ERROR_CODE_20090410
-#endif
-
-// 해외 부분유료화 5차 업데이트 (grooving)
-#ifdef ADD_PARTIALY_CHARGE_SYSTEM_05_20080930
-// [업데이트] 5차 부분유료화 부활, 이동 부적 (grooving)
-#define ADD_TELEPORT_CHARM_ITEM_20080930
-#endif //ADD_PARTIALY_CHARGE_SYSTEM_05_20080930
-
-// 부분유료화 4차 업데이트
-#ifdef ADD_PARTIALY_CHARGE_SYSTEM_04_20080723
-// [업데이트] 카오스 부적. 카오스부적 실패시 소멸되는 아이템 보호 //grooving
-#define ADD_CHAOSMIXCHARM_ITEM_20080702
-
-// [업데이트] 4차 아이템 추가(치유의 인장, 신성의 인장) riverstyx
-#define ADD_CASHITEM_4RD_MARK_20080723
-
-// [업데이트] 4차 아이템 추가(전투의 스크롤, 강화의 스크롤) riverstyx
-#define ADD_CASHITEM_4RD_SCROLL_20080723
-#endif // ADD_PARTIALY_CHARGE_SYSTEM_04_20080723
-
-// 부분유료화 3차 업데이트
-#ifdef ADD_PARTIALY_CHARGE_SYSTEM_03_20080407
-// [업데이트] 카오스카드 조합 시스템 확장 (hnine)
-#define MODIFY_EXPEND_CHAOSCARD_SYSTEM_20080326
-
-// [업데이트] 소환술사 캐릭터 카드 (riverstyx)
-#define ADD_CHARCARD_SUMMONER_20080313
-
-// [업데이트] 버프 아이템 캐쉬伺낯
-#define MODIFY_BUFF_SYSTEM_EXTENTION_CASHSHOP_20080318
-
-#ifdef MODIFY_BUFF_SYSTEM_EXTENTION_CASHSHOP_20080318
-// [버그수정] 버프 아이템(비약) 사용만료 후 능력치 계산을 다시 하도록 수정(riverstyx)
-#define MODIFY_BUFFITEM_MEDICINE_20080424
-#endif // MODIFY_BUFF_SYSTEM_EXTENTION_CASHSHOP_20080318
-
-// [버그수정] 버프 아이템(비약) 셋트 아이템 능력치 계산 부분 수정(riverstyx)
-#define MODIFY_BUFFITEM_MEDICINE_SETITEM_20080424
-
-// [버그수정] 버프 아이템(인장) 유지의 인장 사용시 블러드 캐슬 경험치가 증가되는 버그 수정(riverstyx)
-#define MODIFY_MARKITEM_20080506
-
-// [버그수정] 버프 아이템(비약) 셋트 아이템 능력치 계산 부분 수정(riverstyx)
-#define MODIFY_BUFFITEM_MEDICINE_SETITEM_20080709
-#endif // ADD_PARTIALY_CHARGE_SYSTEM_03_20080407
-
-// [업데이트] 인장 아이템 추가 (hnine)
-#define ADD_PCS_MARK_OF_EXP_20070205
-
-#ifdef ADD_PARTIALY_CHARGE_SYSTEM_02_20070423
-// [버그수정] 칼리마 자유 입장권 사용 실패 부분 처리 추가 (hnine)
-#define MODIFY_KALIMA_FREETICKET_USE_RESULT_20070830
-
-// [버그수정] 리셋열매 결과 코드 추가 (hnine)
-#define MODIFY_RESET_FRUITS_RESULT_TYPE_20070821
-// [버그수정] 엘도라도 이벤트의 옵션 로드 순서를 바꿈 (hnine)
-#define MODIFY_ELDORADO_EVENT_OPTION_LOAD_SEQUEANCE_20070821
-
-// [버그수정] ItemAddOption의 추가효과를 Add변수로 적용시키도록 변경 (hnine)
-#define MODIFY_ITEMADDOPTION_VARIABLE_20070725
-// [업데이트] 확장 열매 사용시 감소 스텟이 기본 스텟 이하일 경우 기본 스텟 까지만 초기화 되도록 수정 (hnine)
-#define MODIFY_PCS_FRUITS_EX_DECREASE_POINT_SET_DEFAULT_20070806
-// [버그수정] 캐쉬 아이템 이동 옵션에 희귀 아이템 티켓 6 추가 (hnine)
-#define MODIFY_ADD_CASHITEM_MOVE_CHECK_ITEM_20070821
-// [버그수정] ItemAddOption의 옵션은 할로윈 아이템과 부분유료화 아이템의 효과를 분리해서 적용시킨다.
-#define MODIFY_ITEMADDOPTION_SET_EFFECT_20070801
-// [업데이트] 아이탬 구매시 아이템의 최대 겹치기 갯수만큼 더해주도록 설정 (hnine)
-#define MODIFY_OVERLAP_ITEM_DURATION_20070730
-// [업데이트] ItemAddOption에서 카테고리 별로 로드 하도록 설정 (hnine)
-#define MODIFY_ITEMADDOPTION_LOAD_CATEGORY_20070712
-// [업데이트] 기간제 아이템 슬롯 확장 (hnine)
-#define MODIFY_PERIODITEM_SLOT_EXTEND_20070423
-// [업데이트] 캐쉬 아이템 리스트 우선 순위 추가 (hnine)
-#define ADD_CASH_ITEMLIST_RATIO_20070430
-// [업데이트] 엘리트 물약 (풀 회복 물약) 추가 (hnine)
-#define ADD_FULL_RECOVERY_POTION_20070719
-// [업데이트] 열매 시스템 확장 (hnine)
-#define ADD_PCS_FRUITS_POINT_EXTENTION_20070430
-// [업데이트] 면죄부 추가 (hnine)
-#define ADD_PCS_INDULGENCE_20070504
-// [업데이트] 100% 회복 물약 추가 (hnine)
-#define ADD_PCS_FULL_RECOVERY_POTION_20070508
-// [업데이트] 멥 이동 제한을 확인하는 상태 수정 (hnine)
-#define MODIFY_MAPMOVEBOUNCE_CHECK_OPTION_20070521
-// [업데이트] 강화의 비약 추가 (hnine)
-#define ADD_PCS_IMPROVE_POTION_20070718
-// [업데이트] 엘리트 스크롤 추가 (hnine)
-#define ADD_ELITE_SCROLL_20070521
-#endif // ADD_PARTIALY_CHARGE_SYSTEM_02_20070423
-
-#ifdef ADD_PARTIALY_CHARGE_SYSTEM_01_20070110
-// [버그수정] 개인 상점을 연 상태로 카오스 카도 조합을 할 수 없음. (hnine)
-#define MODIFY_CHAOSCARD_MIX_BLOCK_PSHOP_USE_20070713
-
-// [버그수정] 블러드캐슬 자유 입장권 관련 버그 수정 (hnine)
-#define MODIFY_BLOODCASTLE_ENTER_ITEMCHECK_20070627
-
-// [버그수정] 기간제 아이템 관리를 위한 크리티컬섹션 추가 (hnine)
-//#define MODIFY_PERIOD_ITEM_SYSTEM_CRITICALSECTION_20070619
-
-// [버그수정] 기간제 아이템 구입 시 DB에 이미 사용 중인 아이템이 있는지 확인 한다. (hnine) - 임시 삭제
-//#define MODIFY_CHECK_PERIOD_ITEM_LIST_AT_ITEMBUY_20070619
-
-#if GAME_VERSION >= G_V_S2_2
-#ifndef FOR_JAPAN
-// [업데이트] 인장 효과를 다른 유저에게도 보여준다. (hnine)
-#define MODIFY_PERIODITEM_EFFECT_ADD_VIEWPORT_20070601
-#endif // FOR_JAPAN
-
-// [버그수정] 블러드 캐슬 자유 입장권 사용시 메시지 버그 수정 (hnine)
-#define MODIFY_FREE_BLOODCASTLE_ENTER_CHECK_20070531
-
-// [버그수정] 인장 효과 크라이울프 보상 적험치 적용 (hnine)
-#define MODIFY_MARKITEM_EFFECT_USE_CRYWOLF_REWARD_20070502
-
-// [버그수정] 유지의 인장 효과가 접속 종료 시간에 사라지는 버그 수정 (hnine)
-#define MODIFY_PERIODITEM_EFFECT_DURING_CLOSETIME_20070416
-#endif
-
-// [버그수정] 플러스 아이템 조합시 로그 변경 (hnine)
-#define MODIFY_PLUSITEM_CHAOSMIX_LOG_BUGFIX_20070330
-
-#if GAME_VERSION >= G_V_S2_2
-// [버그수정] 이벤트 맵에서의 인장 아이템 효과 삭제 - 유지의 인장 제외 (hnine)
-#define MODIFY_MARKITEM_EFFECT_REMOVE_IN_EVENTMAP_20070328
-
-// [버그수정] 행운의 부적 사용 범위에 날개 조합 추가 (hnine)
-#define MODIFY_LUCKYCHARM_ADD_WINGMIX_20070328
-#endif
-
-// [버그수정] 게임 종료시 카오스 조합 아이템 리스트 저장 (hnine)
-#define MODIFY_SAVE_CHAOSBOX_ITEMLIST_AT_LOGOUT_20070328
-
-// [버그수정] 부분 유료화 기간제 시스템 1차 수정 (hnine)
-#define MODIFY_PERIOD_ITEM_SYSTEM_BUGFIX_20070326
-
-#if GAME_VERSION >= G_V_S2_2
-// [버그수정] 잭 오 랜턴의 축복 물약 사용시 튕기는 버그 수정 (hnine)
-#define MODIFY_JOL_BLESS_POTION_USE_EFFECT_20061030
-// [업데이트] 할로윈 데이 이벤트 작업 (hnine)
-#define HALLOWINDAY_JACK_O_LANTERN_EVENT_20061017
-#endif
-
-// [업데이트] 캐쉬 샵 시스템 추가 (hnine)
-#define ADD_PARTIALY_CHARGE_CASH_SHOP_20070117
-// [업데이트] 캐쉬 아이템 기간제 시스템 추가 (hnine)
-#define ADD_PARTIALY_CHARGE_PERIOD_SYSTEM_20070205
-// [업데이트] 복권 아이템 (hnine)
-#define ADD_PCS_LOTTERY_SYSTEM_20070117
-// [업데이트] 인장 아이템의 맵 이동 제한 (hnine)
-#define ADD_PCS_MARKITEM_MAP_MOVE_BOUND_20070221
-// [업데이트] 이벤트 맵 자유 입장권
-#define ADD_PCS_EVENT_MAP_FREE_TICKET_20070110
-// [업데이트] 조합률 상승 아이템
-#define ADD_PCS_CHAOSMIX_SUCCESS_RATE_UPGRADE_CHARM_20070111
-// [업데이트] 카오스 조합 확률 조정
-#define MODIFY_CHAOSMIX_RATE_FIX_20070304
-// 2차 업데이트 예정 컨텐츠
-#endif // ADD_PARTIALY_CHARGE_SYSTEM_01_20070110
-
-#if GAME_VERSION >= G_V_S2_2
-// 부분 유료화 아이템 추가를 위해 필요한 디파인들.
-// [업데이트] 캐쉬 아이템 효과 적용을 위한 ItemAddOption.h 추가
-#define ITEM_ADD_OPTION_20061019
-#endif
-
-// [업데이트] 젠증가 옵션 추가(commonserver.cfg) (RKFKA)
-#define ADD_ZEN_OPTION_20070903
-
-#if GAME_VERSION >= G_V_S3_E1
-// [업데이트] 이벤트 맵_환영 사원(goni)
-#define ADD_EVENT_MAP_ILLUSION_TEMPLE_20070328
-#endif
-
-#ifdef ADD_EVENT_MAP_ILLUSION_TEMPLE_20070328
-// [버그수정] 피의두루마리 조합재료 가격표시 오류 수정 (goni)
-#define MODIFY_ILLUSIONTEMPLE_ITEMVALUE_BUFGIX_20070904
-#endif
-
-// [버그수정] 개인이 개인 공격시 정방 안걸리는 버그 수정 (goni)
-#define MODIFY_SELFDEFENSE_20070904
-
-#if GAME_VERSION >= G_V_S3_E1
-// [업데이트] 추석 몬스터 이벤트(RKFKA)
-#define CHUSEOK_MONSTER_EVENT_20070823
-
-// [업데이트] 공성 직인 등록중 실패시 누적시간 감소 패널티 삭제 (RKFKA)
-#define MODIFY_CASTLE_CROWN_ACCESS_TIME_20070828
-#endif
-
-// [업데이트] 아이템 백을 읽을 때 기본으로 사용할 함수 설정 (RKFKA)
-#define MODIFY_EVENTITEMBAG_BASIC_SET_20070823
-
-// [버그수정[ 8 월 버그수정(goni)
-#define MODIFY_0708_BUFFIX_20070820
-
-#ifdef ADD_EVENT_MAP_ILLUSION_TEMPLE_20070328
-// [버그수정] 환영사원 버그수정_6 (goni)
-#define MODIFY_ILLUSIONTEMPLE_BUGFIX_6_200708013
-#endif
-
-#if GAME_VERSION >= G_V_S3_E1
-// [업데이트] 로그 추가 8차 (hnine)
-#define EXTEND_LOG_SYSTEM_08_20070810
-#endif
-
-// [버그수정] 시련의땅 입장 금액 조건확인 수정 (RKFKA)
-#define MODIFY_CASTLE_HUNTZONE_TAX_BUGFIX_20070806
-
-#ifdef ADD_EVENT_MAP_ILLUSION_TEMPLE_20070328
-// [버그수정] 환영사원 버그수정_5(goni)
-#define MODIFY_ILLUSIONTEMPLE_BUGFIX_5_20070807
-
-// [버그수정] 환영사원 버그수정_4(goni)
-#define MODIFY_ILLUSIONTEMPLE_BUGFIX_4_20070802
-#endif
-
-// [버그수정] PK 시스템 개선 버그수정_공성시 PK 유저 파티 패널티 제거(goni)
-#define MODIFY_PK_SYSTEM_BUGFIX_2_20070731
-
-#ifdef ADD_EVENT_MAP_ILLUSION_TEMPLE_20070328
-// [버그수정] 환영사원 버그수정_3, MAX_OBJ증가(goni)
-#define MODIFY_ILLUSIONTEMPLE_BUGFIX_3_20070731
-#endif
-
-#if GAME_VERSION >= G_V_S3_E1
-// [로그수정] 3차전직 로그수정(RKFKA)
-#define MODIFY_LOG_THIRD_CHANGEUP_20070801
-
-// [로그추가] 환영사원 로그추가(goni)
-#define ADD_LOG_ILLUSION_TEMPLE_1_20070727
-#endif
-
-#ifdef ADD_EVENT_MAP_ILLUSION_TEMPLE_20070328
-// [버그수정] 환영사원 버그수정_2(goni)
-#define MODIFY_ILLUSIONTEMPLE_BUGFIX_2_20070724
-
-// [버그수정] 환영사원 버그수정_1(goni)
-#define MODIFY_ILLUSIONTEMPLE_BUGFIX_1_20070723
-#endif
-
-// [버그수정] 최대 대미지 유저 검색시 버그수정(goni)
-#define MODIFY_MAXHITUSER_BUG_FIX_20070711
-
-#if GAME_VERSION >= G_V_S3_E1
-// 환영사원 스크립트 보강( 보상경험치 증가율, 최소 Skill 사용 횟수 )(goni)
-#define UPDATE_ILLUSION_TEMPLE_SCRIPT_20070710
-#endif
-
-#if GAME_VERSION >= G_V_S3_E1
-// [버그수정] 블러드 캐슬 시작 시간 변경 버그 수정(goni)
-#define MODIFY_BLOODECASTLE_SCADULE_BUGFIX_20070710
-#endif
-
-#if GAME_VERSION >= G_V_S3_E1
-// [업데이트] 환영사원 비활성화시 수정(goni)
-#define MODIFY_ILLUSION_TEMPLE_SCEDULE_20070703
-
-// [업데이트] 환영 펜릴 추가(goni)
-#define ADD_ILLUSION_FENRIR_20070703
-#endif
-
-#ifdef MODIFY_QUEST_SYSTEM_20070525
-// [버그수정] 퀘스트 몬스터 킬카운트 정보 초기화 버그 수정 (RKFKA)
-#define MODIFY_QUEST_MONSTER_KILL_COUNT_BUGFIX_20070704
-#endif
-
-#if GAME_VERSION >= G_V_S3_E1
-// [업데이트] 블러드 캐슬 시작 시간대(짝수 홀수) 스크립트로 변경(goni)
-#define UPDATE_BLOODECASTLE_SCADULE_20070702
-
-// [업데이트] 환영사원 들어가기전 MAX_MAP 수정(goni)
-#define UPDATE_BEFORE_ILLUSION_TEMPLE_MAX_MAP_20070702
-
-// [버그수정] 환영사원 버그수정(goni)
-#define MODIFY_ILLUSION_TEMPLE_20070629
-
-// [업데이트]400레벨 달성시 파티원로그 추가(goni)
-#define ADD_LOG_400LEVELUP_PARTY_20070628
-
-// [업데이트] 3차 날개 추가 (RKFKA)
-#define ADD_THIRD_WING_20070525
-// [업데이트] 3차 전직 시스템 (RKFKA)
-#define THIRD_CHANGEUP_SYSTEM_20070507
-
-// [버그수정] 퀘스트 시스템 버그수정 및 보완 (RKFKA)
-#define MODIFY_QUEST_SYSTEM_20070525
-
-// [업데이트] 악마의 광장 시작시간 스케줄 추가(goni)
-#define UPDATE_DEVIL_SQUARE_START_TIME_20070511
-#endif
-
-// [업데이트] 조합 시스템 개선 (RKFKA)
-#define MODIFY_MIX_SYSTEM_20070518
-
-// [버그수정] 라이프스톤을 던지자마자 적용되는 버그(생성시간 이후에 적용되어야 함) (RKFKA)
-#define MODIFY_LIFESTONE_BUGFIX_20070426
-
-
-#if GAME_VERSION >= G_V_S3_E1
-// [업데이트] Shop14 추가-> WzVersionManager, WzAuthGs, WzFsGate 같이 수정(RKFKA)
-#define ADD_SHOP_14_20070308
-#endif
-
-// [버그수정] 레알서버 고가품 등록아이템 드랍버그 수정(goni)
-#define MODIFY_VALUABLE_ITME_BUGFIX_20070828
-
-// [버그수정] 용사, 전사, 마법의 반지 거래 버그수정(goni)
-#define MODIFY_MAGICIARINGRING_TRADE_BUGFIX_20070328
-
-// [버그수정] PK 시스템 개선 버그 수정_2단계 이상 살인마와 파티중인 캐릭을 죽였을경우 살인마가 되는부분 수정(goni)
-#define MODIFY_PK_SYSTEM_BUGFIX_20070323
-
-#if GAME_VERSION >= G_V_S3_E1
-// [업데이트] 로그 추가 7차 (hnine)
-#define EXTEND_LOG_SYSTEM_07_20070320
-
-// [업데이트] 블러드 캐슬 성문 생성 로그 추가(goni)
-#define ADD_LOG_BLOODCASTLE_DOOR_20070321
-#endif
-
-// [버그수정] 카오 유저가 블러드 캐슬에 입장을 위해 천사와 대화시 메시지 수정(goni)
-#define MODIFY_BLOODCASTLE_PK_USER_ENTER_MESSAGE_20070321
-
-// [버그수정] 정당방위 종료시 종료 실패 메시지 추가(goni)
-#define MODIFY_SELFDEFENSE_CLOSE_20070321
-
-// [버그수정] 파티 경험치 획득 버그 2차 수정(goni)
-#define MODIFY_PARTY_PLAY_EXPERIENCE_2_20070320
-
-// [버그수정] 카오스캐슬 안전지대에서만 입장가능으로 수정(goni)
-#define MODIFY_ENTER_CHOSCASTLE_BUGFIX_20070316
-
-#if GAME_VERSION >= G_V_S3_E1
-// [업데이트] 변신 반지 착용시 뷰포트 정보에 장비정보 추가(goni)
-#define UPDATE_VIEWPORTCREATE_CHANGE_ADD_CHARSET_20070314
-
-// [업데이트] 고가품 설정 아이템 추가 및 삭제(goni)
-#define UPDATE_VALUABLE_ITEM_20070307
-
-// [버그수정] 잃어버린표식 이동시 아이템 사라지는 버그수정(goni)
-#define MODIFY_MOVE_KUNDUN_MARK_20070307
-
-// [업데이트] 폭죽판매 NPC(goni)
-#define ADD_FIRECRACKER_NPC_20070306
-
-#if GAME_VERSION >= G_V_S4_6
-// [업데이트] PK 시스템 개선(goni)
-#define UPDATE_PK_SYSTEM_20070302
-#endif
-
-// [업데이트] 세도우 팬텀 공방 보완(goni)
-#define UPDATE_SHADOW_PHANTOM_20070302
-
-// [업데이트] GM 기능 추가: GM 선물상자추가, GM 소환지역 추가, GM 마크 활성화, GM 콘솔 기능 추가, GM 캐릭터 변신반지 추가(goni)
-#define UPDATE_GM_FUNCTION_20070228
-
-// [업데이트] 이벤트 아이템 상자 드롭엑설런트 아이템 로그 추가(goni)
-#define ADD_LOG_EVENT_DROP_EXITEM_20070308
-#endif
-
-// [버그 수정] 상자 발 밑에 떨어지는 현상 수정(goni)
-#define MODIFY_BOX_DROP_POSITION_20070308
-
-// [버그수정] 공성전 시작시 시련의 땅에 있는 모든 유저를 로랜협곡 앞마당으로 보낸다.(RKFKA)
-#define MODIFY_CASTLEHUNTZONE_USER_BUGFIX_20070223
-
-// [소스수정] 데빌스퀘어에서 랭킹서버로 보내는 주기적인 메세지 삭제(RKFKA)
-#define DELETE_DEVILSQURE_MESSAGE_TO_RANKINGSERVER_20070223
-
-#if GAME_VERSION >= G_V_S3_E1
-// [버그 수정] 변신반지 거래 버그(goni)
-#define MODEFY_CHAGNE_RING_TRADE_INVENTORY_20070213
-
-// [버그 수정] 잃어버린 지도를 수동으로 겹칠때 표식이 사라지지 않는 버그(goni)
-#define MODIFY_CREATE_LOSTMAP_ITEM_20070209
-
-// [버그 수정] 파티후 다른지역에서 사냥시 경험치 획득 버그_레벨차 200이상(goni)
-#define MODIFY_PARTY_PLAY_EXPERIENCE_20070208
-
-// [업데이트] 발렌타인데이 상자 드롭엑설런트 아이템 로그 추가(goni)
-#define ADD_LOG_VALENTINES_DAY_DROP_EXITEM_20070212
-
-// [버그 수정] 발렌타인데이 상자 발 밑에 떨어지는 현상 수정(goni)
-#define MODIFY_VALENTINES_DAY_BOX_DROP_20070202
-
-// [업데이트] 설날복주머니 추가(goni)
-#define UPDATE_NEWYEAR_LUCKYBAG_MONSTER_20070131
-
-// [업데이트] 카오스캐슬 시스템변경 - 시간이 끝나 유저가 1명 남으면 몬스터가 있어도 성공(RKFKA)->적용 보류
-//#define MODIFY_CHAOSCASTLE_SYSTEM_CHANGE_SUCCESS_FLOW_20070129
-
-// [업데이트] 물자보급관 파멜라, 안젤라 추가(goni)
-#define UPDATE_QUARTERMASTER_NPC_20070122
-#endif
-
-// [업데이트] 확률 별 이벤트 아이템 가방 추가(goni)
-#define UPDATE_EVENT_ITEM_BAG_EXTEND_20070131
-
-// [업데이트] 카오스캐슬에서 몬스터 남은 수를 판단하는 루틴 변경(RKFKA)
-#define MODIFY_CHOSCASTLE_MONSTER_COUNT_RECAL_20070119
-
-// [버그수정] 법사 스킬 악령 서버판단으로 변경 (RKFKA) -> 적용보류
-//#define MODIFY_SKILL_EVEIL_AT_SERVER_20070117
-
-#if GAME_VERSION >= G_V_S3_E1
-// [업데이트] 용사, 전사(우정의 돌)의 반지 추가/수정(goni)
-#define UPDATE_LOWLEVEL_SUPPORT_RING_20070119
-
-// [버그추적] 카오스캐슬에서 몬스터가 남아 실패한 경우 몬스터의 좌표를 로그로 남긴다.(RKFKA)
-#define ADD_LOG_CHAOSCASTLE_LEFT_MONSTER_ATTR_20070118
-
-// [업데이트] 방어력/공격력향상 스킬 적용시 이전보다 조건이 나쁘면 적용하지 않는다.(RKFKA)
-#define MODIFY_ELF_DEFENCE_ATTACK_VALUE_UP_SKILL_20070110
-#endif
-
-// [버그수정] 알바트로스 보우 버그 수정 (goni)
-#define MODIFY_ALBATROS_BOW_BUGFIX_20070105
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 크리스마스의 별 아이템 추가 (RKFKA)
-#define CHRISTMAS_STAR_20061211
-
-// [업데이트] 크리스마스 이벤트 산타크로스 변신반지 (hnine)
-#define CHRISTMAS_SANTA_POLYMORPH_RING_20061117
-
-// [업데이트] 공성전 참여길드로 선정된 길드의 점수를 표기한다. (RKFKA)
-#define ADD_CASTLE_TOTAL_GUILD_SCORE_20061123
-
-// [업데이트] 로그 추가 5차 (hnine)
-#define EXTEND_LOG_SYSTEM_05_20060823
-
-// [버그수정] 행운의 호박이 드롭되는 버그 수정 (hnine)
-#define MODIFY_BLOCK_PUMPKIN_OF_LUCK_DROP_20061120
-#endif
-
-// [버그수정] 카오스캐슬 버그 수정 2차 (RKFKA)
-#define MODIFY_CHAOSCASTLE_BUGFIX2_20061026
-
-#if GAME_VERSION >= G_V_S2_2
-// [버그수정] 잭 오 랜턴의 축복 물약 사용시 튕기는 버그 수정 (hnine)
-#define MODIFY_JOL_BLESS_POTION_USE_EFFECT_20061030
-
-// [버그수정] 조화의 보석 옵션의 초기값이 FF로 저장되는 버그 수정 (hnine)
-#define MODIFY_HARMONY_OPTION_INIT_VALUE_FIX_20061019
-
-// [업데이트] 할로윈 데이 이벤트 작업 (hnine)
-#define HALLOWINDAY_JACK_O_LANTERN_EVENT_20061017
-
-// [업데이트] 할로윈 변신반지 작업 (hnine)
-#define HALLOWINDAY_JACK_O_LANTERN_MORPH_RING_20061017
-#endif
-
-#if GAME_VERSION >= G_V_99B
-// 카오스 캐슬
-#define CHAOSCASTLE_SYSTEM_20040408 // 카오스 캐슬 이벤트
-#define CHAOSCASTLE_TIME_BUGFIX_20040508 // 카오스 캐슬 시간 버그 수정
-
-// 반지의 제왕 이벤트 -> 반지 던지기 이벤트
-#define RING_EVENT_ITEMBOX_20031124
-
-// 내 친구 이벤트 관련 (b4nfter)
-//#define FRIENDSHIP_STONE_EXCHANGE_20040206 // 우정의돌 환전 시 체크
-#define FRIENDSHIP_EVENT_RING_BOX_20040211 // 전사의반지 이벤트
-#endif
-
-#ifdef CHAOSCASTLE_SYSTEM_20040408
-// [버그수정] 카오스캐슬 버그 수정 (RKFKA)
-#define MODIFY_CHAOSCASTLE_BUGFIX_20060919
-#endif
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 카오스캐슬 제도 보상을 삭제한다. (hnine)
-#define MODIFY_DELETE_ZETTO_EVENT_20061121
-#endif
-
-#if GAME_VERSION >= G_V_S4_5
-// [업데이트] PC방 미납자 메시지를 주기적으로 출력하도록 수정 (hnine)
-#define MODIFY_PCBANG_DEFAULTER_MESSAGE_20061011
-#endif
-
-// [버그수정] 칸투르 나이트메어전 성공,실패 초기화 버그 수정(RKFKA)
-#define MODIFY_KANTURU_NIGHTMARE_INIT_BUGFIX_20061010
-
-#ifdef NEW_SKILL_FORSKYLAND
-// [버그수정] 요정 아이스애로우스킬. 미스가 난 경우 아이스적용 안되도록 수정. ( hjlim )
-#define MODIFY_ELF_ICEARROWSKILL_BUGFIX_20060914
-#endif
-
-// [버그수정] 다크로드 - 어스퀘이크 스킬. 필요에너지 버그 ( hjlim )
-#define MODIFY_DARKLORD_EARTHQUAKE_REQENERGY_BUGFIX_20060914
-
-// [버그수정] 380 아이템 드롭시 380옵션이 사라지는 버그 수정 (hnine)
-#define MODIFY_380_ITEM_OPTION_DELETE_AT_DROP_20060919
-
-// [버그추적] 카오스캐슬, 블러드캐슬 버그 추적 로그 추가(RKFKA)
-#define ADD_LOG_FOR_CASTLE_BUG_20060911
-
-// [업데이트] 해외 시즌 2 패치를 위한 수정 ( PC방 전용 이벤트의 에러를 처리를 위한 디파인)
-#ifndef FOR_KOREA
-#define MODIFY_SEASON_02_20060908
-#endif
-
-#if !defined( MODIFY_SEASON_02_20060908 ) && GAME_VERSION >= G_V_S4_5
-// [업데이트] PC방 활성화 이벤트 (RKFKA) - PC방 쿠폰이벤트를 그대로 사용하되 아이템 드랍처리만 변경되었다.
-#define PCBANG_REVITALIZATION_EVENT_20060830
-
-// [업데이트] 화이트엔젤 아이템 지급 이벤트 (RKFKA)
-#define WHITEANGEL_GET_ITEM_EVENT_20060822
-
-// [버그수정] PC방 이벤트 카오스캐슬 무료 입장 - 버그 수정(RKFKA)
-#define MODIFY_PCBANG_EVENT_FREE_CHAOSCASTLE_20060331
-
-// [업데이트] PC방 이벤트 - 카오스캐슬 무료입장 (RKFKA)
-#define PCBANG_EVENT_FREE_CHAOSCASTLE_20060307
-
-// [업데이트] PC방 전용 이벤트 - 쿠폰발행 이벤트 (hnine)
-#define PCBANG_COUPON_EVENT_20060124
-
-// [업데이트] PC방 전용 이벤트 - 칼리마 무료이동 이벤트 (hnine)
-#define PCBANG_FREE_KALIMA_EVENT_20060124
-#endif
-
-// [버그추적] 캐슬 몬스터 버그 추적 로그 추가 (RKFKA)
-#define ADD_LOG_CASTLE_MONSTER_BUG_FIX_20060911
-
-#ifdef ADD_NEW_SKILL_FOR_CASTLE_01_20041116
-// [버그수정] 착용한 변신반지를 빼면 클라이언트에서 정보를 리셋함 - 킬카운트 정보를 보내준다.
-#define MODIFY_KILL_COUNT_BUGFIX_20060908
-#endif
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 엘리트해골전사변신반지 추가(RKFKA)
-#define ADD_ELITE_SKELETON_WORRIOR_CHANGE_RING_20060830
-#endif
-
-// [버그수정] AI Automata 딜레이 적용 버그 수정 ( hjlim )
-#define MODIFY_MONSTERAI_AUTOMATA_DELAY_BUGFIX_20060907
-
-#if GAME_VERSION >= G_V_S2_2
-// [버그수정] 크라이울프 보스 몬스터는 경험치를 주지 않는다. - 발가스, 다크엘프, 발리스타 (hnine)
-#define MODIFY_NON_EXP_IN_CRYWOLF_MONSTER_20060530
-
-// [버그수정] 맵 이동시 칼리마 게이트 채크 부분 수정 (hnine)
-#define MODIFY_MAP_MOVE_LEVEL_MESSAGE_SEND_20060830
-
-// [버그수정] 로그 시스템 확장 (2,3차) 내용 수정 (hnine)
-#define MODIFY_LOG_SYSTEM_2_3_20060828
-
-// [버그수정] 파이어스크림스크롤 드랍 가능하게 수정 - 시즌2 전용 (apple)
-#define MODIFY_ITEM_DROP_FIRESCREAMSCROLL_20060830
-#endif
-
-// [버그수정] 아이템 드랍 버그 수정 (apple)
-// 1) Type 당 배정되어 있는 Index 의 최대값에 해당되는 아이템 드랍 안 되는 버그 수정
-// 2) 법서의 드랍 가능 Index 최대 범위 수정
-#define MODIFY_ITEM_DROP_MAXINDEX_20060830
-
-// [버그수정] 크라이울프 HeroList 로그 버그 ( hjlim )
-#define MODIFY_CRYWOLF_HEROLIST_LOG_BUGFIX_20060828
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 로그 시스템 확장 - 3차 (hnine)
-#define EXTEND_LOG_SYSTEM_04_20060823
-#endif
-
-// [업데이트] 칸투르 보스전 타임어택 이벤트 (RKFKA) - 20061018 이벤트 종료로 삭제(RKFKA)
-//#define KANTURU_TIMEATTACK_EVENT_20060822
-#if GAME_VERSION >= G_V_99B
-// [버그수정] 맵 서버 이동 시 캐릭터 저장 Flag 수정(중국적용 후 모두 적용) ( hjlim )
-#define MODIFY_MAPSERVERMOVE_FLAG_BUGFIX_20060817
-#endif
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 조화의보석 메시지 WTF 추가 ( hjlim )
-#define ADD_JEWEL_OF_HARMONY_WTFMESSAGE_20060818
-
-// [업데이트] 로그 시스템 확장 - 2차 (hnine)
-#define EXTEND_LOG_SYSTEM_03_20060816
-
-// [버그수정] 380 추가 옵션 스크립트 타입 확장 ( hjlim )
-#define MODIFY_380ITEM_SCRIPTTYPE_EXTEND_20060811
-
-//[업데이트] PC방 전용 체험서버에서 접속시 이동 가능 맵 설정 (hnine)
-#define MODIFY_KANTURU_MAPNUMBER_CHECK_20060807
-
-// [업데이트] 타겟을 가지는 트랩을 위해 PMSG_ACTIONRESULT에 타겟 인덱스 추가(hnine)
-#define ADD_TRAP_OBJECT_EXTEND_20060731
-
-// [업데이트] 몬스터 AI & 스킬 수정 ( hjlim_RKFKA )
-#define MODIFY_NEW_MONSTER_AI_01_2006724
-#define MODIFY_NEW_MONSTER_SKILL_01_20060724
-#endif
-
-// [버그수정] 350 아이템 2차 버그 수정. 신규아이템추가 시 주의 ( hjlim )
-#define MODIFY_350ITEM_BUGFIX2_20060823
-
-// [버그수정] 몬스터 밀기 스킬 기본값 적용 / 독 딜레이 없이 즉시 처리 적용 ( hjlim )
-#define MODIFY_MONSTERSKILL_SPRING_POISON_BUGFIX_20060817
-
-//[버그수정] 350 아이템 추가 버그 수정 ( hjlim )
-#define MODIFY_350ITEM_BUGFIX_20060811
-
-// [버그수정] 맵이동 최소 레벨 체크 수정 ( hjlim )
-#define MODIFY_CHECK_MOVELEVEL_20060731
-
-#if !defined(GAMESERVER_TO_CASTLESIEGESERVER) && GAME_VERSION >= G_V_S2_2
-// [업데이트] 칸투르 보스전 추가(RKFKA)
-#define ADD_KANTURU_20060627
-#endif
-
-
-//[버그수정] 조화의보석/380아이템 DB버전 관련 버그 수정.매우 중요. ( hjlim )
-#define MODIFY_JEWELOFHARMONY_380OPTION_DBVERSION_BUGFIX_20060727
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 다크로드 스킬 파이어 스크림 추가(RKFKA)
-#define ADD_SKILL_DARKLOAD_FIRESCREAM_20060601
-
-// [업데이트] 마이너스 스탯 열매 개선 ( hjlim )
-#define MODIFY_MINUS_FRUIT_POINT_20060622
-#endif
-
-// [버그수정] 유저 종료 시 귓말 캐시에서 캐릭터명 삭제하지 않는 버그 ( hjlim )
-#define MODIFY_WHISPER_CASH_BUGFIX_20060704
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 380 아이템 추가 옵션 시스템 ( hjlim )
-//#define ADD_380ITEM_NEWOPTION_20060711
-
-// [업데이트] 조화의 보석 시스템 (hjlim)
-//#define ADD_JEWEL_OF_HARMONY_SYSTEM_20060530
-#endif
-
-#if GAME_VERSION >= G_V_99B
-// [버그수정] 개인상점 오픈 후 공성서버->로랜시아 이동 시
-// RegenMapNumber 초기화 안해서 생기는 위치 버그 수정(apple)
-// !!주의!! gObjMoveGate()에서 RegenMapNumber 가 초기화 된다
-#define MODIFY_MOVEGATE_CHECK_PERSONALSHOP_OPEN_20060704
-#endif
-
-// [버그수정][ExDB] 서로 다른 서버에서 친구 추가 시 서버정보 오류 버그 ( hjlim )
-#define MODIFY_RE_ADDFRIEND_BUG_20060623
-
-// [버그수정][ExDB] 캐릭터 종료 시 길드인 경우 친구 종료처리 하지않는 버그 ( hjlim )
-#define MODIFY_CHARCLOSE_BUG_20060623
-
-// [버그수정] 스웰라이프 초기화 버그 재수정 ( hjlim )
-#define MODIFY_SWELLLIFE_BUG_FIXAGIAN_20060628
-
-// [버그수정] 익스플로젼 블레이드 추가 마력 반영 되지 않는 버그 ( hjlim )
-#define MODIFY_EXPLOSION_BLADE_WEAPON_MAGICDAMAGE_BUG_20060623
-
-// [버그수정] 엑설런트 엘리멘탈 방패 생증 옵션 버그 (hjlim)
-#define MODIFY_EXCELLENT_SHILED_BUG_20060615
-
-#if GAME_VERSION >= G_V_S2_2
-// [버그수정] 성문, 석상 업그레이드 할 때 수호보석을 삭제한 후 업그레이드를 실행한다. (RKFKA)
-#define MODIFY_CASTLE_NPC_UPGRADE_PROCESS_20060619
-#endif
-
-// [버그수정] 주민번호를 제대로 체크하지 않는 버그 - USA 국가코드가 추가되면서 해당 처리가 빠졌음(RKFKA)
-#define MODIFY_JOOMINCHECK_FOR_USA
-
-// [버그수정] 수호석상 & 라이프 스톤 회복 - 최대 HP,MP,AG 버그 (hjlim)
-#define MODIFY_GUARDIANSTATUE_LIFESTONE_REFILLBUG_FIX_20060609
-
-// [버그수정] 공성 직책 스킬 - 투명 스킬 타겟 설정 버그 ( hjlim )
-#define MODIFY_CLOAKING_TARGET_BUGFIX_20060608
-
-// [버그수정] 연합길드 방출 시 생기는 버그 (hjlim)
-#define MODIFY_UNIONGUILD_KICKOUT_BUGFIX_20060529
-
-// [버그수정] 법사 순간 이동시 뷰포트 버그 재수정 (hjlim)
-#define MODIFY_WIZARD_TELEPORT_VIEWPORT_20060526
-
-// [버그수정] 결투 종료 후 다크스피릿 타겟 해제 (hjlim)
-#define MODIFY_DARKSPIRTI_TARGETRELEASE_ON_DUEL_20060524
-
-// [버그수정] 엑설런트 아이템 드랍시 내구도 버그 (hjlim)
-#define MODIFY_EXCELLENT_DROP_DURATION_BUG_20060524
-
-// [업데이트] 게임가드 2.5버전에서 맵 서버 이동시에는 인증을 하지 않는다. (hnine)
-#ifdef NPROTECT_GAME_GAURD_FOR_SERVER_VERSION_25_20060123
-#define MODIFY_GAMEGUARD_NOT_AUTH_MAPSERVER_MOVE_20060513
-#endif
-
-// [업데이트] 카오스 캐슬에서는 쉴드 파괴 이펙트를 출력하지 않는다. (hnine)
-#define MODIFY_NO_SHOW_SHIELDBROKE_EFFECT_IN_CHAOSCASTLE_20060523
-
-// [누적버그수정] 헬 버스트 스킬 시전 시간 문제 수정 (hnine)
-#define MODIFY_HELLBURST_SKILL_TIME_20060522
-
-// [버그수정] 아이템 최대 내구도 계산 버그 (0527삭제) (hjlim)
-//#define MODIFY_CALC_DURABILITY_20060523
-
-// [버그수정] 몬스터 저항력 100% 저항 설정 (hjlim)
-#define MODIFY_MONSTER_RESISTANCE_IMMUNE_20060523
-
-// [버그수정] 쿤둔 관련 뷰포트 버그 (hjlim)
-#define MODIFY_KUNDUN_VIEWPORT_20060523
-
-#if GAME_VERSION >= G_V_S2_2
-// [버그수정] 펜릴 엑설런트 옵션 버그(젠증가/방성증가 버그) (hjlim)
-// MODIFY_DESTRUCTION_FENRIR_GET_MONEY_20060515 삭제
-#define MODIFY_FENRIR_EXOPTION_BUG_20060522
-#endif
-
-// [버그수정] 로랜협곡/크라이울프 맵에서 펜릴 공격시 상대 내구력 감소 하지 않는 버그 (hjlim)
-#define MODIFY_CASTLEMAP_FENRIR_DURATION_20060522
-
-// [버그수정] 쉴드/마나 최대 값 감소시 현재 감소된 값 전송.아이템 효과 적용에서 분리 ( hjlim )
-#define MODIFY_SHIELD_MANA_CHANGEMAXVALUE_20060526
-
-// [버그수정] 아이템 효과 적용 순서 변경. 엑설런트아이템/세트아이템 ( hjlim )
-//#define MODIFY_ITEM_EFFECT_FLOW_20060519
-//#define MODIFY_ITEM_EFFECT_FLOW_20060519_2
-
-// [버그수정] 레벨업시 체력증가 옵션 적용안되는 버그 및 재접후 깍이는 버그(0527재수정) (hjlim)
-#define MODIFY_LIFEANDMANA_BUG_LEVELUP_RELOGIN_20065018
-
-#if GAME_VERSION >= G_V_S2_2
-// [스킬보완] 인피니티 애로우 스킬 취소 적용 (RKFKA)
-#define ADD_INFINITY_ARROW_CANCEL_20060516
-#endif
-
-#ifdef MAP_SERVER_WORK_20041030
-// [버그수정] 맵 이동시 아이템 드롭으로 인한 아이템 복사 버그 수정 (hnine)
-#define MODIFY_ITEM_DUPLICATION_USING_ITEMDROP_20060518
-#endif
-
-#if GAME_VERSION >= G_V_S2_2
-// [버그수정] 드롭이 안되는 고가의 아이템 추가 (hnine)
-#define ADD_NON_DROP_VALUABLE_ITEM_20060518
-#endif
-
-// [버그수정] 일본 스웰라이프 초기화 버그 수정 (hnine)
-#define MODIFY_SWELLLIFE_INIT_BUGFIX_20060411
-
-// [버그수정] 텔레포트 중 잔상 버그 수정 (삭제) (hnine)
-//#define MODIFY_AFTERIMAGE_BUGFIX_20060215
-
-// [버그수정] 일본 공성 서버 종료 시간 3초 버그 수정 (hnine)
-#define MODIFY_SIEGE_END_DATE_BUG_FIX_20060116
-
-#if GAME_VERSION >= G_V_S2_2
-// [버그수정] 같은 맵으로 맵 이동시에 유저가 안 보이는 버그 수정 (hnine)
-#define MODIFY_MOVEMAP_RESET_VIEWPORT_BUGFIX_20060511
-#endif
-
-// [버그수정] 축복의 물약, 영혼의 물약을 겹칠수 있는 최대 수 조정 160 ->250 (RKFKA)
-#define MODIFY_SIEGE_POTION_OVERLAP_COUNT_20060511
-
-// [버그수정] 해외 컴파일시 오류 부분 수정 (HAPPY_CAT으로 인한 버그 수정) (hnine)
-// 해외 컴파일 시에만 켜 져야 함
-#ifndef FOR_KOREA
-#define MODIFY_SEASON_01_20060317
-#endif
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 로그 시스템 확장 (hnine)
-#define EXTEND_LOG_SYSTEM_02_20060516
-#endif
-
-// [누적버그수정] 카오스 캐슬에서 쉴드 데미지 이상 버그 (hnine)
-#define MODIFY_SHIELDDAMAGE_BUGFIX_IN_CHAOSCASTLE_20060516
-
-// [누적버그수정] 로렌시아 강제 이동 버그 (hjlim)
-#define MODIFY_FORCEMOVE_TO_LORENCIA_20060515
-
-#if GAME_VERSION >= G_V_S2_2
-// [누적버그수정] 마검사 볼케이노 세트 착용시 세트 방어력 추가 (hjlim)
-#define MODIFY_MAGUMSA_VOLCANOSET_DEFENSE_20060515
-
-// [누적버그수정] 군주의망토 업그레이드시 내구력 계산 버그 (hjlim)
-#define MODIFY_UPGRADE_DARKLORDMANTLE_20060515
-#endif
-
-// [누적버그수정] 공성맵 입장 유저 리젠 좌표 재설정 수정 (RKFKA)
-#define MODIFY_LOGINUSER_SET_REGEN_COORD_AT_CASTLE_MAP_20060511
-
-// [누적버그수정] 수성 길드인 경우 길드 해체 불가 (RKFKA)
-#define MODIFY_CASTLE_OWNER_GUILD_DESTROY_LIMIT_20060418
-
-// [누적버그수정] 공성전 NPC 초기화 버그 수정 (RKFKA)
-#define MODIFY_CASTLE_NPC_INITIALIZE_BUG_20060406
-
-// [버그수정] 공성시에 유저를 텔레포트 시킬 수 있는 버그 수정 (hnine)
-#define MODIFY_TELEPORT_SKILL_USING_PARTY_MEMBER_20060504
-
-// [버그수정 베트남] - 메세지 전송시 문자열 길이 계산 버그 수정 (RKFKA)
-#define MODIFY_VIETNAM_MEMCPY_BUG_20060502
-
-// [업데이트] 쉴드 게이지 공식 변경 (hjlim)
-#define UPDATE_SHIELD_CALCULATE_GAGE_20060428
-
-#ifdef ADD_SHIELD_POINT_01_20060403
-// [기능추가] 쉴드 시스템 콤보 적용 옵션 & 물약 조합 확률 (hjlim)
-#define UPDATE_SHIELD_OPTION_20060427
-#endif
-
-#ifdef FOR_ONAIR
-// [기능추가] 방송용 서버 설정 매크로 추가 (hnine)
-#define ADD_MACRO_FOR_SETITEM_20060424
-#endif
-
-// [버그수정] 아이디 암호 임력 창에서 Connect 후 무한 대기 가능한 문제 해결 (apple)
-#define MODIFY_CONNECTTIME_CHECK_20060424
-
-#if GAME_VERSION >= G_V_S2_2
-// [기능추가] 인피니티 애로우 스킬 사용시 추가 MP 소모량 조정 매크로 (RKFKA)
-#define ADD_MACRO_INIFINITY_ARROW_CONTROL_20060410
-// [업데이트] CSkillAdditionInfo 추가 (RKFKA)
-#define ADD_SKILL_ADDITION_INFO_CLASS_20060407
-// [업데이트] 뮤즈엘프 스킬 '인피니티 애로우' 추가 (RKFKA)
-#define ADD_SKILL_MUSE_ELF_INFINITYARROW_20060406
-
-// [업데이트] 칼리마 NPC 레이라 추가 (RKFKA)
-#define ADD_SHOP_KALIMA_NPC_REIRA_20060403
-#endif
-
-// [업데이트] 카오유저 이벤트( 카오스캐슬, 데빌스퀘어, 블러드캐슬) 입장 금지 (RKFKA)
-#define ADD_PK_USER_ENTER_LIMIT_EVENT_MAP_20060411
-
-#if GAME_VERSION >= G_V_S2_2
-// [공방보완] 공방전 성공시 아이템 보상 (RKFKA)
-#define ADD_CRYWOLF_SUCCESS_REWARD_20060404
-// [공방보완] 제단에 계약하는 요정 캐릭터의 제한 레벨 350 -> 260 변경 (RKFKA)
-#define MODIFY_CRYWOLF_ELF_ALTAR_LIMIT_LEVEL_CHANGE_20060404
-// [공방보완] 크라이울프 몬스터 다크엘프, 발가스 아이템 드랍 (RKFKA)
-#define ADD_CRYWOLF_MONSTER_ITEMDROP_20060404
-
-// 쉴드 시스템 디버그 메시지 출력 (삭제) : 사내 개발서버에서만 활성화.
-//#define SHIELD_POINT_DEBUGLOG
-
-// [업데이트] 쉴드 시스템(포인트) 추가 (hnine)
-#define ADD_SHIELD_POINT_01_20060403
-#endif
-
-// [버그수정] 스킬 공격 범위 체크 추가 보완 (hjlim)
-#define MODIFY_SKILL_CHECK_DISTANCE_UPDATE_02_20060421
-
-// [버그수정] 스킬 공격 범위 체크 수정 및 보완 (hjlim)
-#define MODIFY_SKILL_CHECK_DISTANCE_UPDATE_20060417
-
-// [버그수정] 스킬 공격 범위 체크 (hjlim)
-#define MODIFY_SKILL_CHECK_DISTANCE_20060413
-
-// [기능추가] 게임서버 정보 추가 (apple)
-// 테스트/서비스 서버구분, 각종 서버들과의 연결 상태 정보 보여주기
-#define ADD_SERVER_INFO_DISPLAY_EXTEND_01_20060313
-
-// 맵 조인 프로토콜을 받았는지 체크 한다. (Server Dev.)
-#define BLOCK_INVALID_CHARACTER_DELETE_01_20060327
-
-// [버그수정] 러브팡팡(러브러브) 이벤트와 인증서버와의 연결관계 제거 (apple)
-#define REMOVE_LOVELOVE_EVENT_COUPLING_WITH_JOINSERVER_20060319
-
-// [기능수정] 크라이울프 몬스터 체력하락 자동화 & 쿤둔 자생 제거 옵션화 (apple)
-#define MODIFY_CRYWOLF_BENEFIT_01_20060315
-
-// [버그감시] 카오스캐슬, 블러드캐슬 버그 추적 로그 ( RKFKA )
-#define ADD_LOG_CHECK_CAHOSCASTLE_BLOODCASTLE_EVENT_20060314
-
-// [기능추가] FSGate 연결 안 됐을때 Option Reload 방지 (apple)
-// #define ADD_SERVER_FUNC_OPTION_RELOAD_CHECK_01_20060313
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 화이트데이 사탕상자 이벤트 ( RKFKA )
-#define WHITEDAY_CANDY_BOX_EVENT_20060222
-
-// [로그추가] 쿤둔 아이템 드랍 로그 추가( RKFKA )
-// ADD_KUNDUN_ITEM_DROP_LOG_20060309
-#endif
-
-// [업데이트] 로컬라이징 데이터(.wtf) 추가
-// 0.99.60 - 0.99.94
-#define MODIFY_LOCALIZING_WTF_20060309
-
-// [버그수정] 칼리마 이동 버그 수정 (hnine)
-#define MODIFY_KALIMAMOVE_BUGFIX_20060221
-
-// [버그수정] 마법사의 반지 내구력 버그 수정 (hnine)
-#define MODIFY_MAGICIANRING_DURATION_BUGFIX_20060221
-
-#ifdef ADD_KUNDUN_CONTROL_20040923
-// 쿤둔 이벤트 관련 로그 저장 파일명 변경(임시) (hnine)
-#define MODIFY_KUNDUN_EVENT_LOG_FILENAME_20060220
-#endif
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 로그 시스템 확장 20060202 (hnine)
-#define EXTEND_LOG_SYSTEM_20060202
-
-// [버그수정] 쿤둔 아이템이 칼리마가 아닌 맵에서 드랍되는 버그 수정 (RKFKA)
-#define MODIFY_KUNDUN_ITEM_DROP_MAP_20060216
-#endif
-
-// [업데이트] 경험치 계산 방식 및 파티/셋트 경험치 수정 (hnine)
-#define MODIFY_GETTING_EXP_RATE_20060214
-// 경험치 공식 변경 관련 기존 MODIFY_GETTING_EXP_RATE_20060213 삭제 (hnine)
-// MODIFY_GETTING_EXP_RATE_20060213 (RKFKA)
-// [업데이트] 경험치 획득 증가 (apple)
-//#define MODIFY_GETTING_EXP_RATE_20051116
-
-// [로그수정] 1) 쿤둔 관련 로그 수정 KALIMA(6) -> KALIMA(7)
-// 2) 6칼리마에 있는 모든 유저정보 로그 부분 주석처리 (RKFKA)
-// MODIFY_KUNDUN_LOG_20060201
-
-// [버그감시] 유효하지 않은 영역으로 인해 로랜시아 이동 추적 로그 (apple)
-#define ADD_LOG_CHECK_INVLIDE_X_Y_POSITION_20060131
-
-// [버그감시] 경험치 획득 맵, 좌표 정보 추가 (apple)
-#define ADD_LOG_GETTING_EXP_MAP_X_Y_INFO_20060131
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 발렌타인데이 상자 이벤트 (RKFKA)
-#define VALENTINES_DAY_BOX_EVENT_20060124
-
-// [버그수정] 펜릴 젠으로 수리 되는 버그 수정 (apple)
-#define MODIFY_FENRIR_ZEN_REPAIR_20060124
-#endif
-
-#ifdef PERSONAL_SHOP_20040113
-// [버그수정] 맵서버 이동 시 개인상점 아이템 복사 발생 (apple)
-#define MODIFY_ITEM_DUPLICATION_IN_MAPSERVER_MOVING_20051219
-#endif
-
-// [버그수정] 공성 진행에 다른 연합은 SOMMON 되지 않는다. (apple)
-#define MODIFY_DARKLORD_RECALL_IN_CASTLESIEGE_TIME_20051219
-
-// [버그수정] 수호석상이 파괴 되지 않았으면, 직인 등록을 할 수 없다. (apple)
-#define MODIFY_CASTLE_CROWN_ACCESS_BY_CHECKING_STATUE_20051219
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 크리스마스 리본상자 이벤트 (RKFKA)
-#define CHRISTMAS_RIBBONBOX_EVENT_20051212
-#endif
-
-// [업데이트] 저레벨 육성 관련 수정 (hnine)
-#define UPDATE_LOWLEVEL_SUPPORT_1_20051215
-
-// [버그수정] 게임 중이 아니면 NPC와 이야기 할수 없다. (apple)
-#define MODIFY_NPCTALK_REQUIREMENT_20051212
-
-#if GAME_VERSION >= G_V_S2_2
-// [업데이트] 신규 몬스터 AI 추가 (apple)
-#define ADD_NEW_MONSTER_SYSTEM_02_20050725 // Monster AI
-
-// ☆★ 크라이울프 (apple)
-#ifdef GAMESERVER_TO_CRYWOLFSERVER
-#define CRYWOLF_PRECEDENCE_PATCH_20050413
-#define CRYWOLF_COMMON_PATCH_20050413
-#define CRYWOLF_ONLY_PATCH_20050413
-#else
-#define CRYWOLF_PRECEDENCE_PATCH_20050413
-#define CRYWOLF_COMMON_PATCH_20050413
-#endif
-
-// [업데이트] 신규 탈것 펜릴(Fenrir) 추가 (apple)
-#define ADD_ITEM_FENRIR_01_20051110
-#endif
-
-// [안티해킹] 시리얼 0 보석 생성 및 거래에 대한 처리 (apple)
-#define ANTIHACKING_SERIAL_0_ITEM_20051202
-
-// [버그수정] 몬스터 범위상에 랜덤 생성일 경우 Rand() -> GetLargeRand()로 변경 (apple)
-#define MODIFY_MONSTER_RANDOM_POS_CREATION_20051202
-
-// [버그수정] 맵상에서 캐릭삭제 가능으로 인한 복사 버그 수정 (apple)
-#define MODIFY_CHARACTER_DELETE_IN_MAP_20051121
-
-// [버그수정] (중국) 핵툴사용 117문자 채팅메세지 전송 시 팅 버그 방지 (apple)
-#define PREVENT_117_CHATTING_MSG_BUG_20051114
-
-// [로그추가] 공성전 시작, 종료 날짜 DB 업데이트 대한 로그 추가 (apple)
-#define ADD_CASTLESIEGE_DATE_UPDATING_LOG_20051103
-
-// [버그수정] 다크로드 소환 5초 카운트 시 유니리아 착용 가능 버그 수정 (apple)
-#define MODIFY_DARKLORD_RECALL_BUGFIX_20051103
-
-// [버그수정] 공성서버에서 변신반지 착용시 공&수성 정보를 보낸다 (apple)
-#define MODIFY_CASTLESIEGE_VIEWPORT_BY_CANGE_RING_20051103
-
-// [버그수정] 공성서버에서 변신반지를 제거했을 때 자신의 뷰포트와 창/방패 정보를 보낸다.. (apple)
-#define MODIFY_VIEWPORT_REMOVE_CHANGE_RING_20051013
-
-// [파일수정] 로랜 협곡 이벤트 메세지를 wtf 파일로 수정 (apple)
-#define MODIFY_CASTLEDEEP_EVENT_MESSAGE_20051013
-
-// [공성보완] 직인 등록 시 왕관 스위치 등록자 정보를 검색하고 가능 여부 판단 (apple)
-#define MODIFY_CASTLE_CROWN_ACCESS_ALLOWED_BY_CROWNSWITCH_20051102
-
-// [공성보완] 공성시작 후 수호석상이 없을 경우 생성시키는 루틴 제거 (apple)
-#define REMOVE_CASTLESIEGE_AUTO_REVIVE_GUARDIANSTATUE_20051101
-
-// [공성보완] 다크호스를 착용하고 직인 등록 중인 길드 마스터는 밀려나지 않는다. (apple)
-#define MODIFY_CASTLESIEGE_GUILDMASTER_BACKSPRING_20051018
-
-// [공성보완] 왕관 스위치 등록자 정보를 알린다. (apple)
-#define MODIFY_CASTLESIEGE_NOTIFY_CROWNSWITCH_USER_20051017
-
-// [공성보완] 공성 물약 조합 결과 개수 5->10으로 변경, 지속 시간 확장 (apple)
-#define MODIFY_CASTLE_POTION_20051017
-
-// [공성보완] 직인 등록 시간 누적 시스템 (apple)
-#define MODIFY_CASTLESIEGE_CALC_CROWN_ACCESSTIME_20051014
-
-// [공성보완] 공성 길드간 구별을 위한 식별 시스템 (apple)
-#define MODIFY_CASTLESIEGE_IDENTIFICATION_20051012
-
-
-
-
-//----------------------------------------------------------------------------------------------------------
-//
-// ◆ OLD Style..
-//
-//----------------------------------------------------------------------------------------------------------
-
-
-// T_CurCharName 에 캐릭터 정보를 쌓지 않는다 (apple)
-#define REMOVE_CONNECTED_CHARACTER_NAME_INFO_20051004
-
-// 뮤매니저 전체공지 발생 시 로그 기록 (apple)
-#define ADD_LOG_GM_TOOL_NOTICE_20051004
-
-// 몬스터 응답이상 버그 : 아이스에로우와 같이 움직임을 멈추는 스킬 주의! (apple)
-#define MODIFY_MONSTER_ACT_BY_ICEARROW_20050914
-
-#if GAME_VERSION >= G_V_S2_2
-// 숨겨진 보물상자 이벤트 (b4nfter)
-#define HIDDEN_TREASUREBOX_EVENT_20050804
-
-// 한국 공인 IP주소 변경 (b4nfter)
-#define MODIFY_WEBZEN_PUBLIC_IPADDRESS_20050822
-
-// 에로우바이퍼 등 활, 석궁 수치 적용 수정 (apple)
-#define MODIFY_APPLYING_BOW_01_20050825
-
-// 신규 아이템 추가 (apple)
-#define ADD_NEW_ITEM_01_20050823
-
-// 마이너스 스탯 열매 추가 (apple)
-#define ADD_MINUS_STAT_SYSTEM_USING_FRUIT_20050712
-#endif
-
-#if GAME_VERSION >= G_V_99B
-// item.txt 파일 확장 (apple)
-// < 필요요구치 확장 >
-// 힘,민첩,에너지 -> 레벨,힘,민첩,에너지,체력,통솔
-#define EXPAND_ITEMSCRIPT_01_20050808
-#endif
-
-// 애로우바이퍼 화살 +2 작용시 데미지 적용 (apple)
-#define MODIFY_ARROWVIPER_2PERCENT_DAMAGE_20050816
-
-#if GAME_VERSION >= G_V_99B
-// ExDB 친구 기능 ON/OFF 추가 (apple)
-#define ADD_FRIEND_FUNCTION_ON_OFF_20050811
-
-// 파란 복주머니 사용 후 '이동 칼리마' 명령 사용 적용 수정
-#define MODIFY_KALIMAMOVE_COMMAND_FOR_BLUEPOUCH_20050811
-
-// 아이템인덱스 확장으로 인한 드랍리스트 관리 (apple)
-// 랜덤 범위를 한정 짓는다.
-// 랜덤으로 세트아이템 만들기 수정
-#define ADD_RANDOM_RANGE_OF_ITEMINDEX_20050808
-
-#if GAME_VERSION >= G_V_S1_512
-// 히든 칼리마 추가 (b4nfter)
-#define HIDDEN_KALIMA_20050706
-#endif
-
-// 파티원 맺을 때 로그 오류 수정 (b4nfter)
-#define PARTY_ADD_LOGFIX_20050801
-
-// 쿤둔은 경험치를 주지 않는다 (apple)
-#define DISABLE_GETTING_EXP_FROM_KUNDUN_20070801
-#endif
-
-// 게임서버 파라메터 추가 (DataServerIp2, DataServerPort2, ExDbIp, ExDbPort) (b4nfter)
-#define ADD_GAMESERVER_PARAMETER_20050728
-
-#if GAME_VERSION >= G_V_S1_512
-// 아이템 인덱스 확장 (b4nfter)
-#define ITEM_INDEX_EXTEND_20050706
-
-// DB크기 확장 (b4nfter)
-#define ITEM_DBSIZE_EXTEND_20050706
-
-// 아이다 맵 추가 (apple)
-#define ADD_NEW_MAP_AIDA_20050617
-
-// 새로운 몬스터 시스템 추가 (apple)
-#define ADD_NEW_MONSTER_SYSTEM_01_20050714 // Monster SKILL
-
-// EXDB에서 적대가 있는 상태에서는 다른 적대를 맺지 못하도록 함! (apple)
-#define MODIFY_EXDB_RIVAL_CHECK
-#endif
-
-// 공성 운영자 명령 wtf 로 수정(apple)
-#define MODIFY_CASTLESIEGE_GM_MESSAGE_20050722
-
-// 배틀사커를 이용해 PK 안되게 하는 버그 수정 (apple)
-#define MODIFY_BATTLESOCCER_PKCHECK_20050714
-
-// 다크로드 최대 생성가능 스탯 버그 수정(apple)
-#define MODIFY_DARKLORD_CREATION_MAXSTAT_USING_FRUIT_20050712
-
-// 축복, 영혼의 물약 조합 핵톨 사용 가능 취약점 수정. (apple)
-#define MODIFY_BLESS_SOUL_POTION_CREATION_BUG_20050711
-
-#if GAME_VERSION >= G_V_S1_512
-// 대천사의 절대 셉터 추가. item.txt 수정 필요(apple)
-#define ADD_WEAPON_OF_ARCHANGEL_SCEPTER_20050706
-
-// 길드 채팅 / 연합 채팅을 서버그룹단위로 가능하게 한다. (apple)
-// GS <-> ExDB <-> GS 간에 데이터 교환
-#define ADD_SERVERGROUP_CHATTING_FOR_GUILD_UNION_01_20050706
-
-// 길드전,배틀사커가 자신의 길드에 되는 버그 수정. (서버가 죽음 ㅠ_ㅠ) (apple)
-#define MODIFY_GUILDWAR_REQUEST_PROCESS_20050704
-
-// WhatsUp과 Console 화면 상에서 서버의 이상을 체크한다. (apple)
-// #define ADD_SERVER_ALERT_USING_WHATSUP_01_20050628
-
-// 캐릭터 직책 스킬 보강. skill.txt 수정 필요(apple)
-#define ADD_NEW_SKILL_FOR_CASTLE_02_20050531
-
-// 블러드 캐슬, 카오스 캐슬, 광장에서는 SHADOW PAHTOM의 기능을 없앤다(apple)
-#define MODIFY_NPC_SHADOW_PAHTOM_20050628
-
-// 몬스터의 아이템 드롭 최대 레벨 조정 (u4us)
-#define MODIFY_DROP_MAX_ITEM_LEVEL_6_OF_MONSTER_20050624
-// 반지 및 목걸이 레벨 5 이상 몬스터 드롭 방지 (u4us)
-#define MODIFY_DROP_PREVENT_OF_RING_N_NECKLACE_LV_5_OVER_20050623
-// 캐릭터 공격력 & 방어력 향상 제공 NPC Shadow Phantom 추가 (u4us)
-#define ADD_NPC_SHADOW_PHANTOM_20050616
-// 캐릭터 자동 회복 시스템 (u4us)
-#define CHARACTER_AUTO_RECUPERATION_SYSTEM_20050614
-// 사과 아이템 레벨 0 - 1 사용시 즉시 회복 (u4us)
-#define IMMEDIATELY_HP_MP_AG_RECUPERATION_20050614
-#endif
-
-// [소스수정] Shop15번 파일 추가 삭제 -> ADD_SHOP_15_20050613 삭제(RKFKA)
-// 공성전 맵에 상점추가 -> WzVersionManager, WzAuthGs, WzFsGate 같이 수정 (b4nfter)
-// #define ADD_SHOP_15_20050613
-
-// 최고 레벨이 되면 더이상 경험치를 얻지 못한다.
-#define MAX_LEVEL_BLOCK_GAIN_EXPERIENCE_20050613
-
-// 에로힘과 쿤둔의 아이템 드랍이 몹이 존재하는 맵이 되도록 변경 (apple)
-#define MODIFY_ITEM_DROP_MAP_OF_EROHIM_KUNDUN_20050610
-
-// 이벤트 운영자(GM) 권한 추가 (u4us)
-#define ADD_AUTHORITY_CODE_OF_EVENT_GM_20050602
-
-#if GAME_VERSION >= G_V_S1_512
-// 데빌스퀘어 확장 -> 기존 4개에서 6개 (b4nfter)
-#define DEVILSQUARE_EXTEND_20050221
-#endif
-
-// [누적버그수정 1차] 다크로드 PET 보상 경험치 적용 수정. (apple)
-#define MODIFY_ACCUMULATED_BUG_DARKLORD_PET_EXP_01_20050603
-// [누적버그수정 1차] 성주의 표식 판매가격 버그 수정. (apple)
-#define MODIFY_ACCUMULATED_BUG_MARKOFLORD_SELL_VALUE_01_20050531
-// [누적버그수정 1차] 캐논타워에 죽을 경우 경험치 하락 버그 수정. (apple)
-#define MODIFY_ACCUMULATED_BUG_DEAD_BY_CANNONTOWER_01_20050531
-// [누적버그수정 1차] 스웰라이프 파티 시 정상 적용 되도록 수정. (apple)
-#define MODIFY_ACCUMULATED_BUG_SWELLLIFE_ON_PARTY_01_20050531
-// [누적버그수정 1차] 기술목걸이, 마법의반지 자생 적용 제거. (apple)
-#define MODIFY_ACCUMULATED_BUG_AMULETRING_WRONG_OPTION_01_20050531
-// [누적버그수정 1차] 군주의 망또 +10~13 방어력 적용 수정. (apple)
-#define MODIFY_ACCUMULATED_BUG_SLEEVEOFLORD_01_20050531
-
-
-// 에로힘 아이템 루팅은 MAXHIT 유저로 한다. (apple)
-// 에로힘 아이템 루팅은 LastHit 유저로 한다. (apple)
-#define MODIFY_ITEM_LOOTING_FROM_EROHIM_20050610
-#define MODIFY_ITEM_LOOTING_FROM_EROHIM_20050530
-
-// 변신 캐릭터으로 부활시 자신의 뷰포트 정보 갱신 (u4us)
-#define BUGFIX_UPDATE_VIEWPORT_INFO_FOR_SELF_20050510
-
-#if GAME_VERSION >= G_V_S1_512
-// 맵서버 관련 추가정보
-#define MAP_SERVER_ADDINFO_20050509
-#endif
-
-// 공성 사냥터의 보스몹인 에로힘은 경험치를 주지 않는다. (apple)
-// 경험치 버그로 인해 수정 함.
-#define DISABLE_GETTING_EXP_FROM_EROHIM_20050509
-
-// NPC 대화창 금지 (클라이언트 요청) (b4nfter)
-#define DISABLE_NPC_MESSAGE_20050506
-
-#ifdef DARKLORD_WORK
-// 다크로드의 팻을 위한 아이템 판매가격 버그 수정 (u4us)
-#define BUGFIX_SELL_PRICE_OF_DARKLOAD_PETS_20050310
-#endif
-
-// [공성보완] 성주 길드는 다른 길드에 연합 가입 할수 없다. (apple)
-#define MODIFY_UNION_JOIN_CASTLE_OWNER_GUILD_20050502
-
-// 카오스 조합 열매 & 날개 추가 (u4us)
-#define ADD_FRUIT_N_WING_OF_CHAOS_MIX_20050502
-
-#if GAME_VERSION >= G_V_S1_512
-// 보석 조합 시스템 (b4nfter)
-#define JEWEL_MIX_SYSTEM_20050309
-
-// [공성보완] 연합 길드마스터 길드 연합 방출 기능 추가 (apple)
-#define ADD_ABILITY_OF_UNIONMASTER_TO_KICK_OUT_UNIONMEMBER_01_20050418
-
-// [공성보완] 연합 길드 수 조정 (7->3) (apple)
-#define MODIFY_MAX_UNION_MEMBER_01_20050418
-#endif
-
-// 개인상점 젠복사 버그 패치
-#define BUGFIX_PERSONALSHOP_ZENCOPY_20050426
-
-// 운영 캐릭 명령어처리 로그 추가 수정. (apple)
-// 명령 대상에 대한 정보 추가.
-#define ADD_LOG_GM_COMMAND_20050426
-
-// 레나 및 이벤트칩 복사 시도 방지 및 로그 기록 (u4us)
-#define BUGFIX_EVENT_CHIP_DUPLICATE_PREVENT_20050422
-
-// MaxUser 수 Commonserver.cfg에서 조절 기능 추가. (apple)
-// Commonserver.cfg 추가 내용 :
-// 1) NumberOfMaxUser = 500
-// 2) NumberOfCastleSiegeMaxUser = 1500
-#define ADD_CONTROL_MAXUSER_20050420
-
-// X 주민등록번호 체크부 수정 (u4us)
-#define BUGFIX_X_RESIDENT_REGISTRATION_OF_USER_20050419
-
-// 데스 블레이드 크리티컬 데미지 처리 추가 (u4us)
-#define ADD_CRITICAL_DAMAGE_OF_DEATH_BLADE_20050419
-
-// Send Buffer 확장. (apple)
-#define EXPAND_MAX_SENDBUFFER_20050413
-
-// #LOGADD_CASTLESIEGE_20050404 (b4nfter)
-
-// 길드이름 리셋 (b4nfter)
-#define GUILDNAME_MEMSET_20050410
-
-// 아이템을 주을 때 생기는 논리적 오류 수정 (b4nfter)
-#define ITEM_GET_BUGFIX_20050406
-
-// 객체 삭제 시 서있던 위치의 속성을 리셋해줌 (b4nfter)
-#define CLEAR_STANDATTR_OBJDEL_20050325
-
-// PK를 자유롭게 할 수 있도록 변경 (b4nfter) -> ServerInfo.dat 의 PkLimitFree = 1 이 되어야 적용
-#define ADD_PK_LIMIT_FREE_OPTION_20050324
-
-// 개인상점 인벤토리 초기화 시 메모리 침범으로 발생혔던 오류수정 (b4nfter)
-#define PSHOP_INVENTORY_CLEAR_BUGFIX_20050321
-
-// 종료 시 인벤토리가 사라지는 버그 수정 (b4nfter)
-#define INVENTORY_CLEAR_BUGFIX_20050226
-
-// 쿤둔 이벤트 종료에 따른 설정 변경 (apple)
-// 1) 아이템 드랍 5->2개로 변경
-// 2) 쿤둔 HP 메세지 삭제.
-#define CHANGE_KUNDUN_SETTING_01_20050221
-
-// 특정 몹의 죽었다는 상태 Q 처리를 우선시한다. (apple)
-#define ADD_QPROCESSING_STATE_OF_DEAD_20050221
-
-// DB아이템 데이터에서 아이템이 없는 슬롯 체크방법
-// 단순히 배열 첫자리를 0xFF 경우 없는 것으로 할때 9비트 아이템타입 형식에서 0xFF (-> 7/31) 아이템을 만들었을 경우 문제 발생
-#define INVENTORY_EMPTYSLOT_CHECK_20050217
-
-// 블러드 캐슬, 데빌스퀘어 복사 버그 수정
-// 한국에는 비활성화 되어 있던것을 활성화 시킴. (20050216) (apple)
-#define BLOOD_DEVILSQUARE_TRADE_BUG_FIX
-
-// 캐릭터 선택 창에서 캐릭터 삭제시 레벨을 알수 없으므로 해당 코드 삭제(apple)
-#define DEL_CODE_LIMIT_OF_DEL_CHARACTER_LEVEL_20050215
-
-// 친구 리스트 + 쪽지 리스트 요청 순서 변경.
-// 맵서버 연결과 관련. (b4nfter_apple)
-#define MODIFY_ORDER_REQUEST_FRIENDLIST_20050205
-
-#ifdef PERSONAL_SHOP_20040113
-// 레벨 5 이하의 케릭터들의 경우 최초 접속 시 개인상점 영역을 초기화 하고 시작한다.
-#define PERSONAL_SHOP_DELETE_UNDER_LV5_20050203
-#endif
-
-// EXDB DB 객체 동기화를 위한 수정. (apple)
-// EXDB Server에만 적용됨.
-// ExDB Server : 0.40.G에 적용됨.
-#define MODIFY_EXDB_SYNC_01_20050128
-
-#if GAME_VERSION >= G_V_S1_512
-// 캐릭터 리스트 정보에 길드 정보도 추가한다. (apple)
-// Dataserver에도 적용된다. : 0.55.09T 부터 적용
-// 공성용 Dataserver서버에만 적용!!
-#define ADD_CHARACTERLIST_GUILD_STATUS_01_20050126
-#endif
-
-// 카오스 조합시 팝업 메세지 뜨지 않도록 메세지 제거 (apple)
-#define REMOVE_CHAOSMIX_NPC_MESSAGE_20050125
-
-#define ADD_OPTION_RELOAD_ITEM_TO_JOINSERVER
-
-// 공성전에 따라 길드해체, 연합끊기 제한설정. (apple)
-// ExDB Server에 적용됨.
-// ExDB Server : 0.40.F 이상 적용
-#define EXDB_APPLY_CASTLEUPDATE_01_20050111
-
-// 이벤트 매니저 (전체 이벤트를 특정 시간으로 분할하여 순차적으로 실행시키고 싶을 경우 사용) (b4nfter_apple)
-#define EVENT_MANAGEMENT_20040711
-
-#if GAME_VERSION >= G_V_S1_512
-// 캐릭생성시 Class 정보 보내기 (apple)
-#define ADD_CLASSINFO_ON_CHARCTER_CREATION_20041224
-
-// 연합 마크 얻기 (apple) - EXDB 수정 필요
-// #define ADD_UNION_GET_UNIONMARK_01_20041222
-
-// 연합 이름 얻기 (apple)
-#define ADD_UNION_GET_UNIONNAME_01_20041222
-#endif
-
-// 인증서버 종료 시 프로세스 종료가 아닌 1분 종료가 되도록 수정
-// #define MODIFY_AUTHSERVER_CLOSE_20041207
-
-// 액설런트 아이템 내구력 수정 (apple)
-#define MODIFY_EXCELLENT_ITEM_DUR_01_20041202
-
-// 몬스터 아이템 드롭 로그에 몬스터 이름을 추가한다. (b4nfter)
-#define MONSTER_ITEMDROP_LOG_ADD_NAME_20041202
-
-#if GAME_VERSION >= G_V_S1_512
-// 거래 시 관계 정보 초기화 보완. (apple)
-#define MODIFY_NEW_UNION_02_20041201
-
-// 연합 채팅 기능 (apple)
-#define ADD_UNION_CHATTING_01_20041201
-#endif
-
-#if GAME_VERSION >= G_V_99B
-// 매니저에서 메일보내기 (foguy)
-#define ADD_MANAGER_SENDMAIL
-
-// 길드원이 다른 길드원 방출 할수 있는 것 수정 (apple)
-#define ADD_NAMECHECK_DISMISS_GUILDMEMBER_20041129
-
-// 마석은 카오스캐슬, 블러드캐슬, 악마의광장에서 열 수 없다. (apple)
-#define ADD_MAPCHECK_OPEN_KALIMAGATE_20041129
-#endif
-
-// 카오스캐슬 입장시간 표시 오류 수정 (apple)
-#define MODIFY_OPENTIME_CHAOS_CASTLE_20041129
-
-// 로크의 깃털 가격 수정 (apple)
-#define MODIFY_PRICE_FEATHE_OF_LOCH_20041129
-
-#if GAME_VERSION >= G_V_S1_512
-// 맵서버 분할 작업 (b4nfter)
-#define MAP_SERVER_WORK_20041030
-#endif
-
-// 체크섬 파일의 정보를 캡션바에 보여서 보여준다.(apple)
-#define ADD_DISPLAY_CHECKSUM_INFO_20041127
-
-// GM 명령 User State 다크로드 추가 (apple)
-// 20041127 message_kor.wtf 적용되어야 합니다~!
-// #define MODIFY_GMCOMMAND_USERSTAT_20041127
-
-// 대만 게임패스워드(창고비밀번호) 적용 (apple)
-#define MODIFY_GAMEPASSWORD_20041126
-
-// 직책 임명 오류 수정. (apple)
-#define MODIFY_ASSIGN_GUILD_STATUS_20041123
-
-// 데이터 파일 국가별 선택 방식 변경. (apple)
-// DataServer, ExDB Server에 적용됨.
-// !!주의 - Commonserver.cfg에 CountryCode 가 추가 되야함.
-// !!주의 - 해외 통합버전에 적용됨.
-// !!주의 - DataServer : 0.55.07 ExDB Server : 0.40.B
-#define MODIFY_LOAD_DATAFILE_FOR_DBSERVER_20041117
-
-// 다크호스, 스피릿 조합 수정 (apple)
-#define MODIFY_DARKLORD_PETITEM_CHAOS_MIX_20041117
-
-#ifdef DARKLORD_WORK
-// 다크로드 열매 버그 수정 (apple)
-#define MODIFY_DARKLORD_ACQUIRING_EXTRA_POINT_20041117
-#endif
-
-#ifdef CASTLE_SIEGE_COMMON_PATCH_20041018
-// 공성 준비 레나 이벤트(왕의직인 대신 일시적 이벤트) (apple)
-#define ADD_RENAEVENT_FOR_CASTLE_SIEGE_20041116
-#endif
-
-#ifdef DARKLORD_WORK
-// 마법 배우고 사용할 때 배울 수 있는 레벨인지 체크.. (apple)
-#define ADD_CHECKING_LEVEL_TO_LEARN_MAGIC_20041115
-#endif
-
-#if GAME_VERSION >= G_V_S1
-// 공성전 작업 (b4nfter)
-#ifdef GAMESERVER_TO_CASTLESIEGESERVER
-// 공성서버 모드
-#define CASTLE_SIEGE_COMMON_PATCH_20041018 // 공성전 서버와 일반 서버간에 공통되는 패치부분
-#define CASTLE_SIEGE_ONLY_PATCH_20041018 // 공성전 서버만 필요한 패치부분
-#else
-// 일반서버 모드
-#define CASTLE_SIEGE_COMMON_PATCH_20041018 // 공성전 서버와 일반 서버간에 공통되는 패치부분
-#endif
-#endif
-
-#if GAME_VERSION >= G_V_S1
-// New Guild System (apple)
-// 해당 수정사항을 적용하기 위해서는 ExDB를 40.C 이상 버전으로 변경 해야 함.
-// [C <-> GS] 0xE0 ~ 부터 사용.
-// [EDS <-> GS] 0xE0 ~ 부터 사용
-#define MODIFY_NEW_UNION_01_20041122 // 거래 시 길드 정보 초기화 보완.
-
-#define ADD_NEW_UNION_02_20041118 // 연합 조건
-#define ADD_NEW_UNION_01_20041006 // 연합
-#define ADD_NEW_GUILD_02_20040922 // 용병
-#define ADD_NEW_GUILD_01_20040913 // 직책
-#endif
-
-// 월드 토너먼트 이벤트
-// #define WORLD_TOURNAMENT_EVENT_SETTING
-
-// 망토 엑셀옵션 버그 수정(무조건 공증옵션이 들어가야 되는데 생증도 들어가는 버그)
-#define SLEEVEOFLORD_OPTION_BUG_PATCH
-
-// 중국 카오스 조합을 이용한 복사 버그 수정
-#define CHAOS_BOX_ITEMCOPY_FIX_20041112_FOR_CHS
-
-// 흑마법사 텔레포트 시 뷰포트에 맵이동한 케릭이 남아있는 현상 수정 (b4nfter)
-#define BUGFIX_WIZARD_TELEPORT_MAGIC_20041018
-
-// 공지 보낼때 버퍼복사방식 수정 (b4nfter)
-// #define MODIFY_SERVER_NOTICE_BUFFERCOPY_20041018
-
-// WzJoinServerCli.cpp 에서 Send() 시 버퍼가 무한히 쌓이는 문제 수정 (그동안 DB소켓 등의 데이터 전송 문제의 원인으로 추정됨) (b4nfter)
-// #define BUGFIX_WSJOINCLIENT_SENDLENGTH_20041011
-
-// GS -> DS 서버로 지속적인 LIVE신호 보냄
-// #define GS_DS_LIVECHECK_20041008
-
-#if GAME_VERSION >= G_V_99B
-// (1) 게임서버 업그레이드 (apple)
-// : 몬스터 OBJ 경량화
-#define UPGRADE_GAMESERVER_01_20041006
-
-// 마석 사리지는 버그 수정 (b4nfter)
-#define BUGFIX_KALIMAGATE_VANISHING_20041006 // 칼리마 게이트 사라지는 현상 수정
-
-// #BUGFIX_DARKSPRITE_DINORANT_DAMAGE_20041005 // 다크스피릿 공격 시 디노란트 착용하면 추가 데미지가 들어가는 버그
-
-// 쿤둔 피 조절 및 모니터링을 위한 명령어추가 등(apple)
-#define ADD_KUNDUN_CONTROL_20040923
-
-// 몬스터 HP 회복 (쿤둔 이벤트를 위해 추가) (apple)
-// HP가 20%이하일때 부하 몬스터 x 마리 소환!
-#define ADD_ABILLITY_KUNDUN_01_20040920
-#endif
-
-#ifdef _NEW_EXDB_
-// 길드 파괴 시 길드전 해제 않되던 점 수정 (b4nfter)
-#define BUGFIX_GUILD_DESTROY_WAR_BLOCK_20040922
-#endif
-
-// 콤보 데미지도 PVP시 50% 데미지 감소 되도록 수정
-#define MODIFY_CC_PVP_COMBO_DAMAGE_LOWER_50_20040917
-
-// 마검사 아스릴세트 방어력. 방어률 적용 (apple)
-#define MODIFY_10_11_12_13_SET_DEFENSE_20040916
-
-#ifdef ADD_KUNDUN_CONTROL_20040923
-// 쿤둔을 잡은 보상 수정 및 로그 추가 (apple)
-#define MODIFY_KUNDUN_REWARD_01_20040915
-#endif
-
-// 특정 몬스터를 죽였을 때 보상으로 여러개의 아이템을 드랍한다. (apple)
-#define ADD_MONSTER_DIE_REWARD_ITEMS_20040915
-
-// 몬스터 전체 공격 수정 (apple)
-// 유저도 사용하는 CGBeattackRecv 사용으로 4개이상의 타겟에게 데미지 주지 못하는것 수정.
-#define MODIFY_MONSTER_ENTIRE_ATTACK_20040915
-
-// 특정 유저 이름이 영문 3글자인 경우 처리를 위해 길드가입, 길드생성 수정. (apple)
-// ExDB BUG FIX로 추가. ExDB 40.B 이상 버전으로 변경 해야 함.
-#define MODIFY_GUILDMEMBER_NAME_LIMIT_200040914
-
-// DSProtocol 과 EDSProtocol 에 혼재해 있던 코드 정리 (apple)
-// DSProtocol 주석처리. -> 삭제 요망.
-#define BLOCK_PREVIOUS_DSPROTOCOL_FOR_GUILD_20040913
-
-#if GAME_VERSION >= G_V_99B
-// 길드 Number 0x36(DB프로토콜) 부분 수정 : WORD -> INT (apple)
-// ExDB DeadLock 해결
-// 해당 수정사항을 적용하기 위해서는 ExDB를 40.A으로 변경 해야 함.
-#define MODIFY_GUILD_VIEWPORT_03_20040913
-#endif
-
-// 다크스피릿 "타겟지정" 공격 직접 타격 공격으로 변경 (apple)
-#define MODIFY_DARKSPIRIT_TAGET_ATTACK_01_20040906
-
-// 쿤둔의 표식 드랍 -> 각 표식 등급별로 처리하도록 변경 (apple)
-#define MODIFY_KALIMA_KUNDUNMARK_DROP_01_20040906
-
-// 다크로드 파티원 SOMMON 스킬 이동 구역 수정 (apple)
-// DARKLORD_WORK <-- ON 되어 있어야 함.
-#define MODIFY_DARKLORD_SKILL_RECALL_PARTY_20040831
-
-#if GAME_VERSION >= G_V_99B
-// 새로 길드 뷰포트 시스템 수정 (apple)
-// 기존 GuildNumber를 WORD로 인식했던 부분.(OLD 뷰포트 버전 역시 문제 있음)
-#define MODIFY_GUILD_VIEWPORT_02_20040830
-#endif
-
-// 아이템 복사방지 관련 수정 (b4nfter)
-#define ITEM_DUPLICATE_PREVENT_PATCH_BUGFIX_20040825
-
-// ConnectMember.txt의 계정개수 무제한 (b4nfter)
-#define CONNECT_MEMBER_COUNT_INFINITE_20040823
-
-#if GAME_VERSION >= G_V_99B
-// 캐릭터이동..
-#define CHARACTER_MOVE_20040810
-#endif
-
-#if GAME_VERSION >= G_V_99B
-// 스킬에 물리/마법 속성 들어감 (b4nfter)
-#define SKILL_ADD_PHYSICS_MAGIC_TYPE_20040812
-
-// 다크로드의 마음 이벤트 (b4nfter)
-#define DARK_LORD_HEART_EVENT_20040810
-#endif
-
-// 블러드캐슬에 대천사의 무기 드롭을 직접 하도록 수정 (b4nfter)
-#define BLOODCASTLE_ITEMDROP_DIRECTLY_20040728
-
-// 거래 버그 수정 (창닫히는 부분에 대한)
-#define TRADE_BUG_FIX_CLOSE_WINDOWS_20040727
-
-// 새로운 형태의 NPC_A Type 추가 (apple)
-//#define ADD_NPC_TYPE_A_01_20040708
-
-// 아이템 복사 방지 패치 (b4nfter)
-#define ITEM_DUPLICATE_PREVENT_PATCH_20040719
-
-// 데빌스퀘어 하루 입장수 제한 (b4nfter)
-//#define DEVILSQUARE_CHECK_ENTERCOUNT_20040715
-#if GAME_VERSION >= G_V_S1
-// Guild Viewport 작업 (apple)
-#define MODIFY_GUILD_VIEWPORT_01_20040701
-#endif
-
-#if GAME_VERSION >= G_V_99B
-// 지속 마법 핵 방지 (apple)
-#define APPLY_DURATION_MAGIC_HACK_CLEANER_20040504
-
-// 신규맵 - 칼리마 (b4nfter)
-#define ADD_NEW_MAP_KALIMA_20040518
-
-// 게임서버에서 접속서버로 보내주는 추가적인 정보들 [0xF4][0x07]
-//#define GAMESERVER_INFO_EXTENDED_20040625
-
-// 고유 정보 아이템 (apple)
-//#define ADD_PROPERTY_ITEM_SYSTEM_01_20040609
-
-// PVP 시스템 보완 1차 (apple)
-//#define ADD_PVP_SYSTEM_01_20040517
-
-// 몬스터 타입 BYTE -> WORD 로 확장 (b4nfter)
-#define ENHANCE_MONSTER_TYPE_TO_WORD_20040618
-#endif
-
-#ifdef ADD_NEW_MAP_KALIMA_20040518
-// 쿤둔 죽었을 경우 세트 아이템 드랍(apple)
-#define ADD_REWARD_ABOUT_KALIMA_BOSS_01_20040907
-#endif
-
-// 물약 가격 재수정(foguy)
-#define HP_POTION_VALUE_CHANGE_20040618
-
-#if GAME_VERSION >= G_V_99B
-// ExDB 길드 작업 재수정
-#define EX_DB_GUILD_REWORK_RETOUCH
-// GuildClass 수정작업
-#define MODIFY_GUILD_CLASS_20040608
-#endif
-
-// 죽었을 때 용사, 전사의 반지 않떨구도록 한다 (b4nfter)
-#define USER_DIE_NOT_DROP_HERORING_20040330
-
-// 블러드캐슬 입장시 레벨 6 아이템으로 7광장에 입장할 수 있게 한다. (b4nfter)
-//#define USER_ENTER_BLOODCASTLE7_WITH6_20040330
-
-// 상대방을 사탄, 날개를 착용하고 공격하다 자신이 체력감소로 죽을 때 상대방을 카오로 만드는 버그 (b4nfter)
-#define USER_DIE_MAKE_OPPOSIT_PK_20040329
-
-// 캐릭터 사망시 아이템 가질수 없도록 (b4nfter)
-#define USER_DIE_ITEMGET_BUG_PATCH_20040322
-
-// 죽었을 때 젠이 증가하는 버그 수정 (b4nfter)
-#define USER_DIE_ZEN_BUG_PATCH_20040319
-// 죽었을 때 젠 감소하는 수치 조정 (b4nfter)
-#define USER_DIE_ZEN_MODIFY_20040318
-
-//////////////////////////////////////////////////////////////////
-// 2004년 2월 5일 본섭 패치 내용
-// 아이템 복사버그 패치 (b4nfter)
-#define ITEMCOPY_BUGFIX_20040112
-#if GAME_VERSION >= G_V_99B
-// 내친구 적용 (saemsong)
-#define __FRIEND_WORK__
-#endif
-
-#if GAME_VERSION >= G_V_S1
-// 길드 뷰포트 수정 (foguy)
-#define GUILD_VIEWPORT_MODIFY
-#endif
-
-// 블러드 캐슬 데빌스퀘어 입장시 아이템 복사 버그 수정 (foguy)
-#define BLOOD_DEVILUSQARE_TRADE_BUG_FIX
-// 캐릭터 사망시 경험치 손실 소정 (foguy)
-#define USER_DIE_EXPERIENCE_MODIFY
-// 이동 명령어 스크립트 추가 (foguy)
-#define ADD_MOVE_COMMAND_SCRIPT
-#if GAME_VERSION >= G_V_S1
-// 파티원에게 자신이 먹은 아이템 정보를 준다 (foguy)
-#define SEND_GETITEMINFO_FOR_MYPARTY
-#endif
-// 로크의 깃털 이카루스에서만 떨어지게 제한
-#define FEATHEROFLOKE_ITEMDROP_CHECK
-//////////////////////////////////////////////////////////////////
-
-
-// 길드 포인터 참조 에러 수정
-#define CHINA_GUILD_POINTER_REF_ERROR
-
-// 카오스 조합 -> 비정상 종료 시 인벤토리 RollBack / Commit 하도록 수정
-#define CHAOS_MIX_TRANSACTION_BUXFIX_20040610
-
-// DbVersion 이 0 인 사용자들이 접속했을 때 개인상점 영역을 초기화
-#define PERSONAL_SHOP_DBVER_0_FIX_200406016
-
-// 개인상점 영역에서 물건 가격을 조정하고 사고 팔기 전 복사아이템 체크
-#define PERSONAL_SHOP_CHECK_COPYITEM_200406016
-
-// 블러드 캐슬, 데빌스퀘어 복사 버그 수정
-//#define BLOOD_DEVILSQUARE_TRADE_BUG_FIX
-
-// 카오스 캐슬 결투 및 길드전 신청응답 안되게 수정
-#define CHAOSCASTLE_DUAL_GUILDWAR_CHANGE_20040614
-// 관통 스킬 하나의 시리얼에 하나의 몬스터만 맞게 수정
-#define CHECK_PENETRATION_SKILL
-
-// 파티원 아이템 정보 전송 프토로콜 레벨 추가
-#define SEND_GETITEMINFO_FOR_MYPARTY_ADD_LEVEL
-
-#if GAME_VERSION >= G_V_99B
-#define GUILD_REWORK // 길드 다시 작업중 수정(SaemSong)
-#endif
-
-// 없는 아이템 삭제 -> 않하도록 변경 (b4nfter)
-//#define ITEMDELETE_MODIFY_20040604
-
-// 블러드 캐슬에서 점수 저장 시 접속 끊긴 인원들도 저장되도록 수정 (b4nfter)
-//#define BLOODCASTLE_SENDPOINT_BUGFIX_20040604
-
-// 파티 멤버 생명력 리스트 중에 멤버 퇴장 시 퇴장한 멤버의 값으로 잘 못 보이는 것. (b4nfter)
-#define PARTYMEMBER_LIFELIST_FIX_20040531
-
-
-// 마검 이동 레벨 공식 클라이언트와 맞춤 (NeedLevel = ((NeedLevel/3)*2) -> NeedLevel = ((NeedLevel*2)/3);
-#define MODIFY_MAGUMSA_MOVE_LEVEL_20040517
-
-// 2차 날개 카오스 조합확률(-454%) 버그 수정 (apple)
-#define MODIFY_WINGMIX_454BUG_20040512
-
-// 거래를 이용한 아이템 복사 버그 수정(foguy)(현재 중국만 수정됨)
-//#define TRADE_ITEM_COPY_BUG_FIX_20040511
-
-
-// 세트 아이템용 버퍼 클리어
-#define SETITEM_BUFFER_CLEAR
-
-// 물약을 먹을때 이전에 채울께 남아 있으면, 그것도 채우고 다음 물약을 먹인다
-#define USE_PREV_HP_POTION
-
-//#define FOR_ANTI_HACK // 핵테스트(사용못함)
-// 천공 1차
-#define MONSTER_SKILL // 몬스터 스킬
-//#define RENA_CHANGE
-#define CHANGE_VIEWSTATE // ViewStat BYTE에서 WORD로 확장
-
-#define NEW_SKILL_FORSKYLAND // 천공을 위한 새로운 스킬
-
-#define SERVERCODE_EXPAND // 서버 코드 확장
-
-#if GAME_VERSION >= G_V_S1
-#define GAMESERVER_DIVISION // 서버 분할작업
-#endif
-// 천공 1차 끝
-
-// 천공 2차
-// 다중 체크섬
-//#define MULTI_CHECKSUM
-// 다중 체크섬 끝
-
-#define CHANGE_MAGICATTACKPACKET // 마법 공격패킷을 받을때, 마법 순서 번호 대신, 스킬번호를 받게 수정
-
-#define EXP_CAL_CHANGE // 경험치 계산 방법 변경
-// 천공 추가 수정을 위한 디파인
-#define NEW_FORSKYLAND3
-// 천공 추가 수정을 위한 디파인 끝
-
-#define VER_CHATWINDOW_OPTION // 채팅옵션 저장
-
-#define NEW_FORSKYLAND2 // 천공 2차를 위핸...
-
-#define APPLY_PACKETCHECKSUM // 체크섬 체크
-
-#define HACK_LOG
-// 천공 2차 끝
-
-#define CHANGE_CLIENTHACKCHECK_MSG // 핵체크 관련 메시지 변경
-
-#define FOR_STONE_EXCHANGE // 스톤 환전
-#define FOR_LOTTO_EVENT // 상용화 2주년 기념 복권 이벤트 관련
-
-#if GAME_VERSION >= G_V_99B
-// 스킬추가 (2003.10.21)
-#define ADD_SKILL_20031022
-// 스킬추가 끝
-
-// 아이템 추가
-#define ADD_ITEM
-// 아이템 추가 끝
-
-// 변신 반지 아이템 드롭 설정
-#define ITEMDROP_RINGOFTRANSFORM
-// 변신 반지 아이템 드롭 설정 끝
-
-// 스킬 추가
-#define ADD_SKILL_WITH_COMBO
-
-// 0x1E패킷 확장 (강제 공격시 강제 공격대상)
-#define EXPAND_ATTACK_PACKET_0X1E
-#endif
-
-// 트레이드를 이용한 스킬 버그 수정
-#define TRADE_SKILLBUG_FIX
-
-// 카오스 일반날개 아이템 생성 레벨 조정
-#define CHAOS_MIX_WING_ITEMLEVEL_FIX
-
-// 캐릭터 실시간 통계를 위해서 한시간 간격으로 아이템 저장할때.. 실시간 정보를 기록하라고 DB서버에 알림
-#define ITEMSAVE_MODIFY_FORSTATICS
-
-// WhatsUp용 더미 포트
-#define WHATSUP_DUMMY_SERVER
-
-// 날개 조합 변경
-#define WING_MIX_MODIFY
-
-// 창고 아이템 복사 버그 수정
-#define WAREHOUSE_ITEMCOPY_BUG_FIX
-
-// 아이템백 업그레이드
-#define EVENT_ITEMBAG_UPGRADE
-
-/////////////////////////////////////////////////////////
-// 테섭에 적용 중인 것들
-/////////////////////////////////////////////////////////
-
-// 마검사 방어력 = 민첩 / 5 로 적용 되어 있지 않았음.. (apple)
-// 절대 사용금지 -> 마이너스 패치.
-//#define MODIFY_CALC_MAGUMSA_DEFENSE_20040511
-
-// M: 드라이브 연결 체크, 서버종료메세지 후 프로세스 종료 (apple)
-#define APPLY_SERVER_UTIL_20040504
-
-// 데미지 반사에 의한 화살 내구력 감소. 요정 화살 감소 수정 (apple)
-#define MODIFY_ARROW_DECREASE_ELF_20040503
-
-// 로그 무한 증가 1차 Check & Modify (apple)
-#define CHECK_LOG_INFINITE_20040426
-
-// 세트 방어 미적용 버그 수정 (apple)
-#define MODIFY_10_11_12_13_SET_DEFENSE_20040421
-
-// 운영 캐릭 명령어처리 로그 (apple)
-// [IP][AccountID][Name][Command]
-#define ADD_LOG_GM_COMMAND_20040420
-
-// 물약 겹치기 버그 수정 (apple)
-#define ADD_HP_POTION_LEVEL1_FIX_20040420
-
-#if GAME_VERSION >= G_V_99B
-// 공지사항 수정 (apple)
-// Speed : 25 Default
-// Delay : 0
-// Type : 10-15
-#define MODIFY_NOTICE_20040325
-#endif
-
-// 캐릭터의 최대 소유 ZEN MAX 설정 : MAX 20억 (apple)
-#define MODIFY_ZEN_MAX_20040414
-
-// 아이템 가격 40억 초과시 40억으로 고정 (apple)
-// 아이템 가격 재조정 : 사는 가격 최대 30억(foguy)_밑에 디파인 사용하는거 없어서 대신 사용.
-// 아이템 가격 재조정 : 사는 가격 최대 20억(apple)
-#define MODIFY_ITEM_PRICE_MAXFIX
-
-// 아이템 수리 가격 재조정 (최대 4억으로 고정(아이템 가격 재조정에 따른 수리 비용 증가를 막기 위함)
-#define MODIFY_ITEM_REPAIRE_MAXMONEY
-
-// 올미스 처리 변경 (apple)
-#define MODIFY_SUCCESSBLOCKING_ALLMISS_20040408
-
-// 명령어 처리 추가 (생왕창, 아이템인덱스, 스탯수정등..) (apple)
-#define JS_ADD_TEST_COMMAND
-
-#if GAME_VERSION >= G_V_99B
-// 12, 13 아이템 추가 && 물약추가 (apple)
-// CHAOS_MIX_UPGRADE 같이 들어가야 함.!
-// Viewport 관련 아이템레벨 변환 함수 변경 : 기존 0~7 -> 새로 0~6
-#define ITEM_12_13_20040401
-
-// 물약 먹었을때 다른 사람한테 효과 보여주기 (apple)
-//#define ADD_EFFECT_POTION_20040401
-
-// 레벨업 했을 때 다른 사람한테 효과 보여주기
-// Effect 보내는 함수, 프로토콜 여기서 포함됨 (apple)
-#define ADD_EFFECT_LEVELUP_20040401
-#endif
-
-#if GAME_VERSION >= G_V_99B
-// 카오스 조합 타입별로 구분 업그레드 (foguy)
-// +12, +13과 같이 패치 되어야함 (apple)
-#define CHAOS_MIX_UPGRADE
-#endif
-// HP 생명 물약 +1 추가 (apple)
-#define ADD_HP_POTION_LEVEL1_20040401
-
-// 이벤트 관련 옵션 리로드 -> commonserver.cfg 에 데이터는 그대로 있고 읽는 경로만 ReadCommonServerInfo() 와 분리 (b4nfter)
-#define EVENT_OPTION_RELOAD_20040305
-
-// 이벤트 외의 옵션 리로드 -> commonserver.cfg 에 데이터는 그대로 있고 이벤트 외의 게임옵션 리로드 (b4nfter)
-#define ETC_OPTION_RELOAD_20040308
-
-// 사용자가 종료를 선택했을때 로그 남김 (foguy)
-#define ADD_LOG_USER_CLOSE_SET
-
-#if GAME_VERSION >= G_V_99B
-// 이동, 공격, 패킷 변경(foguy)
-#define PACKET_CHANGE
-#endif
-
-// 길드워 종료 처리 시간 조정
-#define CHANGE_GUILD_WAR_END_DELAYTIME
-
-// 게임서버 정보 -> 접속서버 군 전달 - 접속서버가 분산구조로 바뀜에 따라 추가 (b4nfter)
-// #define GAMESERVER_INFO_TO_CSS_20040317
-
-// 세트 아이템 옵션 정보(foguy)
-// [20060821 코드 삭제]
-// #define ADD_SET_ITEM_OPTION
-
-
-/////////////////////////////////////////////////////////
-// 기능은 되었는데 안쓰는것
-// 접속 <-> 게임서버 정보전달 TCP (b4nfter)
-// #define GAMESERVER_INFO_TCP_20031203
-// 부활 영웅시스템 (b4nfter)
-// #define HERO_SYSTEM_MODIFY
-// 부활 영웅시스템 끝
-/////////////////////////////////////////////////////////
-#endif
-
-
-///////////////////////////////////////////////////////////////////
-//
-// ◆ 마스터레벨 시스템 ◆
-//
-///////////////////////////////////////////////////////////////////
-#ifdef MASTER_LEVEL_SYSTEM_20070912
-// 마스터레벨 성장 시스템
-#define MASTER_LEVEL_UP_SYSTEM_20070912
-
-// 마스터레벨 전용등급 이벤트맵 추가
-#define ADD_DEVILSQURE_FOR_MASTER_LEVEL_20071010 // 데빌스퀘어7 추가
-#define ADD_BLOODCASTLE_FOR_MASTER_LEVEL_20071010 // 블러드캐슬8 추가
-#define ADD_CHAOSCASTLE_FOR_MASTER_LEVEL_20071010 // 카오스캐슬7 추가
-#define ADD_ILLUSIONTEMPLE_FOR_MASTER_LEVEL_20071010 // 환영사원6 사용 (비활성화 된 레벨을 활성화)
-
-// 명령어
-#define ADD_MASTER_LEVEL_SYSTEM_COMMAND_20071122 // 마스터레벨 관련 테스트용 명령어 추가
-
-// 마스터레벨 스킬 시스템
-#define EXPAND_SKILL_SCRIPT_FOR_MASTER_LEVEL_20071122 // skill(kor).txt 스크립트 확장
-#define MASTER_LEVEL_SKILL_SYSTEM_20071122 // 마스터레벨 스킬 시스템
-
-//해외로 빌드시 컴파일 에러가 발생하여 임시로 상위 디파인조건을 추가함 - riverstyx
-#ifdef PCBANG_POINT_SYSTEM_20070206
-// PC방 아이템 관련 버프시스템 수정
-#define BUGFIX_BUFF_EFFECT_SYSTEM_FOR_PCBANG_ITEM_20071205
-
-// PC방 관련해서 해외 적용 되지 않음.(20081106-grooving)
-// [버그수정] 환영사원 보상경험치 풍용의 인장 제거(goni)
-#define MODIFY_EVENTMAP_REWARD_BUGFIX_20080404
-#endif // PCBANG_POINT_SYSTEM_20070206
-
-// [버그수정] 레벨업을 했을 때 경험치가 추가로 클라이언트에 전송되는 문제 수정
-// 기존에 있던 클라이언트 버그를 서버에서 처리함.
-// 마스터레벨 시스템 관련하여 경험치 계산 부분을 INT64로 변경.
-#define BUGFIX_GAIN_EXP_20071210
-
-// [버그수정] 스킬 기본 요구에너지 값 변경 (RKFKA)
-#define MODIFY_BASIC_SKILL_REQENG_20080102
-
-// [코드삭제] DS에 데이터 요청 두번 하는 것 수정
-#define DELETE_GD_REQUEST_20080110
-
-// 시즌 3+ 마스터레벨 스킬 추가
-#define ADD_MASTER_LEVEL_SKILL_PASSIVE_20080107 // 패시브 스킬 추가
-#define ADD_MASTER_LEVEL_SKILL_SYSTEM_ACTIVE_20080107 // 액티브스킬 시스템 및 액티브스킬 추가
-
-#ifdef ADD_SEASON_4_UPDATE_20080617
-// [업데이트] 마스터레벨 4랭크 추가(goni)
-#define UPDATE_MASTER_LEVEL_4RANK_20080428
-#endif // ADD_SEASON_4_UPDATE_20080617
-
-// [테스트 메세지]
-//#define TEST_MSG_MLS_ACTIVE_20080131
-#endif
-
-///////////////////////////////////////////////////////////////////
-//
-// ◆ PC방 이벤트 ◆
-//
-///////////////////////////////////////////////////////////////////
-#ifdef PCBANG_REVITALIZATION_EVENT_20060830
-#define ADD_ELITE_SKELETON_WORRIOR_CHANGE_RING_20060830 // 엘리트해골전사변신반지가 추가되어 있어야 한다.
-#define PCBANG_COUPON_EVENT_20060124 // PC방 쿠폰이벤트를 기본으로 사용한다.
-#endif
-
-///////////////////////////////////////////////////////////////////
-//
-// ◆ 칸투르 ◆
-//
-///////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////
-#if GAME_VERSION >= G_V_S2_2
-#define KANTURU_MOONSTONEPENDANT_20060804 // 문스톤 펜던트 처리 추가 (RKFKA)
-#define ADD_NEW_MAP_KANTURU_BOSS_20060627 // 칸투르 보스맵 추가 (RKFKA)
-#define ADD_NEW_MAP_KANTURU_COMMON_20060523 // 칸투르 일반 맵 추가 (RKFKA)
-#define KANTURU_PROTOCOL_20060705 // 칸투르 프로토콜 추가 (RKFKA)
-#endif
-
-///////////////////////////////////////////////////////////////////
-#ifdef ADD_KANTURU_20060627
-
-//#define KANTURU_TEST_200607119 // 칸투르 테스트용 디파인 - 작업이 끝나면 모두 삭제한다. (RKFKA)
-#define KANTURU_BOSSMONSTER_EXP_NONE_20060809 // 칸투르 보스몬스터는 경험치를 주지 않는다.
-#define KANTURU_SPECIAL_ITEMDROP_20060808 // 칸투르 조화의보석/문스톤 드랍
-#define KANTURU_MONSTER_ITEMDROP_20060807 // 칸투르 몬스터 마야손, 나이트메어 아이템 드롭 (RKFKA)
-#define ADD_KANTURU_CONDITION_20060725 // 칸투르 기타 작업내용 보완 (hnine)
-#define KANTURU_GM_COMMAND_20060709 // 칸투르 운영자용 명령어 추가 (RKFKA)
-#define ADD_NEW_NPC_KANTURU_20060612 // 칸투르 NPC추가 (RKFKA)
-#endif
-//-----------------------------------------------------------------
-
-
-
-
-///////////////////////////////////////////////////////////////////
-//
-// ★ 크라이울프 ☆
-//
-///////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////
-#ifdef CRYWOLF_PRECEDENCE_PATCH_20050413
-//-----------------------------------------------------------------
-
-#ifndef CASTLE_SIEGE_COMMON_PATCH_20041018
-#define CASTLE_SIEGE_COMMON_PATCH_20041018
-#endif
-
-#ifndef DEVILSQUARE_EXTEND_20050221
-#if TESTSERVER == 1
-#define DEVILSQUARE_EXTEND_20050221
-#endif
-#endif
-
-#ifndef ADD_NEW_MAP_AIDA_20050617
-#define ADD_NEW_MAP_AIDA_20050617
-#endif
-
-//-----------------------------------------------------------------
-#endif
-///////////////////////////////////////////////////////////////////
-
-
-///////////////////////////////////////////////////////////////////
-#ifdef CRYWOLF_COMMON_PATCH_20050413
-//-----------------------------------------------------------------
-#define ADD_NEW_MAP_CRYWOLF_FIRSTZONE_20050414 // 크라이울프 1차 지역맵 추가
-#define ADD_NEW_MAP_CRYWOLF_SECONDZONE_20050414 // 크라이울프 2차 지역맵 추가
-
-#define MU_CRYWOLF_SERVER_SYNC_20050505 // 크라이울프 관련 서버 간 동기화 작업
-#define MU_CRYWOLF_CL_PROTOCOL_20050505 // 크라이울프 - GS <-> CL 프로토콜
-#define MU_CRYWOLF_DS_PROTOCOL_20050505 // 크라이울프 - GS <-> DS 프로토콜
-
-#define MU_CRYWOLF_BENEFIT_20051215 // 크라이울프 MVP 승리 혜택
-#define MU_CRYWOLF_PENALTY_20051215 // 크라이울프 MVP 패배 패널티
-
-#define CRYWOLF_MVP_REWARD_RANK_20051215 // 크라이울프 MVP 결과에 대한 랭크 및 포상
-
-//-----------------------------------------------------------------
-#endif
-///////////////////////////////////////////////////////////////////
-
-
-///////////////////////////////////////////////////////////////////
-#ifdef CRYWOLF_ONLY_PATCH_20050413
-//-----------------------------------------------------------------
-
-#define CRYWOLF_MAIN_SCHEDULER_20050505 // 크라이울프 일정과 데이터를 관리하는 스케쥴러
-
-#define CRYWOLF_MONSTER_WORK_20050914 // 크라이울프 MONSTER 처리
-#define CRYWOLF_NPC_WORK_20050912 // 크라이울프 NPC 처리
-#define CRYWOLF_MAP_SETTING_20050915 // 크라이울프 점령 상태에 따라 맵 속성 설정
-
-#define CRYWOLF_GM_COMMAND_20050525 // 크라이울프 운영자 명령어
-
-#define CRYWOLF_MVP_DISABLE_USER_ITEMDROP_20051217 // 크라이울프 MVP 시에는 죽었을 때 아이템 드랍되지 않음
-#define CRYWOLF_MVP_DISABLE_USER_ZENDOWN_20060116 // 크라이울프 MVP 시에는 죽었을 때 젠이 감소 하지 않음
-
-#define CRYWOLF_MODIFY_REGEN_POS_ON_MVP_20060116 // 크라이울프 MVP 시에 죽었을 때 리젠 위치
-
-
-//-----------------------------------------------------------------
-#endif
-///////////////////////////////////////////////////////////////////
-
-
-
-
-///////////////////////////////////////////////////////////////////
-//
-// ★ 공성전 ☆
-//
-///////////////////////////////////////////////////////////////////
-
-
-///////////////////////////////////////////////////////////////////
-#ifdef CASTLE_SIEGE_COMMON_PATCH_20041018 // 공성전 서버와 일반 서버간에 공통되는 패치부분
-//-----------------------------------------------------------------
-//#define MODIFY_MARKOFLORD_OVERLAPPED_20050530 // 성주의 표식이 인벤토리 상에서 겹쳐지도록 수정
-#define ADD_NEW_MAP_CASTLE_20041115 // 공성전 맵 추가
-#define ADD_NEW_NPC_CASTLE_20041115 // 공성전 관련 NPC 추가
-#define MAP_SERVER_WORK_20041030 // 맵서버 분할 작업
-
-#define MU_CASTLESIEGE_SERVER_SYNC_20041130 // 공성전 서버들 간에 동기화를 맞추는 일련의 작업들
-#define MU_CASTLESIEGE_CL_PROTOCOL_20041122 // 뮤 공성전 - 뮤 클라이언트 관련 프로토콜, 통신 부분
-#define MU_CASTLESIEGE_DS_PROTOCOL_20041105 // 뮤 공성전 - 데이터 서버 관련 프로토콜, 통신 부분
-#define MU_CASTLESIEGE_TAX_SYSTEM_20041219 // 성 경제 시스템 구현 관련
-#define MU_CASTLESIEGE_CS_MARKS_20041214 // 성주의 표식 아이템 관련 작업들
-
-#define MODIFY_CASTLE_PK_01_20050309 // 성주 길드가 성에서 PK 했을 경우에 대한 처리
-
-#define ADD_NEW_GEM_OF_DEFEND_FOR_CS_01_20050301 // 공성에서의 수호 보석 설정, 드랍률설정 가능.
-#define ADD_NEW_CASTLE_FLAG_01_20041227 // Castle 깃발 및 장식 정보
-#define ADD_NEW_MERCENARY_FOR_CASTLE_01_20041214 // 공성 용병 NPC 추가
-#define ADD_NEW_ITEM_FOR_CASTLE_01_20041116 // ITEM 추가
-#define ADD_NEW_SKILL_FOR_CASTLE_01_20041116 // 캐릭터 스킬 추가
-
-#define ADD_NEW_WEAPON_FOR_CASTLE_01_20041116 // 공성 무기 추가
-#define ADD_NEW_VIEWPORT_SYSTEM_01_20041201 // 공성 무기 뷰포트 시스템
-#define ADD_NEW_MAP_CASTLE_HUNTZONE_20041115 // 사냥터 맵 추가
-#define EXPAND_INTERFACE_BYTE_TO_DWORD_20041209 // m_IfState BYTE -> DWORD 로 확장
-#define EXPAND_VIEWSKILLSTATE_WORD_TO_INT_20041122 // ViewSkillState WORD -> INT 로 확장
-#define EXPAND_MAX_MAGICLIST_20_TO_60_20041126 // MagicList 확장 20개 -> 60개로 확장
-//-----------------------------------------------------------------
-#endif //CASTLE_SIEGE_COMMON_PATCH_20041018
-
-
-#define MAP_SERVER_ADD_MONSTER_20041216 // 맵서버 분할 관련 몬스터 추가 함수 변경 (서버가 가지고 있는 맵만 추가되도록)
-
-// 인증서버에 서버코드 추가 (공성)
-#define JOINSERVER_USING_SERVERCODE
-// 인증서버에 서버코드 추가 끝
-///////////////////////////////////////////////////////////////////
-
-
-///////////////////////////////////////////////////////////////////
-#ifdef CASTLE_SIEGE_ONLY_PATCH_20041018 // 공성전 서버만 필요한 패치부분
-//-----------------------------------------------------------------
-#define DISABLE_GETTING_EXP_FROM_GUARDTOWER_20070801 // 가드타워 파괴 시 경험치를 얻지 못하게 한다.
-#define CASTLE_NPC_DONT_DROP_ITEM_20050517 // 공성전 NPC들은 아이템을 떨구지 않는다.
-#define CASTLEDEEP_EVENT_20050413 // 로랜협곡 습격 이벤트 (b4nfter)
-#define CASTLE_SPECIAL_ITEMMIX_20050425 // 성주혜택 특별 아이템 조합 (b4nfter)
-#define MU_CASTLESIEGE_START_NOTIFY_20050418 // 공성전 시작 전 N분 부터 전 서버에 공성전 알람 시작
-#define MU_CASTLESIEGE_STATE_SEC_VIEW_20050413 // 공성전 상태 남은시간 표시
-//#define CASTLE_NPC_TEST_STATE_20050118 // 공성전 NPC에 테스트용 임시수치 적용
-#define CASTLE_SAVE_PCROOM_USERLIST_20050105 // PC방 이벤트 관련 - 공성전 참여자들의 PC방 정보 저장
-//#define CASTLE_TEST_SCHEDULER_20041218 // 테스트 스케쥴러를 사용한다. (모든 단계는 5분씩)
-#define CASTLE_GM_COMMAND_20041222 // 공성전 운영자 명령어
-//#define CASTLE_POTION_NPC_20041222 // 공성전 맵의 물약파는 NPC 처리
-#define CASTLE_MAIN_SCHEDULER_20041111 // 공성전의 일정과 데이터를 관리하는 스케쥴러
-#define CASTLE_NPC_GATE_WORK_20041206 // 성문 처리와 관련된 작업들
-#define CASTLE_NPC_GUARDIANSTATUE_WORK_20041207 // 석상 처리와 관련된 작업들
-#define CASTLE_NPC_LIFESTONE_WORK_20041208 // 라이프스톤 (진지) 처리와 관련된 작업들
-#define CASTLE_NPC_CROWN_WORK_20041210 // 왕관 처리와 관련된 작업들
-#define CASTLE_NPC_CROWN_SWITCH_WORK_20041210 // 왕관 스위치 처리와 관련된 작업들
-#define CASTLE_NPC_CANNON_TOWER_20041223 // 캐논타워 처리와 관련된 작업들
-#define MU_CASTLESIEGE_JOINSIDE_VIEWPORT_20041209 // 공성전 시 공/수 양측의 소속 상태를 뷰포트에 추가하여 표시함
-#define MU_CASTLESIEGE_LOG_20050107 // 공성전 별도 로그 관리
-#define ADD_CASTLE_HUNTZONE_MONSTER_01_20050111 // 사냥터 몬스터. 특히 BOSS 몹 처리
-#define ADD_CASTLE_HUNTZONE_NPC_01_20050111 // 사냥터 문지기 등.
-#define ADD_NEW_CASTLE_HUNTZONE_REWARD_01_20050303 // 공성 사냥터에서 보상 추가.(1.보스몹에 대해)
-#define ADD_NEW_CASTLE_HUNTZONE_REWARD_02_20050314 // 공성 사냥터에서 세트아이템 드랍 추가.(2.시련의땅에서만)
-#define MODIFY_RANGEATTACK_CHECK_20050113 // 범위 스킬 공격방식 변경 (공성맵에서 공성전 중일 때 사람도 맞도록)
-#define MODIFY_UPDATING_VIEWPORT_20050118 // 반지 버릴 경우 캐릭터를 다시 그리라는 명령을 클라이언트에게 주지 않는다.
-
-#define MODIFY_ANS_GIVEUP_20050413 // 공성 선포 기간같이 공성포기기간이 아닐때 클라이언트로 보내주는 에러 처리 수정 (apple)
-//-----------------------------------------------------------------
-#endif //CASTLE_SIEGE_ONLY_PATCH_20041018
-///////////////////////////////////////////////////////////////////
-
-
-
-///////////////////////////////////////////////////////////////////
-//
-// ◆ 이벤트 ◆ - Old Style...
-//
-///////////////////////////////////////////////////////////////////
-// Blood Castle용
-#define FOR_BLOODCASTLE // 블러드 캐슬용임
-#define FOR_BLOODCASTLE2 // 블러드 캐슬용 추가 작업(foguy)
-#define FOR_BLOODCASTLE3 // 블러드 캐슬용 추가 작업(b4nfter - 2003.10.21 패치)
-#if GAME_VERSION >= G_V_99B
-#define BLOODCASTLE_EXTEND_20040314 // 블러드캐슬 7개로 확장 (수정되는 리소스 gate.txt, MonsterSetBase.txt, BloodCastle.dat)
-#define BLOODCASTLE_EVENT_3RD_20040401 // 블러드캐슬 3차 이벤트 (캐슬 남은시간 저장) (b4nfter)
-#define BLOODCASTLE_EVENT_4TH_20040531 // 블러드캐슬 4차 이벤트 (캐슬 남은시간 저장) (b4nfter)
-#define BLOODCASTLE_EVENT_5TH_20050531 // 블러드캐슬 5차이벤트. 파티중심으로 변경 (b4nfter)
-#endif
-
-// 엘도라도의 상자이벤트
-#define ELEGORADO_EVENT
-///////////////////////////////////////////////////////////////////
-
-
-#if GAME_VERSION >= G_V_99B
-///////////////////////////////////////////////////////////////////
-//
-// ◆ 기본 시스템 ◆ - Old Style...
-//
-///////////////////////////////////////////////////////////////////
-// 결투 시스템
-#define DUEL_SYSTEM_20031028
-#define DUEL_SYSTEM_FIX_20031224
-
-// 2차 퀘스트
-#define SECOND_QUEST
-
-// 무리 몬스터 시스템
-#define MONSTER_HERD_SYSTEM_20031120
-
-// 다크로드 작업 (아이템 스크립트 확장도 같이 들어감)
-#define DARKLORD_WORK
-
-// 개인상점 추가 (b4nfter)
-#define PERSONAL_SHOP_20040113
-#define PERSONAL_SHOP_BUG_FIX
-#define ADD_SHOP_11_12 // 상점 추가
-#endif
-
-// 길드 서버 적용
-#define _NEW_EXDB_
-
-#define QUEST_BUG_FIX // 퀘스트 버그 수정
-
-///////////////////////////////////////////////////////////////////
-
-
-#ifdef MAP_SERVER_WORK_20041030 // 맵서버 분할 작업 관련 추가 패치
-//#define MAP_SERVER_ADD_MONSTER_20041216 // 맵서버 분할 관련 몬스터 추가 함수 변경 (서버가 가지고 있는 맵만 추가되도록)
-#endif //MAP_SERVER_WORK_20041030
-
-
-#define LOLONG(l) ((DWORD)((UINT64)(l) & 0xFFFFFFFF))
-#define HILONG(l) ((DWORD)((UINT64)(l) >> 32))
-#define MAKELONGLONG(a, b) ((INT64)(((DWORD)((UINT64)(a) & 0xFFFFFFFF)) | ((INT64)((DWORD)((UINT64)(b) & 0xFFFFFFFF))) << 32))
-
-#ifdef ADD_NEW_ITEM_FOR_CASTLE_01_20041116
-// D E F I N E : 공성 아이템 추가
-#ifdef MODIFY_SIEGE_POTION_OVERLAP_COUNT_20060511
-#define MAX_SPECIAL_POTION_OVERLAP_COUNT 250
-#else
-#define MAX_SPECIAL_POTION_OVERLAP_COUNT 160
-#endif
-
-// 수정 MODIFY_CASTLE_POTION_20051017
-// BLESS:60 -> 120, SOUL:30 -> 60
-#define CASTLE_BLESSPOTION_ACTIVETIME 120
-#define CASTLE_SOULPOTION_ACTIVETIME 60
-
-
-// D E F I N E : 영혼의 물약 AG 회복값
-#define CASTLE_SOULPOTION_AG_REFILL_POINT 8
-
-// D E F I N E : 영혼의 물약 저항력 증가값(%)
-#define CASTLE_SOULPOTION_ADD_RESISTANCE 50
-
-
-#endif
-
-#ifdef ADD_NEW_SKILL_FOR_CASTLE_01_20041116
-// D E F I N E : 공성 스킬 추가
-enum SKILL_LIST_TYPE
-{
- // 기본
- SKILL_LIST_TYPE_DEFALT = 0x00,
- // 스킬 추가
- SKILL_LIST_TYPE_ADD = 0x01,
- // 스킬 제거
- SKILL_LIST_TYPE_DEL = 0x02,
-
-};
-
-enum KILLCOUNT_OPTION
-{
- KILLCOUNT_RESET = 0x00,
- KILLCOUNT_INC = 0x01,
- KILLCOUNT_DEC = 0x02,
-};
-
-#endif
-
-#ifdef ADD_CASTLE_HUNTZONE_NPC_01_20050111
-// D E F I N E : 사냥터 NPC 추가
-
-#define CASTLE_HUNTZONE_GATE_01 106
-
-enum CASTLE_HUNTZONE_NPCTALK_RESULT
-{
- CASTLE_HUNTZONE_ENTRANCE_DISABLE = 0x00,
- CASTLE_HUNTZONE_ENTRANCE_ENABLE = 0x01,
- CASTLE_HUNTZONE_ENTRANCE_ENABLE_TO_MEMBER = 0x02,
- CASTLE_HUNTZONE_ENTRANCE_ENABLE_TO_OWNER = 0x03,
-};
-
-enum CASTLE_HUNTZONE_SETTING
-{
- CASTLE_HUNTZONE_SETTING_FAIL = 0x00,
- CASTLE_HUNTZONE_SETTING_SUCCESS = 0x01,
-
-};
-
-enum CASTLE_HUNTZONE_USAGE
-{
- CASTLE_HUNTZONE_USAGE_DISABLE = 0x00,
- CASTLE_HUNTZONE_USAGE_ENABLE = 0x01,
-
-};
-#endif
-
-
-///////////////////////////////////////////////////////////////////
-//
-// 친구 시스템
-//
-///////////////////////////////////////////////////////////////////////
-#ifdef __FRIEND_WORK__
-#define MAX_MEMO_SUBJECT 32
-#define MAX_MEMO 1000
-#define MAX_DATE 30
-
-#define FRIENDSERVER_ONLINE 0 // 친구 서버 온라인 상태
-#define FRIENDSERVER_OFFLINE 1 // 친구 서버 오프라인 상태
-#define FRIENDSERVER_ONLINEREQUEST 2 // 친구 서버에 접속 요청 중
-
-#endif
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 인증 정보
-//
-//////////////////////////////////////////////////////////////////////////
-#ifdef UPDATE_UNIFICATIONBILL_20090203
-enum
-{
- BILL_TYPE_NONE = 0, // 없음
- BILL_TYPE_PERSONAL_AMOUNT = 1, // 개인 정액
- BILL_TYPE_PCBANG_AMOUNT = 2, // PC방 정액
- BILL_TYPE_PCBANG_QUANTITY = 3, // PC방 정량
- BILL_TYPE_PERSONAL_QUANTITY = 4, // 개인 정량
- BILL_TYPE_COLLOR = 5, // 컬러 요금제(개인)
-};
-#define MAX_LOGIN_COUNT 6
-#else // UPDATE_UNIFICATIONBILL_20090203
-#define MAX_LOGIN_COUNT 3
-
-#define CERTIFYTYPE_ACCOUNT 0 // 계정인증
-#define CERTIFYTYPE_IP 1 // IP 인증
-
-#define BILLTYPE_JUNGYANG 0 // 정량
-#define BILLTYPE_JUNGACK 1 // 정액
-#define BILLTYPE_JONGYANG 2 // 종량
-#define BILLTYPE_TIME 3 // 시간제
-#define BILLTYPE_DATE 4 // 날짜제
-#define BILLTYPE_NOCHARGE 5 // 무료
-#endif // UPDATE_UNIFICATIONBILL_20090203
-//----------------------------------------------------------------------------
-// 인증서버에 접속하는 프로그램의 타입
-#define ST_GAMESERVER 1 // 게임서버 번호
-
-#define DEFMAPSERVERPORT 55900 // Map Server port number
-#define DEFJOINSERVERPORT 55970 // Join Server port number
-#define DEFDATASERVERPORT 55960 // Game Data Server Port number
-#ifdef ADD_GAMESERVER_PARAMETER_20050728
-#define DEFEXDBSERVERPORT 55906 // ExDB Server Port number
-#endif
-
-//----------------------------------------------------------------------------
-// 계정정보에 사용되는 정의들..
-#define MAX_JOOMINNUMBERSTR 13 // 주민등록번호 스트링 크기 -를 A 크기이다.
-#define MAX_QUESTIONSTR 30 // 질문 스트링 크기
-#define MAX_ANSWERSTR 30 // 답변 스트링 크기
-#define MAX_PHONENUMBERSTR 20 // 전화번호 스트링 크기
-#define MAX_EMAILSTR 50 // e-mail 스트링 크기
-
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 서버 타입 정보
-//
-//////////////////////////////////////////////////////////////////////////
-// Server Type
-#define ST_JOINSERVER 0 // 인증 접속 서버
-#define ST_GAMESERVER 1 // 게임 서버
-#define MAX_CHAT 60 // 대화 최대 크기
-#define MAX_GUILDNOTICE 60 // 최대 길드 공지 길이
-
-
-#ifdef GAMESERVER_INFO_TO_CSS_20040317 // 접속서버분산 - 매크로선언
-#define MAX_CS_COUNT 32 // 최대 접속서버의 개수
-#endif
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 시스템 기본 정보
-//
-//////////////////////////////////////////////////////////////////////////
-#define MAX_ROADPATH 15 // 사용자가 이동하는 PATH 최대 크기
-#define MAX_PATHDIR 8 // 이동에 사용되는 방향 개수
-#define MAX_IDSTRING 10 // 아이디 크기
-#ifdef UPDATE_USERPASSWORD_LENGTH_20090424
-#define MAX_PASSWORD_LENGTH 20
-#define MAX_JOOMINNUMBER_LENGTH 20
-#else // UPDATE_USERPASSWORD_LENGTH_20090424
-#define MAX_PASSWORD_LENGTH 12
-#endif // UPDATE_USERPASSWORD_LENGTH_20090424
-#define DEFAULT_MONEY 0 // 초기 주어지는 돈 액수
-
-#define MAX_LEVEL 1000 // 레벨 최대 크기
-
-#ifdef MASTER_LEVEL_UP_SYSTEM_20070912 // 마스터레벨 최대 크기
-#define MAX_MASTER_LEVEL 200
-#endif
-
-#ifdef ITEM_12_13_20040401
-#define MAX_ITEMLEVEL 15 // 레벨 최대 크기
-#else
-#define MAX_ITEMLEVEL 15 // 레벨 최대 크기
-#endif
-
-#define MAX_PRESENTNAME 50 // 최대 경품 이름
-
-#ifdef MODIFY_ZEN_MAX_20040414
-#define MAX_ZEN 2000000000
-#else
-#define MAX_ZEN 2000000000
-#endif
-
-#define MAXVIEWPORTOBJECT 75 // 뷰포트 최대 OBJECT 수
-#ifdef GAMESERVER_TO_CASTLESIEGESERVER // 공성전 전용서버 일때의 몬스터 뷰포트 변화
-#define MAX_MONVIEWPORTOBJECT 75 // 몬스터의 뷰에는 최대 50 마리 까지 표시 (공성전 전용서버 일 때만)
-#else
-#define MAX_MONVIEWPORTOBJECT 20 // 몬스터의 뷰에는 최대 20 마리 까지 표시
-#endif
-
-#define MAXUSERCHARACTER 5 // 유저당 가질수 있는 최대 캐릭터 수
-
-#define MAX_GUILDNAMESTRING 8 // 길드 이름 스트링 길이
-
-#define MAX_GUILDMARKSIZE 32 // 길드 마크 버퍼 크기
-
-#define MAX_DBEQUIPMENT 120 // (12x10) 데이터베이스 읽기&저장되는 장비데이터 크기
-
-#ifdef PERSONAL_SHOP_20040113
-#define MAX_PSHOP_TEXT 36 // 개인상점 텍스트의 최대크기
-
-#ifdef ITEM_DBSIZE_EXTEND_20050706
-#define MAX_DBINVENTORY 3792//1728 // (8x8x10)+120+(8x4x10) 데이터베이스 읽기&저장되는 인벤토리데이터 크기
-#else
-#define MAX_DBINVENTORY 1080 // (8x8x10)+120+(8x4x10) 데이터베이스 읽기&저장되는 인벤토리데이터 크기
-#endif
-
-#else
-#define MAX_DBINVENTORY 760 // (8x8x10)+120 데이터베이스 읽기&저장되는 인벤토리데이터 크기
-#endif
-
-#ifdef ITEM_DBSIZE_EXTEND_20050706
-#define MAX_ITEMDBBYTE 16 // 아이템이 DB에 저장되는 바이트 수
-#define MAX_ITEMDBBYTE_V02 10 // 아이템이 DB에 저장되는 바이트 수
-#else
-#define MAX_ITEMDBBYTE 10 // 아이템이 DB에 저장되는 바이트 수
-#endif
-
-#define MAX_ITEMDBBYTE_V00 7 // 아이템이 DB에 저장되는 바이트 수
-
-#ifdef ITEM_INDEX_EXTEND_20050706
-#define ITEM_INDEX_NOT_EXIST 511 // 9비트 아이템 인덱스 (4비트 아이템 타입) 일 경우 존재하지 않는 갑옷류 아이템의 인덱스
-#endif
-
-#ifdef ADD_ITEM_SOCKET_OPTION_EXTEND_20080422
-#define ITEM_BUFFER_SIZE 12 // 아이템 패킷 버퍼 크기
-#else
-#ifdef ITEM_INDEX_EXTEND_20050706
-#define ITEM_BUFFER_SIZE 7 // 아이템 패킷 버퍼 크기
-#elif GAME_VERSION >= G_V_99B
-#define ITEM_BUFFER_SIZE 5 // 아이템 패킷 버퍼 크기
-#else
-#define ITEM_BUFFER_SIZE 4
-#endif
-#endif // ADD_ITEM_SOCKET_OPTION_EXTEND_20080422
-
-#define MONEY_BUFFER_SIZE 4 // 젠 패킷 버퍼 크기
-
-#ifdef ITEM_DBSIZE_EXTEND_20050706
-#define MAX_WAREHOUSEDBSIZE 3840//1920
-#else
-#define MAX_WAREHOUSEDBSIZE 1200
-#endif
-
-#define MAX_WAREHOUSEITEMS (8*15)
-
-#define MAX_CHAOSBOXSIZE 8*4
-#define MAX_CHAOSBOXITEMS 8*4
-
-
-#define MAX_EQUIPMENT 12
-#define MAX_INVENTORYMAP 8*8
-#define MAX_INVENTORY (MAX_EQUIPMENT + MAX_INVENTORYMAP) // (8x8)+12 인벤토리 최대 개수
-#define MAX_TRADEITEM 32 // (8x4)
-#define INVENTORY_EXT4_SIZE 204
-
-#ifdef PERSONAL_SHOP_20040113
-#define MAX_PSHOPITEM 8*4 // (8x4) 개인상점창
-#define MAX_PSHOPITEMMAP 8*4 // (8x4) 개인상점창 맵
- //76
-#define MAX_INVENTORY_EXTEND (MAX_INVENTORY + MAX_PSHOPITEM) // (8x8)+12+(8*4) DB저장 시 인벤토리 최대 개수
-#endif
-
-#define MAX_DBMAGIC (MAX_MAGIC*3) // 데이터베이스에 저장되는 마법 데이터 크기
-
-#ifdef ITEM_DBSIZE_EXTEND_20050706
-#define ITEM_BITSHIFT 9
-#else
-#define ITEM_BITSHIFT 5
-#endif
-
-#ifdef ADD_NOT_SELL_EQUIPITEM_20080625
-#define IS_EQUIPITEM(pos) (pos >= EQUIPMENT_WEAPON_RIGHT && pos < MAX_EQUIPMENT) ? TRUE : FALSE
-#endif // ADD_NOT_SELL_EQUIPITEM_20080625
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 캐릭터에 관련된 정의들
-//
-//////////////////////////////////////////////////////////////////////////
-#define PK_MINIMUM_LEVEL 5 // 사용자끼리 죽일수 있는 최소 레벨
-
-#ifdef ADD_SEASON_3_NEW_CHARACTER_SUMMONER_20070912 // 채대 종족 개수 확장
-#define MAX_CLASSTYPE 8//6 // 최대 종족 개수 8for s12
-#else
-#ifdef DARKLORD_WORK
-#define MAX_CLASSTYPE 5 // 최대 종족 개수
-#else
-#define MAX_CLASSTYPE 4 // 최대 종족 개수
-#endif
-#endif // ADD_SEASON_3_NEW_CHARACTER_SUMMONER_20070912
-
-#define MAX_PREVIEWCHARSET 9 // 캐릭터 세트 최대 크기( 미리보기용 버퍼 )
-
-#define MAX_RESISTANCE 7 // 세트 아이템으로 인해 7로 증가
-
-
-#ifdef GAMESERVER_TO_CASTLESIEGESERVER // 공성전 전용서버는 사용자 오브젝트의 개수를 늘리고 몬스터 개수를 줄인다.
-#if TESTSERVER == 1
-#define MAX_OBJECT 7400 // 게임서버의 최대 오브젝트(유저) 수
-#define MAX_MONSTER 5800
-#define MAX_CALLMONSTER 600
-#define MAX_USER 1000
-#else
-#define MAX_OBJECT 4000 // 게임서버의 최대 오브젝트(유저) 수
-#define MAX_MONSTER 1500
-#define MAX_CALLMONSTER 1000
-#define MAX_USER 1500
-#endif // TESTSERVER
-
-#else
-
-#ifdef MODIFY_ILLUSIONTEMPLE_BUGFIX_3_20070731
-#define MAX_OBJECT 9000 // 게임서버의 최대 오브젝트(유저) 수
-#define MAX_MONSTER 7400
-#define MAX_CALLMONSTER 600
-#define MAX_USER 1000
-#else
-#ifdef CHAOSCASTLE_SYSTEM_20040408
-#define MAX_OBJECT 7400 // 게임서버의 최대 오브젝트(유저) 수
-#define MAX_MONSTER 5800
-#define MAX_CALLMONSTER 600
-#define MAX_USER 1000
-#else
-#define MAX_OBJECT 5650 // 게임서버의 최대 오브젝트(유저) 수
-#define MAX_MONSTER 4800
-#define MAX_CALLMONSTER 600
-#define MAX_USER 250
-#endif // CHAOSCASTLE_SYSTEM_20040408
-#endif // MODIFY_ILLUSIONTEMPLE_BUGFIX_3_20070731
-#endif // GAMESERVER_TO_CASTLESIEGESERVER
-
-#define ALLOC_USEROBJECTSTART (MAX_MONSTER+MAX_CALLMONSTER) // 게임서버의 최대 오브젝트(유저) 수
-
-#define OBJTYPE_CHARACTER 1 // 오브젝트 타입이 유저캐릭터이다.
-#define OBJTYPE_MONSTER 2 // 오브젝트 타입이 몬스터이다.
-#define OBJTYPE_NPC 3 // 오브젝트 타입이 NPC 이다.
-#define OBJTYPE_ITEM 5 // 아이템이다.
-
-//----------------------------------------------------------------------------
-// Killer Type ( 죽였을
-#define KT_CHAR 0 // 플레이어한테 죽었다.
-#define KT_MONSTER 1 // 몬스터한테 죽엇따.
-#define KT_GUILDWARCHAR 2 // 길드전에서 플레이어가 죽였다.
-
-#ifdef DUEL_SYSTEM_20031028
-#define KT_DUELCHAR 3 // 결투 중에 플레이어가 죽였다.
-#endif
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 게임에 사용되는 정의들
-//
-//////////////////////////////////////////////////////////////////////////
-#define MAX_LEVELUPPOINT 5 // 캐릭터당 레벨업 했을때 포인트
-
-#ifdef ADD_GAMBLING_20090120 // 겜블링 상점개수 추가
-#define MAX_SHOP 20
-#else // ADD_GAMBLING_20090120
-#ifdef ADD_SEASON_3_NEW_MAP_20070910 // 엘베란드 상점개수 추가
-#define MAX_SHOP 18
-#else
-#ifdef ADD_SHOP_14_20070308
-#define MAX_SHOP 15
-#else
-#ifdef ADD_FIRECRACKER_NPC_20070306 // 상점 개수 추가
-#define MAX_SHOP 14 // 최대 상점 개수
-#else // ADD_FIRECRACKER_NPC_20070306
-#ifdef ADD_SHOP_11_12
-#define MAX_SHOP 13 // 최대 상점 개수
-#else
-#define MAX_SHOP 12 // 최대 상점 개수
-#endif
-#endif // ADD_FIRECRACKER_NPC_20070306
-#endif // ADD_SHOP_14_20070308
-#endif // ADD_SEASON_3_NEW_MAP_20070910
-#endif // ADD_GAMBLING_20090120
-
-#define PK_LEVEL_DEFAULT 3 // PK Level 의 기본 값
-
-#ifdef HERO_SYSTEM_MODIFY
-#define PK_LEVEL_3_ITEMDROP 2 // PK Level 3 이상의 아이템 드롭율
-#define PK_LEVEL_2_ITEMDROP 4 // PK Level 2 이상의 아이템 드롭율
-#define PK_LEVEL_1_ITEMDROP 8 // PK Level 1 이상의 아이템 드롭율
-
-#define PK_LEVEL_3_ITEMERASE 8 // PK Level 3 이상의 아이템 소멸율
-#define PK_LEVEL_2_ITEMERASE 16 // PK Level 2 이상의 아이템 소멸율
-#define PK_LEVEL_1_ITEMERASE 32 // PK Level 1 이상의 아이템 소멸율
-#endif
-
-// 퀘스트에서 사용되는 정의들
-#define MAX_QUEST 200
-#define MAX_DBQUEST 50
-#define MAX_QUEST_SUBINFO 10
-#define MAX_QUEST_CONDITION 10
-
-#define APPLE_DROPRATE 2000 // 케릭터 레벨이 20 이하일 때 사과 드롭률 (n / 10000)
-
-//----------------------------------------------------------------------------
-#define PARTY_LENGTH 130
+#define MAX_ITEMLEVEL 15
+#define MAX_ZEN 2000000000
-//----------------------------------------------------------------------------
-#ifdef ADD_ITEM_FENRIR_01_20051110
-#define MAX_OVERLAP_FENRIR_MIX_STUFF_01 20 // 갑옷 파편
-#define MAX_OVERLAP_FENRIR_MIX_STUFF_02 20 // 여신의 가호
-#define MAX_OVERLAP_FENRIR_MIX_STUFF_03 10 // 맹수의 발톱
+#define MAXUSERCHARACTER 5
-#ifdef ADD_PCS_FULL_RECOVERY_POTION_20070508
-#define MAX_OVERLAP_FULL_RECOVERY_POTION 100 // 100% 회복물약 겹치는 갯수
-#endif // ADD_PCS_FULL_RECOVERY_POTION_20070508
+#define PK_LEVEL_DEFAULT 3
-#define MIN_FENRIR_EQUIP_LEVEL 300 // 300레벨 부터 착용 가능
-#define MAX_FENRIR_DAMAGE_INC_LEVEL 5 // 5레벨 마다 스킬데미지 1% 증가
+#define MAX_GUILDNAMESTRING 8
+#define MAX_GUILDMARKSIZE 32
-#endif // ADD_ITEM_FENRIR_01_2005
+#define MAX_DBEQUIPMENT 120
+#define MAX_DBINVENTORY 3792
+#define MAX_ITEMDBBYTE 16
-#ifdef NPROTECT_GAME_GAURD_FOR_SERVER_VERSION_25_20060123
-#define MAX_USER_FOR_GAMEGUARD_AUTH 1500
-#endif // NPROTECT_GAME_GAURD_FOR_SERVER_VERSION_25_20060123
+#define ITEM_BUFFER_SIZE 12
+#define MONEY_BUFFER_SIZE 4
+#define MAX_WAREHOUSEDBSIZE 3840
+#define MAX_WAREHOUSEITEMS (8*15)
-#ifdef UPDATE_SEASON4_MARKET_CONDITIONS_BALANCE_20080828 // 구슬, 스크롤 아이템 드랍 개수
-#ifdef MODIFY_SPEAR_DROP_BUGFIX_20080901
-#define MAX_BALLTABLE_SIZE 22
-#else // MODIFY_SPEAR_DROP_BUGFIX_20080901
-#define MAX_BALLTABLE_SIZE 22
-#endif // MODIFY_SPEAR_DROP_BUGFIX_20080901
-#else // UPDATE_SEASON4_MARKET_CONDITIONS_BALANCE_20080828
-#ifdef MODIFY_ITEM_DROP_FIRESCREAMSCROLL_20060830
-#define MAX_BALLTABLE_SIZE 17
-#else
-#ifdef MODIFY_ITEM_DROP_MAXINDEX_20060830
-#define MAX_BALLTABLE_SIZE 16
-#endif // MODIFY_ITEM_DROP_MAXINDEX_20060830
-#endif // MODIFY_ITEM_DROP_FIRESCREAMSCROLL_20060830
-#endif // UPDATE_SEASON4_MARKET_CONDITIONS_BALANCE_20080828
-
-#ifdef MODIFY_EXP_LOG_MONSTER_EVENT_INDEX_20060906
-enum EXP_GETTING_EVENT_TYPE
-{
- EVENT_TYPE_NONE = 0,
- EVENT_TYPE_PARTY = 1,
- EVENT_TYPE_DEVILSQUARE = 2,
- EVENT_TYPE_CHAOSCASTLE = 3,
- EVENT_TYPE_BLOODCASTLE = 4,
- EVENT_TYPE_CRYWOLF = 5
-};
-#endif // MODIFY_EXP_LOG_MONSTER_EVENT_INDEX_20060906
-
-#ifdef HALLOWINDAY_JACK_O_LANTERN_EVENT_20061017
-#define MAX_OVERLAP_JACK_O_LANTERN_POTION 3 // 할로윈 데이 이벤트 포션 겹쳐지는 갯수
-#endif
-
-#ifdef MODIFY_CHN_PLAYTIME_LIMIT_SYSTEM_01_20070509
-#define PLAYTIME_LIMIT_VERIFY_ADULT 0
-#define PLAYTIME_LIMIT_VERIFY_KID 1
-#define PLAYTIME_LIMIT_VERIFY_ERROR 2
-#endif // MODIFY_CHN_PLAYTIME_LIMIT_SYSTEM_01_20070509
-
-#ifdef ADD_FULL_RECOVERY_POTION_20070719
-#define MAX_OVERLAP_ELITE_POTION 50 // 엘리트 물약의 최대 겹쳐지는 갯수
-#endif // ADD_FULL_RECOVERY_POTION_20070719
-
-#ifdef ADD_PCS_IMPROVE_POTION_20070718
-#define MAX_OVERLAP_IMPROVE_POTION 3 // 비약의 최대 겹쳐지는 갯수
-#endif // ADD_PCS_IMPROVE_POTION_20070718
-
-#ifdef ADD_EVENT_CHERRYBLOSSOM_20080312
-enum _enumMAXOVERLAP
-{
- MAX_OVERLAP_CHERRYBLOSSOM_ITEM_DEFAULT = 3,
- MAX_OVERLAP_CHERRYBLOSSOM_WHITE = 10,
- MAX_OVERLAP_CHERRYBLOSSOM_RED = 30,
-#ifdef FOR_KOREA
- MAX_OVERLAP_CHERRYBLOSSOM_GOLD = 255,
-#else // FOR_KOREA
- MAX_OVERLAP_CHERRYBLOSSOM_GOLD = 50,
-#endif // FOR_KOREA
-};
-#endif // ADD_EVENT_CHERRYBLOSSOM_20080312
-
-#ifdef UPDATE_LUCKY_COIN_EVENT_20081029 // 행운의 동전 겹치기 최대 개수
-#define MAX_OVERLAP_LUCKY_COIN 255
-#endif // UPDATE_LUCKY_COIN_EVENT_20081029
-
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 뷰포트 관련 정보
-//
-//////////////////////////////////////////////////////////////////////////
-// 자신이 죽을때 이중에서 아이템을 떨어트리게 된다.
-#define Max3(v1, v2, v3) (max((max(v1, v2)),v3))
-
-//----------------------------------------------------------------------------
-// 유저의 뷰포트 안에 있는 다른 유저들 상태 정보
-#define STVP_NONE 0 // 등록이 안되어있다.
-#define STVP_CREATE 1 // Create 되어야 한다.
-#define STVP_PLAYING 2 // 활동 중이다.
-#define STVP_DESTROY 3 // Destroy 되어야 한다.
-
-typedef struct
-{
- char state; // 뷰포트에서의 상태
- short number; // 뷰포트에 등록된 오브젝트의 절대 번호
- BYTE type; // 등록된 오브젝트의 형태 (STVP_??????) 참고
- short index; // 등록된 오브젝트의 몇번째 등록이 되었는지..
- int dis; // 거리.
-} VIEWPORT_PLAYER_STRUCT;
-
-
-// 내 화면에 보여지는 사용자 리스트
-typedef struct
-{
- char state; // 뷰포트에서의 상태
- short number; // 뷰포트에 등록된 오브젝트의 절대 번호
- BYTE type; // 등록된 오브젝트의 형태 (STVP_??????) 참고
- short index; // 등록된 오브젝트의 몇번째 등록이 되었는지..
- int dis; // 거리.
- // short HitDamage; // 타격 데미지 (누구한테 얼만큼 맞았다)
-} VIEWPORT_STRUCT;
-
-
-#ifdef PERSONAL_SHOP_20040113
-// 내 화면에 보여지는 개인상점 리스트 (사람)
-typedef struct
-{
- bool bUsing; // 0:사용않함 / 1:사용함
- short iIndex; // 사용자객체 배열의 인덱스
-} PSHOP_VIEWPORT_STRUCT;
-#endif
-
-
-#define MAX_HITDAMAGE 40
-
-typedef struct
-{
- short number; // 타격을 가한 유저 번호
- int HitDamage; // 타격 데미지 (누구한테 얼만큼 맞았다)
- DWORD LastHitTime; // 마지막 타격 시간..
-
-} HITDAMAGE_STRUCT; // 몬스터 타격 데미지에 사용하기 위해
-
- //////////////////////////////////////////////////////////////////////////
- //
- // UI Type
- //
- //////////////////////////////////////////////////////////////////////////
-#define I_TRADE 1 // 교환 진행중
-#define I_PARTY 2 // 파티 진행중
-#define I_SHOP 3
-#define I_GUILD 4 // 길드 가입 인터페이스
-#define I_GUILDCREATE 5 // 길드 생성 인터페이스
-#define I_WAREHOUSE 6 // 창고
-#define I_CHAOSBOX 7 // 카오스 박스
-#define I_INVENTORY 8 // 인벤토리내
-#define I_EVENTCHIP 9 // 이벤트칩
-#define I_QUEST 10 // 퀘스트
-#define I_SERVERDIVISION 11 // 서버분할
-#define I_ETCWINDOW 12 // 서버분할
-#define I_DARK_TRAINER 13 // 다크호스 트레이너
-
-#ifdef PERSONAL_SHOP_20040113 // 개인상점 인터페이스 코드 (I_SHOP과 같이 쓰고 싶었으나 종료시 초기화할 부분이 다른 관계로 따로 씀)
-#define I_PSHOP_OPEN 12 // 개인상점 - 개설한 쪽 만 사용 (방문한 쪽은 I_SHOP)
-#endif
-
-#ifdef ADD_NEW_UNION_01_20041006
-#define I_UNION 14 // 연합, 라이벌 관련 인터페이스.
-#endif
-
-#ifdef ADD_NEW_WEAPON_FOR_CASTLE_01_20041116
-#define I_CS_MACHINE_ATTACK 15 // 공성 무기
-#define I_CS_MACHINE_DEFENSE 16 // 수성 무기
-#endif
-
-#ifdef ADD_CASTLE_HUNTZONE_NPC_01_20050111
-#define I_CS_HUNTZONE_GUARD 17 // 사냥터 문지기
-#endif
-
-#ifdef PCBANG_POINT_SYSTEM_20070206 // 상점 인덱스
-#define I_PCBANG_POINT_SHOP 18 // PC방 포인트 상점
-#endif
-
-#ifdef ADD_PARTIALY_CHARGE_CASH_SHOP_20070117
-#ifdef ADD_PARTIALY_CHARGE_ON
-#define I_CASHSHOP_INTERFACE 19
-#else
-#define I_CASHSHOP_INTERFACE 18
-#endif // ADD_PARTIALY_CHARGE_ON
-#endif // ADD_PARTIALY_CHARGE_CASH_SHOP_20070117
-
-#ifdef MODIFY_JEWELMIXSYSTEM_BUGFIX_20081020
-enum _eInterfaceState
-{
- I_JEWEL = 20,
-};
-
-#define IS_MIXJEWEL(u, t) (u == 1 && t == I_JEWEL) ? TRUE : FALSE
-
-#endif // MODIFY_JEWELMIXSYSTEM_BUGFIX_20081020
-
-#ifdef PERSONAL_SHOP_20040113
-// 아이템 이동 (0x24) 시 사용되는 위치 매크로
-#define ITEMMOVE_INVENTORY 0 // 이동위치 - 인벤토리
-#define ITEMMOVE_TRADEWND 1 // 이동위치 - 거래창
-#define ITEMMOVE_WAREHOUSE 2 // 이동위치 - 창고
-#define ITEMMOVE_CHAOSBOX 3 // 이동위치 - 카오스상자
-#define ITEMMOVE_PSHOPWND 4 // 이동위치 - 개인상점
-#else
-#define ITEMMOVE_INVENTORY 0 // 이동위치 - 인벤토리
-#define ITEMMOVE_TRADEWND 1 // 이동위치 - 거래창
-#define ITEMMOVE_WAREHOUSE 2 // 이동위치 - 창고
-#define ITEMMOVE_CHAOSBOX 3 // 이동위치 - 카오스상자
-#define ITEMMOVE_PSHOPWND 4 // 이동위치 - 개인상점
-#endif
-
-#ifdef DARKLORD_WORK
-#define ITEMMOVE_DARK_TRAINER 5 // 이동 위치 - 다크로드(조련사)
-#endif
-
-#ifdef ADD_JEWEL_OF_HARMONY_SYSTEM_20060530
-#define ITEMMOVE_JEWELOFHARMONY_PURITY 6 // 이동 위치 - 조화의보석 정제 ( NPC )
-#define ITEMMOVE_JEWELOFHARMONY_SMELT 7 // 이동 위치 - 제련석 ( NPC )
-#define ITEMMOVE_JEWELOFHARMONY_RESTORE 8 // 이동 위치 - 환원 ( NPC )
-#endif // ADD_JEWEL_OF_HARMONY_SYSTEM_20060530
-
-#ifdef ADD_PCS_LOTTERY_SYSTEM_20070117
-#define ITEMMOVE_LOTTERY_MIX 9
-#endif // ADD_PCS_LOTTERY_SYSTEM_20070117
-
-#ifdef ADD_EVENT_CHERRYBLOSSOM_20080312
-#define ITEMMOVE_CHERRYBLOSSOM 10
-#endif // ADD_EVENT_CHERRYBLOSSOM_20080312
-
-#ifdef ADD_ITEM_SOCKET_OPTION_MIX_20080415
-#define ITEMMOVE_SOCKET_ITEM_EXTRACT 11
-#define ITEMMOVE_SOCKET_ITEM_COMPOSIT 12
-#define ITEMMOVE_SOCKET_ITEM_EQUIP 13
-#define ITEMMOVE_SOCKET_ITEM_REMOVE 14
-#endif // ADD_ITEM_SOCKET_OPTION_MIX_20080415
-
-#ifdef CASTLE_SPECIAL_ITEMMIX_20050425
-#define CASTLE_ITEM_MIX_MAXCOUNT 1 // 성주 조합 시 아이템 최대 조합가능 횟수
-#endif
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 맵 관련 정보
-//
-//////////////////////////////////////////////////////////////////////////
-#define MAX_MAPITEM 300
-
-#ifdef ADD_NEWPVP_PKFIELD
-#define MAX_MAP 116//65 // 크리스마스 맵
-#else
-
-#ifdef UPDATE_XMASEVENT_MAP_20080930
-#define MAX_MAP 63 // 크리스마스 맵
-#else
-
-#ifdef ADD_RAKLION_20080408
-#define MAX_MAP 59 // 빙하호수 맵
-#else
-#ifdef UPDATE_NEWMAP_SWAMP_OF_CALMNESS_20080108
-#define MAX_MAP 57 // 마스터레벨 전용 평온의늪
-#else
-#ifdef ADD_CHAOSCASTLE_FOR_MASTER_LEVEL_20071010
-#define MAX_MAP 54 // 마스터레벨 전용등급 카오스캐슬
-#else
-#ifdef ADD_BLOODCASTLE_FOR_MASTER_LEVEL_20071010
-#define MAX_MAP 53 // 마스터레벨 전용등급 블러드캐슬
-#else
-#ifdef ADD_SEASON_3_NEW_MAP_20070910
-#define MAX_MAP 52 // 시즌 3 신규 맵
-#else
-#ifdef ADD_EVENT_MAP_ILLUSION_TEMPLE_20070328
-#define MAX_MAP 51 // 신규 이벤트 맵
-#else
-#ifdef UPDATE_BEFORE_ILLUSION_TEMPLE_MAX_MAP_20070702
-#define MAX_MAP 43 // 신규 이벤트 맵이전 최대 맵 수 재 설정
-#else
-#ifdef UPDATE_GM_FUNCTION_20070228
-#define MAX_MAP 41 // GM 소환 지역 추가
-#else
-#ifdef ADD_NEW_MAP_KANTURU_BOSS_20060627
-#define MAX_MAP 40 // 칸투르 보스맵 추가
-#else
-#ifdef ADD_NEW_MAP_KANTURU_COMMON_20060523
-#define MAX_MAP 39 // 칸투르 일반 맵 추가 (2)
-#else
-#ifdef HIDDEN_KALIMA_20050706
-#define MAX_MAP 37 // 히든 칼리마 추가
-#else
-#ifdef ADD_NEW_MAP_CRYWOLF_SECONDZONE_20050414
-#define MAX_MAP 36 // 크라이울프 2차맵이 추가 되었다.
-#else
-#ifdef ADD_NEW_MAP_CRYWOLF_FIRSTZONE_20050414
-#define MAX_MAP 35 // 크라이울프 1차맵이 추가 되었다.
-#else
-#ifdef ADD_NEW_MAP_AIDA_20050617
-#define MAX_MAP 34 // 아이다 맵이 추가 되었다.
-#else
-#ifdef DEVILSQUARE_EXTEND_20050221 // 데빌스퀘어 맵추가
-#define MAX_MAP 33 // 데빌스퀘어 맵이 확장 되었다.
-#else
-#ifdef ADD_NEW_MAP_CASTLE_HUNTZONE_20041115
-#define MAX_MAP 32 // 성 사냥터 맵이 추가 되었다.
-#else
-#ifdef ADD_NEW_MAP_CASTLE_20041115
-#define MAX_MAP 31 // 성 맵이 추가되었다.
-#else
-#ifdef ADD_NEW_MAP_KALIMA_20040518
-#define MAX_MAP 30 // 신규맵 칼리마가 추가되었다.
-#else
-#ifdef CHAOSCASTLE_SYSTEM_20040408
-#define MAX_MAP 24 // 카오스 캐슬이 추가되었다.
-#else
-#ifdef BLOODCASTLE_EXTEND_20040314 // 블러드캐슬 확장으로 인해 맵이 추가되었다.
-#define MAX_MAP 18
-#else
-#ifdef FOR_BLOODCASTLE
-#define MAX_MAP 17
-#else
-#ifdef NEW_SKILL_FORSKYLAND
-#define MAX_MAP 11
-#else
-#define MAX_MAP 10
-#endif
-#endif // FOR_BLOODCASTLE
-#endif // BLOODCASTLE_EXTEND_20040314
-#endif // CHAOSCASTLE_SYSTEM_20040408
-#endif // ADD_NEW_MAP_KALIMA_20040518
-#endif // ADD_NEW_MAP_CASTLE_20041115
-#endif // ADD_NEW_MAP_CASTLE_HUNTZONE_20041115
-#endif // DEVILSQUARE_EXTEND_20050221
-#endif // ADD_NEW_MAP_AIDA_20050617
-#endif // ADD_NEW_MAP_CRYWOLF_FIRSTZONE_20050414
-#endif // ADD_NEW_MAP_CRYWOLF_SECONDZONE_20050414
-#endif // HIDDEN_KALIMA_20050706
-#endif // ADD_NEW_MAP_KANTURU_COMMON_20060523
-#endif // ADD_NEW_MAP_KANTURU_BOSS_20060627
-#endif // UPDATE_GM_FUNCTION_20070228
-#endif // UPDATE_BEFORE_ILLUSION_TEMPLE_MAX_MAP_20070702
-#endif // ADD_EVENT_MAP_ILLUSION_TEMPLE_20070328
-#endif // ADD_SEASON_3_NEW_MAP_20070910
-#endif // ADD_BLOODCASTLE_FOR_MASTER_LEVEL_20071010
-#endif // ADD_CHAOSCASTLE_FOR_MASTER_LEVEL_20071010
-#endif // UPDATE_NEWMAP_SWAMP_OF_CALMNESS_20080108
-#endif // ADD_RAKLION_20080408
-
-#endif // UPDATE_XMASEVENT_MAP_20080930
-#endif // ADD_NEWPVP_PKFIELD
-
-enum MAP_INDEX
-{
- MAP_INDEX_RORENCIA = 0,
- MAP_INDEX_DUNGEON = 1,
- MAP_INDEX_DEVIAS = 2,
- MAP_INDEX_NORIA = 3,
- MAP_INDEX_LOSTTOWER = 4,
- MAP_INDEX_RESERVED = 5,
- MAP_INDEX_BATTLESOCCER = 6,
- MAP_INDEX_ATHLANSE = 7,
- MAP_INDEX_TARKAN = 8,
- MAP_INDEX_DEVILSQUARE = 9,
- MAP_INDEX_ICARUS = 10,
-
- // 블러드 캐슬
- MAP_INDEX_BLOODCASTLE1 = 11,
- MAP_INDEX_BLOODCASTLE2 = 12,
- MAP_INDEX_BLOODCASTLE3 = 13,
- MAP_INDEX_BLOODCASTLE4 = 14,
- MAP_INDEX_BLOODCASTLE5 = 15,
- MAP_INDEX_BLOODCASTLE6 = 16,
-#ifdef BLOODCASTLE_EXTEND_20040314
- MAP_INDEX_BLOODCASTLE7 = 17,
-#endif
-
-
-#ifdef CHAOSCASTLE_SYSTEM_20040408 // 카오스 캐슬 맵 인덱스
- MAP_INDEX_CHAOSCASTLE1 = 18,
- MAP_INDEX_CHAOSCASTLE2 = 19,
- MAP_INDEX_CHAOSCASTLE3 = 20,
- MAP_INDEX_CHAOSCASTLE4 = 21,
- MAP_INDEX_CHAOSCASTLE5 = 22,
- MAP_INDEX_CHAOSCASTLE6 = 23,
-#endif
-
-#ifdef ADD_NEW_MAP_KALIMA_20040518 // 칼리마 맵 인덱스
- MAP_INDEX_KALIMA1 = 24,
- MAP_INDEX_KALIMA2 = 25,
- MAP_INDEX_KALIMA3 = 26,
- MAP_INDEX_KALIMA4 = 27,
- MAP_INDEX_KALIMA5 = 28,
- MAP_INDEX_KALIMA6 = 29,
-#endif
-
-#ifdef CASTLE_SIEGE_COMMON_PATCH_20041018 // 성 맵 인덱스
- MAP_INDEX_CASTLESIEGE = 30,
-#endif
-
-#ifdef ADD_NEW_MAP_CASTLE_HUNTZONE_20041115 // 성 사냥터
- MAP_INDEX_CASTLEHUNTZONE = 31,
-#endif
-
-#ifdef DEVILSQUARE_EXTEND_20050221 // 데빌스퀘어 확장
- MAP_INDEX_DEVILSQUARE2 = 32,
-#endif
-#ifdef ADD_NEW_MAP_AIDA_20050617
- MAP_INDEX_AIDA = 33, // 아이다 맵
-#endif
-#ifdef ADD_NEW_MAP_CRYWOLF_FIRSTZONE_20050414
- MAP_INDEX_CRYWOLF_FIRSTZONE = 34, // 크라이울프 1차맵
-#endif
-
-#ifdef ADD_NEW_MAP_CRYWOLF_SECONDZONE_20050414
- MAP_INDEX_CRYWOLF_SECONDZONE = 35, // 크라이울프 2차맵
-#endif
-
-#ifdef HIDDEN_KALIMA_20050706
- MAP_INDEX_KALIMA7 = 36, // 히든 칼리마
-#endif
-
-#ifdef ADD_NEW_MAP_KANTURU_COMMON_20060523
- MAP_INDEX_KANTURU1 = 37, // 칸투르 1차맵
- MAP_INDEX_KANTURU2 = 38, // 칸투르 2차맵
-#endif
-
-#ifdef ADD_NEW_MAP_KANTURU_BOSS_20060627
- MAP_INDEX_KANTURU_BOSS = 39, // 칸투르 보스맵
-#endif
-
-#ifdef UPDATE_GM_FUNCTION_20070228
- MAP_INDEX_GM_MAP = 40, // GM 소환 지역
-#endif
-
-#ifdef THIRD_CHANGEUP_SYSTEM_20070507 // 3차 전직 맵 인덱스 추가
- MAP_INDEX_3RD_CHANGEUP_QUEST = 41, // 3차 전직 퀘스트 맵
- MAP_INDEX_3RD_CHANGEUP_BOSS_QUEST = 42, // 3차 전직 퀘스트 보스맵
-#endif
-
-#ifdef ADD_SEASON_3_NEW_MAP_20070910
- MAP_INDEX_ILLUSION_TEMPLE1 = 45, // 제 1 환영 사원 맵번호
- MAP_INDEX_ILLUSION_TEMPLE2 = 46, // 제 2 환영 사원 맵번호
- MAP_INDEX_ILLUSION_TEMPLE3 = 47, // 제 3 환영 사원 맵번호
- MAP_INDEX_ILLUSION_TEMPLE4 = 48, // 제 4 환영 사원 맵번호
- MAP_INDEX_ILLUSION_TEMPLE5 = 49, // 제 5 환영 사원 맵번호
- MAP_INDEX_ILLUSION_TEMPLE6 = 50, // 제 6 환영 사원 맵번호
-
- MAP_INDEX_ELBELAND = 51, // 신규캐릭터맵 '엘베란드'
-#endif
-
-#ifdef ADD_BLOODCASTLE_FOR_MASTER_LEVEL_20071010
- MAP_INDEX_BLOODCASTLE8 = 52, // 블러드캐슬8
-#endif
-#ifdef ADD_CHAOSCASTLE_FOR_MASTER_LEVEL_20071010
- MAP_INDEX_CHAOSCASTLE7 = 53, // 카오스캐슬7
-#endif
-#ifdef UPDATE_NEWMAP_SWAMP_OF_CALMNESS_20080108
- MAP_INDEX_SWAMP_OF_CALMNESS = 56, // 평온의늪
-#endif
-#ifdef ADD_RAKLION_20080408
- MAP_INDEX_RAKLION_FIELD = 57, // 빙하 호수 필드
- MAP_INDEX_RAKLION_BOSS = 58, // 빙하 호수 보스 존
-#endif // ADD_RAKLION_20080408
-#ifdef UPDATE_XMASEVENT_MAP_20080930
- MAP_INDEX_XMASEVENT = 62, //크리스마스 이벤트 맵
-#endif // UPDATE_XMASEVENT_MAP_20080930
-#ifdef ADD_NEWPVP_PKFIELD
- MAP_INDEX_VULCANUS = 63, // 불카누스폐허
- MAP_INDEX_PKFIELD = 64, // PK 필드
-#endif // ADD_NEWPVP_PKFIELD
-};
-
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 국가별 패킷
-//
-//////////////////////////////////////////////////////////////////////////
-
-// 0xDx 번대로 가자!!!!! ~_~
-#ifdef PACKET_CHANGE
-#if GAME_VERSION == G_V_99B
-#define CHINESE_PACKET
-#define PACKET_CHANGE_CHINA_V3
-#elif GAME_VERSION == G_V_S2_2
-#define JAPAN_PACKET
-#elif defined(JAPAN_S4_6)
-#define JAPAN_PACKET
-#elif GAME_VERSION == G_V_S4_6 || GAME_VERSION == G_V_S1_512
-#define KOREAN_PACKET
-#endif
-
-#ifdef KOREAN_PACKET
-#define PACKET_MOVE 0xD3
-#define PACKET_POSITION 0xDF
-#define PACKET_MAGIC_ATTACK 0x10
-#define PACKET_ATTACK 0xD7
-#endif
-
-#ifdef JAPAN_PACKET
-#define PACKET_MOVE 0X1D
-#define PACKET_POSITION 0XD6
-#define PACKET_MAGIC_ATTACK 0XD7
-#define PACKET_ATTACK 0XDC
-#endif
-
-#ifdef CHINESE_PACKET
-#ifdef PACKET_CHANGE_CHINA_V3
-#define PACKET_MOVE 0XD7
-#ifdef MODIFY_PACKET_POSITION_PROTOCOL_CODE_20071126
-#define PACKET_POSITION 0XD2
-#else
-#define PACKET_POSITION 0XD0
-#endif // MODIFY_PACKET_POSITION_PROTOCOL_CODE_20071126
-#define PACKET_MAGIC_ATTACK 0X1D
-#define PACKET_ATTACK 0XD9
-#else
-#define PACKET_MOVE 0XDD
-#define PACKET_POSITION 0XD3
-#define PACKET_MAGIC_ATTACK 0XD9
-#define PACKET_ATTACK 0XDE
-#endif
-#endif
-
-
-#ifdef TAIWAN_PACKET
-#define PACKET_MOVE 0XD6
-#define PACKET_POSITION 0XDF
-#ifdef MODIFY_PACKET_POSITION_PROTOCOL_CODE_20071126
-#define PACKET_MAGIC_ATTACK 0XD2
-#else
-#define PACKET_MAGIC_ATTACK 0XD0
-#endif // MODIFY_PACKET_POSITION_PROTOCOL_CODE_20071126
-#define PACKET_ATTACK 0XDD
-#endif
-
-#ifdef THAILAND_PACKET
-#define PACKET_MOVE 0X11
-#define PACKET_POSITION 0XD4
-#define PACKET_MAGIC_ATTACK 0XD9
-#define PACKET_ATTACK 0XD6
-#endif
-
-#ifdef GLOBAL_PACKET
-#define PACKET_MOVE 0XD4
-#define PACKET_POSITION 0X15
-#define PACKET_MAGIC_ATTACK 0XDB
-#define PACKET_ATTACK 0X11
-#endif
-
-#ifdef FOR_PHILIPPINE
-#define PACKET_MOVE 0XDD
-#define PACKET_POSITION 0XDF
-#define PACKET_MAGIC_ATTACK 0X11
-#define PACKET_ATTACK 0XD6
-#endif
-
-#ifdef FOR_VIETNAM // 베트남
-#define PACKET_MOVE 0xD9
-#define PACKET_POSITION 0xDC
-#define PACKET_MAGIC_ATTACK 0x1D
-#define PACKET_ATTACK 0x15
-#endif
-
-#ifdef FOR_USA
-#define PACKET_MOVE 0XD4
-#define PACKET_POSITION 0X15
-#define PACKET_MAGIC_ATTACK 0XDB
-#define PACKET_ATTACK 0X11
-#endif
-
-#else
-#define PACKET_MOVE 0x10
-#define PACKET_POSITION 0x11
-#define PACKET_MAGIC_ATTACK 0x1D
-#define PACKET_ATTACK 0x15
-#endif
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 보안
-//
-//////////////////////////////////////////////////////////////////////////
-#define AUTH_CHECK_00 ((char)0x29)
-#define AUTH_CHECK_01 ((char)0x23)
-#define AUTH_CHECK_02 ((char)0xBE)
-#define AUTH_CHECK_03 ((char)0x84)
-#define AUTH_CHECK_04 ((char)0xE1)
-#define AUTH_CHECK_05 ((char)0x6C)
-#define AUTH_CHECK_06 ((char)0xD6)
-#define AUTH_CHECK_07 ((char)0xAE)
-#define AUTH_CHECK_08 ((char)0x52)
-#define AUTH_CHECK_09 ((char)0x90)
-#define AUTH_CHECK_10 ((char)0x49)
-#define AUTH_CHECK_11 ((char)0xF1)
-#define AUTH_CHECK_12 ((char)0xF1)
-#define AUTH_CHECK_13 ((char)0xBB)
-#define AUTH_CHECK_14 ((char)0xE9)
-#define AUTH_CHECK_15 ((char)0xEB)
-#define AUTH_CHECK_16 ((char)0xB3)
-#define AUTH_CHECK_17 ((char)0xA6)
-#define AUTH_CHECK_18 ((char)0xDB)
-#define AUTH_CHECK_19 ((char)0x00)
-
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 조합 정보
-//
-//////////////////////////////////////////////////////////////////////////
-enum CHAOS_TYPE
-{
- CHAOS_TYPE_DEFAULT = 1,
- CHAOS_TYPE_DEVILSQUARE = 2,
- CHAOS_TYPE_UPGRADE_10 = 3,
- CHAOS_TYPE_UPGRADE_11 = 4,
-#ifdef ITEM_12_13_20040401
- CHAOS_TYPE_UPGRADE_12 = 22,
- CHAOS_TYPE_UPGRADE_13 = 23,
-#endif
- CHAOS_TYPE_DINORANT = 5,
- CHAOS_TYPE_FRUIT = 6,
- CHAOS_TYPE_SECOND_WING = 7,
- CHAOS_TYPE_BLOODCATLE = 8,
- CHAOS_TYPE_FIRST_WING = 11,
-#ifdef ITEM_12_13_20040401
- CHAOS_TYPE_SETITEM = 12,
-#endif
-#ifdef DARKLORD_WORK
- CHAOS_TYPE_DARKHORSE = 13,
- CHAOS_TYPE_DARKSPIRIT = 14,
- CHAOS_TYPE_CLOAK = 24,
-#endif
-
-#ifdef ADD_NEW_ITEM_FOR_CASTLE_01_20041116
- CHAOS_TYPE_BLESS_POTION = 15,
- CHAOS_TYPE_SOUL_POTION = 16,
- CHAOS_TYPE_LIFE_STONE = 17,
-#endif
-
-#ifdef CASTLE_SPECIAL_ITEMMIX_20050425
- CHAOS_TYPE_CASTLE_ITEM = 18, // 성주 혜택으로 특별하게 조합 가능한 아이템
-#endif
-
-#ifdef HIDDEN_TREASUREBOX_EVENT_20050804 // 숨겨진 보물상자 이벤트 - 수정조합
- CHAOS_TYPE_HT_BOX = 20,
-#endif
-
-#ifdef ADD_ITEM_FENRIR_01_20051110
- CHAOS_TYPE_FENRIR_01 = 25, // 펜릴 조합 1단계 - 뿔피리 조각
- CHAOS_TYPE_FENRIR_02 = 26, // 펜릴 조합 2단계 - 부러진 뿔피리
- CHAOS_TYPE_FENRIR_03 = 27, // 펜릴 조합 3단계 - 펜릴의 뿔피리
- CHAOS_TYPE_FENRIR_04 = 28, // 펜릴 조합 4단계 - 펜릴의 뿔피리 업그레이드
-#endif
-
-#ifdef ADD_SHIELD_POINT_01_20060403
- CHAOS_TYPE_COMPOUNDPOTION_LV1 = 30,
- CHAOS_TYPE_COMPOUNTPOTION_LV2 = 31,
- CHAOS_TYPE_COMPOUNTPOTION_LV3 = 32,
-#endif
-
-#ifdef ADD_JEWEL_OF_HARMONY_SYSTEM_20060530
- CHAOS_TYPE_JEWELOFHARMONY_PURITY = 33, // 조화의보석 원석 정제
- CHAOS_TYPE_JEWELOFHARMONY_MIX_SMELTINGITEM = 34, // 제련석 조합
- CHAOS_TYPE_JEWELOFHARMONY_RESTORE_ITEM = 35, // 강화아이템 환원
-#endif // ADD_JEWEL_OF_HARMONY_SYSTEM_20060530
-
-#ifdef ADD_380ITEM_NEWOPTION_20060711
- CHAOS_TYPE_380_OPTIONITEM = 36, // 380 아이템 조합
-#endif // ADD_380ITEM_NEWOPTION_20060711
-
-#ifdef ADD_EVENT_MAP_ILLUSION_TEMPLE_20070328 // 피의 두루마리 아이템 조합 타입
- CHAOS_TYPE_ILLUSION_TEMPLE_ITEM = 37, // 피의 두루마리 아이템 조합
-#endif
-
-#ifdef ADD_THIRD_WING_20070525 // 날개 조합 번호
- CHAOS_TYPE_THIRD_WING_1 = 38, // 3차 날개 조합 - 1차
- CHAOS_TYPE_THIRD_WING_2 = 39, // 3차 날개 조합 - 2차
-#endif
-
-#ifdef ADD_PCS_LOTTERY_SYSTEM_20070117
- CHAOS_TYPE_LOTTERY_MIX = 40,
- /*
- ADD_PCS_LOTTERY_SYSTEM_20070117 빌드로 임시로 처리
- #ifdef ADD_PARTIALY_CHARGE_ON
- CHAOS_TYPE_LOTTERY_MIX = 40,
- #else
- CHAOS_TYPE_LOTTERY_MIX = 37,
- #endif // ADD_PARTIALY_CHARGE_ON
- */
-#endif // ADD_PCS_LOTTERY_SYSTEM_20070117
-
-#ifdef ADD_EVENT_CHERRYBLOSSOM_20080312
- CHAOS_TYPE_CHERRY_MIX = 41,
-#endif // ADD_EVENT_CHERRY_20080312
-
-#ifdef ADD_ITEM_SOCKET_OPTION_MIX_20080415
- CHAOS_TYPE_SEED_EXTRACT = 42,
- CHAOS_TYPE_SEED_COMPOSIT = 43,
- CHAOS_TYPE_SEED_EQUIP = 44,
- CHAOS_TYPE_SEED_REMOVE = 45,
-#endif // ADD_ITEM_SOCKET_OPTION_MIX_20080415
-};
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 옵션 정보
-//
-//////////////////////////////////////////////////////////////////////////
-#ifdef EVENT_OPTION_RELOAD_20040305 // 뮤의 이벤트 옵션만 다시 읽기 위함
-
-enum MU_EVENT_TYPE {
- MU_EVENT_ALL = 0, // 모든 이벤트의 옵션을 읽음
-
- MU_EVENT_DEVILSQUARE = 1, // 데빌스퀘어
- MU_EVENT_BLOODCASTLE = 2, // 블러드캐슬
-
- MU_EVENT_ATTACKEVENTTROOP = 3, // 지하 군단
- MU_EVENT_GOLDENTROOP = 4, // 황금 군단
- MU_EVENT_WHITEMAGETROOP = 5, // 백색마법사 군단
-
- MU_EVENT_LOVEPANGPANG = 6, // 러브팡팡 이벤트 (몬스터에게서 하루 일정개수의 사랑의하트 (14,12) 드롭됨, 수호길드 이벤트)
- MU_EVENT_FIRECRACKER = 7, // 폭죽 이벤트 (몬스터 죽일 때 폭죽 (14,11) 드롭됨 -> 한국은 아틀라스 이하등 특정지역만)
- MU_EVENT_MEDALION = 8, // 메달 이벤트 (뮤월드 각 지역에 따라 은메달, 금메달 등이 나온다.)
- MU_EVENT_XMASSTAR = 9, // 성탄의별 이벤트 (몬스터에게서 성탄의별이 드롭됨)
- MU_EVENT_HEARTOFLOVE = 10, // 사랑의하트 이벤트 (몬스터에게서 사랑의하트가 드롭됨)
-
- MU_EVENT_SAY_HAPPYNEWYEAR = 11, // NPC가 새해인사를 한다.
- MU_EVENT_SAY_MERRYXMAS = 12, // NPC가 메리 크리스마스라고 말한다.
-
-#ifdef CHAOSCASTLE_SYSTEM_20040408
- MU_EVENT_CHAOSCASTLE = 13, // 카오스캐슬
-#endif
-
-#ifdef CHRISTMAS_RIBBONBOX_EVENT_20051212
- MU_EVENT_CHRISTMAS_RIBBONBOX = 14, // 크리스마스 리본상자 이벤트( 몬스터에게서 빨강,초록,파랑 리본상자가 드롭됨 )
-#endif
-
-#ifdef VALENTINES_DAY_BOX_EVENT_20060124
- MU_EVENT_VALENTINESDAY_CHOCOLATEBOX = 15, // 발렌타인데이 초콜릿상자 이벤트( 몬스터에게서 분송,빨강,파랑 초콜릿상자가 드롭됨 )
-#endif
-
-#ifdef WHITEDAY_CANDY_BOX_EVENT_20060222
- MU_EVENT_WHITEDAY_CANDYBOX = 16, // 화이트데이 사탕상자 이벤트( 몬스터에게서 연보라,주황,감청 사탕상자가 드롭됨 )
-#endif
-
-};
-
-#endif
-
-
-#ifdef ETC_OPTION_RELOAD_20040308 // 뮤의 옵션 중 이벤트 외의 것들만 리로드
-
-enum MU_ETC_TYPE
-{
- MU_ETC_ALL = 0, // 모든 게임외의 옵션 리로드
- MU_ETC_CREATECHARACTER = 1, // 케릭터 생성
- MU_ETC_GUILD = 2, // 길드 생성
- MU_ETC_TRADE = 3, // 거래
- MU_ETC_USECHAOSBOX = 4, // 카오스박스 사용
- MU_ETC_PERSONALSHOP = 5, // 개인상점
- MU_ETC_PKITEMDROP = 6, // PK시 아이템 드롭여부
- MU_ETC_ITEMDROPRATE = 7, // 아이템 드롭확률
- MU_ETC_SPEEDHACK = 8, // 스피드핵
- MU_ETC_GAMEGUARD = 9, // 게임가드 체크섬 체크여부
-};
-
-#endif
-
-
-enum DATA_FILE_INDEX // !!! . 이 번호가 WzVersionManager 에서 GetPrivateProfileString() 으로 읽은 뒤 연결해주는 파일 ID번호와 같아야 함
-{
- FILE_ITEM = 0, // Item(kor).txt
- FILE_ITEMLOCAL = 1, // 국가별 Item.txt
- FILE_SKILL = 2, // Skill(kor).txt
- FILE_SKILLLOCAL = 3, // 국가별 skill.txt
- FILE_QUEST = 4, // Quest(kor).txt
- FILE_QUESTLOCAL = 5, // 국가별 Quest.txt
- FILE_CHECKSUM = 6, // Checksum.dat
- FILE_MONSTER = 7, // Monster.txt
- FILE_GATE = 8, // Gate.txt
- FILE_MONSTERSETBASE = 9, // MonsterSetBase.txt
- FILE_NPGGAUTH = 10, // CSAuth.dat
- FILE_SHOP0 = 11, // Shop0.txt
- FILE_SHOP1 = 12, // Shop1.txt
- FILE_SHOP2 = 13, // Shop2.txt
- FILE_SHOP3 = 14, // Shop3.txt
- FILE_SHOP4 = 15, // Shop4.txt
- FILE_SHOP5 = 16, // Shop5.txt
- FILE_SHOP6 = 17, // Shop6.txt
- FILE_SHOP7 = 18, // Shop7.txt
- FILE_SHOP8 = 19, // Shop8.txt
- FILE_SHOP9 = 20, // Shop9.txt
- FILE_SHOP10 = 21, // Shop10.txt
- FILE_SHOP11 = 22, // Shop11.txt
- FILE_SHOP12 = 23, // Shop12.txt
-
- FILE_MOVEREQ = 24, // movereq(local).txt
- FILE_MOVEREQLOCAL = 25, // 국가별 movereq.txt
- FILE_SETITEMOPTION = 26, // itemsetoption(Kor).txt
- FILE_SETITEMOPTIONLOCAL = 27, // (국가별) itemsetoption.txt
- FILE_SETITEMTYPE = 28, // itemsettype(Kor).txt
- FILE_SETITEMTYPELOCAL = 29, // (국가별) itemsettype.txt
-
- // 앞으로 SHOP이나 다른 데이터르 추가할 때는 기존 요청번호가 밀리지 않도록 뒤로 들어가야 한다.
-#ifdef ADD_FIRECRACKER_NPC_20070306
- FILE_SHOP13 = 30, // Shop13.txt
-#endif
-#ifdef ADD_SHOP_14_20070308
- FILE_SHOP14 = 31, // Shop14.txt
-#endif
-#ifdef ADD_SEASON_3_NEW_MAP_20070910 // 엘베란드 상점목록
- FILE_SHOP15 = 32, // Shop15.txt
- FILE_SHOP16 = 33, // Shop16.txt
- FILE_SHOP17 = 34, // Shop17.txt
-#endif
-#ifdef ADD_GAMBLING_20090120 // 겜블링 상점
- FILE_SHOP18 = 35, // Shop18.txt
-#endif // ADD_GAMBLING_20090120
-};
-
-
-// 메인 이벤트
-#define EVENTMASK_DevilSquareEvent 0x00000001 // 데빌스퀘어
-#define EVENTMASK_BloodCastleEvent 0x00000002 // 블러드캐슬
-
-// 서브 이벤트
-#define EVENTMASK_XMasEvent 0X00000100 // 성탄의별
-#define EVENTMASK_FireCrackerEvent 0X00000200 // 폭죽
-#define EVENTMASK_HeartOfLoveEvent 0X00000400 // 사랑의 하트
-#define EVENTMASK_MedalEvent 0X00000800 // 메달이벤트
-#define EVENTMASK_RingAttackEvent 0X00001000 // 반지이벤트
-#define EVENTMASK_EventChipEvent 0X00002000 // 레나이벤트
-#define EVENTMASK_IsEledoradoEvent 0X00004000 // 황금정예이벤트
-
-// 기타 설정
-#define EVENTMASK_UseNPGGChecksum 0X00010000 // 게임가드 사용
-
-
-
-///////////////////////////////////////////////////////////////////
-//
-// 연합 시스템 (apple)
-//
-///////////////////////////////////////////////////////////////////////
-#ifdef ADD_NEW_GUILD_01_20040913
-
-#define MIN_UNION_MASTER_GUILD_MEMBERCOUNT 20
-#define MAX_RELATIONSHIP_COUNT 100
-#define INVALID_USER_INDEX -1
-
-#ifdef MODIFY_MAX_UNION_MEMBER_01_20050418
-
-#ifdef FOR_KOREA
-#define MAX_UNION_MEMBER_COUNT 3
-#define MAX_TESTSERVER_UNION_MEMBER_COUNT 3
-#else
-#define MAX_UNION_MEMBER_COUNT 5
-#define MAX_TESTSERVER_UNION_MEMBER_COUNT 5
-#endif
-
-#else
-
-#define MAX_UNION_MEMBER_COUNT 7
-#define MAX_TESTSERVER_UNION_MEMBER_COUNT 12
-
-#endif
-
-
-enum GUILD_NOTIFICATION
-{
- G_NOTIFICATION_SET = 0x01,
- G_NOTIFICATION_UNION_BREAKOFF = 0x10
-
-};
-
-enum GUILD_OPERATION_ERRORCODE
-{
- G_ERROR_NONE = 0
-
- // 0x10~ Common Result
-
-};
-
-enum GUILD_RELATION_OPERATION
-{
- G_RELATION_OPERATION_JOIN = 1,
- G_RELATION_OPERATION_BREAKOFF = 2
-};
-
-enum GUILD_RELATIONSHIP
-{
- G_RELATIONSHIP_NONE = 0,
- G_RELATIONSHIP_UNION = 0x01,
- G_RELATIONSHIP_RIVAL = 0x02,
- G_RELATIONSHIP_UNIONMASTER = 0x04,
- G_RELATIONSHIP_RIVALMASTER = 0x08,
-
-};
-
-enum GUILD_TYPE
-{
- G_TYPE_NONE = -1,
- G_TYPE_COMMON = 0,
- G_TYPE_GUARD = 1 // 수호 길드.
- // G_TYPE_MERCENARY = 1,
- // G_TYPE_CLAN = 2
-};
-
-enum GUILD_STATUS
-{
- G_NONE = -1,
- G_PERSON = 0, // 일반
- G_MASTER = 128, // 길드마스터
- G_SUB_MASTER = 64, // 부길드마스터
- G_BATTLE_MASTER = 32 // 배틀마스터
-};
-
-enum GUILD_REQ_COMMON_RESULT
-{
- // 길드가 없음
- GUILD_ANS_NOTEXIST_GUILD = 0x10,
- // 공성전으로 인하여 연합기능이 제한됩니다.
- GUILD_ANS_UNIONFAIL_BY_CASTLE = 0x10,
- // 권한 없음
- GUILD_ANS_NOTEXIST_PERMISSION = 0x11,
-
- // 임명 할 수 있는 계급이 없음
- GUILD_ANS_NOTEXIST_EXTRA_STATUS = 0x12,
- // 임명 할 수 있는 타입이 없음
- GUILD_ANS_NOTEXIST_EXTRA_TYPE = 0x13,
-
- // 관계 유 & 무
- GUILD_ANS_EXIST_RELATIONSHIP_UNION = 0x15,
- GUILD_ANS_EXIST_RELATIONSHIP_RIVAL = 0x16,
-
- // 연합 유 & 무
- GUILD_ANS_EXIST_UNION = 0x17,
- GUILD_ANS_EXIST_RIVAL = 0x18,
- GUILD_ANS_NOTEXIST_UNION = 0x19,
- GUILD_ANS_NOTEXIST_RIVAL = 0x1A,
-
- // 연합 마스터가 아님
- GUIDL_ANS_NOT_UNION_MASTER = 0x1B,
-
- // 적대 길드가 아님
- GUILD_ANS_NOT_GUILD_RIVAL = 0x1C,
-
- // 상대방이 연합 마스터 길드의 조건을 갖추지 못함.
- GUILD_ANS_CANNOT_BE_UNION_MASTER = 0x1D,
-
- // 최대 길드 연합 개수 초과 함
- GUILD_ANS_EXCEED_MAX_UNION_MEMBER = 0x1E,
-
- // 신청이 취소되었습니다.
- GUILD_ANS_CANCLE_REQUEST = 0x20
-
-};
-
-enum EXDB_DATA_TRANSFER_TYPE
-{
- EX_SEND_P2P = 0x01, // 요청 서버에만
- EX_SEND_BROADCASTING = 0x00 // 브로드캐스팅
-};
-
-enum EXDB_RESULT
-{
- EX_RESULT_SUCCESS = 0x01,
- EX_RESULT_FAIL = 0x00,
- EX_RESULT_FAIL_FOR_CASTLE = 0x10, // GUILD_ANS_UNIONFAIL_BY_CASTLE 와 같음.
-};
-#endif // ADD_NEW_GUILD_01_20040913
-
-//////////////////////////////////////////////////////////////////////////
-//
-// 스탯 열매 관련 정보
-//
-//////////////////////////////////////////////////////////////////////////
-#ifdef ADD_MINUS_STAT_SYSTEM_USING_FRUIT_20050712
-
-enum FRUIT_ITEM_TYPE
-{
- FRUIT_ENERGY = 0,
- FRUIT_VITALITY = 1,
- FRUIT_DEXTERITY = 2,
- FRUIT_STRENGTH = 3,
- FRUIT_LEADERSHIP = 4
-};
-
-enum STAT_FRUIT_USING_RESULT
-{
- STAT_PLUS_SUCCESS = 0x00, // 스탯생성 성공
- STAT_PLUS_FAILED = 0x01, // 스탯생성 실패
- STAT_PLUS_PREVENTED = 0x02, // 열매를 Stat Plus에 사용 불가
-
- STAT_MINUS_SUCCESS = 0x03, // 스탯감소 성공
- STAT_MINUS_FAILED = 0x04, // 스탯감소 실패
- STAT_MINUS_PREVENTED = 0x05, // 열매를 Stat Minus에 사용 불가
+#define MAX_EQUIPMENT 12
+#define MAX_INVENTORY 237
+#define INVENTORY_EXT4_SIZE 204
-#ifdef MODIFY_RESET_FRUITS_RESULT_TYPE_20070821
- STAT_MINUS_EX_SUCCESS = 0x06, // 리셋열매 결과 코드 성공
- STAT_MINUS_EX_FAILED = 0x07, // 리셋열매 결과 코드 실패
- STAT_MINUS_EX_PREVENTED = 0x08, // 리셋열매 사용 불가
-#endif // MODIFY_RESET_FRUITS_RESULT_TYPE_20070821
+#define ITEM_BITSHIFT 9
- STAT_FRUIT_USING_PREVENTED_BY_ITEMEQUIPMENT = 0x10, // 아이템을 착용해서 사용불가능
+#define MAX_CLASSTYPE 8
- STAT_PLUS_PREVENTED_BY_MAX = 0x21, // 생성 최대치까지 사용 했음
- STAT_MINUS_PREVENTED_BY_MAX = 0x25, // 감소 최대치까지 사용 했음
- STAT_MINUS_PREVENTED_BY_DEFAULT = 0x26, // 기본값 이하로는 감소 할 수 없음
-};
+#define MAX_DBMAGIC (MAX_MAGIC*3)
+#define MAX_DBQUEST 50
-#endif // ADD_MINUS_STAT_SYSTEM_USING_FRUIT_20050712
+#define MAX_EXTENDINVENTORY 2
+#define MAX_EXTENDWAREHOUSE 1
-#ifdef ADD_MAPMOVE_PROTOCOL_20090327
-enum MAP_MOVE_RESULT
-{
- MAPMOVE_SUCCESS = 0, // 이동 성공
- MAPMOVE_FAILED, // 이동 실패 (이동 불가능한 다른 경우)
- MAPMOVE_FAILED_TELEPORT, // 이동 실패 (텔레포트 중)
- MAPMOVE_FAILED_PSHOP_OPEN, // 이동 실패 (개인상점이 열려있는 경우)
- MAPMOVE_FAILED_RECALLED, // 이동 실패 (소환되는 도중)
- MAPMOVE_FAILED_NOT_ENOUGH_EQUIP, // 이동 실패 (해당 맵으로 이동하기 위한 장비 부족)
- MAPMOVE_FAILED_WEARING_EQUIP, // 이동 실패 (해당 맵에 입장시 장비하지 못하는 장비 착용)
- MAPMOVE_FAILED_MURDERER, // 이동 실패 (살인마 일 경우 맵 이동 불가)
- MAPMOVE_FAILED_NOT_ENOUGH_LEVEL, // 이동 실패 (레벨 부족)
- MAPMOVE_FAILED_NOT_ENOUGH_ZEN, // 이동 실패 (소유 젠 부족)
- MAPMOVE_FAILED_EVENT_END, // 이동 실패 (해당 맵의 이벤트가 이미 종료되었음)
- MAPMOVE_FAILED_HACKTOOL_BLOCK, // 이동 실패 (핵툴 사용자로 맵 이동이 차단되었음)
- MAPMOVE_FAILED_CHECKSUM_ERROR, // 이동 실패 (사용자가 보낸 체크섬 값이 맞지 않는다.)
- MAPMOVE_FORCED_EVENT_END = 20, // 강제 이동 (이벤트 종료에 의한 강제 이동)
- MAPMOVE_FORCED_GM // 강제 이동 (GM에 의한 강제 이동)
-};
+#define MAX_DBEVENTINVENTORY 512
-#endif // ADD_MAPMOVE_PROTOCOL_20090327
+#define MAX_AB_JOINUSERINFO 200
+#define MAX_AB_OBELISK_INFO 5
#endif
diff --git a/DataServer/include/public.h b/DataServer/include/public.h
index 9de566c..31cd1b7 100644
--- a/DataServer/include/public.h
+++ b/DataServer/include/public.h
@@ -1,15 +1,6 @@
-//----------------------------------------------------------------------------
-// 서버와 클라이언트가 공유하는 헤더 정의
-//----------------------------------------------------------------------------
-#ifndef __PUBLIC_H__
+#ifndef __PUBLIC_H__
#define __PUBLIC_H__
-#ifndef GAME_VERSION
-#include "define.h"
-#endif
-
-//----------------------------------------------------------------------------
-// 캐릭터 번호
enum ClassNumber
{
CLASS_WIZARD,
@@ -22,149 +13,22 @@ enum ClassNumber
CLASS_LANCER
};
+#define MAX_MAGIC 150
-//#define MAX_MAGIC 20 // 사용자당 최대 마법 개수
-//#ifdef ADD_NEW_SKILL_FOR_CASTLE_01_20041116// 공성전 패치 때 마법개수 늘림
-#define MAX_MAGIC 150//60 // 사용자당 최대 마법 개수
-//#endif
-
-#define MAX_TOTALMAGIC100 // 마법최대 개수
-
-#define DEF_DARKLORD_LEVEL 1 // 다크로드 캐릭터 생성시 기본 레벨
-//----------------------------------------------------------------------------
-// 저항력 번호
-// -1: 없음, 0: 얼음, 1: 독, 2:번개, 3:불, 4:땅, 5:바람, 6:물
-#define RESISTANCE_COLD0
-#define RESISTANCE_POISON 1
-#define RESISTANCE_THUNDER 2
-#define RESISTANCE_FIRE3
-
-#define RESISTANCE_EARTH 4
-#define RESISTANCE_WIND5
-#define RESISTANCE_WATER 6
-
-//#ifdef ADD_MASTER_LEVEL_SKILL_SYSTEM_ACTIVE_20080107 // MAX_SKILL 수정
-#define MAX_SKILL 600
-//#endif
-
-
-// View 상태
-#define STATE_NONE 0 // 보통.
-#define STATE_POISON0x00000001 // 독 걸린상태.
-#define STATE_FREEZE0x00000002 // 얼음 걸린상태.
-#define STATE_ATTACK0x00000004 // 공격력 증가.
-#define STATE_DEFENSE0x00000008 // 방어력 증가.
-#define STATE_ADD_LIFE0x00000010 // 생명력 증가.
-#define STATE_HARDEN0x00000020 // 석화.
-#define STATE_REDUCE_DEFENSE0x00000040 // 방어감소(마검사) (몬스터 스킬도 같이 사용)
-#define STATE_REDUCE_ATTACKDAMAGE 0x00000080 // 공격감소(법사)
-
-
-#define STATE_REDUCE_MAGICDEFENSE 0x00000100 // 방어력증가(법사)
-#define STATE_REDUCE_MAGICPOWER0x00000200 // 마법 능력 감소 (몬스터 스킬)
-#define STATE_ADD_AG0x00000400 // AG증가 속도 향상
-#define STATE_ADD_CRITICAL_DAMAGE 0x00000800 // 크리티컬 데미지 증가
-
-//#ifdef ADD_AUTHORITY_CODE_OF_EVENT_GM_20050602
-#define STATE_ADD_GM_MARK 0x01000000 // GM 마크 스킨 추가
-//#endif
-
-#define STATE_IMMUNE_TO_MAGIC0x00000080 // 마법방어 무적(몹한테만.) (STATE_REDUCE_ATTACKDAMAGE = 법사, 소울바리어)
-#define STATE_IMMUNE_TO_HARM0x00000008 // 물리방어 무적(몹한테만.) (STATE_DEFENSE = 요정, 방어력향상)
-
-
-//#ifdef ADD_NEW_SKILL_FOR_CASTLE_01_20041116
-#define STATE_BRAND_OF_SKILL0x00000200 // 다크로드가 보장하는 기술 브랜드 ^^
-#define STATE_STUNED0x00001000 // 스턴 걸린 상태.
-#define STATE_ADD_MANA0x00002000 // 마나 증가.
-#define STATE_CLOAKING0x00004000 // 투명 상태.
-#define STATE_BLESS_POTION 0x00008000 // 축복의 물약.
-#define STATE_SOUL_POTION 0x00010000 // 영혼의 물약.
-#define STATE_REMOVAL_MAGIC 0x00100000 // 마법 해제.
-//#endif
-
-//#ifdef ADD_NEW_MONSTER_SYSTEM_01_20050714
-#define STATE_IMMUNE_TO_SKILL0x00200000 // 특정 스킬에 IMMUNE 상태
-//#endif
-
-//#ifdef ADD_SKILL_MUSE_ELF_INFINITYARROW_20060406
-#define STATE_INFINITY_ARROW0x04000000 // 인피니티 애로우(뮤즈엘프) 스킬
-//#endif
-
-//#ifdef CASTLE_NPC_GATE_WORK_20041206
-#define STATE_CASTLE_GATE 0x00020000 // 성문의 여닫힌 상태
-//#endif
-//#ifdef CASTLE_NPC_CROWN_WORK_20041210
-#define STATE_CASTLE_CROWN 0x00020000 // 왕관의 등록 중 상태
-//#endif
-
-//#ifdef MU_CASTLESIEGE_JOINSIDE_VIEWPORT_20041209
-#define STATE_JOIN_SIDE_DEFEND0x00040000 // 공성전 시 공/수 구분
-#define STATE_JOIN_SIDE_ATTACK0x00080000 // 공성전 시 공/수 구분 - 공성 01
-//#endif
-
-//#ifdef MODIFY_CASTLESIEGE_IDENTIFICATION_20051012
-#define STATE_JOIN_SIDE_ATTACK_2 0x00400000 // 공성전 시 공/수 구분 - 공성 02
-#define STATE_JOIN_SIDE_ATTACK_3 0x00800000 // 공성전 시 공/수 구분 - 공성 03
-//#endif
-
-
-//#ifdef ADD_NPC_SHADOW_PHANTOM_20050616
-#define STATE_NPC_HELP 0x02000000 // 쉐도우 팬텀 공격력 향상 & 방어력 향상 스킬 상태
-//#endif
-
-//#ifdef CRYWOLF_NPC_WORK_20050912
-#define STATE_BESERKER 0x00800000 // BERSERKER 상태
-
-#define STATE_CRYWOLF_NPC_HIDE 0x10000000 // 크라이울프 ONLY - NPC HIDE 상태
-
-#define STATE_CRYWOLF_STATUE_SHIELD1 0x00000001 // 늑대의 신상 ONLY - 1단계 방어막 생성 상태
-#define STATE_CRYWOLF_STATUE_SHIELD2 0x00000002 // 늑대의 신상 ONLY - 2단계 방어막 생성 상태
-#define STATE_CRYWOLF_STATUE_SHIELD3 0x00000004 // 늑대의 신상 ONLY - 3단계 방어막 생성 상태
-#define STATE_CRYWOLF_STATUE_SHIELD4 0x00000008 // 늑대의 신상 ONLY - 4단계 방어막 생성 상태
-#define STATE_CRYWOLF_STATUE_SHIELD5 0x00000100 // 늑대의 신상 ONLY - 5단계 방어막 생성 상태
-
-#define STATE_CRYWOLF_ALTAR_ENABLE0x00010000 // 늑대의 제단 ONLY - 계약 가능 상태
-#define STATE_CRYWOLF_ALTAR_DISABLE0x00020000 // 늑대의 제단 ONLY - 계약 불능 상태
-#define STATE_CRYWOLF_ALTAR_CONTRACTED 0x00040000 // 늑대의 제단 ONLY - 계약 되어 있는 상태
-#define STATE_CRYWOLF_ALTAR_ATTEMPT0x00080000 // 늑대의 제단 ONLY - 계약 시도 상태
-#define STATE_CRYWOLF_ALTAR_OCCUFIED 0x00100000 // 늑대의 제단 ONLY - 점령 당한 상태
-//#endif
-
-//#ifdef PCBANG_POINT_SYSTEM_20070206// 인장 버퍼
-#define STATE_SEAL_ITEM 0x08000000 // PC방 포인트 인장 아이템
-//#endif
-
-//#ifdef ADD_PCS_MARK_OF_EXP_20070205
-#define STATE_MARK_USE 0x08000000
-//#endif // ADD_PCS_MARK_OF_EXP_20070205
-
-//#ifdef ADD_EVENT_MAP_ILLUSION_TEMPLE_20070328 // 환영 사원 전용 스킬
-#define STATE_ILLUSION_TEMPLE_PRODECTION0x00040000 // 보호의 주문
-#define STATE_ILLUSION_TEMPLE_RESTRAINT 0x00080000 // 속박의 주문
-//#endif
-
-//#ifdef EXPAND_VIEWSKILLSTATE_WORD_TO_INT_20041122
-#define DEL_VIEWSKILLSTATE( x, y )( x &= ~ y )
-#define ADD_VIEWSKILLSTATE( x, y )( x |= y )
-//#endif
-
-//ifdef CHARACTER_AUTO_RECUPERATION_SYSTEM_20050614
enum CHARACTER_AUTO_RECUPERATION_TIME
{
CART_10_SEC = 1000 * 10,
CART_15_SEC = 1000 * 15,
CART_25_SEC = 1000 * 25,
};
+
enum HP_MP_AG_VALUE_PER_TIME
{
VPT_HP_MP_AG_1_PER_1_SEC = 1,
VPT_HP_MP_AG_5_PER_1_SEC = 5,
VPT_HP_MP_AG_10_PER_1_SEC = 10
};
-//#endif
-//#ifdef DARKLORD_WORK
enum eSkillType
{
AT_SKILL_POISON = 0x1,
@@ -363,46 +227,31 @@ enum eOptionType
AT_SET_IMPROVE_VITALITY = 0xC7,
};
-//#ifdef ADD_JEWEL_OF_HARMONY_SYSTEM_20060530
-enum eJewelOfHarmonyItemOption
+enum GUILD_STATUS
{
- // 공통
- AT_JEWELOFHARMONY_NOT_STRENGTHEN_ITEM = 0, // 효과 없음 : 강화되지 않은 아이템
-
- // 무기류 옵션
- AT_JEWELOFHARMONY_WEAPON_IMPROVE_MINATTACKDAMAGE = 1, // 최소 공격력 상승 (값)
- AT_JEWELOFHARMONY_WEAPON_IMPROVE_MAXATTACKDAMAGE = 2, // 최대 공격력 상승 (값)
- AT_JEWELOFHARMONY_WEAPON_DECREASE_REQUIRE_STR = 3, // 필요 힘 감소 (값)
- AT_JEWELOFHARMONY_WEAPON_DECREASE_REQUIRE_DEX = 4, // 필요 민첩 감소 (값)
- AT_JEWELOFHARMONY_WEAPON_IMPROVE_ATTACKDAMAGE_BOTH = 5, // 공격력 상승 (최소,최대) (값)
- AT_JEWELOFHARMONY_WEAPON_IMPROVE_CRITICALDAMAGE = 6, // 크리티컬 데미지 상승 (값)
- AT_JEWELOFHARMONY_WEAPON_IMPROVE_SKILLDAMAGE = 7, // 스킬 공격력 상승 (값)
- AT_JEWELOFHARMONY_WEAPON_IMPROVE_ATTACKSUCCESRATE_PVP = 8, // 공격 성공율 상승 (PVP) (값)
- AT_JEWELOFHARMONY_WEAPON_DECREASE_SD_RATE = 9, // SD 감소율 상승 (실드 데미지 흡수율 감소. 직접 HP에 주는 데미지가 증가) (값)
- AT_JEWELOFHARMONY_WEAPON_IMPROVE_IGNORE_SD_RATE = 10, // 공격시 SD 무시 확률 상승 : SD를 무시하고 직접 HP에 데미지를 가한다. (값)
-
- // 지팡이류
- AT_JEWELOFHARMONY_STAFF_IMPROVE_MAGICDAMAGE = 1, // 마력 상승(값)
- AT_JEWELOFHARMONY_STAFF_DECREASE_REQUIRE_STR = 2, // 필요 힘 감소 (값)
- AT_JEWELOFHARMONY_STAFF_DECREASE_REQUIRE_DEX = 3, // 필요 민첩 감소 (값)
- AT_JEWELOFHARMONY_STAFF_IMPROVE_SKILLDAMAGE = 4, // 스킬 공격력 상승 (값)
- AT_JEWELOFHARMONY_STAFF_IMPROVE_CRITICALDAMAGE = 5, // 크리티컬 데미지 상승 (값)
- AT_JEWELOFHARMONY_STAFF_DECREASE_SD_RATE = 6, // SD 감소율 상승 (실드 데미지 흡수율 감소. 직접 HP에 주는 데미지가 증가) (값)//#endif
- AT_JEWELOFHARMONY_STAFF_IMPROVE_ATTACKSUCCESRATE_PVP = 7, // 공격 성공율 상승 (PVP) (값)
- AT_JEWELOFHARMONY_STAFF_IMPROVE_IGNORE_SD_RATE = 8, // 공격시 SD 무시 확률 상승 : SD를 무시하고 직접 HP에 데미지를 가한다. (값)
-
- // 방어구류
- AT_JEWELOFHARMONY_DEFENSE_IMPROVE_DEFENSE = 1, // 방어력 상승 (값)
- AT_JEWELOFHARMONY_DEFENSE_IMPROVE_MAX_AG = 2, // 최대 AG 상승 (값)
- AT_JEWELOFHARMONY_DEFENSE_IMPROVE_MAX_HP = 3, // 최대 HP 상승 (값)
- AT_JEWELOFHARMONY_DEFENSE_IMPROVE_AUTO_REFILL_HP = 4, // 생명력 자동 증가량 상승
- AT_JEWELOFHARMONY_DEFENSE_IMPROVE_AUTO_REFILL_MP = 5, // 마나 자동 증가량 상승
- AT_JEWELOFHARMONY_DEFENSE_IMPROVE_BLOCKSUCCESRATE_PVP = 6, // 방어 성공률 상승 (PVP) 값
- AT_JEWELOFHARMONY_DEFENSE_IMPROVE_DAMAGE_DECREASE = 7, // 데미지 감소 % 상승
- AT_JEWELOFHARMONY_DEFENSE_IMPROVE_SD_RATE = 8 // SD 비율 상승 ( PVP시에 SD 비율이 높아짐 )
+ G_NONE = 0xFFFFFFFF,
+ G_PERSON = 0x0,
+ G_MASTER = 0x80,
+ G_SUB_MASTER = 0x40,
+ G_BATTLE_MASTER = 0x20,
};
+enum
+{
+ PRE_LEAGUE = 0x0,
+ SEMI_LEAGUE = 0x1,
+ FINAL_LEAGUE = 0x2,
+ LAST_WINNER = 0x3,
+};
+enum __DSF_TYPE
+{
+ DSF_TYPE_NONE = 0x0,
+ DSF_TYPE_LEAGUE = 0x1,
+ DSF_TYPE_SEMIFINAL = 0x2,
+ DSF_TYPE_FINAL = 0x3,
+ DSF_TYPE_WINNER = 0x4,
+};
#endif
diff --git a/DataServer/protocol.cpp b/DataServer/protocol.cpp
index c5d844b..4e3e777 100644
--- a/DataServer/protocol.cpp
+++ b/DataServer/protocol.cpp
@@ -1,7 +1,6 @@
#include "stdafx.h"
#include "protocol.h"
#include "Include\sprodef.h"
-//#include "Include\ProDef.h"
#include "MainFrm.h"
#include "ServerPrc.h"
#include "common\winutil.h"
@@ -29,23 +28,17 @@ void GDReqQuestMonKillInfoSave(BYTE*lpRecv, int aIndex);
void GetGameServerInfo(LPSDHP_GAMESERVERINFO lpMsg, short aIndex);
void DSSendResultSend(int aIndex, BYTE headcode, BYTE result);
void GDLoadMedalInfo(LPSDHP_LOAD_MEDALINFO lpMsg, int aIndex);
-#ifdef MASTER_LEVEL_UP_SYSTEM_20070912
void GDReqMasterLevelInfo(LPMLP_REQ_MASTERLEVEL_INFO lpMsg, int aIndex);
void GDReqMasterLevelInfoSave(LPMLP_REQ_MASTERLEVEL_INFOSAVE lpMsg, int aIndex);
-#endif
void GDSkillKeyDataRecv(LPSDHP_SKILLKEYDATA lpMsg);
void GDSkillKeyDataSend(char *name, int userindex, int aIndex);
void GDZenSave(LPSDHP_ZENSAVE lpMsg, int aIndex);
void GDItemCreate(SDHP_ITEMCREATE *lpMsg, int aIndex);
void GDPropertyItemCreate(LPSDHP_PROPERTY_ITEMCREATE lpMsg, int aIndex);
-//void GDDeleteTempUserInfo(LPSDHP_DELETE_TEMPUSERINFO lpMsg);
void GDCharacterTransfer(LPSDHP_CHARACTER_TRANSFER lpMsg, int aIndex);
-#ifdef DARKLORD_WORK
void GDPetItemCreate(LPSDHP_PET_ITEMCREATE lpMsg, int aIndex);
void DGGetPetItemInfo(BYTE *lpRecv, int aIndex);
void DGSetPetItemInfo(BYTE *lpRecv, int aIndex);
-#endif
-#ifdef MU_CASTLESIEGE_DS_PROTOCOL_20041105
void DS_GDReqCastleTotalInfo(BYTE *lpRecv, int aIndex);
void DS_GDReqOwnerGuildMaster(BYTE *lpRecv, int aIndex);
void DS_GDReqCastleNpcBuy(BYTE *lpRecv, int aIndex);
@@ -79,38 +72,25 @@ void DS_GDReqCsGuildUnionInfo(BYTE *lpRecv, int aIndex);
void DS_GDReqCsSaveTotalGuildInfo(BYTE *lpRecv, int aIndex);
void DS_GDReqCsLoadTotalGuildInfo(BYTE *lpRecv, int aIndex);
void DS_GDReqCastleNpcUpdate(BYTE *lpRecv, int aIndex);
-#endif
-#ifdef MU_CRYWOLF_DS_PROTOCOL_20050505
void GDReqCrywolfSync(BYTE *lpRecv, int aIndex);
void GDReqCrywolfInfoLoad(BYTE *lpRecv, int aIndex);
void GDReqCrywolfInfoSave(BYTE *lpRecv, int aIndex);
-#endif
void GDReqPeriodItemExInsert(BYTE *lpRecv, int aIndex);
void GDReqPeriodItemExDelete(BYTE *lpRecv, int aIndex);
void GDReqPeriodItemExSelect(BYTE *lpRecv, int aIndex);
void GDReqUserID(BYTE *lpRecv, int aIndex);
void DGChangeName(LPSDHP_CHANGE_NAME lpMsg, int aIndex);
-#ifdef ADD_CHARCARD_SUMMONER_20080313
void GJPSetAccountInfo(LPSDHP_REQ_SETACCOUNTINFO lpMsg, int aIndex);
-#endif
void GDReqQuestExpInfoSave(_PMSG_QUESTEXP_INFO *lpMsg);
void GDReqQuestExpInfoLoad(PMSG_REQ_QUESTEXP_INFO *lpMsg, int aIndex);
void GDReqLuckyItemInsert(BYTE *lpRecv, int aIndex);
void GDReqLuckyItemInsert2nd(BYTE *lpRecv, int aIndex);
void GDReqLuckyItemDelete(BYTE *lpRecv, int aIndex);
void GDReqLuckyItemSelect(BYTE *lpRecv, int aIndex);
-//void GDSetExGameServerCode(LPSDHP_REQ_SET_EXGAMESERVERCODE lpMsg, int aIndex);
void GDSetExtendedInvenCount(SDHP_REQ_SET_EXTENDEDINVEN_COUNT *lpMsg, int aIndex);
void GDSetExtendedWarehouseCount(SDHP_REQ_SET_EXTENDEDWAREHOUSE_COUNT *lpMsg, int aIndex);
void GDMacroLoad(SDHP_MACRODATA *lpMsg, int aIndex);
void GDMacroSave(LPSDHP_MACRODATA lpMsg, int aIndex);
-//void GDBroadcastPostMessage(BYTE *lpRecv, int aIndex);
-//void DGShellExecution(LPBYTE pMsg, int aIndex);
-//void DGRequestVip(LPPMSG_REQ_VIP pMsg, int aIndex);
-//void DGRequestUpdateResetInfo(LPPMSG_REQ_SAVE_CHARACTER_RESET pMsg, int aIndex);
-//void DGRequestResetInfo(LPPMSG_CHARACTER_RESET pMsg, int aIndex);
-
-//season 12+
void GD_RuudTokenUpdate(SDHP_RUUDTOKENUPDATE *lpRecv);
void GDSnsLoad(SDHP_SNSDATA *lpMsg, int aIndex);
void GDSnsSave(SDHP_SNSDATA *lpMsg);
@@ -253,7 +233,6 @@ void GD_Req_Get_EventMapEnterCount(SDHP_GET_EVENTMAPENTERCOUNT *lpRecv, int aInd
void GD_Req_Set_EventMapEnterCount(SDHP_SET_EVENTMAPENTERCOUNT *lpRecv);
void GD_ReqEventMapIntegration_AllNotify(SDHP_SEND_EVENTMAP_INFO_ALL_SVR *lpRecv);
-//--
struct PMSG_DEFAULT
{
PBMSG_HEAD h;
@@ -1433,692 +1412,6 @@ void GJPCharacterListRequestCS(SDHP_GETCHARLIST *lpCLMsg, int aIndex)
wsjServer.DataSend(aIndex, (char*)SendBuf, lOfs);
}
#endif
-#ifdef DEV
-
-void GJPCharacterListRequestCS(SDHP_GETCHARLIST *lpCLMsg, int aIndex)
-{
- //DGAccountInfoSend(lpCLMsg->Index, lpCLMsg->Account);
- BYTE Buffer[520];
- SDHP_CHARLISTCOUNT pMsg;
- int size = sizeof(pMsg);
- pMsg.header.set(0x01, size);
- memcpy(pMsg.AccountId, lpCLMsg->Id, sizeof(pMsg.AccountId));
- pMsg.GenerableClass = 0;
- pMsg.Count = 0;
- pMsg.Index = lpCLMsg->Number;
-
- if (gACDbSet.GetAccountId(lpCLMsg->Id) == false &&
- gACDbSet.CreateAccountCharacter(lpCLMsg->Id) == false)
- {
- memcpy(Buffer, &pMsg, sizeof(pMsg));
- wsjServer.DataSend(aIndex, (char*)Buffer, size);
- return;
- }
- BYTE btSlotCount = 0;
- if (gACDbSet.GetCharacterSlotCount(lpCLMsg->Id, &btSlotCount) == TRUE)
- {
- pMsg.CharacterSlotCount = btSlotCount;
- }
- BYTE btAddExtendedWarehouseCount = 0;
- if (gACDbSet.GetCharacterExtendedWarehouseCount(lpCLMsg->Id, &btAddExtendedWarehouseCount) == TRUE)
- {
- pMsg.ExtendedWarehouseCount = btAddExtendedWarehouseCount;
- }
- AccountCharacterInfo ACInfo;
-
- memset(&ACInfo, 0, sizeof(ACInfo));
- if (gACDbSet.GetAccountInfo(lpCLMsg->Id, &ACInfo) == false)
- {
- memcpy(Buffer, &pMsg, sizeof(pMsg));
- wsjServer.DataSend(aIndex, (char*)Buffer, size);
- return;
- }
- char Names[MAXUSERCHARACTER][11];
- memcpy(Names[0], ACInfo.GameID1, sizeof(ACInfo.GameID1));
- memcpy(Names[1], ACInfo.GameID2, sizeof(ACInfo.GameID2));
- memcpy(Names[2], ACInfo.GameID3, sizeof(ACInfo.GameID3));
- memcpy(Names[3], ACInfo.GameID4, sizeof(ACInfo.GameID4));
- memcpy(Names[4], ACInfo.GameID5, sizeof(ACInfo.GameID5));
- pMsg.MoveCnt = ACInfo.MoveCnt; SDHP_CHARLIST info;
- for (int i = 0; i < MAXUSERCHARACTER; ++i)
- {
- int Len = strlen(Names[i]);
- if (Len <= 0 || Len > 10)
- {
- continue;
- }
- BYTE _ctlcode = 0;
- BYTE _dbverstion = 0;
- BYTE _pkLevel = 0;
- BYTE _btGuildStatus = -1;
- int _level = 0;
- int _class = 0;
- BYTE Inventory[MAX_DBINVENTORY];// [3800];
- memset(Inventory, 0xFF, sizeof(Inventory));
-
- if (gCharPreDBSet.GetChar(Names[i], lpCLMsg->Id, &_level, &_class, Inventory, &_ctlcode, &_dbverstion, &_pkLevel, &_btGuildStatus) == false)
- {
- continue;
- }
- info.Index = i;
- info.Level = _level;
- info.Class = _class;
- info.CtlCode = _ctlcode;
- info.DbVersion = _dbverstion; // Cambiar a una funcion la migracion del SpeedServer
- if (_pkLevel & 0x80)
- {
- LogAdd("Speed server migration [Account:%s][Name:%s][level:%d]", lpCLMsg->Id, Names[i], _level);
- _pkLevel &= 0x7F;
- WORD MasterLevel = 0;
- MLP_ANS_MASTERLEVEL_INFO MasterInfo;
- if (_level >= 400 && MasterLevelSystemDBSet.DSDB_QueryMasterLevelSystemLoad(Names[i], &MasterInfo) == false)
- {
- MasterLevel = MasterInfo.nMLevel;
- }
- BYTE ClassType = 4 * DCInfo.GetCharacterClassByDBClass(_class);
- if (ClassType == 0xFF)
- {
- continue;
- }
- BYTE InventoryData[(MAX_ITEM - 1)*MAX_EQUIPMENT];
- memset(InventoryData, -1, sizeof(InventoryData));
- if ((MasterLevel + _level) >= 600)
- {
- ItemByteConvert16(InventoryData, DCInfo.JumpingEquipment[ClassType + 3], INVENTORY_EXT4_SIZE);
- }
- else if ((MasterLevel + _level) >= 500)
- {
- ItemByteConvert16(InventoryData, DCInfo.JumpingEquipment[ClassType + 1], INVENTORY_EXT4_SIZE);
- }
- else if (_level >= 400)
- {
- ItemByteConvert16(InventoryData, DCInfo.JumpingEquipment[ClassType], INVENTORY_EXT4_SIZE);
- }
- else if (_level >= 380)
- {
- ItemByteConvert16(InventoryData, DCInfo.JumpingEquipment[ClassType + 2], INVENTORY_EXT4_SIZE);
- }
- else
- {
- CItem ItemInfo[(MAX_EQUIPMENT + 1)];
- for (int k = 0; k < (MAX_EQUIPMENT + 1); ++k)
- {
- ItemInfo[k].Clear();
- }
- WORD type = ItemGetNumberMake(14, 286);
- ItemInfo[12].Convert(type, 0, 0, 0, 0, 0, 3);
- ItemByteConvert16(InventoryData, ItemInfo, (MAX_EQUIPMENT + 1));
- }
- gCharDbSet.RewardJumpingItem(Names[i], InventoryData);
- }
- // -----------
- info.PK_Level = _pkLevel;
- info.btGuildStatus = _btGuildStatus;
- memcpy(info.UnityBFOfRealName, "", sizeof(info.UnityBFOfRealName));
- info.ServerCodeOfHomeWorld = 0;
- gCharPreDBSet.GetRealNameAndServerCode(Names[i], info.UnityBFOfRealName, &info.ServerCodeOfHomeWorld, lpCLMsg->IsUnityBattleFiledServer);
-
- memcpy(info.Name, Names[i], sizeof(info.Name));
-
- if ((_ctlcode & 0x80) == 0 && _level >= 150)
- {
- if (_level < 200 && pMsg.GenerableClass < 2)
- {
- pMsg.GenerableClass = 1;
- }
- else if (_level >= 200 && pMsg.GenerableClass < 3)
- {
- pMsg.GenerableClass = 2;
- }
- else if (_level >= 220 && pMsg.GenerableClass < 4)
- {
- pMsg.GenerableClass = 3;
- }
- else if (_level >= 250 && pMsg.GenerableClass < 5)
- {
- pMsg.GenerableClass = 4;
- }
- else if (_level >= 400)
- {
- pMsg.GenerableClass = 5;
- }
- }
- for (int n = 0; n < MAX_EQUIPMENT; ++n)
- {
- switch (_dbverstion)
- {
- case 0x00:
- memcpy(&info.dbInventory[2 * n], &Inventory[7 * n], sizeof(WORD));
- continue;
- case 0x01:
- case 0x02:
- memcpy(&info.dbInventory[3 * n], &Inventory[10 * n], sizeof(WORD));
- info.dbInventory[3 * n + 2] = Inventory[10 * n + 7];
- continue;
- case 0x03:
- memcpy(&info.dbInventory[4 * n], &Inventory[16 * n], sizeof(WORD));
- info.dbInventory[4 * n + 2] = Inventory[16 * n + 7];
- info.dbInventory[4 * n + 3] = Inventory[16 * n + 9];
- continue;
- }
- }
- memcpy(&Buffer[size], &info, sizeof(info));
- size += sizeof(info);
- pMsg.Count++;
- }
- pMsg.header.sizeH/*[0]*/ = HIBYTE(size);
- pMsg.header.sizeL/*[1]*/ = LOBYTE(size);
- memcpy(Buffer, &pMsg, sizeof(pMsg));
- wsjServer.DataSend(aIndex, (char*)Buffer, size);
- // pCount.h.c = PMHC_WORD;
- // pCount.h.headcode = 1;
- // pCount.Number = lpCLMsg->Number;
- // pCount.Count = Count;
- // pCount.h.sizeH = HIBYTE(lOfs);
- // pCount.h.sizeL = LOBYTE(lOfs);
- // memcpy(SendBuf, &pCount, sizeof(SDHP_CHARLISTCOUNT));
- // wsjServer.DataSend(aIndex, (char*)SendBuf, lOfs);
-}
-#endif
-
-//void GJPCharacterListRequestCS(SDHP_GETCHARLIST *lpCLMsg, int aIndex)
-//{
-// CharacterInfo_Struct tCharInfo;
-// MLP_ANS_MASTERLEVEL_INFO ReqInfo;
-// AccountCharacterInfo ACInfo;
-// CString strCharId[5];
-// char SendBuf[520];
-// SDHP_CHARLIST pCharList;
-//
-// int IsUBFServer;
-// SDHP_CHARLISTCOUNT pCount;
-//
-// SDHP_ANS_ACCOUNTINFO Result;
-//
-// memset(Result.AccountId, 0, MAX_IDSTRING + 1);
-// memcpy(Result.AccountId, lpCLMsg->Id, MAX_IDSTRING);
-// Result.h.set((LPBYTE)&Result, 0xA1, sizeof(SDHP_ANS_ACCOUNTINFO));
-// Result.Number = lpCLMsg->Number;
-// Result.bSummoner = gACDbSet.GetSummonerCardInfo(Result.AccountId);
-// Result.Result = 0;
-// wsjServer.DataSend(aIndex, (char*)&Result, sizeof(SDHP_ANS_ACCOUNTINFO));
-//
-// BYTE result = 1;
-// int listcount = 0;
-// IsUBFServer = lpCLMsg->IsUnityBattleFiledServer;
-// int lOfs = 0;
-// int Count = 0;
-// int v74 = 0;
-//
-// char szId[MAX_IDSTRING + 1];
-// char characterName[MAX_IDSTRING + 1];
-//
-// memset(&pCharList, 0, sizeof(SDHP_CHARLIST));
-// memset(pCount.AccountId, 0, MAX_IDSTRING + 1);
-// memset(szId, 0, MAX_IDSTRING + 1);
-//
-// memcpy(szId, lpCLMsg->Id, MAX_IDSTRING);
-// memcpy(pCount.AccountId, lpCLMsg->Id, MAX_IDSTRING);
-//
-// memset(SendBuf, 0, 512);
-// pCount.GenerableClass = 0;
-//
-// lOfs += sizeof(SDHP_CHARLISTCOUNT);
-//
-// if (result == 1)
-// {
-// if (gACDbSet.GetAccountId(szId) == 1)
-// {
-// result = 1;
-// }
-// else
-// {
-// result = 0;
-// if (gACDbSet.CreateAccountCharacter(szId) == 1)
-// result = 1;
-// }
-// }
-// if (result == 1)
-// {
-// BYTE btSlotCount = 0;
-// if (gACDbSet.GetCharacterSlotCount(szId, &btSlotCount) == 1)
-// {
-// pCount.CharacterSlotCount = btSlotCount;
-// }
-// BYTE btAddExtendedWarehouseCount = 0;
-// if (gACDbSet.GetCharacterExtendedWarehouseCount(szId, &btAddExtendedWarehouseCount) == 1)
-// {
-// pCount.ExtendedWarehouseCount = btAddExtendedWarehouseCount;
-// }
-// memset(&ACInfo, 0, sizeof(AccountCharacterInfo));
-//
-// if (gACDbSet.GetAccountInfo(szId, &ACInfo))
-// {
-// result = 1;
-//
-// strCharId[0] = ACInfo.GameID1;
-// strCharId[1] = ACInfo.GameID2;
-// strCharId[2] = ACInfo.GameID3;
-// strCharId[3] = ACInfo.GameID4;
-// strCharId[4] = ACInfo.GameID5;
-// pCount.MoveCnt = ACInfo.MoveCnt;
-//
-// int listcount = 0;
-//
-// for (int i = 0; i < 5; ++i)
-// {
-// int n;
-// if (strCharId[n].GetLength() > 0 && strCharId[n].GetLength() <= MAX_IDSTRING)
-// {
-// memset(characterName, 0, MAX_IDSTRING + 1);
-//
-// strcpy(characterName, strCharId[n].GetBuffer(MAX_IDSTRING));
-//
-// int _level;
-// int _class;
-//
-// BYTE Inventory[MAX_DBINVENTORY];
-//
-// BOOL bGetPrevChar = 0;
-// BYTE _ctlcode = 0;
-// BYTE _dbverstion = 0;
-// char _pkLevel = 0;
-// BYTE _btGuildStatus = 0xFF;
-// //(characterName, _level, _class, Inventory, _ctlcode, _dbverstion, _btGuildStatus);
-// bGetPrevChar = gCharPreDBSet.GetChar(characterName, szId, &_level, &_class, Inventory, _ctlcode, _dbverstion, &_pkLevel, _btGuildStatus);
-//
-// if (bGetPrevChar == TRUE)
-// {
-// pCharList.Index = i;
-// pCharList.Level = _level;
-// pCharList.Class = _class;
-// pCharList.CtlCode = _ctlcode;
-// pCharList.DbVersion = _dbverstion;
-//
-// if (_pkLevel & 0x80)
-// {
-// //LogAddTD(&byte_591B4C, szId, characterName, _level);
-// _pkLevel &= 0x7Fu;
-// int v17 = 0;
-// int v16 = 0xFF;
-// if (_level >= 400 && !MasterLevelSystemDBSet.DSDB_QueryMasterLevelSystemLoad(characterName, &ReqInfo))
-// {
-// v17 = ReqInfo.nMLevel;
-// }
-// classdef _classdef;
-// v16 = 4 * _classdef.GetCharacterClassByDBClass(_class);
-// if (v16 != 255)
-// {
-// for (int j = 0; j < 236; ++j)
-// memset(&tCharInfo.dbInventory[16 * j], 255, 0x10u);
-// if (v17 + _level < 600)
-// {
-// if (v17 + _level < 500)
-// {
-// if (_level < 400)
-// {
-// if (_level < 380)
-// {
-// //`vector constructor iterator'(__t, 0xA8u, 13, CItem::CItem);
-// /* for (k = 0; k < 13; ++k)
-// Inventory.Clear([168 * k]);
-// type = ItemGetNumberMake(14, 286);
-// v12.Convert(type, 0, 0, 0, 0, 0, 3);
-// ItemByteConvert16(tCharInfo.dbInventory, Inventory, 13);*/
-// }
-// else
-// {
-// ItemByteConvert16(tCharInfo.dbInventory, DCInfo.JumpingEquipment[v16 + 2], 204);
-// }
-// }
-// else
-// {
-// ItemByteConvert16(tCharInfo.dbInventory, DCInfo.JumpingEquipment[v16], 204);
-// }
-// }
-// else
-// {
-// ItemByteConvert16(tCharInfo.dbInventory, DCInfo.JumpingEquipment[v16 + 1], 204);
-// }
-// }
-// else
-// {
-// //ItemByteConvert16(tCharInfo.dbInventory, DCInfo.DefClass[defclass].Equipment, MAX_EQUIPMENT + 2);
-// ItemByteConvert16(tCharInfo.dbInventory, DCInfo.JumpingEquipment[v16 + 3], 204);
-// }
-// gCharDbSet.RewardJumpingItem(characterName, tCharInfo.dbInventory);
-// }
-// }
-// pCharList.PK_Level = _pkLevel;
-// pCharList.btGuildStatus = _btGuildStatus;
-// int ServerCodeOfHomeWorld = 0;
-// int ServerCode = 0;
-// char szRealName;
-// if (IsUBFServer == 1)
-//
-// pCharList.ServerCodeOfHomeWorld = gCharPreDBSet.GetRealNameAndServerCode(characterName, &szRealName, &ServerCode, 1);
-// if (IsUBFServer != 1 || ServerCodeOfHomeWorld != 1)
-// {
-// //memcpy(&v41, &GameID, MAX_IDSTRING);
-// int ServerCodeOfHomeWorld = 0;
-// }
-// else
-// {
-// //memcpy(&v41, &szRealName, MAX_IDSTRING);
-// ServerCodeOfHomeWorld = ServerCode;
-// }
-// char v40;
-// memcpy(&v40, characterName, MAX_IDSTRING);
-// if (!(_ctlcode & 0x80) && _level >= 150)
-// {
-// if (_level < 400)
-// {
-// if (_level < 250)
-// {
-// if (_level < 220)
-// {
-// if (_level < 200)
-// {
-// if (pCount.GenerableClass < 2)
-// pCount.GenerableClass = 1;
-// }
-// else if (pCount.GenerableClass < 3)
-// {
-// pCount.GenerableClass = 2;
-// }
-// }
-// else if (pCount.GenerableClass < 4)
-// {
-// pCount.GenerableClass = 3;
-// }
-// }
-// else if (pCount.GenerableClass < 5)
-// {
-// pCount.GenerableClass = 4;
-// }
-// }
-// else
-// {
-// pCount.GenerableClass = 5;
-// }
-// }
-// if (_dbverstion)
-// {
-// if (_dbverstion != 1 && _dbverstion != 2)
-// {
-// for (int l = 0; l < MAX_EQUIPMENT; ++l)
-// {
-// memcpy(&pCharList.dbInventory[4 * l], &Inventory[16 * l], 2);
-// pCharList.dbInventory[4 * l + 2] = Inventory[16 * l + 7];
-// pCharList.dbInventory[4 * l + 3] = Inventory[16 * l + 9];
-// }
-// }
-// else
-// {
-// for (int k = 0; k < MAX_EQUIPMENT; ++k)
-// {
-// memcpy(&pCharList.dbInventory[3 * k], &Inventory[10 * k], 2);
-// pCharList.dbInventory[3 * k + 2] = Inventory[10 * k + 7];
-// }
-// }
-// }
-// else
-// {
-// for (int n = 0; n < MAX_EQUIPMENT; ++n)
-// memcpy(&pCharList.dbInventory[2 * n], &Inventory[7 * n], 2);
-// }
-// memcpy(&SendBuf[lOfs], &pCharList, sizeof(SDHP_CHARLIST));
-// lOfs += sizeof(SDHP_CHARLIST);;
-// ++Count;
-// }
-// }
-// }
-// }
-// else
-// {
-// result = 0;
-// }
-// }
-// pCount.h.c = PMHC_WORD;
-// pCount.h.headcode = 1;
-// pCount.Number = lpCLMsg->Number;
-// pCount.Count = Count;
-// pCount.h.sizeH = HIBYTE(lOfs);
-// pCount.h.sizeL = LOBYTE(lOfs);
-// memcpy(SendBuf, &pCount, sizeof(SDHP_CHARLISTCOUNT));
-// wsjServer.DataSend(aIndex, (char*)SendBuf, lOfs);
-//}
-
-#ifdef WORKIG_PREVIEW
-void GJPCharacterListRequestCS(LPSDHP_GETCHARLIST lpCLMsg, int aIndex)
-{
-#ifdef ADD_CHARCARD_SUMMONER_20080313
- SDHP_ANS_ACCOUNTINFO Result;
-#endif
-
- char characterName[MAX_IDSTRING + 1];
- char szId[MAX_IDSTRING + 1];
-
-#ifdef ADD_CHARCARD_SUMMONER_20080313
- memset(Result.AccountId, 0, MAX_IDSTRING + 1);
- memcpy(Result.AccountId, lpCLMsg->Id, MAX_IDSTRING);
-
- Result.h.set((LPBYTE)&Result, 0xA1, sizeof(SDHP_ANS_ACCOUNTINFO));
-
- Result.Number = lpCLMsg->Number;
-
- Result.bSummoner = gACDbSet.GetSummonerCardInfo(Result.AccountId);
-
- Result.Result = 0;
-
- wsjServer.DataSend(aIndex, (char*)&Result, sizeof(SDHP_ANS_ACCOUNTINFO));
-#endif
-
- int IsUBFServer = lpCLMsg->IsUnityBattleFiledServer;//s12
- BYTE result = 1;
- int listcount = 0;
-
- int n;
- SDHP_CHARLISTCOUNT pCount;
- SDHP_CHARLIST pCharList;
- char SendBuf[512];
-
- int lOfs = 0;
- int Count = 0;
-
- CString strCharId[5];
-
- memset(&pCharList, 0, sizeof(SDHP_CHARLIST));
- memset(pCount.AccountId, 0, sizeof(pCount.AccountId));
- memset(szId, 0, MAX_IDSTRING + 1);
-
- memcpy(szId, lpCLMsg->Id, MAX_IDSTRING);
- memcpy(pCount.AccountId, lpCLMsg->Id, MAX_IDSTRING);
-
- memset(SendBuf, 0, 512);
- pCount.GenerableClass = 0;
-
- lOfs += sizeof(SDHP_CHARLISTCOUNT);
-
- if (result == 1)
- {
- if (gACDbSet.GetAccountId(szId) == 1)
- {
- result = 1;
- }
- else
- {
- result = 0;
-
- if (gACDbSet.CreateAccountCharacter(szId) == 1)
- {
- result = 1;
- }
- }
- }
-
- AccountCharacterInfo ACInfo;
-
- if (result == 1)
- {
- BYTE btSlotCount = 0;
- if (gACDbSet.GetCharacterSlotCount(szId, &btSlotCount) == TRUE)
- pCount.CharacterSlotCount = btSlotCount;
-
- BYTE btExtendedWarehouseCount = 0;
- if (gACDbSet.GetCharacterExtendedWarehouseCount(szId, &btExtendedWarehouseCount) == TRUE)
- {
- pCount.ExtendedWarehouseCount = btExtendedWarehouseCount;
- }
-
- memset(&ACInfo, 0, sizeof(AccountCharacterInfo));
-
- if (gACDbSet.GetAccountInfo(szId, &ACInfo) == FALSE)
- {
- result = 0;
- }
- else
- {
- result = 1;
-
- strCharId[0] = ACInfo.GameID1;
- strCharId[1] = ACInfo.GameID2;
- strCharId[2] = ACInfo.GameID3;
- strCharId[3] = ACInfo.GameID4;
- strCharId[4] = ACInfo.GameID5;
-#ifdef CHARACTER_MOVE_20040810
- pCount.MoveCnt = ACInfo.MoveCnt;
-#endif
- listcount = 0;
-
- for (n = 0; n < 5; n++)
- {
- if (strCharId[n].GetLength() > 0 && strCharId[n].GetLength() <= MAX_IDSTRING)
- {
- memset(characterName, 0, MAX_IDSTRING + 1);
- strcpy(characterName, strCharId[n].GetBuffer(MAX_IDSTRING));
-
- int _level;
- int _class;
- BYTE Inventory[MAX_DBINVENTORY];
-
- BOOL bGetPrevChar = FALSE;
- BYTE _ctlcode = 0;
- BYTE _dbverstion = 0;
- char _pkLevel = 0;
- BYTE _btGuildStatus = 0xFF;
-
- //bGetPrevChar = gCharPreDBSet.GetChar(characterName, _level, _class, Inventory, _ctlcode, _dbverstion, _btGuildStatus);
- bGetPrevChar = gCharPreDBSet.GetChar(
- characterName,
- szId,
- &_level,
- &_class,
- Inventory,
- _ctlcode,
- _dbverstion,
- &_pkLevel,
- _btGuildStatus);
-
- if (bGetPrevChar == TRUE)
- {
- pCharList.Index = n;
- pCharList.Level = _level;
- pCharList.Class = _class;
-
- pCharList.CtlCode = _ctlcode;
- pCharList.DbVersion = _dbverstion;
-#ifdef ADD_CHARACTERLIST_GUILD_STATUS_01_20050126
- pCharList.btGuildStatus = _btGuildStatus;
-#endif
- memcpy(pCharList.Name, characterName, MAX_IDSTRING);
-
- if ((_ctlcode & 0x80) == FALSE)
- {
- /*int v17 = 0;
- if (_level >= 400 && !MasterLevelSystemDBSet.DSDB_QueryMasterLevelSystemLoad(&Name, &ReqInfo))
- {
- v17 = ReqInfo.nMLevel;
- }*/
-#ifdef ADD_SEASON_3_NEW_CHARACTER_SUMMONER_20070912
- if (_level >= 150)
-#else
- if (_level >= 220)
-#endif
- {
-#ifdef DARKLORD_WORK
-#ifdef ADD_SEASON_3_NEW_CHARACTER_SUMMONER_20070912
- if (_level >= 250)
- {
- pCount.GenerableClass = 3;
- }
- else
-#endif
- if (_level >= 220)
- {
- if (pCount.GenerableClass < 2)
- {
- pCount.GenerableClass = 2;
- }
- }
- else if (pCount.GenerableClass < 2)
-#endif
- {
- pCount.GenerableClass = 1;
- }
- }
- }
-
- if (_dbverstion == 0)
- {
- for (int i = 0; i < MAX_EQUIPMENT; i++)
- {
- memcpy(&pCharList.dbInventory[2 * i], &Inventory[7 * i], 2);
- }
- }
- else
-#if GAME_VERSION >= G_V_S1_512
- if (_dbverstion == 1 || _dbverstion == 2)
-#endif
- {
- for (int k = 0; k < MAX_EQUIPMENT; k++)
- {
- memcpy(&pCharList.dbInventory[3 * k], &Inventory[10 * k], 2);
- pCharList.dbInventory[3 * k + 2] = Inventory[10 * k + 7];
- }
- }
-#if GAME_VERSION >= G_V_S1_512
- else
- {
- for (int j = 0; j < MAX_EQUIPMENT; j++)
- {
- memcpy(&pCharList.dbInventory[4 * j], &Inventory[16 * j], 2);
- pCharList.dbInventory[4 * j + 2] = Inventory[16 * j + 7];
- pCharList.dbInventory[4 * j + 3] = Inventory[16 * j + 9];
- }
- }
-#endif
-
- memcpy(&SendBuf[lOfs], &pCharList, sizeof(SDHP_CHARLIST));
- lOfs += sizeof(SDHP_CHARLIST);
- Count++;
- }
- }
- }
- }
- }
-
- pCount.h.c = PMHC_WORD;
- pCount.h.headcode = 0x01;
- pCount.Number = lpCLMsg->Number;
- pCount.Count = Count;
- pCount.h.sizeH = HIBYTE(lOfs);
- pCount.h.sizeL = LOBYTE(lOfs);
- memcpy(SendBuf, &pCount, sizeof(SDHP_CHARLISTCOUNT));
-
- wsjServer.DataSend(aIndex, (char*)SendBuf, lOfs);
-}
-#endif
void GDCharacterClose(LPSDHP_USERCLOSE lpMsg, short aIndex)
{
diff --git a/DataServer/stdafx.h b/DataServer/stdafx.h
index 7602c13..bdd5dad 100644
--- a/DataServer/stdafx.h
+++ b/DataServer/stdafx.h
@@ -1,25 +1,16 @@
-
-// stdafx.h : include file for standard system include files,
-// or project specific include files that are used frequently,
-// but are changed infrequently
-
+#ifndef __STDAFX_H__
+#define __STDAFX_H__
#pragma once
-#ifndef VC_EXTRALEAN
-#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
-#endif
-
#pragma warning ( disable : 4786 )
-#pragma warning ( disable :4566)
-
-#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
+#pragma warning ( disable : 4566 )
-// turns off MFC's hiding of some common and often safely ignored warning messages
-#define _AFX_ALL_WARNINGS
+#define VC_EXTRALEAN
+#define _WIN32_WINNT 0x500
#include // MFC core and standard components
#include // MFC extensions
-
+#include // MFC Automation classes
#ifndef _AFX_NO_DB_SUPPORT
#include // MFC ODBC database classes
@@ -35,16 +26,13 @@
#include // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
-#include // MFC support for ribbons and control bars
-
-#define DATASERVER_VERSION "0.75.00"//"0.73.00"
+#define DATASERVER_VERSION "0.75.00"
#include "Include\define.h"
#include "common\Logproc.h"
#include "LogToFile.h"
#include "common\winutil.h"
#include "Include\ProDef.h"
-#include "common\ItemSocketOptionDefine.h"
#define DB_CONNECT_DSN "MuOnlineJoinDB"
#define DB_CONNECT_UID "MuOnlineAdmin"
@@ -57,5 +45,3 @@ extern char szDbConnectDsn[];
#include "CQuery.h"
extern char g_szDBID_DESC[];
-
-//#define DEBUG_IOCP_LOG