铁血丹心

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

DIY_War_FightMenu 的問題

[复制链接]
发表于 2013-7-24 18:15 | 显示全部楼层 |阅读模式

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

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

x

请问各位高手大大,在下今天研究了一整天的函数顺序,可是到现在还是无法做出按 esc 就回到武功选
单的效果,在经过分析类似做法的使毒与医疗等选单效果后,想请教几个问题

1.
以医疗效果来说,它是在 War_Manual_Sub 函数里的 warmenu 里呼叫 War_DoctorMenu 函数
而 War_DoctorMenu 会去抓取 War_ExecuteMenu 里的判断式回传的值再将其回传到 War_Manual_Sub
但是在 War_ExecuteMenu 里只有这样一段

  local x1, y1 = War_SelectMove() 是呼叫移动范围的计算函数 ?
  if x1 == nil then  x1 坐标为空的意思 ?
    lib.GetKey() 抓取键盘值 ?
    Cls()
    return 0
  else
    return War_ExecuteMenu_Sub(x1, y1, flag, thingid) 将 War_ExecuteMenu_Sub 的值回传到上一层
  end

完全没看到关于 esc 的相关设定,其他相关的类似功能也是如此判定
为何不用像

    if keypress == VK_ESCAPE then
      DIYdisplay("xxxx")
      return 1
    end

之类的做法去抓取 esc 键的值 ?

再者,War_ExecuteMenu也没写到按 esc 后会回传的值,那为何最后一定会跳回主选单 ?

同样的问题在我试着研究 DIY_War_Fightmenu 时看到以下这一段

        if k ~= 0 then
                if k > c then
                        k = c
                end
                WAR.ShowHead = 0
                if MPPD(pid) == 7 then --ignore building restriction
                        WAR.BH[pid] = 1
                end
                --以下开始 r 与 else 后的 r 宣告不同,why ?
               
                local r = War_Fight_Sub(WAR.CurID, canuse[k])

                WAR.BH[pid] = nil
                WAR.ShowHead = 1
                Cls()
               
                return r --将 r(War_fight_sub) 传回来的值再传回给上一层 ?
        else
          local r = nil
                r = ShowMenu(menu, numwugong, 0, CC.MainSubMenuX, CC.MainSubMenuY, 0, 0, 1, 1, CC.DefaultFont, C_ORANGE, C_WHITE)
               
                if r == 0 then
                        return 0
                end       
               
                WAR.ShowHead = 0
                if MPPD(pid) == 7 then --ignore building restriction
                        WAR.BH[pid] = 1
                end
                local r2 = War_Fight_Sub(WAR.CurID, r)
                WAR.BH[pid] = nil
                WAR.ShowHead = 1
                Cls()

                return r2 --将 r2(War_fight_sub) 传回来的值再传回给上一层 ?
        end

我试着在 War_Fight_Sub 加入

local keypress = lib.GetKey()
if keypress == VK_ESCAPE then
   return 0
end
此段应该是按 esc 会将 War_fight_Sub 的值回传为 0 对吗 ?
然后我要如何在 DIY_War_FightMenu 里加入判断式才会让 DIY_War_FightMenu 重新跑一次 ?
以做成取消武功攻击点后会回到武功选单的效果 ?
如果是在 local r = War_Fight_Sub(WAR.CurID, canuse[k]) 加入
If r == 0 then 的判断式的话
却因为这已经是函数的尾巴,不会再呼叫函数本身了不是 ?

希望能有大大协助解决~~感谢
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-11-15 11:34

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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