したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

gearswap スレその1

1つなかん★:2014/06/14(土) 00:16:10 ID:???
gearswapに関する質問、議論、雑談をするスレ

2名無しのWindower使い:2014/06/14(土) 00:32:28 ID:DR2tRBn2
Windowerの、その他の話題はWindowe 10スレに合流でいいのかな。
3系更新されなくなったし

gearswapの話題も、Spellcastスレでも良かったのかもしれないけど
立ったのならこっちでですかね。

3名無しのWindower使い:2014/06/14(土) 00:41:43 ID:Jgmn0/2Q
>1
スレたてありがとうございます!!

>2
スレタイと内容が異なるのは、わかりにくいし混乱の元なので、個人的には別スレ大賛成です

4名無しのWindower使い:2014/06/14(土) 09:41:03 ID:P9QM87Io
gearswapモンクサンプルの事で相談したいです。
現状、WSを撃った後やエンゲージ状態に状態移行した後、sets.TP.Accにしか装備変更しません。
self_commandでモードを変更させるのだろうかと
/console gs c <toggle TP set>等を入力しても状態は変化せず。
状態を変化させるにはどうすればいいでしょうか


sets.aftercast = {}
sets.aftercast.TP = sets.TP.Acc

function self_command(command)
if command == 'toggle TP set' then
if sets.aftercast.TP == sets.TP.DD then
sets.aftercast.TP = sets.TP.Solo
send_command('@input /echo SOLO SET')
elseif sets.aftercast.TP == sets.TP.Solo then
sets.aftercast.TP = sets.TP.DD
send_command('@input /echo DD SET')
end
elseif command == 'DT' then
equip(sets.DT)
end
end

5名無しのWindower使い:2014/06/14(土) 13:32:24 ID:DR2tRBn2
>>4

function aftercast(spell)
  if player.status =='Engaged' then
    equip(sets.aftercast.TP)
  else
    equip(sets.aftercast.Idle)
  end
end
こうなってるみたいだが、sets.aftercast.Idleはどうなってんの?

最終的にどういう動きにしたいか良く分からんけど…
xxxの状況のときにyyyのセットに着替えたいとか書いたほうが良いかと

6名無しのWindower使い:2014/06/14(土) 14:09:46 ID:0CuswN9U
>>4
「toggle TP set」ってコマンドは
sets.TP.DDだったらsets.TP.Soloに切り替えて、 sets.TP.Soloだったらsets.TP.DDに切り替える
ってやってるけど41行目でsets.TP.Accをセットしてるからどちらでもないから何もおこらないって
なってる。

なんでtoggle TP setを使いたいって目的なら
41行目を
sets.aftercast.TP =sets.TP.DD
に直したら動くんじゃないかな。

toggle TP setってコマンドは通常の殴り装備を変更するみたいだけど
(IdleからEngagedに変化したときとか、ws打った後とか)
やりたいことはそういうことでいいのかな。

7名無しのWindower使い:2014/06/14(土) 14:50:43 ID:P9QM87Io
>>5
>>6
ありがとうございます。
現在SpellCast環境から移行中で
ひとまず戦闘時にマルチアタック装備、命中装備、カット装備への切り替えと各装備時のWS装備切り替え
ができるようになれば、とサンプルと格闘しています。

SpellCast時は、各モードの切り替えを//sc s で切り替えながらやっていました。
<group name="Default" default="yes">
<set name="normal">
           マルチアタック装備
</set>
<set name="Victory">
WS装備(マルチアタック時)
</set>

<group name="Acc"inherit="normal">
<set name="normal"basegroup="Default"baseset="normal">
命中装備
</set>
<set name="Victory">
WS装備(命中装備時)</feet>
</set>
</group>

<group name="Cutting"inherit="normal">
<set name="normal"basegroup="Default"baseset="normal">
カット装備
</set>
<set name="Victory">
WS装備(カット時)
</set>
</group>
</sets>
<rules>
<if JSpell="ビクトリースマイト">
<Action type="equip" when="PreCast" set="Victory" />
<Action type="equip" when="AfterCast" set="normal" />
</if>
</rules>

8名無しのWindower使い:2014/06/14(土) 17:15:29 ID:0CuswN9U
>>7
こんなかんじかなあ、で作ってみた。検証してないのでどこかミスってるかもしれないのでそこは直して!
function get_setsの最後に↓を追加
※{}の中の装備リスト〜は自分用に変える
-----ここから------
sets.group ={}
sets.group.default = {}
sets.group.default['TP'] = {装備リストデフォ}
sets.group.default['ビクトリースマイト'] = {装備リストデフォ}
sets.group.default['WS'] = {装備リストデフォ}
sets.group.acc = {}
sets.group.acc['TP'] = {装備リスト命中}
sets.group.acc['ビクトリースマイト'] = {装備リスト命中}
sets.group.default['WS'] = {装備リスト命中}
sets.gropu.cut ={}
sets.group.cut['TP'] = {装備リストカット}
sets.group.cut['ビクトリースマイト'] = {装備リストカット}
sets.group.cut['WS'] = {装備リストカット}
-----ここまで------

