OK論壇

 找回密碼
 註冊
查看: 2785|回復: 9

有關卡普拉新增收費傳送

[複製鏈接]
  • TA的每日心情
    無聊
    2023-11-3 10:41 AM
  • 簽到天數: 690 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2017-12-27 09:40:05 | 顯示全部樓層 |閱讀模式
    EA
    私服版號: rAthenaCN1.7.2
    問題內容: 腳本問題
    本帖最後由 ex00089 於 2018-1-4 09:20 PM 編輯

    想請問
    我想在卡普拉選單裡面新增一個洞穴傳送
    想把城市與洞穴分開收費與傳送
    我分開後 選單 傳送服務 顯示傳送地區與金額都是正常 也能傳送
    但是 選擇 洞穴服務 顯示傳送地區是 傳送服務 的城是傳送  卻不是洞穴傳送的選單
    傳送後只會扣錢 也不會傳送

    內件卡普拉的菜單 我新增了一個(由於腳本內容長 有刪減一些掉)
    1. function        script        F_Kafra        {
    2.         callfunc "F_ClearGarbage"; // Clear outdated, unused variables
    3.         .@welcome = getarg(0);
    4.         .@menu_num = getarg(1);

    5.         switch(.@welcome){
    6.                 default:
    7.                 case 0:
    8.                         mes "[卡普拉 職員]";
    9.                         mes "歡迎光臨!";
    10.                         mes "卡普拉公司永遠為您提供最優質的服務!";
    11.                         mes "您需要什麼服務呢?";
    12.                         break;
    13.                 case 1:
    14.                         mes "[卡普拉 職員]";
    15.                         mes "^666666歡迎...來到...";
    16.                         mes "卡普拉公司...";
    17.                         mes "我們...到死...都會繼續為您服務...^000000";
    18.                         break;
    19.                 case 2:
    20.                         set @GID,getcharid(2);
    21.                         mes "[卡普拉 職員]";
    22.                          mes "歡迎光臨. ^ff0000" + GetGuildName(@GID) + "^000000 成員們.";
    23.                         mes "卡普拉公司永遠在各位身邊為您服務!";
    24.                         break;
    25.                 case 3:
    26.                         mes "[卡普拉 職員]";
    27.                         mes "您看起來好像來自一個遙遠的地方, 是來研究我們的文化, 還是來觀光呢?";
    28.                         mes "若兩者皆是, 為何不稍稍停留片刻?";
    29.                         mes "在這野花香味撲鼻的國度, 相聚是緣.";
    30.                         break;               
    31.                 case 4:
    32.                         mes "[卡普拉 職員]";
    33.                         mes "與許多的卡普拉服務點一樣,";
    34.                         mes "我們會讓你感覺從未離開家鄉.";
    35.                         break;               
    36.                 case 5:
    37.                         break;
    38.         }
    39.         while (1) {
    40.                 next;
    41.                 deletearray @K_Menu0$[0],getarraysize(@K_Menu0$);
    42.                 if (.@welcome == 2) {
    43.                         // Guild Kafra Menu override (free Teleport, free Storage, Free Cart)
    44.                         setarray @K_Menu0$[0],"使用倉庫","租用手推車","傳送服務","結束對話";
    45. //                        setarray @K_Menu0$[0],"使用倉庫","租用手推車","結束對話";
    46.                 } else {
    47.                         switch(.@menu_num){
    48.                                 case 1:        setarray @K_Menu0$[0],"儲存服務","使用倉庫","結束對話"; break;
    49.                                 default: setarray @K_Menu0$[0],"儲存服務","使用倉庫","傳送服務","洞穴傳送","租用手推車","查詢其他信息","結束對話"; break;
    50.                         }

    51.                 }
    52.                 set .@menu$,"";
    53.                 for (set .@i, 0; .@i < getarraysize(@K_Menu0$); set .@i, .@i + 1)
    54.                         set .@menu$, .@menu$ + @K_Menu0$[.@i] + ":";        
    55.                 set .@j, select (.@menu$) - 1;
    56.                 if (@K_Menu0$[.@j] == "儲存服務") {
    57.                         return;
    58.                 } else if (@K_Menu0$[.@j] == "使用倉庫") {
    59.                         if(.@welcome == 2)
    60.                                 callfunc "F_KafStor",2,0,0;
    61.                         else
    62.                                 callfunc "F_KafStor",0,getarg(3),.@welcome;
    63.                 } else if (@K_Menu0$[.@j] == "傳送服務") {
    64.                         if(.@menu_num != 4) callfunc "F_KafTele",.@welcome;
    65.                         else {
    66.                                 mes "[卡普拉 職員]";
    67.                                 mes "由於卡普拉公司與秀髮茲發德共和國";
    68.                                 mes "簽訂了 ^FF0000《限制傳送服務協議》^000000";
    69.                                 mes "所以目前無法為您提供傳送服務!";
    70.                                 next;
    71.                                 mes "[卡普拉 職員]";
    72.                                 mes "如果您想移動到其他區域, 我們推薦您使用飛空艇服務!";
    73.                                 mes "感謝您的理解與支持.";
    74.                         }
    75.                 } else if (@K_Menu0$[.@j] == "洞穴傳送") {
    76.                         if(.@menu_num != 4) callfunc "Fild",.@welcome;
    77.                 } else if (@K_Menu0$[.@j] == "租用手推車") {
    78.                         callfunc "F_KafCart",.@welcome,getarg(4);
    79.                 } else if (@K_Menu0$[.@j] == "查詢其他信息") {
    80.                         callfunc "F_KafInfo",getarg(2);
    81.                 } else if (@K_Menu0$[.@j] == "結束對話"){
    82.                         callfunc "F_KafEnd",.@welcome,0;
    83.                         end;
    84.                 } else if (@K_Menu0$[.@j] == "公會倉庫") {
    85.                         callfunc "F_KafStor",1,0;
    86.                 }
    87.         }
    88. }
    複製代碼
    --------------------------------------------------------------------------------------------------------------
    城市傳送 座標地點
    1. function        script        F_KafTele        {
    2.         mes "[卡普拉 職員]";
    3.         mes "請告訴我您的目的地";
    4.         next;
    5.         set .@menu$, "";
    6.         for (set .@i, 0; .@i <= 6; set .@i, .@i + 1)
    7.                 set .@menu$, .@menu$ + @wrpC$[.@i] + ":";
    8.         set .@j, select (.@menu$) - 1;
    9.         if (@wrpC$[.@j] == "結束對話")
    10.         {
    11.                 mes "[卡普拉 職員]";
    12.                 mes "如果想用傳送服務, 歡迎您隨時來找我!";
    13.                 close2;
    14.                 cutin "", 255;
    15.                 end;
    16.         }
    17.         if(countitem(7060) > 0 && getarg(0) != 2) delitem 7060,1;
    18.         else {
    19.                 if (Zeny<@wrpP[.@j]){
    20.                         mes "[卡普拉 職員]";
    21.                         mes "您沒有足夠的金幣來使用傳送服務,";
    22.                         mes "傳送到 "+@wrpD$[.@j]+" 需要 "+@wrpP[.@j]+" Zeny.";
    23.                         close2;
    24.                         cutin "", 255;
    25.                         end;
    26.                 }
    27.                 set Zeny, Zeny - @wrpP[.@j];
    28.                 set RESRVPTS, RESRVPTS + (@wrpP[.@j]/16);
    29.         }
    30.         cutin "", 255;
    31.         if (@wrpD$[.@j] == "運河之都 艾爾帕蘭") warp "aldebaran",168,112;
    32.         else if (@wrpD$[.@j] == "魔法之都 吉芬") warp "geffen", 120, 39;
    33.         end;
    34. }
    複製代碼
    ------------------------------------------------------------------------------------------------------------------------
    城市傳送 收費
    1. function        script        F_KafSet        {
    2.         cleararray @wrpC$[0],"",getarraysize(@wrpC$);
    3.         cleararray @wrpD$[0],"",getarraysize(@wrpD$);
    4.         cleararray @wrpP$[0],"",getarraysize(@wrpP$);
    5.         cleararray @viewpX[0],"",getarraysize(@viewpX);
    6.         cleararray @viewpY[0],"",getarraysize(@viewpY);
    7.         if (strnpcinfo(4) == "prontera") {
    8.                 setarray @wrpD$[0], "運河之都 艾爾帕蘭", "魔法之都 吉芬";
    9.                 setarray @wrpP[0], 2000, 3000;

    10.         if (VIP_SCRIPT && !vip_status(VIP_STATUS_ACTIVE)) {
    11.                 for (set .@i, 0; .@i < getarraysize(@wrpD$); set .@i, .@i + 1)
    12.                         setd "@wrpP["+.@i+"]",getd("@wrpP["+.@i+"]") * 2;
    13.         }

    14.         for (set .@i, 0; .@i < getarraysize(@wrpD$); set .@i, .@i + 1)
    15.                 setd "@wrpC$["+.@i+"]",getd("@wrpD$["+.@i+"]")+" -> "+getd("@wrpP["+.@i+"]")+" z";
    16.         setd "@wrpC$["+getarraysize(@wrpC$)+"]","結束對話";
    17.         return;
    18. }
    複製代碼
    ---------------------------------------------------------------------------------------------------------------------
    洞穴傳送 座標地點
    1. function        script        Fild        {
    2.         mes "[卡普拉 職員]";
    3.         mes "請告訴我您的目的地";
    4.         next;
    5.         set .@menu$, "";
    6.         for (set .@i, 0; .@i <= 20; set .@i, .@i + 1)
    7.                 set .@menu$, .@menu$ + @wrpC$[.@i] + ":";
    8.         set .@j, select (.@menu$) - 1;
    9.         if (@wrpC$[.@j] == "結束對話")
    10.         {
    11.                 mes "[卡普拉 職員]";
    12.                 mes "如果想用傳送服務, 歡迎您隨時來找我!";
    13.                 close2;
    14.                 cutin "", 255;
    15.                 end;
    16.         }
    17.         else {
    18.                 if (Zeny<@wrpP[.@j]){
    19.                         mes "[卡普拉 職員]";
    20.                         mes "您沒有足夠的金幣來使用傳送服務,";
    21.                         mes "傳送到 "+@wrpD$[.@j]+" 需要 "+@wrpP[.@j]+" Zeny.";
    22.                         close2;
    23.                         cutin "", 255;
    24.                         end;
    25.                 }
    26.                 set Zeny, Zeny - @wrpP[.@j];
    27.         }
    28.         cutin "", 255;
    29.         if (@wrpD$[.@j] == "廢棄礦場") warp "mjolnir_02", 99, 351;
    30.         else if (@wrpD$[.@j] == "獸人村落") warp "gef_fild10", 52, 326;
    31.         end;
    32. }
    複製代碼
    -----------------------------------------------------------------------------------------------
    洞穴傳送 收費
    1. function        script        Dun        {
    2.         cleararray @wrpC$[0],"",getarraysize(@wrpC$);
    3.         cleararray @wrpD$[0],"",getarraysize(@wrpD$);
    4.         cleararray @wrpP$[0],"",getarraysize(@wrpP$);
    5.         cleararray @viewpX[0],"",getarraysize(@viewpX);
    6.         cleararray @viewpY[0],"",getarraysize(@viewpY);
    7.         if (strnpcinfo(4) == "prontera") {
    8.                 setarray @wrpD$[0], "廢棄礦場","獸人村落";
    9.                 setarray @wrpP[0], 600, 1200;

    10.         if (VIP_SCRIPT && !vip_status(VIP_STATUS_ACTIVE)) {
    11.                 for (set .@i, 0; .@i < getarraysize(@wrpD$); set .@i, .@i + 1)
    12.                         setd "@wrpP["+.@i+"]",getd("@wrpP["+.@i+"]") * 2;
    13.         }

    14.         for (set .@i, 0; .@i < getarraysize(@wrpD$); set .@i, .@i + 1)
    15.                 setd "@wrpC$["+.@i+"]",getd("@wrpD$["+.@i+"]")+" -> "+getd("@wrpP["+.@i+"]")+" z";
    16.         setd "@wrpC$["+getarraysize(@wrpC$)+"]","結束對話";
    17.         return;
    18. }

    複製代碼
    ---------------------------------------------------------------------------------------------------------------------------------
    卡普拉的選單我也新增了一個

    1. fayon,100,115,4        script        卡普拉 職員::kaf_payon2        113,{
    2.         cutin "kafra_05",2;
    3.         callfunc "F_KafSet";
    4.         mes "[卡普拉 職員]";
    5.         mes "歡迎光臨, 熱情的冒險家~!";
    6.         mes "卡普拉服務永遠在您身邊!";
    7.         mes "您需要什麼服務呢?";
    8.         callfunc "F_Kafra",5,0,1,60,930;
    9.         savepoint "fayon",69,100,1,1;
    10.         callfunc "F_KafEnd",0,1,"斐揚 城內";
    11.         callfunc "Dun";
    複製代碼
    請問該如何共存 也不會起衝突


    本帖子中包含更多資源

    您需要 登錄 才可以下載或查看,沒有帳號?註冊

    x
    回復

    使用道具 舉報

  • TA的每日心情
    慵懶
    2022-3-25 08:36 PM
  • 簽到天數: 868 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2017-12-28 23:00:28 | 顯示全部樓層
    挑個小錯誤,我還沒有仔細看是不是這個原因
    (@K_Menu0$[.@j] == "洞穴服務")

    可是你的選單內是"洞穴傳送"
    字串判定會不相等
    造成If else出問題
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2023-11-3 10:41 AM
  • 簽到天數: 690 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2017-12-29 08:32:34 | 顯示全部樓層
    vincent800307 發表於 2017-12-28 11:00 PM
    挑個小錯誤,我還沒有仔細看是不是這個原因
    (@K_Menu0$[.@j] == "洞穴服務")

    並不是..照片因為是別台電腦寫的
    但如果字一樣都是
    洞穴傳送 就是像我說的狀況是 傳送服務



    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2020-10-22 03:17 PM
  • 簽到天數: 485 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2017-12-31 05:25:48 | 顯示全部樓層
    ex00089 發表於 2017-12-29 08:32 AM
    並不是..照片因為是別台電腦寫的
    但如果字一樣都是
    洞穴傳送 就是像我說的狀況是 傳送服務

    其實你也可以考慮抓現成的參考,參考一下語法在做修改,也是一種方法.
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2023-11-3 10:41 AM
  • 簽到天數: 690 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2017-12-31 08:45:37 | 顯示全部樓層
    逍遙天子 發表於 2017-12-31 05:25 AM
    其實你也可以考慮抓現成的參考,參考一下語法在做修改,也是一種方法.

    指的是原碼嗎?
    如果是腳本
    我是參考卡普拉的
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2020-10-22 03:17 PM
  • 簽到天數: 485 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2017-12-31 15:06:13 | 顯示全部樓層
    ex00089 發表於 2017-12-31 08:45 AM
    指的是原碼嗎?
    如果是腳本
    我是參考卡普拉的

    腳本區也有傳送npc的腳本,多參考也不吃虧.
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2023-11-3 10:41 AM
  • 簽到天數: 690 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2017-12-31 15:15:14 | 顯示全部樓層
    逍遙天子 發表於 2017-12-31 03:06 PM
    腳本區也有傳送npc的腳本,多參考也不吃虧.

    我自己是有寫一套收費的可以用
    但我想用成每個地區的卡普拉收費制度不一樣

    但我發現 如果我改
    1. function        script        F_KafZ        {
    2.         mes "[卡普拉 職員]";
    3.         mes "請告訴我您的目的地";
    4.         next;
    5.         set .@menu$, "";
    6.         for (set .@i, 0; .@i <= 20; set .@i, .@i + 1)
    7.                 set .@menu$, .@menu$ + @wrpC$[.@i] + ":";
    8.         set .@j, select (.@menu$) - 1;
    9.         if (@wrpC$[.@j] == "結束對話")
    10.         {
    複製代碼
    中的
                    set .@menu$, .@menu$ + @wrpC$[.@i] + ":";
    改成其他
                    set .@menu$, .@menu$ + @wrpX$[.@i] + ":";

    就會變成 空白的




    本帖子中包含更多資源

    您需要 登錄 才可以下載或查看,沒有帳號?註冊

    x
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2018-2-21 07:51 AM
  • 簽到天數: 33 天

    連續簽到: 1 天

    [LV.5]常住居民I

    發表於 2018-1-9 08:32:02 | 顯示全部樓層
    逍遙天子 發表於 2017-12-31 05:25 AM
    其實你也可以考慮抓現成的參考,參考一下語法在做修改,也是一種方法.

    他要的是收費的
    腳本區全都是免費傳送!

    要不然只能固定價錢了
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2020-10-22 03:17 PM
  • 簽到天數: 485 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2018-1-9 09:28:00 | 顯示全部樓層
    ickrc0204 發表於 2018-1-9 08:32 AM
    他要的是收費的
    腳本區全都是免費傳送!

    早期的印象是有類似收費的腳本,真的要翻,可能會翻到眼花撩亂.
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2018-1-10 17:16:43 | 顯示全部樓層
    本帖最後由 z0202520 於 2018-1-10 05:21 PM 編輯

    cleararray @wrpP$[0],"",getarraysize(@wrpP$);
    setarray @wrpP[0], 600, 1200;
    型態不太對吧

    題外話,如果沒有特別需求盡量少用點setd getd
    這語法會加深閱讀難度

    再者你只有收費部分有對那些地圖做初始化動作
    免費部分的選單地圖那些如果沒有做初始化
    就會沿用你腳色上次使用過的樣子去呈現
    回復 支持 反對

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-3-29 10:38 PM , Processed in 0.054995 second(s), 22 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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