#用其他角色pm煉金,格式為 要練的藥名:要練的數量
#做藥水之前身上要帶夠開倉庫數次的錢
#最好把所有與煉藥有關的東西都放倉庫(藥水說明書除外)
#自行把煉金開到卡普拉附近並設定倉庫NPC座標
#初始化程序——————————————————————————————————————————————————————
automacro chushihua {
exclusive 1
connection 您已经进入游戏
run-once 1
call {
#設定倉庫NPC座標
$npcxy = 29 207
#設定坐下時恢復多少SP後站起
$maxspup = 800
stop
}
}
#程序入口,接受命令——————————————————————————————————————————————
automacro jieshou {
pm /(.*):(.*)/
run-once 1
call {
#提取字符串到2個函數
$zhonglei = $.lastpmMsg
$shuliang = $.lastpmMsg
do eval $::Macro::Data::varStack{zhonglei} = $` if $::Macro::Data::varStack{zhonglei} =~ /:/;
do eval $::Macro::Data::varStack{shuliang} = $' if $::Macro::Data::varStack{shuliang} =~ /:/;
#統計變量
$tongji = 0
$cuncangtongji = 0
#次數變量
$cishu = 0
$cishu2 = 0
$qucang = 0
#歡迎詞
do pm $.lastpm ————————
do pm $.lastpm 歡迎使用人工智能煉藥系統!
#若身上有存貨,先存進倉庫
call qingcang
#計算可用重量
do eval $::Macro::Data::varStack{keyong} = int($::char->{'weight_max'} * 0.5 - $::char->{'weight'});
if ($keyong <= 0) goto chaozhong
if ($.sp < $maxspup) call huifusp
#做藥開始
do pm $.lastpm 開始嘗試煉製$zhonglei $shuliang次
do pm $.lastpm ......
if ($zhonglei == 酒精) call zuojiujing
if ($zhonglei == 火煙瓶) call zuohuoyanping
if ($zhonglei == 鹽酸瓶) call zuoyansuanping
call lianyaotongji
release cangkukong
release jieshou
stop
:chaozhong
do pm $.lastpm 你負重超50%了,請移除不必要的物品!
release jieshou
stop
}
}
#取倉失敗時跳出——————————————————————————————————————————————————
automacro cangkukong {
console /仓库道具(.*)不存在(.*)/
run-once 1
call {
$cishu2 = @eval($shuliang + 1)
stop
}
}
#手動停止煉藥————————————————————————————————————————————————————
macro tingzhilianyao {
$cishu2 = @eval($shuliang + 1)
stop
}
#煉製酒精————————————————————————————————————————————————————————
macro zuojiujing {
if (@invamount (酒精製作說明書) < 1) goto lowjj
#計算可用重量內可以帶多少組材料
do eval $::Macro::Data::varStack{yizushu} = int($::Macro::Data::varStack{keyong} / 15);
while ($cishu2 < $shuliang) as loop
call xjiujing
end loop
stop
:lowjj
do pm $.lastpm 年輕人,你沒有【酒精製作說明書】
release jieshou
stop
}
macro xjiujing {
if ($.sp < 5) call huifusp
if (@invamount (空瓶) < 1 || @invamount (空試管) < 1 || @invamount (植物梗) < 5 || @invamount (毒魔菇芽孢) < 5 || @invamount (藥缽) < 1) {
call kaicang
call zidongcuncang
do storage get @Storage(空瓶) $yizushu
pause 1
do storage get @Storage(空試管) $yizushu
pause 1
do storage get @Storage(植物梗) @eval($yizushu * 5)
pause 1
do storage get @Storage(毒魔菇芽孢) @eval($yizushu * 5)
pause 1
do storage get @Storage(藥缽) $yizushu
pause 1
call guancang
do pm $.lastpm 第$cuncangtongji次存倉完畢!
}
do ss 配藥
#列表選擇,數字轉16進制,比如白色藥水是編號504轉成16進制為01 F8 倒寫
do send 8E 01 CA 03 00 00 00 00 00 00
$cishu++
$cishu2++
stop
}
#煉製火煙瓶——————————————————————————————————————————————————————
macro zuohuoyanping {
if (@invamount (火煙瓶製作說明書) < 1) goto lowhyp
do eval $::Macro::Data::varStack{yizushu} = int($::Macro::Data::varStack{keyong} / 8);
while ($cishu2 < $shuliang) as loop
call xhuoyanping
end loop
stop
:lowhyp
do pm $.lastpm 年輕人,你沒有【火煙瓶製作說明書】
release jieshou
stop
}
macro xhuoyanping {
if ($.sp < 5) call huifusp
if (@invamount (酒精) < 1 || @invamount (透明之布) < 1 || @invamount (空瓶) < 1 || @invamount (藥缽) < 1) {
call kaicang
call zidongcuncang
do storage get @Storage(空瓶) $yizushu
pause 1
do storage get @Storage(酒精) $yizushu
pause 1
do storage get @Storage(透明之布) $yizushu
pause 1
do storage get @Storage(藥缽) $yizushu
pause 1
call guancang
do pm $.lastpm 第$cuncangtongji次存倉完畢!
}
do ss 配藥
do send 8E 01 DF 1B 00 00 00 00 00 00
$cishu++
$cishu2++
stop
}
#煉製鹽酸瓶——————————————————————————————————————————————————————
macro zuoyansuanping {
if (@invamount (鹽酸瓶製作說明書) < 1) goto lowysp
do eval $::Macro::Data::varStack{yizushu} = int($::Macro::Data::varStack{keyong} / 5);
while ($cishu2 < $shuliang) as loop
call xyansuanping
end loop
stop
:lowysp
do pm $.lastpm 年輕人,你沒有【鹽酸瓶製作說明書】
release jieshou
stop
}
macro xyansuanping {
if ($.sp < 5) call huifusp
if (@invamount (空瓶) < 1 || @invamount (不死心臟) < 1 || @invamount (藥缽) < 1) {
call kaicang
call zidongcuncang
do storage get @Storage(空瓶) $yizushu
pause 1
do storage get @Storage(不死心臟) $yizushu
pause 1
do storage get @Storage(藥缽) $yizushu
pause 1
call guancang
do pm $.lastpm 第$cuncangtongji次存倉完畢!
}
do ss 配藥
do send 8E 01 E0 1B 00 00 00 00 00 00
$cishu++
$cishu2++
stop
}
#倉庫存取————————————————————————————————————————————————————————
macro kaicang {
pause 1
do talk @npc ($npcxy)
pause 1
do talk cont
pause 1
do talk resp 1
pause 2
stop
}
macro zidongcuncang {
$tongji = @eval($tongji + @invamount ($zhonglei))
if (@Inventory ($zhonglei) > 0) {
do storage add @Inventory($zhonglei)
}
$cuncangtongji++
pause 1
stop
}
macro guancang {
pause 1
do storage close
stop
}
macro qingcang {
do pm $.lastpm 正在將身上物品存入倉庫。
call kaicang
if (@Inventory(藥缽) > 0) {
do storage add @Inventory(藥缽)
pause 1
}
if (@Inventory(空試管) > 0) {
do storage add @Inventory(空試管)
pause 1
}
if (@Inventory(植物梗) > 0) {
do storage add @Inventory(植物梗)
pause 1
}
if (@Inventory(毒魔菇芽孢) > 0) {
do storage add @Inventory(毒魔菇芽孢)
pause 1
}
if (@Inventory(透明之布) > 0) {
do storage add @Inventory(透明之布)
pause 1
}
if (@Inventory(不死心臟) > 0) {
do storage add @Inventory(不死心臟)
pause 1
}
if (@Inventory(酒精) > 0) {
do storage add @Inventory(酒精)
pause 1
}
if (@Inventory(火煙瓶) > 0) {
do storage add @Inventory(火煙瓶)
pause 1
}
if (@Inventory(鹽酸瓶) > 0) {
do storage add @Inventory(鹽酸瓶)
pause 1
}
call guancang
stop
}
#恢復SP——————————————————————————————————————————————————————————
macro huifusp {
do sit
do pm $.lastpm 由於SP不足,開始坐下恢復SP...
while ($.sp < $maxspup) as loop
pause 10
end loop
do stand
stop
}
#煉藥統計————————————————————————————————————————————————————————
macro lianyaotongji {
$tongji = @eval($tongji + @invamount ($zhonglei))
$chenggonglv = @eval($tongji / $cishu)
do eval $::Macro::Data::varStack{chenggonglv} = sprintf("%.1f",$::Macro::Data::varStack{chenggonglv} * 100) . '%';
do pm $.lastpm 完成!
do pm $.lastpm 做$zhonglei共$cishu次,成功率$chenggonglv。
do pm $.lastpm ————————
stop
}