precastは以下に変更
-----ここから------
function precast(spell)
  if sets.precast[spell.name] then
    equip(sets.precast[spell.name])
  elseif spell.type=="WeaponSkill" then
    equip(sets.precast.WS)
  elseif string.find(spell.name,'ワルツ') then
    equip(sets.precast.Waltz)
  end
end
-----ここまで------

aftercastとstatus_changeはそのまま

function self_commandは以下に差し替え
--マクロから使う場合は↓のような感じ
--/console gs c default
--/console gs c acc
--/console gs c cut
--それから//sc sの代わりにつかうなら
--//gs equip がつかえるよ(ただし日本語はつかえない)
--//gs equip sets.precast.WS
--//gs equip sets.group.default.TP
-----ここから------
function self_command(command)
  if command == 'default' then
    sets.precast['ビクトリースマイト'] = sets.group.default['ビクトリースマイト']
    sets.precast['WS'] = sets.group.default['WS']
    sets.aftercast['TP'] = sets.group.default['TP']
    send_command(windower.to_shift_jis('@input /echo デフォルトに変更'))
  elseif command == 'acc' then
    sets.precast['ビクトリースマイト'] = sets.group.acc['ビクトリースマイト']
    sets.precast['WS'] = sets.group.acc['WS']
    sets.aftercast['TP'] = sets.group.acc['TP']
    send_command(windower.to_shift_jis('@input /echo 命中装備に変更'))
  elseif command == 'cut' then
    sets.precast['ビクトリースマイト'] = sets.group.acc['ビクトリースマイト']
    sets.precast['WS'] = sets.group.acc['WS']
    sets.aftercast['TP'] = sets.group.acc['TP']
    send_command(windower.to_shift_jis('@input /echo カット装備に変更'))
  elseif command == 'DT' then
    equip(sets.DT)
  end
end
-----ここまで------

9名無しのWindower使い:2014/06/14(土) 19:41:06 ID:V1PaVQUk
質問です。

後衛の時に、抜刀時は武器固定にしたいのですが
gearswapにはspellcastの<main lock="t"/>のような一時的なロック機能はあるのでしょうか?

自分で調べた限りでは、以下のようになって
function status_change(new,old)
   if new == 'Engaged' then
       equip(sets.aftercast.engage)
disable('main','sub')
end
end

これだとメインとサブが納刀後も変更不可の状態になってしまい
いちいち//gs enable main sub と入力して解除しないといけなくて手間がかかります。
何か良い手はないでしょうか?

10名無しのWindower使い:2014/06/14(土) 20:42:40 ID:0CuswN9U
>>8
windower.add_to_chatだけど、日本語は変換必要ないみたい

11名無しのWindower使い:2014/06/14(土) 20:52:18 ID:0CuswN9U
>>9
ナイトのサンプルみたら抜刀時、納刀時に装備変更してるのがあった
こんな感じでいけるんじゃないかな
function status_change(new,old)
  if T{'Idle','Resting'}:contains(new) then
    enable('main','sub')
  elseif new == 'Engaged' then
    equip(sets.aftercast.engage)
    disable('main','sub')
  end
end

12名無しのWindower使い:2014/06/15(日) 03:05:36 ID:V1PaVQUk
>>11
if T{'Idle','Resting'}:contains(new) then
のところにunexpected symbol エラーが出てしまい上手く動きませんでした…

見た限りいけそうな感じはしたんですが!
レスくださってありがとうございました。

13名無しのWindower使い:2014/06/15(日) 08:53:43 ID:0CuswN9U
>>12
↑のってインデントつけるために全角スペースつかってるけど、そのまま貼り付けるとそのエラーになるので
全角スペースは半角スペースかタブに変換してね。

14名無しのWindower使い:2014/06/16(月) 13:49:59 ID:KfjsAWI2
書き方がおかしくてもエラーが親切だからわかりやすいね!
で、苦労の末に書き上がったんだけど着替えないというオチ。
まあ少しずつやってくかね〜

15名無しのWindower使い:2014/06/16(月) 19:51:27 ID:2rQR8QpM
アドオンのPet Fixでペットを帰還させたときに落ちやすいのを治せるのかな?

16名無しのWindower使い:2014/06/17(火) 14:00:20 ID:JU3477fc
Mote-include使ってる人っていますかね?
これのtown.gearって街に入ったら自動で着替えてくれそうだけど、
どうにも動いてくれなくてよくわからない…

17名無しのWindower使い:2014/06/18(水) 06:33:03 ID:0CuswN9U
>>16
つかってないけど、街の中ようの着替えセットを用意しておくと着替えを実行したときに
その着替えセットが使用されるんじゃないかな。
それとこのライブラリが英語前提で書かれてるから、そこを日本語化しないとうごかないんじゃないだろうか。
あとMote-documentation.txtに作者の公開してるドキュメントのURLが書いてあって
そこにジョブごとのサンプルも公開されてるみたいだね。

