2010年11月
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
◎ カテゴリーリスト
1. サイトについて [1]
2. UO日記 [171]
3. UO研究 [2]
4. カジノクラブ [29]
5. MHF日記 [10]
6. RO日記 [314]
7. RO研究 [6]
8. ツール [3]
8.0. UOES [6]
8.1. AFカウンター [1]
8.2. BODマネージャ [1]
8.3. UOBrowser2 [3]
8.4. UOLink2 [14]
8.5. UOTextViewer [1]
8.6. 踊り多毛 [1]


◎ サイト内の検索


2007年06月13日

UOLink2 開発者向け情報

UOLink2と外部ツールの連携仕様を記述します。


UOBInterfaceは、UOLinkが外部連携アプリ用に用意しているインタフェースです。


◎利用方法
 アプリからまず、UOLinkにログイン要求を出します。
 命令をコマンド形式でUOLinkに発行し、リプライを受け取ります。
 アプリ終了時にはUOLinkにログアウトを発行してください。


◎利用条件
 本機能の利用に条件はありませんが、使用されたツールを公開される場合にはご一報ください。


◎サンプルプログラム
 UOBInterfaceと、UOA連携(UOAInterface)を確認することができます。
 開発環境はBorlandC++Builder ver.5.0 です。
 (内容は薄いためC++の知識があれば読めると思います)
 InterfaceTest.lzh
 
 ※ VB用のサンプルプログラムを、ななしん様が作成されています。
 VBで開発されている方は参項にどうぞ。
  「うおあかのページ」/ ななしん様


基本

ウィンドウ検索
 HWND hUOLinkWnd = FindWindow( "TUOLink", NULL );

■ App → UOLink

◎ログイン要求
 WM_USER + 600

◎ログアウト要求
 WM_USER + 601

◎コマンド
 WM_USER + 602


■ UOLink → App

◎ログイン応答
 WM_USER + 600

◎コマンド応答
 WM_USER + 602

◎Binaryメッセージ
 WM_USER + 603

ログイン要求
方向:App→UOLink
MessageID:WM_USER + 600
WParam:ApplicationのWindowハンドル
LParam:なし

ログイン応答
方向:UOLink→App
MessageID:WM_USER + 600
WParam:結果
 0:OK
 1:NG
LParam:NG時のエラーコード

ログアウト要求
方向:App→UOLink
MessageID:WM_USER + 601
WParam:Windowハンドル
LParam:なし

コマンド発行
方向:App→UOLink
MessageID:WM_USER + 602
WParam:Windowハンドル
LParam:1文字分のデータ('a'とか)
 "WaitForOpenContainer"を実行する場合は
 'W','F','O','C','\0'
 をWM_USER + 602でUOLinkに送信する。
 必ず終端に\0をつけなければならない。


コマンド応答(テキスト/非定期あり)
方向:UOLink→App
MessageID:WM_USER + 602
WParam:\0終端の文字列を1文字ずつ送信する
LParam:コマンド応答の種別
 非定期レスポンスを持つコマンドを使用する際にチェックすること。
 0:一般応答
 1:WaitForOpenContainer
 2:WatchingMyBackpack
 3:WaitForLoginStatus
 4:WaitForOpenBook
 5:WatchingSkills

非定期メッセージ(バイナリ)
方向:UOLink->App
MessageID:WM_USER + 603
WParam:0=送信開始、1=送信中、2=終了
LParam:WParamが1の時に1バイト分のデータを送信

コマンド一覧
















WaitForOpenContainer開いたコンテナの取得
WaitForBulkGumpバルクBOOKの情報を収集
WatchingMyBackpackバックパックの監視
WatchingSkillsスキル変化を監視
WaitForLoginStatusログイン状態の監視
WaitForOpenBook開いた本の情報を取得
GetMyInfo自キャラの情報を取得する
GetMyBackpackバックパックの内容を取得
GetMyWear装備品を取得
GetSkillsスキル値を取得
GetCreatureList周囲のクリーチャーを取得
BuyFromPCVendorPCベンダーから買う
DisplaySystemMessageメッセージの表示
ExecMotionモーションの実行


WaitForOpenContainer(開いたコンテナの情報を収集)
◎書式
 WFOC,arg1

◎引数
 arg1:
  0:コンテナ待ち状態に入る。
  1:コンテナ待ち状態を解除する。

