铁血丹心

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

[不负责任的教程]简单特殊指令的制作,附带大暴/青箫/灵貂的实例

  [复制链接]
发表于 2012-5-27 14:08 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 二宫和也 于 2012-8-19 21:26 编辑

返回教程索引

说明:这是给俺这种菜鸟的教程,老手请无视-v-

最近闲得无事研究diy,正在尝试自己山寨最新版本增添指令,这里举的例子是用diy版本里不见了的青青的大暴,我改的是龙人的diy版本,不过其他版本改法一样

第一步:设置几个变量
  1. --搜索 GRTS 然后可以看到一堆语句,把下面这两个加进去
  2. GRTS[91] = "大暴" --指令名字
  3. GRTSSAY[91] = "效果:本次攻击必连击*条件:体力大于30*消耗:体力15点" --指令说明

  4. --在 function WarSetGlobal里面添加以下的变量,具体位置就找到里面那一堆war.xxx,加到中间去就行
  5. WAR.QQDB=0 --大暴的判定,1表示使用了大暴,0表示没有使用
复制代码
第二步:找到 function War_Manual_Sub,在里面添加如下语句
  1.   --青青大暴指令
  2.   if pid == 91 then
  3.     if JY.Person[pid]["体力"] <= 20 then --体力低于20则不显示指令菜单
  4.             warmenu[11][3] = 0
  5.     end
  6.   end  
复制代码
第三步:找到 function War_TgrtsMenu,在里面添加如下语句
  1.         if pid == 91 then --青青大暴指令
  2.                 if JY.Person[pid]["体力"] > 30 then --如果体力大于30才可以发动
  3.                         AddPersonAttrib(91, "体力", -15) --体力减少15
  4.                         WAR.QQDB = 1
  5.                         War_FightMenu() --选择武功
  6.                         WAR.QQDB = 0 --重置大暴判定
  7.                 else
  8.                         DrawStrBoxWaitKey(CC.EVB176, C_WHITE, 30) --体力小于30提示无法发动
  9.                   return 0
  10.                 end
  11.         end        
复制代码
第四步:在function War_Fight_Sub 里面找到判定连击的地方,加入以下语句
  1.         if pid == 91 and WAR.QQDB == 1 then --如果行动者是青青且使用了大暴则必定连击
  2.                 fightnum = 2
  3.         end
复制代码

然后就ok了....这就是简单的菜鸟教程,明天没事的话继续讲程瑛的青箫和杨过的召唤大鸟

编辑:2,4,10楼还有料

返回教程索引



【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-5-27 22:35 | 显示全部楼层
这里也太冷清了,难道大家都跑去玩天翔了-_-

总结一下,制作指令其实就4个步骤,很容易举一反三

1) 添加指令的名称和说明,GRTS[x]是名字,GRTSSAY[x]是说明,其中的x是人物编号

2) 添加指令在战斗菜单中的显示,这个是加在War_Manual_Sub这个函数里面的。warmenu[11][3]为0则不显示指令菜单,为1则显示

3) 添加指令的使用,需要修改War_TgrtsMenu函数,基本上参照里面的其他指令就可以自行山寨了

4) 指令的效果,这个有点复杂,一般简单的效果可以只修改War_TgrtsMenu这一个函数,比如霍青桐的加集气和程瑛的群疗内伤。如果需要复杂点的效果就要改动到其他函数了,比如跟战斗有关就修改War_Fight_Sub,跟伤害有关(比如凌波)就修改War_WugongHurtLife,跟集气速度有关就修改GetJiqi,这就要靠大家对diy的理解了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-5-30 21:15 | 显示全部楼层
好东西受教了!~~~
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-6-1 09:22 | 显示全部楼层
真的太冷了呃,都没有人想分享下心得么-_-

再发一个程瑛的指令

照例,第一步添加指令的说明
  1.         --程瑛青箫
  2.         GRTS[63] = "青箫"
  3.         GRTSSAY[63] = "效果:恢复全员内伤35点*条件:体力20内力500以上*消耗:体力10点内力350点"               
复制代码
第二步,指令的显示,在War_Manual_Sub里面
  1.   if pid == 63 then --程瑛青箫指令
  2.     if JY.Person[pid]["体力"] < 20 or JY.Person[pid]["内力"] < 500 then
  3.             warmenu[11][3] = 0
  4.     end
  5.   end   
