// HumanChatWindow.cpp: implementation of the CHumanChatWindow class. // ////////////////////////////////////////////////////////////////////// //#include #include "ClientMain.h" #include "WinInput.h" #include "HumanChatWindow.h" #include "GUITextEdit.h" #include "FrameTimer.h" #include "StringFilter.h" #include "GUIMessageBox.h" #include "BaseGraphicsLayer.h" #include "Creature\Monster\MonsterMgr.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CHumanChatWindow::CHumanChatWindow() { } CHumanChatWindow::~CHumanChatWindow() { } BOOL CHumanChatWindow::Init(unsigned short x, unsigned short y) { CSprite *lpSprite; lpSprite = new CSprite; lpSprite->Create(x, y, 0, 0, 256, 120, g_ClientMain.m_lpInterface->m_lstTexture[1]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x + 256, y, 0, 120, 254, 240, g_ClientMain.m_lpInterface->m_lstTexture[1]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x + 1, y + 101, 0, 0, 162, 16, g_ClientMain.m_lpInterface->m_lstTexture[2]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x + 1, y + 101, 0, 16, 162, 32, g_ClientMain.m_lpInterface->m_lstTexture[2]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x + 1, y + 101, 0, 32, 162, 48, g_ClientMain.m_lpInterface->m_lstTexture[2]); m_lstSprite.push_back(lpSprite); CGUIButton *lpButton; lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLECHECK; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(163, 101, 0, 54, 85, 71, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(163, 101, 0, 71, 85, 88, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[101]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLECHECK; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(249, 101, 0, 88, 85, 105, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(249, 101, 0, 105, 85, 122, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[102]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLECHECK; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(335, 101, 85, 54, 170, 71, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(335, 101, 85, 71, 170, 88, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[103]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLECHECK; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(421, 101, 85, 88, 170, 105, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(421, 101, 85, 105, 170, 122, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[105]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); CGUIScroll *lpScroll; lpScroll = new CGUIScroll; lpScroll->m_lpBarButton = new CGUIButton; lpScroll->m_lpBarButton->m_nMethod = BUTTON_SIMPLE; lpScroll->m_lpBarButton->m_lpNormalButton = new CSprite; lpScroll->m_lpBarButton->m_lpNormalButton->Create(491, 14, 170, 74, 182, 83, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpScroll->m_lpBarButton->m_lpClickMouseButton = new CSprite; lpScroll->m_lpBarButton->m_lpClickMouseButton->Create(491, 14, 170, 74, 182, 83, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpScroll->m_lpUpArrowButton = new CGUIButton; lpScroll->m_lpUpArrowButton->m_nMethod = BUTTON_SIMPLE; lpScroll->m_lpUpArrowButton->m_lpNormalButton = new CSprite; lpScroll->m_lpUpArrowButton->m_lpNormalButton->Create(491, 4, 170, 54, 182, 64, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpScroll->m_lpUpArrowButton->m_lpClickMouseButton = new CSprite; lpScroll->m_lpUpArrowButton->m_lpClickMouseButton->Create(491, 4, 182, 54, 194, 64, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpScroll->m_lpDownArrowButton = new CGUIButton; lpScroll->m_lpDownArrowButton->m_nMethod = BUTTON_SIMPLE; lpScroll->m_lpDownArrowButton->m_lpNormalButton = new CSprite; lpScroll->m_lpDownArrowButton->m_lpNormalButton->Create(491, 69, 170, 64, 182, 74, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpScroll->m_lpDownArrowButton->m_lpClickMouseButton = new CSprite; lpScroll->m_lpDownArrowButton->m_lpClickMouseButton->Create(491, 69, 182, 64, 194, 74, g_ClientMain.m_lpInterface->m_lstTexture[2]); lpScroll->m_lValue = (long *)&g_TextEdit.m_dwStartChat; lpScroll->SetMove(x, y); lpScroll->SetPosition(491, 14); lpScroll->SetEdge(0, 0, 10, 46); lpScroll->SetRange(0, 0); m_lstScroll.push_back(lpScroll); m_dwWindowKind = WINDOW_FIX; m_rcWindowSize.left = x; m_rcWindowSize.top = y; m_rcWindowSize.right = x + 510; m_rcWindowSize.bottom = y + 120; m_rcMoveEdge.left = x; m_rcMoveEdge.top = y; m_rcMoveEdge.right = x + 510; m_rcMoveEdge.bottom = y + 20; return TRUE; } BOOL CHumanChatWindow::Update(BOOL &bClick, BOOL &bEdge) { if(g_DeviceInput.InRect(m_rcWindowSize.left, m_rcWindowSize.top, m_rcWindowSize.right, m_rcWindowSize.bottom)) { bEdge = TRUE; if(g_DeviceInput.GetIsLeftMouseDown() || g_DeviceInput.GetIsMiddleMouseDown() || g_DeviceInput.GetIsRightMouseDown() || g_DeviceInput.GetIsLeftMousePress() || g_DeviceInput.GetIsMiddleMousePress() || g_DeviceInput.GetIsRightMousePress() || g_DeviceInput.GetIsLeftMouseUp() || g_DeviceInput.GetIsMiddleMouseUp() || g_DeviceInput.GetIsRightMouseUp()) { bClick = TRUE; } } POINT *ptMousePos = g_DeviceInput.GetMousePosition(); if(m_dwWindowKind == WINDOW_FLOAT) { if(WindowMoving(*ptMousePos)) { m_ButtonManager.SetMove(m_ptWindowMovePos.x, m_ptWindowMovePos.y); m_lstSprite[0]->SetPosition(m_ptWindowMovePos.x, m_ptWindowMovePos.y); m_lstSprite[1]->SetPosition(m_ptWindowMovePos.x + 256, m_ptWindowMovePos.y); m_lstSprite[2]->SetPosition(m_ptWindowMovePos.x + 1, m_ptWindowMovePos.y + 101); m_lstSprite[3]->SetPosition(m_ptWindowMovePos.x + 1, m_ptWindowMovePos.y + 101); m_lstSprite[4]->SetPosition(m_ptWindowMovePos.x + 1, m_ptWindowMovePos.y + 101); m_lstScroll[0]->SetMove(m_ptWindowMovePos.x, m_ptWindowMovePos.y); } } m_ButtonManager.Update(); m_TooltipManager.Update(); if(g_DeviceInput.KeyHold(VK_PRIOR)) { switch(g_TextEdit.m_dwChatMode) { case CHATMODE_CHAT: if(g_TextEdit.m_deqChatMessage.size() > 5) { if(g_TextEdit.m_dwStartChat != 0) g_TextEdit.m_dwStartChat--; } break; case CHATMODE_PARTY: if(g_TextEdit.m_deqPartyMessage.size() > 5) { if(g_TextEdit.m_dwStartParty != 0) g_TextEdit.m_dwStartParty--; } break; case CHATMODE_GUILD: if(g_TextEdit.m_deqGuildMessage.size() > 5) { if(g_TextEdit.m_dwStartGuild != 0) g_TextEdit.m_dwStartGuild--; } break; } } else if(g_DeviceInput.KeyHold(VK_NEXT)) { switch(g_TextEdit.m_dwChatMode) { case CHATMODE_CHAT: if(g_TextEdit.m_deqChatMessage.size() > 5) { if(g_TextEdit.m_dwStartChat != g_TextEdit.m_deqChatMessage.size() - 5) g_TextEdit.m_dwStartChat++; } break; case CHATMODE_PARTY: if(g_TextEdit.m_deqPartyMessage.size() > 5) { if(g_TextEdit.m_dwStartParty != g_TextEdit.m_deqPartyMessage.size() - 5) g_TextEdit.m_dwStartParty++; } break; case CHATMODE_GUILD: if(g_TextEdit.m_deqGuildMessage.size() > 5) { if(g_TextEdit.m_dwStartGuild != g_TextEdit.m_deqGuildMessage.size() - 5) g_TextEdit.m_dwStartGuild++; } break; } } if(g_DeviceInput.InRect(m_rcWindowSize.left + 1, m_rcWindowSize.top + 101, m_rcWindowSize.left + 55, m_rcWindowSize.top + 117) && g_DeviceInput.GetIsLeftMouseDown()) { g_TextEdit.m_dwChatMode = CHATMODE_CHAT; m_lstScroll[0]->m_lValue = (long *)&g_TextEdit.m_dwStartChat; if(g_TextEdit.m_dwEditMode == EDITMODE_STALL) { g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_TextEdit.SetFocus(); g_TextEdit.InitMessage(); } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 55, m_rcWindowSize.top + 101, m_rcWindowSize.left + 109, m_rcWindowSize.top + 117) && g_DeviceInput.GetIsLeftMouseDown()) { g_TextEdit.m_dwChatMode = CHATMODE_PARTY; m_lstScroll[0]->m_lValue = (long *)&g_TextEdit.m_dwStartParty; if(g_TextEdit.m_dwEditMode == EDITMODE_STALL) { g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_TextEdit.SetFocus(); g_TextEdit.InitMessage(); } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 109, m_rcWindowSize.top + 101, m_rcWindowSize.left + 163, m_rcWindowSize.top + 117) && g_DeviceInput.GetIsLeftMouseDown()) { // g_TextEdit.m_dwChatMode = CHATMODE_GUILD; // m_lstScroll[0]->m_lValue = (long *)&g_TextEdit.m_dwStartGuild; g_TextEdit.m_dwChatMode = CHATMODE_PARTY; m_lstScroll[0]->m_lValue = (long *)&g_TextEdit.m_dwStartParty; if(g_TextEdit.m_dwEditMode == EDITMODE_STALL) { g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_TextEdit.SetFocus(); g_TextEdit.InitMessage(); } } if(!g_ClientMain.m_lpInterface->GetBusy()) { if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_ON || m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_OFF) { g_ClientMain.m_bMouseMode = !g_ClientMain.m_bMouseMode; CEffScript *test_script; // _ASSERTE(_CrtCheckMemory()); test_script = new CEffScript; if(g_ClientMain.m_bMouseMode) { //g_CharacterData.m_Camera.m_nCameraMode = 0; g_CharacterData.MouseModeChange(); g_ClientMain.m_bShowCursor = TRUE; test_script->GetScriptBinData("inter_interface-type-mouse.esf"); } else { //g_CharacterData.m_Camera.m_nCameraMode = 1; g_CharacterData.MouseModeChange(); g_ClientMain.m_bShowCursor = FALSE; test_script->GetScriptBinData("inter_interface-type-keyboard.esf"); } test_script->m_InterfacePos[0] += 0.0f; test_script->m_InterfacePos[1] += 310.0f; CSceneManager::m_EffectManager.AddInterfaceScript(test_script); } if(m_ButtonManager.m_lstButton[1]->m_nState == BUTTON_ON || m_ButtonManager.m_lstButton[1]->m_nState == BUTTON_OFF) { g_ClientMain.m_bAutoRunMode = !g_ClientMain.m_bAutoRunMode; } if(m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_ON || m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_OFF) { g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->CrouchAndStandup(); } if(m_ButtonManager.m_lstButton[3]->m_nState == BUTTON_ON || m_ButtonManager.m_lstButton[3]->m_nState == BUTTON_OFF) { g_ClientMain.m_bSimpleMode = !g_ClientMain.m_bSimpleMode; } } /* if(g_DeviceInput.GetIsLeftMouseDown() && g_DeviceInput.InRect(30 + m_rcWindowSize.left, 83 + m_rcWindowSize.top, 107 + m_rcWindowSize.left, 98 + m_rcWindowSize.top)) { g_TextEdit.m_dwEditMode = EDITMODE_WHISPER; g_TextEdit.InitMessage(); g_TextEdit.SetFocus(); } */ /////////////// ½ºÅ©·Ñ ºÎºÐ if(g_TextEdit.m_deqChatMessage.size() <= MAX_DRAWCHAT) m_lstScroll[0]->SetRange(0, 0); else m_lstScroll[0]->SetRange(0, g_TextEdit.m_deqChatMessage.size() - MAX_DRAWCHAT); m_lstScroll[0]->Update(); // m_lstScroll[0]->m_lValue = g_TextEdit.m_dwStartChat; // m_lstScroll[0]->Update(); // g_TextEdit.m_dwStartChat = m_lstScroll[0]->m_lValue; if(g_TextEdit.m_dwEditMode == EDITMODE_CHAT && GetAsyncKeyState(VK_RETURN) && !g_TextEdit.IsFocus()) { if(strcmp(g_TextEdit.GetMessage(), "")) { char strChat[MAX_PATH]; unsigned long dwTotalLength; strcpy(strChat, g_TextEdit.GetMessage()); dwTotalLength = strlen(strChat); if(strChat[0] == '/') { char seps[] = " ,\t\n"; char *token, strCommand[MAX_PATH]; token = strtok(strChat, seps); strcpy(strCommand, token); token = strlwr(strCommand); if(!strcmp(token,"/kill")) { g_ClientMain.SetKillCounter(15000); } else if(!strcmp(token, "/p")) { if(g_ClientMain.m_csStatus.m_PartyInfo.m_dwPartyID) { int len = strlen(token) + 1; if(dwTotalLength >= len) { if(g_ClientMain.m_dwInternationalCode || g_StringFilter.Filter(&strChat[len])) { g_ClientMain.m_Network.SendChatMessage(NULL, &strChat[len], CHATMODE_PARTY); } else { g_ClientMain.m_Network.SendClientLog(1, &strChat[len], g_StringFilter.m_lpSearched); g_TextEdit.AddMessage(g_StringTable.m_strString[570], g_ClientMain.m_dwMyChrID, 129); } } } } else if(!strcmp(token, "/s") || !strcmp(token, "/¤¤")) // ±Ó¼Ó¸» { int count = 0; count += strlen(token) + 1; unsigned long dwLen = strlen(&strChat[count]); token = strtok(NULL, seps); if(token) { unsigned long dwCount = strlen(token); if(dwLen > dwCount) { count += dwCount + 1; if(token && (strlen(token) < 16)) { if(g_ClientMain.m_dwInternationalCode || g_StringFilter.Filter(&strChat[count])) { g_ClientMain.m_Network.SendChatMessage(token, &strChat[count], 10); } else { g_ClientMain.m_Network.SendClientLog(1, &strChat[count], g_StringFilter.m_lpSearched); g_TextEdit.AddMessage(g_StringTable.m_strString[570], g_ClientMain.m_dwMyChrID, 129); } } } } } else if(!strcmp(token, "/c") || !strcmp(token, "/¤º")) // ¿ÜÄ¡±â { int len = strlen(token) + 1; if(dwTotalLength >= len) { if(g_ClientMain.m_dwInternationalCode || g_StringFilter.Filter(&strChat[len])) { if(!g_ClientMain.m_Network.SendChatMessage(NULL, &strChat[len], ClientSocket::ChatType_Shout)) { char strMessage[MAX_PATH]; sprintf(strMessage, "%4.2fÃÊ ÈÄ¿¡ ¿ÜÄ¡±â°¡ °¡´ÉÇÕ´Ï´Ù.", g_ClientMain.m_Network.m_lShoutCounter / 1000.0f); g_TextEdit.AddMessage(strMessage, g_ClientMain.m_dwMyChrID, 129); } } else { g_ClientMain.m_Network.SendClientLog(1, &strChat[len], g_StringFilter.m_lpSearched); g_TextEdit.AddMessage(g_StringTable.m_strString[570], g_ClientMain.m_dwMyChrID, 129); } } } else if(!strcmp(token, "/cursor")) { g_ClientMain.m_bHardwareCursor = !g_ClientMain.m_bHardwareCursor; if(g_ClientMain.m_bHardwareCursor) { g_DeviceInput.ShowCursor(TRUE); } else { g_DeviceInput.ShowCursor(FALSE); } } else if(!strcmp(token, "/fame")) { g_ClientMain.m_Network.SendFameInfo(ClientSocket::FameInfoType_Fame); } else if(!strcmp(token, "/merits")) { g_ClientMain.m_Network.SendFameInfo(ClientSocket::FameInfoType_Merits); } else if(!strcmp(token, "/shop")) { if(!g_ClientMain.m_lpInterface->GetBusy()) { g_ClientMain.m_lpInterface->InitStreetStall(g_ClientMain.m_dwMyChrID, NULL); } } else { if(g_ClientMain.m_bAdminMode) { if(!strcmp(token, "/#moviemode!") || !strcmp(token, "/¹«ºñ¸ðµå")) { g_ClientMain.m_bMovieVersion = TRUE; g_ClientMain.m_bSimpleMode = TRUE; } else if(!strcmp(token, "/#gamemode!") || !strcmp(token, "/°ÔÀÓ¸ðµå")) { g_ClientMain.m_bMovieVersion = FALSE; } else if(!strcmp(token, "/goto") || !strcmp(token, "/À̵¿")) { token = strtok(NULL, seps); double x = atof(token); token = strtok(NULL, seps); double y = atof(token); vector3 vecPos = vector3(x, 0.0f, y); vecPos.y = g_ClientMain.m_lpSceneManager->m_HeightField.GetHeight(vecPos) + 15.0f; POS psPos = { vecPos.x, vecPos.y / 100.0f, vecPos.z }; g_ClientMain.m_Network.m_pSocket->CharBindPos(g_ClientMain.m_dwMyChrID, 1, &psPos, 0); } else if(!strcmp(token, "/#setsize!")) { token = strtok(NULL, seps); int a = atoi(token); MAXCHRLOAD = a; } else if(!strcmp(token, "/changetipcounter")) { token = strtok(NULL, seps); int a = atoi(token); g_ClientMain.m_lTipBroadCounterSeed = a; } else if(!strcmp(token, "/#systeminfo!")) { g_ClientMain.m_bSystemConsoleShow = !g_ClientMain.m_bSystemConsoleShow; if(g_ClientMain.m_bSystemConsoleShow == TRUE) { AllocConsole(); SetConsoleTitle("R.Y.L.ÀÇ ¿¹»Û ½Ã½ºÅÛ ÄܼÖ"); } else { FreeConsole(); } } else if(!strcmp(token, "/#showinfo!")) { g_ClientMain.m_bShowInfo = !g_ClientMain.m_bShowInfo; } else if(!strcmp(token, "/pos") || !strcmp(token, "/ÁÂÇ¥")) { char strText[MAX_PATH]; float fDir = g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_fDirection - FLOAT_PHI; if(fDir < 0.0f) fDir = FLOAT_PHI * 2 + fDir; sprintf(strText, "X = %f, Y = %f, Z = %f, Dir = %f", g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.x / 100.0f, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.y / 100.0f, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.z / 100.0f, fDir); g_TextEdit.AddMessage(strText, g_ClientMain.m_dwMyChrID, 128); } else if(!strcmp(token, "/zone")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); if(token) { int zone = atoi(token); token = strtok(NULL, seps); if(token) { double x = atof(token); token = strtok(NULL, seps); if(token) { double y = atof(token); POS psPos = { x, 100.0f, y }; g_ClientMain.m_Network.m_pSocket->CharMoveZone(zone, psPos); } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } else if(!strcmp(token, "/move") || !strcmp(token, "/Á¸À̵¿")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); char strName[16]; if(token) { if(strlen(token) < 16) { strcpy(strName, token); token = strtok(NULL, seps); if(token) { int zone = atoi(token); token = strtok(NULL, seps); if(token) { double x = atof(token); token = strtok(NULL, seps); if(token) { double y = atof(token); token = strtok(NULL, seps); if(token) { double z = atof(token); POS psPos = { x, y + 0.2f, z }; if(zone == 100) { g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::MoveChar, strName, zone, 0, 0, psPos, 0); } else { g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::MoveZoneChar, strName, zone, 0, 0, psPos, 0); } } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } else if(!strcmp(token, "/moveparty") || !strcmp(token, "/Á¸À̵¿ÆÄƼ")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); if(token) { char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); token = strtok(NULL, seps); if(token) { int zone = atoi(token); token = strtok(NULL, seps); if(token) { double x = atof(token); token = strtok(NULL, seps); if(token) { double y = atof(token); token = strtok(NULL, seps); if(token) { double z = atof(token); POS psPos = { x, y + 0.2f, z }; if(zone == 100) { g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::MoveParty, strName, zone, 0, 0, psPos, 0); } else { g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::MoveZoneParty, strName, zone, 0, 0, psPos, 0); } } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } else if(!strcmp(token, "/moveit") || !strcmp(token, "/¿öÇÁ")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); if(token) { char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); token = strtok(NULL, seps); if(token) { double x = atof(token); token = strtok(NULL, seps); if(token) { double y = atof(token); token = strtok(NULL, seps); if(token) { double z = atof(token); POS psPos = { x, y + 0.2f, z }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::MoveChar, strName, 0, 0, 0, psPos, 0); } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } else if(!strcmp(token, "/moveitparty") || !strcmp(token, "/¿öÇÁÆÄƼ")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); if(token) { char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); token = strtok(NULL, seps); if(token) { double x = atof(token); token = strtok(NULL, seps); if(token) { double y = atof(token); token = strtok(NULL, seps); if(token) { double z = atof(token); POS psPos = { x, y + 0.2f, z }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::MoveParty, strName, 0, 0, 0, psPos, 0); } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } else if(!strcmp(token, "/respawn") || !strcmp(token, "/¸®½ºÆù")) { token = strtok(NULL, seps); char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); POS psPos = { 0.0f, 0.0f, 0.0f }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::RespawnChar, strName, 0, 0, 0, psPos, 0); } } else if(!strcmp(token, "/kick")) { token = strtok(NULL, seps); char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); POS psPos = { 0.0f, 0.0f, 0.0f }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::KillChar, strName, 0, 0, 0, psPos, 0); } } else if(!strcmp(token, "/duelinit") || !strcmp(token, "/µà¾óÇØÁ¦")) { token = strtok(NULL, seps); char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); POS psPos = { 0.0f, 0.0f, 0.0f }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::DuelInit, strName, 0, 0, 0, psPos, 0); } } else if(!strcmp(token, "/hp")) { token = strtok(NULL, seps); char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); POS psPos = { 0.0f, 0.0f, 0.0f }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::InfoChar, strName, 0, 0, 0, psPos, 0); } } else if(!strcmp(token, "/createmob")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); char strMobName[MAX_PATH]; if(token) { strcpy(strMobName, token); token = strtok(NULL, seps); if(token) { double x = atof(token); token = strtok(NULL, seps); if(token) { double y = atof(token); token = strtok(NULL, seps); if(token) { double z = atof(token); POS psPos = { x, y + 0.2f, z }; const CMonsterMgr::MonsterProtoType *lpMonster = g_MonsterMgr.GetMonsterProtoType(strMobName); g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::CreateMon, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_strName, 0, 0, lpMonster->m_MonsterInfo.m_dwKID, psPos, 0); } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; } if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } else if(!strcmp(token, "/dropitem")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); if(token) { char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); token = strtok(NULL, seps); if(token) { int nItemID = atoi(token); POS psPos = { 0.0f, 0.0f, 0.0f }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::CreateItem, strName, 0, 0, (unsigned short)nItemID, psPos, 0); } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } else if(!strcmp(token, "/giveexp")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); if(token) { char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); token = strtok(NULL, seps); if(token) { int nAmount = atoi(token); POS psPos = { 0.0f, 0.0f, 0.0f }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::GetExp, strName, 0, 0, 0, psPos, (unsigned long)nAmount); } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } else if(!strcmp(token, "/givegold")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); if(token) { char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); token = strtok(NULL, seps); if(token) { int nAmount = atoi(token); POS psPos = { 0.0f, 0.0f, 0.0f }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::GetGold, strName, 0, 0, 0, psPos, (unsigned long)nAmount); } else bExcept = TRUE; } else bExcept = TRUE; } else bExcept = TRUE; if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } else if(!strcmp(token, "/levelup")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); if(token) { char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); POS psPos = { 0.0f, 0.0f, 0.0f }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::LevelUp, strName, 0, 0, 0, psPos, 0); } else bExcept = TRUE; } else bExcept = TRUE; if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } else if(!strcmp(token, "/peacemode")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); if(token) { char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); POS psPos = { 0.0f, 0.0f, 0.0f }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::PeaceMode, strName, 0, 0, 0, psPos, 0); } else bExcept = TRUE; } else bExcept = TRUE; if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } else if(!strcmp(token, "/battlemode")) { BOOL bExcept = FALSE; token = strtok(NULL, seps); if(token) { char strName[16]; if(strlen(token) < 16) { strcpy(strName, token); POS psPos = { 0.0f, 0.0f, 0.0f }; g_ClientMain.m_Network.m_pSocket->CharAdmin(ClientSocket::WarMode, strName, 0, 0, 0, psPos, 0); } else bExcept = TRUE; } else bExcept = TRUE; if(bExcept) { g_TextEdit.AddMessage(g_StringTable.m_strString[571], g_ClientMain.m_dwMyChrID, 129); } } } } } else if(strcmp(g_ClientMain.m_strWhisperChrID, "")) { if(g_ClientMain.m_dwInternationalCode || g_StringFilter.Filter(g_TextEdit.GetMessage())) { g_ClientMain.m_Network.SendChatMessage(g_ClientMain.m_strWhisperChrID, g_TextEdit.GetMessage(), 10); if(g_ClientMain.m_bInstanceWhisper) { strcpy(g_ClientMain.m_strWhisperChrID, ""); g_ClientMain.m_bInstanceWhisper = FALSE; } } else { g_ClientMain.m_Network.SendClientLog(1, g_TextEdit.GetMessage(), g_StringFilter.m_lpSearched); g_TextEdit.AddMessage(g_StringTable.m_strString[570], g_ClientMain.m_dwMyChrID, 129); } } else { if(g_ClientMain.m_dwInternationalCode || g_StringFilter.Filter(g_TextEdit.GetMessage())) { switch(g_TextEdit.m_dwChatMode) { case CHATMODE_CHAT: { char strMessage[MAX_PATH]; unsigned long Count = 0; strcpy(strMessage, g_TextEdit.GetMessage()); for(int i = 0; i < 3; i++) { if(!strcmp(g_ClientMain.m_strChatMessage[i], strMessage)) Count++; } if(Count < 2) { for(i = 0; i < 2; i++) { strcpy(g_ClientMain.m_strChatMessage[i], g_ClientMain.m_strChatMessage[i + 1]); } strcpy(g_ClientMain.m_strChatMessage[2], strMessage); g_ClientMain.m_Network.SendChatMessage(NULL, strMessage, CHATMODE_CHAT); } else { g_TextEdit.AddMessage(g_StringTable.m_strString[104], g_ClientMain.m_dwMyChrID, 129); } } break; case CHATMODE_PARTY: g_ClientMain.m_Network.SendChatMessage(NULL, g_TextEdit.GetMessage(), CHATMODE_PARTY); break; case CHATMODE_GUILD: g_ClientMain.m_Network.SendChatMessage(NULL, g_TextEdit.GetMessage(), CHATMODE_GUILD); break; } } else { g_ClientMain.m_Network.SendClientLog(1, g_TextEdit.GetMessage(), g_StringFilter.m_lpSearched); g_TextEdit.AddMessage(g_StringTable.m_strString[570], g_ClientMain.m_dwMyChrID, 129); } } } else { if(g_ClientMain.m_bInstanceWhisper) { strcpy(g_ClientMain.m_strWhisperChrID, ""); g_ClientMain.m_bInstanceWhisper = FALSE; } } g_TextEdit.InitMessage(); } return TRUE; } void CHumanChatWindow::Render(LPDIRECT3DDEVICE8 lpD3DDevice) { m_lstSprite[0]->Render(lpD3DDevice, m_cAlpha); m_lstSprite[1]->Render(lpD3DDevice, m_cAlpha); RECT rcRect; int i; switch(g_TextEdit.m_dwChatMode) { case CHATMODE_CHAT: m_lstSprite[2]->Render(lpD3DDevice, m_cAlpha); SetRect(&rcRect, m_rcWindowSize.left + 4, m_rcWindowSize.top + 4, m_rcWindowSize.left + 487, m_rcWindowSize.top + 4 + 15); for(i = 0; i < MAX_DRAWCHAT; i++) { if(g_TextEdit.m_deqChatMessage.size() < i + 1) break; g_TextEdit.DrawText(g_TextEdit.m_deqChatMessage[i + g_TextEdit.m_dwStartChat]->strMessage, &rcRect, DT_LEFT | DT_VCENTER, g_TextEdit.m_deqChatMessage[i + g_TextEdit.m_dwStartChat]->dwColor); rcRect.top += 15; rcRect.bottom = rcRect.top + 15; } break; case CHATMODE_PARTY: m_lstSprite[3]->Render(lpD3DDevice, m_cAlpha); SetRect(&rcRect, m_rcWindowSize.left + 4, m_rcWindowSize.top + 4, m_rcWindowSize.left + 487, m_rcWindowSize.top + 4 + 15); for(i = 0; i < MAX_DRAWCHAT; i++) { if(g_TextEdit.m_deqPartyMessage.size() < i + 1) break; g_TextEdit.DrawText(g_TextEdit.m_deqPartyMessage[i + g_TextEdit.m_dwStartParty]->strMessage, &rcRect, DT_LEFT | DT_VCENTER, g_TextEdit.m_deqPartyMessage[i + g_TextEdit.m_dwStartParty]->dwColor); rcRect.top += 15; rcRect.bottom = rcRect.top + 15; } break; case CHATMODE_GUILD: m_lstSprite[4]->Render(lpD3DDevice, m_cAlpha); SetRect(&rcRect, m_rcWindowSize.left + 4, m_rcWindowSize.top + 4, m_rcWindowSize.left + 487, m_rcWindowSize.top + 4 + 15); for(i = 0; i < MAX_DRAWCHAT; i++) { if(g_TextEdit.m_deqGuildMessage.size() < i + 1) break; g_TextEdit.DrawText(g_TextEdit.m_deqGuildMessage[i + g_TextEdit.m_dwStartGuild]->strMessage, &rcRect, DT_LEFT | DT_VCENTER, g_TextEdit.m_deqGuildMessage[i + g_TextEdit.m_dwStartGuild]->dwColor); rcRect.top += 15; rcRect.bottom = rcRect.top + 15; } break; } m_lstScroll[0]->Render(lpD3DDevice, m_cAlpha); if(g_TextEdit.IsFocus()) { if(g_TextEdit.m_dwEditMode == EDITMODE_CHAT) { SetRect(&rcRect, m_rcWindowSize.left + 112, m_rcWindowSize.top + 83, m_rcWindowSize.left + 501, m_rcWindowSize.top + 98); if(g_ClientMain.m_bCursorToggle) { char strChat[MAX_PATH]; sprintf(strChat, "%s_", g_TextEdit.GetMessage()); g_TextEdit.DrawText(strChat, &rcRect, DT_LEFT | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); } else { g_TextEdit.DrawText(g_TextEdit.GetMessage(), &rcRect, DT_LEFT | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); } } else if(g_TextEdit.m_dwEditMode == EDITMODE_WHISPER) { SetRect(&rcRect, m_rcWindowSize.left + 30, m_rcWindowSize.top + 83, m_rcWindowSize.left + 107, m_rcWindowSize.top + 98); if(g_ClientMain.m_bCursorToggle) { char strChat[MAX_PATH]; sprintf(strChat, "%s_", g_TextEdit.GetMessage()); g_TextEdit.DrawText(strChat, &rcRect, DT_LEFT | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); } else { g_TextEdit.DrawText(g_TextEdit.GetMessage(), &rcRect, DT_LEFT | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); } } } if(strcmp(g_ClientMain.m_strWhisperChrID, "")) { SetRect(&rcRect, m_rcWindowSize.left + 30, m_rcWindowSize.top + 83, m_rcWindowSize.left + 107, m_rcWindowSize.top + 98); g_TextEdit.DrawText(g_ClientMain.m_strWhisperChrID, &rcRect, DT_LEFT | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); } if(g_ClientMain.m_bMouseMode) { m_ButtonManager.m_lstButton[0]->m_nState = BUTTON_OFF; m_ButtonManager.m_lstButton[0]->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[101]); } else { m_ButtonManager.m_lstButton[0]->m_nState = BUTTON_ON; m_ButtonManager.m_lstButton[0]->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[106]); } if(g_ClientMain.m_bAutoRunMode) { m_ButtonManager.m_lstButton[1]->m_nState = BUTTON_OFF; m_ButtonManager.m_lstButton[1]->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[107]); } else { m_ButtonManager.m_lstButton[1]->m_nState = BUTTON_ON; m_ButtonManager.m_lstButton[1]->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[108]); } if(g_CharacterData.m_lstCharData.num>0 && g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_bSitMode) { m_ButtonManager.m_lstButton[2]->m_nState = BUTTON_ON; m_ButtonManager.m_lstButton[2]->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[109]); } else { m_ButtonManager.m_lstButton[2]->m_nState = BUTTON_OFF; m_ButtonManager.m_lstButton[2]->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[103]); } if(g_ClientMain.m_bSimpleMode) { m_ButtonManager.m_lstButton[3]->m_nState = BUTTON_ON; } else { m_ButtonManager.m_lstButton[3]->m_nState = BUTTON_OFF; } m_ButtonManager.Render(lpD3DDevice); }