魔道剣士のMote-libsコードです。
目次
ソースコード
Mote-libsでは、ジョブロジック部分(ジョブ名.lua)と装備セット部分(ジョブ名_gear.lua)を切り分けていますので、次のような階層構造になっています。
GearSwap/
└ data/
├ RUN.lua
└ キャラクター名/
└RUN_gear.lua
GearSwap\libsによしザウルスさんが日本語対応してくれているMote-libsを設置してください。
ジョブロジック
function get_sets()
mote_include_version = 2
include('Mote-Include.lua')
set_language('japanese')
end
function job_setup()
include('Mote-TreasureHunter')
end
function user_setup()
state.Buff['エンボルド'] = buffactive['エンボルド'] or false
state.Weapons = M{'Epeolatry'}
state.OffenseMode:options('Normal','Parry')
state.IdleMode:options('Normal','Refresh')
send_command('wait 5; gs c set IdleMode Normal; gs c lockstyleset')
send_command('input /si item;')
state.RuneText = M(false, 'ルーン')
end
function user_unload()
text_destroy()
end
function job_post_pretarget(spell, action, spellMap, eventArgs)
equip(sets.Hpboost)
end
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.skill == '強化魔法' then
if state.Buff['エンボルド'] then
equip(sets.buff['エンボルド'])
end
end
end
function job_midcast(spell, action, spellMap, eventArgs)
local fc=59/100
if string.find(spell.type, 'Magic') then
equip(sets.midcast.interruption)
local adjust=0.6
local cast_time = (spell.cast_time*(1-fc))*adjust
if spell.name == 'フラッシュ' or
spell.name == 'スタン' or
spell.name == 'ポイゾガ' or
spell.name == 'フォイル' or
spell.name == 'アブゾタック' or
spell.type == 'BlueMagic' or
spellMap == 'Banish' then
eventArgs.handled = true
send_command('wait '..cast_time..'; gs equip sets.Enmity')
elseif spellMap == 'Cure' then
eventArgs.handled = true
send_command('wait '..cast_time..'; gs equip sets.midcast.Cure')
elseif spellMap == 'Phalanx' then
eventArgs.handled = true
send_command('wait '..cast_time..'; gs equip sets.midcast.Phalanx')
elseif spellMap == 'Stoneskin' then
eventArgs.handled = true
send_command('wait '..cast_time..'; gs equip sets.midcast.Stoneskin')
elseif spellMap == 'Regen' then
eventArgs.handled = true
send_command('wait '..cast_time..'; gs equip sets.midcast.Regen')
end
end
end
function job_buff_change(buff, gain)
if buff == 'ファランクス' and not gain then
windower.add_to_chat(167,'■■■■■ファランクス切れ■■■■■')
elseif buff == 'バットゥタ' and gain then
send_command('gs c set OffenseMode Parry')
elseif buff == 'バットゥタ' and not gain then
send_command('gs c set OffenseMode Normal')
end
end
function customize_idle_set(idleSet)
local weapon = sets.Weapons[state.Weapons.value]
idleSet = set_combine(idleSet, weapon)
return idleSet
end
function customize_melee_set(meleeSet)
local weapon = sets.Weapons[state.Weapons.value]
meleeSet = set_combine(meleeSet, weapon)
return meleeSet
end
function job_self_command(cmdParams, eventArgs)
if cmdParams[1] == 'lockstyleset' then
send_command('input /lockstyleset '..lockstyleset)
elseif cmdParams[1] == 'Idle' then
if player.status == 'Idle'then
equip(get_idle_set())
else
equip(get_melee_set())
end
elseif cmdParams[1] == 'Enmity' then
local spell_recasts = windower.ffxi.get_spell_recasts()
local recast_time_Flash = spell_recasts[112]/60
local recast_time_BlankGaze = spell_recasts[592]/60
local recast_time_Jettatura = spell_recasts[575]/60
local recast_time_Stun = spell_recasts[252]/60
local ability_recasts = windower.ffxi.get_ability_recasts()
local recast_time_Provoke = spell_recasts[5]/60
if recast_time_Flash == 0 then
send_command('input /ma '..windower.to_shift_jis('フラッシュ')..' <stnpc>')
elseif player.sub_job == '青' and recast_time_Jettatura == 0 then
send_command('input /ma '..windower.to_shift_jis('ジェタチュラ')..' <stnpc>')--0.5
elseif player.sub_job == '青' and recast_time_BlankGaze == 0 then
send_command('input /ma '..windower.to_shift_jis('ブランクゲイズ')..' <stnpc>')--3
elseif player.sub_job == '戦' and recast_time_Provoke == 0 then
send_command('input /ja '..windower.to_shift_jis('挑発')..' <stnpc>')
elseif player.sub_job == '暗' and recast_time_Stun == 0 then
send_command('input /ma '..windower.to_shift_jis('スタン')..' <stnpc>')
end
elseif cmdParams[1] == 'EnmityRange' then
local spell_recasts = windower.ffxi.get_spell_recasts()
local recast_time_FrightfulRoar = spell_recasts[561]/60
local recast_time_Soporific = spell_recasts[598]/60
local recast_time_SheepSong = spell_recasts[584]/60
local recast_time_GeistWall = spell_recasts[605]/60
local recast_time_Stinking = spell_recasts[537]/60
local recast_time_Poisonga = spell_recasts[225]/60
-- if player.sub_job == '青' and recast_time_FrightfulRoar == 0 then
-- send_command('input /ma '..windower.to_shift_jis('フライトフルロア')..' <stnpc>')--2
if player.sub_job == '青' and recast_time_GeistWall == 0 then
send_command('input /ma '..windower.to_shift_jis('ガイストウォール')..' <stnpc>')--3
elseif player.sub_job == '青' and recast_time_Stinking == 0 then
send_command('input /ma '..windower.to_shift_jis('スティンキングガス')..' <stnpc>')--4
elseif player.sub_job == '青' and recast_time_Soporific == 0 then
send_command('input /ma '..windower.to_shift_jis('サペリフィック')..' <stnpc>')--3
elseif player.sub_job == '青' and recast_time_SheepSong == 0 then
send_command('input /ma '..windower.to_shift_jis('シープソ\\ング')..' <stnpc>')--3
elseif player.sub_job == '暗' and recast_time_Poisonga == 0 then
send_command('input /ma '..windower.to_shift_jis('ポイゾガ')..' <stnpc>')--3
end
elseif cmdParams[1] =='RuneText' then
if state.RuneText.value then
showText()
else
hideText()
end
end
end
local texts = require('texts')
message={
[1] = {name='イグニス ', desc1='火:',desc2='(氷:',desc3='麻痺、バインド)'},
[2] = {name='ゲールス ', desc1='氷:',desc2='(風:',desc3='静寂、ヘヴィ)'},
[3] = {name='フラブラ ', desc1='風:',desc2='(土:',desc3='石化、テラー、スロウ)'},
[4] = {name='テッルス ', desc1='土:',desc2='(雷:',desc3='スタン)'},
[5] = {name='スルポール', desc1='雷:',desc2='(水:',desc3='毒)'},
[6] = {name='ウンダ ', desc1='水:',desc2='(火:',desc3='病気、悪疫、アムネジア)'},
[7] = {name='ルックス ', desc1='光:',desc2='(闇:',desc3='呪い、睡眠)'},
[8] = {name='テネブレイ', desc1='闇:',desc2='(光:',desc3='魅了、睡眠)'},
}
text_box = texts.new('${text}',{text={font='Meiryo', size=10}, pos={x=10, y=250}, padding = 5, bg={alpha=180}})
text_box.text='属性 耐性\n'..
'\\cs(255,128,128)'..message[1].desc1..message[1].name..message[1].desc2..message[1].desc3..'\\cr'..'\n'..
'\\cs(128,255,255)'..message[2].desc1..message[2].name..message[2].desc2..message[2].desc3..'\\cr'..'\n'..
'\\cs(128,255,128)'..message[3].desc1..message[3].name..message[3].desc2..message[3].desc3..'\\cr'..'\n'..
'\\cs(255,255,128)'..message[4].desc1..message[4].name..message[4].desc2..message[4].desc3..'\\cr'..'\n'..
'\\cs(255,128,255)'..message[5].desc1..message[5].name..message[5].desc2..message[5].desc3..'\\cr'..'\n'..
'\\cs(128,128,255)'..message[6].desc1..message[6].name..message[6].desc2..message[6].desc3..'\\cr'..'\n'..
'\\cs(255,255,255)'..message[7].desc1..message[7].name..message[7].desc2..message[7].desc3..'\\cr'..'\n'..
'\\cs(128,128,128)'..message[8].desc1..message[8].name..message[8].desc2..message[8].desc3..'\\cr'
function showText()
text_box:show()
end
function hideText()
text_box:hide()
end
function text_destroy()
text_box:destroy()
end
装備セット
function init_gear_sets()
lockstyleset = 101
sets.buff['エンボルド'] = {back="ディバートケープ"}
sets.Weapons = {}
sets.Weapons.Epeolatry = { main={name="真・斬鉄剣"},sub={name="コーンスー"}}
sets.Hpboost={
neck={name="アンムーヴカラー+1",priority=12},
waist={name="プラチナモグベルト",priority=15},
left_ring={name="月明の指輪",priority=14},
back={name="月明の羽衣",priority=13},
}
sets.Enmity = {
ammo="サピエンスオーブ",
head="ハリタスヘルム",
body="エメットハーネス+1",
hands="クーリスグローブ",
legs="ERレグガード+3",
feet="ERグリーヴ+3",
neck="月光の首飾り",
waist={name="プラチナモグベルト",priority=15},
left_ear="無知の耳",
right_ear="クリプティクピアス",
left_ring="アイワツリング",
right_ring="守りの指輪",
back={ name="オーグマケープ", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Enmity+10','Damage taken-5%',}},
}
sets.engaged = {
ammo="ストンチタスラム+1",
head="ERガレア+3",
body="RNコート+3",
hands="ERガントレ+3",
legs="ERレグガード+3",
feet="ERグリーヴ+3",
neck={ name="フサルクトルク+2", augments={'Path: A',}},
waist="無の腰当",
left_ear="シェリダピアス",
right_ear={ name="エリラズピアス+1", augments={'System: 1 ID: 1676 Val: 0','Accuracy+12','Mag. Acc.+12','Damage taken-4%',}},
left_ring="月明の指輪",
right_ring="フォテファイリング",
back="無の外装",
}
sets.engaged.Parry=set_combine(sets.engaged,{ hands="トゥルムミトン+1",feet="トゥルムレギンス+1",})
sets.idle = {
ammo="ストンチタスラム+1",
head="ERガレア+3",
body="RNコート+3",
hands="ERガントレ+3",
legs="ERレグガード+3",
feet="ERグリーヴ+3",
neck={ name="フサルクトルク+2", augments={'Path: A',},priority=12},
waist="無の腰当",
left_ear="ハーティーピアス",
right_ear={ name="エリラズピアス+1", augments={'System: 1 ID: 1676 Val: 0','Accuracy+12','Mag. Acc.+12','Damage taken-4%',}},
left_ring={name="月明の指輪",priority=14},
right_ring="シュネデックリング",
back="無の外装",
}
sets.idle.Refresh = set_combine(sets.idle, {
ammo="ストンチタスラム+1",
head="無の面",
body="RNコート+3",
hands={ name="ヘルクリアグローブ", augments={'Spell interruption rate down -6%','Attack+5','"Refresh"+2','Accuracy+8 Attack+8',}},
legs={ name="ヘルクリアトラウザ", augments={'Pet: VIT+10','"Subtle Blow"+10','"Refresh"+2','Accuracy+8 Attack+8',}},
feet={ name="ヘルクリアブーツ", augments={'"Mag.Atk.Bns."+17','STR+9','"Refresh"+2',}},
neck="シビルスカーフ",
})
--
-- ■■■■■ precast ■■■■■
--
sets.precast.JA['E.スフォルツォ'] = set_combine(sets.Enmity,{body="FUコート+3"})
sets.precast.JA['イグニス'] = set_combine(sets.Enmity,{})
sets.precast.JA['ゲールス'] = set_combine(sets.Enmity,{})
sets.precast.JA['フラブラ'] = set_combine(sets.Enmity,{})
sets.precast.JA['テッルス'] = set_combine(sets.Enmity,{})
sets.precast.JA['スルポール'] = set_combine(sets.Enmity,{})
sets.precast.JA['ウンダ'] = set_combine(sets.Enmity,{})
sets.precast.JA['ルックス'] = set_combine(sets.Enmity,{})
sets.precast.JA['テネブレイ'] = set_combine(sets.Enmity,{})
sets.precast.JA['ヴァレション'] = set_combine(sets.Enmity,{body="RNコート+3"})
sets.precast.JA['フルーグ'] = set_combine(sets.Enmity,{feet="RNブーツ+2"})
sets.precast.JA['ヴァリエンス'] = set_combine(sets.Enmity,{body="RNコート+3"})
sets.precast.JA['バットゥタ'] = set_combine(sets.Enmity,{head="FUバンド+3"})
sets.precast.JA['ソードプレイ'] = set_combine(sets.Enmity,{hands="FUミトン+3"})
sets.precast.JA['ランジ'] = set_combine(sets.Enmity,{})
sets.precast.JA['スワイプ'] = set_combine(sets.Enmity,{})
sets.precast.JA['ガンビット'] = set_combine(sets.Enmity,{hands="RNミトン+3"})
sets.precast.JA['レイク'] = set_combine(sets.Enmity,{feet="FUブーツ+3"})
sets.precast.JA['エンボルド'] = set_combine(sets.Enmity,{})
sets.precast.JA['ワンフォアオール'] = set_combine(sets.Enmity,{})
sets.precast.JA['リエモン'] = set_combine(sets.Enmity,{})
sets.precast.JA['インスパイア'] = set_combine(sets.Enmity,{legs="FUトラウザ+3"})
sets.precast.JA['ビベイシャス'] = set_combine(sets.Enmity,{head="ERガレア+3",legs="RNトラウザ+2",neck="インカンタートルク",left_ring="スティキニリング+1",right_ring="スティキニリング+1"})
sets.precast.JA['インクァルタタ'] = set_combine(sets.Enmity,{legs="ERレグガード+3"})
sets.precast.JA['オディリックサブタ'] = set_combine(sets.Enmity,{})
sets.precast.FC = {
ammo="サピエンスオーブ",
head="RNバンド+3",
body="ERサーコート+3",
hands="レイライングローブ",
legs="ニャメフランチャ",
feet="ニャメソルレット",
neck="オルンミラトルク",
waist={name="プラチナモグベルト",priority=15},
left_ear="エンチャンピアス+1",
right_ear="エテオレートピアス",
left_ring={name="月明の指輪",priority=14},
right_ring="メダダリング",
back={ name="オーグマケープ", augments={'HP+60','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10','Damage taken-5%',},priority=13},
}
sets.precast.WS.Critical = {
}
sets.precast.WS.Damage = {
ammo="オシャシャの原論文",
head="ERガレア+3",
body="ERサーコート+3",
hands="ERガントレ+3",
legs="ERレグガード+3",
feet="ERグリーヴ+3",
neck="無の喉輪",
waist="無の腰当",
left_ear="オドルピアス",
right_ear={ name="エリラズピアス+1", augments={'System: 1 ID: 1676 Val: 0','Accuracy+12','Mag. Acc.+12','Damage taken-4%',}},
left_ring="イラブラットリング",
right_ring="王将の指輪",
back={ name="オーグマケープ", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Enmity+10','Damage taken-5%',}},
}
sets.precast.WS.Magic = {
ammo="コイストボダー",
head="ニャメヘルム",
body="ニャメメイル",
hands="ニャメガントレ",
legs="ニャメフランチャ",
feet="ニャメソルレット",
neck="シビルスカーフ",
waist={ name="セールフィベルト+1", augments={'Path: A',}},
left_ear={ name="胡蝶のイヤリング", augments={'Accuracy+4','TP Bonus +250',}},
right_ear="フリオミシピアス",
left_ring={ name="メタモルリング+1", augments={'Path: A',}},
right_ring="メダダリング",
}
sets.precast.WS['ハードスラッシュ'] = sets.precast.WS.Damage
sets.precast.WS['パワースラッシュ'] = sets.precast.WS.Damage
sets.precast.WS['フロストバイト'] = sets.precast.WS.Magic
sets.precast.WS['フリーズバイト'] = sets.precast.WS.Magic
sets.precast.WS['ショックウェーブ'] = sets.precast.WS.Damage
sets.precast.WS['クレセントムーン'] = sets.precast.WS.Damage
sets.precast.WS['シックルムーン'] = sets.precast.WS.Damage
sets.precast.WS['スピンスラッシュ'] = sets.precast.WS.Damage
sets.precast.WS['グラウンドストライク'] = sets.precast.WS.Damage
sets.precast.WS['ヘラクレススラッシュ'] = sets.precast.WS.Magic
sets.precast.WS['レゾルーション'] = sets.precast.WS.Damage
sets.precast.WS['デミディエーション'] = sets.precast.WS.Damage
sets.precast.WS['フィンブルヴェト'] = sets.precast.WS.Damage
--
-- ■■■■■ midcast ■■■■■
--
sets.midcast.interruption = {
ammo="ストンチタスラム+1",
head="ERガレア+3",
body="アダマンアーマー",
hands={ name="ローハイドグローブ", augments={'HP+50','Accuracy+15','Evasion+20',}},
legs={ name="カマインクウィス+1", augments={'HP+80','STR+12','INT+12',},priority=3},
feet="ERグリーヴ+3",
neck="月光の首飾り",
waist="オドンブラサッシュ",
left_ear="磁界の耳",
right_ear={ name="エリラズピアス+1", augments={'System: 1 ID: 1676 Val: 0','Accuracy+12','Mag. Acc.+12','Damage taken-4%',}},
left_ring={name="月明の指輪",priority=14},
right_ring="守りの指輪",
back={ name="オーグマケープ", augments={'HP+60','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10','Damage taken-5%',},priority=13},
}
sets.midcast.EnhancingMagic = {
ammo="ストンチタスラム+1",
head="ERガレア+3",
body="アダマンアーマー",
hands="ニャメガントレ",
legs={ name="FUトラウザ+3", augments={'Enhances "Inspire" effect',}},
feet="ニャメソルレット",
neck="サクロゴルゲット",
waist="スローダベルト",
left_ear="ミミルピアス",
right_ear={ name="エリラズピアス+1", augments={'System: 1 ID: 1676 Val: 0','Accuracy+12','Mag. Acc.+12','Damage taken-4%',}},
left_ring={name="月明の指輪",priority=14},
right_ring="守りの指輪",
back={name="月明の羽衣",priority=13},
}
sets.midcast.Stoneskin= set_combine(sets.midcast.Enhancing ,{
body="アダマンアーマー",
hands="ストーンマフラ",
legs="ヘイヴンホーズ",
neck="ストーンゴルゲット",
waist="ジーゲルサッシュ",
left_ear="アースクライピアス",
back={name="月明の羽衣",priority=13},
})
sets.midcast.Phalanx = {
ammo="ストンチタスラム+1",
head={ name="FUバンド+3", augments={'Enhances "Battuta" effect',}},
body={ name="ヘルクリアベスト", augments={'STR+10','Pet: STR+9','Phalanx +5','Mag. Acc.+3 "Mag.Atk.Bns."+3',}},
hands={ name="ヘルクリアグローブ", augments={'Magic Damage +1','Crit. hit damage +3%','Phalanx +4','Accuracy+10 Attack+10','Mag. Acc.+20 "Mag.Atk.Bns."+20',}},
legs={ name="ヘルクリアトラウザ", augments={'AGI+8','Attack+7','Phalanx +4','Accuracy+1 Attack+1','Mag. Acc.+2 "Mag.Atk.Bns."+2',}},
feet={ name="ヘルクリアブーツ", augments={'Weapon skill damage +2%','"Fast Cast"+3','Phalanx +5','Accuracy+16 Attack+16',}},
neck="インカンタートルク",
waist={name="プラチナモグベルト",priority=15},
left_ear="ミミルピアス",
right_ear={ name="エリラズピアス+1", augments={'System: 1 ID: 1676 Val: 0','Accuracy+12','Mag. Acc.+12','Damage taken-4%',}},
left_ring="月明の指輪",
right_ring="守りの指輪",
back={ name="ディバートケープ", augments={'Enmity+1','"Embolden"+15','"Dbl.Atk."+3',}},
}
sets.midcast.Regen = set_combine(sets.midcast['強化魔法'],{head="RNバンド+3",body="FUコート+3",neck="サクロゴルゲット",waist="スローダベルト"})
sets.midcast.Cure = sets.Enmity
end
コメント
コメント一覧 (5件)
自分で試せてないので申し訳ないですが
ロジック
13 state.Buff[“エンボルド”] = buffactive[“エンボルド”] or false → ’エンボルト’
ギア
69-94 装備は ’’ → ”” じゃ無くても動きますか?
ダブルクォーテーションとシングルクォーテーションが統一されていないけど動くのか?
ということですね?
システム的には問題ありません。
普通に動きます。
ただ、あちこちからコピペして作っているため、混在した状態になっていてすっきりしない書き方になっています。
どちらかで統一した方がよさそうなので、全コードチェックしておきます。
そうなんですね、自分で組むとき気にしてたんですっきりしました。
ありがとうございます
98行目 sets.precast.JA[‘スライトソード’] = set_combine(sets.Enmity,{hands=”FUミトン+3″})
ですが、[‘スライトソード’]はジョブ特性ですので、
正しくは、
90行目 sets.precast.JA[‘ソードプレイ’] = set_combine(sets.Enmity,{})
↓
90行目 sets.precast.JA[‘ソードプレイ’] = set_combine(sets.Enmity,{hands=”FUミトン+3″})
かと思われます。
ご指摘ありがとうございます。
魔道剣士は、不慣れなものでして・・・
用語辞典を参考に作ったので、理解できておりませんでした。
誤り部分を修正して反映しました。
また何か待ち該当あれば教えてください!