铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 349|回复: 1

[lua复刻] lua版一种解决走路时可能走路不准的方案

[复制链接]
 楼主| 发表于 2024-3-24 14:52 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
本帖最后由 dragon4liu 于 2024-3-24 15:02 编辑

  1.                 if (JY.WalkSkip == 0 or JY.WalkSkip < CC.WalkSkip) and CC.WalkSkip ~= 0 then
  2.                         if keypress==VK_UP then
  3.                                 direct=0;
  4.                                 JY.WalkCount = JY.WalkCount + 1
  5.                                 JY.WalkSkip = 0
  6.                         elseif keypress==VK_DOWN then
  7.                                 direct=3;
  8.                                 JY.WalkCount = JY.WalkCount + 1
  9.                                 JY.WalkSkip = 0
  10.                         elseif keypress==VK_LEFT then
  11.                                 direct=2;
  12.                                 JY.WalkCount = JY.WalkCount + 1
  13.                                 JY.WalkSkip = 0
  14.                         elseif keypress==VK_RIGHT then
  15.                                 direct=1;
  16.                                 JY.WalkCount = JY.WalkCount + 1
  17.                                 JY.WalkSkip = 0
  18.                         elseif JY.WalkSkip < CC.WalkSkip then
  19.                                 JY.WalkSkip = JY.WalkSkip + 1
  20.                         else
  21.                                 JY.WalkCount = 0
  22.                                 JY.WalkSkip = 0
  23.                         end
  24.                 else
  25.                         for i = VK_RIGHT,VK_UP do
  26.                                 if i ~= CC.PrevKeypress and lib.GetKeyState(i) ~=0 then
  27.                                         keypress = i
  28.                                 end
  29.                         end
  30.                         --如果与上次不同的方向未被按下,则检测与上次相同的方向是否被按下
  31.                         if keypress==-1 and        lib.GetKeyState(CC.PrevKeypress) ~=0 then
  32.                                 keypress = CC.PrevKeypress
  33.                         end
  34.                         CC.PrevKeypress = keypress
  35.                         if keypress==VK_UP then
  36.                                 direct=0;
  37.                                 JY.WalkCount = JY.WalkCount + 1
  38.                         elseif keypress==VK_DOWN then
  39.                                 direct=3;
  40.                                 JY.WalkCount = JY.WalkCount + 1
  41.                         elseif keypress==VK_LEFT then
  42.                                 direct=2;
  43.                                 JY.WalkCount = JY.WalkCount + 1
  44.                         elseif keypress==VK_RIGHT then
  45.                                 direct=1;
  46.                                 JY.WalkCount = JY.WalkCount + 1
  47.                         else
  48.                                 JY.WalkCount = 0
  49.                                 JY.WalkSkip = 0
  50.                         end
  51.                 end
复制代码



lua版本中,有时候,点击一下方向键,但屏幕里的人却会连续走两三步。导致走路不准
这里是本人解决此问题的方案
添加一个全局变量JY.WalkSkip,初始为0,添加一个自定义变量CC.WalkSkip,举例为7
单独按上方向键时,每次都会将JY.WalkSkip重置为0
但若按上方向键后,因为没有新的按键事件产生,所以代码直接进入了
elseif JY.WalkSkip < CC.WalkSkip then
JY.WalkSkip = JY.WalkSkip + 1

当 JY.WalkSkip = CC.WalkSkip后,代码才进入lib.GetKeyState(i)的相关判定。
简而言之,CC.WalkSkip即为首步延迟,
就是在初次按下键盘后,在N次事件循环事件后,才会进入按键状态的判定
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2024-4-25 21:27 | 显示全部楼层
感觉不错啊,话说现在还有人维护金群lua的git么?
没有的话楼主可以考虑整一个。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-5-4 08:35

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表