18名無しのWindower使い:2014/06/20(金) 20:02:27 ID:Jgmn0/2Q
spellcastにあった「コマンドに変数を展開する機能」がgearswapにないのが、移行の最大の壁になってる…
ここで全然話題になってないけど、あの機能ってみんな使ってなかったのかなぁ?

いまはとりあえずaliasで代用する方向で悪戦苦闘してるけど、自前で似たような機能のaddon作った方が早い気がしてたw

19名無しのWindower使い:2014/06/20(金) 20:34:43 ID:4pBxFuvg
納刀、抜刀、ヒーリングで着替えて
precast スペル、アビにあわせて実行前に着替える、
midcast コマンド送信後着替える
aftercast 実行後に着替える
これだけで十分な人が大半ってことですかねぇ

20名無しのWindower使い:2014/06/20(金) 21:39:56 ID:kPcP6RmA
>>13
今日帰って試したらばっちり動きました!
全角スペースのせいだったんですね。

ありがとう!
ありがとうございます!

21名無しのWindower使い:2014/06/20(金) 22:57:19 ID:nUJY9RTI
>>18

変数自体をコマンドにしたいってこと?それともコマンドの引数にしたいってこと?
外部コマンドなら..でつないでできるけど、内部の関数を呼び出すのは大変かもね。
うちでは関数の引数にして関数内で展開したり、テーブルに登録してそこで展開してる。

22名無しのWindower使い:2014/06/23(月) 21:47:14 ID:4pBxFuvg
公式の装備セットマクロ着替え8月めどの開発状況らしいね
オグメに対応してるかどうかでgearswapもいらないこになってしまうのだろうか・・・

23名無しのWindower使い:2014/06/24(火) 00:23:51 ID:DR2tRBn2
>>22

そんな気の利いたもの作るわけがないw

24名無しのWindower使い:2014/06/24(火) 13:46:14 ID:i8W6C2AE
公式がBuffで判別して最適な装備に着替えるぐらいの機能を実装したらそうなるだろな

25名無しのWindower使い:2014/06/25(水) 00:19:45 ID:/u/mvgKE
みなさんself_commandってどのように活用してますでしょうか?
私はモンクの命中装備とマルチアタック装備の切り替えとか、
友人にいきなりWS装備見せてって言われた時用にequipだけ実行する時くらいしか使っていません。
何か便利な使い方があれば教えて欲しいです。

26名無しのWindower使い:2014/06/29(日) 10:15:08 ID:nUJY9RTI
>>25

青とか赤で装備のセットを魔攻重視、殴り重視、ダメージカット何かをセットしてコマンドで切り替えてる。
シチュエーションに合わせて一瞬で着替えられるのが重宝してる。
それからI系魔法を連続で唱えたりにつかってるよ。

それよりwait文に相当するコマンドが無いのが痛いなぁ。

27名無しのWindower使い:2014/06/29(日) 10:31:46 ID:etqBrjAQ
ほー そこで魔法連打する発想はなかったわ〜
こんな感じでやっとるんかな?
while loopflg do
 windower.send_command(windower.to_shift_jis("input /ma ストーン <t>"))
 coroutine.sleep( 4 )
end

28名無しのWindower使い:2014/06/30(月) 14:06:26 ID:6NLBB3Kw
いらんかもしれないけど装備一式の置換操作を簡略にする方法
spellcast のセット一式をgearswapフォーマットに置換する正規表現
検索条件、正規表現チェック
<([\w]*)>([\w\W]*)</([\w]*)>
置換後の書式
\1="\2",

29名無しのWindower使い:2014/07/01(火) 20:54:25 ID:nUJY9RTI
>>27

魔法ごとに詠唱のタイミングを取るのが面倒だったからflag.recastにリキャスト+1秒を代入してループさせてる。
一部だけどこんな感じ。

function ChainSpell(spell)
  ・・(中略)
  elseif spell and flag.recast then
    if os.clock() > flag.recast then
      flag.recast = nil
      --[[if spell.target.distance > spell.range then -- spell.range が正しく動かないのでコメントアウト
        add_to_chat(100,"距離チェック失敗"..spell.range.."/"..spell.target.distance)
cancel_spell()
send_command(windower.to_shift_jis('wait 1;input /ma '..flag.ChainSpell..' <t>'))
end]]
else
cancel_spell()
send_command(windower.to_shift_jis('wait 1;input /ma '..flag.ChainSpell..' <t>'))
end
end

それよりcoroutine.sleep( 4 )ってちゃんと動く?はじめに使った時にエラーで諦めたんだが・・・

30名無しのWindower使い:2014/07/02(水) 00:17:06 ID:ffWRR7lc
ウチでも素で使うとエラーですね。
windowerじゃなくてcoroutineの括りになってる処を見ると、子プロセスの内部でしか使えないとか。
libs\functions.luaで一箇所使われるみたいですが、そっちを見てもそんな感じがします。

31名無しのWindower使い:2014/07/02(水) 15:24:30 ID:yLUk0Ia.
scのときと違って何が書いてあるのかサッパリわからんw

