论坛首页›编辑部›[投稿]

[投稿]

楼主:地獄→殺人夜发表于 2008-7-13 21:51回复 4查看 1,217最后回复 2008-7-14
共 5 楼
发表于 2008-7-13 21:511#
楼主
榨干单机任务的油水
首先声明,制作前提是你拥有一定的修改水平,因为本文涉及到了众多修改。如果有什么不会的地方还是自己去找相关教程吧。 ^_^
单机任务的最主要表现形式就是任务。(某人:废话!)但实际上我们可以利用单机任务做一些其他的事情。
准备工作:
首先就是选好地图,之后在Level文件夹下用记事本打开sn**_.pst,把int Rule改成1,不要设定死亡后失败。之后我们在一个函数中设定PLAYER使用道具35(PlayerPerform("use", 35);),死了吧?等等,发现了什么?对,我们变成自由视角了,利用这个,我们可以做很多。
方案1:做电影
不得不说,做电影是涉及修改最多的地方。需要一点一点介绍。
A.让NPC走路
毕竟是单机任务,我们的主角配角全部都是NPC,因此只能通过函数来让NPC实现走路。
方法1:利用巡逻,ChangeBehavior(int id, "patrol", int waypoint1, int waypoint2..); 路点可以用editai查看(路点设定看注释)
方法2:利用ChangeBehavior(int id, "attacktarget", int idx, int a); (NPC不顾一切的跑到IDX的目标位置,若a为不存在则为跑到目标位置,a值大於0则到目标位置实施攻击. )这个的好处是不用设定太多的路点
方法3:利用follow,ChangeBehavior(int id, "follow", string name/ int id);
(注释:上述函数中,int id代表Get(Any)Char的函数值,例如c1=GetChar("夜子");,则让夜子走路就把int id改成c1。int waypoint1是路点数字。int idx和int id一样,只是为了区别开。string name是NPC名字,要用" "括住,不过建议还是用GetChar的好。)
B:让NPC攻击
攻击来说有些麻烦,我一点一点讲。
1、NPC PK的话就直接用ChangeBehavior(int id, "follow", string name/ int id);尽管可能有些不尽人意。
2、指定动作,这个比较复杂。我的方法是改POSE,把某武器的POSE全部都改成一个,然后利用Perform(int id, "attack");来做动作。不过也有别的方法,就是用AI同步,这样就增加了假死动作,暴气动作,挑衅三个,因为如果用同步的攻击就会转视角,所以AI同步并不能用同步攻击。
3、利用暗器击中别人,这个就十分十分十分十分的麻烦了……我为了避免就选用的飞轮,因为NPC指定他ATTACK时他很没有方向感……
基本上攻击也就这些了。
C:其他的一些杂七杂八的东西
1、利用Distance(SetTarget(0, "char", int id/player);下一个就是把0改成1,依此类推,然后在if条件内加入Distance(0, 1)=0) 当c>=0(代表着C在游戏内)执行
{
ChangeBehavior(c, "fllow", c2); 让夜子跟随无双

ChangeBehavior(c2, "idle"); 让无双站着不动

PlayerPerform("use", 35); 让玩家死亡
trg0 = 1; 让trg0=1
}
}