复制代码
第三步和第四步可以合并,只要修改War_TgrtsMenu就能使用指令和出相应的效果
  1.         if pid == 63 then --程瑛青箫
  2.                 if JY.Person[pid]["体力"] >= 20 and JY.Person[pid]["内力"] >= 500 then
  3.                         for i = 1080, 1093 do
  4.                                 CurIDTXDH(WAR.CurID, i, i, "桃花秘传·碧海潮生曲");                --动画显示       
  5.                                 lib.Delay(10)
  6.                         end
  7.                         JY.Person[pid]["体力"] = JY.Person[pid]["体力"] - 10
  8.                         JY.Person[pid]["内力"] = JY.Person[pid]["内力"] - 350
  9.                         for i = 0, WAR.PersonNum - 1 do
  10.                                 local tmppid = WAR.Person[i]["人物编号"]
  11.                                 if WAR.Person[i]["死亡"] == false and WAR.Person[i]["我方"] then
  12.                                   AddPersonAttrib(tmppid, "受伤程度", -35)
  13.                                 end
  14.                         end
  15.                 else
  16.                         DrawStrBoxWaitKey(CC.EVB176, C_WHITE, 30)
  17.                         return 0
  18.                 end
  19.         end
复制代码
其中的AddPersonAttrib可以用于其它用途,比如diy加减血/加减内/加减体/加减毒。因为这个指令只需要改动指令本身的函数,所以很适合新手diy,甚至用来加减封穴流血之类的也行,比如要封穴归0就用WAR.FXDS[x] == nil,其中的x是人物id,也就是上面代码中的tmppid变量

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-6-3 15:58 | 显示全部楼层
本帖最后由 710541994 于 2012-6-3 16:06 编辑

function WarSetGlobal
function War_Manual_Sub
function War_TgrtsMenu
function War_Fight_Sub
在哪里,是什么
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-6-3 22:47 | 显示全部楼层
回复 710541994 的帖子

这些都是游戏里面用到的函数,在龙人版的LDCR.lua文件或者原版的CY_Fight.lua文件里面。用notepad++之类的软件打开后搜索一下就看得到了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-6-7 12:44 | 显示全部楼层
我按照上面的修改了青萧,但还是不显示啊,第一步是在CY_CCTable里改么,第二三步是在CY_Fight里改么

点评

我很久没碰过原版了- -,不过从代码上来看确实如此,是不是War_Manual_Sub里面的设置错了?  发表于 2012-6-27 22:43
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-6-27 17:38 | 显示全部楼层
我想知道靈貂指令怎麼改(100%偷竊)

点评

俺还没试过- -,等我试了再来报告  发表于 2012-6-27 22:42
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-6-28 00:11 | 显示全部楼层
赞。。lz真是太犀利了。。顶个。。顺便问个pid eid id等等有什么区别。。

点评

pid和eid是r文件里的人物编号,是不变的,前者是目前行动中的人物,后者是被攻击的人物。id则是人物在战场上的编号,每场战斗都有可能改变  发表于 2012-6-28 00:24
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-6-28 06:44 | 显示全部楼层
本帖最后由 二宫和也 于 2012-6-28 06:45 编辑

回复 snowmusic 的帖子

好吧我把简单的东西搞成了一段巨复杂的代码。。。其实我真的不好意思放出来
这里只是War_TgrtsMenu里面添加的东西,其他的说明之类的自己按照我上面的教程添加吧。。。

