nanshanduzhuo 发表于 2012-1-25 16:35:00

求帮助……

我自己编写了一个单机任务,但进任务时总是响起两声错误提示,然后就是主角死亡
由于技术有限,检查修正未果,请各位高手受累帮忙检查一下文件里有什么我没有检查出来的错误……
// 绝情谷
int Rule = 1;
int RoundTime = 15;
int PlayerSpawn = 53;
int PlayerSpawnDir = 0;
int PlayerWeapon = 15;
int PlayerWeapon2 = 0;
int PlayerHP = 2000;
int trg0 = 0;
int trg1 = 0;
int trg2 = 0;
int trg3 = 0;
int trg4 = 0;
int trg5 = 0;
int trg6 = 0;
int trg7 = 0;
int trg8 = 0;
int trg9 = 0;
int timer0 = 0;
int timer1 = 0;
int timer2 = 0;
int timer3 = 0;
int gameover = 0;

OnStart()
{
AddNPC("npc03_01");
AddNPC("npc03_02");
AddNPC("npc03_07");
AddNPC("npc03_08");
}
OnUpdate()
{
      int player = GetAnyChar("player");
if (player < 0)
{
return 0;
}
if (gameover == 2)
{
return 0;
}
      int c;
      int c2;
      int c3;
      int c4;
      int c5;
      int c6;
      int c7;
      int c8;
      int c9;
      int now = GetGameTime();
      if (trg0 == 0)
      {
                c = GetChar("高老大");
                c2 = GetChar("小成子");
                c3 = GetChar("丫鬟甲");
                c4 = GetChar("丫鬟乙");
                if (c>=0 && c2>=0 && c3>=0 &&c4>=0)
                {
                        Perform(c2,"say","你么两个看好门,要是有人
想从这绝情谷一线天进我们老伯的府上,格杀勿论!");
                        Perform(c2,"pause",3);
                        Perform(c3,"say","是!");
                        Perform(c3,"pause",6);
                        Perform(c4,"say","是!");
                        Perform(c4,"pause",5);
                        Perform(c,"say","好。只许成功,不许失
败。");
                        Perform(c,"pause",2);
                        Perform(c,"say","我给你的资料都记熟了?");
                        Perform(c,"faceto",player);
                        Perform(c,"pause",2);
                        Perform(c,"say","因此我们不走正门拜访,却来
这绝情谷一线天硬闯。");
                        Perform(c,"pause",2);
                        Perform(c,"say","而他又是个性情古怪的人,越
是跟他作对的人他越喜欢。");
                        Perform(c,"pause",2);
                        Perform(c,"say","这是个很难对付的人,所以你
必须先潜入他身边,取得他的信任,再伺机取他性命。");
                        Perform(c,"pause",1);
                        Perform(c,"say","这次的任务是刺杀孙玉
伯。");
                        Perform(c,"pause",10);
                        PlayerPerform("block",0);
                        PlayerPerform("pause",4);
                        PlayerPerform("say","……是。");
                        PlayerPerform("pause",18);
                        PlayerPerform("block",1);
                        trg0 = 1;
                        trg1 = 1;
                        timer0 = now + 3;
                }
      }      
      if (trg1 == 1)
      {
                c = GetChar("高老大");
                if (c>=0 && now>timer0)
                {
                        RemoveNPC(c);
                        trg1 = 2;               
               }
      }   
      if (trg0 == 1 && trg1 == 2)
      {
                c2 = GetChar("小成子");
                c3 = GetChar("打手甲");
                c4 = GetChar("打手乙");
                SetTarget(0,"char",player);
                SetTarget(1,"char",c2);
                SetTarget(2,"char",c3);
                SetTarget(3,"char",c4);
                if (c2>=0 && c3>=0 && c4>=0 && GetEnemy(c2)
==player && Distance(0,1)<180)      
                {
                        StopPerform(player);
                        StopPerform(c2);
                        StopPerform(c3);
                        StopPerform(c4);
                        Perform(c2,"kill",player);
                        Perform(c2,"pause",3);
                        Perform(c2,"say","我管你是谁!小的们,给我
打!");
                        Perform(c2,"pause",5);
                        Perform(c2,"say","!!有人!!小子,你是什
么人?");
                        Perform(c2,"faceto",player);               
   
                        Perform(c3,"kill",player);
                        Perform(c3,"pause",1);
                        Perform(c3,"say","是!");
                        Perform(c3,"pause",7);         
                        Perform(c3,"faceto",player);
   
                        Perform(c4,"kill",player);
                        Perform(c4,"say","是!");
                        Perform(c4,"pause",8);
                        Perform(c4,"faceto",player);
                        PlayerPerform("block",0);
                        PlayerPerform("pause",2);
                        PlayerPerform("say","……");
                        PlayerPerform("pause",6);
                        PlayerPerform("say","……孟星魂。");
                        PlayerPerform("pause",3);
                        PlayerPerform("block",1);
                        trg0 = 2;
                        trg1 = 3;
                }
                if (c2>=0 && c3>=0 && c4>=0 && GetEnemy(c3)
==player && Distance(0,2)<180)      
                {
                        StopPerform(player);
                        StopPerform(c2);
                        StopPerform(c3);
                        StopPerform(c4);
                        Perform(c2,"kill",player);
                        Perform(c2,"pause",3);
                        Perform(c2,"say","我管你是谁!小的们,给我
打!");
                        Perform(c2,"pause",5);
                        Perform(c2,"say","!!有人!!小子,你是什
么人?");
                        Perform(c2,"faceto",player);               
                        Perform(c2,"pause",1);
   
                        Perform(c3,"kill",player);
                        Perform(c3,"pause",1);
                        Perform(c3,"say","是!");
                        Perform(c3,"pause",7);         
                        Perform(c3,"faceto",player);
                        Perform(c3,"say","!!老大!!");
   
                        Perform(c4,"kill",player);
                        Perform(c4,"say","是!");
                        Perform(c4,"pause",8);
                        Perform(c4,"faceto",player);
                        Perform(c4,"pause",1);
                        PlayerPerform("block",0);
                        PlayerPerform("pause",2);
                        PlayerPerform("say","……");
                        PlayerPerform("pause",6);
                        PlayerPerform("say","……孟星魂。");
                        PlayerPerform("pause",3);
                        PlayerPerform("block",1);
            
                        trg0 = 2;
                        trg1 = 3;
                }   
                if (c2>=0 && c3>=0 && c4>=0 && GetEnemy(c3)
==player && Distance(0,2)<180)      
                {
                        StopPerform(player);
                        StopPerform(c2);
                        StopPerform(c3);
                        StopPerform(c4);
                        Perform(c2,"kill",player);
                        Perform(c2,"pause",3);
                        Perform(c2,"say","我管你是谁!小的们,给我
打!");
                        Perform(c2,"pause",5);
                        Perform(c2,"say","!!有人!!小子,你是什
么人?");
                        Perform(c2,"faceto",player);               
                        Perform(c2,"pause",1);
   
                        Perform(c3,"kill",player);
                        Perform(c3,"pause",1);
                        Perform(c3,"say","是!");
                        Perform(c3,"pause",7);         
                        Perform(c3,"faceto",player);
                        Perform(c3,"pause",1);
   
                        Perform(c4,"kill",player);
                        Perform(c4,"say","是!");
                        Perform(c4,"pause",8);
                        Perform(c4,"faceto",player);
                        Perform(c4,"say","!!老大!!");
                        PlayerPerform("block",0);
                        PlayerPerform("pause",2);
                        PlayerPerform("say","……");
                        PlayerPerform("pause",6);
                        PlayerPerform("say","……孟星魂。");
                        PlayerPerform("pause",3);
                        PlayerPerform("block",1);
                        trg0 = 2;
                        trg1 = 3;
                }
      }
      if (trg0 == 2)
      {
                AddNPC("npc03_03");
                AddNPC("npc03_04");
                AddNPC("npc03_05");

                c2 = GetChar("小成子");
                c3 = GetChar("打手甲");
                c4 = GetChar("打手乙");
                c5 = GetChar("孙小蝶");
                c6 = GetChar("丫鬟甲");
                c7 = GetChar("丫鬟乙");
                if (c2>=0 && c3>=0 && c4>=0 && c5>=0 && c6>=0 &&
c7>=0 && GetHP(c2)<=0 && GetHP(c3)<=0 GetHP(c4)<=0)
                {
                        Perform(c5,"kill",player);
                        Perform(c5,"say","我饶不了你!");
                        Perform(c5,"pause",5);
                        Perform(c5,"say","什么人?好大的胆子!竟敢
伤我孙府的人!");
                        Perform(c5,"pause",1);
                        Perform(c6,"follow",c5);
                        Perform(c6,"pause",6);
                        Perform(c7,"follow",c5);
                        Perform(c7,"pause",6);
                        PlayerPerform("block",0);
                        PlayerPerform("pause",2);
                        PlayerPerform("say","……");
                        PlayerPerform("pause",3);
                        PlayerPerform("block",1);
      
                        trg0 = 3;               
                }
               
      }
      if (trg0 == 3)
      {
                c5 = GetChar("孙小蝶");
                c6 = GetChar("丫鬟甲");
                c7 = GetChar("丫鬟乙");
                if (c7>=0 && c6>=0 && c5>=0 && GetHP(c5)<=0 &&
GetHP(c6)<=0 && GetHP(c7)<=0)
                {
                        AddNPC("npc03_06");
            
                        c8 = GetChar("孙剑");
                        Perform(c8,"kill",player);
                        Perform(c8,"say","遇见这样的人,我也很兴奋
。请应战。");
                        Perform(c8,"pause",1);
                        Perform(c8,"say","已经很久没有人敢从一线天
硬闯孙府,而且还打伤孙府管家甚至是小姐的人了。");
                        Perform(c8,"pause",2);
                  
                        PlayerPerform("block",0);
                        PlayerPerform("pause",3);
                        PlayerPerform("block",1);
                        trg0 = 4;
                }
      }
      if (trg0 == 4)
      {
                c8 = GetChar("孙剑");
                if (c8>=0 && GetHP(c8)<=0)
                {
                        AddNPC("npc03_09");
                        c9 = GetChar("孙玉伯");
                        
                        Perform(c9,"say","我很欣赏你。随我进来
吧。");
                        Perform(c9,"pause",2);
                        Perform(c9,"say","哈哈!很好!很久没有人敢
这样跟孙府做对了。");
                        Perform(c9,"pause",2);         
                        PlayerPerform("block",1);
                        trg0 = 5;
                        trg1 = 4;
               }
         }            
         if (trg0 == 5 && trg1 == 4)
         {
               c9 = GetChar("孙玉伯");
               
               RemoveNPC(c9);
      
               timer2 = now + 2;
               trg0 = 6;
         }                  
         if (trg0 == 6 && now>timer2)
         {
               gameover = 1;
         }
         if (gameover!=-1 && GetHP(player)<=0)
{
gameover = -1;
timer3 = now + 5;
}
if ((gameover==1 || gameover==-1) && now>timer3)
{
GameOver(gameover);
gameover = 2;
}         
}            

流星夕 发表于 2012-1-25 23:08:00

编写单机任务就要好好检查语句有什么错误,有小小的错误都会导致这种情况发生。
一般错误出现在以下这些情况:
1.语句没有用分号(;)结尾;
2.一段程序结尾漏掉了大挂号(})
3.出现未定义的语句,例如c2,而前面没有下定义int c2。timer2前面也要int timer2=0;
4.语句拼写错误。

写单机任务是困难的。写语句的时候一定要细心,多测试,否则等你写完之后再测试的话发现错误,就检查死你了。

nanshanduzhuo 发表于 2012-1-26 09:59:00

回复 流星夕的帖子

谢谢!进游戏的问题解决了。可是又遇到新问题,应该还是语句的问题。
进入游戏后没有触发对话等事件……
实在是对不起……能不能麻烦受累检查一下几个触发事件的地方有什么错误……

流星夕 发表于 2012-1-26 12:00:00

回复 nanshanduzhuo的帖子

连trg0==0这个触发也没发生?电脑人有没有加入?

nanshanduzhuo 发表于 2012-1-26 15:16:00

回复 流星夕的帖子

有加入,但是主角站立不动一会儿以后就可以动了,期间没看见对话,距离触发也没有

流星夕 发表于 2012-1-27 01:55:00

角色命名出错问题。
1.把 c = GetChar("高老大");改成 c = GetAnyChar("高老大"); 因为GetChar会因为某些原因导致后面的人物名字赋不到c#值,下面所有的人物也一样;
2.if (c>=0 && c2>=0 && c3>=0 &&c4>=0),c4的前面漏掉空格;
3.检查你的NPC:高老大、小成子、丫鬟甲、丫鬟乙是否跟程序里的相符,任何一个不相符都会导致trg0不运行。
页: [1]
查看完整版本: 求帮助……