if (trg0==1) 当trg0=1时执行
{
c = GetAnyChar("夜子"); 设定c为夜子
c2 = GetAnyChar("无双"); 设定c2为无双
SetTarget(0, "char", c); 设定0为夜子
SetTarget(1, "char", c2); 设定1为无双
if (c>=0 && Distance(0, 1)<150) 当c>=0(代表着C在游戏内)并且0和1的横坐标差值的绝对值小于150时执行
{
Perform(c2, "crouch", 1); 让夜子蹲下

Perform(c2, "attack"); 无双攻击(此处可以改POSE,注意,NPC执行ATTACK时出的招式是随机的)
Perform(c2, "pause", 20); 停顿20秒,主要是为了空出对话时间
Perform(c2, "faceto", c); 无双转向夜子
trg0 = 2; 让trg0=2
}
}
}
这样一小段镜头就出来了。
方案2:做万剑决!
这个不得不说,的确很方便,万剑决本事就利用了NPC,只是他的拍摄方法上有些让人难以恭维……当然也有他的好处。不过还是需要他人来协助,其实我们自己就可以做。
首先就是透明POSE问题,其实简单的要命,把该POSE的所有skc文件删除即可(可能有未知的一些问题)。
之后就是设定好路点和POSE,特效方面需要你的想象力,利用LINK等等。
之后就是重要的部分。
1、定向,需要在你定向的方向上放一个透明的NPC,然后让需要转向那个方向的NPCPerform(int id, "faceto", int idx);,即可。
2、攻击,方法和上面的差不多,就是ATTACK或者同步。ATTACK就要把所有POSE改成一个,然后利用LINK连接。同步可以把假死、挑衅、暴气分别改了,利用同步按这些键即可。(如果需要同步可以找我要。)
3、其他的就是需要想象力了,利用一些其他的,地图、武器,其实这些东西和想象力分不开。
之后也可以后期制作。
说实话讲来讲去就这些东西,利用函数,利用同步,修改POSE等等。
具体还是去实践吧。如果不会单机任务设定可以看http://www.yfzz.net/bbs/a/a.asp?B=2200&ID=280216这张帖子。
注释:路点:
路点:
路点其实不光用来当作AI行走的路线,还是任务的出生点,所以做任务时的路点也十分重要。
首先选择你的地图(注意,选择的地图必须在LEVEL下有wp文件,没有可以自己建一个),然后加入一个AI(注意,不能是adddummy加入的,必须是\AI加入的),然后打命令\editai开启路点编辑。按键如下:
按1键:制造一个最小范围的路点
按2键:制造一个中等范围的路点
按3键:制造一个大范围的路点
按4键:制造一个超大范围的路点(路点的范围就是电脑的行动范围)
按m键:打开路点显示或关闭路点显示
按空格键:选择你要编辑的路点(把方框指到你要编辑的路点,按空格键就变成红色的,表示你可以编辑这个路点了)
按z键:要在路点变红色才能用,可以对路点位置改变,这个键只要按一下就可以用ASDW键控制左右前后.F键控制路点往上升,v键路点往下降。(提示:高级版本不好用哦)在按一次这键就关闭位置改变功能.
按删除(←)键:就是先让路点变成红色的了在按这个键就能把路点删除!
按p键:可以把整个地图的结构显示出来(在按一下就是关闭)。
保存路点命令是Shift+S键
Distence:
还是举例子好些。
if (trg0 == 1)
{
c = GetChar("夜子");
SetTarget(0, "char", c);
SetTarget(1, "char", player);
if (c>=0 && Distance(0, 1)<200)
{
这部分就略去……
}
}
这个函数的意思就是指定夜子为c,再指定c为0(也就是夜子为0),指定player为1,当1和0的横坐标差值的绝对值小于200,c同时大于0时发生该函数。
你也可以发挥一下,再加一个GetChar指定一个NPC,当两个NPC的距离小于一个数值时发生函数。具体还是实践……实践出真知……
UID 42128
发表于 2008-7-13 23:592#
先占了,明天看,现在太困.

大概看了眼,感觉这个教学内容挺有质量,应该是能被录用.
签名:http://hi.baidu.com/依然十二月萧邦

我曾经也是个版主,直到我膝盖中了一箭……
UID 17387
发表于 2008-7-14 09:353#
质量没有问题……
就是难度上可能有点高
UID 42128
发表于 2008-7-14 12:194#
哎。。。快点转进编辑部啊。。我要看看。。。
UID 32916
发表于 2008-7-14 17:355#
编辑下。。我看不到哦
UID 32916
共 5 楼

关于这个存档

本页内容为历史存档,已关闭一切写操作。附件仅展示文件信息,不提供下载。内容如涉侵权或不当,请联系 server@yfzz.net 下架。

可以做的事:浏览版块、阅读主题与楼层、查看图片附件、按标题或作者搜索、打开用户资料页。
不能做的事:注册、登录、发帖、回复、引用、评分、私信、收藏;压缩包等附件不提供下载——存档版只展示文件信息。

数据截至 2021-02-05;附件约有 30–40% 的原文件未能保存,页面上以「已丢失」标注。2009 年前的不少图片是外链图床,原图床已关闭,页面会显示失效占位。
隐龙轩QQ群:点此查看

26,823 主题 / 280,734 帖 / 17,145 位发过言的会员 · 数据最后更新 2021-02-05

粤ICP备2024318274号-1