ROADefs.h
上传用户:tianheyiqi
上传日期:2010-04-16
资源大小:282k
文件大小:24k
源码类别:

外挂编程

开发平台:

Visual C++

  1. #if !defined(AFX_ROADEFS_H__B246916D_8303_42EE_AF13_20D988742F4D__INCLUDED_)
  2. #define AFX_ROADEFS_H__B246916D_8303_42EE_AF13_20D988742F4D__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. #include "ROAMap.h"
  7. #include "ROAField.h"
  8. typedef int (WINAPI *HOOKAPI)(DWORD ProcID, LPCTSTR dll);
  9. CString utlParseString(CString& str);
  10. const CString strWelcome[] = 
  11. {
  12. "*******************************************************",
  13. "*           仙境传说 - ROA   (Version: 3.40)          *",
  14. "*-----------------------------------------------------*",
  15. "*  请勿在官方服务器上使用本程序,如不同意请马上退出   *",
  16. "*-----------------------------------------------------*",
  17. "* Author: Outman  QQ: 298668119  outman_@hotmail.com  *",
  18. "*******************************************************"
  19. };
  20. #define ROA_HEADER "[ROA]: "
  21. #define ROA_PORT (2350)
  22. #define MAX_BUFFER_LEN (32768)
  23. #define MAX_SKILL 337
  24. #define ROA_INI2_FILENAME _T(".\roa2.ini")
  25. #define ROA_INI2_OPTION _T("OPTION")
  26. #define ROA_INI2_OPT_TESTSVR _T("TestServer")
  27. #define ROA_INI2_OPT_PARTYCHAT _T("UsePartyChat")
  28. #define ROA_INI2_OPT_AUTOPICKUP _T("AutoPickup")
  29. #define ROA_INI2_OPT_BOSSINFO _T("InformBossTime")
  30. #define ROA_INI2_OPT_MOVEPICKUP _T("MovePickup")
  31. #define ROA_INI2_OPT_LAUNCHER _T("Launcher")
  32. #define ROA_INI2_OPT_LAUNCHERPAPRAM _T("LaunchParam")
  33. #define ROA_INI2_OPT_EMOTION _T("Emotion")
  34. #define ROA_INI2_OPT_AUTOCONT _T("AutoContinue")
  35. #define ROA_INI2_OPT_WELCOMEDELAY _T("WelcomeDelay")
  36. #define ROA_INI2_OPT_SEARCHDELAY _T("AutoSearchDelay")
  37. #define ROA_INI2_OPT_PICKUPDISTANCE _T("PickupDistance")
  38. #define ROA_INI2_OPT_ATTACKPERS _T("AttackPerSecond")
  39. #define ROA_INI2_OPT_HPITEMS _T("HPRecoverItems")
  40. #define ROA_INI2_OPT_SPITEMS _T("SPRecoverItems")
  41. #define ROA_INI2_OPT_ITEMUSEINT _T("ItemUseInterval")
  42. #define ROA_INI2_SETTING_CMN _T("CommonSetting")
  43. #define ROA_INI2_SETTING_MVP _T("MvpSetting")
  44. #define ROA_INI2_SETTING_PVP _T("PvpSetting")
  45. #define ROA_INI2_SETTING_GVG _T("GvgSetting")
  46. #define ROA_INI2_SETTING_KEY _T("ShortcutKey")
  47. #define ROA_INI2_BOSSINFO _T("BossInfo")
  48. #define ROA_MAP_ITEMTYPES "..\tables\itemtypes.txt"
  49. #define ROA_MAP_EQUIPTYPES  "..\tables\equiptypes.txt"
  50. #define ROA_MAP_MAPNAME "..\tables\maps.txt"
  51. #define ROA_MAP_JOB "..\tables\jobs.txt"
  52. #define ROA_MAP_SEX "..\tables\sex.txt"
  53. #define ROA_MAP_SKILL "..\tables\skills.txt"
  54. #define ROA_MAP_STATUS011F "..\tables\status011f.txt"
  55. #define ROA_MAP_STATUS0119 "..\tables\status0119.txt"
  56. #define ROA_MAP_SKILLSST "..\tables\skillsst.txt"
  57. #define ROA_MAP_ITEMS "..\tables\items.txt"
  58. #define ROA_AVOID_AIDS "..\tables\avoidaid.txt"
  59. #define ROA_MAP_MVPMONSTER "..\tables\mvpmonster.txt"
  60. #define ROA_MAP_MONSTER "..\tables\monsters.txt"
  61. #define ROA_MAP_ELEMENTS "..\tables\elements.txt"
  62. #define MAX_NAME_LENGTH 24
  63. #define MAX_CHAT_MSG 1024
  64. const CString ATTACKSKILL[] = 
  65. {
  66. _T("停止攻击"),
  67. _T("普通物理攻击"),
  68. _T("狂击"),
  69. _T("怒爆"),
  70. _T("连刺攻击"),
  71. _T("骑乘攻击"),
  72. _T("长矛刺击"),
  73. _T("投掷长矛攻击"),
  74. _T("怪物互击"),
  75. _T("二连矢"),
  76. _T("箭雨"),
  77. _T("闪电冲击"),
  78. _T("金钱攻击"),
  79. _T("手推车攻击"),
  80. _T("音速投掷"),
  81. // _T("背刺"),
  82. _T("圣十字攻击"),
  83. _T("缠箭投掷"),
  84. _T("乐器攻击"),
  85. _T("盾击"),
  86. _T("回旋盾击"),
  87. _T("治愈术"),
  88. _T("转生术"),
  89. _T("神圣之光"),
  90. _T("天使之怒"),
  91. };
  92. const int ATTACKSKILLNUM = sizeof(ATTACKSKILL) / sizeof(ATTACKSKILL[0]);
  93. const CString PROTECTSKILL[] = 
  94. {
  95. _T("光之障壁"),
  96. _T("暗之障壁")
  97. };
  98. const int PROTECTSKILLNUM = sizeof(PROTECTSKILL) / sizeof(PROTECTSKILL[0]);
  99. const CString PROTECTSTATE[] = 
  100. {
  101. _T("光之障壁"),
  102. _T("暗之障壁")
  103. };
  104. const int PROTECTSTATENUM = sizeof(PROTECTSTATE) / sizeof(PROTECTSTATE[0]);
  105. enum
  106. {
  107. eItemName = 0,
  108. eItemSlots = 1,
  109. eItemPriority =2,
  110. eItemMax
  111. };
  112. enum
  113. {
  114. eModeNormal = 0,
  115. eModeMvp = eModeNormal + 1,
  116. eModePvp = eModeMvp + 1,
  117. eModeGvg = eModePvp + 1,
  118. eModeMax = eModeGvg + 1,
  119. };
  120. enum
  121. {
  122. eSkillName = 0,
  123. eSkillAlias = 1,
  124. eSkillMax
  125. };
  126. typedef enum tagLogLevel
  127. {
  128. eLogNone = -1,
  129. eLogError = 0,
  130. eLogCommon = 1,
  131. eLogInfo = 2,
  132. eLogDebug = 3
  133. }LOG_LEVEL;
  134. typedef enum tagItemPriority
  135. {
  136. eIpGrab = 0,
  137. eIpGather = 1,
  138. eIpPickup = 2,
  139. eIpIgnore = 3,
  140. eIpMax
  141. }ITEMPRIORITY;
  142. class INVENTORY
  143. {
  144. public:
  145. INVENTORY()
  146. {
  147. init();
  148. }
  149. DWORD dwIndex;
  150. WORD wAmount;
  151. DWORD dwId;
  152. BOOL bIdentified;
  153. BYTE byAttrib;
  154. BYTE byRefine;
  155. WORD wCard[4];
  156. WORD wEquipType;
  157. WORD wType;
  158. WORD wEquipped;
  159. BYTE byElement;
  160. BYTE byStar;
  161. void init()
  162. {
  163. dwIndex = 0;
  164. wAmount = 0;
  165. dwId = 0;
  166. bIdentified = false;
  167. byAttrib = 0;
  168. byRefine = 0;
  169. wCard[0] = wCard[1] = wCard[2] = wCard[3] = 0;
  170. wEquipType = 0;
  171. wType = 0;
  172. wEquipped = 0;
  173. byElement = 0;
  174. byStar = 0;
  175. }
  176. };
  177. class ITEM
  178. {
  179. public:
  180. ITEM()
  181. {
  182. init();
  183. }
  184. DWORD dwId;
  185. DWORD dwAppearTime;
  186. WORD wAmount;
  187. WORD wType;
  188. POINT pntPos;
  189. int nPickupFailed;
  190. ITEMPRIORITY ePriority;
  191. void init()
  192. {
  193. dwAppearTime = 0;
  194. wAmount = 0;
  195. wType = 0;
  196. pntPos.x = 0;
  197. pntPos.y = 0;
  198. nPickupFailed = 0;
  199. ePriority = eIpGrab;
  200. }
  201. };
  202. class SPELL
  203. {
  204. public:
  205. SPELL()
  206. {
  207. init();
  208. }
  209. DWORD dwId;
  210. DWORD dwSourceId;
  211. POINT pntPos;
  212. WORD wSkill;
  213. void init()
  214. {
  215. dwId = 0;
  216. dwSourceId = 0;
  217. pntPos.x = 0;
  218. pntPos.y = 0;
  219. wSkill = 0;
  220. }
  221. };
  222. class MONSTER
  223. {
  224. public:
  225. MONSTER()
  226. {
  227. init();
  228. }
  229. DWORD dwId;
  230. WORD wType;
  231. POINT pntPos;
  232. POINT pntTo;
  233. BYTE byLookHead;
  234. BYTE byLookBody;
  235. char cName[MAX_NAME_LENGTH+1];
  236. int nProtecting;
  237. WORD wFrozen;
  238. void init()
  239. {
  240. dwId = 0;
  241. wType = 0;
  242. pntPos.x = 0;
  243. pntPos.y = 0;
  244. pntTo.x = 0;
  245. pntTo.y = 0;
  246. byLookHead = 0;
  247. byLookBody = 0;
  248. memset(cName, 0, MAX_NAME_LENGTH+1);
  249. nProtecting = 0;
  250. wFrozen = 0;
  251. }
  252. };
  253. class PLAYER
  254. {
  255. public:
  256. PLAYER()
  257. {
  258. init();
  259. }
  260. DWORD dwId;
  261. DWORD dwAppearTime;
  262. char cName[MAX_NAME_LENGTH+1];
  263. char cGuild[MAX_NAME_LENGTH+1];
  264. BYTE bySex;
  265. POINT pntPos;
  266. POINT pntTo;
  267. WORD wType;
  268. BOOL bSit;
  269. BYTE byLookHead;
  270. BYTE byLookBody;
  271. int nProtecting;
  272. BOOL bDied;
  273. WORD wStatus0119_01;
  274. WORD wStatus0119_02;
  275. WORD wStatus0119_03;
  276. void init()
  277. {
  278. pntPos.x = 0;
  279. pntPos.y = 0;
  280. pntTo.x = 0;
  281. pntTo.y = 0;
  282. dwId = 0;
  283. dwAppearTime = 0;
  284. memset(cName, 0, MAX_NAME_LENGTH);
  285. memset(cGuild, 0, MAX_NAME_LENGTH);
  286. bySex = 0;
  287. wType = 0;
  288. bSit = false;
  289. byLookHead = 0;
  290. byLookBody = 0;
  291. nProtecting = 0;
  292. bDied = false;
  293. wStatus0119_01 = wStatus0119_02 = wStatus0119_03 = 0;
  294. }
  295. };
  296. class YOU
  297. {
  298. public:
  299. YOU()
  300. {
  301. init();
  302. }
  303. char cName[MAX_NAME_LENGTH+1];
  304. char cGuild[MAX_NAME_LENGTH+1];
  305. char cJob[MAX_NAME_LENGTH+1];
  306. WORD wLevel;
  307. WORD wJobLevel;
  308. WORD wHp;
  309. WORD wHpMax;
  310. WORD wSp;
  311. WORD wSpMax;
  312. DWORD dwExp;
  313. DWORD dwExpMax;
  314. DWORD dwJobExp;
  315. DWORD dwJobExpMax;
  316. DWORD dwZenny;
  317. DWORD dwWeight;
  318. DWORD dwWeightMax;
  319. POINT pntPos;
  320. POINT pntTo;
  321. BYTE byLookHead;
  322. BYTE byLookBody;
  323. /* BYTE byStr;
  324. BYTE byAgi;
  325. BYTE byVit;
  326. BYTE byInt;
  327. BYTE byDex;
  328. BYTE byLuk;
  329. */ BOOL bSit;
  330. // BOOL bTwoHandsQuiken;
  331. BOOL bDied;
  332. WORD wStatus0119_01;
  333. WORD wStatus0119_02;
  334. WORD wStatus0119_03;
  335. int nProtecting;
  336. void init()
  337. {
  338. memset(cName, 0, sizeof(MAX_NAME_LENGTH+1));
  339. memset(cGuild, 0, sizeof(MAX_NAME_LENGTH+1));
  340. memset(cJob, 0, sizeof(MAX_NAME_LENGTH+1));
  341. wLevel = 0;
  342. wJobLevel = 0;
  343. wHp = 0;
  344. wHpMax = 0;
  345. wSp = 0;
  346. wSpMax = 0;
  347. dwExp = 0;
  348. dwExpMax = 0;
  349. dwJobExp = 0;
  350. dwJobExpMax = 0;
  351. dwZenny = 0;
  352. dwWeight = 0;
  353. dwWeightMax = 0;
  354. pntPos.x = 0;
  355. pntPos.y = 0;
  356. pntTo.x = 0;
  357. pntTo.y = 0;
  358. byLookHead = 0;
  359. byLookBody = 0;
  360. bSit = false;
  361. // bTwoHandsQuiken = false;
  362. bDied = false;
  363. wStatus0119_01 = wStatus0119_02 = wStatus0119_03 = 0;
  364. }
  365. };
  366. class PORTAL
  367. {
  368. public:
  369. PORTAL()
  370. {
  371. init();
  372. }
  373. DWORD dwId;
  374. DWORD dwAppearTime;
  375. WORD wType;
  376. POINT pntPos;
  377. void init()
  378. {
  379. dwId = 0;
  380. dwAppearTime = 0;
  381. wType = 0;
  382. pntPos.x = 0;
  383. pntPos.y = 0;
  384. }
  385. };
  386. class SKILL
  387. {
  388. public:
  389. SKILL()
  390. {
  391. init();
  392. }
  393. DWORD dwIndex;
  394. DWORD dwId;
  395. WORD wLevel;
  396. void init()
  397. {
  398. dwIndex = 0;
  399. dwId = 0;
  400. wLevel = 0;
  401. };
  402. };
  403. template<class TYPE, class ARG_TYPE>
  404. class CIdArray : public CArray<TYPE, ARG_TYPE>
  405. {
  406. public:
  407. int FindIndex(LPCTSTR lpszIndex)
  408. {
  409. DWORD dwIndex;
  410. sscanf(lpszIndex, "%d" , &dwIndex);
  411. return(FindIndex(dwIndex));
  412. }
  413. int FindIndex(DWORD nIndex)
  414. {
  415. int nRtn = -1;
  416. for(int i=0; i<GetSize(); i++)
  417. {
  418. if(nIndex == GetAt(i).dwIndex)
  419. {
  420. nRtn = i;
  421. break;
  422. }
  423. }
  424. return(nRtn);
  425. }
  426. int FindId(DWORD nId)
  427. {
  428. int nRtn = -1;
  429. for(int i=0; i<GetSize(); i++)
  430. {
  431. if(nId == GetAt(i).dwId)
  432. {
  433. nRtn = i;
  434. break;
  435. }
  436. }
  437. return(nRtn);
  438. }
  439. int FindId(LPCTSTR lpszId)
  440. {
  441. DWORD dwId;
  442. sscanf(lpszId, "%X" , &dwId);
  443. return(FindId(dwId));
  444. }
  445. // Damage
  446. int GetDamage(DWORD dwId1, DWORD dwId2)
  447. {
  448. int nIndex = FindDamage(dwId1, dwId2);
  449. int nRtn = 0;
  450. if(-1 != nIndex)
  451. {
  452. nRtn = GetAt(nIndex).dwDamage;
  453. }
  454. return(nRtn);
  455. }
  456. int FindDamage(DWORD dwId1, DWORD dwId2)
  457. {
  458. int nRtn = -1;
  459. for(int i=0; i<GetSize(); i++)
  460. {
  461. if(dwId1 == GetAt(i).dwId1 && dwId2 == GetAt(i).dwId2)
  462. {
  463. nRtn = i;
  464. break;
  465. }
  466. }
  467. return(nRtn);
  468. }
  469. BOOL FindDamageFrom(DWORD dwId, CString& strName, DWORD& dwDamage)
  470. {
  471. BOOL bRtn = false;
  472. int nCnt = 0;
  473. strName = "";
  474. dwDamage = 0;
  475. for(int i=0; i<GetSize(); i++)
  476. {
  477. if(GetAt(i).dwId2 == dwId)
  478. {
  479. dwDamage += GetAt(i).dwDamage;
  480. strName = utlFindTarget(GetAt(i).dwId1);
  481. nCnt++;
  482. }
  483. }
  484. if(nCnt > 0)
  485. bRtn = true;
  486. if(nCnt > 1)
  487. strName += "*";
  488. return(bRtn);
  489. }
  490. BOOL FindDamageTo(DWORD dwId, CString& strName, DWORD& dwDamage)
  491. {
  492. BOOL bRtn = false;
  493. int nCnt = 0;
  494. strName = "";
  495. dwDamage = 0;
  496. for(int i=0; i<GetSize(); i++)
  497. {
  498. if(GetAt(i).dwId1 == dwId)
  499. {
  500. dwDamage += GetAt(i).dwDamage;
  501. strName = utlFindTarget(GetAt(i).dwId2);
  502. nCnt++;
  503. }
  504. }
  505. if(nCnt > 0)
  506. bRtn = true;
  507. if(nCnt > 1)
  508. strName += "*";
  509. return(bRtn);
  510. }
  511. BOOL FindDamageFrom(DWORD dwId, CDWordArray &dwTargetArray, CDWordArray &dwDamageArray)
  512. {
  513. BOOL bRtn = false;
  514. DWORD dwDamage = 0;
  515. DWORD dwTarget = 0;
  516. dwTargetArray.RemoveAll();
  517. dwDamageArray.RemoveAll();
  518. for(int i=0; i<GetSize(); i++)
  519. {
  520. if(GetAt(i).dwId2 == dwId)
  521. {
  522. dwDamage = GetAt(i).dwDamage;
  523. dwTarget = GetAt(i).dwId1;
  524. dwTargetArray.Add(dwTarget);
  525. dwDamageArray.Add(dwDamage);
  526. bRtn = true;
  527. }
  528. }
  529. return(bRtn);
  530. }
  531. BOOL FindDamageTo(DWORD dwId, CDWordArray &dwTargetArray, CDWordArray &dwDamageArray)
  532. {
  533. BOOL bRtn = false;
  534. DWORD dwDamage = 0;
  535. DWORD dwTarget = 0;
  536. dwTargetArray.RemoveAll();
  537. dwDamageArray.RemoveAll();
  538. for(int i=0; i<GetSize(); i++)
  539. {
  540. if(GetAt(i).dwId1 == dwId)
  541. {
  542. dwDamage = GetAt(i).dwDamage;
  543. dwTarget = GetAt(i).dwId2;
  544. dwTargetArray.Add(dwTarget);
  545. dwDamageArray.Add(dwDamage);
  546. bRtn = true;
  547. }
  548. }
  549. return(bRtn);
  550. }
  551. void RemoveDamage(DWORD dwId)
  552. {
  553. BOOL bFinish = false;
  554. while(!bFinish)
  555. {
  556. bFinish = true;
  557. for(int i=0; i<GetSize(); i++)
  558. {
  559. if(GetAt(i).dwId1 == dwId || GetAt(i).dwId2 == dwId)
  560. {
  561. RemoveAt(i);
  562. bFinish = false;
  563. break;
  564. }
  565. }
  566. }
  567. }
  568. };
  569. class DAMAGE
  570. {
  571. public:
  572. DAMAGE()
  573. {
  574. init();
  575. }
  576. DWORD dwIndex; //DUMMY
  577. DWORD dwId1; // Damage from
  578. DWORD dwId2; // Damage to
  579. DWORD dwDamage;
  580. DWORD dwStart;
  581. DWORD dwHits[MAX_SKILL];
  582. DWORD dwDamage2[MAX_SKILL];
  583. DWORD dwMiss[MAX_SKILL];
  584. DWORD dwDamageMin[MAX_SKILL];
  585. DWORD dwDamageMax[MAX_SKILL];
  586. void init()
  587. {
  588. int i;
  589. dwId1 = 0;
  590. dwId2 = 0;
  591. dwDamage = 0;
  592. dwStart = 0;
  593. for(i=0; i<MAX_SKILL; i++)
  594. {
  595. dwHits[i] = 0;
  596. dwDamage2[i] = 0;
  597. dwMiss[i] = 0;
  598. dwDamageMin[i] = 99999;
  599. dwDamageMax[i] = 0;
  600. }
  601. }
  602. };
  603. class AUTOHEAL2
  604. {
  605. public:
  606. AUTOHEAL2() {init();}
  607. BOOL bHP;
  608. int nHP1Lower;
  609. int nHP1Upper;
  610. CString strHP1Item;
  611. int nHP2Lower;
  612. int nHP2Upper;
  613. BOOL bSP;
  614. int nSPUpper;
  615. CString strSPItem;
  616. BOOL bHPTele;
  617. int nHPTeleUpper;
  618. void init()
  619. {
  620. bHP = false;
  621. nHP1Lower = 1;
  622. nHP1Upper = 2000;
  623. strHP1Item = _T("未知物品");
  624. nHP2Lower = 1;
  625. nHP2Upper = 2000;
  626. bSP = false;
  627. nSPUpper = 30;
  628. strSPItem = _T("未知物品");
  629. bHPTele = false;
  630. nHPTeleUpper = 100;
  631. }
  632. AUTOHEAL2& operator= (const AUTOHEAL2& that)
  633. {
  634. bHP = that.bHP;
  635. nHP1Lower = that.nHP1Lower;
  636. nHP1Upper = that.nHP1Upper;
  637. strHP1Item = that.strHP1Item;
  638. nHP2Lower = that.nHP2Lower;
  639. nHP2Upper = that.nHP2Upper;
  640. bSP = that.bSP;
  641. nSPUpper = that.nSPUpper;
  642. strSPItem = that.strSPItem;
  643. bHPTele = that.bHPTele;
  644. nHPTeleUpper = that.nHPTeleUpper;
  645. return(*this);
  646. }
  647. CString GetProfileString()
  648. {
  649. CString strRtn, strTemp;
  650. strTemp.Format(_T("%d,%d,%d,%s,%d,%d"), bHP, nHP1Lower, nHP1Upper, strHP1Item, nHP2Lower, nHP2Upper);
  651. strRtn = strTemp;
  652. strTemp.Format(_T(",%d,%d,%s,%d,%d"), bSP, nSPUpper, strSPItem, bHPTele, nHPTeleUpper);
  653. strRtn += strTemp;
  654. return strRtn;
  655. }
  656. void ParseProfileString(CString& strProfile)
  657. {
  658. CString strTemp, nIndex;
  659. strTemp = utlParseString(strProfile); bHP = atoi(strTemp);
  660. strTemp = utlParseString(strProfile); nHP1Lower = atoi(strTemp);
  661. strTemp = utlParseString(strProfile); nHP1Upper = atoi(strTemp);
  662. strTemp = utlParseString(strProfile); strHP1Item = strTemp;
  663. strTemp = utlParseString(strProfile); nHP2Lower = atoi(strTemp);
  664. strTemp = utlParseString(strProfile); nHP2Upper = atoi(strTemp);
  665. strTemp = utlParseString(strProfile); bSP = atoi(strTemp);
  666. strTemp = utlParseString(strProfile); nSPUpper = atoi(strTemp);
  667. strTemp = utlParseString(strProfile); strSPItem = strTemp;
  668. strTemp = utlParseString(strProfile); bHPTele = atoi(strTemp);
  669. strTemp = utlParseString(strProfile); nHPTeleUpper = atoi(strTemp);
  670. }
  671. };
  672. class SETTING_CMN
  673. {
  674. public:
  675. SETTING_CMN() {init();}
  676. AUTOHEAL2 autoheal;
  677. CString strSavePoint;
  678. void init()
  679. {
  680. autoheal.init();
  681. strSavePoint.Empty();
  682. }
  683. SETTING_CMN& operator= (const SETTING_CMN& that)
  684. {
  685. autoheal = that.autoheal;
  686. strSavePoint = that.strSavePoint;
  687. return(*this);
  688. }
  689. CString GetProfileString()
  690. {
  691. CString strRtn, strTemp;
  692. strTemp.Format(_T("%s"), autoheal.GetProfileString());
  693. strRtn = strTemp;
  694. strTemp.Format(_T(",%s"), strSavePoint);
  695. strRtn += strTemp;
  696. return strRtn;
  697. }
  698. void ParseProfileString(CString& strProfile)
  699. {
  700. CString strTemp, nIndex;
  701. autoheal.ParseProfileString(strProfile);
  702. if(strProfile.GetLength() > 0 && strProfile[0] == _T(','))
  703. strProfile = strProfile.Mid(1);
  704. strSavePoint = strProfile;
  705. }
  706. };
  707. class SETTING_MVP
  708. {
  709. public:
  710. SETTING_MVP() {init();}
  711. AUTOHEAL2 autoheal;
  712. BOOL bAttack;
  713. CString strAttackSkill;
  714. BOOL bFollow;
  715. BOOL bRegionAtk;
  716. CString strRegionAtkSkill;
  717. int nRegionAtkNum;
  718. BOOL bAttack2;
  719. CString strAttack2Cond;
  720. CString strAttack2Skill;
  721. BOOL bProtect;
  722. CString strProtectSkill;
  723. BOOL bAntiBless;
  724. void init()
  725. {
  726. autoheal.init();
  727. bAttack = false;
  728. strAttackSkill.Empty();
  729. bFollow = false;
  730. bRegionAtk = false;
  731. strRegionAtkSkill.Empty();
  732. nRegionAtkNum = 4;
  733. bAttack2 = false;
  734. strAttack2Cond.Empty();
  735. strAttack2Skill.Empty();
  736. bProtect = false;
  737. strProtectSkill.Empty();
  738. bAntiBless = false;
  739. }
  740. SETTING_MVP& operator= (const SETTING_MVP& that)
  741. {
  742. autoheal = that.autoheal;
  743. bAttack = that.bAttack;
  744. strAttackSkill = that.strAttackSkill;
  745. bFollow = that.bFollow;
  746. bRegionAtk = that.bRegionAtk;
  747. strRegionAtkSkill = that.strRegionAtkSkill;
  748. nRegionAtkNum = that.nRegionAtkNum;
  749. bAttack2 = that.bAttack2;
  750. strAttack2Cond = that.strAttack2Cond;
  751. strAttack2Skill = that.strAttack2Skill;
  752. bProtect = that.bProtect;
  753. strProtectSkill = that.strProtectSkill;
  754. bAntiBless = that.bAntiBless;
  755. return(*this);
  756. }
  757. CString GetProfileString()
  758. {
  759. CString strRtn, strTemp;
  760. strTemp.Format(_T("%s"), autoheal.GetProfileString());
  761. strRtn = strTemp;
  762. strTemp.Format(_T("%d,%s,%d"), bAttack, strAttackSkill, bFollow);
  763. strRtn += _T(",");
  764. strRtn += strTemp;
  765. strTemp.Format(_T("%d,%s,%d"), bRegionAtk, strRegionAtkSkill, nRegionAtkNum);
  766. strRtn += _T(",");
  767. strRtn += strTemp;
  768. strTemp.Format(_T("%d,%s,%s"), bAttack2, strAttack2Cond, strAttack2Skill);
  769. strRtn += _T(",");
  770. strRtn += strTemp;
  771. strTemp.Format(_T("%d,%s,%d"), bProtect, strProtectSkill, bAntiBless);
  772. strRtn += _T(",");
  773. strRtn += strTemp;
  774. return strRtn;
  775. }
  776. void ParseProfileString(CString& strProfile)
  777. {
  778. CString strTemp, nIndex;
  779. autoheal.ParseProfileString(strProfile);
  780. if(strProfile.GetLength() > 0 && strProfile[0] == _T(','))
  781. strProfile = strProfile.Mid(1);
  782. strTemp = utlParseString(strProfile); bAttack = atoi(strTemp);
  783. strTemp = utlParseString(strProfile); strAttackSkill = strTemp;
  784. strTemp = utlParseString(strProfile); bFollow = atoi(strTemp);
  785. strTemp = utlParseString(strProfile); bRegionAtk = atoi(strTemp);
  786. strTemp = utlParseString(strProfile); strRegionAtkSkill = strTemp;
  787. strTemp = utlParseString(strProfile); nRegionAtkNum = atoi(strTemp);
  788. strTemp = utlParseString(strProfile); bAttack2 = atoi(strTemp);
  789. strTemp = utlParseString(strProfile); strAttack2Cond = strTemp;
  790. strTemp = utlParseString(strProfile); strAttack2Skill = strTemp;
  791. strTemp = utlParseString(strProfile); bProtect = atoi(strTemp);
  792. strTemp = utlParseString(strProfile); strProtectSkill = strTemp;
  793. strTemp = utlParseString(strProfile); bAntiBless = atoi(strTemp);
  794. }
  795. };
  796. class BOSSINFO
  797. {
  798. public:
  799. BOSSINFO()
  800. {
  801. init();
  802. }
  803. CString strBossName;
  804. CTime tmBossTime;
  805. BOOL bWaring[5];
  806. void init()
  807. {
  808. strBossName = _T("");
  809. reset();
  810. }
  811. void reset()
  812. {
  813. for(int i=0; i<5; i++)
  814. bWaring[i] = false;
  815. }
  816. };
  817. typedef void (*FUNCCALL)(DWORD dwPara);
  818. void ufDummy(DWORD dwPara);
  819. void ufAutoAttackMvp(DWORD dwPara);
  820. void ufAutoSearchMvp(DWORD dwPara);
  821. void ufUseSkillWhen(DWORD dwPara);
  822. void ufUseSkillOnMvp(DWORD dwPara);
  823. void ufTeleport(DWORD dwPara);
  824. void ufRuwach(DWORD dwPara);
  825. void ufAngelus(DWORD dwPara);
  826. void ufMagnificat(DWORD dwPara);
  827. void ufGloria(DWORD dwPara);
  828. void ufEndure(DWORD dwPara);
  829. void ufHome(DWORD dwPara);
  830. void ufBossList(DWORD dwPara);
  831. void ufPartyChat(DWORD dwPara);
  832. void ufTakeItem(DWORD dwPara);
  833. void ufShowStatus(DWORD dwPara);
  834. void ufLoud(DWORD dwPara);
  835. void ufMaximize(DWORD dwPara);
  836. void ufOverthrust(DWORD dwPara);
  837. void ufAdrenaline(DWORD dwPara);
  838. void ufWeaponperfect(DWORD dwPara);
  839. void ufSpeedUp(DWORD dwPara);
  840. void ufSpeedDown(DWORD dwPara);
  841. void ufSight(DWORD dwPara);
  842. void ufConcentration(DWORD dwPara);
  843. void ufEnergyCoat(DWORD dwPara);
  844. void ufAppleIdun(DWORD dwPara);
  845. void ufAssassinCross(DWORD dwPara);
  846. void ufFrostJoke(DWORD dwPara);
  847. void ufDissonance(DWORD dwPara);
  848. void ufUglyDance(DWORD dwPara);
  849. void ufScream(DWORD dwPara);
  850. void ufAutoSaClassChange(DWORD dwPara);
  851. void ufPopupRoaWindow(DWORD dwPara);
  852. void ufShowServerIp(DWORD dwPara);
  853. void ufShowPlayers(DWORD dwPara);
  854. void ufShowCarts(DWORD dwPara);
  855. void ufShowInventory(DWORD dwPara);
  856. void ufShowMonsters(DWORD dwPara);
  857. void ufShowSkills(DWORD dwPara);
  858. void ufShowEmotion(DWORD dwPara);
  859. typedef enum
  860. {
  861. eDummy = 0,
  862. eAutoAttackMvp,
  863. eAutoSearchMvp,
  864. eUseSkillWhen,
  865. eUseSkillOnMvp,
  866. eHome,
  867. eBossList,
  868. ePartyChat,
  869. eTakeItem,
  870. eTeleport,
  871. eRuwach,
  872. eAngelus,
  873. eMagnificat,
  874. eGloria,
  875. eEndure,
  876. eLoud,
  877. eMaximize,
  878. eOverthrust,
  879. eAdrenaline,
  880. eWeaponperfect,
  881. eSight,
  882. eConcentration,
  883. eEnergyCoat,
  884. eAppleIdun,
  885. eAssassinCross,
  886. eFrostJoke,
  887. eDissonance,
  888. eUglyDance,
  889. eScream,
  890. eAutoSaClassChange,
  891. eUFMax
  892. }USERFUNCTION;
  893. extern CString UFDESC[];
  894. extern FUNCCALL UFENTRY[];
  895. extern USERFUNCTION userfuncs[12];
  896. const int UFNUM = int(eUFMax);
  897. class OPTION
  898. {
  899. public:
  900. OPTION() { init(); }
  901. BOOL bTestServer;
  902. BOOL bUsePartyChat;
  903. BOOL bAutoPickup;
  904. BOOL bMovePickup;
  905. BOOL bBossInfo;
  906. CString strLauncher;
  907. CString strLaunchParam;
  908. BOOL bNpcTalkContinue;
  909. int nWelcomeDelay;
  910. int nAutoSearchDelay;
  911. int nAttackPerSecond;
  912. int nPickupDistance;
  913. CString strHPRecoverItems;
  914. CString strSPRecoverItems;
  915. int nItemUseInterval;
  916. void init()
  917. {
  918. bTestServer = false;
  919. bUsePartyChat = false;
  920. bAutoPickup = true;
  921. bMovePickup = false;
  922. bBossInfo = true;
  923. strLauncher.Empty();
  924. strLaunchParam.Empty();
  925. bNpcTalkContinue = true;
  926. nWelcomeDelay = 15000;
  927. nAutoSearchDelay = 300;
  928. nAttackPerSecond = 1;
  929. nPickupDistance = 5;
  930. strHPRecoverItems = _T("红色药水|赤色药水|黄色药水|白色药水");
  931. strSPRecoverItems = _T("蜂蜜|蓝色药水|蓝色药草|葡萄|葡萄汁|蜂胶");
  932. nItemUseInterval = 200;
  933. }
  934. OPTION& operator= (const OPTION& that)
  935. {
  936. bTestServer = that.bTestServer;
  937. bUsePartyChat = that.bUsePartyChat;
  938. bAutoPickup = that.bAutoPickup;
  939. bMovePickup = that.bMovePickup;
  940. bBossInfo = that.bBossInfo;
  941. strLauncher = that.strLauncher;
  942. strLaunchParam = that.strLaunchParam;
  943. bNpcTalkContinue = that.bNpcTalkContinue;
  944. nWelcomeDelay = that.nWelcomeDelay;
  945. nAutoSearchDelay = that.nAutoSearchDelay;
  946. nAttackPerSecond = that.nAttackPerSecond;
  947. nPickupDistance = that.nPickupDistance;
  948. strHPRecoverItems = that.strHPRecoverItems;
  949. strSPRecoverItems = that.strSPRecoverItems;
  950. nItemUseInterval = that.nItemUseInterval;
  951. return(*this);
  952. }
  953. };
  954. typedef CIdArray<INVENTORY, INVENTORY> INVENTORYARRAY;
  955. typedef CIdArray<MONSTER, MONSTER> MONSTERARRAY;
  956. typedef CIdArray<PLAYER, PLAYER> PLAYERARRAY;
  957. typedef CIdArray<PORTAL, PORTAL> PORTALARRAY;
  958. typedef CIdArray<ITEM, ITEM> ITEMARRAY;
  959. typedef CIdArray<SKILL, SKILL> SKILLARRAY;
  960. typedef CIdArray<DAMAGE, DAMAGE> DAMAGEARRAY;
  961. typedef CArray<BOSSINFO, BOSSINFO> BOSSINFOARRAY;
  962. typedef CIdArray<SPELL, SPELL> SPELLARRAY;
  963. extern CSocket sockInject;
  964. extern CSocket sockServer;
  965. extern int nConnState;
  966. extern DWORD dwAccountId;
  967. extern DWORD dwCharId;
  968. extern DWORD dwSessionId;
  969. extern BOOL bWelcomeSent;
  970. extern CFile fLog;
  971. extern YOU youTemp[3];
  972. extern int nCharSelected;
  973. extern INVENTORYARRAY inventory;
  974. extern MONSTERARRAY monsters;
  975. extern YOU you;
  976. extern PLAYERARRAY players;
  977. extern PLAYERARRAY partners;
  978. extern PORTALARRAY portals;
  979. extern ITEMARRAY items;
  980. extern INVENTORYARRAY cart;
  981. extern SKILLARRAY skills;
  982. extern DAMAGEARRAY damages;
  983. extern BOSSINFOARRAY bossinfo;
  984. extern SPELLARRAY spells;
  985. extern CWinThread *pWorkingThread;
  986. extern int nThreadTerm;
  987. extern BOOL bConnected;
  988. extern LOG_LEVEL llFile;
  989. extern LOG_LEVEL llDlg;
  990. extern LOG_LEVEL llRo;
  991. extern CROAMap mapItem;
  992. extern CROAMap mapItemType;
  993. extern CROAMap mapEquipType;
  994. extern CROAMap mapMapName;
  995. extern CROAMap mapJob;
  996. extern CROAMap mapSex;
  997. extern CROAMap mapSkill;
  998. extern CROAMap mapMvpMonster;
  999. extern CROAMap mapMonster;
  1000. extern CROAMap mapStatus011f;
  1001. extern CROAMap mapStatus0119;
  1002. extern CROAMap mapElements;
  1003. extern CROAMap mapSkillsst;
  1004. extern CROAField field;
  1005. //extern CRITICAL_SECTION criticalSection;
  1006. extern OPTION option;
  1007. extern SETTING_CMN settingcmn;
  1008. extern SETTING_MVP settingmvp;
  1009. extern BOOL bFlyUsed;
  1010. extern BOOL bAutoSearch;
  1011. extern CString strAutoSearchMap;
  1012. extern DWORD dwAutoSearchTick;
  1013. extern BOOL bAutoSa;
  1014. extern DWORD dwAutoSaTick;
  1015. extern BOOL bProfileLoaded;
  1016. extern HHOOK hHook;
  1017. extern HINSTANCE hInstDll;
  1018. extern FUNCCALL curFunc;
  1019. extern DWORD curFuncPara;
  1020. extern BOOL bAiEnabled;
  1021. extern CString EMOTIONDEF[];
  1022. extern CString emotions[10];
  1023. const int EMNUM = 48;
  1024. //#define TIMEOUT_AUTOSEARCH 200
  1025. #define TIMEOUT_SIT 2000
  1026. #define TIMEOUT_STAND 2000
  1027. #define TIMEOUT_PICKUP 6000
  1028. #define TIMEOUT_ATTACK 5000
  1029. #define TIMEOUT_MOVE 3000
  1030. #define SECOND_PER_BLOCK 100
  1031. extern DWORD dwUseItemTick;
  1032. extern DWORD dwAttackTick;
  1033. extern CROAMap mapAvoidAid;
  1034. extern BYTE mode;
  1035. extern DWORD dwMvpId;
  1036. extern char cSendKey[MAX_PATH];
  1037. extern CStringArray HPITEMS;
  1038. extern CStringArray SPITEMS;
  1039. enum
  1040. {
  1041. eUnknown,
  1042. eRagexe,
  1043. eSakexe,
  1044. eSfExe
  1045. };
  1046. enum
  1047. {
  1048. eWindowBattle,
  1049. eWindowOption
  1050. };
  1051. extern CRITICAL_SECTION csShortcutFuncs;
  1052. extern BOOL bIsModal;
  1053. extern BYTE serverip[3][6];
  1054. //LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);
  1055. #endif //AFX_ROADEFS_H__B246916D_8303_42EE_AF13_20D988742F4D__INCLUDED_