Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.51 KB | None | 0 0
  1. void CGame::SendEventToNearClient_TypeA(short sOwnerH, char cOwnerType, DWORD dwMsgID, WORD wMsgType, short sV1, short sV2, short sV3)
  2. {
  3. int iRet = NULL, iShortCutIndex,*ipStatus, iDumm, dataLength;
  4. char cKey, cData[400];
  5.  
  6. int * ip = NULL;
  7. char * cp = NULL;
  8. DWORD * dwp = NULL;
  9. WORD * wp = NULL;
  10. short * sp = NULL;
  11.  
  12. int i = 0;
  13.  
  14. bool bOwnerSend, bFlag = true;
  15.  
  16. int iTemp = NULL;
  17. int iTemp2 = NULL;
  18. int iTemp3 = NULL;
  19.  
  20.  
  21. ZeroMemory(cData, sizeof(cData));
  22. ipStatus = (int *)&iDumm;
  23.  
  24. cKey = (char)(rand() % 255) + 1;
  25.  
  26. dwp = (DWORD *)(cData + DEF_INDEX4_MSGID);
  27. *dwp = dwMsgID;
  28.  
  29. wp = (WORD *)(cData + DEF_INDEX2_MSGTYPE);
  30. *wp = wMsgType;
  31.  
  32. cp = (char *)(cData + DEF_INDEX2_MSGTYPE + 2);
  33.  
  34. if (cOwnerType == DEF_OWNERTYPE_PLAYER)
  35. {
  36. if (m_pClientList[sOwnerH] == NULL) return;
  37.  
  38. switch (wMsgType)
  39. {
  40. case DEF_OBJECTNULLACTION:
  41. case DEF_OBJECTDAMAGE:
  42. case DEF_OBJECTDYING:
  43. bOwnerSend = true;
  44. break;
  45. default:
  46. bOwnerSend = false;
  47. break;
  48. }
  49.  
  50. switch (wMsgType)
  51. {
  52. case DEF_OBJECTMAGIC:
  53. case DEF_OBJECTDAMAGE:
  54. case DEF_OBJECTDAMAGEMOVE:
  55. case DEF_OBJECTDYING:
  56. dataLength = 11;
  57.  
  58. wp = (WORD *)cp;
  59. *wp = sOwnerH + 30000;
  60. cp += 2;
  61.  
  62. *cp = m_pClientList[sOwnerH]->m_cDir;
  63. cp++;
  64.  
  65. *cp = (unsigned char)sV1;
  66. cp++;
  67.  
  68. *cp = (unsigned char)sV2;
  69. cp++;
  70.  
  71. if(DEF_OBJECTDYING)
  72. {
  73. dataLength = 15;
  74.  
  75. sp = (short *)cp;
  76. *sp = m_pClientList[sOwnerH]->m_sX;
  77. cp += 2;
  78.  
  79. sp = (short *)cp;
  80. *sp = m_pClientList[sOwnerH]->m_sY;
  81. cp += 2;
  82. }
  83. break;
  84.  
  85. case DEF_OBJECTATTACK:
  86. case DEF_OBJECTATTACKMOVE:
  87. dataLength = 13;
  88.  
  89. wp = (WORD *)cp;
  90. *wp = sOwnerH + 30000;
  91. cp += 2;
  92.  
  93. *cp = m_pClientList[sOwnerH]->m_cDir;
  94. cp++;
  95.  
  96. *cp = sV1 - m_pClientList[sOwnerH]->m_sX;
  97. cp++;
  98.  
  99. *cp = sV2 - m_pClientList[sOwnerH]->m_sY;
  100. cp++;
  101.  
  102. sp = (short *)cp;
  103. *sp = sV3;
  104. cp += 2;
  105.  
  106. break;
  107.  
  108. case DEF_MSGTYPE_CONFIRM:
  109. case DEF_MSGTYPE_REJECT:
  110. case DEF_OBJECTNULLACTION:
  111. default:
  112. dataLength = 42;
  113.  
  114. wp = (WORD *)cp;
  115. *wp = sOwnerH;
  116. cp += 2;
  117.  
  118. sp = (short *)cp;
  119. *sp = m_pClientList[sOwnerH]->m_sX;
  120. cp += 2;
  121.  
  122. sp = (short *)cp;
  123. *sp = m_pClientList[sOwnerH]->m_sY;
  124. cp += 2;
  125.  
  126. sp = (short *)cp;
  127. *sp = m_pClientList[sOwnerH]->m_sType;
  128. cp += 2;
  129.  
  130. *cp = m_pClientList[sOwnerH]->m_cDir;
  131. cp++;
  132.  
  133. memcpy(cp, m_pClientList[sOwnerH]->m_cCharName, 10);
  134. cp += 10;
  135.  
  136. sp = (short *)cp;
  137. *sp = m_pClientList[sOwnerH]->m_sAppr1;
  138. cp += 2;
  139.  
  140. sp = (short *)cp;
  141. *sp = m_pClientList[sOwnerH]->m_sAppr2;
  142. cp += 2;
  143.  
  144. sp = (short *)cp;
  145. *sp = m_pClientList[sOwnerH]->m_sAppr3;
  146. cp += 2;
  147.  
  148. sp = (short *)cp;
  149. *sp = m_pClientList[sOwnerH]->m_sAppr4;
  150. cp += 2;
  151.  
  152. ip = (int *)cp;
  153. *ip = m_pClientList[sOwnerH]->m_iApprColor;
  154. cp += 4;
  155.  
  156. ip = (int *)cp;
  157. ipStatus = ip;
  158. *ip = m_pClientList[sOwnerH]->m_iStatus;
  159. cp += 4;
  160.  
  161. iTemp3 = m_pClientList[sOwnerH]->m_iStatus & 0x0F0FFFF7F;
  162.  
  163.  
  164. if (wMsgType == DEF_OBJECTNULLACTION)
  165. {
  166. if (m_pClientList[sOwnerH]->m_bIsKilled == TRUE)
  167. *cp = 1;
  168. else *cp = 0;
  169. }
  170. else *cp = 0;
  171. cp++;
  172. break;
  173. }
  174.  
  175.  
  176.  
  177. bFlag = TRUE;
  178. //pierwszy gracz
  179. iShortCutIndex = 0;
  180. while (bFlag == TRUE)
  181. {
  182. i = m_iClientShortCut[iShortCutIndex];
  183. iShortCutIndex++;
  184. if (i == 0) bFlag = FALSE;
  185.  
  186.  
  187. if (bFlag == TRUE)
  188. if ((m_pClientList[i]->m_cMapIndex == m_pClientList[sOwnerH]->m_cMapIndex) &&
  189. (m_pClientList[i]->m_sX >= m_pClientList[sOwnerH]->m_sX - 11) &&
  190. (m_pClientList[i]->m_sX <= m_pClientList[sOwnerH]->m_sX + 11) &&
  191. (m_pClientList[i]->m_sY >= m_pClientList[sOwnerH]->m_sY - 9) &&
  192. (m_pClientList[i]->m_sY <= m_pClientList[sOwnerH]->m_sY + 9))
  193. {
  194. if (m_pClientList[sOwnerH]->m_cSide != m_pClientList[i]->m_cSide)
  195. {
  196. if (m_pClientList[sOwnerH]->m_iAdminUserLevel > 1)
  197. {
  198. iTemp = m_pClientList[sOwnerH]->m_iStatus; //efekty GM
  199. }
  200. else if (i != sOwnerH)
  201. {
  202. iTemp = iTemp3;//tutaj ukryj efekty przed innymi graczami amp pfm itp
  203. }
  204. else
  205. {
  206. iTemp = m_pClientList[sOwnerH]->m_iStatus;
  207. }
  208. }
  209. else
  210. {
  211. iTemp = m_pClientList[sOwnerH]->m_iStatus;
  212. }
  213.  
  214. iTemp = 0x0FFFFFFF & iTemp;
  215. iTemp2 = iGetPlayerABSStatus(sOwnerH, i);
  216. iTemp = (iTemp | (iTemp2 << 28));
  217. *ipStatus = iTemp;
  218.  
  219.  
  220. if (bOwnerSend == true || i != sOwnerH)
  221. {
  222. //wsprintf(G_cTxt, "Gracz %s", m_pClientList[sOwnerH]->m_cCharName);
  223. //PutLogList(G_cTxt);
  224.  
  225. iRet = m_pClientList[i]->m_pXSock->iSendMsg(cData, dataLength, cKey);
  226. }
  227.  
  228. }
  229. }
  230. }
  231. else
  232. {
  233.  
  234. if (m_pNpcList[sOwnerH] == NULL) return;
  235.  
  236. // wsprintf(G_cTxt, "Npc %s", m_pNpcList[sOwnerH]->m_cName);
  237. //PutLogList(G_cTxt);
  238.  
  239. switch (wMsgType)
  240. {
  241. case DEF_OBJECTDAMAGE:
  242. case DEF_OBJECTDAMAGEMOVE:
  243. case DEF_OBJECTDYING:
  244. dataLength = 13;
  245.  
  246. wp = (WORD *)cp;
  247. *wp = sOwnerH + 40000;
  248. cp += 2;
  249.  
  250. *cp = m_pNpcList[sOwnerH]->m_cDir;
  251. cp++;
  252.  
  253. *cp = (unsigned char)sV1;
  254. cp++;
  255.  
  256. *cp = (unsigned char)sV2;
  257. cp++;
  258.  
  259. //Nigga: 2017/04/25 HP moba
  260. sp = (short *)cp;
  261. *sp = m_pNpcList[sOwnerH]->m_iHP;
  262. cp += 2;
  263.  
  264. if(DEF_OBJECTDYING)
  265. {
  266. dataLength = 17;
  267.  
  268. sp = (short *)cp;
  269. *sp = m_pNpcList[sOwnerH]->m_sX;
  270. cp += 2;
  271.  
  272. sp = (short *)cp;
  273. *sp = m_pNpcList[sOwnerH]->m_sY;
  274. cp += 2;
  275. }
  276. break;
  277.  
  278. case DEF_OBJECTATTACK:
  279. case DEF_OBJECTATTACKMOVE:
  280. dataLength = 15;
  281.  
  282. wp = (WORD *)cp;
  283. *wp = sOwnerH + 40000;
  284. cp += 2;
  285.  
  286. *cp = m_pNpcList[sOwnerH]->m_cDir;
  287. cp++;
  288.  
  289. *cp = sV1 - m_pNpcList[sOwnerH]->m_sX;
  290. cp++;
  291.  
  292. *cp = sV2 - m_pNpcList[sOwnerH]->m_sY;
  293. cp++;
  294.  
  295. sp = (short *)cp;
  296. *sp = sV3;
  297. cp += 2;
  298.  
  299. //Nigga: 2017/04/25 HP moba
  300. sp = (short *)cp;
  301. *sp = m_pNpcList[sOwnerH]->m_iHP;
  302. cp += 2;
  303.  
  304. break;
  305.  
  306. case DEF_MSGTYPE_CONFIRM:
  307. case DEF_MSGTYPE_REJECT:
  308. case DEF_OBJECTNULLACTION:
  309. default:
  310. dataLength = 29;
  311.  
  312. wp = (WORD *)cp;
  313. *wp = sOwnerH + 10000;
  314. cp += 2;
  315.  
  316. sp = (short *)cp;
  317. *sp = m_pNpcList[sOwnerH]->m_sX;
  318. cp += 2;
  319.  
  320. sp = (short *)cp;
  321. *sp = m_pNpcList[sOwnerH]->m_sY;
  322. cp += 2;
  323.  
  324. sp = (short *)cp;
  325. *sp = m_pNpcList[sOwnerH]->m_sType;
  326. cp += 2;
  327.  
  328. *cp = m_pNpcList[sOwnerH]->m_cDir;
  329. cp++;
  330.  
  331. memcpy(cp, m_pNpcList[sOwnerH]->m_cName, 5);
  332. cp += 5;
  333.  
  334. sp = (short *)cp;
  335. *sp = m_pNpcList[sOwnerH]->m_sAppr2;
  336. cp += 2;
  337.  
  338. //Nigga: 2017/04/25 HP moba
  339. sp = (short *)cp;
  340. *sp = m_pNpcList[sOwnerH]->m_iHP;
  341. cp += 2;
  342.  
  343. ip = (int *)cp;
  344. ipStatus = ip;
  345. *ip = m_pNpcList[sOwnerH]->m_iStatus;
  346. cp += 4;
  347.  
  348. if (wMsgType == DEF_OBJECTNULLACTION) {// v1.4
  349. if (m_pNpcList[sOwnerH]->m_bIsKilled == TRUE)
  350. *cp = 1;
  351. else *cp = 0;
  352. }
  353. else *cp = 0;
  354. cp++;
  355.  
  356. break;
  357. }
  358.  
  359. //iShortCutIndex = 1;
  360.  
  361.  
  362. //CClient * pClient;
  363. //while (i = m_iClientShortCut[iShortCutIndex++])
  364. //{
  365.  
  366. for (i = 1; i < DEF_MAXCLIENTS; i++)
  367. {
  368. if (m_pClientList[i] != NULL)
  369. {
  370. if ( (m_pClientList[i]->m_cMapIndex == m_pNpcList[sOwnerH]->m_cMapIndex) &&
  371. (m_pClientList[i]->m_sX >= m_pNpcList[sOwnerH]->m_sX - 11) &&
  372. (m_pClientList[i]->m_sX <= m_pNpcList[sOwnerH]->m_sX + 11) &&
  373. (m_pClientList[i]->m_sY >= m_pNpcList[sOwnerH]->m_sY - 9) &&
  374. (m_pClientList[i]->m_sY <= m_pNpcList[sOwnerH]->m_sY + 9) )
  375. {
  376. iTemp = 0;
  377. iTemp2 = 0;
  378. iTemp = *ipStatus;
  379. iTemp = 0x0FFFFFFF & iTemp;
  380. iTemp2 = iGetNpcRelationship(sOwnerH, i);
  381. iTemp = (iTemp | (iTemp2 << 28));
  382. *ipStatus = iTemp;
  383.  
  384. iRet = m_pClientList[i]->m_pXSock->iSendMsg(cData, dataLength, cKey);
  385. }
  386. }
  387. }
  388.  
  389. }
  390. }
  391.  
  392.  
  393.  
  394. void CGame::MotionEventHandler(char * pData)
  395. {
  396. WORD * wp, wEventType, wObjectID;
  397. short * sp, sX, sY, sType, sAppr1, sAppr2, sAppr3, sAppr4, sV1, sV2, sV3, sPrevAppr2;
  398. int iStatus;
  399. char * cp, cDir, cName[12];
  400. int * ip, iApprColor, iLoc;
  401. char cTxt[120];
  402. int i;
  403. int iNpcHP = 0;
  404. ZeroMemory(cName, sizeof(cName));
  405. sV1 = sV2 = sV3 = NULL;
  406. wp = (WORD *)(pData + DEF_INDEX2_MSGTYPE);
  407. wEventType = *wp;
  408. cp = (char *)(pData + DEF_INDEX2_MSGTYPE + 2);
  409. wp = (WORD *)cp;
  410. wObjectID = *wp;
  411. cp += 2;
  412. iLoc = 0;
  413. if (wObjectID < 30000)
  414. {
  415. if (wObjectID < 10000) // Player
  416. {
  417. sp = (short *)cp;
  418. sX = *sp;
  419. cp += 2;
  420. sp = (short *)cp;
  421. sY = *sp;
  422. cp += 2;
  423. sp = (short *)cp;
  424. sType = *sp;
  425. cp += 2;
  426. cDir = *cp;
  427. cp++;
  428. memcpy(cName, cp, 10);
  429. cp += 10;
  430. sp = (short *)cp;
  431. sAppr1 = *sp;
  432. cp += 2;
  433. sp = (short *)cp;
  434. sAppr2 = *sp;
  435. cp += 2;
  436. sp = (short *)cp;
  437. sAppr3 = *sp;
  438. cp += 2;
  439. sp = (short *)cp;
  440. sAppr4 = *sp;
  441. cp += 2;
  442. ip = (int *)cp; // v1.4
  443. iApprColor = *ip;
  444. cp += 4;
  445.  
  446. ip = (int *)cp;
  447. iStatus = *ip;
  448. cp += 4;
  449.  
  450. iLoc = *cp;
  451. cp++;
  452. }
  453. else // Npc or mob
  454. {
  455. sp = (short *)cp;
  456. sX = *sp;
  457. cp += 2;
  458.  
  459. sp = (short *)cp;
  460. sY = *sp;
  461. cp += 2;
  462.  
  463. sp = (short *)cp;
  464. sType = *sp;
  465. cp += 2;
  466.  
  467. cDir = *cp;
  468. cp++;
  469.  
  470. memcpy(cName, cp, 5);
  471. cp += 5;
  472.  
  473. sAppr1 = sAppr3 = sAppr4 = 0;
  474.  
  475. sp = (short *)cp;
  476. sAppr2 = *sp;
  477. cp += 2;
  478.  
  479. //Nigga: 2017/04/25 HP moba
  480. sp = (short *)cp;
  481. iNpcHP = *sp;
  482. cp += 2;
  483.  
  484.  
  485. ip = (int *)cp;
  486. iStatus = *ip;
  487. cp += 4;
  488.  
  489.  
  490. iLoc = *cp;
  491. cp++;
  492. }
  493. }
  494. else
  495. {
  496. switch (wEventType)
  497. {
  498. case DEF_OBJECTMAGIC:
  499. case DEF_OBJECTDAMAGEMOVE:
  500. case DEF_OBJECTDAMAGE:
  501. cDir = *cp;
  502. cp++;
  503.  
  504. sV1 = (short)*cp; //Damage
  505. cp++;
  506.  
  507. sV2 = (short)*cp; //
  508. cp++;
  509.  
  510. //Nigga: 2017/04/25 HP moba
  511. sp = (short *)cp;
  512. iNpcHP = *sp;
  513. cp += 2;
  514. break;
  515.  
  516. case DEF_OBJECTDYING:
  517. cDir = *cp;
  518. cp++;
  519.  
  520. sV1 = (short)*cp; //Damage
  521. cp++;
  522.  
  523. sV2 = (short)*cp; //
  524. cp++;
  525.  
  526. //Nigga: 2017/04/25 HP moba
  527. sp = (short *)cp;
  528. iNpcHP = *sp;
  529. cp += 2;
  530.  
  531. sp = (short *)cp;
  532. sX = *sp;
  533. cp += 2;
  534.  
  535. sp = (short *)cp;
  536. sY = *sp;
  537. cp += 2;
  538. break;
  539.  
  540. case DEF_OBJECTATTACK:
  541. cDir = *cp;
  542. cp++;
  543.  
  544. sV1 = *cp;
  545. cp++;
  546.  
  547. sV2 = *cp;
  548. cp++;
  549.  
  550. sp = (short *)cp;
  551. sV3 = *sp;
  552. cp += 2;
  553.  
  554. //Nigga: 2017/04/25 HP moba
  555. sp = (short *)cp;
  556. iNpcHP = *sp;
  557. cp += 2;
  558.  
  559. break;
  560.  
  561. default:
  562. cDir = *cp;
  563. cp++;
  564. break;
  565. }
  566. }
  567.  
  568. if ((wEventType == DEF_OBJECTNULLACTION) && (memcmp(cName, m_cPlayerName, 10) == 0))
  569. {
  570. m_sPlayerType = sType;
  571. m_sPlayerAppr1 = sAppr1;
  572. sPrevAppr2 = m_sPlayerAppr2;
  573. m_sPlayerAppr2 = sAppr2;
  574. m_sPlayerAppr3 = sAppr3;
  575. m_sPlayerAppr4 = sAppr4;
  576. m_iPlayerApprColor = iApprColor;
  577. m_iPlayerStatus = iStatus;
  578.  
  579. //Draft: blokada tabu - 28 Styczeń 2010r.
  580. if (ilosctab >= 0)
  581. {
  582. if ((sPrevAppr2 & 0xF000) == 0)
  583. {
  584. if ((sAppr2 & 0xF000) != 0)
  585. {
  586. AddEventList(MOTION_EVENT_HANDLER1, 10);
  587. m_bIsCombatMode = TRUE;
  588. }
  589. }
  590. else
  591. {
  592. if ((sAppr2 & 0xF000) == 0)
  593. {
  594. AddEventList(MOTION_EVENT_HANDLER2, 10);
  595. m_bIsCombatMode = FALSE;
  596. }
  597. }
  598. }
  599. //end of Draft code
  600.  
  601. if ((m_cCommand != DEF_OBJECTRUN) && (m_cCommand != DEF_OBJECTMOVE) && (m_cCommand != DEF_OBJECTMAGIC)) m_pMapData->bSetOwner(wObjectID, sX, sY, sType, cDir, sAppr1, sAppr2, sAppr3, sAppr4, iApprColor, iStatus, cName, (char)wEventType, sV1, sV2, sV3, iLoc, 0 , iNpcHP);
  602. }
  603. else if (wEventType == DEF_OBJECTDYING) {
  604. if ((m_cCommand != DEF_OBJECTRUN) && (m_cCommand != DEF_OBJECTMOVE)) {
  605. m_pMapData->bSetOwner(wObjectID, sX, sY, sType, cDir, sAppr1, sAppr2, sAppr3, sAppr4, iApprColor, iStatus, cName, (char)wEventType, sV1, sV2, sV3, iLoc, 0 , iNpcHP);
  606. }
  607. }
  608. else {
  609. m_pMapData->bSetOwner(wObjectID, sX, sY, sType, cDir, sAppr1, sAppr2, sAppr3, sAppr4, iApprColor, iStatus, cName, (char)wEventType, sV1, sV2, sV3, iLoc, 0, iNpcHP);
  610. }
  611.  
  612.  
  613. switch (wEventType) {
  614. case DEF_OBJECTMAGIC: // Casting
  615. _RemoveChatMsgListByObjectID(wObjectID - 30000);
  616.  
  617. for (i = 1; i < DEF_MAXCHATMSGS; i++)
  618. if (m_pChatMsgList[i] == NULL)
  619. {
  620. ZeroMemory(cTxt, sizeof(cTxt));
  621. sprintf(cTxt, "%s!", m_pMagicCfgList[sV1]->m_cName);
  622. m_pChatMsgList[i] = new class CMsg(41, cTxt, m_dwCurTime);
  623. m_pChatMsgList[i]->m_iObjectID = wObjectID - 30000;
  624. if (m_pMapData->bSetChatMsgOwner(wObjectID - 30000, -10, -10, i) == FALSE)
  625. {
  626. delete m_pChatMsgList[i];
  627. m_pChatMsgList[i] = NULL;
  628. }
  629. return;
  630. }
  631. break;
  632.  
  633. case DEF_OBJECTDYING:
  634. _RemoveChatMsgListByObjectID(wObjectID - 30000);
  635. for (i = 1; i < DEF_MAXCHATMSGS; i++)
  636. if (m_pChatMsgList[i] == NULL)
  637. {
  638. ZeroMemory(cTxt, sizeof(cTxt));
  639. if (sV1 > 0)
  640. sprintf(cTxt, "-%dPts!", sV1); //pts
  641. else strcpy(cTxt, "Critical!");
  642. int iFontType;
  643. if ((sV1 >= 0) && (sV1 < 12)) iFontType = 21;
  644. else if ((sV1 >= 12) && (sV1 < 40)) iFontType = 22;
  645. else if ((sV1 >= 40) || (sV1 < 0)) iFontType = 23;
  646. m_pChatMsgList[i] = new class CMsg(iFontType, cTxt, m_dwCurTime);
  647. m_pChatMsgList[i]->m_iObjectID = wObjectID - 30000;
  648. if (m_pMapData->bSetChatMsgOwner(wObjectID - 30000, -10, -10, i) == FALSE)
  649. {
  650. delete m_pChatMsgList[i];
  651. m_pChatMsgList[i] = NULL;
  652. }
  653. return;
  654. }
  655. break;
  656.  
  657. case DEF_OBJECTDAMAGEMOVE:
  658. case DEF_OBJECTDAMAGE:
  659. #ifndef DEF_DRAFT_DEBUG
  660. if (memcmp(cName, m_cPlayerName, 10) == 0)
  661. {
  662. m_bIsGetPointingMode = FALSE;
  663. m_iPointCommandType = -1;
  664. m_stMCursor.sCursorFrame = 0;
  665. ClearSkillUsingStatus();
  666. }
  667. #endif
  668. _RemoveChatMsgListByObjectID(wObjectID - 30000);
  669.  
  670. for (i = 1; i < DEF_MAXCHATMSGS; i++)
  671. if (m_pChatMsgList[i] == NULL)
  672. {
  673. ZeroMemory(cTxt, sizeof(cTxt));
  674. if (sV1 != 0)
  675. {
  676. if (sV1 > 0)
  677. sprintf(cTxt, "-%dPts", sV1); //pts
  678. else strcpy(cTxt, "Critical!");
  679. int iFontType;
  680. if ((sV1 >= 0) && (sV1 < 12)) iFontType = 21;
  681. else if ((sV1 >= 12) && (sV1 < 40)) iFontType = 22;
  682. else if ((sV1 >= 40) || (sV1 < 0)) iFontType = 23;
  683.  
  684. m_pChatMsgList[i] = new class CMsg(iFontType, cTxt, m_dwCurTime);
  685. }
  686. else
  687. {
  688. strcpy(cTxt, " * Failed! *");
  689. m_pChatMsgList[i] = new class CMsg(22, cTxt, m_dwCurTime);
  690. PlaySound('C', 17, 0);
  691. }
  692. m_pChatMsgList[i]->m_iObjectID = wObjectID - 30000;
  693. if (m_pMapData->bSetChatMsgOwner(wObjectID - 30000, -10, -10, i) == FALSE)
  694. {
  695. delete m_pChatMsgList[i];
  696. m_pChatMsgList[i] = NULL;
  697. }
  698. return;
  699. }
  700. break;
  701. }
  702. }
  703.  
  704.  
  705.  
  706. void CGame::LogEventHandler(char * pData)
  707. {
  708. WORD * wp, wEventType, wObjectID;
  709. short * sp, sX, sY, sType, sAppr1, sAppr2, sAppr3, sAppr4;
  710. int iStatus;
  711. short iNpcHP = 0;
  712. char * cp, cDir, cName[12];
  713. int * ip, iApprColor;
  714.  
  715. wp = (WORD *)(pData + DEF_INDEX2_MSGTYPE);
  716. wEventType = *wp;
  717.  
  718. cp = (char *)(pData + DEF_INDEX2_MSGTYPE + 2);
  719.  
  720. wp = (WORD *)cp;
  721. wObjectID = *wp;
  722. cp += 2;
  723.  
  724. sp = (short *)cp;
  725. sX = *sp;
  726. cp += 2;
  727.  
  728. sp = (short *)cp;
  729. sY = *sp;
  730. cp += 2;
  731.  
  732. sp = (short *)cp;
  733. sType = *sp;
  734. cp += 2;
  735.  
  736. cDir = *cp;
  737. cp++;
  738.  
  739. ZeroMemory(cName, sizeof(cName));
  740. if (wObjectID < 10000)
  741. {
  742. memcpy(cName, cp, 10);
  743. cp += 10;
  744.  
  745. sp = (short *)cp;
  746. sAppr1 = *sp;
  747. cp += 2;
  748.  
  749. sp = (short *)cp;
  750. sAppr2 = *sp;
  751. cp += 2;
  752.  
  753. sp = (short *)cp;
  754. sAppr3 = *sp;
  755. cp += 2;
  756.  
  757. sp = (short *)cp;
  758. sAppr4 = *sp;
  759. cp += 2;
  760.  
  761. ip = (int *)cp;
  762. iApprColor = *ip;
  763. cp += 4;
  764.  
  765. ip = (int *)cp;
  766. iStatus = *ip;
  767. cp += 4;
  768. }
  769. else // NPC
  770. {
  771. memcpy(cName, cp, 5);
  772. cp += 5;
  773.  
  774. sAppr1 = sAppr3 = sAppr4 = 0;
  775.  
  776. sp = (short *)cp;
  777. sAppr2 = *sp;
  778. cp += 2;
  779.  
  780.  
  781. sp = (short *)cp;
  782. iNpcHP = *sp;
  783. cp += 2;
  784.  
  785. ip = (int *)cp;
  786. iStatus = *ip;
  787. cp += 4;
  788.  
  789. //tutaj odbiera jeszcze jedna dana
  790. cp++;
  791.  
  792. }
  793.  
  794. switch (wEventType)
  795. {
  796. case DEF_MSGTYPE_CONFIRM:
  797. m_pMapData->bSetOwner(wObjectID, sX, sY, sType, cDir, sAppr1, sAppr2, sAppr3, sAppr4, iApprColor, iStatus, cName, DEF_OBJECTSTOP, NULL, NULL, NULL, 0, 0, iNpcHP);
  798. switch (sType)
  799. {
  800. case 43: // LWB
  801. case 44: // GHK
  802. case 45: // GHKABS
  803. case 46: // TK
  804. case 47: // BG
  805. bAddNewEffect(64, (sX) * 32, (sY) * 32, NULL, NULL, 0);
  806. break;
  807. }
  808. break;
  809.  
  810. case DEF_MSGTYPE_REJECT:
  811. m_pMapData->bSetOwner(wObjectID, -1, -1, sType, cDir, sAppr1, sAppr2, sAppr3, sAppr4, iApprColor, iStatus, cName, DEF_OBJECTSTOP, NULL, NULL, NULL, 0, 0, iNpcHP);
  812. break;
  813. }
  814.  
  815. _RemoveChatMsgListByObjectID(wObjectID);
  816. }
  817.  
  818.  
  819.  
  820.  
  821. void XSocket::GetMACaddress(char * buffer)
  822. {
  823. ASTAT Adapter;
  824. NCB Ncb;
  825. UCHAR uRetCode;
  826. char NetName[50];
  827. LANA_ENUM lenum;
  828. int i;
  829.  
  830. memset( &Ncb, 0, sizeof(Ncb) );
  831. Ncb.ncb_command = NCBENUM;
  832. Ncb.ncb_buffer = (UCHAR *)&lenum;
  833. Ncb.ncb_length = sizeof(lenum);
  834. uRetCode = Netbios( &Ncb );
  835. //printf( "The NCBENUM return code is: 0x%x \n", uRetCode );
  836.  
  837. for(i=0; i < lenum.length ;i++)
  838. {
  839. memset( &Ncb, 0, sizeof(Ncb) );
  840. Ncb.ncb_command = NCBRESET;
  841. Ncb.ncb_lana_num = lenum.lana[i];
  842.  
  843. uRetCode = Netbios( &Ncb );
  844. //printf( "The NCBRESET on LANA %d return code is: 0x%x \n",
  845. // lenum.lana[i], uRetCode );
  846.  
  847. memset( &Ncb, 0, sizeof (Ncb) );
  848. Ncb.ncb_command = NCBASTAT;
  849. Ncb.ncb_lana_num = lenum.lana[i];
  850.  
  851. strcpy((char *)Ncb.ncb_callname, "* " );
  852. Ncb.ncb_buffer = (UCHAR *) &Adapter;
  853. Ncb.ncb_length = sizeof(Adapter);
  854.  
  855. uRetCode = Netbios( &Ncb );
  856. //printf( "The NCBASTAT on LANA %d return code is: 0x%x \n",
  857. // lenum.lana[i], uRetCode );
  858. if ( uRetCode == 0 )
  859. {
  860. wsprintf(buffer, "%02x%02x%02x%02x%02x%02x",
  861. Adapter.adapt.adapter_address[0],
  862. Adapter.adapt.adapter_address[1],
  863. Adapter.adapt.adapter_address[2],
  864. Adapter.adapt.adapter_address[3],
  865. Adapter.adapt.adapter_address[4],
  866. Adapter.adapt.adapter_address[5]);
  867. break;
  868. }
  869. }
  870.  
  871. }
  872.  
  873.  
  874. char MacAddress[24]
  875. GetMACaddress(MacAddress);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement