|
昨晚凌晨匆忙完成的东西,难免有错,如取消物品会跳出等
不过现在已经完善了,需要的可以直接复制,呵呵~
嗯,附件也更新了
——————
——————
小弟玩金庸mod很久了,今天第一次看代码,用的是复刻lua0.5版的mod
(其实先用dos,不过最后发现vista不好搞,郁闷了)
这是完全在JYModify.lua中实现的,除了我标题所说的功能外,其他都没有改
不知道是否火星,给点意见,哈
其实我不懂lua编程,也没有看教程,不过我有C的基础,感觉上lua是很易懂的东西……
好了,言归正传,就是把药品使用的function改改罢了……
代码如下
function SetModify()
UseThing_Type3=UseThing_Type3_new; --自改,改变战斗物品系统
end
--药品物品
function UseThing_Type3_new(id) --药品物品使用
local usepersonid=-1;
if JY.Status==GAME_MMAP or JY.Status==GAME_SMAP then
Cls(80,10,CC.ScreenW,CC.ScreenH);
DrawStrBox(80,10,string.format("谁要使用%s?",JY.Thing[id]["名称"]),C_WHITE,24);
local r=SelectTeamMenu(80,45);
if r>0 then
usepersonid=JY.Base["队伍" ..r]
end
elseif JY.Status==GAME_WMAP then ---战斗场景使用药品
local pid=WAR.Person[WAR.CurID]["人物编号"];
local step=2;
War_CalMoveStep(WAR.CurID,step,1);
local x1,y1=War_SelectMove();
if x1 ~=nil then
local offset=(y1*CC.WarWidth+x1)*2;
Byte.set16(WAR.Map4,offset,1);
local emeny=Byte.get16(WAR.Map2,offset);
if emeny<0 then --没人
Cls(80,10,CC.ScreenW,CC.ScreenH);
ShowScreen();
return 0;
elseif emeny>=0 then --有人
if WAR.Person[WAR.CurID]["我方"] == WAR.Person[emeny]["我方"] then
usepersonid=WAR.Person[emeny]["人物编号"];
end
end
else
Cls(80,10,CC.ScreenW,CC.ScreenH);
ShowScreen();
return 0;
end
end
if usepersonid>=0 then
if UseThingEffect(id,usepersonid)==1 then --使用有效果
instruct_32(id,-1); --物品数量减少
WaitKey();
else
Cls(80,10,CC.ScreenW,CC.ScreenH);
ShowScreen();
return 0;
end
end
Cls(80,10,CC.ScreenW,CC.ScreenH);
ShowScreen();
return 1;
end
这样改后,使用药品后不是直接给自己用上,而是会出现移动范围(我设定的是2格)
然后把移动范围移到队友脚下,就可以帮队友用药了~
具体代码在附件中,欢迎指正

[ 本帖最后由 winson7891 于 2009-3-23 13:52 编辑 ] |
评分
-
查看全部评分
|