格斗类按键系统
这个系统就是格斗类游戏的按键系统它的功能是辨识摇招
比如KOF97中的↓→A这类招数的辨识
globals
timer array udg_KeepTimer
integer array udg_ValueNum
constant real udg_KeepTime = 0.5 //这个是保持时间,也就是当这些时间内没有按键输入,那么前面的按键不算连续输入的内容。
boolean array udg_HoldKey
endglobals
function ClearValue takes nothing returns nothing
//计时清空按键记录
local integer i = 1
loop
if GetExpiredTimer() == udg_KeepTimer then
if udg_HoldKey then
set udg_HoldKey = false
set udg_ValueNum = ModuloInteger(udg_ValueNum * 10, 100000000)
call TimerStart(udg_KeepTimer,udg_KeepTime,false,function ClearValue)
return
endif
set udg_ValueNum = 0
return
endif
endloop
endfunction
function ChangeValue takes player p,integer key returns nothing
//按键存储函数,用于存储按键顺序
local integer i = GetConvertedPlayerId(p)
set udg_ValueNum = ModuloInteger(udg_ValueNum * 10+ key, 100000000)
call PauseTimer(udg_KeepTimer)
call TimerStart(udg_KeepTimer,udg_KeepTime,false,function ClearValue)
endfunction
function JudgeAction takes player p returns nothing
//中心处理函数,用于控制各种出招,要注意每个动作触发的顺序,比如 ↓←↓←A一定要写在↓←A前面,否则↓←↓←A无法响应,总之就是代码长的在前面。
local integer i = GetConvertedPlayerId(p)
if (ModuloInteger(udg_ValueNum,1000000) == 313157) or (ModuloInteger(udg_ValueNum,1000000) == 313175) then
call BJDebugMsg("↓←↓←A+B")
set udg_ValueNum = 0
return
endif
if (ModuloInteger(udg_ValueNum,1000000) == 323257) or (ModuloInteger(udg_ValueNum,1000000) == 323275) then
call BJDebugMsg("↓→↓→A+B")
set udg_ValueNum = 0
return
endif
if ModuloInteger(udg_ValueNum,10000) == 1025 then
call BJDebugMsg("←→A")
set udg_ValueNum = 0
return
endif
if ModuloInteger(udg_ValueNum,10000) == 2015 then
call BJDebugMsg("→←A")
set udg_ValueNum = 0
return
endif
if ModuloInteger(udg_ValueNum,1000) == 315 then
call BJDebugMsg("↓←A")
set udg_ValueNum = 0
return
endif
if ModuloInteger(udg_ValueNum,1000) == 325 then
call BJDebugMsg("↓→A")
set udg_ValueNum = 0
return
endif
if ModuloInteger(udg_ValueNum,100) == 11 then
call BJDebugMsg("←←")
set udg_ValueNum = 0
return
endif
if ModuloInteger(udg_ValueNum,100) == 22 then
call BJDebugMsg("→→")
set udg_ValueNum = 0
return
endif
endfunction
代码如上
另外一些其他的触发请参考演示
用法也很简单
参考演示即可(演示很简单,甚至连单位的移动都没模拟,只是进行出招判断)
注意系统最多支持8个按键的招数(如←↓→←↓→A+B)
需要注意的是对于每个英雄的出招设置,
比如↓→A和↓→A+B(AB一起按)这两个不要同时出现,
这个无法判断
当然实际的格斗中也是不会有同时出现的情况的
另外如果招数使用了同时按键(如A+B)
要把所有的可能都写在条件里(57和75)
按键记录保持时间是0.5秒(constant real udg_KeepTime = 0.5)可以自行更改
已经添加了蓄力部分(方向键的蓄力)
按住超过保持时间(默认0.5)后才算蓄力完成
蓄力招数要在蓄力键后+0
比如→蓄←A的判断码是2015而不是215
蓄力后的记录保持时间还是原来的保持时间 oooo,搓招呢 缺少C、D键~~恩恩~~要四键的~~ 支持4键
演示中VCXZ为ABCD 孔明的创意无限阿……
这个丢给某人做键盘控制地图很合适罢~ 原打算自己做的
结果因为某个模型弄的我崩溃了
就是魔兽最开始启动时的背景
唉
做成地形装饰物后一选择就报错…… 那能不能放弃这东西。要是这个系统出来加上很棒的动作应该会很赞 很有创意 需要模型支持呢
……
自己完成不了
我不会做模型 sxlrose有模型~~八神和草雉~~ 收藏了~~~
用的着~~
我有 八神 草薙 神乐 和 大蛇
本来要做个 KOF前传之三神器
搁浅了 鬼一大人的动作技能很华丽……合作罢。 合作?
用不着
一切都交给鬼一大人 半年后的鬼一大不知道jass学得怎么样了~ 都是在我们这些虫蟊面前,都是牛人
引用第13楼巧樂滋聖代于2009-06-21 12:08发表的:
半年后的鬼一大不知道jass学得怎么样了~ http://bbs.islga.org/images/back.gif
当年的鬼一大人也不回J么? 当初我离开时鬼一大开始学J~忘了跟谁学了~好像是卡卡~ 我是在你回来时学的……
你走的时候我还不会呢……
忽然想起来还有很多骗了分缺没完成的技能呢……
感觉这帖里面有两个用t高手阿…… 侃侃
页:
[1]
2