Files
Client/GameTools/NeoRylClient/HumanSimpleChat.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

989 lines
30 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// HumanSimpleChat.cpp: implementation of the CHumanSimpleChat class.
//
//////////////////////////////////////////////////////////////////////
#include "ClientMain.h"
#include "WinInput.h"
#include "HumanSimpleChat.h"
#include "GUITextEdit.h"
#include "FrameTimer.h"
#include "StringFilter.h"
#include "GUIMessageBox.h"
#include "BaseGraphicsLayer.h"
#include "Creature\Monster\MonsterMgr.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHumanSimpleChat::CHumanSimpleChat()
{
}
CHumanSimpleChat::~CHumanSimpleChat()
{
}
BOOL CHumanSimpleChat::Init(unsigned short x, unsigned short y)
{
CSprite *lpSprite;
lpSprite = new CSprite;
lpSprite->Create(x, y + 80, 0, 81, 256, 100, g_ClientMain.m_lpInterface->m_lstTexture[1]);
m_lstSprite.push_back(lpSprite);
lpSprite = new CSprite;
lpSprite->Create(x + 256, y + 80, 0, 201, 250, 220, g_ClientMain.m_lpInterface->m_lstTexture[1]);
m_lstSprite.push_back(lpSprite);
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 CHumanSimpleChat::Update(BOOL &bClick, BOOL &bEdge)
{
if(g_TextEdit.IsFocus() && g_TextEdit.m_dwEditMode == EDITMODE_CHAT && 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();
float fUpdate = CFrameTimer::GetUpdateTimer(g_ClientMain.m_nShowInterfaceTimerID) * 2.0f;
// unsigned long count = 0;
deque<CGUITextEdit::Message *>::iterator it;
for(it = g_TextEdit.m_deqChatMessage.begin(); it != g_TextEdit.m_deqChatMessage.end(); it++)
{
if((*it)->fTimer > 0.0f)
{
(*it)->fTimer -= fUpdate;
}
/* if((*it)->fTimer > 0.0f)
{
count++;
}*/
}
/* if(count < 5)
g_TextEdit.m_dwStartChat = 0;
else
g_TextEdit.m_dwStartChat = count - 5;*/
// count = 0;
for(it = g_TextEdit.m_deqPartyMessage.begin(); it != g_TextEdit.m_deqPartyMessage.end(); it++)
{
if((*it)->fTimer > 0.0f)
{
(*it)->fTimer -= fUpdate;
}
/* if((*it)->fTimer > 0.0f)
{
count++;
}*/
}
/* if(count < 5)
g_TextEdit.m_dwStartParty = 0;
else
g_TextEdit.m_dwStartParty = count - 5;*/
// count = 0;
for(it = g_TextEdit.m_deqGuildMessage.begin(); it != g_TextEdit.m_deqGuildMessage.end(); it++)
{
if((*it)->fTimer > 0.0f)
{
(*it)->fTimer -= fUpdate;
}
/* if((*it)->fTimer > 0.0f)
{
count++;
}*/
}
/* if(count < 5)
g_TextEdit.m_dwStartGuild = 0;
else
g_TextEdit.m_dwStartGuild = count - 5;*/
/* 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;
}
}
/////////////// <20><>ũ<EFBFBD><C5A9> <20>κ<EFBFBD>
/* 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, "/<2F><>")) // <20>ӼӸ<D3BC>
{
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, "/<2F><>")) // <20><>ġ<EFBFBD><C4A1>
{
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<EFBFBD><EFBFBD> <20>Ŀ<EFBFBD> <20><>ġ<EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.", 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, "/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"))
{
g_ClientMain.m_bMovieVersion = TRUE;
g_ClientMain.m_bSimpleMode = TRUE;
} else if(!strcmp(token, "/#gamemode!") || !strcmp(token, "/<2F><><EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD>"))
{
g_ClientMain.m_bMovieVersion = FALSE;
} else if(!strcmp(token, "/goto") || !strcmp(token, "/<2F>̵<EFBFBD>"))
{
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.<2E><> <20><><EFBFBD><EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD> <20>ܼ<EFBFBD>");
} else
{
FreeConsole();
}
} else if(!strcmp(token, "/#showinfo!"))
{
g_ClientMain.m_bShowInfo = !g_ClientMain.m_bShowInfo;
} else if(!strcmp(token, "/pos") || !strcmp(token, "/<2F><>ǥ"))
{
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, "/<2F><><EFBFBD>̵<EFBFBD>"))
{
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, "/<2F><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD>Ƽ"))
{
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, "/<2F><><EFBFBD><EFBFBD>"))
{
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, "/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ"))
{
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, "/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"))
{
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, "/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"))
{
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 CHumanSimpleChat::Render(LPDIRECT3DDEVICE8 lpD3DDevice)
{
if(g_TextEdit.IsFocus() && g_TextEdit.m_dwEditMode == EDITMODE_CHAT)
{
m_lstSprite[0]->Render(lpD3DDevice, m_cAlpha);
m_lstSprite[1]->Render(lpD3DDevice, m_cAlpha);
}
RECT rcRect;
int i, count = 0;
if(!g_ClientMain.m_bMovieVersion)
{
switch(g_TextEdit.m_dwChatMode)
{
case CHATMODE_CHAT:
SetRect(&rcRect, m_rcWindowSize.left + 4, m_rcWindowSize.top + 4 + 60, m_rcWindowSize.left + 487, m_rcWindowSize.top + 4 + 15 + 60);
for(i = g_TextEdit.m_deqChatMessage.size() - 1; i >= 0; i--)
{
if(count >= 5) break;
if(g_TextEdit.m_deqChatMessage[i]->fTimer > 0.0f)
{
rcRect.left++; rcRect.right++; rcRect.top++; rcRect.bottom++;
g_TextEdit.DrawText(g_TextEdit.m_deqChatMessage[i]->strMessage, &rcRect, DT_LEFT | DT_VCENTER, D3DCOLOR_RGBA(0, 0, 0, 255));
rcRect.left--; rcRect.right--; rcRect.top--; rcRect.bottom--;
g_TextEdit.DrawText(g_TextEdit.m_deqChatMessage[i]->strMessage, &rcRect, DT_LEFT | DT_VCENTER, g_TextEdit.m_deqChatMessage[i]->dwColor);
rcRect.top -= 15;
rcRect.bottom = rcRect.top + 15;
count++;
}
}
break;
case CHATMODE_PARTY:
SetRect(&rcRect, m_rcWindowSize.left + 4, m_rcWindowSize.top + 4 + 60, m_rcWindowSize.left + 487, m_rcWindowSize.top + 4 + 15 + 60);
for(i = g_TextEdit.m_deqPartyMessage.size() - 1; i >= 0; i--)
{
if(count >= 5) break;
if(g_TextEdit.m_deqPartyMessage[i]->fTimer > 0.0f)
{
rcRect.left++; rcRect.right++; rcRect.top++; rcRect.bottom++;
g_TextEdit.DrawText(g_TextEdit.m_deqPartyMessage[i]->strMessage, &rcRect, DT_LEFT | DT_VCENTER, D3DCOLOR_RGBA(0, 0, 0, 255));
rcRect.left--; rcRect.right--; rcRect.top--; rcRect.bottom--;
g_TextEdit.DrawText(g_TextEdit.m_deqPartyMessage[i]->strMessage, &rcRect, DT_LEFT | DT_VCENTER, g_TextEdit.m_deqPartyMessage[i]->dwColor);
rcRect.top -= 15;
rcRect.bottom = rcRect.top + 15;
count++;
}
}
break;
case CHATMODE_GUILD:
SetRect(&rcRect, m_rcWindowSize.left + 4, m_rcWindowSize.top + 4 + 60, m_rcWindowSize.left + 487, m_rcWindowSize.top + 4 + 15 + 60);
for(i = g_TextEdit.m_deqGuildMessage.size() - 1; i >= 0; i--)
{
if(count >= 5) break;
if(g_TextEdit.m_deqGuildMessage[i]->fTimer > 0.0f)
{
rcRect.left++; rcRect.right++; rcRect.top++; rcRect.bottom++;
g_TextEdit.DrawText(g_TextEdit.m_deqGuildMessage[i]->strMessage, &rcRect, DT_LEFT | DT_VCENTER, D3DCOLOR_RGBA(0, 0, 0, 255));
rcRect.left--; rcRect.right--; rcRect.top--; rcRect.bottom--;
g_TextEdit.DrawText(g_TextEdit.m_deqGuildMessage[i]->strMessage, &rcRect, DT_LEFT | DT_VCENTER, g_TextEdit.m_deqGuildMessage[i]->dwColor);
rcRect.top += 15;
rcRect.bottom = rcRect.top + 15;
count++;
}
}
break;
}
}
if(g_TextEdit.IsFocus() && 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));
}
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));
}
}
}