论坛首页›扭转乾坤[修改]›单机任务怎样制作

单机任务怎样制作

楼主:501158455发表于 2010-4-10 15:27回复 8查看 4,432最后回复 2010-10-7
共 9 楼
发表于 2010-4-10 15:271#
楼主
:youxihou12: :youxihou12: :youxihou12: 哪位大虾告诉我单机任务全部过程啊 :youxihou12:
UID 92635
发表于 2010-4-10 22:152#
我只懂一点:youxihou8: .....................
打开level里的snXX_.pst你会看到类似这样的一段————
int trg0 = 0;
int trg1 = 0;
int trg2 = 0;
int trg3 = 0;
int trg4 = 0;
int timer0 = 0;
int timer1 = 0;
int timer2 = 0;
int timer3 = 0;
int timer4 = 0;

这些必须前后对应,不然就会出错,如果后面出现了
if (trg1000==0)
前面就必须有
int trg1000 = 0;
还会看到这个
int c;
int c2;
int c3;
int c4;
int c5;

打个比方
if (trg0==2 && now>timer1)
{
c = GetChar("屠城");
if (c >= 0)
{
Perform(c, "use", 4);
Perform(c, "use", 7);
Perform(c, "say", "哈哈哈哈!!凭你这一点能耐是杀不了我的!!");
Perform(c, "aggress");
Perform(c, "faceto", player);
ChangeBehavior(c, "dodge", player);

trg0 = 3;
timer2 = now + 180;
}
}
一开始会看到
if (trg0==2 && now>timer1)
如果前面没有
int trg0 = 0;
就会出错;最前面和最后面有trg0==2和 trg0 = 3;可也理解为这段任务开始于trg0==2,结束于trg0 = 3;如果后面出现trg0==3,就是说在执行这段任务时trg0==2才可以执行trg0==3,如果trg0==2没执行,trg0==3也不会执行,他俩有因果关系。当然trg0==2之前还有
trg0==0和trg0==1.

任务条件中的now>timer1是在trg0==1之最下面出现的
timer1 = now + XXX;XXX是数字,按秒计算,如果XXX时10,就是在
执行trg0==1的10秒后执行trg0==2

c = GetChar("屠城");
如果前头没有 int c; 也会出错,制作时尽量弄多点。
UID 93018
发表于 2010-4-10 22:383#
具体讲任务条件
c = GetChar("屠城");
if (c >= 0)
这段意思是屠城血大于0时,执行下面得任务
&& 可以理解为汉语中的“和”如果把 if (c >= 0)
改为 if (c >= 0 && player >= 0),就是当屠城和玩家血都大于0事执行。
还有许多任务条件,如果把条件改成
SetTarget(0, "char", c);
SetTarget(1, "char", player);
if (c>=0 && c2>=0 && Distance(0, 1) < 200)
就是当玩家和屠城距离小于200时执行这段任务..

如果改为 if (c>=0 && GetEnemy(c))
就是当c(屠城)遇到敌人时执行

如果改为 if (c>=0 && GetHP(c)<GetMaxHP(c)/3)
就是c的血小于三分之一时执行

如果改为 if (c>=0 && GetHP(c)<=0)
就是c死后执行,但前面 c = GetChar("屠城");必须改为
c = GetAnyChar("屠城");不然不执行

如果改为
SetTarget(0, "char", c);
SetTarget(1, "char", player);
if (c>=0 && GetHP(c)<GetMaxHP(c)/5 && GetHP(player)<GetMaxHP(player)/6 && Distance(0, 1)<150)
是什么你试着解释一下,一会再告诉你..

如果改为 if (c>=0 && GetHP(c)<GetMaxHP(c))
就是c小于满血时执行
UID 93018
发表于 2010-4-10 22:424#
SetTarget(0, "char", c);
SetTarget(1, "char", player);
if (c>=0 && GetHP(c)<GetMaxHP(c)/5 && GetHP(player)<GetMaxHP(player)/6 && Distance(0, 1)<150)

的意思是当C的血小于六分之一,玩家血小于五分之一,且c和玩家距离小于150时执行
UID 93018
发表于 2010-4-10 22:465#
UID 93018
发表于 2010-4-12 13:566#
比如将 炎留岛 换成 圆满楼 详细点谢谢!:youxihou1:
UID 94740
发表于 2010-5-29 10:317#
啊啊啊啊啊啊啊啊啊
UID 87096
发表于 2010-7-3 19:038#
靠。太复杂:youxihou7:
UID 97760
发表于 2010-10-7 13:269#
...........我无语了。。。
UID 103205
共 9 楼

关于这个存档

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

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

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

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

粤ICP备2024318274号-1