OK論壇

 找回密碼
 註冊
查看: 4861|回復: 14

關於- 副本 給予玩家的冷卻時間和進場限制

[複製鏈接]
  • TA的每日心情
    擦汗
    2021-1-6 02:09 AM
  • 簽到天數: 261 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2016-1-2 19:44:54 | 顯示全部樓層 |閱讀模式
    EA
    私服版號: SEAR 1.10.148
    問題內容: 腳本問題
    本帖最後由 ☆雪月★ 於 2016-1-3 02:09 PM 編輯

    前輩 我又來了!


    我不太清楚,古城副本的運作,也不知道是否為官方設置。


    提問:

    如果一個隊伍之中有5個人,但要開始副本前,須由隊長報名後,創建副本才能進場。

    但隊長進場後,隊員還在副本外頭必須在由外頭的玩家點選副本npc才能進入副本地圖中。

    這樣一個一個的點選 む進入古城副本め 進入時有著
    1.           setquest 12317;
    2.                                 setquest 12318;
    3.                                 warp "1@gl_k",150,20;
    複製代碼
    但因為這樣作有個缺點,雖然可以達到所有進入的人都有該副本的CD

    但當隊伍5個人都在副本之中後,

    副本內的玩家還可以使用官方玩家的組隊指令邀請其餘不在副本內的玩家在進入副本

    因為副本沒有進場時間限制,所以我用了一個很笨的方法

    於是我作了個修改


    修改前 
    1.   mes "^ff0000請注意在副本裡認養寵物等隨意處裡怪物,視為不正當行為。^000000";
    2.         next;
    3.         mes "[福金]";
    4.         mes "嗯?你說好像在其他地方有見過我嗎?是你看錯了吧。這次你要怎麼做?";
    5.         next;
    6.         set .@ghins_time, checkquest(12317,PLAYTIME);
    7.         if (.@ghins_time == -1) {

    8.                 set .@party_id,getcharid(1);
    9.                 set .@p_name$,getpartyname(.@party_id);
    10.                 set .@md_name$,"Old Glast Heim";

    11.                 if (!instance_check_party(.@party_id,1)) {
    12.                         //custom
    13.                         mes "[福金]";
    14.                         mes "你的隊伍成員呢?";
    15.                         close;
    16.                 }

    17.                 if (getcharid(0) == getpartyleader(.@party_id,2))
    18.                         set .@menu$, "創時間的縫隙.:進入舊克雷斯特漢姆古城.:取消.";
    19.                 else
    20.                         set .@menu$, ":進入舊克雷斯特漢姆古城.:取消.";
    21.                 switch(select(.@menu$)) {
    22.                 case 1:
    23.                         if (instance_create(.@md_name$) < 0) {
    24.                                 mes "隊伍名稱: "+.@p_name$;
    25.                                 mes "隊伍隊長: "+strcharinfo(0);
    26.                                 mes "^0000ff"+.@md_name$+" ^000000- 創建失敗!";
    27.                                 close;
    28.                         }
    29.                         mes "[福金]";
    30.                         mes "時間的縫隙已經創立了. 請選擇^0066CC進入舊克雷斯特漢姆古城^000000.";
    31.                         close;
    32.                 case 2:
    33.                         switch(instance_enter(.@md_name$)) {
    34.                         case 3:
    35.                                 mes "不明錯誤.";
    36.                                 close;
    37.                         case 2:
    38.                                 mes .@md_name$+" 副本不存在.";
    39.                                 mes "隊長尚未申請記憶迷宮.";
    40.                                 close;
    41.                         case 1:
    42.                                 mes "只有申請 "+.@md_name$+" 副本的隊員才可以進入.";
    43.                                 close;
    44.                         case 0:
    45.                                 /*mapannounce "glast_01",getpartyname(.@party_id)+" 的隊伍成員 "+strcharinfo(0)+" 進入了副本 "+.@md_name$+".",bc_map,"0x00ff99";*/
    46.                                 setquest 12317;
    47.                                 setquest 12318;
    48. warp "1@gl_k",150,20;
    49.                                 close;
    50.                         }
    51.                 case 3:
    52.                         close;
    53.                 }
    54.         } else if (.@ghins_time == 0 || .@ghins_time == 1) {
    55.                 mes "[福金]";
    56.                 mes "噢, 哎呀.";
    57.                 mes "你的身體還持續著時空旅行的副作用. 在這個狀態下, 你無法在進行時空旅行.";
    58.                 next;
    59.                 mes "[福金]";
    60.                 mes "等你休息過後再回來找我吧.";
    61.                 close;
    62.         } else {
    63.                 mes "^0000ff古代的克雷斯特漢姆 時空旅行副作用已消除. 請在與'福金'對話.^000000";
    64.                 erasequest 12317;
    65.                 if (checkquest(12318) > -1) erasequest 12318;
    66.                 if (checkquest(12319) > -1) erasequest 12319;
    67.                 close;
    68.         }
    69. }
    複製代碼
    修改後    請洽

            mes "^ff0000請注意在副本裡認養寵物等隨意處裡怪物,視為不正當行為。^000000";
            next;
            mes "[福金]";
            mes "嗯?你說好像在其他地方有見過我嗎?是你看錯了吧。這次你要怎麼做?";
            next;
            set .@ghins_time, checkquest(12317,PLAYTIME);
            if (.@ghins_time == -1) {
            
                    set .@party_id,getcharid(1);
                    set .@p_name$,getpartyname(.@party_id);
                    set .@md_name$,"Old Glast Heim";

                    if (!instance_check_party(.@party_id,1)) {
                            //custom
                            mes "[福金]";
                            mes "你的隊伍成員呢?";
                            close;
                    }
    if (getcharid(0) != getpartyleader(getcharid(1),2))         goto test;
                      if (getcharid(0) == getpartyleader(.@party_id,2))
                            set .@menu$, "創時間的縫隙.:進入舊克雷斯特漢姆古城.:取消.";
                    else
                            set .@menu$, ":進入舊克雷斯特漢姆古城.:取消.";
                    switch(select(.@menu$)) {
                    case 1:
                            if (instance_create(.@md_name$) < 0) {
                                    mes "隊伍名稱: "+.@p_name$;
                                    mes "隊伍隊長: "+strcharinfo(0);
                                    mes "^0000ff"+.@md_name$+" ^000000- 創建失敗!";
                                    close;
                            }
                            mes "[福金]";
                            mes "時間的縫隙已經創立了. 請選擇^0066CC進入舊克雷斯特漢姆古城^000000.";
                            close;
                    case 2:
                            switch(instance_enter(.@md_name$)) {
                            case 3:
                                    mes "不明錯誤.";
                                    close;
                            case 2:
                                    mes .@md_name$+" 副本不存在.";
                                    mes "隊長尚未申請記憶迷宮.";
                                    close;
                            case 1:
                                    mes "只有申請 "+.@md_name$+" 副本的隊長才可以進入.";
                                    close;
                            case 0:
                                    setquest 12317;
                                    setquest 12318;

    warpparty has_instance("1@gl_k"),150,20,getcharid(1);
                                    close;
                            }
                    case 3:
                            close;
                    }
            } else if (.@ghins_time == 0 || .@ghins_time == 1) {
                    mes "[福金]";
                    mes "噢, 哎呀.";
                    mes "你的身體還持續著時空旅行的副作用. 在這個狀態下, 你無法在進行時空旅行.";
                    next;
                    mes "[福金]";
                    mes "等你休息過後再回來找我吧.";
                    close;
            } else {
                    mes "^0000ff古代的克雷斯特漢姆 時空旅行副作用已消除. 請在與'福金'對話.^000000";
                    erasequest 12317;
                    if (checkquest(12318) > -1) erasequest 12318;
                    if (checkquest(12319) > -1) erasequest 12319;
                    close;
            }
    test:
                            mes "[福金]";
                            mes "抱歉! 只有的隊長才能和我談話";
                            close;
    }

    其他人則會出現 抱歉! 只有的隊長才能和我談話

    當隊長進入副本後 會因為 warpparty has_instance("1@gl_k"),150,20,getcharid(1);

    將全體隊員傳送至副本之中

    此時隊長在額外組ABC玩家加入隊伍  , ABC玩家也不能進入。

    但 原本的

    setquest 12317;
    setquest 12318;

    變成只有隊長才有這個副本的CD 該如何修改成 

    setquest 12317;
    setquest 12318;


    使得進入副本的隊員都有該變數

    抱歉方法有點笨-.-"




    回復

    使用道具 舉報

  • TA的每日心情
    擦汗
    2018-8-18 01:15 PM
  • 簽到天數: 1517 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2016-1-2 20:17:47 | 顯示全部樓層
    本帖最後由 game1993 於 2016-1-2 08:23 PM 編輯

    如果要整隊都有冷卻
    好像要一個一個進去
    或者利用party名單 + attachrid

    組隊無法變更Mapflag
    partylock
    無法改變\創立\加入隊伍
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2016-10-9 02:36 PM
  • 簽到天數: 976 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2016-1-2 20:25:16 | 顯示全部樓層
    本帖最後由 1588 於 2016-1-2 08:32 PM 編輯
    但因為這樣作有個缺點,雖然可以達到所有進入的人都有該副本的CD

    但當隊伍5個人都在副本之中後,

    副本內的玩家還可以使用官方玩家的組隊指令邀請其餘不在副本內的玩家在進入副本

    其實使用場地 mapflag去做限制就好了,不用在修改腳本
    1. partylock                無法加入組隊
    複製代碼
    然後如果怕說隊長又出去組人在報名 在+個判斷就好
    在報名那判斷instance_create("<副本名>"); 如果存在
    就不可進入就好

    範例:
    1. if (instance_create(.@md_name$) > 1 ) {
    2.         mes "隊伍名稱: "+.@p_name$;
    3.         mes "隊伍隊長: "+strcharinfo(0);
    4.         mes "您有隊伍還在挑戰中所以不能進入!";
    5.         close;
    6. }
    複製代碼
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2018-6-30 11:32 PM
  • 簽到天數: 353 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2016-1-2 20:28:46 | 顯示全部樓層
    另一種辦法
    隊長進入(將隊伍ID放入變數)→隊員對話進入(檢查隊伍變數、添加CD)→隊長與副本內人員對話(將變數歸0)關閉外面入場人員,副本開始
    這樣每個人就可以有CD
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2023-12-30 04:16 AM
  • 簽到天數: 1322 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2016-1-2 21:21:31 | 顯示全部樓層
    本帖最後由 sinya 於 2016-1-2 09:33 PM 編輯

    改這樣應該全隊有冷卻時間了
    case 0:
       + .@pid = getcharid(1);
       + script4each "{ setquest 12317;setquest 12318; }",6,.@pid;
        warpparty has_instance("1@gl_k"),150,20,.@pid;
        close;
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2016-9-7 09:54 PM
  • 簽到天數: 158 天

    連續簽到: 1 天

    [LV.7]常住居民III

    發表於 2016-1-2 21:25:47 | 顯示全部樓層
    本帖最後由 claymoreaki 於 2016-1-2 09:27 PM 編輯

                    你的最上面的 case 1: 下面補上這段 set .@instance,instance_create(.@md_name$,.@party_id);


                             instance_set_timeout 7200,60,.@instance;
                            instance_init(.@instance);
                            mes "^0000ff"+.@md_name$+" 副本 申請成功^000000";
                            你把最上面那二段 加在 副本申請成功那邊
                            7200是二小時內完成副本,60是60秒內進場完成 若有隊友在進入 會在刷新一次60s
                            
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-6 02:09 AM
  • 簽到天數: 261 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2016-1-2 22:59:12 | 顯示全部樓層
    本帖最後由 ☆雪月★ 於 2016-1-2 11:01 PM 編輯
    sinya 發表於 2016-1-2 09:21 PM
    改這樣應該全隊有冷卻時間了
    case 0:
       + .@pid = getcharid(1);

    我這版好像不支援這段

                                       + .@pid = getcharid(1);
                                       + script4each "{ setquest 12317;setquest 12318; }",6,.@pid;

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-6 02:09 AM
  • 簽到天數: 261 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2016-1-2 23:05:00 | 顯示全部樓層
    本帖最後由 ☆雪月★ 於 2016-1-2 11:06 PM 編輯
    claymoreaki 發表於 2016-1-2 09:25 PM
    你的最上面的 case 1: 下面補上這段 set .@instance,instance_create(.@md_name$,.@party_id);

                    case 1:
                            set .@instance,instance_create(.@md_name$,.@party_id);
                            if (instance_create(.@md_name$) < 0) {
                                    mes "隊伍名稱: "+.@p_name$;
                                    mes "隊伍隊長: "+strcharinfo(0);
                                    mes "^0000ff"+.@md_name$+" ^000000- 創建失敗!";
                                    close;
                            }
                            
                            instance_set_timeout 7200,10,.@instance;
                            instance_init(.@instance);
                            mes "[福金]";
                            mes "^0000ff"+.@md_name$+" 副本 申請成功^000000";
                            mes "時間的縫隙已經創立了. 請選擇^0066CC進入舊克雷斯特漢姆古城^000000.";
                            close;
                    case 2:
                            switch(instance_enter(.@md_name$)) {
                            case 3:
                                    mes "不明錯誤.";
                                    close;
                            case 2:
                                    mes .@md_name$+" 副本不存在.";
                                    mes "隊長尚未申請記憶迷宮.";
                                    close;
                            case 1:
                                    mes "只有申請 "+.@md_name$+" 副本的隊長才可以進入.";
                                    close;
                            case 0:
                                    setquest 12317;
                                    setquest 12318;
                                    warp "1@gl_k",150,20;
                                    close;
                            }
                    case 3:
                            close;
                    }



    npc給我這段
    1. case 1:
    2.                         set .@instance,instance_create(.@md_name$,.@party_id);
    3.                         if (instance_create(.@md_name$) < 0) {
    4.                                 mes "隊伍名稱: "+.@p_name$;
    5.                                 mes "隊伍隊長: "+strcharinfo(0);
    6.                                 mes "^0000ff"+.@md_name$+" ^000000- 創建失敗!";
    7.                                 close;
    8.                         }
    複製代碼
    遊戲中的記憶迷宮 會出現

    [副本id] 等候中

    等後順序 : 0
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2016-10-9 02:36 PM
  • 簽到天數: 976 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2016-1-2 23:46:08 | 顯示全部樓層
    本帖最後由 1588 於 2016-1-2 11:50 PM 編輯
    ☆雪月★ 發表於 2016-1-2 10:59 PM
    我這版好像不支援這段

    2010/08/29[SeAr_1.5.39]
    - 源碼、DOC:        添加script4each支持參數6(區域初始和終點坐標)。
    - 源碼、DOC:        添加script4eachmob。
    - 源碼、DOC:        添加checkalliance。
    - DB:                修正寶寶最大屬性上限和職業等級加成。
    2009/12/19[SeAr_1.3.28]
    - 源碼、DOC:        添加腳本指令script4each。
    - NPC:                重寫指令giveall腳本。
    - 源碼:                修正atcommand對自定義指令無效。





    ------------------------------------------------------

    然後您可以試試 #3的用法 不一定要採用你原先PO文的解決方法
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-6 02:09 AM
  • 簽到天數: 261 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2016-1-3 00:39:29 | 顯示全部樓層
    本帖最後由 ☆雪月★ 於 2016-1-3 01:08 AM 編輯
    1588 發表於 2016-1-2 11:46 PM
    ------------------------------------------------------

    然後您可以試試 #3的用法 不一定要 ...

    因為黑窗表示

    '+' .@pid = getcharid(1);
    '+' script4each "{ setquest 12317;setquest 12318; }",6,.@pid;

    如果把+ 去掉
    可以執行 沒有跳錯

    但是沒有CD -.-
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-6 02:09 AM
  • 簽到天數: 261 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2016-1-3 01:26:55 | 顯示全部樓層
    本帖最後由 ☆雪月★ 於 2016-1-3 01:28 AM 編輯
    1588 發表於 2016-1-2 08:25 PM
    其實使用場地 mapflag去做限制就好了,不用在修改腳本然後如果怕說隊長又出去組人在報名 在+個判斷就好
    在 ...

    已絞盡腦汁... 還是失敗  #3 作法  這樣沒彈出任何訊息

    覺得我大概把這個方法用錯了...-.-

      if (getcharid(0) == getpartyleader(.@party_id,2))
                            set .@menu$, "創時間的縫隙.:進入舊克雷斯特漢姆古城.:取消.";
                    else
                            set .@menu$, ":進入舊克雷斯特漢姆古城.:取消.";
                    switch(select(.@menu$)) {
                    case 1:
                            if (instance_create(.@md_name$) < 0) {
                                    mes "隊伍名稱: "+.@p_name$;
                                    mes "隊伍隊長: "+strcharinfo(0);
                                    mes "^0000ff"+.@md_name$+" ^000000- 創建失敗!";
                                    close;
            }         else         if (instance_create(.@md_name$) > 1 ) {

                                    mes "隊伍名稱: "+.@p_name$;
            
                                    mes "隊伍隊長: "+strcharinfo(0);
            
                                    mes "您有隊伍還在挑戰中所以不能進入!";
            
                    close;

            }

                            mes "[福金]";
                            mes "時間的縫隙已經創立了. 請選擇^0066CC進入舊克雷斯特漢姆古城^000000.";
                            close;
                    case 2:
                            switch(instance_enter(.@md_name$)) {
                            case 3:
                                    mes "不明錯誤.";
                                    close;
                            case 2:
                                    mes .@md_name$+" 副本不存在.";
                                    mes "隊長尚未申請記憶迷宮.";
                                    close;
                            case 1:
                                    mes "只有申請 "+.@md_name$+" 副本的隊員才可以進入.";
                                    close;
                            case 0:
                                    mapannounce "glast_01",getpartyname(.@party_id)+" 的隊伍成員 "+strcharinfo(0)+" 進入了副本 "+.@md_name$+".",bc_map,"0x00ff99";
                                    setquest 12317;
                                    setquest 12318;
                                    warp "1@gl_k",150,20;
                                    close;
                            }

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2023-12-30 04:16 AM
  • 簽到天數: 1322 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2016-1-3 02:33:27 | 顯示全部樓層
    本帖最後由 sinya 於 2016-1-3 02:35 AM 編輯
    ☆雪月★ 發表於 2016-1-3 12:39 AM
    因為黑窗表示

    '+' .@pid = getcharid(1);

    你不知在那設 cd時間嗎 ?
    db/quest_db.txt 裡面 找 12317

    看一下無限塔的例子
    12058,604800,0,0,0,0,0,0,"無限之塔出入限制"
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2016-10-9 02:36 PM
  • 簽到天數: 976 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2016-1-3 12:37:42 | 顯示全部樓層
    本帖最後由 1588 於 2016-1-3 12:41 PM 編輯
    ☆雪月★ 發表於 2016-1-3 01:26 AM
    已絞盡腦汁... 還是失敗  #3 作法  這樣沒彈出任何訊息

    覺得我大概把這個方法用錯了...-.-

    其實該腳本已經有紀錄冷卻時間,#3那段判斷副本名可以不用加
    直接使用場地mapflag
    1. partylock                無法加入組隊
    複製代碼
    腳本內的冷卻時間是
    1. set .@ghins_time, checkquest(12317,PLAYTIME);
    複製代碼
    if (.@ghins_time == 0 || .@ghins_time == 1) {
            mes "[福金]";
            mes "噢, 哎呀.";
            mes "你的身體還持續著時空旅行的副作用. 在這個狀態下, 你無法在進行時空旅行.";
            next;
            mes "[福金]";
            mes "等你休息過後再回來找我吧.";
            close;





    判斷如果冷卻時間還沒到,則不能進入場地,所以也不用擔心隊伍有人出去組人
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2016-9-7 09:54 PM
  • 簽到天數: 158 天

    連續簽到: 1 天

    [LV.7]常住居民III

    發表於 2016-1-3 12:57:32 | 顯示全部樓層
    ☆雪月★ 發表於 2016-1-2 11:05 PM
    case 1:
                            set .@instance,instance_create(.@md_name$,.@party ...

    私服版號:
    SEAR 1.10.148  

    一開始沒注意看 只有看到腳本 怎麼沒有注入時間

    SORRY 我對這版本 目前沒有研究 沒辦法幫到你 抱歉 = =..
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-6 02:09 AM
  • 簽到天數: 261 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2016-1-3 14:09:00 | 顯示全部樓層
    了解了!

    謝謝各層樓回覆的前輩

    每個樓層都是不同的方法

    謝謝前輩們!!
    回復 支持 反對

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊

    本版積分規則

    Archiver|手機版|小黑屋|OK討論區

    GMT+8, 2024-4-26 06:30 AM , Processed in 0.059245 second(s), 21 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回復 返回頂部 返回列表