VOID WINAPI TimerProcQueue2(LPVOID lpParametar, BOOL TimerOrWaitFired) { if (g_MuTimer.GetTimerEnd() == TRUE) { return; } g_MuTimer.m_QueueTimer2.SyncLock(); int nEventID = *(DWORD*)lpParametar; switch (nEventID) { case WM_FIRST_MSG_PROCESS: { int n; if (gDoPShopOpen != FALSE) { for (n=OBJ_STARTUSERINDEX; n<OBJMAX; n++) { PShop_ViewportListRegenarate(n); } for (n=OBJ_STARTUSERINDEX; n<OBJMAX; n++) { if (gObjIsConnected(n) != PLAYER_EMPTY) { gObj[n].m_bPShopItemChange = false; } } } for (n=OBJ_STARTUSERINDEX; n<OBJMAX; n++) { gObjUnionUpdateProc(n); } gObjSetState(); GameServerInfoSend(); } break; case WM_VIEWPORT_UPDATE: { for (int n = 0; n < OBJMAX; n++) { gObjStateSetCreate(n); gObjViewportListDestroy(n); gObjViewportListCreate(n); gObjViewportListProtocol(n); } } break; } g_MuTimer.m_QueueTimer2.SyncUnlock(); }
BOOL CRaklionSelupan::CreateSelupan() { int m_Type = -1; for ( int n=0;n<gMSetBase.m_Count;n++) { if( gMSetBase.m_Mp[n].m_Type == 459 ) { m_Type = n; } } LPOBJ lpObj = NULL; int result = 0; result = gObjAddMonster(MAP_INDEX_RAKLION_BOSS); if ( result < 0 ) { LogAddTD("[RAKLION] CreateSelupan error"); return FALSE; } lpObj = &gObj[result]; gObjSetPosMonster(result, m_Type); gObjSetMonster(result, 459); LogAddTD("[RAKLION] Create Selupan : X (%d) / Y(%d)",lpObj->X,lpObj->Y); LPOBJ lpTargetObj = NULL; for(int n=0;n<OBJMAX;n++){ lpTargetObj = &gObj[n]; if(lpTargetObj->MapNumber == MAP_INDEX_RAKLION_BOSS){ gObjStateSetCreate(n); gObjViewportListDestroy(n); gObjViewportListCreate(n); gObjViewportListProtocol(n); } } gObjSetState(); this->m_iBossAttackMin = lpObj->m_AttackDamageMin; this->m_iBossAttackMax = lpObj->m_AttackDamageMax; return TRUE; }