铁血丹心

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

[不负责任的教程]借隔壁的东风,研究一下以npc为主角进行游戏的理论

[复制链接]
发表于 2012-9-2 02:02 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 二宫和也 于 2012-9-2 08:14 编辑

返回教程索引

如题,借金秋版的人气炒一下DIY区的人气,炒作就是这样子来的

改过的函数可以参照下面这个补丁,我更新过了:

[DIY]任意人物变主角补丁,以四神行走江湖不再是梦想
http://www.txdx.net/forum.php?mod=viewthread&tid=555441

1. 更换人物
这个其实是最没有技术含量的,我曾经就被某位巨巨鄙视过...-_-...基本上,就是做一个事件,然后把队伍位置1的人物设成任意npc,比如说张三丰(编号5)
  1. JY.Base["队伍1"] = 5
复制代码
事件随你编,可以像隔壁那样做成菜单,也可以做成事件,比如你可以做成像新绝代双骄2里面的小鱼儿/花无缺切换进行不同的剧情,如果你真的蛋疼的话...

然后记得做一个全局变量来保存你现在使用的npc的编号,我是用SetS来实现的,比如你用的npc是张三丰,就设成
  1. SetS(106, 0, 0, 1, 5)  --5为张三丰编号
复制代码
这个全局变量会在以后的对话和战斗中被调用,另外如果你想改成随时切换npc/主角模式的话,需要再增加一个全局变量来判定目前的模式,我这里就忽略了,具体的可以看上面补丁的代码

2. 人物对话头像
主角对话的时候默认是自己的头像,修改成npc的头像需要修改两个函数,say()和TalkEx(),在say()内找到如下代码
  1.   if pid == 0 then
  2.     if GetS(4, 5, 5, 5) < 8 then
  3.       headid = 280 + GetS(4, 5, 5, 5)
  4.     else
  5.             headid = 287 + GetS(4, 5, 5, 4)
  6.           end
  7.   end
复制代码
这里就是说,如果对话的人物是主角,就按照特殊人物或者普通人物的判定来调用相应的头像。所以我们调用一下前面的全局变量,改成以下代码
  1.   if pid == 0 then
  2.         headid = GetS(106, 0, 0, 1)
  3.   end
复制代码
这里就是说,如果主角对话了,头像会被改成那个全局变量的编号,也就是张三丰的编号5

TalkEX()也是类似的改法,你看看就知道了

3. npc参战
现在你的npc可以参加群殴了,但是进入主角单挑战的话你的npc还是不会上场,这里需要改一下WarSelectTeam()这个函数,在里面加入以下代码:
  1. for i = 1, 6 do
  2.         if WAR.Data["自动选择参战人" .. i] == 0 then
  3.                 WAR.Data["自动选择参战人" .. i] = GetS(106, 0, 0, 1)
  4.                 break
  5.         end
  6. end
复制代码
这里就是说,扫描战斗数据中的自动参战者,如果有主角自动参战的话,改成你的npc参战

4. 战斗中自己打自己怎么办?
如果什么都不改的话,你用张三丰去挑战张三丰的话你会发现敌我血内都是共用的。为了避免这个情况我们需要制造一个临时人物来作为你的敌人。在WarSelectEnemy()里面,往下看,你会看到for i = 1, 20 do这个循环来扫描1-20个敌人,我们在下面加入以下代码
  1. if WAR.Data["敌人" .. i] == GetS(103, 0, 0, 1) then                                
  2.         local fid = 583;                                
  3.         for i=1, #PSX do
  4.                 JY.Person[fid][PSX[i]] = JY.Person[GetS(103, 0, 0, 1)][PSX[i]]
  5.         end        
  6.         JY.Person[fid]["姓名"] = JY.Person[pp]["姓名"]        
  7.         WAR.Data["敌人" .. i] = 583
  8. end
复制代码
也就是说,如果敌人的编号和你现在用的npc编号一样的话,我们利用一个游戏中废弃的人物(编号583),把他的数值改成和你现在的npc一样,然后把敌人设置成那个影武者。这里的PSX是一个预设的表,里面的值为所有的人物数据,你搜索一下就知道我在说啥了。

这样做有一个后遗症,就是临时人物没有实际上npc所应该拥有的天赋特效...要修正的话需要一句一句代码改...不过玩单通版或者山寨版的童鞋可以研究一下DT()这个函数,我相信你知道怎么利用它的... 好吧还是不知道的话去看山寨版的9.2补丁...

