论坛首页›扭转乾坤[修改]›榨干单机任务的油水

精华榨干单机任务的油水

楼主:地獄→殺人夜发表于 2008-7-19 11:41回复 29查看 9,362最后回复 2009-6-14
12下一页共 30 楼 / 2 页
发表于 2008-7-19 11:411#
楼主

榨干单机任务的油水
杂志上的那篇文章
首先声明,制作前提是你拥有一定的修改水平,因为本文涉及到了众多修改。如果有什么不会的地方还是自己去找相关教程吧。 ^_^
单机任务的最主要表现形式就是任务。(某人:废话!)但实际上我们可以利用单机任务做一些其他的事情。
准备工作:
首先就是选好地图,之后在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)2、利用一些地图道具,传送点可以做到出人意料的效果。这个就需要个人的想象力了。
3、拍摄不一定一次出来,可以不断修改不断拍摄。
拍出来就后期制作出来吧,尽管不如人来当演员,但真正的属于个人作品。而且可以避免网络、人员等问题。
为了方便学习,在这我放个实例教程。
假定我们在地图伏虎山,有两个NPC,一个名为夜子,一个名为无双,要求夜子走到无双旁边,蹲下,对话,无双攻击夜子。
首先就是打开伏虎山的任务,sn17_.pst,随意填写一下开头的内容。我是这样写得
int Rule = 1;任务模式,盟主
int RoundTime = 99;回合时间99分钟
int PlayerSpawn = 120;玩家出生点120
int PlayerSpawnDir = 340;出生面对角度340度
int PlayerWeapon = 14;主要武器,14
int PlayerWeapon2 = 27;次要武器27,在这说明一下,从出生点到这里可以随意,不过出生点要谨慎,不要影响拍摄。
int PlayerHP = 7500;玩家生命值,其实写成1都没问题……反正都要死
(下面就是设定函数)
int trg0 = 0;


OnStart()
{
AddNPC("npc17_01");
AddNPC("npc17_02");这个是NPC名称,具体要看你做的NPC的文件名字
}
OnUpdate()
{
int player = GetAnyChar("player");
if (player < 0)
{
return 0;
}这个地方随意,只是设定PLAYER代表玩家。不过必须有……


int c;
int c2; 此处设定下面的函数值(数?)可以随便改,数字字母都可以
if (trg0==0)
{
c = GetAnyChar("夜子"); 设定c为夜子
c2 = GetAnyChar("无双"); 设定c2为无双
if (c>=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-19 11:432#
= =
是否给自己加精呢
沙发自己的
人气别人给
加精自己来
龙币自己给表情
别骂我
UID 42128
发表于 2008-7-19 11:453#
表情表情表情表情自己不能给自己龙币
UID 42128
发表于 2008-7-19 12:324#
表情表情我给你加
签名:签名是什么?能吃的么?
我不是无节操,我很萌的!我很有爱的! 我槽,没蓝了!
UID 49034
发表于 2008-7-19 12:475#
下面引用由地獄→殺人夜发表的内容:

= =
是否给自己加精呢
沙发自己的
人气别人给
加精自己来
龙币自己给
别骂我

. . . 经典的传说~~~~
签名:【瑬★ㄦ蝴℡蜨劍】纪念
中宽开过挂,浩方砸过场,国美炸过场,互动上过房!混迹流星五六余载...
UID 41650
发表于 2008-7-19 14:046#
呵呵//写得不错。当然加精啦。。哈。
UID 32916
发表于 2008-7-19 21:307#
好辛苦喔、、顶你下好了表情表情
签名:
外链图片
外链图片 · 若无法显示说明原图床已关闭
UID 46050
发表于 2008-7-20 09:298#
表情
好。经验分享。
UID 12792
发表于 2008-7-30 21:569#
顶啦 顶啦
表情
UID 30632
发表于 2008-7-30 23:3110#
表情不错表情
签名:如果本人的帖子图片无法显示,请右键点击图片,然后选择复制图片地址,把地址全部复制到网页地址栏,回车即可看到!
作品预览图片相册地址:http://home.51.com/yxw5ds (在空间里的相册里!)
UID 47224
发表于 2008-7-31 08:1311#
看的似懂非懂表情表情
UID 37662
发表于 2008-8-9 08:5912#
我顶~~~~~~~~~~~~~~~~~~~
UID 34605
发表于 2008-8-12 09:3713#
我再顶~~~~~~~~~~~~~~~~~~~~~~~~~
UID 34605
发表于 2008-8-16 16:0314#
不是太懂``````
UID 53329
发表于 2008-8-19 18:5015#
表情
嗯``很不错`
表情
经验共享[龙币共享
UID 47813
12下一页共 30 楼 / 2 页

关于这个存档

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

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

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

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

粤ICP备2024318274号-1