OK論壇

 找回密碼
 註冊
查看: 1724|回復: 4

求精煉解說.

[複製鏈接]
  • TA的每日心情
    奮斗
    2021-8-26 07:22 PM
  • 簽到天數: 150 天

    連續簽到: 1 天

    [LV.7]常住居民III

    發表於 2018-3-16 18:33:00 | 顯示全部樓層 |閱讀模式
    本帖最後由 bsexp102762 於 2018-3-18 01:29 PM 編輯

    目前在學習Set 及 menu 的使用方式
    小的便找了精練的版本來學習

    以下是學習範本(部分)
    1. setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW;
    2.         for(set .@i,1; .@i<=10; set .@i,.@i+1)
    3.                 set .@menu$, .@menu$ + ( getequipisequiped(.@indices[.@i]) ? getequipname(.@indices[.@i]) : F_getpositionname(.@indices[.@i]) +"-[Not equipped]" ) +":";
    4.         set .@part, .@indices[ select(.@menu$) ];
    5.         if (!getequipisequiped(.@part)) {
    6.                 mes "[Blacksmith Mighty Hammer]";
    7.                 switch(.@part) {
    8.                 case 1:
    9.                         mes "I'm a blacksmith, not a hairstylist.";
    10.                         break;
    11.                 case 2:
    12.                         mes "With my hammer, I will make you a star of the sky.";
    13.                         break;
    14.                 case 3:
    15.                 case 4:
    16.                         mes "Making artificial hands is not my specialty.";
    17.                         break;
    18.                 case 5:
    19.                         mes "Bring out the item so I can refine it!";
    20.                         break;
    21.                 case 6:
    22.                         mes "Where is this foot odor coming from?";
    23.                         break;
    24.                 case 7:
    25.                 case 8:
    26.                         mes "Where is the accessory?";
    27.                         break;
    28.                 case 9:
    29.                         mes "What do you want me to refine?";
    30.                         break;
    31.                 case 10:
    32.                         mes "Huh? What do you want me to do?";
    33.                         break;
    34.                 }
    35.                 close;
    複製代碼
    我想了解一下  .@part自定義變數中的值該怎麼對應.@indices中的值
    例如選單中第一項為頭上
    我點下去卻對應到.@part = 6 對應到case 6 且 .@indices 是鞋子EQI_SHOES

    但我選單中頭上是第一個選項
    不太了解.@part怎麼不是1 而是 6 ?


    回復

    使用道具 舉報

  • TA的每日心情
    開心
    2023-9-25 11:37 PM
  • 簽到天數: 1686 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2018-3-16 23:31:45 | 顯示全部樓層
    1. EQI_COMPOUND_ON (-1)      - Item slot that calls this script (In context of item script)
    2. EQI_ACC_L (0)             - Accessory 1
    3. EQI_ACC_R (1)             - Accessory 2
    4. EQI_SHOES (2)             - Footgear (shoes, boots)
    5. EQI_GARMENT (3)           - Garment (mufflers, hoods, manteaux)
    6. EQI_HEAD_LOW (4)          - Lower Headgear (beards, some masks)
    7. EQI_HEAD_MID (5)          - Middle Headgear (masks, glasses)
    8. EQI_HEAD_TOP (6)          - Upper Headgear
    9. EQI_ARMOR (7)             - Armor (jackets, robes)
    10. EQI_HAND_L (8)            - Left hand (weapons, shields)
    11. EQI_HAND_R (9)            - Right hand (weapons)
    12. EQI_COSTUME_HEAD_TOP (10) - Upper Costume Headgear
    13. EQI_COSTUME_HEAD_MID (11) - Middle Costume Headgear
    14. EQI_COSTUME_HEAD_LOW (12) - Lower Costume Headgear
    15. EQI_COSTUME_GARMENT (13)  - Costume Garment
    16. EQI_AMMO (14)                      - Arrow/Ammunition
    17. EQI_SHADOW_ARMOR (15)     - Shadow Armor
    18. EQI_SHADOW_WEAPON (16)    - Shadow Weapon
    19. EQI_SHADOW_SHIELD (17)    - Shadow Shield
    20. EQI_SHADOW_SHOES (18)     - Shadow Shoes
    21. EQI_SHADOW_ACC_R (19)     - Shadow Accessory 2
    22. EQI_SHADOW_ACC_L (20)     - Shadow Accessory 1
    複製代碼
    很久沒看語法了,所以我的說法可能是錯的聽聽就好

    EQI_HEAD_TOP 你可以把它當作是一個常數或變數,值為6

    在pc.h裡面是這樣定義它們的
    1. enum equip_index {
    2.         EQI_COMPOUND_ON = -1,
    3.         EQI_ACC_L = 0,
    4.         EQI_ACC_R,
    5.         EQI_SHOES,
    6.         EQI_GARMENT,
    7.         EQI_HEAD_LOW,
    8.         EQI_HEAD_MID,
    9.         EQI_HEAD_TOP,
    10.         EQI_ARMOR,
    11.         EQI_HAND_L,
    12.         EQI_HAND_R,
    13.         EQI_COSTUME_HEAD_TOP,
    14.         EQI_COSTUME_HEAD_MID,
    15.         EQI_COSTUME_HEAD_LOW,
    16.         EQI_COSTUME_GARMENT,
    17.         EQI_AMMO,
    18.         EQI_SHADOW_ARMOR,
    19.         EQI_SHADOW_WEAPON,
    20.         EQI_SHADOW_SHIELD,
    21.         EQI_SHADOW_SHOES,
    22.         EQI_SHADOW_ACC_R,
    23.         EQI_SHADOW_ACC_L,
    24.         EQI_MAX
    25. };
    複製代碼

    評分

    參與人數 1積分 +6 現金 +6 積極性 +6 收起 理由
    逍遙天子 + 6 + 6 + 6 我很贊同

    查看全部評分

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2021-8-26 07:22 PM
  • 簽到天數: 150 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2018-3-16 23:46:45 | 顯示全部樓層
    本帖最後由 bsexp102762 於 2018-3-16 11:54 PM 編輯
    a91323 發表於 2018-3-16 11:31 PM
    很久沒看語法了,所以我的說法可能是錯的聽聽就好

    EQI_HEAD_TOP 你可以把它當作是一個常數或變數,值為6 ...

    了解了謝謝您的解釋
    以及借這個帖
    我想在補問一下
    我在item_db的Script中加入了
    atcommand "@killmonster";
    使用後可行
    但將指令改成
    atcommand "@reload script"; 或 atcommand "@reloadscript";
    卻沒有效果(也設置過NPC觸發也不行)

    我想問一下該怎麼修改呢?
    想說目前在研究Script一直打@reload script有點累..



    回復 支持 反對

    使用道具 舉報

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

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2018-3-17 23:37:43 | 顯示全部樓層
    本帖最後由 z0202520 於 2018-3-17 11:38 PM 編輯
    bsexp102762 發表於 2018-3-16 11:46 PM
    了解了謝謝您的解釋
    以及借這個帖
    我想在補問一下

    因為reloadscript指令在atcommand.cpp被定義為不可使用腳本來運行
    ACMD_DEF2R("reloadscript", reload, ATCMD_NOSCRIPT),
    判斷的地方在is_atcommand的函數裡面
    if (info->restriction&ATCMD_NOSCRIPT && (type == 0 || type == 3)) //scripts prevent

    要馬你就把定義指令的ATCMD_NOSCRIPT拿掉 (不保證會沒問題,沒測試過)
    不然就是把指令打在表情符號快速鍵視窗
    就可以用Alt+數字快速輸入了

    評分

    參與人數 1積分 +6 現金 +6 積極性 +6 收起 理由
    逍遙天子 + 6 + 6 + 6 我很贊同

    查看全部評分

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2021-8-26 07:22 PM
  • 簽到天數: 150 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2018-3-18 00:49:59 | 顯示全部樓層
    z0202520 發表於 2018-3-17 11:37 PM
    因為reloadscript指令在atcommand.cpp被定義為不可使用腳本來運行
    ACMD_DEF2R("reloadscript", reload,  ...

    謝謝您的回覆我馬上測試看看
    回復 支持 反對

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-4-20 09:06 AM , Processed in 0.051104 second(s), 23 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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