[マクロ] マクロ集

マクロ マクロ
マクロ

最終更新:2026/03/29




CoAではマクロで使用可能な文字数がRoMの256文字から1024文字まで拡張され、柔軟な処理ができるようになりました。

アイテム処理

店売り

61~360スロットのアイテムを売却するマクロ。(スロットの範囲は調整してください)
Ctrlキーを押して実行すると紫以上も売却しますが、紫以上は買い戻せる様に最後に売却するようにしました。

Lua
/run local min,max=61,360 local function sell(MN, MX) if not StoreFrame:IsVisible() then TargetNearestFriend() UseSkill(1,1) ChoiceOption(1) return end for i=MN,MX do local _,_,NM,_,_,rr=GetBagItemInfo(i) if NM~="" and rr <= 2 then UseBagItem(GetBagItemInfo(i)) end end if IsCtrlKeyDown() then for i=MN,MX do local _,_,NM=GetBagItemInfo(i) if NM~="" then UseBagItem(GetBagItemInfo(i)) end end end end sell(min, max)

ドコでも店売り(旅商人)

旅商人(Travelling Merchant)を道中引き連れて店売りするためのマクロです。
挙動は通常の「店売り」マクロと一緒です。minとmaxを調整してください。
それと、マクロの実行前に旅商人をフォーカス1に登録しておく必要があります。

Lua
/run TargetUnit("focus1") UseSkill(1,1); 
/wait .3
/run ChoiceOption(1)
/wait .5
/run local min,max=61,360 local function sell(MN, MX) if not StoreFrame:IsVisible() then TargetNearestFriend() UseSkill(1,1) ChoiceOption(1) return end for i=MN,MX do local _,_,NM,_,_,rr=GetBagItemInfo(i) if NM~="" and rr <= 2 then UseBagItem(GetBagItemInfo(i)) end end if IsCtrlKeyDown() then for i=MN,MX do local _,_,NM=GetBagItemInfo(i) if NM~="" then UseBagItem(GetBagItemInfo(i)) end end end end sell(min, max) TargetUnit("") StoreFrame:Hide()

※高速で移動して旅商人との距離が離れすぎるとフォーカスが切れてしまいますのでご注意を。

ドコでも店売り(NPC Consumables)

バトルパス:Prestige Regularから使用可能なドコでもショップ『NPC Consumables』用のマクロです。

Prestigeの階級がDEMIGODまで上がっていれば1日50回店売りNPCを呼び出せます。(ブーストすれば無制限)
ゴールドファーミングしない限りはブースト不要。

Lua
/run for i=1,100 do local link=GetSkillHyperLink(1,i) if link==nil then break elseif string.find(link,"NPC Con") then local linktype,data,name=ParseHyperlink(link) UseSkill(1,i) end end
/wait .5
/run ChoiceListDialogOption(0)
/wait 1
/run local min,max=61,360 local function sell(MN, MX) if not StoreFrame:IsVisible() then TargetNearestFriend() UseSkill(1,1) ChoiceOption(1) return end for i=MN,MX do local _,_,NM,_,_,rr=GetBagItemInfo(i) if NM~="" and rr <= 2 then UseBagItem(GetBagItemInfo(i)) end end if IsCtrlKeyDown() then for i=MN,MX do local _,_,NM=GetBagItemInfo(i) if NM~="" then UseBagItem(GetBagItemInfo(i)) end end end end sell(min, max) TargetUnit("") StoreFrame:Hide()

サンプルマクロでは61スロットから360スロットを売却対象にしています。(5行目)

local min,max=61,360

売却範囲は各々の状況に合わせて修正しください。

※1行目のi=1,100はスキル「NPC Consumables」探すためのパラメータのため変更しないでください。

店売り(指定アイテム除外)

私は青以下であっても売りたくないものはたくさんあります。その場合のマクロです。

分解マクロ(カード・装備)

RoMでは存在が空気だった分解術ですが、CoAでは毎日頻繁に使います。(たぶん)

31~360スロットの青以下の装備、カードを分解するマクロ。(スロットの範囲は調整してください)
Ctrlキーを押して実行すると紫以上も分解対象になります。

以下の場合、非常に有用と思います。
・カードの分解(CoAでは頻繁に使うことになる)
・旅商人(Travelling Merchant)を購入しておらず、クエスト消化中にバッグが圧迫される
・生産ルーンが欲しい

