求精煉解說.
本帖最後由 bsexp102762 於 2018-3-18 01:29 PM 編輯目前在學習Set 及 menu 的使用方式
小的便找了精練的版本來學習
以下是學習範本(部分) setarray .@indices, 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;
for(set .@i,1; .@i<=10; set .@i,.@i+1)
set .@menu$, .@menu$ + ( getequipisequiped(.@indices[.@i]) ? getequipname(.@indices[.@i]) : F_getpositionname(.@indices[.@i]) +"-" ) +":";
set .@part, .@indices[ select(.@menu$) ];
if (!getequipisequiped(.@part)) {
mes "";
switch(.@part) {
case 1:
mes "I'm a blacksmith, not a hairstylist.";
break;
case 2:
mes "With my hammer, I will make you a star of the sky.";
break;
case 3:
case 4:
mes "Making artificial hands is not my specialty.";
break;
case 5:
mes "Bring out the item so I can refine it!";
break;
case 6:
mes "Where is this foot odor coming from?";
break;
case 7:
case 8:
mes "Where is the accessory?";
break;
case 9:
mes "What do you want me to refine?";
break;
case 10:
mes "Huh? What do you want me to do?";
break;
}
close;我想了解一下.@part自定義變數中的值該怎麼對應.@indices中的值
例如選單中第一項為頭上
我點下去卻對應到.@part = 6 對應到case 6 且 .@indices 是鞋子EQI_SHOES
但我選單中頭上是第一個選項
不太了解.@part怎麼不是1 而是 6 ?
EQI_COMPOUND_ON (-1) - Item slot that calls this script (In context of item script)
EQI_ACC_L (0) - Accessory 1
EQI_ACC_R (1) - Accessory 2
EQI_SHOES (2) - Footgear (shoes, boots)
EQI_GARMENT (3) - Garment (mufflers, hoods, manteaux)
EQI_HEAD_LOW (4) - Lower Headgear (beards, some masks)
EQI_HEAD_MID (5) - Middle Headgear (masks, glasses)
EQI_HEAD_TOP (6) - Upper Headgear
EQI_ARMOR (7) - Armor (jackets, robes)
EQI_HAND_L (8) - Left hand (weapons, shields)
EQI_HAND_R (9) - Right hand (weapons)
EQI_COSTUME_HEAD_TOP (10) - Upper Costume Headgear
EQI_COSTUME_HEAD_MID (11) - Middle Costume Headgear
EQI_COSTUME_HEAD_LOW (12) - Lower Costume Headgear
EQI_COSTUME_GARMENT (13)- Costume Garment
EQI_AMMO (14) - Arrow/Ammunition
EQI_SHADOW_ARMOR (15) - Shadow Armor
EQI_SHADOW_WEAPON (16) - Shadow Weapon
EQI_SHADOW_SHIELD (17) - Shadow Shield
EQI_SHADOW_SHOES (18) - Shadow Shoes
EQI_SHADOW_ACC_R (19) - Shadow Accessory 2
EQI_SHADOW_ACC_L (20) - Shadow Accessory 1很久沒看語法了,所以我的說法可能是錯的聽聽就好
EQI_HEAD_TOP 你可以把它當作是一個常數或變數,值為6
在pc.h裡面是這樣定義它們的enum equip_index {
EQI_COMPOUND_ON = -1,
EQI_ACC_L = 0,
EQI_ACC_R,
EQI_SHOES,
EQI_GARMENT,
EQI_HEAD_LOW,
EQI_HEAD_MID,
EQI_HEAD_TOP,
EQI_ARMOR,
EQI_HAND_L,
EQI_HAND_R,
EQI_COSTUME_HEAD_TOP,
EQI_COSTUME_HEAD_MID,
EQI_COSTUME_HEAD_LOW,
EQI_COSTUME_GARMENT,
EQI_AMMO,
EQI_SHADOW_ARMOR,
EQI_SHADOW_WEAPON,
EQI_SHADOW_SHIELD,
EQI_SHADOW_SHOES,
EQI_SHADOW_ACC_R,
EQI_SHADOW_ACC_L,
EQI_MAX
}; 本帖最後由 bsexp102762 於 2018-3-16 11:54 PM 編輯
a91323 發表於 2018-3-16 11:31 PM static/image/common/back.gif
很久沒看語法了,所以我的說法可能是錯的聽聽就好
EQI_HEAD_TOP 你可以把它當作是一個常數或變數,值為6 ...
了解了謝謝您的解釋
以及借這個帖
我想在補問一下
我在item_db的Script中加入了
atcommand "@killmonster";
使用後可行
但將指令改成
atcommand "@reload script"; 或 atcommand "@reloadscript";
卻沒有效果(也設置過NPC觸發也不行)
我想問一下該怎麼修改呢?
想說目前在研究Script一直打@reload script有點累..
本帖最後由 z0202520 於 2018-3-17 11:38 PM 編輯
bsexp102762 發表於 2018-3-16 11:46 PM static/image/common/back.gif
了解了謝謝您的解釋
以及借這個帖
我想在補問一下
因為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+數字快速輸入了
z0202520 發表於 2018-3-17 11:37 PM static/image/common/back.gif
因為reloadscript指令在atcommand.cpp被定義為不可使用腳本來運行
ACMD_DEF2R("reloadscript", reload,...
謝謝您的回覆我馬上測試看看
頁:
[1]