Просмотр исходного кода

SQUASH: feat(ui/walk): 用小键盘走路

dzp 1 год назад
Родитель
Сommit
8128ed813c

+ 57 - 40
etc/ui-settings.tin

@@ -32,21 +32,7 @@ VAR {自定义图标} prompt-icon {
 
 VAR {命令提示符,默认为空} prompt-prompt {};
 
-#nop 热键绑定;
-#list global-key-bindings create {
-    {{key}{\cd}     {meaning}{命令行智能切换}               {action}{cli.SmartToggle}}
-    {{key}{\co\cd}  {meaning}{禁止/允许命令和触发}          {action}{xtt.ToggleDisableCommands}}
-    {{key}{\cos}    {meaning}{禁止/允许状态栏更新}          {action}{prompt.ToggleSwitch}}
-    {{key}{\cob}    {meaning}{禁止/允许界面宽字符美化}      {action}{beautify.ToggleSwitch}}
-    {{key}{\col}    {meaning}{查看选项列表}                 {action}{option.List}}
-    {{key}{\cod}    {meaning}{开启/关闭调试模式}            {action}{option.Toggle DebugLog}}
-    {{key}{\coD}    {meaning}{开启/关闭调试日志}            {action}{option.Toggle DebugLogEcho}}
-    {{key}{\coe}    {meaning}{开启/关闭命令发送回显}        {action}{option.Toggle EchoCommand}}
-    {{key}{\cok}    {meaning}{开启/关闭小键盘走路}          {action}{option.Toggle KeypadWalk}}
-    {{key}{\coK}    {meaning}{开启/关闭屏幕虚拟键盘走路}    {action}{option.Toggle ScreenKeypad}}
-};
-
-VAR {小键盘走路的键盘扫描码} {global-keypad-code} {
+VAR {键盘扫描码} {global-keypad-code} {
     {Home}          {\e[H}
     {End}           {\e[F}
     {Up}            {\e[A}
@@ -62,10 +48,22 @@ VAR {小键盘走路的键盘扫描码} {global-keypad-code} {
     {ShiftUp}       {\e[1;2A}
     {ShiftDown}     {\e[1;2B}
     {ShiftLeft}     {\e[1;2D}
-    {ShiftRight}    {\e[1;2C}
-    {ShiftCenter}   {\e[1;2G}
     {ShiftPageUp}   {\e[5;2~}
     {ShiftPageDown} {\e[6;2~}
+    {F1}            {\eOP}
+    {F2}            {\eOQ}
+    {F3}            {\eOR}
+    {F4}            {\eOS}
+    {F5}            {\e[15~}
+    {F6}            {\e[17~}
+    {F7}            {\e[18~}
+    {F8}            {\e[19~}
+    {F9}            {\e[20~}
+    {F10}           {\e[21~}
+    {F11}           {\e[23~}
+    {F12}           {\e[24~}
+    {Insert}        {\e[2~}
+    {Delete}        {\e[3~}
     {KeyA}          {a}
     {KeyB}          {b}
     {KeyC}          {c}
@@ -121,34 +119,53 @@ VAR {小键盘走路的键盘扫描码} {global-keypad-code} {
     {KeySemicolon}  {;}
     {KeyColon}      {:}
     {KeyDot}        {.}
+    {KeyAdd}        {+}
+    {KeySub}        {-}
+    {KeyMul}        {*}
+    {KeyDiv}        {/}
+    {KeyNum0}       {0}
+    {KeyNum1}       {1}
+    {KeyNum2}       {2}
+    {KeyNum3}       {3}
+    {KeyNum4}       {4}
+    {KeyNum5}       {5}
+    {KeyNum6}       {6}
+    {KeyNum7}       {7}
+    {KeyNum8}       {8}
+    {KeyNum9}       {9}
+};
+
+#nop 热键绑定;
+#list global-key-bindings create {
+    {{key}{\cd}     {meaning}{命令行智能切换}               {action}{cli.SmartToggle}}
+    {{key}{\co\cd}  {meaning}{禁止/允许命令和触发}          {action}{xtt.ToggleDisableCommands}}
+    {{key}{\cos}    {meaning}{禁止/允许状态栏更新}          {action}{prompt.ToggleSwitch}}
+    {{key}{\cob}    {meaning}{禁止/允许界面宽字符美化}      {action}{beautify.ToggleSwitch}}
+    {{key}{\col}    {meaning}{查看选项列表}                 {action}{option.List}}
+    {{key}{\cod}    {meaning}{开启/关闭调试模式}            {action}{option.Toggle DebugLog}}
+    {{key}{\coD}    {meaning}{开启/关闭调试日志}            {action}{option.Toggle DebugLogEcho}}
+    {{key}{\coe}    {meaning}{开启/关闭命令发送回显}        {action}{option.Toggle EchoCommand}}
+    {{key}{\cok}    {meaning}{开启/关闭小键盘走路}          {action}{option.Toggle KeypadWalk}}
+    {{key}{\coK}    {meaning}{开启/关闭屏幕虚拟键盘走路}    {action}{option.Toggle ScreenKeypad}}
 };
 
 VAR {小键盘走路的功能映射表} {global-keypad-walking} {};
 
 #list {global-keypad-walking} create {
-    {{key}{Up}              {type}{dir}     {args}{northdown;north;northup;up;northwest;northeast}}
-    {{key}{Down}            {type}{dir}     {args}{southdown;south;southup;down;southwest;southeast}}
-    {{key}{Left}            {type}{dir}     {args}{westdown;west;westup;out;northwest;southwest}}
-    {{key}{Right}           {type}{dir}     {args}{eastdown;east;eastup;enter;northeast;southeast}}
-    {{key}{Home}            {type}{dir}     {args}{northwest;westup;northup}}
-    {{key}{End}             {type}{dir}     {args}{southwest;westdown;southup}}
-    {{key}{PageUp}          {type}{dir}     {args}{northeast;eastup;northdown}}
-    {{key}{PageDown}        {type}{dir}     {args}{southeast;eastdown;southdown}}
-    {{key}{ShiftUp}         {type}{dir}     {args}{northup;north}}
-    {{key}{ShiftDown}       {type}{dir}     {args}{southup;south}}
-    {{key}{ShiftLeft}       {type}{dir}     {args}{westup;west}}
-    {{key}{ShiftRight}      {type}{dir}     {args}{eastup;east}}
-    {{key}{Enter}           {type}{cmd}     {args}{get-all}}
-    {{key}{Center}          {type}{cmd}     {args}{look}}
-    {{key}{KeyK}            {type}{dir}     {args}{northdown;north;northup;up;northwest;northeast}}
-    {{key}{KeyJ}            {type}{dir}     {args}{southdown;south;southup;down;southwest;southeast}}
-    {{key}{KeyH}            {type}{dir}     {args}{westdown;west;westup;out;northwest;southwest}}
-    {{key}{KeyL}            {type}{dir}     {args}{eastdown;east;eastup;enter;northeast;southeast}}
-    {{key}{ShiftKeyO}       {type}{cmd}     {args}{look}}
-    {{key}{ShiftKeyK}       {type}{dir}     {args}{northup;north}}
-    {{key}{ShiftKeyJ}       {type}{dir}     {args}{southup;south}}
-    {{key}{ShiftKeyH}       {type}{dir}     {args}{westup;west}}
-    {{key}{ShiftKeyL}       {type}{dir}     {args}{eastup;east}}
+    {{key}{Up}              {meaning}{向北,尽量靠下/上}    {type}{dir}     {args}{northdown;north;northup;up;northwest;northeast}}
+    {{key}{Down}            {meaning}{向南,尽量靠下/下}    {type}{dir}     {args}{southdown;south;southup;down;southwest;southeast}}
+    {{key}{Left}            {meaning}{向西,尽量靠下/出}    {type}{dir}     {args}{westdown;west;westup;out;northwest;southwest}}
+    {{key}{Right}           {meaning}{向东,尽量靠下/入}    {type}{dir}     {args}{eastdown;east;eastup;enter;northeast;southeast}}
+    {{key}{ShiftUp}         {meaning}{向北,尽量靠上}       {type}{dir}     {args}{northup;north}}
+    {{key}{ShiftDown}       {meaning}{向南,尽量靠上}       {type}{dir}     {args}{southup;south}}
+    {{key}{ShiftLeft}       {meaning}{向西,尽量靠上}       {type}{dir}     {args}{westup;west}}
+    {{key}{ShiftRight}      {meaning}{向东,尽量靠上}       {type}{dir}     {args}{eastup;east}}
+    {{key}{Home}            {meaning}{向西北/西上/北上}     {type}{dir}     {args}{northwest;westup;northup}}
+    {{key}{End}             {meaning}{向西南/西下/南上}     {type}{dir}     {args}{southwest;westdown;southup}}
+    {{key}{PageUp}          {meaning}{向东北/东上/北下}     {type}{dir}     {args}{northeast;eastup;northdown}}
+    {{key}{PageDown}        {meaning}{向东南/东下/南下}     {type}{dir}     {args}{southeast;eastdown;southdown}}
+    {{key}{Enter}           {meaning}{智能交互,搜尸/过河}  {type}{cmd}     {args}{get all}}
+    {{key}{Center}          {meaning}{查看房间}             {type}{cmd}     {args}{look}}
 };
 
 VAR {HP摘要刷新时机,三选一:{总是|从不|自动}} char.HPSummarize.Echo {自动};

+ 7 - 5
mud/pkuxkx/etc/ui-settings.extra.tin

@@ -61,6 +61,7 @@
 
     { {place}{BotSepBar}        {label}{小键盘走路} {name}{keypad}          }
     { {place}{BotSepBar}        {label}{触摸屏走路} {name}{screenKeypad}    }
+    { {place}{BotSepBar}        {label}{运镖模式}   {name}{ganche}          }
     { {place}{BotSepBar}        {label}{搜索条件}   {name}{search}  }
     { {place}{BotSepBar}        {label}{屏幕美化}   {name}{beautify} {cooldown}{600} {visibility}{HideCool} }
     { {place}{BotSepBar}        {label}{状态栏更新} {name}{disable}  {visibility}{HideLabel} }
@@ -80,9 +81,10 @@
     {{key}{\coV}    {meaning}{开启/禁止显示房间风景图}          {action}{option.Toggle ShowRoomView; look}}
 };
 
-event.HandleOnce {user-online} {myui/walk/setup} {pkuxkx/online} {
-    ui.walk.Keypad.Bind {KeySemicolon}  {cmd} {lm part};
-    ui.walk.Keypad.Bind {KeyColon}      {cmd} {localmaps};
-    ui.walk.Keypad.Bind {KeyDot}        {cmd} {map};
-    ui.walk.Keypad.Bind {ShiftKeyI}     {cmd} {killall};
+event.HandleOnce {user-online} {ui/walk/setup/pkuxkx} {pkuxkx/online} {
+    ui.walk.Keypad.Bind {KeyDiv}        {cmd} {lm part};
+    ui.walk.Keypad.Bind {KeyMul}        {cmd} {lm};
+    ui.walk.Keypad.Bind {KeySub}        {cmd} {map};
+    ui.walk.Keypad.Bind {KeyAdd}        {cmd} {kill-npc};
+    ui.walk.Keypad.Bind {Enter}         {cmd} {get-all};
 };

+ 45 - 0
mud/pkuxkx/plugins/lib/ui/walk.extra.tin

@@ -0,0 +1,45 @@
+#alias {ui.walk.go} {
+    #local dir {%1};
+
+    #if { @char.IsBusy{} || @char.InCombat{} } {
+        halt;
+    };
+
+    $ui.walk.cmd $dir;
+};
+
+option.Define {GancheMode} {Bool} {是否开启运镖模式} {false};
+
+#alias {ui.walk.Ganche.Setup} {
+    #if { @option.IsDisable{GancheMode} } {
+        #class ui.walk.ganche.mode kill;
+        errLog 运镖模式已关闭。;
+        #if { @option.IsEnable{KeypadWalk} || @option.IsEnable{ScreenKeypad} } {
+            prompt.Set {{ganche}{@mslp.Exec{option.Toggle GancheMode;<119>已关闭<299>}(点击开启)}};
+        };
+        #else {
+            prompt.Set {{ganche}{}};
+        };
+        #var ui.walk.cmd {go};
+    };
+    #else {
+        #class ui.walk.ganche.mode open;
+        #local short {};
+        #foreach {n;w;e;s;u;d;ne;nw;se;sw;enter;out} {short} {
+            #local long {@dir.Long{$short}};
+            #line sub var #alias {$short}   {ui.walk.go $long};
+            #line sub var #alias {$long}    {ui.walk.go $long};
+        };
+        #class ui.walk.ganche.mode close;
+        okLog 运镖模式已开启。;
+        prompt.Set {{ganche}{@mslp.Exec{option.Toggle GancheMode;<129>已开启<299>}(点击关闭)}};
+        #var ui.walk.cmd {gan che to};
+    };
+};
+
+event.HandleOnce {user-online} {ui/walk/ganche} {pkuxkx/online} {
+    event.Handle {option/changed} {opt/GancheMode/pkuxkx}   {lib/ui/walk/pkuxkx} {ui.walk.Ganche.Setup};
+    event.Handle {option/changed} {opt/KeypadWalk/pkuxkx}   {lib/ui/walk/pkuxkx} {ui.walk.Ganche.Setup};
+    event.Handle {option/changed} {opt/ScreenKeypad/pkuxkx} {lib/ui/walk/pkuxkx} {ui.walk.Ganche.Setup};
+    ui.walk.Ganche.Setup;
+};

+ 29 - 0
mud/pkuxkx/plugins/shortcut.tin

@@ -297,6 +297,35 @@ VAR 服务器重启时间 gServerRebootTime {0};
     };
 };
 
+VAR {要寻找的 NPC 的特征,表格} {gFocusNPC} {};
+
+#alias {kill-npc} {
+    #local obj {};
+
+    #if { "$gFocusNPC[id]" != "" } {
+        #local obj {@map.Room.GetObjByID{{$gFocusNPC[id]}}};
+    };
+    #elseif { "$gFocusNPC[name]" != "" } {
+        #local obj {@map.Room.GetObjByName{{$gFocusNPC[name]}}};
+    };
+    #elseif { "$gFocusNPC[title]" != "" } {
+        #local obj {@map.Room.GetObjByName{{%*};{$gFocusNPC[title]}}};
+    };
+
+    #if { "$gFocusNPC" != "" && "$obj" == "" } {
+        #return;
+    };
+
+    #if {  ( "$gFocusNPC[id]" == "" || "$obj[id]" == "$gFocusNPC[id]" )
+        && ( "$gFocusNPC[name]" == "" || "$obj[name]" == "$gFocusNPC[name]" )
+        && ( "$gFocusNPC[title]" == "" || "$obj[title]" == "$gFocusNPC[title]" ) } {
+        killall $obj[id];
+    };
+    #else {
+        killall;
+    };
+};
+
 #alias {%S_%S} {node walk %0} 9;
 
 load-lib sync;

+ 6 - 5
plugins/lib/ui/walk.tin

@@ -35,9 +35,9 @@ option.Define {KeypadWalk} {Bool} {是否开启小键盘走路} {false};
 option.Define {ScreenKeypad} {Bool} {是否开启屏幕虚拟键盘} {false};
 
 #func {lib_ui_walk.Init} {
-    event.Handle {option/changed} {option/changed/KeypadWalk} {lib/ui/walk} {ui.walk.Keypad.Setup};
-    event.Handle {option/changed} {option/changed/ScreenKeypad} {lib/ui/walk} {ui.walk.ScreenKeypad.Setup};
-    event.HandleOnce {user-online} {ui/walk/setup} {pkuxkx/online} {
+    event.Handle {option/changed} {opt/KeypadWalk/main}     {lib/ui/walk} {ui.walk.Keypad.Setup};
+    event.Handle {option/changed} {opt/ScreenKeypad/main}   {lib/ui/walk} {ui.walk.ScreenKeypad.Setup};
+    event.HandleOnce {user-online} {ui/walk/setup} {online} {
         ui.walk.Keypad.Setup;
         ui.walk.ScreenKeypad.Setup;
     };
@@ -210,11 +210,11 @@ option.Define {ScreenKeypad} {Bool} {是否开启屏幕虚拟键盘} {false};
     #return {$dir};
 };
 
-VAR {触屏走路插件的走路命令,默认为 go} ui.walk.cmd {go};
+VAR {触屏和小键盘走路插件的走路命令,默认为 go} ui.walk.cmd {go};
 
 ///=== {
 // ## ui.walk.SetCmd <触屏走路命令>
-//    设置触屏走路时所用的命令,默认为 go。
+//    设置触屏走路和小键盘走路时所用的命令,默认为 go。
 //    例如,推车任务时你可以设置为: ui.walk.SetCmd {gan che to} 来表示推车所用的命令。
 // };
 #alias {ui.walk.SetCmd} {
@@ -339,6 +339,7 @@ VAR {触屏走路插件的走路命令,默认为 go} ui.walk.cmd {go};
         #if { {$input} !== {} } {
             #cursor clear;
             $input;
+            #line sub var #history insert {$input};
             #return;
         };
         #elseif { "$gMapRoom[dock]" == "dock" } {