另外我懒得注释了。。估计注释了也没人会仔细看这么巨长的东西= =
  1. if pid == 90 then --钟灵灵貂指令
  2.         if JY.Person[pid]["体力"] >= 10 then
  3.                 War_CalMoveStep(WAR.CurID, 5, 1) --武功移动步数
  4.                 local nx, ny = nil, nil
  5.                 local victim = -1
  6.                 local victimid = -1
  7.                 while true do
  8.                         nx, ny = War_SelectMove() --显示+选择步数
  9.                         if nx == nil then
  10.                                 return 0
  11.                         end
  12.                         if nx ~= nil then
  13.                                 if lib.GetWarMap(nx, ny, 2) < 0 and lib.GetWarMap(nx, ny, 5) < 0 then
  14.                                         QZXS("此处无人,请重新选择")                       
  15.                                 elseif GetWarMap(nx, ny, 2) == nil or GetWarMap(nx, ny, 2) < 0 then
  16.                                         QZXS("此处无人,请重新选择")       
  17.                                 else
  18.                                         victim = GetWarMap(nx, ny, 2)
  19.                                         victimid = WAR.Person[victim]["人物编号"]
  20.                                         if WAR.Person[WAR.CurID]["我方"] == WAR.Person[victim]["我方"] then
  21.                                                 QZXS("不能选择我方人物")       
  22.                                         else
  23.                                                 break;
  24.                                         end
  25.                                 end
  26.                         end
  27.                 end
  28.                 for xx = 0, 63 do
  29.                         for yy = 0, 63 do
  30.                                 SetWarMap(xx, yy, 4, -1)
  31.                         end
  32.                 end
  33.                 SetWarMap(nx, ny, 4, 6)
  34.                 AddPersonAttrib(victimid, "中毒程度", 30)       
  35.                 War_ShowFight(2,0,0,0,nx,ny,37);
  36.                
  37.                 local itemid = -1
  38.                 local itemnumber = 0
  39.                 local hasitem = 0
  40.                
  41.                 for i = 1, 4 do
  42.                         if JY.Person[victimid]["携带物品数量" .. i] > 0 and JY.Person[victimid]["携带物品" .. i] > -1 then
  43.                                 hasitem = 1
  44.                                 break
  45.                         end
  46.                 end
  47.                 if hasitem == 0 then
  48.                         QZXS(JY.Person[victimid]["姓名"].."身上没有物品")       
  49.                 else
  50.                         local itemrandom
  51.                         while itemid == -1 do
  52.                                 itemrandom = math.random(4)
  53.                                 if JY.Person[victimid]["携带物品数量" .. itemrandom] > 0 and
  54.                                         JY.Person[victimid]["携带物品" .. itemrandom] > -1 then                               
  55.                                         itemnumber = math.random(JY.Person[victimid]["携带物品数量" .. itemrandom])
  56.                                         itemid = JY.Person[victimid]["携带物品" .. itemrandom]
  57.                                 end
  58.                         end
  59.                         if itemnumber == JY.Person[victimid]["携带物品数量" .. itemrandom] then
  60.                                 JY.Person[victimid]["携带物品数量" .. itemrandom] = 0
  61.                                 JY.Person[victimid]["携带物品" .. itemrandom] = -1
  62.                         else
  63.                                 JY.Person[victimid]["携带物品数量" .. itemrandom] =
  64.                                         JY.Person[victimid]["携带物品数量" .. itemrandom] - itemnumber
  65.                         end
  66.                         instruct_32(itemid, itemnumber)
  67.                         QZXS("窃取"..JY.Thing[itemid]["名称"]..tostring(itemnumber).."件")       
  68.                 end                       
  69.                 SetWarMap(nx, ny, 4, -1)       
  70.         else
  71.                 DrawStrBoxWaitKey(CC.EVB176, C_WHITE, 30)
  72.                 return 0
  73.         end       
  74. end               
复制代码


点评

其实就是选人,选完后设定战场目标点,然后循环来判定敌人身上有没有物品,有物品的话随机一个数量,然后敌人失去该物品,我方获得该物品  发表于 2014-1-28 11:51
这段求注释  发表于 2014-1-28 11:23
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-6-28 10:20 | 显示全部楼层
对新人有帮助的。~
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-6-28 10:57 | 显示全部楼层
楼主是技术帝啊,等楼主研究好了我们又可以有新剧情玩了

点评

能山寨就是技术啊。微软即使再牛中国人也绝大多数都用免费的  发表于 2012-6-28 13:08
我真的不是技术帝,技术帝就不用搞山寨了= =  发表于 2012-6-28 11:46
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-6-28 20:06 | 显示全部楼层
回复 二宫和也 的帖子

複製下來好好研究一下
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-6-29 03:52 | 显示全部楼层
辛苦了 虽然不太明白 不过感觉很厉害
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-8-19 15:43 | 显示全部楼层
mark                    
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-10-28 17:35 | 显示全部楼层
如果想把白愁飞得三指弹天,从一开始就改到东方未明里应该怎么操作。

点评

是合集贴里得第六讲还是哪个啊?在源码里改还是DIY里改啊, 是把这个SetS(4, 5, 5, 4, 5)都替换成这个 SetS(4, 5, 5, 4, 7)吗?  发表于 2012-10-29 10:48
翻一下教程里的指令函数会看到一堆人物判定,把白愁飞的判定改成东方的判定就好了  发表于 2012-10-29 06:53
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-10-29 10:47 | 显示全部楼层
回复 石霸天 的帖子

是合集贴里得第六讲还是哪个啊?在源码里改还是DIY里改啊, 是把这个SetS(4, 5, 5, 4, 5)都替换成这个  SetS(4, 5, 5, 4, 7)吗?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-11-9 00:09 | 显示全部楼层
二宫大,我想让自己做的特殊主角自带灵貂指令,用下面的判定为什么不行啊?
if ownPD(pid , 90) or T10P(pid) then --钟灵灵貂指令
另ownPD(pid , 90)和DT(id, 90)分别是啥意思啊?看了半天代码看不明白的说。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-12-18 14:00 | 显示全部楼层
设置不显示怎么办 例如我要用猪脚修改出慕容的指令 该怎么办
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-12-24 00:45

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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