-------- --:-- | カテゴリ:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2015-02-18 17:23 | カテゴリ:AION
ちょりーっす。

昨年8月あたりからずっと休止してたAIONを再開してみた。
鯖統合とかあったみたいで名前も囚人みたいになってたw

最近盛り上がってるPVPイベが面白くなって意外とまじめにやってるかも!
まあ、狩り装備しかもってないからぼっこぼこにやられるんだけどねー
んでも毎回同じ場所にいる同じ強さのMob叩くより「いまゲームやってるぜ!」
って気持ちになってて良い感じ。

Luaでのアドオン開発が面白かったからそのうちWOWでもやろうかしらと思う。
スポンサーサイト
2010-12-17 16:12 | カテゴリ:AION
ちょりーっす。

ちまちまと仕事中に考えていたことを先にアップしときます。


とりあえず単発スキルは次々繰り出せるようになったけど、やはり威力のあるスキルを優先につかっていきたいよね!
というわけで前提が必要なスキルも組み込んでコンボ祭りといきましょう!
※オマエホントにできるんだろうな・・・という突っ込み大歓迎。

前提が必要なスキルはコレ。

【前提が必要なスキル】
  ダブルアタック(ブロウが前提)
  アタックチャンス(ガードブレイクが前提)
  クラッシュソード(アタックチャンスが前提)
  シャープアタック(ガードブレイクが前提)

一番長いのは、「ガードブレイク」→「アタックチャンス」→「クラッシュソード」かな。
「クラッシュソード」はLV50時点でメイン武器の520%という強火力なのでぜひ打ちたい。

「ガードブレイク」→「アタックチャンス」→「シャープアタック」もあるんだけど
「シャープアタック」のレベル上げてないのでこっちは見なかったことにしますw

ちなみに前提といってもスキルを順番に撃てば成立するのではなく、正確には前提スキルを撃つことでmobに付く「デバフ」と「次のスキルが撃てるかどうか」が判断材料になります。
というわけでmobへのデバフも込みで表記するとこんな流れになるのかな。

?スキル「ガードブレイク」

mobのデバフ(アタックチャンス状態)

?スキル「アタックチャンス」

mobのデバフ(弱体化状態)

?スキル「クラッシュソード」


実際に判断する場合は最後の決めワザから順に判断していくのですb
なぜなら!
3段コンボの3段目なんてそうそう撃てるチャンスなんて訪れないのでそのチャンスがあればすかさず撃ちたいからですw

うそうそ。
落ち着いて紙にでも書いてみると「はっ!」と気づくのですが、?の判断を先にすると、撃てる時にはとにかく?とか?を先に撃ってしまい、時間経過と共にmobのデバフが消えたりするので?のスキル判断まで辿りつかないのです。
なので、アドオン上の判断ロジックの作りとしては?→?→?という感じで作っていくイメージなのよねー

こんな感じに書くとわかりやすいかな?

【判断ロジック】
?は撃てる?→(撃てるぜ!)→?撃っちゃえ!

(撃てねえぜ!)

?ならどお?→(いけちゃうよ?)→?いっちゃって!

(ちょっとむりかもー)

?でお願いできる?→(まかせろ!)→?いけええええ!

(むりぽ)

orz※実際には通常攻撃するようにしますw


こうやって判断していくと突然??は撃てるはずがないので最初は?を撃ちこみ、もう一度判断すると?が撃てるようになっていくわけですよ。


実際のロジックはというと。


次回のおたのしみ。



サーセンorz


余談
実はmonWRComboという名前ですでに実戦投入(公開はまだしてまてん!)しており、戦闘用のコンボアドオンとして私自身手放せないものになっています。コンボ以外にも戦闘中だけシージ称号に切り替えたりとかちょこちょこやっとります。
ブログ更新が追いつかないだけなんです。ホントすんません!

もし、「それちょっとよこせ!」とか「そのアドオンがちゃんと動いてるかチェックしてやろう」という奇特な方がいらっしゃいましたら、メッセージ等意思表明いただければお分けいたしますので^w^;



あ、無駄にブログランキングに参加してみましたのでよかったらぽちっとお願いしますw
2010-11-05 01:07 | カテゴリ:AION
ちょりーっす。
さてさて、前回作ったアドオンの説明でもしましょかね。
まずはWRTest.luaの中身

WRTest.lua
-- WRTest
-- アドオンテスト
-- Version 0.2
-- by キャラモン(シーゲル)

-- 起動メッセージ
DEFAULT_CHAT_FRAME:AddMessage("読み込み完了:WRTest v0.2 byもんもん")

function WRTest()

-- 変数定義
-- スキルのクールダウン格納用
local totalCD, remaining = 0,0

-- ブラッディロンド
  totalCD, remaining = GetSkillCooldown(4,12);
  if (remaining==0) then
    UseSkill(4,12)
  end

-- ガードブレイク
  totalCD, remaining = GetSkillCooldown(4,3);
  if (UnitMana("player")>20) and (remaining==0) then
    UseSkill(4,3)
  end