◎説明
 モード終了を受信するまでコンテナが開かれる度に情報を
 アプリに送信する。
 送信フォーマット
  複数行の文字列を送信するが、1行目の値によって、
  2行目以降があるかどうかを判断する。

  ・1行目:"0\n"の場合
   コンテナ情報
   \0を受信するまで1行1アイテムで情報が続く。
   **2行目以降のアイテム情報**
   ObjectID\tModelID\tName\tCount\txLoc\tyLoc\tColor\n
   ObjectID\tModelID\tName\tCount\txLoc\tyLoc\tColor\n
   ObjectID\tModelID\tName\tCount\txLoc\tyLoc\tColor\n\0

  ・1行目:"1\n"の場合
   UOLinkは要求を受け付けた
   すぐに"\0"を送信する。(2行目以降はない)
   (これは"WFOC,0"に対する応答)

  ・1行目:"2\n"の場合
   UOLinkは要求を受け付けることができなかった
   すぐに"\0"を送信する。(2行目以降はない)
   (これは"WFOC,1"に対する応答)

  ・1行目:"3\n"の場合
   コンテナが開かれました(情報収集開始)。
   **2行目はコンテナの情報**
   ObjectID\tModelID\tName\tCount\txLoc\tyLoc\tColor\0


WaitForBulkGump(バルクBOOKの情報を収集)
◎書式
 WFBG,arg1,arg2

◎引数
 arg1:
  0:バルクBOOKガンプ待ち状態に入る。
  1:バルクBOOKガンプ待ち状態を解除する。

 arg2:
  0 : 自動でページをめくらない。(省略時のデフォルト)
  1 : 自動でページをめくる。

◎説明
 バルクBOOK待ち状態中にバルクBOOKのガンプが開かれた場合、
 そのパケット情報を丸ごとAppにBinaryメッセージ(WM_USER + 603)で送信する。

 同時に2つ以上のアプリがWFBGを利用している場合、
 あとから発行したWFBGのarg2が有効になる。
 (これは仕様ミスだけど、今はBODProくらいしか使用するアプリないだろう…
  ということでこのまま保留。)


WatchingMyBackpack(バックパックの監視)
◎書式
 WMBP,arg1,arg2

◎引数
 arg1:
  0:監視状態に入る
  1:監視状態を解除する

 arg2:
  監視するモデルIDを":"で区切って指定する。
  全てのアイテムを監視する場合は"0"を指定する。
  ※arg1が1の場合は無効となる。

◎説明
 自キャラのBackPackを監視する。
 ・BackPackにアイテムが出現した。
 ・BackPackからアイテムが消失した。

 UOLinkが上記変化を察知した場合、
 コマンド応答(WM_USER + 602)で非定期にアプリに送信する。
 送信される内容は以下の通り。

 MessageType\tObjectID\tModelID\tName\tCount\txLoc\tyLoc\tColor\0

 MessageTypeが1の場合「アイテムが出現した」とし、
 2の場合「アイテムが消失した」とする。

 ※監視対象はBackPackのルート階層のみ…

 例)
  // BulkDeed, BulkBookを監視すたーと
  WMBP,0,2258:2259
  // 監視終了
  WMBP,1

  // 全アイテムの監視をすたーと
  WMBP,0,0
  // 監視終了
  WMBP,1


WatchingSkills(スキル変化を監視)
◎書式
 WSKL,arg1

◎引数
 arg1:
  0:監視状態に入る
  1:監視状態を解除する

◎説明
 スキル変化を監視し、変化を察知した場合
 コマンド応答(WM_USER + 602)で非定期にアプリに送信する。
 送信される文字列の書式は以下のとおり。

 SkillName\tBase\tState\tCap\n
 SkillName\tBase\tState\tCap\n
 ...(変化したスキルの数だけ繰り返す)
 SkillName\tSkill\tBase\tCap\n\0

WaitForLoginStatus(ログイン状態の監視)
◎書式
 WFLS LST,arg1

◎引数
 arg1:
  0:監視状態に入る
  1:監視状態を解除する

◎説明
 ログイン/ログアウトを監視し、変化を察知した場合
 コマンド応答(WM_USER + 602)で非定期にアプリに送信する。
 送信される内容は以下の通り。
 ・キャラがログインした場合
  0\tShardName(IP)\tPlayerID\tPlayerName\0

 ・キャラがログアウトした場合
  1\tPlayerID

WaitForOpenBook(開いた本の情報を取得)
◎書式
 WFOB,arg1

