论坛首页›扭转乾坤[修改]›《炽雪城》 新编的剧情,但不成功,情高手指教!

《炽雪城》 新编的剧情,但不成功,情高手指教!

楼主:kakui008发表于 2010-12-28 11:36回复 8查看 4,781最后回复 2018-6-4
共 9 楼
发表于 2010-12-28 11:361#
楼主
我在里边多加了一个npc 文件名为“000.pst” 就是以下剧情里的GetChar(“008”),请在测试的时候随便把一个npc文件重命名为000。 测试失败,进入游戏后。player直接就死了,我不是很懂C语言,那一定是调用函数、语句、变量时出错了。希望大家喜欢修改 以及 喜欢编程的朋友加我QQ:914934959.

// 炽雪城
int Rule = 3;
int RoundTime = 20;
int PlayerSpawn = 15;
int PlayerSpawnDir = 250;
int PlayerWeapon = 16;
int PlayerWeapon2 = 14;
int PlayerHP = 3000;
int trg0 = 0;
int trg1 = 0;
int trg2 = 0;
int trg3 = 0;
int now = 0;
int survivor = -1;
int gameover = 0;
int timer0 = 0;
OnStart()
{
AddNPC("npc04_01");
AddNPC("npc04_06");
AddNPC("npc04_07");
}
OnUpdate()
{
int player = GetAnyChar("player");
if(player < 0)
{
return 0;
}
int c;
int c1;
int c2;
if(trg0 == 0)
{
c = GetChar("禁卫侍官长");
c1 = GetChar("禁卫士兵﹒甲");
c2 = GetChar("禁卫士兵﹒乙");
if(c>=0 && c1>=0 && c2>=0)
{
Perform(c, "say", "你们两个加强巡逻,发现那小子给我活捉过来!事成后大大有赏!");
Perform(c, "say", "要是让他跑了,你们也知道萧老大的脾气...好了去吧!!");

ChangeBehavior(c1, "follow", c);
Perform(c1, "say", "是!");
Perform(c1, "pause", 3);
Perform(c1, "faceto", c);
ChangeBehavior(c2, "follow", c);
Perform(c2, "say", "是!");
Perform(c2, "pause", 3);
Perform(c2, "faceto", c);

PlayerPerform("block", 0);
PlayerPerform("say", "(﹒不多想了,还是赶快..)");
PlayerPerform("pause", 1);
PlayerPerform("say", "(﹒这道关卡﹒戒备森严﹒要是硬闯....!!)");
PlayerPerform("pause", 1);
PlayerPerform("say", "(﹒﹒小蝶被姓萧的家伙抓去了﹒我这次任务正好顺便去搭救她...也好!!)");
PlayerPerform("pause", 2);
PlayerPerform("say", "(﹒﹒我和小蝶的事情绝不能让任何人知道﹒尤其是高老大..)");
PlayerPerform("pause", 2);
PlayerPerform("say", "(﹒信物终于拿到手了﹒)");
PlayerPerform("pause", 5);
PlayerPerform("block", 1);

trg0 = 1;
}
}
if (trg0 == 1)
{
c2 = GetChar("禁卫士兵﹒甲");
c3 = GetChar("禁卫士兵﹒乙");

if (c2>=0 && GetEnemy(c2)==player)
{
ChangeBehavior(c3, "follow", c2);
Perform(c2, "say", "发现了!这小子在这,快来帮忙!");
Perform(c2, "faceto", player);
trg0 = 2;
}
if (c3>=0 && GetEnemy(c3)==player)
{
ChangeBehavior(c2, "follow", c3);
Perform(c3, "say", "发现了!这小子在这,快来帮忙!");
Perform(c3, "faceto", player);
trg0 = 2;
}
}
if (trg0 == 2)
{
c1 = GetAnyChar("禁卫士兵﹒甲");
c2 = GetAnyChar("禁卫士兵﹒乙");
survivor = -1;
if (c1>=0 && GetHP(c1)<=0)
{
c2 = survivor;
}
if (c2>=0 && GetHP(c2)<=0)
{
c1 = survivor;
}

if (GetHP(survivor) > 0)
{
c = GetChar("禁卫侍官长");
if (c >= 0)
{
ChangeBehavior(survivor, "follow", c);
Perform(survivor, "say", "可恶!你给我等着!");
Perform(survivor, "faceto", player);
trg0 = 3;
}
}

}
if (trg0 == 3)
{
c = GetChar("禁卫侍官长");
if (c>=0 && GetHP(survivor)>0)
{
SetTarget(0, "char", c);
SetTarget(1, "char", survivor);
if (Distance(0, 1) < 200)
{
Perform(survivor, "say", "是!老大我这就去!");
Perform(survivor, "pause", 1);
Perform(survivor, "say", "我...!那小子他太厉害了,我们都不是他的对手!");
Perform(survivor, "pause", 2);
Perform(survivor, "say", "报告!发现那位闯关的小子了!");
Perform(survivor, "faceto", c);
Perform(c, "say", "抓住了吗!混账,我叫你们抓住他给我带来!");
Perform(c, "pause", 2);
Perform(c, "say", "饭桶!再去叫人!我倒要看看那小子有多大能耐!哼!");
Perform(c, "pause", 3);

AddNPC("npc04_02");
AddNPC("npc04_03");
AddNPC("npc04_04");
AddNPC("npc04_05");
AddNPC("001");

trg0 = 4;
now = Gametimes() + 5;
}
}
}
if (trg1 == 0 && now > timer0)
{
int p1 = GetChar("008");
int c = GetChar("火铳兵﹒甲");;
int c1 = GetChar("禁卫士兵﹒甲");
int c2 = GetChar("禁卫士兵﹒乙");
int c3 = GetChar("火铳兵﹒乙");
SetTarget(0, "char", p1);
SetTarget(1, "char", player);
if (GetHP(p1)>0 && Distance(0, 1) < 200)
{
c = survivor;
Say(p1,"星!不要多说了,我来帮你闯关!先对付他们!");
Say(player,"啊..你..怎么来了?");
ChangeBehavior(c1, "follow", c);
ChangeBehavior(c2, "follow", c);
ChangeBehavior(c3, "follow", c);
ChangeBehavior(c, "follow", player);
trg1 = 1;
}
}
if (trg1 ==1 && now > timer0)
{
int c = survivor;
if (GetHP(c) <= 0)
{
Say(c,"你..你们要活捉了这小子?");
RemoveNPC(c);
c = GetChar("禁卫侍官长");
Say(c1,"是!");
ChangeBehavior(c3, "follow", c);
}
c = GetChar("禁卫侍官长");
if(c >= 0)
{
SetTarget(0, "char", c3);
SetTarget(1, "char", c);
if (Distance(0, 1) < 150)
{
Perform(c3, "say", "报告!那小子竟然有个高手相助!我们快顶部住了!");
Perform(c3, "faceto", c);
ChangeBehavior(c, "follow", player);
Perform(c, "say", "这个臭小子!!所有人跟我来!看来今天我得亲自出马了!!");
Perform(c, "pause", 3);
Perform(c, "faceto", c3);
c2 = GetChar("金枪侍卫﹒甲");
if (c2 >= 0)
{
ChangeBehavior(c2, "follow", c);
Perform(c2, "faceto", c);
}
c2 = GetChar("金枪侍卫﹒乙");
if (c2 >= 0)
{
ChangeBehavior(c2, "follow", c);
Perform(c2, "faceto", c);
}
c3 = GetChar("金枪侍卫﹒乙");
if (c2 >= 0)
{
ChangeBehavior(c3, "follow", c);
Perform(c3, "faceto", c);
}
trg1 = 2;
}

}
}
if (trg1 == 2)
{
p1 = GetAnyChar("008");
if (p1>=0 && GetHP(p1)<=50)
{
ChangeBehavior(p1, "guard", 5);
Perform(p1, "use", 33);
Perform(p1, "use", 32);
Perform(p1, "say", "..操!...你们这些混蛋!");
Perform(p1, "say", "..我龙门剑客可不是好惹的,你们就等着看怎么死吧!!");
Perform(c, "say", "哼!我可没有听说过!管你是谁!给我戳死他!");

PlayerPerform("say", "(﹒龙门剑客..原来他就是龙门剑客....)");

trg1 = 3;
}
}
if (trg2 == 0)
{
c = GetAnyChar("禁卫侍官长");
if (c>=0 && GetHP(c)<=150)
{
ChangeBehavior(c, "guard", 5);
ChangeBehavior(c1, "guard", 5);
ChangeBehavior(c2, "guard", 5);
Perform(c, "say", "哼!好小子!真有两手,若不是多了龙门剑客,你肯定会死!");
Perform(c, "pause", 3);
Perform(c, "say", "只要我还活着,你小子就别想通过这里!");
Perform(c, "pause", 2);
Perform(c, "say", "佩服,阁下叫什么名字!今天要死也死个明白");

PlayerPerform("say", ".好吧,我叫孟星魂.....");
PlayerPerform("pause", 3);
PlayerPerform("say", ".哼哼.在下在江湖中不过是个无名小卒而已..");
PlayerPerform("pause", 5);

trg2 = 1;
}
}

now = GetGameTime();
if (gameover==0 && GetHP(player)<=0)
{
gameover = -1;
timer0 = now + 2;
}
if ((gameover==1 || gameover==-1) && now>timer0)
{
GameOver(gameover);
gameover = 2;
}
}
UID 92319
发表于 2010-12-28 21:142#
每次一上C课我就心慌:youxihou5:
签名:又做了件蠢事

