wwee2457 發表於 2013-2-23 00:55:04

道館腳本陷入無限迴圈裡

本帖最後由 wwee2457 於 2013-2-25 11:32 PM 編輯

玩家死掉後 重新進入道館上一場留下來的MVP不會消失 這時候在點道館NPC
就會無限召王出來
以下是我道館的腳本 請神人幫我看哪邊出錯了//--- Script 執行時的特殊設定 , 請各伺服器勿亂做更改 ---

      set $@ModB1NameSize,(getarraysize($@ModB1Name)-1);
      set $@ModB1ItemSize,(getarraysize($@Mod1FReItemAID)-1);
      set $@ModB1AllGSSize,(getarraysize($@GuanShuMod2)-1);
}

//====================================================//

//--- 道館販賣物品的相關設定 , 請各伺服器依情況斟酌 ---

-      shop      道館商#0      891,522:8500,12257:13000,683:5000,682:5000,601:60,602:300,610:4000,611:40,1065:100,645:800,656:1500,657:3000,715:600,716:600,717:600,525:1000

//====================================================//

function      script      Mod_F_Script1      {

      mes "[道館傳送員]";
      mes "您好,我是道館傳送員。";
      mes "請問有需要什麼服務嗎?";
      next;
      select("我要參加挑戰!");
      if ( getcharid(1) == 0 ) {
                mes "[道館傳送員]";
                mes "對不起,您沒有加入任何隊伍!";
                mes "無法參加挑戰賽。";
                close;
      }
      if ( BaseLevel < $@ModJFBaseLv ) {
                mes "[道館傳送員]";
                mes "對不起,您的等級不足!";
                mes "無法參加挑戰賽。";
                mes "等級限制:^FF0000"+$@ModJFBaseLv+"^000000 等";
                close;
      }
      for ( set @MnS,1; @MnS <= 5; set @MnS,@MnS+1 ) {
                if ( getmapusers( @MnS+"@gvs" ) == 0 ) set $@ModBPID[@MnS],0;
      }
      for ( set @MnS,1; @MnS <= 5; set @MnS,@MnS+1 ) {
                if ( getcharid(1) == $@ModBPID[@MnS] ){
                        mes "[道館傳送員]";
                        mes "您是 [^FF0000"+getpartyname(getcharid(1))+"^000000] 的隊員吧!";
                        mes "參加前須付^FF0000"+$@ModBZenyPS+"^000000的參加費唷!";
                        next;
                        if (select("報名參加挑戰!","不小心點到!")==2) {
                              mes "[道館傳送員]";
                              mes "那您以後別在那麼不小心哩!";
                              close;
                        }
                        if ( $@ModBStart[@MnS] == 1 ) {
                              mes "[道館傳送員]";
                              mes "您的隊友已經開始挑戰了,";
                              mes "請稍後或加入其他隊伍另外報名參加!";
                              close;
                        }
                        if ( zeny < $@ModBZenyPS ) {
                              mes "[道館傳送員]";
                              mes "對不起,您沒有足夠的金錢!";
                              close;
                        }
                        if ( getmapusers(@MnS+"@gvs") >= $@ModBPlayer ) {
                              mes "[道館傳送員]";
                              mes "隊伍 [^FF0000"+getpartyname(getcharid(1))+"^000000] 參加的人數已滿,";
                              mes "請稍後或加入其他隊伍另外報名參加!";
                              close;
                        }
                        set zeny,zeny - $@ModBZenyPS;
                        warp @MnS+"@gvs",49,47;
                        end;
                }
      }

//====================================================//

      mes "[道館傳送員]";
      mes "您和您的隊伍要報名參加挑戰賽嗎?";
      mes "參加前須付^FF0000"+$@ModBZenyHG+"^000000的報名費唷!";
      next;
      if (select("報名參加挑戰!","不小心點到!")==2) {
                mes "[道館傳送員]";
                mes "那您以後別在那麼不小心哩!";
                close;
      }
      if ( Zeny < $@ModBZenyHG ) {
                mes "[道館傳送員]";
                mes "對不起,您沒有足夠的金錢!";
                close;
      }
      for ( set @MnS,1; @MnS <= 5; set @MnS,@MnS+1 ) {
                if ( getmapusers( @MnS+"@gvs" ) == 0 ) {
                        enablenpc "道館員#"+@MnS;
                        if ( $@ModBPShop == 1 || $@ModBPShop == 2 ) {
                              enablenpc "道館商#"+@MnS;
                        } else {
                              disablenpc "道館商#"+@MnS;
                        }
                        killmonsterall @MnS+"@gvs";
                        set Zeny,Zeny - $@ModBZenyHG;
                        set $@ModBStart[@MnS],0;
                        set $@ModBPID[@MnS],getcharid(1);
                        set $@ModBCID[@MnS],getcharid(0);
                        set $@GuanShuA[@MnS],1;
                        announce "請 ["+getpartyname($@ModBPID[@MnS])+"] 隊伍的隊員,找 [道館傳送員] !",15;
                        warp @MnS+"@gvs",49,47;
                        end;
                }
      }
      mes "[道館傳送員]";
      mes "所有場地都有隊伍在挑戰中,";
      mes "請您稍後再試,謝謝!!";
      close;
}