-- ブロウ
  totalCD, remaining = GetSkillCooldown(2,1);
  if (UnitMana("player")>25) and (remaining==0) then
    UseSkill(2,1)
  end

-- ダークネス
  totalCD, remaining = GetSkillCooldown(3,1);
  if (UnitSkill("player")>20) and (remaining==0) then
    UseSkill(3,1)
  end

-- 通常攻撃
  totalCD, remaining = GetSkillCooldown(1,1);
  if (remaining==0) then
    UseSkill(1,1)
  end

end

まずはここ

-- 変数定義
-- スキルのクールダウン格納用
local totalCD, remaining = 0,0

変数定義ってありますが、要は「今からこういう名前の入れ物使うからヨロシク!」って感じです。
totalCD」「remaining」っていう名前の変数をそれぞれ中身は「0」に設定してるのです。


次にここ

-- ブラッディロンド
totalCD, remaining = GetSkillCooldown(4,12);
if (remaining==0) then
UseSkill(4,12)
end

=(イコール)の右側に注目ですが、「GetSkillCooldown(4,12)」ってなっていますが、
こいつは「関数」ってヤツですね。
それをさっき定義した変数「totalCD」「remaining」にそれぞれ入れてるんです。

んで、なにやってるかと言うと。

【関数名】GetSkillCooldown(tab,pos)
【機能】スキルのクールダウンを調べる
【書式】tcd,rcd = GetSkillCooldown(tab,pos)
【引数】tab:スキル窓のtab番号(整数、1?4)
    pos:tab内のスキルの番号(整数、1?)
【戻値】tcd:スキルの総クールダウン(整数)
    rcd:スキルの残クールダウン(整数)

こんな感じです。

この中でも「スキル窓のtab番号」「tab内のスキルの番号」ってのが???だと思います。
これは各々のメイン職やサブ職のスキル取得状況によって並びも変わるのでやっかいですが、
スキル窓のtab番号」で指定する整数は下記の通りです。
1:一般スキル
2:メイン職の一般スキル
3:サブ職の一般スキル
4:メイン職の固有スキル
※5があるらしいけど未確認

tab内のスキル番号」で指定する整数はまさにスキルそのものを指定するので各々で違うと思いますが、 数える順番はタテに数えていきますので下記のようになります。

1  6
7
8
9
10
※2ページ目は11から数えることに注意


日本語にまとめるとこうです。
totalCD,remaining = GetSkillCooldown(4,12)は
「ブラッディロンド(4,12)のクールダウンを調べて「totalCD」に総クールダウン、「remaining」に残クールダウンを入れなさい!」

わ、わかります?w


話は戻って次のの3行。
if (remaining==0) then
   UseSkill(4,12)
end

ここでは if  then  end っていう文に注目です。
条件分岐」ってヤツですな。
if A then B end こんな風に書きますが、もし(if) Aなら Bを 実行しなさい(then)  以上!(end)ってな感じでしょうか。

Aにあたるのが「(remaining==0)」ですね。
さっき取得した「残クールダウン」が0の場合って意味です。

Luaでは同じかどうかを判断する場合には=を2つつなげる約束ですので2つ連続しています。

Bにあたるのが「UseSkill(4,12) 」ですね。
なにやってるのかというと、

【関数名】UseSkill(tab,pos)
【機能】スキルを実行する。
【書式】UseSkill(tab,pos)
【引数】tab:スキル窓のtab番号(整数、1?4)
    pos:tab内のスキルの番号(整数、1?)

こんな感じです。さっきの「GetSkillCooldown」と似ていますのでわかりやすいかと思います。

日本語にまとめてみましょう。
「もしクールダウン(remaining)が「0」だったらブラッディロンド(UseSkill(4,12))を実行しなさい!」

ふー。

つまりこういうことです。

totalCD, remaining = GetSkillCooldown(4,12);
if (remaining==0) then
  UseSkill(4,12)
end

は、

「ブラッディロンド(4,12)のクールダウンを調べて「totalCD」に総クールダウン、「remaining」に残クールダウンを入れなさい!」
「もし(if)クールダウン(remaining)が「0」だったらブラッディロンド(UseSkill(4,12))を実行しなさい(then)以上(end)!」

ということをやっとるわけです。
んで、当然ながらクールダウンが「0」じゃない場合(クールタイム中)だったらここは華麗にスルーされる仕組みなのです。

あと、ダークネスでは(UnitSkill("player")>20)とか、ガードブレイクやブロウでは(UnitMana("player")>20)なんてのがでてきていますが、

「UnitSkill("player")>20」はプレイヤー(自分)のサブクラスのSPが20より多い場合と読みます。
「UnitMana("player")>20)」はプレイヤー(自分)のメインクラスのSPが20より多い場合と読みます。

andでつながっているものは両方の条件がクリアされていないとダメですね。
つまり、スキルがクールタイムではない、且つ撃てるSPがある場合、そのスキルを撃つってな感じです。

並べてある順にその都度調べて撃てるスキルを次々と撃っていってくれます。


ふー、疲れた乙(、ン、)_


あ、撃つためにはこのアドオンを呼び出す必要があるのですが、それはマクロから呼び出すわけです。

