Skip to content

Commit dfd3bb3

Browse files
committed
2.03 leaked sources
0 parents  commit dfd3bb3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+49123
-0
lines changed

ActionID.h

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
#define DEF_TOTALACTION 10
3+
4+
#define DEF_OBJECTSTOP 0
5+
#define DEF_OBJECTMOVE 1
6+
#define DEF_OBJECTRUN 2
7+
#define DEF_OBJECTATTACK 3
8+
#define DEF_OBJECTMAGIC 4
9+
#define DEF_OBJECTGETITEM 5
10+
#define DEF_OBJECTDAMAGE 6
11+
#define DEF_OBJECTDAMAGEMOVE 7
12+
#define DEF_OBJECTATTACKMOVE 8
13+
#define DEF_OBJECTDYING 10
14+
#define DEF_OBJECTNULLACTION 100
15+
16+
#define DEF_OBJECTMOVE_CONFIRM 1001
17+
#define DEF_OBJECTMOVE_REJECT 1010
18+
#define DEF_OBJECTMOTION_CONFIRM 1020
19+
#define DEF_OBJECTMOTION_ATTACK_CONFIRM 1030
20+
#define DEF_OBJECTMOTION_REJECT 1040
21+
22+

BuildItem.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// BuildItem.cpp: implementation of the CBuildItem class.
2+
//
3+
//////////////////////////////////////////////////////////////////////
4+
5+
#include "BuildItem.h"
6+
7+
//////////////////////////////////////////////////////////////////////
8+
// Construction/Destruction
9+
//////////////////////////////////////////////////////////////////////
10+
11+
CBuildItem::CBuildItem()
12+
{
13+
int i;
14+
15+
ZeroMemory(m_cName, sizeof(m_cName));
16+
m_sItemID = -1;
17+
18+
m_iSkillLimit = 0;
19+
20+
for (i = 0; i < 6; i++) {
21+
m_iMaterialItemID[i] = NULL;
22+
m_iMaterialItemCount[i] = NULL;
23+
m_iMaterialItemValue[i] = NULL;
24+
m_iIndex[i] = -1;
25+
}
26+
27+
m_iMaxValue = 0;
28+
m_iAverageValue = 0;
29+
m_iMaxSkill = 0;
30+
m_wAttribute = 0;
31+
}
32+
33+
CBuildItem::~CBuildItem()
34+
{
35+
36+
}

BuildItem.h

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// BuildItem.h: interface for the CBuildItem class.
2+
//
3+
//////////////////////////////////////////////////////////////////////
4+
5+
#if !defined(AFX_BUILDITEM_H__D8858F0E_7737_4E39_9BF9_960C73B0727A__INCLUDED_)
6+
#define AFX_BUILDITEM_H__D8858F0E_7737_4E39_9BF9_960C73B0727A__INCLUDED_
7+
8+
#if _MSC_VER > 1000
9+
#pragma once
10+
#endif // _MSC_VER > 1000
11+
12+
#include <windows.h>
13+
14+
class CBuildItem
15+
{
16+
public:
17+
CBuildItem();
18+
virtual ~CBuildItem();
19+
20+
char m_cName[21];
21+
short m_sItemID;
22+
23+
int m_iSkillLimit;
24+
25+
int m_iMaterialItemID[6];
26+
int m_iMaterialItemCount[6];
27+
int m_iMaterialItemValue[6]; // 재료 아이템 가중치
28+
int m_iIndex[6];
29+
30+
int m_iMaxValue;
31+
int m_iAverageValue;
32+
int m_iMaxSkill; // 이 아이템을 제작해서 올릴 수 있는 최대 스킬
33+
WORD m_wAttribute; // 아이템의 속성을 부여할 수 있다.
34+
};
35+
36+
#endif // !defined(AFX_BUILDITEM_H__D8858F0E_7737_4E39_9BF9_960C73B0727A__INCLUDED_)

Client.cpp

