/trunk/Sources/S3Client/Ui/ShortcutKey.cpp
C++ | 2515 lines | 2045 code | 447 blank | 23 comment | 454 complexity | 65ac3ca4bba179793f19e40e41cbdcff MD5 | raw file
Possible License(s): Zlib, LGPL-2.1, LGPL-2.0
Large files files are truncated, but you can click here to view the full file
- /*****************************************************************************************
- // ?????
- // Copyright : Kingsoft 2002
- // Author : Wooy(Wu yue)
- // CreateTime: 2003-1-13
- *****************************************************************************************/
- #include "KWin32.h"
- #include "KIniFile.h"
- #include "ShortcutKey.h"
- #include "UiBase.h"
- #include "UiCase/UiTeamManage.h"
- #include "UiCase/UiOptions.h"
- #include "UiCase/UiStatus.h"
- #include "UiCase/UiItem.h"
- #include "UiCase/UiSkills.h"
- #include "UiCase/UiChannelSubscibe.h"
- #include "UiCase/UiPlayerBar.h"
- #include "UiCase/UiESCDlg.h"
- #include "UiCase/UiSkillTree.h"
- #include "UiCase/UiMiniMap.h"
- #include "UiCase/UiMsgCentrePad.h"
- #include "UiCase/UiChatCentre.h"
- #include "UICase/UiFaceSelector.h"
- #include "UICase/UiHelper.h"
- #include "UICase/UiHelper2.h"
- #include "UICase/UiTaskNote.h"
- #include "UiCase/UiTrade.h"
- #include "UiCase/UiShop.h"
- #include "UiCase/UiStoreBox.h"
- #include "UiCase/UiHeaderControlBar.h"
- #include "UiCase/UiToolsControlBar.h"
- #include "UiCase/UiGame.h"
- #include "UiCase/UiNewsMessage.h"
- #include "UiCase/UiTongCreateSheet.h"
- #include "UiCase/uisysmsgcentre.h"
-
- #include "Elem/SpecialFuncs.h"
-
- #include "UiShell.h"
-
-
- #include "KProtocol.h"
- #include "KRelayProtocol.h"
- #include "KTongProtocol.h"
-
-
- #include "../../core/Src/KPlayerMenuState.h"
-
- #include "../../core/src/coreshell.h"
- extern iCoreShell* g_pCoreShell;
- #include <crtdbg.h>
-
- KLuaScript KShortcutKeyCentre::ms_Script;
- COMMAND_SETTING* KShortcutKeyCentre::ms_pCommands = NULL;
- int KShortcutKeyCentre::ms_nCommands = 0;
- bool KShortcutKeyCentre::ms_Enable = false;
- SHORTFUNCMAP KShortcutKeyCentre::ms_FunsMap;
-
- bool KShortcutKeyCentre::ms_bMouse = false;
- int KShortcutKeyCentre::ms_MouseX = 0;
- int KShortcutKeyCentre::ms_MouseY = 0;
-
- #define UI_AUTOEXEC_SETTING_FILE "\\Ui\\autoexec.lua"
- #define GAME_CONFIG_FILE "\\config.ini"
-
- enum SCREEN_MODE
- {
- SCREEN_MODE_1D = 1,
- SCREEN_MODE_2D = 2,
- SCREEN_MODE_3D = 3,
- };
-
- //////////////////////////////////////
- //x assist funcs
-
- static inline bool __x_isgraph(char c)
- {
- return c < 0 || isgraph(c);
- }
-
- inline bool __x_memcpy_n(void* d, size_t l, const void* s, size_t n)
- {
- if (l < n)
- return false;
- memcpy(d, s, n);
- return true;
- }
-
- //////////////////////////////////////
-
-
- int KShortcutKeyCentre::HandleKeyInput(unsigned int uKey, int nModifier)
- {
- int nIndex = FindCommand(MAKELONG(uKey, nModifier));
- if (nIndex >= 0)
- {
- return ExcuteScript(ms_pCommands[nIndex].szDo);
- }
-
- return false;
- }
-
- int KShortcutKeyCentre::HandleMouseInput(unsigned int uKey, int nModifier, int x, int y)
- {
- if (ms_bMouse)
- return false;
-
- ms_bMouse = true;
- ms_MouseX = x;
- ms_MouseY = y;
- int nIndex = FindCommand(MAKELONG(uKey, nModifier));
- int nRet = false;
- if (nIndex >= 0)
- {
- nRet = ExcuteScript(ms_pCommands[nIndex].szDo);
- }
-
- ms_bMouse = false;
-
- return nRet;
- }
-
- void KShortcutKeyCentre::Enable(bool b)
- {
- ms_Enable = b;
- }
-
- /////////////////////////////////////////////////////////////////////////
-
- //????
- char* l_WindowList[] =
- {
- "team", //0 ??
- "map", //1 ??
- "status", //2 ??
- "Items", //3 ??
- "skills", //4 ??
- "system", //5 ??
- "friend", //6 ??
- "help", //7 ????
- "tasknote", //8 ????
- "leftskill", //9 ????
- "rightskill", //10 ????
- "commandline", //11 ???
- "options", //12 ??
- "statustool", //13 ?????
- "normaltool", //14 ?????
- "chatroom", //15 ????
- "newsmessage", //16 ????
- "debug", //17 ?????????...
- };
-
- int FindWindow(const char* szname)
- {
- for (int i = 0; i < sizeof(l_WindowList) / sizeof(char*); i++)
- {
- if (strcmpi(l_WindowList[i], szname) == 0)
- return i;
- }
- return -1;
- }
-
- bool UiCloseWndsInGame(bool bAll);
-
-
-
- int LuaOpenWindow(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strWindow = (char *)Lua_ValueToString(L, 1);
-
- if (strWindow)
- {
- switch(FindWindow(strWindow))
- {
- case 0: //??
- if (KUiTeamManage::GetIfVisible())
- KUiTeamManage::CloseWindow();
- else
- {
- KUiTeamManage::OpenWindow();
- }
- break;
- case 1: //??
- MapToggleStatus();
- break;
- case 2: //??
- if (KUiStatus::GetIfVisible())
- KUiStatus::CloseWindow(false);
- else
- KUiStatus::OpenWindow();
- break;
- case 3: //??
- if (KUiItem::GetIfVisible())
- KUiItem::CloseWindow(false);
- else
- KUiItem::OpenWindow();
- break;
- case 4: //??
- if (KUiSkills::GetIfVisible())
- KUiSkills::CloseWindow(false);
- else
- KUiSkills::OpenWindow();
- break;
- case 5: //??
- if (UiCloseWndsInGame(false) == false)
- KUiESCDlg::OpenWindow();
- break;
- //??
- case 6: //??
- if (KUiChatCentre::GetIfVisible())
- KUiChatCentre::CloseWindow(false);
- else
- KUiChatCentre::OpenWindow(true);
- break;
- case 7: //????
- if (KUiHelper2::GetIfVisible())
- KUiHelper2::CloseWindow(false);
- else
- KUiHelper2::OpenWindow(true);
- break;
- case 8: //????
- if (KUiTaskNote::GetIfVisible())
- KUiTaskNote::CloseWindow(false);
- else
- KUiTaskNote::OpenWindow();
- break;
- case 9: //????
- if (KUiSkillTree::GetIfVisible())
- KUiSkillTree::CloseWindow(false);
- else
- KUiSkillTree::OpenWindow(true);
- break;
- case 10: //????
- if (KUiSkillTree::GetIfVisible())
- KUiSkillTree::CloseWindow(false);
- else
- KUiSkillTree::OpenWindow(false);
- break;
- case 12: //??
- if (KUiOptions::GetIfVisible())
- KUiOptions::CloseWindow();
- else
- KUiOptions::OpenWindow();
- break;
- case 16: //??
- if (KUiNewsMessage::GetIfVisible())
- KUiNewsMessage::CloseWindow();
- else
- KUiNewsMessage::OpenWindow();
- break;
- case 17: //????
- if (KUiTongCreateSheet::GetIfVisible())
- KUiTongCreateSheet::CloseWindow();
- else
- KUiTongCreateSheet::OpenWindow();
- break;
- }
- }
-
- return 0;
- }
-
- KWndWindow* FindWndWindow(const char* szname)
- {
- KWndWindow* pWin = NULL;
- switch(FindWindow(szname))
- {
- case 1: //1 ??
- pWin = KUiMiniMap::GetSelf();
- break;
- case 13: //13 ?????
- pWin = KUiHeaderControlBar::GetSelf();
- break;
- case 14: //14 ?????
- pWin = KUiToolsControlBar::GetSelf();
- break;
- case 15: //15 ????
- pWin = KUiMsgCentrePad::GetSelf();
- break;
- }
-
- return pWin;
- }
-
-
- int LuaMoveWindow(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 3)
- return 0;
-
- char * strWindow = (char *)Lua_ValueToString(L, 1);
- int nX = (int)(Lua_ValueToNumber(L, 2));
- int nY = (int)(Lua_ValueToNumber(L, 3));
-
- KWndWindow* pWin = FindWndWindow(strWindow);
- if (pWin)
- {
- pWin->SetPosition(nX, nY);
- }
- return 0;
- }
-
- int LuaSizeWindow(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 3)
- return 0;
-
- char * strWindow = (char *)Lua_ValueToString(L, 1);
- int nW = (int)(Lua_ValueToNumber(L, 2));
- int nH = (int)(Lua_ValueToNumber(L, 3));
-
- KWndWindow* pWin = FindWndWindow(strWindow);
- if (pWin)
- {
- pWin->SetSize(nW, nH);
- }
- return 0;
- }
-
- int LuaShowWindow(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strWindow = (char *)Lua_ValueToString(L, 1);
- int nShow = (int)(Lua_ValueToNumber(L, 2));
-
- if (strWindow)
- {
- KWndWindow* pWin = FindWndWindow(strWindow);
-
- if (pWin)
- {
- if (nShow)
- pWin->Show();
- else
- pWin->Hide();
- }
- }
- return 0;
- }
-
- int LuaFocusWindow(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strWindow = (char *)Lua_ValueToString(L, 1);
-
- if (strWindow)
- {
- switch(FindWindow(strWindow))
- {
- case 11: // ???
- KUiPlayerBar::InputNameMsg(false, "", true);
- break;
- }
- }
-
- return 0;
- }
-
- int LuaShortcutSkill(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- int nIndex = (int)Lua_ValueToNumber(L, 1);
-
- KUiSkillTree::HandleShortcutKey(nIndex);
-
- return 0;
- }
-
- int LuaDirectShortcutSkill(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- int nIndex = (int)Lua_ValueToNumber(L, 1);
-
- KUiSkillTree::DirectHandleShortcutKey(nIndex);
-
- return 0;
- }
-
- int LuaShortcutUseItem(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- int nIndex = (int)Lua_ValueToNumber(L, 1);
-
- //???????
- KUiPlayerBar::OnUseItem(nIndex);
-
- return 0;
- }
-
- //????
- char* l_StatusList[] =
- {
- "run", //0 ??
- "sit", //1 ??
- "trade", //2 ??
- "pk", //3 PK
- "horse", //4 ?
- "showplayername", //5 ??????
- "showplayerlife", //6 ??????
- "showplayermana", //7 ??????
- "showplayernumber", //8 ????????
- };
-
- int FindStatus(const char* szname)
- {
- for (int i = 0; i < sizeof(l_StatusList) / sizeof(char*); i++)
- {
- if (strcmpi(l_StatusList[i], szname) == 0)
- return i;
- }
- return -1;
- }
-
-
- int LuaSwitchStatus(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strStatus = (char *)Lua_ValueToString(L, 1);
-
- if (strStatus)
- {
- switch(FindStatus(strStatus))
- {
- case 0: //??
- if (g_pCoreShell)
- g_pCoreShell->OperationRequest(GOI_PLAYER_ACTION, PA_RUN, 0);
- break;
- case 1: //??
- if (g_pCoreShell)
- g_pCoreShell->OperationRequest(GOI_PLAYER_ACTION, PA_SIT, 0);
- break;
- case 2: //??
- if (g_pCoreShell)
- g_pCoreShell->OperationRequest(GOI_TRADE_WILLING, 0, true);
- break;
- case 3: //PK
- if (g_pCoreShell)
- {
- g_pCoreShell->OperationRequest(GOI_PK_SETTING, 0,
- !g_pCoreShell->GetGameData(GDI_PK_SETTING, 0, 0));
- }
- break;
- case 4: //?
- //if (g_pCoreShell)
- // g_pCoreShell->OperationRequest(GOI_PK_SETTING, 0, Player_PK::ms_bPK);
- break;
- case 5: //??????
- if (g_pCoreShell)
- {
- g_pCoreShell->OperationRequest(GOI_SHOW_PLAYERS_NAME, 0,
- !g_pCoreShell->GetGameData(GDI_SHOW_PLAYERS_NAME, 0, 0));
- }
- break;
- case 6: //??????
- if (g_pCoreShell)
- {
- g_pCoreShell->OperationRequest(GOI_SHOW_PLAYERS_LIFE, 0,
- !g_pCoreShell->GetGameData(GDI_SHOW_PLAYERS_LIFE, 0, 0));
- }
- break;
- case 7: //??????
- if (g_pCoreShell)
- {
- g_pCoreShell->OperationRequest(GOI_SHOW_PLAYERS_MANA, 0,
- !g_pCoreShell->GetGameData(GDI_SHOW_PLAYERS_MANA, 0, 0));
- }
- break;
- case 8: //????????
- Player_Life::m_bText = !Player_Life::m_bText;
- Player_Mana::m_bText = !Player_Mana::m_bText;
- Player_Stamina::m_bText = !Player_Stamina::m_bText;
- Player_Exp::m_bText = !Player_Exp::m_bText;
- break;
- case 9:
- KUiPlayerBar::SwitchChannel();
- break;
- }
- }
-
- return 0;
- }
-
- int LuaSwitchChannel(Lua_State * L)
- {
- int nbUp = 0;
-
- if (Lua_GetTopIndex(L) == 1)
- {
- nbUp = (int)Lua_ValueToNumber(L, 1);
- }
- KUiPlayerBar::SwitchChannel(nbUp);
-
- return 0;
- }
-
- int LuaRegisterEvent(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) == 2)
- {
- char * szName = (char *)Lua_ValueToString(L, 1);
- int hWnd = (int)Lua_ValueToNumber(L, 2);
-
- g_UiBase.RegisterEvent(szName, (HANDLE)hWnd);
- }
-
- return 0;
- }
-
- int LuaUnregisterEvent(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) == 2)
- {
- char * szName = (char *)Lua_ValueToString(L, 1);
- int hWnd = (int)Lua_ValueToNumber(L, 2);
-
- g_UiBase.UnregisterEvent(szName, (HANDLE)hWnd);
- }
-
- return 0;
- }
-
- int LuaSendEvent(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) == 2)
- {
- char * szName = (char *)Lua_ValueToString(L, 1);
-
- int nType = Lua_GetValueType(L, 2);
- char * szEvent = NULL;
-
- if (nType == LUA_TSTRING)
- szEvent = (char *)Lua_ValueToString(L, 2);
- else if (nType == LUA_TNUMBER)
- {
- int nNum = (int)Lua_ValueToNumber(L, 2);
- static char szNum[64];
- sprintf(szNum, "%d", nNum);
- szEvent = szNum;
- }
-
- if (szEvent)
- g_UiBase.NotifyOneEvent(szName, szEvent);
- }
-
- return 0;
- }
-
- extern int g_bRepresent3;
- extern int g_bScreen;
- int LuaGetAppStatus(Lua_State * L)
- {
- int nRet = -1;
- if (Lua_GetTopIndex(L) == 1)
- {
- char * szName = (char *)Lua_ValueToString(L, 1);
- if (szName)
- {
- if (strcmpi(szName, "FullWindow") == 0)
- {
- nRet = g_bScreen ? 1 : 0;
- }
- else if (strcmpi(szName, "3D") == 0)
- {
- nRet = g_bRepresent3 ? 1 : 0;
- }
- else if (strcmpi(szName, "2D") == 0)
- {
- nRet = !g_bRepresent3 ? 1 : 0;
- }
- }
- }
- Lua_PushNumber(L, nRet);
- return 1;
- }
-
- namespace hotkey_str
- {
- std::string DescHotKey(DWORD hk)
- {
- static const char* modidesc_table[] = {
- // 0 1 2 3 4 5 6 7
- "Shift", "Ctrl", "Alt", "Ext", "", "", "", ""
- };
- static const char* vkeydesc_table[] = {
- // 0 1 2 3 4 5 6 7
- // 8 9 A B C D E F
- "", "LButton", "RButton", "Cancel", "MButton", "", "", "", //0
- "BackSpace","Tab", "", "", "Clear", "Enter", "", "",
- "", "", "", "Pause", "CapLock", "", "", "", //1
- "", "", "", "ESC", "Convert", "NonConvert","Accept", "ModeChange",
- "Space", "PageUp", "PageDown", "End", "Home", "Left", "Up", "Right", //2
- "Down", "Select", "Print", "Execute", "PrintScreen", "Insert", "Delete", "Help",
- "0", "1", "2", "3", "4", "5", "6", "7", //3
- "8", "9", "", "", "", "", "", "",
- "", "A", "B", "C", "D", "E", "F", "G", //4
- "H", "I", "J", "K", "L", "M", "N", "O",
- "P", "Q", "R", "S", "T", "U", "V", "W", //5
- "X", "Y", "Z", "Windows", "", "Menu", "", "",
- "Num0", "Num1", "Num2", "Num3", "Num4", "Num5", "Num6", "Num7", //6
- "Num8", "Num9", "Num*", "Num+", "Separator","Num-", "Num.", "Num/",
- "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", //7
- "F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16",
- "F17", "F18", "F19", "F20", "F21", "F22", "F23", "F24", //8
- "", "", "", "", "", "", "", "",
- "NumLock", "ScrollLock","", "", "", "", "", "", //9
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "", //A
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "", //B
- "", "", ";", "=", ",", "-", ".", "/",
- "`", "", "", "", "", "", "", "", //C
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "", //D
- "", "", "", "[", "\\", "]", "'", "",
- "", "", "", "", "", "", "", "", //E
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "", //F
- "", "", "", "", "", "", "", "",
- "LDButton", "RDButton", "MDButton", "", "", "", "", "", //10
- "", "", "", "", "", "", "", "",
- };
- static const size_t count_moditbl = sizeof(modidesc_table) / sizeof(modidesc_table[0]);
- static const size_t count_vkeytbl = sizeof(vkeydesc_table) / sizeof(vkeydesc_table[0]);
-
-
- static const char STR_DELIMITER[] = " + ";
- static const size_t LEN_DELIMITER = sizeof(STR_DELIMITER) - sizeof(STR_DELIMITER[0]);
-
-
- const WORD modi = HIWORD(hk);
- const WORD vkey = LOWORD(hk);
- if ((modi & 0xFF00) || (vkey >= count_vkeytbl))
- return "";
-
- const char* szVkDesc = vkeydesc_table[vkey];
- if (!szVkDesc[0])
- return "";
-
-
- std::string desc;
-
- {{
- for (size_t pos = 0; pos <= count_moditbl; pos++)
- {
- const char* szDesc = NULL;
-
- if (pos < count_moditbl)
- {
- if (!(modi & (0x01 << pos)))
- continue;
- szDesc = modidesc_table[pos];
- if (!szDesc[0])
- return "";
- }
- else
- {
- szDesc = szVkDesc;
- }
-
- if (!desc.empty())
- desc += STR_DELIMITER;
- desc += szDesc;
- }
- }}
-
- return desc;
- }
-
- DWORD ParseHotKey(const std::string& desc)
- {
- static const struct PATTERNMAP
- {
- enum {MASK_VKEY = 0x0000FFFF};
-
- typedef std::pair<DWORD, DWORD> HOTKEYPART;
- typedef std::map<std::string, HOTKEYPART, string_iless> DESC2HKPMAP;
- DESC2HKPMAP theMap;
-
- PATTERNMAP()
- {
- const struct _PATTERN
- {
- char* desc;
- DWORD mask;
- DWORD value;
- } pattern_table[] = {
- //modifier
- {"Shift", HOTKEYF_SHIFT<<16, HOTKEYF_SHIFT<<16}, {"Control", HOTKEYF_CONTROL<<16, HOTKEYF_CONTROL<<16},
- {"Alt", HOTKEYF_ALT<<16, HOTKEYF_ALT<<16}, {"Ext", HOTKEYF_EXT<<16, HOTKEYF_EXT<<16},
-
- //vk
- {"LButton", MASK_VKEY, VK_LBUTTON}, {"RButton", MASK_VKEY, VK_RBUTTON},
- {"Cancel", MASK_VKEY, VK_CANCEL}, {"MButton", MASK_VKEY, VK_MBUTTON},
- {"BackSpace", MASK_VKEY, VK_BACK}, {"Tab", MASK_VKEY, VK_TAB}, {"Clear", MASK_VKEY, VK_CLEAR},
- {"Return", MASK_VKEY, VK_RETURN}, {"Pause", MASK_VKEY, VK_PAUSE},
- {"Convert", MASK_VKEY, VK_CONVERT}, {"NonConvert", MASK_VKEY, VK_NONCONVERT},
- {"Accept", MASK_VKEY, VK_ACCEPT}, {"ModeChange", MASK_VKEY, VK_MODECHANGE},
- {"Escape", MASK_VKEY, VK_ESCAPE}, {"Space", MASK_VKEY, VK_SPACE},
- {"Prior", MASK_VKEY, VK_PRIOR}, {"Next", MASK_VKEY, VK_NEXT}, {"End", MASK_VKEY, VK_END}, {"Home", MASK_VKEY, VK_HOME},
- {"Left", MASK_VKEY, VK_LEFT}, {"Up", MASK_VKEY, VK_UP}, {"Right", MASK_VKEY, VK_RIGHT}, {"Down", MASK_VKEY, VK_DOWN},
- {"Insert", MASK_VKEY, VK_INSERT}, {"Delete", MASK_VKEY, VK_DELETE},
- {"Select", MASK_VKEY, VK_SELECT}, {"Print", MASK_VKEY, VK_PRINT}, {"Execute", MASK_VKEY, VK_EXECUTE},
- {"SnapShot", MASK_VKEY, VK_SNAPSHOT}, {"Help", MASK_VKEY, VK_HELP},
- {"0", MASK_VKEY, '0'}, {"1", MASK_VKEY, '1'}, {"2", MASK_VKEY, '2'}, {"3", MASK_VKEY, '3'},
- {"4", MASK_VKEY, '4'}, {"5", MASK_VKEY, '5'}, {"6", MASK_VKEY, '6'}, {"7", MASK_VKEY, '7'},
- {"8", MASK_VKEY, '8'}, {"9", MASK_VKEY, '9'},
- {"A", MASK_VKEY, 'A'}, {"B", MASK_VKEY, 'B'}, {"C", MASK_VKEY, 'C'}, {"D", MASK_VKEY, 'D'},
- {"E", MASK_VKEY, 'E'}, {"F", MASK_VKEY, 'F'}, {"G", MASK_VKEY, 'G'}, {"H", MASK_VKEY, 'H'},
- {"I", MASK_VKEY, 'I'}, {"J", MASK_VKEY, 'J'}, {"K", MASK_VKEY, 'K'}, {"L", MASK_VKEY, 'L'},
- {"M", MASK_VKEY, 'M'}, {"N", MASK_VKEY, 'N'}, {"O", MASK_VKEY, 'O'}, {"P", MASK_VKEY, 'P'},
- {"Q", MASK_VKEY, 'Q'}, {"R", MASK_VKEY, 'R'}, {"S", MASK_VKEY, 'S'}, {"T", MASK_VKEY, 'T'},
- {"U", MASK_VKEY, 'U'}, {"V", MASK_VKEY, 'V'}, {"W", MASK_VKEY, 'W'}, {"X", MASK_VKEY, 'X'},
- {"Y", MASK_VKEY, 'Y'}, {"Z", MASK_VKEY, 'Z'},
- {"Num0", MASK_VKEY, VK_NUMPAD0}, {"Num1", MASK_VKEY, VK_NUMPAD1}, {"Num2", MASK_VKEY, VK_NUMPAD2}, {"Num3", MASK_VKEY, VK_NUMPAD3},
- {"Num4", MASK_VKEY, VK_NUMPAD4}, {"Num5", MASK_VKEY, VK_NUMPAD5}, {"Num6", MASK_VKEY, VK_NUMPAD6}, {"Num7", MASK_VKEY, VK_NUMPAD7},
- {"Num8", MASK_VKEY, VK_NUMPAD8}, {"Num9", MASK_VKEY, VK_NUMPAD9},
- {"Num+", MASK_VKEY, VK_ADD}, {"Num-", MASK_VKEY, VK_SUBTRACT}, {"Num*", MASK_VKEY, VK_MULTIPLY}, {"Num/", MASK_VKEY, VK_DIVIDE},
- {"Separator", MASK_VKEY, VK_SEPARATOR}, {"Num.", MASK_VKEY, VK_DECIMAL},
- {"F1", MASK_VKEY, VK_F1}, {"F2", MASK_VKEY, VK_F2}, {"F3", MASK_VKEY, VK_F3}, {"F4", MASK_VKEY, VK_F4},
- {"F5", MASK_VKEY, VK_F5}, {"F6", MASK_VKEY, VK_F6}, {"F7", MASK_VKEY, VK_F7}, {"F8", MASK_VKEY, VK_F8},
- {"F9", MASK_VKEY, VK_F9}, {"F10", MASK_VKEY, VK_F10}, {"F11", MASK_VKEY, VK_F11}, {"F12", MASK_VKEY, VK_F12},
- {"F13", MASK_VKEY, VK_F13}, {"F14", MASK_VKEY, VK_F14}, {"F15", MASK_VKEY, VK_F15}, {"F16", MASK_VKEY, VK_F16},
- {"F17", MASK_VKEY, VK_F17}, {"F18", MASK_VKEY, VK_F18}, {"F19", MASK_VKEY, VK_F19}, {"F20", MASK_VKEY, VK_F20},
- {"F21", MASK_VKEY, VK_F21}, {"F22", MASK_VKEY, VK_F22}, {"F23", MASK_VKEY, VK_F23}, {"F24", MASK_VKEY, VK_F24},
- {"CapLock", MASK_VKEY, VK_CAPITAL}, {"NumLock", MASK_VKEY, VK_NUMLOCK}, {"ScrollLock", MASK_VKEY, VK_SCROLL},
- {";", MASK_VKEY, 0x00BA}, {"=", MASK_VKEY, 0x00BB}, {",", MASK_VKEY, 0x00BC}, {"-", MASK_VKEY, 0x00BD},
- {".", MASK_VKEY, 0x00BE}, {"/", MASK_VKEY, 0x00BF}, {"`", MASK_VKEY, 0x00C0},
- {"[", MASK_VKEY, 0x00DB},
- {"\\", MASK_VKEY, 0x00DC}, {"]", MASK_VKEY, 0x00DD}, {"'", MASK_VKEY, 0x00DE},
-
-
- //modifier alias
- {"Ctrl", HOTKEYF_CONTROL<<16, HOTKEYF_CONTROL<<16}, {"Menu", HOTKEYF_ALT<<16, HOTKEYF_ALT<<16},
- {"Break", MASK_VKEY, VK_PAUSE},
-
- //vk alias
- {"ESC", MASK_VKEY, VK_ESCAPE}, {"Enter", MASK_VKEY, VK_RETURN},
- {"BACK", MASK_VKEY, VK_BACK},
- {"INS", MASK_VKEY, VK_INSERT}, {"DEL", MASK_VKEY, VK_DELETE},
- {"PageUp", MASK_VKEY, VK_PRIOR}, {"PageDown", MASK_VKEY, VK_NEXT},
- {"ScrlLock", MASK_VKEY, VK_SCROLL},
- {"NumAdd", MASK_VKEY, VK_ADD}, {"NumSub", MASK_VKEY, VK_SUBTRACT}, {"NumMul", MASK_VKEY, VK_MULTIPLY}, {"NumDiv", MASK_VKEY, VK_DIVIDE},
- {"NumDecimal", MASK_VKEY, VK_DECIMAL},
- {"PrintScreen", MASK_VKEY, VK_SNAPSHOT},
-
- {"LDButton", MASK_VKEY, VK_LDBUTTON}, {"RDButton", MASK_VKEY, VK_RDBUTTON}, {"MDButton", MASK_VKEY, VK_MDBUTTON},
- };
- for (size_t i = 0; i < sizeof(pattern_table)/sizeof(pattern_table[0]); i++)
- {
- const _PATTERN& pat = pattern_table[i];
- theMap[std::string(pat.desc)] = std::make_pair(pat.mask, pat.value);
- }
- }
- } s_mapPattern;
-
- static const char CH_DELIMITER = '+';
-
-
- if (desc.empty())
- return 0;
-
- DWORD hkcode = 0;
-
- const char* szToken = desc.c_str(), * szLimit = NULL, * szNext = NULL;
- for ( ; *szToken; szToken = szNext)
- {
- for (szNext = NULL, szLimit = szToken; *szLimit; szLimit++)
- {
- if (*szLimit == CH_DELIMITER)
- {
- for (szNext = szLimit + 1; ; szNext++)
- {
- if (!*szNext)
- {
- szLimit ++;
- break;
- }
- if (*szNext == CH_DELIMITER)
- szLimit ++;
- else if (__x_isgraph(*szNext))
- break;
- }
- if (szLimit <= szToken)
- return 0;
- break;
- }
- }
-
-
- while (!__x_isgraph(*szToken))
- {
- szToken ++;
- if (szToken >= szLimit)
- return 0;
- }
- const char* pe = szLimit - 1;
- while (!__x_isgraph(*pe))
- pe --;
- size_t toklen = pe - szToken + 1;
-
-
-
- PATTERNMAP::DESC2HKPMAP::const_iterator it = s_mapPattern.theMap.find(std::string(szToken, toklen));
- if (it == s_mapPattern.theMap.end())
- return 0;
- const PATTERNMAP::HOTKEYPART& hkp = (*it).second;
-
- if (hkcode & hkp.first)
- return 0;
- hkcode |= hkp.second;
-
- if (szNext == NULL)
- break;
- }
-
- if (!(hkcode & PATTERNMAP::MASK_VKEY))
- return 0;
-
- return hkcode;
- }
-
- } //namespace hotkey_str
-
-
- int LuaAddCommand(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 3)
- return 0;
-
- char * strUKey = (char *)Lua_ValueToString(L, 1);
- char * strName = (char *)Lua_ValueToString(L, 2);
- char * strDo = (char *)Lua_ValueToString(L, 3);
-
- COMMAND_SETTING cs;
- cs.uKey = hotkey_str::ParseHotKey(strUKey);
- strncpy(cs.szCommand, strName, 31);
- cs.szCommand[31] = 0;
- strncpy(cs.szDo, strDo, 127);
- cs.szDo[127] = 0;
- KShortcutKeyCentre::AddCommand(&cs);
-
- return 0;
- }
-
- int LuaRemoveCommand(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strUKey = (char *)Lua_ValueToString(L, 1);
- char * strName = (char *)Lua_ValueToString(L, 2);
-
- COMMAND_SETTING cs;
- cs.uKey = hotkey_str::ParseHotKey(strUKey);
- if (cs.uKey != 0)
- KShortcutKeyCentre::RemoveCommand(KShortcutKeyCentre::FindCommand(cs.uKey));
- else if (strName && strName[0] != 0)
- {
- strncpy(cs.szCommand, strName, 31);
- cs.szCommand[31] = 0;
- KShortcutKeyCentre::RemoveCommand(KShortcutKeyCentre::FindCommand(cs.szCommand));
- }
- else //??????
- {
- KShortcutKeyCentre::RemoveCommandAll();
- }
-
- return 0;
- }
-
- int LuaMakeFriend(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
-
- if (strName && strName[0] != 0)
- {
- KUiPlayerItem SelectPlayer;
- strncpy(SelectPlayer.Name, strName, 32);
- int nKind = -1;
- if (g_pCoreShell)
- {
- ProcessPeople(&SelectPlayer, ACTION_MAKEFRIEND);
- }
- }
-
- return 0;
- }
-
- int LuaCreateTeam(Lua_State * L)
- {
- if (g_pCoreShell)
- {
- g_pCoreShell->TeamOperation(TEAM_OI_CREATE, 0, 0);
- }
-
- return 0;
- }
-
- int LuaJoinTeam(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
-
- if (strName && strName[0] != 0)
- {
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (g_pCoreShell &&
- g_pCoreShell->FindSpecialNPC(strName, &SelectPlayer, nKind) && nKind == kind_player)
- {
- ProcessPeople(&SelectPlayer, ACTION_JOINTEAM);
- }
- }
-
- return 0;
- }
-
- int LuaInviteTeam(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
-
- if (strName && strName[0] != 0)
- {
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (g_pCoreShell &&
- g_pCoreShell->FindSpecialNPC(strName, &SelectPlayer, nKind) && nKind == kind_player)
- {
- ProcessPeople(&SelectPlayer, ACTION_INVITETEAM);
- }
- }
-
- return 0;
- }
-
- int LuaTrade(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
-
- if (strName && strName[0] != 0)
- {
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (g_pCoreShell &&
- g_pCoreShell->FindSpecialNPC(strName, &SelectPlayer, nKind) && nKind == kind_player)
- {
- ProcessPeople(&SelectPlayer, ACTION_TRADE);
- }
- }
-
- return 0;
- }
-
- int LuaRevenge(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
-
- if (strName && strName[0] != 0)
- {
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (g_pCoreShell &&
- g_pCoreShell->FindSpecialNPC(strName, &SelectPlayer, nKind) && nKind == kind_player)
- {
- ProcessPeople(&SelectPlayer, ACTION_REVENGE);
- }
- }
-
- return 0;
- }
-
- int LuaFollow(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
-
- if (strName && strName[0] != 0)
- {
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (g_pCoreShell &&
- g_pCoreShell->FindSpecialNPC(strName, &SelectPlayer, nKind) && nKind == kind_player)
- {
- ProcessPeople(&SelectPlayer, ACTION_FOLLOW);
- }
- }
-
- return 0;
- }
-
- int LuaViewItem(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
-
- if (strName && strName[0] != 0)
- {
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (g_pCoreShell &&
- g_pCoreShell->FindSpecialNPC(strName, &SelectPlayer, nKind) && nKind == kind_player)
- {
- ProcessPeople(&SelectPlayer, ACTION_VIEWITEM);
- }
- }
-
- return 0;
- }
-
- int LuaPrintScreen(Lua_State * L)
- {
- SaveScreenToFile();
- return 0;
- }
-
- int LuaClearMessage(Lua_State * L)
- {
- KUiMsgCentrePad::Clear();
-
- return 0;
- }
-
- #include "../../Engine/src/Text.h"
-
- int LuaSay(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strMessage = (char *)Lua_ValueToString(L, 2);
- int nLen = strlen(strMessage);
-
- if (strName && strName[0] != 0 && !KUiPlayerBar::IsSelfName(strName))
- {
- if (KUiPlayerBar::IsCanSendMessage(strMessage, nLen, strName, -1))
- {
- char Buffer[1536];
- nLen = KUiFaceSelector::ConvertFaceText(Buffer, strMessage, nLen);
- nLen = TEncodeText(Buffer, nLen);
- KUiPlayerBar::OnSendSomeoneMessage(strName, Buffer, nLen);
- }
- }
-
- return 0;
- }
-
- int LuaChat(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strChannelName = (char *)Lua_ValueToString(L, 1);
- char * strMessage = (char *)Lua_ValueToString(L, 2);
- int nLen = strlen(strMessage);
-
- if (strChannelName && strChannelName[0] != 0)
- {
- int nIndex = KUiMsgCentrePad::GetChannelIndex(strChannelName);
- DWORD nChannelID = KUiMsgCentrePad::GetChannelID(nIndex);
- if (nChannelID != -1)
- {
- if (KUiPlayerBar::IsCanSendMessage(strMessage, nLen, strChannelName, nChannelID))
- {
- char Buffer[1536];
- nLen = KUiFaceSelector::ConvertFaceText(Buffer, strMessage, nLen);
- nLen = TEncodeText(Buffer, nLen);
- KUiMsgCentrePad::CheckChannel(nIndex, true);
- KUiPlayerBar::OnSendChannelMessage(nChannelID, Buffer, nLen);
- }
- }
- }
-
- return 0;
- }
-
- int LuaRegisterFunctionAlias(Lua_State * L)
- {
- int nCount = Lua_GetTopIndex(L);
- if (nCount < 2)
- return 0;
-
- char * strFunAlias = (char *)Lua_ValueToString(L, 1);
- char * strFun = (char *)Lua_ValueToString(L, 2);
- int nParam = 0;
- if (nCount >= 3)
- {
- nParam = (int)Lua_ValueToNumber(L, 3);
- }
-
- PARAMLIST List;
- for(int i = 4; i <= nCount; i++)
- {
- char* sDefault = (char *)Lua_ValueToString(L, i);
- if (sDefault == NULL || sDefault[0] == 0)
- List.push_back("\"\"");
- else
- List.push_back(sDefault);
- }
-
- KShortcutKeyCentre::RegisterFunctionAlias(strFunAlias, strFun, nParam, List);
-
- return 0;
- }
-
- #include "UiChatPhrase.h"
- extern KUiChatPhrase g_UiChatPhrase;
-
- int LuaSayPhrase(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- int nIndex = (int)Lua_ValueToNumber(L, 1);
-
- char szPhrase[64];
- int nLen = g_UiChatPhrase.GetPhrase(nIndex, szPhrase);
- if (nLen > 0)
- {
- DWORD nChannelID = -1;
- //????
- int nChannelDataCount = KUiMsgCentrePad::GetChannelCount();
- for (int n = 0; n < nChannelDataCount; n++)
- {
- if (KUiMsgCentrePad::IsChannelType(n, KUiMsgCentrePad::ch_Screen))
- {
- nChannelID = KUiMsgCentrePad::GetChannelID(n);
- break;
- }
- }
-
- if (nChannelID != -1)
- {
- if (KUiPlayerBar::IsCanSendMessage(szPhrase, nLen, KUiMsgCentrePad::GetChannelTitle(KUiMsgCentrePad::GetChannelIndex(nChannelID)), nChannelID))
- {
- char Buffer[1536];
- nLen = KUiFaceSelector::ConvertFaceText(Buffer, szPhrase, nLen);
- nLen = TEncodeText(Buffer, nLen);
- KUiMsgCentrePad::CheckChannel(n, true);
- KUiPlayerBar::OnSendChannelMessage(nChannelID, Buffer, nLen);
- }
- }
- }
-
- return 0;
- }
-
- int LuaSayEmote(Lua_State * L)
- {
- char *pszDestName, *pszDestChannel;
- int nEmoteIndex;
-
- if (Lua_GetTopIndex(L) != 3)
- return 0;
-
- nEmoteIndex = (int)Lua_ValueToNumber(L, 3);
- pszDestName = (char *)Lua_ValueToString(L, 1);
- pszDestChannel = (char *)Lua_ValueToString(L, 2);
-
- ProcessEmote(pszDestName, pszDestChannel, nEmoteIndex);
-
- return 0;
- }
-
- int LuaGetCurrentChannelName(Lua_State * L)
- {
- int nCurChannel = KUiPlayerBar::GetCurChannel();
- if(nCurChannel >= 0 && nCurChannel < KUiMsgCentrePad::GetChannelCount())
- {
- Lua_PushString(L, KUiMsgCentrePad::GetChannelTitle(nCurChannel));
- }
- else
- {
- Lua_PushString(L, "");
- }
- return 1;
- }
-
- int LuaGetRecentPlayerName(Lua_State * L)
- {
- int nCurChannel = KUiPlayerBar::GetCurChannel();
- if(nCurChannel >= KUiMsgCentrePad::GetChannelCount())
- {
- Lua_PushString(L, KUiPlayerBar::GetRecentPlayerName(nCurChannel));
- }
- else
- {
- Lua_PushString(L, "");
- }
- return 1;
- }
-
- int LuaConvertEmotes(Lua_State * L)
- {
- g_UiChatPhrase.ConstructFunctionAlias();
- return 0;
- }
-
- int LuaSetEmote(Lua_State *L)
- {
- int nIndex = -1, nParamCount = Lua_GetTopIndex(L);
- char *pszCmd, *pszName, *pszStringTarget, *pszStringSelf;
-
- switch(nParamCount)
- {
- case 5:
- nIndex = (int)Lua_ValueToNumber(L, 5);
-
- case 4:
- pszCmd = (char *)Lua_ValueToString(L, 1);
- pszName = (char *)Lua_ValueToString(L, 2);
- pszStringSelf = (char *)Lua_ValueToString(L, 4);
- pszStringTarget = (char *)Lua_ValueToString(L, 3);
- break;
-
- default:
- return 0;
- }
-
- g_UiChatPhrase.SetEmote(pszCmd, pszName, pszStringTarget, pszStringSelf, nIndex);
- return 0;
- }
-
- int LuaSetScreenShotFolder(Lua_State * L)
- {
- if(Lua_GetTopIndex(L) == 1)
- {
- char *pszFolder = (char *)Lua_ValueToString(L, 1);
- char szPath[256], Buff[128];
-
- if(pszFolder[0] == '$' && pszFolder[1] == '\\')
- {
- g_GetRootPath(Buff);
- sprintf(szPath, "%s\\%s", Buff, pszFolder + 2);
- }
- else
- {
- memcpy(szPath, pszFolder, strlen(pszFolder) + 1);
- }
- SetScrPicPath(szPath);
- }
- return 0;
- }
-
- int LuaSetPhrase(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- int nIndex = (int)Lua_ValueToNumber(L, 1);
- char * strPhrase = (char *)Lua_ValueToString(L, 2);
- int nLen = strlen(strPhrase);
-
- if (nIndex >= 0 && nIndex < g_UiChatPhrase.GetPhraseCount())
- {
- g_UiChatPhrase.SetPhrase(nIndex, strPhrase, nLen);
- }
-
- return 0;
- }
-
- #include "../Login/Login.h"
- #include "UiCase/UiInit.h"
-
- int LuaExitGame(Lua_State * L)
- {
- if (KUiESCDlg::GetIfVisible())
- KUiESCDlg::CloseWindow(false);
-
- if (g_pCoreShell)
- g_pCoreShell->OperationRequest(GOI_EXIT_GAME, 0, 0);
-
- g_LoginLogic.ReturnToIdle();
- UiEndGame();
- KUiInit::OpenWindow(true, false);
-
- return 0;
- }
-
- int LuaExit(Lua_State * L)
- {
- UiPostQuitMsg();
-
- return 0;
- }
-
- #define GAME_CONFIG_STRING_INI "\\Ui\\??.ini"
- int LuaSet3D(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- KIniFile Ini, IniString;
- KSystemMessage Msg;
-
- int nBool = (int)Lua_ValueToNumber(L, 1);
-
- Msg.eType = SMT_NORMAL;
- Msg.byConfirmType = SMCT_NONE;
- Msg.byPriority = 0;
- Msg.byParamSize = 0;
-
- Ini.Load(GAME_CONFIG_FILE);
- IniString.Load(GAME_CONFIG_STRING_INI);
- if (nBool)
- {
- IniString.GetString("Config", "3D", "????3D?????????????", Msg.szMessage, sizeof(Msg.szMessage));
- Ini.WriteInteger("Client", "Represent", SCREEN_MODE_3D);
- }
- else
- {
- IniString.GetString("Config", "2D", "????2D?????????????", Msg.szMessage, sizeof(Msg.szMessage));
- Ini.WriteInteger("Client", "Represent", SCREEN_MODE_2D);
- }
- KUiSysMsgCentre::AMessageArrival(&Msg, NULL);
- Ini.Save(GAME_CONFIG_FILE);
-
- return 0;
- }
-
- int LuaSetFullWindow(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- KIniFile Ini, IniString;
- KSystemMessage Msg;
-
- int nBool = (int)Lua_ValueToNumber(L, 1);
-
- Msg.eType = SMT_NORMAL;
- Msg.byConfirmType = SMCT_NONE;
- Msg.byPriority = 0;
- Msg.byParamSize = 0;
-
- Ini.Load(GAME_CONFIG_FILE);
- IniString.Load(GAME_CONFIG_STRING_INI);
- if (nBool)
- {
- IniString.GetString("Config", "FullWindow", "??????????????????????????", Msg.szMessage, sizeof(Msg.szMessage));
- Ini.WriteInteger("Client", "FullScreen", 1);
- }
- else
- {
- IniString.GetString("Config", "Window", "??????????????????????????", Msg.szMessage, sizeof(Msg.szMessage));
- Ini.WriteInteger("Client", "FullScreen", 0);
- }
- KUiSysMsgCentre::AMessageArrival(&Msg, NULL);
- Ini.Save(GAME_CONFIG_FILE);
-
- return 0;
- }
-
- int LuaMoveTo(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- int nDir = (int)Lua_ValueToNumber(L, 1);
- int nM = (int)Lua_ValueToNumber(L, 2);
-
- if (nDir < 0)
- nDir = 0;
-
- if (nDir > 63)
- nDir = 63;
-
- if (nM < 0)
- nM = 0;
-
- if (nM > 2)
- nM = 2;
-
- if (g_pCoreShell)
- g_pCoreShell->Goto(nDir, nM);
-
- return 0;
- }
-
- int LuaTurnTo(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- int nDir = (int)Lua_ValueToNumber(L, 1);
-
- if (nDir < 0)
- nDir = 0;
-
- if (nDir > 2)
- nDir = 2;
-
- if (g_pCoreShell)
- g_pCoreShell->Turn(nDir);
-
- return 0;
- }
-
- int Mouse_Action(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- if (g_pCoreShell->ThrowAwayItem()) //????????
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nNPCKind = -1;
- if (g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_all, false, &SelectPlayer, nNPCKind))
- {
- int nRelation = g_pCoreShell->GetNPCRelation(SelectPlayer.nIndex);
- if (nRelation == relation_enemy)
- {
- KUiPlayerImmedItemSkill immedItemSkillInfo;
- memset(&immedItemSkillInfo, 0, sizeof(KUiPlayerImmedItemSkill));
- g_pCoreShell->GetGameData(GDI_PLAYER_IMMED_ITEMSKILL, (int)&immedItemSkillInfo, 0);
-
- if (!g_pCoreShell->LockSomeoneUseSkill(SelectPlayer.nIndex, immedItemSkillInfo.IMmediaSkill[0].uId)) //????
- g_pCoreShell->LockSomeoneAction(0); //??
- }
- else if (nRelation == relation_dialog)
- {
- g_pCoreShell->LockSomeoneAction(SelectPlayer.nIndex);
- }
- }
- else
- g_pCoreShell->LockSomeoneAction(0);
-
- int nObjKind = -1;
- int nObjectIdx = 0;
- if (g_pCoreShell->FindSelectObject(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, false, nObjectIdx, nObjKind))
- {
- g_pCoreShell->LockObjectAction(nObjectIdx);
- }
- else
- g_pCoreShell->LockObjectAction(0);
-
- g_pCoreShell->GotoWhere(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, 0);
-
- return 0;
- }
-
- int Mouse_Force0(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- if (g_pCoreShell->ThrowAwayItem()) //????????
- return 0;
-
- KUiPlayerImmedItemSkill immedItemSkillInfo;
- memset(&immedItemSkillInfo, 0, sizeof(KUiPlayerImmedItemSkill));
- g_pCoreShell->GetGameData(GDI_PLAYER_IMMED_ITEMSKILL, (int)&immedItemSkillInfo, 0);
-
- g_pCoreShell->UseSkill(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, immedItemSkillInfo.IMmediaSkill[0].uId);
-
- return 0;
- }
-
- int Mouse_Force1(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- if (g_pCoreShell->ThrowAwayItem()) //????????
- return 0;
-
- KUiPlayerImmedItemSkill immedItemSkillInfo;
- memset(&immedItemSkillInfo, 0, sizeof(KUiPlayerImmedItemSkill));
- g_pCoreShell->GetGameData(GDI_PLAYER_IMMED_ITEMSKILL, (int)&immedItemSkillInfo, 0);
-
- g_pCoreShell->UseSkill(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, immedItemSkillInfo.IMmediaSkill[1].uId);
-
- return 0;
- }
-
- int Mouse_MoveTo(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- int nM = (int)Lua_ValueToNumber(L, 1);
-
- if (nM < 0)
- nM = 0;
-
- if (nM > 2)
- nM = 2;
-
- g_pCoreShell->GotoWhere(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, nM);
-
- return 0;
- }
-
- int Mouse_Menu(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (!(g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_none | relation_ally | relation_enemy, false, &SelectPlayer, nKind)
- && kind_player == nKind))
- return 0;
-
- PopUpContextPeopleMenu(SelectPlayer, KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY);
-
- return 0;
- }
-
- int Mouse_Emote_Menu(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (!(g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_none | relation_ally | relation_enemy, false, &SelectPlayer, nKind)
- && kind_player == nKind))
- return 0;
-
- PopUpContextEmoteMenu(SelectPlayer.Name, KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY);
-
- return 0;
- }
-
- int Mouse_Say(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (!(g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_none | relation_ally | relation_enemy, false, &SelectPlayer, nKind)
- && kind_player == nKind))
- return 0;
-
- ProcessPeople(&SelectPlayer, ACTION_CHAT);
-
- return 0;
- }
-
- int Mouse_MakeFriend(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (!(g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_none | relation_ally | relation_enemy, false, &SelectPlayer, nKind)
- && kind_player == nKind))
- return 0;
-
- ProcessPeople(&SelectPlayer, ACTION_MAKEFRIEND);
-
- return 0;
- }
-
- int Mouse_JoinTeam(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (!(g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_none | relation_ally | relation_enemy, false, &SelectPlayer, nKind)
- && kind_player == nKind))
- return 0;
-
- ProcessPeople(&SelectPlayer, ACTION_JOINTEAM);
-
- return 0;
- }
-
- int Mouse_InviteTeam(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (!(g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_none | relation_ally | relation_enemy, false, &SelectPlayer, nKind)
- && kind_player == nKind))
- return 0;
-
- ProcessPeople(&SelectPlayer, ACTION_INVITETEAM);
-
- return 0;
- }
-
- int Mouse_Trade(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (!(g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_none | relation_ally | relation_enemy, false, &SelectPlayer, nKind)
- && kind_player == nKind))
- return 0;
-
- ProcessPeople(&SelectPlayer, ACTION_TRADE);
-
- return 0;
- }
-
- int Mouse_Revenge(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (!(g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_none | relation_ally | relation_enemy, false, &SelectPlayer, nKind)
- && kind_player == nKind))
- return 0;
-
- ProcessPeople(&SelectPlayer, ACTION_REVENGE);
-
- return 0;
- }
-
- int Mouse_Follow(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (!(g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_none | relation_ally | relation_enemy, false, &SelectPlayer, nKind)
- && kind_player == nKind))
- return 0;
-
- ProcessPeople(&SelectPlayer, ACTION_FOLLOW);
-
- return 0;
- }
-
- int Mouse_ViewItem(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (!(g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_none | relation_ally | relation_enemy, false, &SelectPlayer, nKind)
- && kind_player == nKind))
- return 0;
-
- ProcessPeople(&SelectPlayer, ACTION_VIEWITEM);
-
- return 0;
- }
-
- int Mouse_BlackList(Lua_State * L)
- {
- if (!KShortcutKeyCentre::ms_bMouse)
- return 0;
-
- if (g_pCoreShell == NULL)
- return 0;
-
- KUiPlayerItem SelectPlayer;
- int nKind = -1;
- if (!(g_pCoreShell->FindSelectNPC(KShortcutKeyCentre::ms_MouseX, KShortcutKeyCentre::ms_MouseY, relation_none | relation_ally | relation_enemy, false, &SelectPlayer, nKind)
- && kind_player == nKind))
- return 0;
-
- ProcessPeople(&SelectPlayer, ACTION_BLACKLIST);
-
- return 0;
- }
-
- int LuaThrowAwayItem(Lua_State * L)
- {
- if (g_pCoreShell == NULL)
- return 0;
-
- g_pCoreShell->ThrowAwayItem();
-
- return 0;
- }
-
- int LuaSetChatFontSzie(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- int nF = (int)Lua_ValueToNumber(L, 1);
-
- KUiMsgCentrePad::SetFontSize(nF);
-
- return 0;
- }
-
- int LuaSetChannelTextColor(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 3)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strColor = (char *)Lua_ValueToString(L, 2);
- char * strBColor = (char *)Lua_ValueToString(L, 3);
-
- if (strName && strColor)
- {
- KUiMsgCentrePad::SetChannelTextColor(strName, GetColor(strColor), GetColor(strBColor));
- }
-
- return 0;
- }
-
- int LuaSetMeTextColor(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strColor = (char *)Lua_ValueToString(L, 1);
- char * strBColor = (char *)Lua_ValueToString(L, 2);
-
- if (strColor)
- {
- KUiMsgCentrePad::SetMSNTextColor(0, GetColor(strColor), GetColor(strBColor));
- }
-
- return 0;
- }
-
- int LuaSetFriendTextColor(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strColor = (char *)Lua_ValueToString(L, 1);
- char * strBColor = (char *)Lua_ValueToString(L, 2);
-
- if (strColor)
- {
- KUiMsgCentrePad::SetMSNTextColor(1, GetColor(strColor), GetColor(strBColor));
- }
-
- return 0;
- }
-
- int LuaSetStrangerTextColor(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strColor = (char *)Lua_ValueToString(L, 1);
- char * strBColor = (char *)Lua_ValueToString(L, 2);
-
- if (strColor)
- {
- KUiMsgCentrePad::SetMSNTextColor(2, GetColor(strColor), GetColor(strBColor));
- }
-
- return 0;
- }
-
-
- extern int WND_SHOW_MOUSE_OVER_WND;
-
- int LuaDebug(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strMode = (char *)Lua_ValueToString(L, 1);
-
- if (strcmpi(strMode, "ShowMouseWnd") == 0)
- {
- WND_SHOW_MOUSE_OVER_WND = !WND_SHOW_MOUSE_OVER_WND;
- }
-
- return 0;
- }
-
- void AddBlackList(const char* strName, const char* strGroup);
-
- int LuaAddBlackList(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1 && Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strGroup = (char *)Lua_ValueToString(L, 2);
-
- std::string group;
- if (strGroup)
- group = strGroup;
-
- AddBlackList(strName, group.c_str());
-
- return 0;
- }
-
- void RemoveBlackList(char* strName);
- void ClearBlackList();
-
- int LuaRemoveBlackList(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
-
- if (strName == NULL || strName[0] == 0)
- ClearBlackList();
- else
- RemoveBlackList(strName);
-
- return 0;
- }
-
- void CreateAddinUnit(const char* UnitName);
-
- int LuaCreateAddinUnit(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
-
- CreateAddinUnit(strName);
-
- return 0;
- }
-
- void DeleteAddinUnit(const char* UnitName);
- int LuaDeleteAddinUnit(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 1)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
-
- DeleteAddinUnit(strName);
-
- return 0;
- }
-
- int LuaCreateUnitGroup(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strGroup = (char *)Lua_ValueToString(L, 2);
-
- int nUint = KUiChatCentre::FindUnitIndex(strName);
- if (nUint >= 0)
- {
- KUiChatCentre::NewGroup(nUint, strGroup);
- }
-
- return 0;
- }
-
- int LuaRenameUnitGroup(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 3)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strGroup = (char *)Lua_ValueToString(L, 2);
- char * strNewGroup = (char *)Lua_ValueToString(L, 3);
-
- int nUint = KUiChatCentre::FindUnitIndex(strName);
- if (nUint >= 0)
- {
- KUiChatCentre::ReplaceGroupName(nUint, strGroup, strNewGroup);
- }
-
- return 0;
- }
-
- int LuaMoveUnitGroup(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 3)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strGroup = (char *)Lua_ValueToString(L, 2);
- char * strNewGroup = (char *)Lua_ValueToString(L, 3);
-
- int nUint = KUiChatCentre::FindUnitIndex(strName);
- if (nUint >= 0)
- {
- KUiChatCentre::MoveGroupToGroup(nUint, strGroup, strNewGroup, false);
- }
-
- return 0;
- }
-
- int LuaDeleteUnitGroup(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strGroup = (char *)Lua_ValueToString(L, 2);
-
- int nUint = KUiChatCentre::FindUnitIndex(strName);
- if (nUint >= 0)
- {
- KUiChatCentre::MoveGroupToGroup(nUint, strGroup, "", true);
- }
-
- return 0;
- }
-
- int LuaMoveUnitMember(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 3)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strMember = (char *)Lua_ValueToString(L, 2);
- char * strGroup = (char *)Lua_ValueToString(L, 3);
-
- int nUint = KUiChatCentre::FindUnitIndex(strName);
- if (nUint >= 0)
- {
- KUiChatCentre::MoveFriendToGroup(nUint, strMember, strGroup);
- }
-
- return 0;
- }
-
- int LuaCreateAddinUnitMember(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 3)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strMember = (char *)Lua_ValueToString(L, 2);
- char * strGroup = (char *)Lua_ValueToString(L, 3);
-
- int nUint = KUiChatCentre::FindAddinUnitIndex(strName);
- if (nUint >= 0)
- {
- KUiChatCentre::AddFriendInfo(nUint, strMember, strGroup);
- }
-
- return 0;
- }
-
- int LuaDeleteAddinUnitMember(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strMember = (char *)Lua_ValueToString(L, 2);
-
- int nUint = KUiChatCentre::FindAddinUnitIndex(strName);
- if (nUint >= 0)
- {
- KUiChatCentre::DeleteFriend(nUint, strMember, true);
- }
-
- return 0;
- }
-
- int LuaSetAddinUnitMemberStatus(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 3)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strMember = (char *)Lua_ValueToString(L, 2);
- char * strStatus = (char *)Lua_ValueToString(L, 3);
-
- int nUint = KUiChatCentre::FindAddinUnitIndex(strName);
- if (nUint >= 0)
- {
- int nStatus = stateOnline;
- if (strStatus == NULL || strStatus[0] == 0)
- nStatus = stateOffline;
- KUiChatCentre::FriendStatus(nUint, strMember, nStatus);
- }
-
- return 0;
- }
-
- int LuaShowSomeoneMessage(Lua_State * L)
- {
- if (Lua_GetTopIndex(L) != 2)
- return 0;
-
- char * strName = (char *)Lua_ValueToString(L, 1);
- char * strMessage = (char *)Lua_ValueToString(L, 2);
-
- if (strName == NULL || strName[0] == 0)
- return 0;
-
- int nLen = strlen(strMessage);
- char Buffer[1536];
- nLen = KUiFaceSelector::ConvertFaceText(Buffer, strMessage, nLen);
- nLen = TEncodeText(Buffer, nLen);
- KUiMsgCen…
Large files files are truncated, but you can click here to view the full file