マクロには1行だけ。

/run WRTest()
これをショートカットに設定してマウスでぽちぽちとかすると、ひたすらスキルを連打してくれます。

今日はここまで!
2010-10-30 11:57 | カテゴリ:AION
ちょりーっす。

前回からちっと時間が空いちゃった。
やる気はあるのよ?

さあて、作るか!
と、その前に。

まずはW/R(両手剣持ち)のダメージソースを整理しましょか。
※尻込みしてるわけではありません!何事も計画が大事b

んでwikiやらスキルウィンドウ眺めながら整理すると、
ざっとこんな感じ。

【単発発動可能スキル】
  ダークネス
  ブロウ
  ガードブレイク
  ブラッディロンド

【前提が必要なスキル】
  ダブルアタック(ブロウが前提)
  アタックチャンス(ガードブレイクが前提)
  クラッシュソード(アタックチャンスが前提)
  シャープアタック(ガードブレイクが前提)

【範囲スキル】
  ローリング
  ムーンスラッシュ
  セビアーウインド

【自己バフ】
  バーサク
  バーサクアタック
  コレクトハーツ
  アタックオーラ
  ブレイブバースト

【補助スキル】
  フィアーフル(エリートまで)
  フェイク(通常攻撃が回避された時に発動可)
  メンタルシャウト(詠唱妨害)
  スタッブ(盲目)

【その他】
  サバイバルオーラ



ふむ。

とりあえず単発発動可能スキルを次々繰り出してみようかのう。
この中では「ブラッディロンド」が優秀なのでクールタイム毎に
間髪入れずに使っていきたいね。

というわけで優先順位はこんな感じ。

【優先度1】ブラッディロンド
       発動条件
       1.クールタイム中ではない場合

【優先度2】ガードブレイク
       発動条件
       1.テンションが20以上ある場合
       2.クールタイム中ではない場合

【優先度3】ブロウ
       発動条件
       1.テンションが25以上ある場合
       2.クールタイム中ではない場合

【優先度4】ダークネス
       発動条件
       1.ローグSPが20以上ある場合
       2.クールタイム中ではない場合


そんで作ったWRTest.luaの中身はこんな感じ


WRTest.lua
-- WRTest
-- アドオンテスト
-- Version 0.2
-- by キャラモン(シーゲル)

-- 起動メッセージ
DEFAULT_CHAT_FRAME:AddMessage("読み込み完了:WRTest v0.2 byもんもん")

function WRTest()

-- 変数定義
-- スキルのクールダウン格納用
local totalCD, remaining = 0,0

-- ブラッディロンド
  totalCD, remaining = GetSkillCooldown(4,12);
  if (remaining==0) then
    UseSkill(4,12)
  end

-- ガードブレイク
  totalCD, remaining = GetSkillCooldown(4,3);
  if (UnitMana("player")>20) and (remaining==0) then
    UseSkill(4,3)
  end

-- ブロウ
  totalCD, remaining = GetSkillCooldown(2,1);
  if (UnitMana("player")>25) and (remaining==0) then
    UseSkill(2,1)
  end

-- ダークネス
  totalCD, remaining = GetSkillCooldown(3,1);
  if (UnitSkill("player")>20) and (remaining==0) then
    UseSkill(3,1)
  end

-- 通常攻撃
  totalCD, remaining = GetSkillCooldown(1,1);
  if (remaining==0) then
    UseSkill(1,1)
  end

end


中身の説明は次回!
だってちょっち疲れたよママン・・・
2010-10-19 18:57 | カテゴリ:AION
さてさて。

まずは作るアドオンのフォルダを作成しましょ。

...\Interface\AddOns\WRTest
※WRcomboとしないのは決意の弱さとはかんけーありませんw
「...」の部分は各自のミスティックストーンのフォルダに読み替えてちょ。


今後、WRTestフォルダに作成したファイルを格納します。

んで、アドオン動かすためには2つのファイルが必須だそうな。

?拡張子が「.lua」っていうプログラム本体
?拡張子が「.toc」っていう目次(のようなもの)

というわけでこんな内容で作ってみた。

WRTest.toc の中身
## Title: WRTest
## Version: 0.1
## Notes: テスト
## Author: キャラモン(シーゲル)

WRTest.lua



WRTest.lua の中身
-- WRTest
-- アドオンテスト
-- Version 0.1
-- by キャラモン(シーゲル)

-- 起動メッセージ
DEFAULT_CHAT_FRAME:AddMessage("読み込み完了:WRTest v0.1 byもんもん")



と。
すでに稼働中のアドオンフォルダにファイルを作ったので
内容を有効にするためにアドオンリロード。

/script ReloadUI() っていうマクロを実行するとアドオンを再読み込みしてくれるのよb
※リログっぽい画面になりますがリログとは違います。イベント等でリログの必要がある時は
きっちりリログしましょう。

するとチャットフレームには黄色い文字で
読み込み完了:WRTest v0.1 byもんもんの文字がっ!!

ふるふると感動しながら今日はこのへんで。。。乙(、ン、)ノシ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。