Lua
/run UseSkill(1,3);
/wait .2
/run for i=31,360 do local _,_,nm,_,_,rr=GetBagItemInfo (i);if nm~="" then if IsCtrlKeyDown() then InsertGarbageItem(GetBagItemInfo(i));elseif rr<3 then InsertGarbageItem(GetBagItemInfo(i));end;end;end;

戦闘系

バフ消しマクロ

バフをキャンセルするためのマクロです。
(マクロではなくイベント経由で処理した方が断然効率的なので、需要があればアドオン化します)

例えば、
プリーストのアイテムセットスキルにパーティメンバーのヘイト(Aggro)を40%下げる『Frost Scar』(495563)があり、15分バフのためID中だと戦闘中でも掛け直しが入りますが、タンクにとっては邪魔でしかないバフなので当然消す必要があります。

バフ消しのみ

以下の様にすると、
“Frost Scar”のバフを持っていれば消します。

Lua
/run if not nCancelBuff then function nCancelBuff(v) local t=type(v) for i=1,60 do local n,_,_,id=UnitBuff("player",i) if not n then break end if (t=="number" and id==v) or (t=="string" and n==v) then CancelPlayerBuff(i) return true end end end end
/run nCancelBuff(495563)
/run -- nCancelBuff("Frost Scar") -- バフIDでもバフ名でもどちらでもいい。 

nCancelBuff(495563) の様にバフIDを指定しても同様に機能します。(処理の負荷は変わりません)
関数が読み込まれていない場合のみ1行目の処理が走ります。

バフ消しとコンボを一緒に使う

以下の様にすると、
“Frost Scar”のバフを持っていれば消し、持っていなければコンボを実行します。(注意点あり)

Lua
/run if not nCancelBuff then function nCancelBuff(v) local t=type(v) for i=1,60 do local n,_,_,id=UnitBuff("player",i) if not n then break end if (t=="number" and id==v) or (t=="string" and n==v) then CancelPlayerBuff(i) return true end end end end
/run Kitty.attack() -- または Kitty.attack("コンボ名") 
/run nCancelBuff("Frost Scar")

※注意点
通常ダンジョンであれば問題無いと思いますが、
ワールドボスの様に高負荷で処理が遅延する状態だと、他のバフを消し再度消す処理が走るなど、コンボが出づらくなる可能性があります。

その他

ダンジョンリセット(ソロ)

Lua
/run ResetInstanceParty() ExitInstance()

アクションバー複製

全クラスを覚えた場合、最大121パターンのアクションバーが存在します。
それらすべてイチから作る…?さすがにダルいわ、あり得ない…。
ということで、アクションバーを複製するためのマクロです。
サンプルは現在のショートカットに”S/R”で作ったショートカットで被せるマクロです。

Lua
/run local c1,c2="S","R";local function CP_ActionBar(mainClass,subClass) local main,sub;local tblClass={[1]="W",[2]="S",[3]="R",[4]="M",[5]="P",[6]="K",[7]="Wd",[8]="D",[9]="Wl",[10]="Ch",[12]="B",} for key,class in pairs(tblClass) do if mainClass == class then main=key;end;if subClass == class then sub=key;end;end;if main and sub then CopyActionBars(main,sub);end;end;CP_ActionBar(c1,c2)
クラス略字の確認
クラス略字クラス略字クラス略字クラス略字
WarriorWMageMWardenWdChampionCh
ScoutSPriestPDruidDBardB
RogueRKnightKWarlockWl

ペット餌やり&召喚マクロ

ペットを満腹にしてから召喚するマクロです。
既にペットが召喚されている場合はペットをしまいます。
キャラクタ死亡後の再召喚にも便利です。(キャラ死亡⇒親密度-3%、満腹度-30%)

当然ながら、ペットフードが必要になります。

アイコンアイテム名効果補足
Miller’s Special CakeTraining +1
Nourishment +5
Experience +10
満腹度+α
Dessert of HappinessLoyalty +1親密度

ペットウィンドウ1匹目のペット番号は1です。
他のペットを選択したい場合、親密度を変更したい場合は以下の数値を変更してください。

以下は1匹目のペットで親密度を100、満腹を100としたときのマクロです。