◎引数
 arg1:
  0:ブック待ち状態に入る。
  1:ブック待ち状態を解除する。

◎説明
 本が開かれた時に、その内容をアプリに送信する。
 送信される内容は以下の通り。

 Title=タイトル\0 // ←必ずこれが初送信
 Author=作者名\0
 Page=ページ数\0
 ObjectId=オブジェクトID\0 // 16進表記 40faff34 とか
 ModelId=モデルID\0 // 16進表記:不明の場合 ffff
 ColorId=色ID\0 // 16進表記:不明の場合 ffff
 Writeable=書き込み可能?\0 // 値は true か false
 Wait=情報読み込みの待ちが発生する?\0 // 値は true か false
 for( ページ数 ){
  LineNum=このページの行数\0 // ページ毎の最初に送信される
  for( 行数 ){
   Line=1行の文字列\0 // SJIS変換されている
  }
 }

 ※文字列のエスケープはないが、前方一致で「=」を含めて固定チェックすれば無問題。

 ※読み込み待ちが発生しない(Wait=false)場合
  ①プレーヤーが本を開く
  ②アプリにすぐに全ページの情報が渡される

 ※読み込み待ちが発生する(Wait=true)場合
  ①プレーヤーが本を開く
  ②アプリにWait=trueまではすぐに渡される
  ③UOLinkがページ情報を読み取りながら少しずつ情報をアプリに渡していく

 ※UOLinkが本の情報を収集中に、別の本を開いた場合
  収集中のデータは破棄され、新しい本のTitle=から送信が始まる。


GetMyInfo(自キャラの情報を取得する)
◎書式
 GMCI,arg1

◎引数
 arg1:
  取得する属性タイプを指定する。
 "PID":PlayerID
 "SNM":ServerName
 "PNM":PlayerName
 "FAC":Facet
 "POS":Position(xLoc : yLoc : Direction)
 "HIT":HitPoints(Current/Max)
 "MAN":Mana(Current/Max)
 "STM":Stamina(Current/Max)
 "SDI":STR/DEX/INT (StatusLimit)
 "RES":AR/FR/CR/PR/ER
 "WEI":Weight(Current/Max)
 "GLD":Gold
 "LCK":Luck
 "FLW":Follower(Current/Max)
 "WDM":WeaponDamage(Min-Max)
 "STT":State
 "BKP":BackpackID
 "BNK":BankID
 "LOB":LastObject
 "LTA":LastTarget
 "LAR":LastArmRight
 "LAL":LastArmLeft
 "LPU":LastPickup
 "LCI":LastContainerID
 "LSK":LastSkill
 "LSP":LastSpell

◎説明
 UOBrowser2のTOPタブに表示されているとおりに送信する。
 終端は'\0'で判定すること。


GetMyBackpack(バックパックの内容を取得)
◎書式
 GMBP

◎引数
 なし

◎説明
 バックパックの中身を取得する。
 返却される文字列の書式は以下のとおり。

 ObjectID\tModelID\tName\tCount\txLoc\tyLoc\tColor\n
 ObjectID\tModelID\tName\tCount\txLoc\tyLoc\tColor\n
 ObjectID\tModelID\tName\tCount\txLoc\tyLoc\tColor\n\0

 '\0'に達するまで、アイテム分だけ\nで区切って送信する。


GetMyWear(装備品を取得)
◎書式
 GMWR

◎引数
 なし

◎説明
 自キャラの装備情報を取得する。
 返却される文字列の書式は以下のとおり。

 ObjectID\tModelID\tName\tCount\txLoc\tyLoc\tLayer\tColor\n
 ObjectID\tModelID\tName\tCount\txLoc\tyLoc\tLayer\tColor\n
 ObjectID\tModelID\tName\tCount\txLoc\tyLoc\tLayer\tColor\n\0

 '\0'に達するまで、アイテム分だけ\nで区切って送信する。


GetSkills(スキル値を取得)
◎書式
 GSKL

◎引数
 なし

◎説明
 全スキル値を取得する。
 返却される文字列の書式は以下のとおり。

 SkillName\tBase\tState\tCap\n
 SkillName\tBase\tState\tCap\n
 ...
 SkillName\tSkill\tBase\tCap\n\0

 '\0'に達するまで、スキル分だけ\nで区切って送信する。


GetCreatureList(クリーチャーのリストを取得)
◎書式
 GCRT

◎引数
 なし

