精華區beta mud_sanc 關於我們 聯絡資訊
讓 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)