Lua
/run local PetNo,Royal,Full=1,100,100 local function PH_Feed(P,F,Q) if Q>0 then for i=1,360 do local _,_,name,c=GetBagItemInfo(i); if name==F then PickupBagItem(GetBagItemInfo(i)); if Q>c then Q=c; end ClickPetFeedItem(); for i=1,Q do FeedPet(P); end ClearPetFeedItem() break; end; end; end; end; if IsPetSummoned(PetNo) then ReturnPet(PetNo) else local L=Royal-GetPetItemAbility(PetNo,"LOYAL") local H=Full-GetPetItemAbility(PetNo,"HUNGER") H=(H-(H)%5)/5 PH_Feed(PetNo,"Dessert of Happiness",L) PH_Feed(PetNo,"Miller's Special Cake",H) SummonPet(PetNo); end 

2匹目のペットを使用し、更に親密度を59に制限したい場合。

Lua
local PetNo,Royal,Full=2,59,100

武器熟練度上げ

CoAではRoMと比較し7種類も多く武器が追加されています。
刀、スピア、銃、吟遊詩人用の4楽器(リュート、ギター、タンバリン、ラトル)
ですが、武器熟練値を上げておかないと攻撃が当たりません。
(吟遊詩人の4武器に関しては熟練度が共通なので、1種類だけ熟練上げすればいいです)

様々なビルドを扱えるようになっているので複数クラスを育てる人は多いと思います。
そうなると、クラスに合った武器の訓練作業は避けて通れません。

CoAでは武器の熟練上げのための訓練所が用意されていて、
運営や他プレイヤーの目を気にしながらどこかでひっそり…そんな気苦労は要りません。

(2025/09/03 マクロ、及び説明文を追加修正)

このマクロはメインハンド、サブハンド、遠距離武器が装備されていれば、それぞれを指定された耐久値で修理を行います。
また、矢・弾丸が指定されていた場合は補充します。

サンプルマクロでは以下の様に動作します
・耐久値が20未満の場合に”Simple Repair Hammer”で修理
・”Runic Thorn” (ルーンソーン)が無くなればセット

Lua
/run local RepDura,RepAmmo,RepTool=20,"Runic Thorn","Simple Repair Hammer" function RepMacro(RepairDura,AmmoName) if RepAmmo~="" and RepAmmo~=nil then local _,_,amm = GetInventoryItemDurable("player", 9) if not amm then  UseItemByName(AmmoName) DEFAULT_CHAT_FRAME:AddMessage("補充しました> "..AmmoName) end end local tg={10,15,16} for _,WeaponID in pairs(tg) do local dura, duraM, nm = GetInventoryItemDurable("player", WeaponID) if nm and dura<RepairDura then UseItemByName(RepTool) PickupEquipmentItem(WeaponID) DEFAULT_CHAT_FRAME:AddMessage("修理しました> "..nm) return end end end RepMacro(RepDura,RepAmmo) Kitty.attack()

マクロの内容を以下のように修正すると
・矢や弾丸の装備状況をチェックしません。
・いずれかの装備が耐久値20未満になれば “Grand Golden Repair Hammer”(耐久値200%)を使用する

Lua
local RepDura,RepAmmo,RepTool=20,nil,"Grand Golden Repair Hammer"

補足ですが、物理攻撃スキルであっても武器熟練度が上がる上がらないがあるようです。
ほとんど調査できていませんが、武器熟練上げで使用するスキルは各々確認してみてください。

今ココ

NPC、ボス、オブジェクトの発見、他プレイヤーに自分の位置を共有したいときに。

Lua
/run local x,y=GetPlayerWorldMapPos(); local z=GetZoneID(); x2,y2=string.sub((x*100+0.005),1,4), string.sub((y*100+0.005),1,4); print('|Hui:WorldMapFrame-zone:'..z..',x:'..x2..',y:'..y2..'|h|cff97B16E['..GetZoneLocalName(z)..': |cffFFFFFF'..x2..', '..y2..'|r]|r|h')

追加・変更履歴

変更日追加マクロ補足
2026/03/29今ココ現在位置を共有したい場合など(NPC、ボスモンスターなどの発見)
2026/03/18バフのキャンセルマクロ(主にタンク用)
2025/11/23ドコでも店売り(NPC Consumables)
ダンジョンリセット(ソロ)
初版

コメント