讓 ob trade 指令比較方便使用的觸發...大概
-==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-
當下指令:"obtrd playerID"時,開始取得交易對象ID,並送出指令:ob。
這一系列觸發唯有變數 a 不為 nil 時,才會觸發。
-==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-
<aliases>
<alias
match="obtrd(.*)"
enabled="y"
group="obtrading"
regexp="y"
send_to="12"
sequence="100"
>
<send>
if '%1' == "" then
Note (" 你要跟誰交易?<obtrd playerID>")
else
--將交易對象ID賦值於 a
a = Trim('%1')
--送出指令 ob 到 MUD。
Send('ob')
end
</send>
</alias>
</aliases>
<triggers>
-==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-
清空 OB_list 用!
-==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-
<trigger
enabled="y"
group="obtrading"
match="^你的物..欄帶著 \d+\/99 種物..:$"
regexp="y"
send_to="12"
sequence="100"
>
<send>OB_list = nil</send>
</trigger>
-==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-
停止收集 ob 內容,並開始作業
-==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-
<trigger
enabled="y"
group="obtrading"
match="^╚═════╩═══════════════════════════
═════╝$"
regexp="y"
send_to="12"
sequence="100"
>
<send>
--移除變數。
b,Sell_list ,k_h = nil, nil,nil
--判斷 a 值是否存在。
if a ~= nil then
--對話框1:設定出售的清單。
result = utils.multilistbox("請選擇要出售的物品:",
"OB交易",
OB_list,
default)
--如果按下 cancel 或 未選擇項目就按下 OK 時
if result == nil or table.maxn(result) == 0 then
Note ('交易已經中止!')
--
else
SellALL = {}
table.foreach(result, function(i) table.insert(SellALL,OB_list[i]) end)
--為下一個對話框建立已選擇物品清單
for k,y in pairs(SellALL) do
if Sell_list == nil then Sell_list = "" end
k_h = 12*k --下一個對話框的尺寸變動值(高)
Sell_list = Sell_list.."║"..string.format("%%02d",k).."║"..
string.format("%%02d",string.match(y,"(%d+)")).."║"..
string.match(y," (%S+)").."\\n"
end --for SellALL to Sell_list
--對話框2:修改出售的數量。
result = utils.inputbox ([[請輸入各物品出售的數量:\n]]..
[[1.各項數量以","分隔!\n]]..
[[2.欲全數賣出單品,輸入"a"。\n]]..
[[3.單品賣量大於持有量時,視為該項全數賣出。\n]]..
[[4.不輸入內容直接按下確定,則整批全數出清。\n]]..
[[╔═╦═╦═════════════════\n]]..
[[║項║量║名 稱\n]]..
[[╠═╬═╬═════════════════\n]]..
Sell_list..
[[╚═╩═╩═════════════════]],
"OB交易",
nil,
nil,
'14',
--對話框尺寸調整
{box_width = 320,
box_height = 230 + k_h,
prompt_width = 310,
prompt_height = 115 + k_h,
reply_width = 310,
reply_height = 25,
})
--按下 cancel 鈕時,
if result == nil then
Note ('交易已經中止!')
--輸入框未輸入內容並按下OK,直接送出內容。
elseif result == "" then
Send ('ob trade ',table.concat(SellALL,","),' with ',a)
--輸入框有內容並按下OK,
else
--取出result的值到v並遍歷
for v in string.gmatch(result,"(%w+)") do
--gmatch不存在索引值,必須自行設定
if b == nil then b = 1 end
--v為0就清空出售清單對應品項
if v == '0' then
SellALL[b] = ""
--v值不為a也不大於持有數,才修改出售數量
elseif v ~= "a" and v > string.match(SellALL[b],"(%d+)") then
SellALL[b] = string.gsub(SellALL[b],'%d+',v)
end
b = b + 1
end -- for
--整理格式,連續","改為一個","。
SellALL = string.gsub(table.concat(SellALL,","),',+',',')
--移除開頭的","。
SellALL = string.gsub(SellALL,'^,','')
--移除末尾的","。
SellALL = string.gsub(SellALL,',$','')
--送出內容。
Send ('ob trade ',SellALL,' with ',a)
end
end
end
--移除用畢的變數
a, b, SellALL, OB_list = nil,nil,nil,nil
</send>
</trigger>
-==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-
收集 ob 的資料,並存到OB_list。
-==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-
<trigger
enabled="y"
group="obtrading"
match="^║( *\d+\.\S+\s+\( +\d+\)║[^\n]+║[^\n]+)║"
regexp="y"
send_to="12"
sequence="100"
>
<send>
if OB_list == nil then OB_list = {} end
if a ~= nil then
for k,v,i in string.gmatch('%1',"(%d+)%.(%S+)%s+%( +(%d+)%)") do
table.insert(OB_list,k,i.." "..v)
end
end --if
</send>
</trigger>
-==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-
</triggers>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.196.45
※ 編輯: hmml 來自: 220.132.196.45 (12/15 12:19)