◎説明
 自分の周囲18マス以内に存在するクリーチャーの一覧を取得する。
 返却される文字列の書式は以下のとおり。

 CreatureID\tModelID\tName\txLoc\tyLoc\tNotoriety\n
 CreatureID\tModelID\tName\txLoc\tyLoc\tNotoriety\n
 ...
 CreatureID\tModelID\tName\txLoc\tyLoc\tNotoriety\n\0

 '\0'に達するまで、クリーチャーの数だけ\nで区切って送信する。

 ※ Notorietyでクリーチャーのネームカラーを判断できる
 ・0x01 : Blue
 ・0x02 : Green
 ・0x03 : Gray
 ・0x04 : Gray
 ・0x05 : Orange
 ・0x06 : Red
 ・0x07 : Yellow


BuyFromPCVendor(PCベンダーから買う)
◎書式
 BFPV,arg1

◎引数
 arg1:
  オブジェクトID(16進文字列で指定)

◎説明
 PCベンダーからアイテムを買う。
 このコマンドを発行してもベンダーに買う要求を出すだけで、
 確認画面でのボタン押下は行わない。


DisplaySystemMessage(メッセージの表示)
◎書式
 SYSM,arg1

◎引数
 arg1:
  表示するメッセージ

◎説明
 システムメッセージを左下に表示する。

 例)
  // 左下にシステムメッセージを表示
  DMSG,めっせーじ


ExecMotion(モーションの実行)
◎書式
 XMOT,arg1

◎引数
 arg1:
  実行するモーションID

  以下の番号を指定する。

  0:その場で歩く
  1:その場で走る
  2:辺りを見回す
  3:腰に手を当てる
  4:挨拶
  5:敬礼
  6:顔を拭う
  7:攻撃スタイル(short)
  8:攻撃スタイル(long)
  9:ナイフによる攻撃
  10:突き上げる攻撃
  11:剣による攻撃1(掘り)
  12:剣による攻撃2
  13:剣による攻撃3
  14:槍による攻撃
  15:弓による攻撃
  16:クロスボウによる攻撃
  17:拳を振り下ろす
  18:戦闘状態で歩く
  19:呪文詠唱
  20:両手を上方に広げる
  21:攻撃を受けた
  22:後ろに倒れる
  23:前に倒れる
  24:馬に乗る(short)
  25:馬に乗る(midium)
  26:馬に乗る(long)
  27:馬に乗りつつ剣で攻撃
  28:馬に乗りつつ弓で攻撃
  29:馬に乗りつつクロスボウで攻撃
  30:馬に乗りつつ槍で攻撃
  31:防御

◎説明
 自キャラのモーションを実行する。


↓ 気に入って頂けましたら、クリックをお願いします。
   

トラックバックURL

このエントリーのトラックバックURL:
http://www.fou.ne.jp/aoablog/mt-tb.cgi/24

◎ 最近のエントリー
怨念
新メンバーは歓迎されるもの。
前からほしかった〇〇〇。
ウォーロックの魂。
錬金術師と元鷹師の装備事情
PT狩りの楽しみ方について?
これがボクの全てだッッ!!
+7でお願いします。
うぉーロックやってます、、
装備と、スキルとステータスで。


◎ 最近のコメント


◎ 月別アーカイブ
2010年11月 [5]
2010年10月 [14]
2010年09月 [9]
2010年08月 [11]
2010年07月 [16]
2010年06月 [17]
2010年05月 [17]
2010年04月 [6]
2010年03月 [7]
2010年02月 [5]
2010年01月 [7]
2009年12月 [10]
2009年11月 [9]
2009年10月 [11]
2009年09月 [24]
2009年08月 [18]
2009年07月 [25]
2009年06月 [9]
2009年05月 [13]
2009年04月 [8]
2009年03月 [6]
2009年02月 [12]
2009年01月 [23]
2008年12月 [17]
2008年11月 [9]
2008年10月 [7]
2008年09月 [15]
2008年08月 [15]
2008年07月 [16]
2008年06月 [5]
2008年05月 [9]
2008年04月 [8]
2008年03月 [21]
2008年02月 [15]
2008年01月 [24]
2007年12月 [26]
2007年11月 [19]
2007年10月 [32]
2007年09月 [18]
2007年08月 [14]
2007年07月 [11]
2007年06月 [24]

RSSフィード(XML)
Powered by
Movable Type 3.35
小粋空間

Art of Age © LACHE 2002-2008
***