// Client windows: hotkeys open /rpg lists; the server still validates every command. $RPGClient::MenuOpen = 0; function RPGClient_RunCmd(%cmd) { if (!isObject(serverConnection)) { return; } commandToServer('message', "/rpg " @ %cmd); } function RPGClient_ToggleMenu(%name, %cmd) { if ($RPGClient::MenuOpen $= %name) { $RPGClient::MenuOpen = ""; return; } $RPGClient::MenuOpen = %name; RPGClient_RunCmd(%cmd); } function RPGClient_Menu_Bag() { RPGClient_ToggleMenu("bag", "bag"); } function RPGClient_Menu_Skills() { RPGClient_ToggleMenu("skills", "skills"); } function RPGClient_Menu_Equip() { RPGClient_ToggleMenu("equip", "equip"); } function RPGClient_Menu_Help() { RPGClient_RunCmd("help"); } function RPGClient_Menu_Retaliate() { RPGClient_RunCmd("retaliate"); } function RPGClient_BindKeys() { if (isObject(RPGClient_MenuMap)) { RPGClient_MenuMap.delete(); } new ActionMap(RPGClient_MenuMap); RPGClient_MenuMap.bind(keyboard0, b, RPGClient_Menu_Bag); RPGClient_MenuMap.bind(keyboard0, k, RPGClient_Menu_Skills); RPGClient_MenuMap.bind(keyboard0, e, RPGClient_Menu_Equip); RPGClient_MenuMap.bind(keyboard0, f1, RPGClient_Menu_Help); RPGClient_MenuMap.bind(keyboard0, r, RPGClient_Menu_Retaliate); RPGClient_MenuMap.push(); } function RPGClient_UnbindKeys() { if (isObject(RPGClient_MenuMap)) { RPGClient_MenuMap.pop(); RPGClient_MenuMap.delete(); } }