在这里赞一下爱吻哥的创意和倒贴的辛勤劳动

5. npc待遇和npc可控
差点忘了加这个。因为大部分npc比主角弱,所以有时候需要给npc待遇,搜索函数inteam()
  1. function inteam(pid)
  2.   return instruct_16(pid)
  3. end
复制代码
这个就是判定是否是npc的函数,具体意思就是,如果人物在队伍里则不算npc。instruct_16是一个预设的函数,如果pid在队伍里则返回true,否则返回false.

所以我们改成
  1. function inteam(pid)
  2.         if pid == GetS(103, 0, 0, 1) then
  3.                 return false
  4.         end
  5.   return instruct_16(pid)
  6. end
复制代码
这样子我们的npc主角就会被认为是npc

现在的问题就是,游戏里npc不可控,我们在WarMain()函数里搜索以下代码
  1. if inteam(pid) and WAR.Person[p]["我方"] then
复制代码
把它改成
  1. if WAR.Person[p]["我方"] then
复制代码
这样子游戏里所有的我方npc都可以控制了。如果不想所有npc可以控制的话,可以加一个人物编号判定。


6. 剧情bug?
比如乔峰揭发乔峰,胡斐杀胡斐...实话说这个我也不知道咋解决,工作量太大了...

7. 贴图
用npc走路的时候还是主角的贴图,因为我相信不会有人蛋疼到每个npc都画一套行走图....将就的办法就是分成男女各一套,男的就不变了,女的那一套用upedit加入到mmap.grp里面,然后修改CC.MyStartPic为新增的贴图号

如此,完毕

返回教程索引
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-9-2 05:44 | 显示全部楼层
这才是废寝忘食啊,晚上都不睡觉的吗?

点评

时差党...外面阳光正盛  发表于 2012-9-2 06:24
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-9-2 06:41 | 显示全部楼层
顶二宫巨巨。。
话说我还是喜欢你原来那个头像。。。

点评

啊,你也是个达也粉么...话说为毛你还在........  发表于 2012-9-2 08:02
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-9-2 06:57 | 显示全部楼层
原来我们脚心相对啊,哈哈

点评

是的,您就在我的脚底下,羞 = =  发表于 2012-9-2 08:01
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-9-2 07:33 | 显示全部楼层
你要勤快点,走的会比金秋版远的。当初的换人补丁,加上勋章加奇遇加门派。统合一下剧情和平衡性。。。

点评

我要是能勤快点,走的远的何止在补丁上面...-_-...奈何天性如此...有感而发一下  发表于 2012-9-2 08:00
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-9-2 07:56 | 显示全部楼层
我觉得以ALL NPC为猪脚是费力不讨好的事,工作量大不说,也做不到每个人的天赋效果或大招之类的,纯属尝尝新鲜而已,其实用几个人气高的NPC做就OK了,比如太阁5 真正用到的就那么几个人~

点评

开学意味着另一个假期的到来~~~  发表于 2012-9-2 08:20
请不要诱惑我,下个星期二开学的我不想再栽进另一个mod里面了= =  发表于 2012-9-2 08:16
口味不一样,我还埋怨那边不让玩蛇雕蜘蛛呢。蛇雕英雄传多霸气咩!  发表于 2012-9-2 08:12
那个才叫真正的自由度~  发表于 2012-9-2 08:09
那天去游侠的太阁区转转,发现事件源码有很多更新了,可以自己改了。  发表于 2012-9-2 08:09
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-9-2 22:53 | 显示全部楼层
玩惯了山寨玩起金秋连休闲难度都是又磨又卡,一点劲都没有。还是DIY好,希望二宫大能继续坚持更新呀。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-9-3 17:12 | 显示全部楼层
我也比较喜欢山寨版,二宫大神其实对平衡性的把握还是可以的,照顾了休闲玩家,玩游戏就是图个轻松爽快嘛,至于那种自虐狂,俺们不沾边也。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-9-3 20:02 | 显示全部楼层
非常赞啊,支持教学贴,二宫大大辛苦了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-4-17 22:43 | 显示全部楼层
本帖最后由 lanhf 于 2013-4-17 22:44 编辑

必须顶呀,我是新手,看到楼主的这个系列教程如获至宝,我会沿着楼主的指引在DIY世界大展拳脚!
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-12-23 16:57

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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