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>
594 lines
20 KiB
C++
594 lines
20 KiB
C++
#include "stdafx.h"
|
|
|
|
#include "GlobalFunctions.h"
|
|
#include "AdminToolClient.h"
|
|
#include "CharacterDoc.h"
|
|
#include "Clipboard.h"
|
|
#include "CheckComboBox.h"
|
|
#include "WindowMgr.h"
|
|
#include "AdminStoreDlgBar.h"
|
|
|
|
#include <Item/Item.h>
|
|
#include <Log/ServerLog.h>
|
|
#include <Creature/CreatureStructure.h>
|
|
#include <Creature/Character/CharacterClass.h>
|
|
#include <Network/Packet/PacketStruct/ServerInfo.h>
|
|
#include <Community/Guild/GuildConstants.h>
|
|
#include <Creature/Siege/SiegeConstants.h>
|
|
#include <Item/ItemConstants.h>
|
|
|
|
|
|
static const char* szSetupFileName = _T("./AdminToolClientSetup.ini");
|
|
|
|
|
|
// 리스트 컨트롤에서 선택한 내용을 엑셀 포맷으로 클립핑하기
|
|
// 매개변수 : ctrlList - 클립핑 할 리스트 컨트롤, nColCount - 컬럼 수
|
|
bool ClippingListCtrl(CListCtrl& ctrlList, int nColCount, bool bIsAllSel)
|
|
{
|
|
CString strBuffer;
|
|
strBuffer.Empty();
|
|
|
|
if(bIsAllSel)
|
|
{
|
|
for(int nRow = 0; nRow < ctrlList.GetItemCount(); ++nRow)
|
|
{
|
|
for(int nCol = 0; nCol < nColCount; ++nCol)
|
|
{
|
|
strBuffer.AppendFormat(_T("%s"), ctrlList.GetItemText(nRow, nCol));
|
|
strBuffer.AppendFormat(_T("\t"));
|
|
}
|
|
strBuffer.AppendFormat(_T("\r\n"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
POSITION pos = ctrlList.GetFirstSelectedItemPosition();
|
|
while(pos)
|
|
{
|
|
int nSelIndex = ctrlList.GetNextSelectedItem(pos);
|
|
|
|
for(int nCol = 0; nCol < nColCount; ++nCol)
|
|
{
|
|
strBuffer.AppendFormat(_T("%s"), ctrlList.GetItemText(nSelIndex, nCol));
|
|
strBuffer.AppendFormat(_T("\t"));
|
|
}
|
|
strBuffer.AppendFormat(_T("\r\n"));
|
|
}
|
|
}
|
|
|
|
return CClipboard::SetText(strBuffer);
|
|
}
|
|
|
|
void CustomPeekMessage()
|
|
{
|
|
MSG msg;
|
|
|
|
if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
|
|
{
|
|
AfxGetApp()->PumpMessage();
|
|
}
|
|
}
|
|
|
|
int SearchListCtrlCol(CListCtrl& ctrlList, CString strSearchValue, int nColIndex)
|
|
{
|
|
CString strGetString;
|
|
|
|
for(int nIndex = 0; nIndex < ctrlList.GetItemCount(); ++nIndex)
|
|
{
|
|
strGetString = ctrlList.GetItemText(nIndex, nColIndex);
|
|
|
|
if(0 == strGetString.Compare(strSearchValue))
|
|
return nIndex;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
void ServerGroupComboSet(CComboBox &Cb)
|
|
{
|
|
CCharacterDoc::listServerInfoPos nEndPos = CCharacterDoc::GetInstance().GetServerInfoEnd();
|
|
CCharacterDoc::listServerInfoPos nPos = CCharacterDoc::GetInstance().GetServerInfoBegin();
|
|
|
|
int ComboIdx = 0;
|
|
|
|
while(nPos != nEndPos)
|
|
{
|
|
CCharacterDoc::ServerInfo& Info = (*nPos);
|
|
Cb.InsertString(ComboIdx++, Info.m_strServerName);
|
|
++nPos;
|
|
}
|
|
}
|
|
|
|
void ServerGroupComboSet(CCheckComboBox &Cb, bool bIsCheck)
|
|
{
|
|
CCharacterDoc::listServerInfoPos nEndPos = CCharacterDoc::GetInstance().GetServerInfoEnd();
|
|
CCharacterDoc::listServerInfoPos nPos = CCharacterDoc::GetInstance().GetServerInfoBegin();
|
|
|
|
int ComboIdx = 0;
|
|
|
|
while(nPos != nEndPos)
|
|
{
|
|
CCharacterDoc::ServerInfo& Info = (*nPos);
|
|
Cb.InsertString(ComboIdx++, Info.m_strServerName);
|
|
++nPos;
|
|
}
|
|
|
|
for(int nIdx = 0; nIdx < Cb.GetCount(); ++nIdx)
|
|
{
|
|
Cb.SetCheck(nIdx, bIsCheck);
|
|
}
|
|
}
|
|
|
|
CString GetRaceString(int nRaceIndex)
|
|
{
|
|
switch(nRaceIndex)
|
|
{
|
|
case CClass::HUMAN: return GetLocalString("HUMAN");
|
|
case CClass::AKHAN: return GetLocalString("AKHAN");
|
|
default: return _T("UNKNOWN");
|
|
}
|
|
}
|
|
|
|
CString GetNationString(int nNationIndex)
|
|
{
|
|
switch(nNationIndex)
|
|
{
|
|
case Creature::KARTERANT: return GetLocalString("NATION_001");
|
|
case Creature::MERKADIA: return GetLocalString("NATION_002");
|
|
case Creature::STATELESS: return GetLocalString("NATION_003");
|
|
case Creature::ALMIGHTY_PIRATE: return GetLocalString("NATION_004");
|
|
}
|
|
|
|
return _T("UNKNOWN");
|
|
}
|
|
|
|
CString GetSiegeObjectTypeString(int nSiegeObjectTypeIndex)
|
|
{
|
|
using namespace Siege;
|
|
|
|
switch(nSiegeObjectTypeIndex)
|
|
{
|
|
case Siege::EMBLEM: return GetLocalString("ADDED_STRING_120");
|
|
case Siege::GATE: return GetLocalString("ADDED_STRING_121");
|
|
case Siege::BACKDOOR: return GetLocalString("ADDED_STRING_122");
|
|
case Siege::CAMP: return GetLocalString("ADDED_STRING_123");
|
|
case Siege::CASTLE_ARMS_NPC: return GetLocalString("ADDED_STRING_124");
|
|
case Siege::GUARD: return GetLocalString("ADDED_STRING_125");
|
|
case Siege::SHORT_RANGE_CASTLE_ARMS: return GetLocalString("ADDED_STRING_126");
|
|
case Siege::LONG_RANGE_CASTLE_ARMS: return GetLocalString("ADDED_STRING_127");
|
|
case Siege::SHORT_RANGE_SIEGE_ARMS: return GetLocalString("ADDED_STRING_128");
|
|
case Siege::LONG_RANGE_SIEGE_ARMS: return GetLocalString("ADDED_STRING_129");
|
|
case Siege::AIRSHIP: return GetLocalString("ADDED_STRING_130");
|
|
case Siege::MINING_CAMP: return GetLocalString("ADDED_STRING_131");
|
|
case Siege::CAMP_SHOP: return GetLocalString("ADDED_STRING_132");
|
|
case Siege::KARTERANT_WEAPON: return GetLocalString("ADDED_STRING_133");
|
|
case Siege::MERKADIA_WEAPON: return GetLocalString("ADDED_STRING_134");
|
|
case Siege::DEFAULT_TYPE: return GetLocalString("ADDED_STRING_135");
|
|
}
|
|
|
|
return _T("UNKNOWN");
|
|
}
|
|
|
|
int GetSiegeObjectTypeIndex(char* szSiegeObjectType)
|
|
{
|
|
CString strEMBLEM = GetLocalString("ADDED_STRING_120");
|
|
CString strGATE = GetLocalString("ADDED_STRING_121");
|
|
CString strBACKDOOR = GetLocalString("ADDED_STRING_122");
|
|
CString strCAMP = GetLocalString("ADDED_STRING_123");
|
|
CString strCASTLE_ARMS_NPC = GetLocalString("ADDED_STRING_124");
|
|
CString strGUARD = GetLocalString("ADDED_STRING_125");
|
|
CString strSHORT_RANGE_CASTLE_ARMS = GetLocalString("ADDED_STRING_126");
|
|
CString strLONG_RANGE_CASTLE_ARMS = GetLocalString("ADDED_STRING_127");
|
|
CString strSHORT_RANGE_SIEGE_ARMS = GetLocalString("ADDED_STRING_128");
|
|
CString strLONG_RANGE_SIEGE_ARMS = GetLocalString("ADDED_STRING_129");
|
|
CString strAIRSHIP = GetLocalString("ADDED_STRING_130");
|
|
CString strMINING_CAMP = GetLocalString("ADDED_STRING_131");
|
|
CString strCAMP_SHOP = GetLocalString("ADDED_STRING_132");
|
|
CString strKARTERANT_WEAPON = GetLocalString("ADDED_STRING_133");
|
|
CString strMERKADIA_WEAPON = GetLocalString("ADDED_STRING_134");
|
|
CString strDEFAULT_TYPE = GetLocalString("ADDED_STRING_135");
|
|
|
|
if (0 == strEMBLEM.CompareNoCase(szSiegeObjectType)) return Siege::EMBLEM;
|
|
else if (0 == strGATE.CompareNoCase(szSiegeObjectType)) return Siege::GATE;
|
|
else if (0 == strBACKDOOR.CompareNoCase(szSiegeObjectType)) return Siege::BACKDOOR;
|
|
else if (0 == strCAMP.CompareNoCase(szSiegeObjectType)) return Siege::CAMP;
|
|
else if (0 == strCASTLE_ARMS_NPC.CompareNoCase(szSiegeObjectType)) return Siege::CASTLE_ARMS_NPC;
|
|
else if (0 == strGUARD.CompareNoCase(szSiegeObjectType)) return Siege::GUARD;
|
|
else if (0 == strSHORT_RANGE_CASTLE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::SHORT_RANGE_CASTLE_ARMS;
|
|
else if (0 == strLONG_RANGE_CASTLE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::LONG_RANGE_CASTLE_ARMS;
|
|
else if (0 == strSHORT_RANGE_SIEGE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::SHORT_RANGE_SIEGE_ARMS;
|
|
else if (0 == strLONG_RANGE_SIEGE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::LONG_RANGE_SIEGE_ARMS;
|
|
else if (0 == strAIRSHIP.CompareNoCase(szSiegeObjectType)) return Siege::AIRSHIP;
|
|
else if (0 == strMINING_CAMP.CompareNoCase(szSiegeObjectType)) return Siege::MINING_CAMP;
|
|
else if (0 == strCAMP_SHOP.CompareNoCase(szSiegeObjectType)) return Siege::CAMP_SHOP;
|
|
else if (0 == strKARTERANT_WEAPON.CompareNoCase(szSiegeObjectType)) return Siege::KARTERANT_WEAPON;
|
|
else if (0 == strMERKADIA_WEAPON.CompareNoCase(szSiegeObjectType)) return Siege::MERKADIA_WEAPON;
|
|
else return Siege::DEFAULT_TYPE;
|
|
}
|
|
|
|
CString GetStateString(int nStateIndex)
|
|
{
|
|
switch(nStateIndex)
|
|
{
|
|
case Siege::COMPLETE: return GetLocalString("ADDED_STRING_136");
|
|
case Siege::UPGRADING: return GetLocalString("ADDED_STRING_137");
|
|
case Siege::REPARING: return GetLocalString("ADDED_STRING_138");
|
|
case Siege::DESTROYING: return GetLocalString("ADDED_STRING_139");
|
|
case Siege::CHANGING: return GetLocalString("ADDED_STRING_140");
|
|
case Siege::DEVELOPING: return GetLocalString("ADDED_STRING_141");
|
|
case Siege::CANCELING: return GetLocalString("ADDED_STRING_142");
|
|
case Siege::RESTORING: return GetLocalString("ADDED_STRING_143");
|
|
case Siege::DESTROYED: return GetLocalString("ADDED_STRING_144");
|
|
}
|
|
|
|
return _T("UNKNOWN");
|
|
}
|
|
|
|
CString GetSubStateString(int nSiegeObjectTypeIndex, int nSubStateIndex)
|
|
{
|
|
switch(nSiegeObjectTypeIndex)
|
|
{
|
|
case Siege::EMBLEM:
|
|
{
|
|
switch(nSubStateIndex)
|
|
{
|
|
case Siege::MINE: return GetLocalString("ADDED_STRING_146");
|
|
case Siege::ENEMY: return GetLocalString("ADDED_STRING_147");
|
|
}
|
|
}
|
|
case Siege::GATE:
|
|
{
|
|
switch(nSubStateIndex)
|
|
{
|
|
case Siege::OPENED: return GetLocalString("ADDED_STRING_148");
|
|
case Siege::CLOSED: return GetLocalString("ADDED_STRING_149");
|
|
}
|
|
}
|
|
case Siege::BACKDOOR:
|
|
{
|
|
switch(nSubStateIndex)
|
|
{
|
|
case Siege::OPENED: return GetLocalString("ADDED_STRING_148");
|
|
case Siege::CLOSED: return GetLocalString("ADDED_STRING_149");
|
|
}
|
|
}
|
|
case Siege::MINING_CAMP:
|
|
{
|
|
switch(nSubStateIndex)
|
|
{
|
|
case Siege::MINING_OFF: return GetLocalString("ADDED_STRING_150");
|
|
case Siege::MINING_ON: return GetLocalString("ADDED_STRING_151");
|
|
case Siege::MINING_READY: return GetLocalString("ADDED_STRING_152");
|
|
}
|
|
}
|
|
case Siege::KARTERANT_WEAPON:
|
|
{
|
|
switch(nSubStateIndex)
|
|
{
|
|
case Siege::WEAPON_EMPTY: return GetLocalString("ADDED_STRING_153");
|
|
case Siege::WEAPON_CHARGE: return GetLocalString("ADDED_STRING_154");
|
|
case Siege::WEAPON_READY: return GetLocalString("ADDED_STRING_155");
|
|
case Siege::WEAPON_FIRE: return GetLocalString("ADDED_STRING_156");
|
|
}
|
|
}
|
|
case Siege::MERKADIA_WEAPON:
|
|
{
|
|
switch(nSubStateIndex)
|
|
{
|
|
case Siege::WEAPON_EMPTY: return GetLocalString("ADDED_STRING_153");
|
|
case Siege::WEAPON_CHARGE: return GetLocalString("ADDED_STRING_154");
|
|
case Siege::WEAPON_READY: return GetLocalString("ADDED_STRING_155");
|
|
case Siege::WEAPON_FIRE: return GetLocalString("ADDED_STRING_156");
|
|
}
|
|
}
|
|
default : return GetLocalString("ADDED_STRING_145");
|
|
}
|
|
|
|
return _T("UNKNOWN");
|
|
}
|
|
|
|
CString GetJewelString(int nJewelIndex)
|
|
{
|
|
switch(nJewelIndex)
|
|
{
|
|
case Siege::NO_JEWEL: return GetLocalString("");
|
|
case Siege::RUBY: return GetLocalString("");
|
|
case Siege::EMERALD: return GetLocalString("");
|
|
case Siege::SAPPHIRE: return GetLocalString("");
|
|
case Siege::DIAMOND: return GetLocalString("");
|
|
case Siege::BLACKMOON: return GetLocalString("");
|
|
}
|
|
return _T("UNKNOWN");
|
|
}
|
|
|
|
|
|
unsigned char GetNationIndex(char* szNation)
|
|
{
|
|
CString strKarterant = GetLocalString("NATION_001");
|
|
CString strMerkadia = GetLocalString("NATION_002");
|
|
CString strStateless = GetLocalString("NATION_003");
|
|
CString strThirdNation = GetLocalString("NATION_004");
|
|
|
|
if (0 == strKarterant.CompareNoCase(szNation)) return Creature::KARTERANT;
|
|
else if (0 == strMerkadia.CompareNoCase(szNation)) return Creature::MERKADIA;
|
|
else if (0 == strStateless.CompareNoCase(szNation)) return Creature::STATELESS;
|
|
else if (0 == strThirdNation.CompareNoCase(szNation)) return Creature::ALMIGHTY_PIRATE;
|
|
else return Creature::STATELESS;
|
|
}
|
|
|
|
CString GetSkillTypeString(unsigned char SkillType)
|
|
{
|
|
switch(SkillType)
|
|
{
|
|
case Skill::Type::NONE: return _T("NONE");
|
|
case Skill::Type::PASSIVE: return _T("PASSIVE");
|
|
case Skill::Type::INSTANCE: return _T("INSTANCE");
|
|
case Skill::Type::CAST: return _T("CAST");
|
|
case Skill::Type::CHANT: return _T("CHANT");
|
|
case Skill::Type::ENCHANT: return _T("ENCHANT");
|
|
case Skill::Type::ITEM: return _T("ITEM");
|
|
}
|
|
return _T("UNKNOWN");
|
|
}
|
|
|
|
CString GetZoneString(unsigned char cZoneIdx)
|
|
{
|
|
switch(cZoneIdx)
|
|
{
|
|
case SERVER_ID::ZONE1: return GetLocalString("ZONE_001");
|
|
case SERVER_ID::ZONE2: return GetLocalString("ZONE_002");
|
|
case SERVER_ID::ZONE4: return GetLocalString("ZONE_004");
|
|
case SERVER_ID::ZONE5: return GetLocalString("ZONE_005");
|
|
case SERVER_ID::CAPITAL: return GetLocalString("ZONE_008");
|
|
case SERVER_ID::ZONE9: return GetLocalString("ZONE_009");
|
|
case SERVER_ID::ZONE12: return GetLocalString("ZONE_012");
|
|
case SERVER_ID::STONE_WAR1: return GetLocalString("ZONE_016");
|
|
case SERVER_ID::STONE_WAR2: return GetLocalString("ZONE_017");
|
|
case SERVER_ID::STONE_WAR3: return GetLocalString("ZONE_018");
|
|
}
|
|
|
|
return _T("NONE");
|
|
}
|
|
|
|
CString GetClassString(int nClassIndex)
|
|
{
|
|
CString strClassName, strKey;
|
|
|
|
strKey.Format("CLASS_%03d", nClassIndex);
|
|
strClassName = GetLocalString(strKey);
|
|
|
|
if(false == strClassName.IsEmpty())
|
|
{
|
|
return strClassName;
|
|
}
|
|
|
|
return _T("NONE");
|
|
}
|
|
|
|
CString GetSetupString(CString Section, CString key)
|
|
{
|
|
TCHAR value[255];
|
|
GetPrivateProfileString(Section, key, _T("default"), value, 255, szSetupFileName);
|
|
return value;
|
|
}
|
|
|
|
CString GetSTableString(unsigned int nIDS)
|
|
{
|
|
CString strString;
|
|
strString.LoadString(nIDS);
|
|
|
|
return strString;
|
|
}
|
|
|
|
int GetSetupInt(CString Section, CString key)
|
|
{
|
|
return GetPrivateProfileInt(Section, key, 255, szSetupFileName);
|
|
}
|
|
|
|
void Report(CString report, REPORT_TYPE eType)
|
|
{
|
|
CAdminStoreDlgBar* StoreBar = static_cast<CAdminStoreDlgBar*>(GET_WINDOW(IDD_STATUS_DLGBAR));
|
|
|
|
if(NULL != StoreBar)
|
|
{
|
|
StoreBar->WorkReport(report, eType);
|
|
}
|
|
}
|
|
|
|
void Report(UINT nID, REPORT_TYPE eType)
|
|
{
|
|
CAdminStoreDlgBar* StoreBar = static_cast<CAdminStoreDlgBar*>(GET_WINDOW(IDD_STATUS_DLGBAR));
|
|
CString strStringTable;
|
|
|
|
strStringTable.LoadString(nID);
|
|
StoreBar->WorkReport(strStringTable, eType);
|
|
}
|
|
|
|
COLORREF GetItemTypeColor(Item::ItemType::Type ItemTypeIndex)
|
|
{
|
|
COLORREF ItemTypeColor;
|
|
|
|
using namespace Item::ItemType;
|
|
|
|
switch (ItemTypeIndex)
|
|
{
|
|
case SHIRT: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case TUNIC: ItemTypeColor = RGB(0, 221, 111); break;
|
|
|
|
case CON_ARMOUR: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case CON_HELM: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case CON_GLOVE: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case CON_BOOTS: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case DEX_ARMOUR: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case DEX_HELM: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case DEX_GLOVE: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case DEX_BOOTS: ItemTypeColor = RGB(255, 74, 74); break;
|
|
|
|
case ONEHANDED_SWORD: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case TWOHANDED_SWORD: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case ONEHANDED_AXE: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case TWOHANDED_AXE: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case ONEHANDED_BLUNT: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case TWOHANDED_BLUNT: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case BOW: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case CROSSBOW: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case STAFF: ItemTypeColor = RGB(255, 0, 255); break;
|
|
case DAGGER: ItemTypeColor = RGB(255, 0, 255); break;
|
|
case SHIELD: ItemTypeColor = RGB(77, 255, 255); break;
|
|
|
|
case CON_BODY: ItemTypeColor = RGB(77, 255, 255); break;
|
|
case CON_HEAD: ItemTypeColor = RGB(77, 255, 255); break;
|
|
case CON_PELVIS: ItemTypeColor = RGB(255, 128, 192); break;
|
|
case CON_PROTECT_A: ItemTypeColor = RGB(255, 255, 128); break;
|
|
case DEX_BODY: ItemTypeColor = RGB(255, 255, 128); break;
|
|
case DEX_HEAD: ItemTypeColor = RGB(255, 255, 128); break;
|
|
case DEX_PELVIS: ItemTypeColor = RGB(77, 255, 255); break;
|
|
case DEX_PROTECT_A: ItemTypeColor = RGB(255, 188, 155); break;
|
|
|
|
case COM_BLUNT: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case COM_SWORD: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case OPP_HAMMER: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case OPP_AXE: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case OPP_SLUSHER: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case OPP_TALON: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case OPP_SYTHE: ItemTypeColor = RGB(255, 74, 74); break;
|
|
|
|
case SKILL_A_GUARD: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case SKILL_A_ATTACK: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case SKILL_A_GUN: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case SKILL_A_KNIFE: ItemTypeColor = RGB(255, 74, 74); break;
|
|
|
|
case ARROW: ItemTypeColor = RGB(0, 221, 111); break;
|
|
case BOLT: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case AMMO: ItemTypeColor = RGB(255, 74, 74); break;
|
|
|
|
case POTION: ItemTypeColor = RGB(255, 74, 74); break;
|
|
case EXP_BOOK: ItemTypeColor = RGB(128, 255, 255); break;
|
|
case CASH_BOOK: ItemTypeColor = RGB(0, 250, 0); break;
|
|
case EVENT_LOTTERY: ItemTypeColor = RGB(0, 0, 255); break;
|
|
case PORTAL: ItemTypeColor = RGB(218, 218, 180); break;
|
|
case FIRE_CRACKER: ItemTypeColor = RGB(255, 0, 128); break;
|
|
case SKILL_BOOK: ItemTypeColor = RGB(255, 162, 68); break;
|
|
|
|
case GEM: ItemTypeColor = RGB(77, 255, 255); break;
|
|
case ORE: ItemTypeColor = RGB(77, 255, 255); break;
|
|
case ETC: ItemTypeColor = RGB(255, 20, 20); break;
|
|
// case EVENT_DROP: ItemTypeColor = RGB(77, 255, 255); break;
|
|
|
|
case CAMP_KIT: ItemTypeColor = RGB(77, 255, 255); break;
|
|
case SHORT_RANGE_ARMS_KIT: ItemTypeColor = RGB(255, 20, 20); break;
|
|
case LONG_RANGE_ARMS_KIT: ItemTypeColor = RGB(77, 255, 255); break;
|
|
case AIRSHIP_KIT: ItemTypeColor = RGB(77, 255, 255); break;
|
|
|
|
case QUEST_ITEM: ItemTypeColor = RGB(239, 213, 192); break;
|
|
default: ItemTypeColor = RGB(100, 100, 100); break;
|
|
}
|
|
|
|
return ItemTypeColor;
|
|
}
|
|
|
|
void SetAdminLevelCb(CComboBox& ctrlLevelCb)
|
|
{
|
|
ctrlLevelCb.InsertString(0, _T("Supporter"));
|
|
ctrlLevelCb.InsertString(1, _T("GM"));
|
|
ctrlLevelCb.InsertString(2, _T("Master"));
|
|
ctrlLevelCb.InsertString(3, _T("Developer"));
|
|
}
|
|
|
|
unsigned char GetAdminLVInitial(CString strAdminLVName)
|
|
{
|
|
if(strAdminLVName == _T("Developer")) return 'D';
|
|
if(strAdminLVName == _T("Master")) return 'M';
|
|
if(strAdminLVName == _T("GM")) return 'G';
|
|
if(strAdminLVName == _T("Supporter")) return 'S';
|
|
|
|
return 'X';
|
|
}
|
|
|
|
unsigned char SetAuthorityMask(unsigned char cLV)
|
|
{
|
|
switch(cLV){
|
|
case 'D': return PktAdminMgr::AuthorityMask::DEVELOPER;
|
|
case 'M': return PktAdminMgr::AuthorityMask::MASTER;
|
|
case 'G': return PktAdminMgr::AuthorityMask::GM;
|
|
case 'S': return PktAdminMgr::AuthorityMask::SUPPORTER;
|
|
default: return PktAdminMgr::AuthorityMask::QUEST_MODE;
|
|
}
|
|
}
|
|
|
|
CString GetAdminLVName(unsigned char Initial)
|
|
{
|
|
CString strLevelName = _T("UNKNOWN");
|
|
|
|
switch(Initial){
|
|
case 'D': strLevelName = _T("Developer"); break;
|
|
case 'M': strLevelName = _T("Master"); break;
|
|
case 'G': strLevelName = _T("GM"); break;
|
|
case 'S': strLevelName = _T("Supporter"); break;
|
|
}
|
|
|
|
return strLevelName;
|
|
}
|
|
|
|
int GetAdminLVIconIndex(unsigned char Initial)
|
|
{
|
|
switch(Initial){
|
|
case 'D': return 0; break; // Developer
|
|
case 'M': return 1; break; // Master
|
|
case 'G': return 2; break; // GM
|
|
case 'S': return 3; break; // Supporter
|
|
default: return 4; break; // Unknown Level
|
|
}
|
|
}
|
|
|
|
CString GetExtraSpacePosString(unsigned char cType)
|
|
{
|
|
switch(cType)
|
|
{
|
|
case Item::ExtraSpacePos::UPGRADE_EQUIPMENT_POS: return _T("UPGRADE_EQUIPMENT_POS"); break;
|
|
case Item::ExtraSpacePos::UPGRADE_MATERIAL_POS: return _T("UPGRADE_MATERIAL_POS"); break;
|
|
case Item::ExtraSpacePos::HOLDITEM_POS: return _T("HOLDITEM_POS"); break;
|
|
case Item::ExtraSpacePos::KIT_MATERIAL_POS: return _T("KIT_MATERIAL_POS"); break;
|
|
case Item::ExtraSpacePos::CAMP_MATERIAL_POS: return _T("CAMP_MATERIAL_POS"); break;
|
|
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS1: return _T("EMBLEM_JEWEL_POS1"); break;
|
|
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS2: return _T("EMBLEM_JEWEL_POS2"); break;
|
|
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS3: return _T("EMBLEM_JEWEL_POS3"); break;
|
|
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS4: return _T("EMBLEM_JEWEL_POS4"); break;
|
|
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS5: return _T("EMBLEM_JEWEL_POS5"); break;
|
|
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS6: return _T("EMBLEM_JEWEL_POS6"); break;
|
|
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS7: return _T("EMBLEM_JEWEL_POS7"); break;
|
|
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS8: return _T("EMBLEM_JEWEL_POS8"); break;
|
|
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS9: return _T("EMBLEM_JEWEL_POS9"); break;
|
|
case Item::ExtraSpacePos::GRAFT_ORIGINAL_POS: return _T("GRAFT_ORIGINAL_POS"); break;
|
|
case Item::ExtraSpacePos::GRAFT_SACRIFICE_POS: return _T("GRAFT_SACRIFICE_POS"); break;
|
|
case Item::ExtraSpacePos::GRAFT_RESULT_POS: return _T("GRAFT_RESULT_POS"); break;
|
|
case Item::ExtraSpacePos::COMPENSATION_POS: return _T("COMPENSATION_POS"); break;
|
|
default: return _T("UNKNOWN"); break;
|
|
}
|
|
}
|
|
|
|
CString GetLocalString(CString strKey)
|
|
{
|
|
char szReturned[256] = "";
|
|
|
|
GetPrivateProfileString("LOCAL_STRING", strKey, NULL, szReturned, 256, szSetupFileName);
|
|
|
|
if(NULL == szReturned)
|
|
{
|
|
return _T("UNKNOWN");
|
|
}
|
|
else
|
|
{
|
|
return static_cast<LPCTSTR>(szReturned);
|
|
}
|
|
}
|
|
|
|
void SetUIString(HWND hWnd, int nResID, char* szKey)
|
|
{
|
|
CString strFormat;
|
|
strFormat.Format(" %s ", GetLocalString(szKey));
|
|
|
|
if(FALSE == SetDlgItemText(hWnd, nResID, strFormat))
|
|
{
|
|
ERRLOG2(g_Log, "Local string set failed: err - %u, key - %s", GetLastError(), szKey);
|
|
}
|
|
} |