32名無しのWindower使い:2014/07/04(金) 13:42:52 ID:6NLBB3Kw
SCは装備セットの記述を先に書く、ルールに魔法やアビをトリガーにしてプレキャスト→ミッドキャスト→アフターキャストって並びだったけど
GSは先に装備セット記述(アビや魔法ごとに、precast,midcast,aftercastの装備セット記述)

デフォルト装備セットをEquipSet.template、
FC、ステアップ、効果アップ装備をsets.xxx.zzzが装備セットの記述にある{}間は直接装備記述してる
set_combine()でマージしてるやつはSCのName="xxx"のパターンだね
ここは、魔法属性ごとに書式作ったりできるのもSCと同じだと思うけど・・


その下に
function precast(spell)
 spell → アビ、魔法名称が入る
 if分で条件記述して equip(sets.precast.xxx)
end
ミッドキャスト動作(アビの場合は なしでいいとおもう)
 → 魔法をif文で記述して equip(sets.midcast.xxx)
end
アフターキャスト動作
 → アビ、魔法をif文で記述して equip(sets.aftercast.xxx)
end
最後に手動の着替えコマンド記述にしてる感じかな
こんな流れで移植してる
もうちょいApiの参照が見やすい様にHP変えてほしいわ
MyBRD.luaはさらに 楽器ごとの効果時間を計算してTimersに時間を表示するように投げてるようです(スバラ!

33名無しのWindower使い:2014/07/05(土) 10:09:53 ID:ejAT7mM.
>>32
横からだけどありがとう!気を取り直してもう一度がんばってみるわ。

34名無しのWindower使い:2014/07/11(金) 12:05:51 ID:wJnscP06
解説してくださったかた、日本語化してくださったかた。
ありがとうございました!
コピペ移植したら無事動きました。

35名無しのWindower使い:2014/07/21(月) 04:45:31 ID:ApeMDv5E
spellcastはwikiで解説されてたんで複雑なの書けたがこれはなかなか苦戦するな
簡単なのは何とかなるが学者用がむずかしい

36名無しのWindower使い:2014/07/21(月) 19:03:38 ID:lLeRtGaM
学者どこで詰まってる?自分は章の有無判定がダメだ
令狸執鼠の章の場合 buffactive.perpetuance とか buffactive['Perpetuance']
さらにはbuffactive['令狸執鼠の章'] とかやってみたけどダメ

37名無しのWindower使い:2014/07/21(月) 19:16:20 ID:lLeRtGaM
ごめんできたわ 頭にSVブレーサー+2装備しようとしてた\(^o^)/
ちなみにbuffactive.perpetuance と buffactive['Perpetuance'] はやっぱりダメで
buffactive['令狸執鼠の章']でうまくいった

38名無しのWindower使い:2014/07/22(火) 20:09:58 ID:ApeMDv5E
>>36
まさにその章の有無判定とかがまったくです
出来ればファイルをサンプルであげていただければ助かります

39名無しのWindower使い:2014/07/22(火) 21:13:27 ID:0CuswN9U
buffactive['xxxx'] で判定するxxxxの部分って〜windower\res\buffs.luaをみれば書いてあったと思う
それから↓みたいなのでxxxxの部分がログにでるよ。弱体とかも全部でるけど
function buff_change(buff, gain)
windower.add_to_chat(123, buff..tostring(gain))
end

>38
36の人じゃないけど、こんな感じでいけるんじゃないだろうか(全角スペースはタブかスペースに変換してね)
if spell.name == 'スタン' then
 if buffactive['疾風迅雷の章'] then
  equip(sets.precast['スタン'], {feet="PDローファー+1",})
 else
  equip(sets.precast['スタン'])
 end
end

40名無しのWindower使い:2014/07/22(火) 21:59:30 ID:lLeRtGaM
自分も絶賛テスト中なので落ち着いたらファイル上げようかと思う
本体付属のサンプルがそのままじゃ動かないのはちょい不便だよなぁ

>>39
フォローありがとう。そんな感じで動いてる。
とりあえず強化延長する例とか

function midcast(spell)
 if spell.skill == '強化魔法' then
  if buffactive['令狸執鼠の章'] then
   equip({hands="SVブレーサー+2"})
  end
 end
end

41名無しのWindower使い:2014/07/23(水) 00:30:39 ID:0CuswN9U
>>40
サンプルかあ。確かにあったほうがいいよね。
学者は自分も一応動いてるけど、あんまり使い込んでないってレベルだなあ。
もうちょっと使い込んで落ち着いたらアップロードしてみようかな。
あとはギャッラルなしの3曲詩人用とかなら・・って感じかな。需要あるんだろうか

42名無しのWindower使い:2014/07/24(木) 22:27:15 ID:lLeRtGaM
詩人用もきっと需要あるよ
ギャッラル無しからギャッラル有りに変更するのはきっと簡単だし
3曲対応(下地歌を考慮したスクリプト)なら4曲対応もそのまま出来るはず

43名無しのWindower使い:2014/07/26(土) 00:03:19 ID:0CuswN9U
>>42
需要あるかわからないけどアップロードしてみた。

44名無しのWindower使い:2014/07/29(火) 07:30:27 ID:aSQFdgAA
サルベージで装備解除された瞬間自動で装備装着するけどこれ大丈夫?

45名無しのWindower使い:2014/08/01(金) 21:48:27 ID:a1tZX45A
海外だともう何ヶ月も前から使ってるみたいだし平気なんじゃないかな。

46名無しのWindower使い:2014/08/02(土) 20:23:13 ID:lLeRtGaM
>>43
参考になった
ちなみに自分も楽器はFF側のマクロで着替えてる

下地歌は「楽器がダウルかテルパン」で判定するか
self_commandで専用のスクリプト書こうかと思ったけど
結局歌限定にしちゃったほうが使いやすいのかな〜

47名無しのWindower使い:2014/08/06(水) 07:00:28 ID:l8NIT2Qo
>>43
かなり参考になりました。
日本人でここまでやれる人がいるのかと驚きましたw
勉強させていただきます。

48名無しのWindower使い:2014/08/06(水) 20:18:31 ID:0CuswN9U
>>46
いままで下地はピーアンに固定してたのと、歌ごとに楽器変えなきゃいけないくてマクロ
足りないから、固定のままにしてたんだよね。
self_commandを使うなら、歌維持モードと歌維持モード切り替えのコマンド用意して
歌維持モードなら効果アップ楽器装備して、下地モードならダウル・テルパン装備
ってやればマクロも足りるかなあ。

49名無しのWindower使い:2014/08/06(水) 20:21:03 ID:0CuswN9U
>>47
参考にしてもらえたようでなによりですw
日本語のサンプルはまだ少ないから、外人の書いたの参考にするしかなくて
なかなか大変だよね。

50名無しのWindower使い:2014/08/11(月) 19:46:33 ID:Od3tQ2GM
スナップ着替えをGearswapでやろとしていますがうまくいきません。
スナップ着替えだけならできるのですがmidcastで命中着替えをしようとすると
スナップ着替えもしなくなってしまいます。
同じ症状のかたいますか?

51名無しのWindower使い:2014/08/12(火) 01:23:51 ID:0CuswN9U
狩はやってないから、ちゃんと確認できないんだけど、
precastにスナップ着替えを書いて、midcastに命中着替えを書いたら
スナップ着替えが有効な間隔では撃てなかったってことなら
以下のは無視してほしいんだけど

precastとmidcast両方に着替えを書いていると1回しか点滅しないとおもうけどちゃんと
precastとmidcastが実行されてるはずなんでスナップ着替えが有効な間隔で撃ててるか確認してみてほしい。
それから着替えが実行されてるかはチャットから//gs showswapsってコマンドを打つと、ログに着替えの内容
が表示されるはずなんで、これで実行されてるか確認できるよ。

下のスクリプトをつくって遠隔コマンドでprecastとmidcastの着替えが実行されることは確認した
ただしスナップ着替えじゃないんで、スナップ着替えの効果がちゃんと出るのかは未確認。
function get_sets()
  set_language('japanese')
end
function precast(spell)
  windower.add_to_chat(123,'precast')
  equip({head="ブロンズキャップ",})
end
function midcast(spell)
  windower.add_to_chat(123,'midcast')
  equip({hands="ブロンズミトン",})
end
function aftercast(spell)
  windower.add_to_chat(123,'aftercast')
  equip({head=empty,hands=empty,})
end

52名無しのWindower使い:2014/08/12(火) 16:34:53 ID:uqChyJso
Tparty Infobar あたり 死んだね

53名無しのWindower使い:2014/08/12(火) 17:17:59 ID:TjghycYg
Tparty今おちてきた

54名無しのWindower使い:2014/08/12(火) 23:07:03 ID:xeLQhmQI
>>51
レスありがとうございます。
どうやらVUでGSが動かないみたいなのでまた後日確認してみます!

55名無しのWindower使い:2014/08/13(水) 18:06:08 ID:E9MZIaU2
>>51
自分の環境だとアドチャットは動くのですが着替えはできていないような感じでした。
いろいろググってみたのですがこれが関係するのかなと思ったりしました。
ttps://github.com/Byrth/Lua/issues/283
素人でいろいろごちゃごちゃになっているので一度狩用のファイルを移植させてもらって試してみようかなと思います。
レスありがとうございました。

56名無しのWindower使い:2014/08/15(金) 14:21:26 ID:h5UPh//A
試行錯誤でなんとか吟用が出来た。
spellとかのメンバ変数はどこかにヘルプ的なものないかねー

57名無しのWindower使い:2014/08/15(金) 19:00:58 ID:F4s7eHVY
サンプルが入ってるフォルダにファンクションとか変数の一覧が書いてあるエクセルファイルがある

58名無しのWindower使い:2014/08/15(金) 20:35:36 ID:e9QAlFTc
>>57
あざす。調べます。

autocontrolアドイン入れてるとマニューバした時に死ぬんだけど、同じ症状出てる人いますか?

59名無しのWindower使い:2014/08/18(月) 02:48:18 ID:EOmv6NgQ
どなたか赤魔のサンプル上げて下さいませんか?

60名無しのWindower使い:2014/08/18(月) 04:55:21 ID:pno23NnI
公式くらい見ような
チュートリアル
ttp://wiki.windower.net/doku.php?id=addons:gearswap:tutorial:start
リファレンス
ttp://wiki.windower.net/doku.php?id=addons:gearswap:documentation:start
サンプル
ttp://www.bluegartr.com/threads/119444-Gearswap-Shop-Thread
英語は気合で読むんだ

61名無しのWindower使い:2014/08/18(月) 05:22:11 ID:pno23NnI
>>18 亀レスだが、spellcastのvar setって事なら

function var_set (command)
hoge = {}
i = string.find(command, '=')
if i then
key = string.sub(command, 1, (i-1))
val = string.sub(command, (i+1), -1)
if tonumber(val) == nil then
hoge[key] = val
else
hoge[key] = tonumber(val)
end
end
end

こんな感じでやってる
チャットラインから //gs c foo=varで変数登録
一つ目の=で判断してるだけなので、適宜変更するといいかも
共通ファイル作ってincludeしとくと色んなジョブで使えて便利

62名無しのWindower使い:2014/08/18(月) 05:28:55 ID:pno23NnI
ごめん、hoge = {}はget_sets()内に書いてくれ

63名無しのWindower使い:2014/08/18(月) 09:32:48 ID:XUyYpLJg
ついでに他のアドオン/プラグインに変数渡して使ってるとか。AutoexecでEchoにsc変数渡すとか3の頃は結構メジャーでしたよね。
アドオンはどーにでもなるとして、プラグインは程々に面倒そう。

でもそーゆー、scにあってgsに無い機能の話だとscスレか本スレが適当かも。私もですねハイ。比較論だと思えばアリでしょうか?

64名無しのWindower使い:2014/08/28(木) 02:04:51 ID:HC5b6.Qw
>>50
スナップ着替えの件、解決しましたか?

if sets.precast[spell.name] then
equip(sets.precast[spell.name])
end

他アビは問題なく動いているけど、遠隔攻撃が動いていません。
.nameで遠隔攻撃を指定しても動かないんですが、どなたか原因わかりますか?

65名無しのWindower使い:2014/08/28(木) 12:59:32 ID:MAPk3EPg
>>64
spell.name に何が入っているのか確認してから、出直しておいで

66名無しのWindower使い:2014/08/28(木) 22:01:06 ID:nxoNWGmI
>>65
spell.nameには'遠隔攻撃'を指定しています。
事前にspell.typeも指定する必要があったりしますか?

67名無しのWindower使い:2014/08/29(金) 01:10:41 ID:0CuswN9U
>>66
↓みたいなコード書いて遠隔撃ったら着替えなかったっていってるのかな?
function get_sets()
  set_language('japanese')
  sets.precast = {}
  sets.precast['遠隔攻撃'] = {head="ブロンズキャップ",}
end
function precast(spell)
  windower.add_to_chat(123, 'name='..spell.name)
  if sets.precast[spell.name] then
    equip(sets.precast[spell.name])
  end
end
これは当然動かないんだけど、もうちょっと具体的に書いて質問しないと
こいつ全然わかってないなって思われるんじゃないかな。
あとファイル保存するときの漢字コードとかは大丈夫だよね?

もうちょっというと英語のサンプル見た限りじゃ、spell.nameで判定してないし
spell.nameには遠隔攻撃は入ってないな。
spell.action_type == 'Ranged Attack'で判定してた。

68名無しのWindower使い:2014/08/29(金) 11:51:18 ID:O/ZhRfSE
>>64
解決してません。最近狩人やっていないので…
わたしはspell.english='ranged'でやってたけど
>>67さんのいうとおりタイプでやってるひともいるので
こっちで試してみるといいかもですね。
また時間を見て試してみます。
67氏ありがとうございました。

69名無しのWindower使い:2014/08/29(金) 21:12:09 ID:bxZWF8Kw
spell.name == '飛び道具'で自分のは動いてるな

70名無しのWindower使い:2014/08/30(土) 14:30:05 ID:4YYamg.s
>>69

結局>>65のような基本的なこと確認してないからダメなんだろうね
>>67でも突っ込まれてるけど

71名無しのWindower使い:2014/08/31(日) 14:39:41 ID:zKlGjyLk
ぐだぐたうるさいよ。
エスパーしてすぐに答えろよ。
使えるとそんなに偉いのか?

72名無しのWindower使い:2014/08/31(日) 19:04:53 ID:KHWW7mXo
>71 偉いに決まってんだろ。
おまえリアルでも「使えないやつ」って言われてるだろw

73名無しのWindower使い:2014/08/31(日) 21:34:47 ID:NO9fqX.c
リアルで使えないアホほどドヤ顔で空気を悪くするんだよねえw
幼稚すぎて馬鹿馬鹿しい。

74名無しのWindower使い:2014/09/01(月) 00:16:00 ID:zKlGjyLk
痛いなぁ。
ニートは言うことまで痛いなぁ。

75名無しのWindower使い:2014/09/01(月) 23:56:29 ID:iDTSLE0M
ぎりぎり夏休みですね

76名無しのWindower使い:2014/09/09(火) 22:37:59 ID:aSQFdgAA
文字化け
はぁ
明日には直るかな

77名無しのWindower使い:2014/09/10(水) 21:44:08 ID:n0bqyMSc
大分前だけど、GearSwapのサンプルに付属で公開してくれてたcounter_action.lua使ってみた。
ソロメリポしながら、オートで嫌な技にVフラできたり、結構便利に使わせてもらってます。

78名無しのWindower使い:2014/09/13(土) 22:23:30 ID:2zmu17BU
みんなウェイトをはさみたい時ってどうしてる?
send_commandの中にwaitを挟んでいるんだけど、関数中に入れたいときに困ってるんだわ
今は関数をわざわざ分けてself_commandを使ってff11から呼び出しているんだけど、なんかいいアイデアない?

79名無しのWindower使い:2014/09/14(日) 17:56:21 ID:n0bqyMSc
>>78

lua にはその手の機能が無いらしい。
ググった結果、出てきたので自分用メモ

function wait( wait_sec )
local t0 = os.clock()
while os.clock() - t0 <= wait_sec do end
end

80名無しのWindower使い:2014/09/14(日) 19:13:27 ID:2zmu17BU
>>79

やっぱりうまい方法はないんかなぁ・・・
coroutine.sleepも子プロセスの中でしか動かないみたいだし

ちなみにそれやると、FF11自体whileの間止まってたいへんw
# VBのdoeventsに相当するコマンドがあればいいのかな?

81名無しのWindower使い:2014/09/14(日) 20:00:16 ID:9y7KR/a.
確かwaitとlua関数直接コールを続けてチャットラインに投げてたアドオンがどこかにあったんですが、
方法が普通だったかどうかが思い出せない…普通に;区切りで投げて待ちましたっけか。

82名無しのWindower使い:2014/09/14(日) 20:21:35 ID:9y7KR/a.
連投失礼。
それらしいのを見つけました。今の版には入ってないbuffduration(バフ専timers?)でした。
チャットラインは勘違いでした。そういえばコンソールコマンドにもwaitありましたね。それを使っているようです。
書き方古いですが、send_command('wait .1;lua c 自アドオン名 関数名…)みたいな感じですね。今の書き方に変えれば使えると思います。

83名無しのWindower使い:2014/09/14(日) 20:24:23 ID:9y7KR/a.
って今はコレを使ってるって話っすね。連投スレ汚しすいませんでした。 orz

84名無しのWindower使い:2014/09/14(日) 21:17:38 ID:9y7KR/a.
恥のかきついで

無限ループコードでFF11自体が止まってしまう話とcoroutine.sleepが子プロセスの中でしか動かないのが同源だとすれば、
必要最小限だけでも子プロセスに突っ込むしかないのではないでしょうか。

85sage:2014/09/20(土) 13:32:28 ID:fFPUdkA2
>>78
関数のために分けてるの?

local command = "ケアル"
send_command(windower.to_shift_jis('wait 1;input /ma '..command..' <me>'))

分けなくてもいけるかと

8678:2014/09/22(月) 22:23:00 ID:1Txh9fUU
>>85

今読み返したら訳わからん文章だわ

例えばだけど、ケアルしてHPが全開していなければリジェネを使うルーチンを考えると(aftercast使わずにね)
ケアル→キャスト終了までwait→HP=100?→リジェネ
send_commandでケアル送ったあと、次の行のHPの判断までにウェイトを挟めないかなって事なんだけどね

今は
send_command("/ma ケアル <t>;wait 3;gs c HP_handan")
みたいにして関数を分けてるって意味
無駄に行数が増える以外は問題無いんだけどね

87名無しのWindower使い:2014/09/22(月) 23:06:46 ID:n0bqyMSc
>>86

一例として挙げた動作だから、他にもやりたいことあってfunction中のwaitなのかもだが
それなら、ケアルしたときのaftercastでHP判断してリジェネ使わせればいいいんじゃね?

aftercastの時点だとまだHPの増減が反映されてないのかな

88名無しのWindower使い:2014/09/23(火) 01:26:22 ID:9y7KR/a.
オマエガイウナーですがaftercast使わずにって書いてるやん。
でも使わない理由はあった方が検討はしやすいかもですね。

8985:2014/09/23(火) 01:35:22 ID:fFPUdkA2
>>86
その方法が一番かな

他の案を絞り出すと、aftercastで、ダミーのスペル(使わない青魔法など)を詠唱させて、precastで、ダミースペルだったらHPを判定させるようにし、延々ループさせるとかかな

負荷キツそうだけど

90名無しのWindower使い:2014/09/23(火) 03:56:55 ID:n0bqyMSc
>>88
aftercastが実行される時点でまだモーション実行中なので、結局どこかでモーションが終わるのを待たないとダメだね
>>87を自分で試してみたら、waitなしだとリジェネが詠唱できなかった

そうすると結局waitしたいってのが復活してしまうので、>>87は解決になってなかった。すまない

ループでwaitするのは、(おそらく)gearswapがFFのパケットを横取りしてるのでクライアントが固まるからNG
FFのメインループが止まってるんじゃないかな〜
結局、間にWindowerのコマンドでのwaitを挟んで実行するしか手が無いってことになると思う

91名無しのWindower使い:2014/09/23(火) 08:01:21 ID:0CuswN9U
>>86
関数を分けるんじゃなくて、HP_handanの中で全部やってしまうのはどうだろう
↓みたいな感じで
function self_command(command)
  if command == 'start' then
    flag = true
    send_command('gs c loop')
  elseif command == 'stop' then
    flag = false
  elseif command == 'loop' then
    local cmd = nil
    local wait = 1
    if player.hpp < 70 then
      cmd = 'input /ma ケアルIII <me>'
      wait=5
    elseif player.hpp > 70 and player.hpp < 95
     and not buffactive['リジェネ'] then
      cmd = 'input /ma リジェネ <me>'
      wait=6
    end
    if flag then
      if cmd then
        cmd = cmd..';wait '..tostring(wait)..';gs c loop'
      else
        cmd = '@wait 1;gs c loop'
      end
    end
    if cmd then
      send_command(cmd)
    end
  end
end

9278:2014/09/24(水) 00:13:57 ID:Yozmmbbs
みんな、ありがとう

やっぱり、いろいろな場面でウェイトを挟みたいのが出てくるんだよね〜
魔法の後もそうだし、獣の汁とか餌とか、ちょこちょこあるんだよね

>> 91
一つの関数でループをかけるのもいいかも
修正の時にあちこち探さないでいいのは楽かも

いずれにしても致命的ってわけでもないんでいろいろいじってみます

93名無しのWindower使い:2014/09/24(水) 22:46:27 ID:n0bqyMSc
/item ヴェルクの箱 <me>が動かなくて変だと思ったら、GearSwapのせいだった

94名無しのWindower使い:2014/09/25(木) 09:23:07 ID:RiYgz55I
アビセアで箱空けに鍵使うところで/item 禁断の・・・ やってると
GearSwapが 赤字メッセだしまくるの何とかならんだろうか・・・

95名無しのWindower使い:2014/09/25(木) 11:33:39 ID:ikz5VhqM
今、試せないんだけど、
/target <st>
/item アイテム名 <lastst>
で回避出来ないかねぇ?

96名無しのWindower使い:2014/09/25(木) 19:55:26 ID:0CuswN9U
>>94
helper_functions.luaの447行目でエラーがでてるんだけど、
categoryが数値を期待してるのにnilになってるから落ちてるみたい。
↓みたいに落ちる直前でreturnするようにしたらエラーはでなくなった。特に問題はなさそうにみえるけど
なにか副作用があるかもしれない・・・。
if category == nil then
 return
end

>>95
でも回避できるのかな。あとでやってみよう

97名無しのWindower使い:2014/09/25(木) 23:53:16 ID:0CuswN9U
>>95
箱開けはこの方法で回避できるみたいだった

98名無しのWindower使い:2014/09/27(土) 02:09:06 ID:fFPUdkA2
>>86
coroutine.schedule(fn, time)

fn function - Function to be scheduled
time number - Integer time in seconds when fn is supposed to be run
Executes fn delayed by time seconds. Returns the scheduled coroutine.

試してないけど多分使える

指定秒遅らせて、fnで指定した動作を実行させるとある
コルーチンっぽいから固まることもなさそうに思える

99名無しのWindower使い:2014/09/27(土) 08:24:10 ID:0CuswN9U
>>98
つかえた。coroutineは自分も調べたことはあるんだけど、
こういう使い方はできなんだと思い込んでた。ありがとう

↓ので4秒おきにストーン打つようになるし固まったりしないね。
function get_sets()
 set_language('japanese')
end
function _co_f()
 windower.add_to_chat(123,'function() start')
 while flag do
  my_send_command('input /ma ストーン <lastst>')
  windower.add_to_chat(123,'function() 4秒停止')
  coroutine.sleep(4)
 end
 windower.add_to_chat(123,'function() end')
end
function self_command(command)
 if command == 'start' then
  flag = true
  windower.add_to_chat(8,'コルーチンスケジュール開始')
  coroutine.schedule(_co_f, 5)
  windower.add_to_chat(8,'コルーチンスケジュール完了')
 end
 if command == 'stop' then
  flag = false
 end
end
function my_send_command(cmd)
 send_command(windower.to_shift_jis(cmd))
end

100名無しのWindower使い:2014/09/27(土) 16:29:51 ID:fFPUdkA2
キャスト時間で判定させてる箇所がおかしな動作をするな?と思っていたら、 こいつキャスト時間を4倍の値で取得してやがった。
adonのリソースの中身が4倍値になってるから当然なんだが、何故4倍値にする必要があるんだ?




掲示板管理者へ連絡 無料レンタル掲示板