+298
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,298 @@
1+
// Client.cpp: implementation of the CClient class.
2+
//
3+
//////////////////////////////////////////////////////////////////////
4+
5+
#include "Client.h"
6+
7+
//////////////////////////////////////////////////////////////////////
8+
// Construction/Destruction
9+
//////////////////////////////////////////////////////////////////////
10+
11+
CClient::CClient(HWND hWnd)
12+
{
13+
register int i;
14+
15+
m_pXSock = NULL;
16+
m_pXSock = new class XSocket(hWnd, DEF_CLIENTSOCKETBLOCKLIMIT);
17+
m_pXSock->bInitBufferSize(DEF_MSGBUFFERSIZE);
18+
19+
ZeroMemory(m_cProfile, sizeof(m_cProfile));
20+
strcpy(m_cProfile, "__________");
21+
22+
ZeroMemory(m_cCharName, sizeof(m_cCharName));
23+
ZeroMemory(m_cAccountName, sizeof(m_cAccountName));
24+
ZeroMemory(m_cAccountPassword, sizeof(m_cAccountPassword));
25+
26+
ZeroMemory(m_cGuildName, sizeof(m_cGuildName));
27+
ZeroMemory(m_cLocation, sizeof(m_cLocation));
28+
strcpy(m_cLocation, "NONE");
29+
m_iGuildRank = -1;
30+
m_iGuildGUID = -1;
31+
32+
m_bIsInitComplete = FALSE;
33+
34+
m_cLU_Str = m_cLU_Int = m_cLU_Vit = m_cLU_Dex = m_cLU_Mag = m_cLU_Char = 0;
35+
36+
// v1.432 사용하지 않는다.
37+
//m_iHitRatio_ItemEffect_SM = 0;
38+
//m_iHitRatio_ItemEffect_L = 0;
39+
40+
m_iEnemyKillCount = 0;
41+
m_iPKCount = 0;
42+
m_iRewardGold = 0;
43+
m_iCurWeightLoad = 0;
44+
45+
m_bIsSafeAttackMode = FALSE;
46+
47+
// 아이템 장착 상태 초기화한 후 설정한다.
48+
for (i = 0; i < DEF_MAXITEMEQUIPPOS; i++)
49+
m_sItemEquipmentStatus[i] = -1;
50+
51+
// 아이템 리스트 초기화
52+
for (i = 0; i < DEF_MAXITEMS; i++) {
53+
m_pItemList[i] = NULL;
54+
m_ItemPosList[i].x = 40;
55+
m_ItemPosList[i].y = 30;
56+
m_bIsItemEquipped[i] = FALSE;
57+
}
58+
m_cArrowIndex = -1; // 화살 아이템 인덱스는 할당되지 않은 상태
59+
60+
// 맡겨논 아이템 리스트 초기화.
61+
for (i = 0; i < DEF_MAXBANKITEMS; i++) {
62+
m_pItemInBankList[i] = NULL;
63+
}
64+
65+
// Magic - Skill 숙련도 리스트 초기화
66+
for (i = 0; i < DEF_MAXMAGICTYPE; i++)
67+
m_cMagicMastery[i] = NULL;
68+
69+
for (i = 0; i < DEF_MAXSKILLTYPE; i++)
70+
m_cSkillMastery[i] = NULL;
71+
72+
for (i = 0; i < DEF_MAXSKILLTYPE; i++) {
73+
m_bSkillUsingStatus[i] = FALSE;
74+
m_iSkillUsingTimeID[i] = NULL;
75+
}
76+
77+
// testcode
78+
m_cMapIndex = -1;
79+
m_sX = -1;
80+
m_sY = -1;
81+
m_cDir = 5;
82+
m_sType = 0;
83+
m_sOriginalType = 0;
84+
m_sAppr1 = 0;
85+
m_sAppr2 = 0;
86+
m_sAppr3 = 0;
87+
m_sAppr4 = 0;
88+
m_iApprColor = 0; // v1.4
89+
m_sStatus = 0;
90+
91+
m_cSex = 0;
92+
m_cSkin = 0;
93+
m_cHairStyle = 0;
94+
m_cHairColor = 0;
95+
m_cUnderwear = 0;
96+
97+
m_cAttackDiceThrow_SM = 0; // 공격치 주사위 던지는 회수 @@@@@@@@@@@@@
98+
m_cAttackDiceRange_SM = 0;
99+
m_cAttackDiceThrow_L = 0; // 공격치 주사위 던지는 회수 @@@@@@@@@@@@@
100+
m_cAttackDiceRange_L = 0;
101+
m_cAttackBonus_SM = 0;
102+
m_cAttackBonus_L = 0;
103+
104+
// 플레이어의 소속 마을에 따라서 사이드가 결정되며 이것을 보고 NPC가 공격여부를 결정할 것이다.
105+
m_cSide = 0;
106+
107+
m_iHitRatio = 0;
108+
m_iDefenseRatio = 0;
109+
110+
for (i = 0; i < DEF_MAXITEMEQUIPPOS; i++) m_iDamageAbsorption_Armor[i] = 0;
111+
m_iDamageAbsorption_Shield = 0;
112+
113+
m_iHPstock = 0;
114+
m_bIsKilled = FALSE;
115+
116+
for (i = 0; i < DEF_MAXMAGICEFFECTS; i++)
117+
m_cMagicEffectStatus[i] = 0;
118+
119+
m_iWhisperPlayerIndex = -1;
120+
121+
m_iHungerStatus = 100; // 최대값은 100
122+
123+
m_bIsWarLocation = FALSE;
124+
125+
m_bIsPoisoned = FALSE;
126+
m_iPoisonLevel = NULL;
127+
128+
m_iAdminUserLevel = 0;
129+
m_iRating = 0;
130+
m_iTimeLeft_ShutUp = 0;
131+
m_iTimeLeft_Rating = 0;
132+
m_iTimeLeft_ForceRecall = 0;
133+
m_iTimeLeft_FirmStaminar = 0;
134+
135+
m_bIsOnServerChange = FALSE;
136+
137+
m_iExpStock = 0;
138+
139+
m_iAllocatedFish = NULL;
140+
m_iFishChance = 0;
141+
142+
ZeroMemory(m_cIPaddress, sizeof(m_cIPaddress));
143+
m_bIsOnWaitingProcess = FALSE;
144+
145+
m_iSuperAttackLeft = 0;
146+
m_iSuperAttackCount = 0;
147+
148+
m_sUsingWeaponSkill = 5; // 기본적으로 맨손격투
149+
150+
m_iManaSaveRatio = 0;
151+
m_iAddResistMagic = 0;
152+
m_iAddPhysicalDamage = 0;
153+
m_iAddMagicalDamage = 0;
154+
m_bIsLuckyEffect = FALSE;
155+
m_iSideEffect_MaxHPdown = 0;
156+
157+
m_iAddAbsAir = 0; // 속성별 대미지 흡수
158+
m_iAddAbsEarth = 0;
159+
m_iAddAbsFire = 0;
160+
m_iAddAbsWater = 0;
161+
162+
m_iComboAttackCount = 0;
163+
m_iDownSkillIndex = -1;
164+
165+
m_iMagicDamageSaveItemIndex = -1;
166+
167+
m_sCharIDnum1 = m_sCharIDnum2 = m_sCharIDnum3 = 0;
168+
169+
m_iPartyRank = -1; // v1.42
170+
m_iPartyMemberCount = 0;
171+
m_iPartyGUID = 0;
172+
173+
for (i = 0; i < DEF_MAXPARTYMEMBERS; i++) {
174+
m_stPartyMemberName[i].iIndex = 0;
175+
ZeroMemory(m_stPartyMemberName[i].cName, sizeof(m_stPartyMemberName[i].cName));
176+
}
177+
178+
m_iAbuseCount = 0;
179+
m_bIsBWMonitor = FALSE;
180+
m_bIsExchangeMode = FALSE;
181+
182+
// v1.4311-3 추가 변수 초기화 사투장 예약 관련 변수
183+
m_iFightZoneTicketNumber = m_iFightzoneNumber = m_iReserveTime = 0 ;
184+
185+
m_iPenaltyBlockYear = m_iPenaltyBlockMonth = m_iPenaltyBlockDay = 0; // v1.4
186+
187+
m_iExchangeH = NULL; // 교환할 대상의 인덱스
188+
ZeroMemory(m_cExchangeName, sizeof(m_cExchangeName)); // 교환할 대상의 이름
189+
ZeroMemory(m_cExchangeItemName, sizeof(m_cExchangeItemName)); // 교환할 아이템 이름
190+
191+
m_cExchangeItemIndex = -1; // 교환할 아이템 인덱스
192+
m_iExchangeItemAmount = 0; // 교환할 아이템 갯수
193+
194+
m_bIsExchangeConfirm = FALSE;
195+
196+
m_iQuest = NULL; // 현재 할당된 Quest
197+
m_iQuestID = NULL; // QuestID
198+
m_iAskedQuest = NULL; // 물어본 퀘스트
199+
m_iCurQuestCount = NULL; // 현재 퀘스트 상태
200+
201+
m_iQuestRewardType = NULL; // 퀘스트 해결시 상품 종류 -> 아이템의 ID값이다.
202+
m_iQuestRewardAmount = NULL; // 상품 갯수
203+
204+
m_iContribution = NULL; // 공헌도
205+
m_bQuestMatchFlag_Loc = FALSE; // 퀘스트 장소 확인용 플래그.
206+
m_bIsQuestCompleted = FALSE;
207+
208+
m_bIsNeutral = FALSE;
209+
m_bIsObserverMode = FALSE;
210+
211+
// 2000.8.1 이벤트 상품 수여 확인용
212+
m_iSpecialEventID = 200081;
213+
214+
m_iSpecialWeaponEffectType = 0; // 희귀 아이템 효과 종류: 0-None 1-필살기대미지추가 2-중독효과 3-정의의 4-저주의
215+
m_iSpecialWeaponEffectValue = 0; // 희귀 아이템 효과 값
216+
217+
m_iAddHP = m_iAddSP = m_iAddMP = 0;
218+
m_iAddAR = m_iAddPR = m_iAddDR = 0;
219+
m_iAddAbsPD = m_iAddAbsMD = 0;
220+
m_iAddCD = m_iAddExp = m_iAddGold = 0;
221+
222+
m_iSpecialAbilityTime = DEF_SPECABLTYTIMESEC; // DEF_SPECABLTYTIMESEC 초마다 한번씩 특수 능력을 쓸 수 있다.
223+
m_iSpecialAbilityType = NULL;
224+
m_bIsSpecialAbilityEnabled = FALSE;
225+
m_iSpecialAbilityLastSec = 0;
226+
227+
m_iSpecialAbilityEquipPos = 0;
228+
229+
m_iMoveMsgRecvCount = 0;
230+
m_iAttackMsgRecvCount = 0;
231+
m_iRunMsgRecvCount = 0;
232+
m_iSkillMsgRecvCount = 0;
233+
234+
m_bIsAdminCreateItemEnabled = FALSE;
235+
m_iAlterItemDropIndex = -1;
236+
237+
m_iAutoExpAmount = 0;
238+
m_iWarContribution = 0;
239+
240+
m_dwMoveLAT = m_dwRunLAT = m_dwAttackLAT = 0;
241+
242+
m_dwInitCCTimeRcv = 0;
243+
m_dwInitCCTime = 0;
244+
245+
ZeroMemory(m_cLockedMapName, sizeof(m_cLockedMapName));
246+
strcpy(m_cLockedMapName, "NONE");
247+
m_iLockedMapTime = NULL;
248+
249+
m_iCrusadeDuty = NULL;
250+
m_dwCrusadeGUID = NULL;
251+
252+
for (i = 0; i < DEF_MAXCRUSADESTRUCTURES; i++) {
253+
m_stCrusadeStructureInfo[i].cType = NULL;
254+
m_stCrusadeStructureInfo[i].cSide = NULL;
255+
m_stCrusadeStructureInfo[i].sX = NULL;
256+
m_stCrusadeStructureInfo[i].sY = NULL;
257+
}
258+
m_iCSIsendPoint = NULL;
259+
260+
m_bIsSendingMapStatus = FALSE;
261+
ZeroMemory(m_cSendingMapName, sizeof(m_cSendingMapName));
262+
263+
m_iConstructionPoint = NULL;
264+
265+
ZeroMemory(m_cConstructMapName, sizeof(m_cConstructMapName));
266+
m_iConstructLocX = m_iConstructLocY = -1;
267+
}
268+
269+
CClient::~CClient()
270+
{
271+
int i;
272+
273+
if (m_pXSock != NULL) delete m_pXSock;
274+
for (i = 0; i < DEF_MAXITEMS; i++)
275+
if (m_pItemList[i] != NULL) {
276+
delete m_pItemList[i];
277+
m_pItemList[i] = NULL;
278+
}
279+
}
280+
281+
282+
BOOL CClient::bCreateNewParty()
283+
{
284+
int i;
285+
286+
if (m_iPartyRank != -1) return FALSE;
287+
288+
m_iPartyRank = 0;
289+
m_iPartyMemberCount = 0;
290+
m_iPartyGUID = (rand() % 999999) + timeGetTime();
291+
292+
for (i = 0; i < DEF_MAXPARTYMEMBERS; i++) {
293+
m_stPartyMemberName[i].iIndex = 0;
294+
ZeroMemory(m_stPartyMemberName[i].cName, sizeof(m_stPartyMemberName[i].cName));
295+
}
296+
297+
return TRUE;
298+
}

0 commit comments

Comments
 (0)