//====================================================//

1@gvs,50,50,4      script      道館員#1      758,{ callfunc "ModB_Referee1",1; }
2@gvs,50,50,4      script      道館員#2      758,{ callfunc "ModB_Referee1",2; }
3@gvs,50,50,4      script      道館員#3      758,{ callfunc "ModB_Referee1",3; }
4@gvs,50,50,4      script      道館員#4      758,{ callfunc "ModB_Referee1",4; }
5@gvs,50,50,4      script      道館員#5      758,{ callfunc "ModB_Referee1",5; }

//====================================================//

function      script      ModB_Referee1      {

      if ( getcharid(0) != $@ModBCID[@MnS] ) {
                mes "[道館員]";
                mes "您不是報名參加挑戰賽的人";
                close;
      }
      mes "[道館員]";
      mes "您好,我是道館員。";
      mes "請問有需要為您服務嗎?";
      next;
      switch(select("開始挑戰!","不小心點到!")) {
      case 1:
                set $@ModBStart[@MnS],1;
                set $@ModBQuantity[@MnS],$@GuanShuMod2[$@GuanShuA[@MnS]];
                set $@ModBCheckMod[@MnS],$@ModBQuantity[@MnS];
                disablenpc "道館員#"+@MnS;
                if ( $@ModBPShop == 2 ) {
                              disablenpc "道館商#"+@MnS;
                }
                doevent "ModB_Mod1::OnSummon_ModB";
                close;
                end;
      case 2:
                mes "[道館員]";
                mes "那您以後別在那麼不小心哩!";
                close;
      }
}

//====================================================//

-      script      ModB_Mod1      -1,{

OnSummon_ModB:
      set $@ModBMod[@MnS],rand(1,$@ModB1NameSize);
      set $@ModBQuantity[@MnS],$@ModBQuantity[@MnS]-1;
      monster @MnS+"@gvs",50,50,"--ja--",$@ModB1Name[$@ModBMod[@MnS]],1,"ModB_Mod1::OnKill_ModB";
      announce "道館員 : 魔物 ["+getmonsterinfo($@ModB1Name[$@ModBMod[@MnS]],MOB_NAME)+"] 已放出,挑戰開始!",1;
      if ( $@ModBQuantity[@MnS] != 0 ) {
                goto OnSummon_ModB;
      }
      if ( $@GuanShuA[@MnS] == $@ModB1AllGSSize ) {
               announce "道館員 : 最後一關挑戰開始,請繼續努力!",1;
      }
      end;

OnKill_ModB:
      set $@ModBCheckMod[@MnS],$@ModBCheckMod[@MnS]-1;
      if ( $@ModBCheckMod[@MnS] != 0 ) {
                end;
      }
      announce"道館員 : 恭喜第 ["+$@GuanShuA[@MnS]+"] 關挑戰成功!",17;
      if ( $@GuanShuA[@MnS] == $@ModB1AllGSSize ) {
                announce "道館員 : 恭喜隊伍 ["+getpartyname($@ModBPID[@MnS])+"] ,挑戰道館成功!!",15;
                areawarp @MnS+"@gvs",0,0,300,300,"1@rev",34,120;
                end;
      }
      set @CheckRestsA,1;

CheckRestsA:
      if ( getarraysize($@GuanShuCRests) > @CheckRestsA ){
                if ( $@GuanShuA[@MnS] == $@GuanShuCRests[@CheckRestsA] ) {
                        set $@GuanShuA[@MnS],$@GuanShuA[@MnS] +1;
                         announce "道館員 : 休息時間,請準備好在開始挑戰!",17;
                        enablenpc "道館員#"+@MnS;
                        if ( $@ModBPShop == 2 ) {
                              announce "道館員 : 地圖 12 點鐘方向設有 [道具商人] 唷!",17;
                              enablenpc "道館商#"+@MnS;
                        }
                        end;
                }
                set @CheckRestsA,@CheckRestsA+1;
                goto CheckRestsA;
      }
      set $@GuanShuA[@MnS],$@GuanShuA[@MnS] +1;
      set $@ModBQuantity[@MnS],$@GuanShuMod2[$@GuanShuA[@MnS]];
      set $@ModBCheckMod[@MnS],$@ModBQuantity[@MnS];
      addtimer 5000,"ModB_Mod1::OnSummon_ModB";
      end;
}

grass0916 發表於 2013-2-24 18:53:39

http://okayro.com/forum.php?mod=redirect&goto=findpost&ptid=122848&pid=1331943&fromuid=192389
頁: [1]
查看完整版本: 道館腳本陷入無限迴圈裡