UID 1743
发表于 2011-1-4 12:153#
{
c2 = GetChar("禁卫士兵﹒甲");
c3 = GetChar("禁卫士兵﹒乙");

if (c2>=0 && GetEnemy(c2)==player)
{
ChangeBehavior(c3, "follow", c2);
Perform(c2, "say", "发现了!这小子在这,快来帮忙!");
Perform(c2, "faceto", player);
trg0 = 2;
}
if (c3>=0 && GetEnemy(c3)==player)
{
ChangeBehavior(c2, "follow", c3);
Perform(c3, "say", "发现了!这小子在这,快来帮忙!");
Perform(c3, "faceto", player);
trg0 = 2;
}
}
这里面没int c3 我只看了个开头,后面有没有没来得及看,加我QQ252186285 咱共同研究
UID 105992
发表于 2012-9-16 14:084#
// 炽雪城
int Rule = 3;
int RoundTime = 20;
int PlayerSpawn = 15;
int PlayerSpawnDir = 250;
int PlayerWeapon = 16;
int PlayerWeapon2 = 14;
int PlayerHP = 3000;
int trg0 = 0;
int trg1 = 0;
int trg2 = 0;
int trg3 = 0;
int now = 0;
int survivor = -1;
int gameover = 0;
int timer0 = 0;
OnStart()
{
AddNPC("npc04_01");
AddNPC("npc04_06");
AddNPC("npc04_07");
}
OnUpdate()
{
int player = GetAnyChar("player");
if(player < 0)
{
return 0;
}
int c;
int c1;
int c2;
int c3;
int p1;
int now = GetGameTime();
if(trg0 == 0)
{
c = GetChar("禁卫侍官长");
c1 = GetChar("禁卫士兵﹒甲");
c2 = GetChar("禁卫士兵﹒乙");
if(c>=0 && c1>=0 && c2>=0)
{
Perform(c, "say", "你们两个加强巡逻,发现那小子给我活捉过来!事成后大大有赏!");
Perform(c, "say", "要是让他跑了,你们也知道萧老大的脾气...好了去吧!!");

ChangeBehavior(c1, "follow", c);
Perform(c1, "say", "是!");
Perform(c1, "pause", 3);
Perform(c1, "faceto", c);
ChangeBehavior(c2, "follow", c);
Perform(c2, "say", "是!");
Perform(c2, "pause", 3);
Perform(c2, "faceto", c);

PlayerPerform("block", 0);
PlayerPerform("say", "(﹒不多想了,还是赶快..)");
PlayerPerform("pause", 1);
PlayerPerform("say", "(﹒这道关卡﹒戒备森严﹒要是硬闯....!!)");
PlayerPerform("pause", 1);
PlayerPerform("say", "(﹒﹒小蝶被姓萧的家伙抓去了﹒我这次任务正好顺便去搭救她...也好!!)");
PlayerPerform("pause", 2);
PlayerPerform("say", "(﹒﹒我和小蝶的事情绝不能让任何人知道﹒尤其是高老大..)");
PlayerPerform("pause", 2);
PlayerPerform("say", "(﹒信物终于拿到手了﹒)");
PlayerPerform("pause", 5);
PlayerPerform("block", 1);

trg0 = 1;
}
}
if (trg0 == 1)
{
c2 = GetChar("禁卫士兵﹒甲");
c3 = GetChar("禁卫士兵﹒乙");

if (c2>=0 && GetEnemy(c2)==player)
{
ChangeBehavior(c3, "follow", c2);
Perform(c2, "say", "发现了!这小子在这,快来帮忙!");
Perform(c2, "faceto", player);
trg0 = 2;
}
if (c3>=0 && GetEnemy(c3)==player)
{
ChangeBehavior(c2, "follow", c3);
Perform(c3, "say", "发现了!这小子在这,快来帮忙!");
Perform(c3, "faceto", player);
trg0 = 2;
}
}
if (trg0 == 2)
{
c1 = GetAnyChar("禁卫士兵﹒甲");
c2 = GetAnyChar("禁卫士兵﹒乙");
survivor = -1;
if (c1>=0 && GetHP(c1)<=0)
{
survivor=c2;
}
if (c2>=0 && GetHP(c2)<=0)
{
survivor=c1;
}
if (GetHP(survivor) > 0)
{
c = GetChar("禁卫侍官长");
if (c >= 0)
{
ChangeBehavior(survivor, "follow", c);
Perform(survivor, "say", "可恶!你给我等着!");
Perform(survivor, "faceto", player);
trg0 = 3;
}
}

}
if (trg0 == 3)
{
c = GetChar("禁卫侍官长");
if (c>=0 && GetHP(survivor)>0)
{
SetTarget(0, "char", c);
SetTarget(1, "char", survivor);
if (Distance(0, 1) < 200)
{
Perform(survivor, "say", "是!老大我这就去!");
Perform(survivor, "pause", 1);
Perform(survivor, "say", "我...!那小子他太厉害了,我们都不是他的对手!");
Perform(survivor, "pause", 2);
Perform(survivor, "say", "报告!发现那位闯关的小子了!");
Perform(survivor, "faceto", c);
Perform(c, "say", "抓住了吗!混账,我叫你们抓住他给我带来!");
Perform(c, "pause", 2);
Perform(c, "say", "饭桶!再去叫人!我倒要看看那小子有多大能耐!哼!");
Perform(c, "pause", 3);

AddNPC("npc04_02");
AddNPC("npc04_03");
AddNPC("npc04_04");
AddNPC("npc04_05");
AddNPC("001");

trg0 = 4;
timer0=now + 5;
}
}
}

if (trg1 == 0 && now > timer0)
{
p1 = GetChar("008");
c = GetChar("火铳兵﹒甲");
c1 = GetChar("禁卫士兵﹒甲");
c2 = GetChar("禁卫士兵﹒乙");
c3 = GetChar("火铳兵﹒乙");
SetTarget(0, "char", p1);
SetTarget(1, "char", player);
if (GetHP(p1)>0 && Distance(0, 1) < 200)
{

Say("星!不要多说了,我来帮你闯关!先对付他们!");
Say("啊..你..怎么来了?");
ChangeBehavior(c1, "follow", c);
ChangeBehavior(c2, "follow", c);
ChangeBehavior(c3, "follow", c);
ChangeBehavior(c, "follow", player);
trg1 = 1;
}
}
if (trg1 ==1 && now > timer0)
{

if (GetHP(c) <= 0)
{
Say("你..你们要活捉了这小子?");
RemoveNPC(c);
c = GetChar("禁卫侍官长");
Say("是!");
ChangeBehavior(c3, "follow", c);
}
c = GetChar("禁卫侍官长");
if(c >= 0)
{
SetTarget(0, "char", c3);
SetTarget(1, "char", c);
if (Distance(0, 1) < 150)
{
Perform(c3, "say", "报告!那小子竟然有个高手相助!我们快顶部住了!");
Perform(c3, "faceto", c);
ChangeBehavior(c, "follow", player);
Perform(c, "say", "这个臭小子!!所有人跟我来!看来今天我得亲自出马了!!");
Perform(c, "pause", 3);
Perform(c, "faceto", c3);
c2 = GetChar("金枪侍卫﹒甲");
if (c2 >= 0)
{
ChangeBehavior(c2, "follow", c);
Perform(c2, "faceto", c);
}
c2 = GetChar("金枪侍卫﹒乙");
if (c2 >= 0)
{
ChangeBehavior(c2, "follow", c);
Perform(c2, "faceto", c);
}
c3 = GetChar("金枪侍卫﹒乙");
if (c2 >= 0)
{
ChangeBehavior(c3, "follow", c);
Perform(c3, "faceto", c);
}
trg1 = 2;
}

}
}
if (trg1 == 2)
{
p1 = GetAnyChar("008");
if (p1>=0 && GetHP(p1)<=50)
{
ChangeBehavior(p1, "guard", 5);
Perform(p1, "use", 33);
Perform(p1, "use", 32);
Perform(p1, "say", "..操!...你们这些混蛋!");
Perform(p1, "say", "..我龙门剑客可不是好惹的,你们就等着看怎么死吧!!");
Perform(c, "say", "哼!我可没有听说过!管你是谁!给我戳死他!");

PlayerPerform("say", "(﹒龙门剑客..原来他就是龙门剑客....)");

trg1 = 3;
}
}
if (trg2 == 0)
{
c = GetAnyChar("禁卫侍官长");
if (c>=0 && GetHP(c)<=150)
{
ChangeBehavior(c, "guard", 5);
ChangeBehavior(c1, "guard", 5);
ChangeBehavior(c2, "guard", 5);
Perform(c, "say", "哼!好小子!真有两手,若不是多了龙门剑客,你肯定会死!");
Perform(c, "pause", 3);
Perform(c, "say", "只要我还活着,你小子就别想通过这里!");
Perform(c, "pause", 2);
Perform(c, "say", "佩服,阁下叫什么名字!今天要死也死个明白");

PlayerPerform("say", ".好吧,我叫孟星魂.....");
PlayerPerform("pause", 3);
PlayerPerform("say", ".哼哼.在下在江湖中不过是个无名小卒而已..");
PlayerPerform("pause", 5);

trg2 = 1;
}
}


if (gameover==0 && GetHP(player)<=0)
{
gameover = -1;
timer0 = now + 2;
}
if ((gameover==1 || gameover==-1) && now>timer0)
{
GameOver(gameover);
gameover = 2;
}


}
经过调试可行,你看看是不是你要的效果
签名:右手阎罗
UID 87841
发表于 2012-9-16 14:305#
下面我来说一下具体错误.
1.首先如楼上,你在剧情中又出现了两个人物,p1和c3.在那里你要进行宣告int.
还有使用延缓发生剧情时,昱泉很聪明的用到了一行命令.当时我在研究这个的时候,连呼聪明.
int now=GetGameTime();
其实简化的就是将一个储存值进行宣告,这里宣告了一个变量now.
而这个变量在一开始就表示时间.
GetGameTime(); 是函数,实时计算现在的时间.
在一节剧情的结尾,有这样一个命令timer0=now+5;
比如现在是30(游戏时间),那么timer0就被计算成了35.
然后由于now实时改变,那么每过一秒,now就变为31>32>33>34>35>36
那么下一节剧情里的条件里设为now>timer0
就是在now=36的时候,从而实现延时触发剧情.
2.所以你要宣告now,并将它实时改变.
3.在使用survivor的时候,实际上是将死亡之外的那个人传递给同一个变量survivor.从而达到后面统一执行命令.所以不是c2=survivor,而是survivor=c2.是将后面那个传递到前面.这点看出你没怎么学过编程.其实我也没学过,摸索的时候要多看看.
4.gametimes();这个东西应该就是你杜撰出来的.什么都不是.如上2.你应该改为timer0=now+5;
5.你再if下是不能int c=getchar.为什么在这里宣告?int是多余的东西.
刚才帮人修改了一个也是和你类似的结构.你们都是从哪里复制粘贴的?
6.我不知道c=survivor是否可行,但是survivor已经结束,为何要让他再给c?你下面的就perform(survivor,"follow",player)就好了嘛.但是这个不是错误!
7.say("")函数不是一个指定谁说话的函数,你看昱泉文件里都用来表示孟的心理活动.如果指定用perform(c,"say","%%%")这个.所以要是改的话只要say("%%%")就好了.
8.trg1==0里的火铳兵甲后面你用了两个;.自己看这个是最要不得的手动错误.我曾经也是沉浸在纠错的浪潮里.实在不行一段一段往上贴,然后运行.在你没有火眼金睛和编程基础的时候.
签名:右手阎罗
UID 87841
发表于 2012-9-16 14:366#
自己玩了一下.和另外一个人的一样无法结束游戏.
签名:右手阎罗
UID 87841
发表于 2014-1-5 20:558#
回复 6楼束缚·舞的帖子

非常谢谢你,我长时间没有上来看了,我自己学会了点。能不能说下你的QQ 方便交流和学习啊。
UID 92319
发表于 2018-5-13 10:27118#
楼主的QQ号和我的很相似
UID 624064
发表于 2018-6-4 18:12119#
1123111111111111111111111
UID 717520
共 9 楼

关于这个存档

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

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

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

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

粤ICP备2024318274号-1