ProcessUserHuman.cpp
上传用户:tt_chan
上传日期:2009-12-03
资源大小:4523k
文件大小:3k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. CPlayerObject* GetUserHuman(char *pszCharName)
  3. {
  4. if (g_xUserInfoList.GetCount())
  5. {
  6. PLISTNODE pListNode = g_xUserInfoList.GetHead();
  7. while (pListNode)
  8. {
  9. CUserInfo *pUserInfo = g_xUserInfoList.GetData(pListNode);
  10. if (pUserInfo)
  11. {
  12. if (pUserInfo->m_pxPlayerObject)
  13. {
  14. if (memcmp(pUserInfo->m_szCharName, pszCharName, memlen(pUserInfo->m_szCharName) - 1) == 0)
  15. {
  16. if (!pUserInfo->m_pxPlayerObject->m_fIsDead)
  17. return (CPlayerObject*)pUserInfo->m_pxPlayerObject;
  18. }
  19. }
  20. }
  21. pListNode = g_xUserInfoList.GetNext(pListNode);
  22. }
  23. }
  24. return NULL;
  25. }
  26. void CryCry(UINT wMsgType, CMirMap* pMap, int nX, int nY, int nWide, char *pszSaying)
  27. {
  28. if (g_xUserInfoList.GetCount())
  29. {
  30. PLISTNODE pListNode = g_xUserInfoList.GetHead();
  31. while (pListNode)
  32. {
  33. CUserInfo *pUserInfo = g_xUserInfoList.GetData(pListNode);
  34. if (pUserInfo)
  35. {
  36. if (pUserInfo->m_pxPlayerObject)
  37. {
  38. if ((pUserInfo->m_pxPlayerObject->m_pMap == pMap) && !pUserInfo->m_pxPlayerObject->m_fIsDead)
  39. {
  40. if ((abs(pUserInfo->m_pxPlayerObject->m_nCurrX - nX) < nWide) && (abs(pUserInfo->m_pxPlayerObject->m_nCurrY - nY) < nWide))
  41. pUserInfo->m_pxPlayerObject->AddProcess(NULL, wMsgType, 0, 0, 0, 0, pszSaying);
  42. }
  43. }
  44. }
  45. pListNode = g_xUserInfoList.GetNext(pListNode);
  46. }
  47. }
  48. }
  49. UINT WINAPI ProcessUserHuman(LPVOID lpParameter)
  50. {
  51. PLISTNODE pListNode = NULL;
  52. while (TRUE)
  53. {
  54. if (g_fTerminated) 
  55. {
  56. if (g_xUserInfoList.GetCount())
  57. {
  58. pListNode = g_xUserInfoList.GetHead();
  59. while (pListNode)
  60. {
  61. CUserInfo *pUserInfo = g_xUserInfoList.GetData(pListNode);
  62. if (pUserInfo)
  63. pUserInfo->CloseUserHuman();
  64. pListNode = g_xUserInfoList.RemoveNode(pListNode);
  65. }
  66. }
  67. return 0L;
  68. }
  69. if (g_xUserInfoList.GetCount())
  70. {
  71. pListNode = g_xUserInfoList.GetHead();
  72. while (pListNode)
  73. {
  74. CUserInfo *pUserInfo = g_xUserInfoList.GetData(pListNode);
  75. if (pUserInfo)
  76. {
  77. if (pUserInfo->m_btCurrentMode == USERMODE_PLAYGAME)
  78. pUserInfo->Operate();
  79. }
  80. pListNode = g_xUserInfoList.GetNext(pListNode);
  81. } // while
  82. } // if g_xReadyUserInfoList.GetCount()
  83. if (g_xGateList.GetCount())
  84. {
  85. pListNode = g_xGateList.GetHead();
  86. while (pListNode)
  87. {
  88. CGateInfo *pGateInfo = g_xGateList.GetData(pListNode);
  89. if (pGateInfo)
  90. pGateInfo->xSend();
  91. pListNode = g_xUserInfoList.GetNext(pListNode);
  92. } // while
  93. }
  94. SleepEx(1, TRUE);
  95. }
  96. // return 0L;
  97. }