2012/03/16

UOA ツール 開発 #005 - UO UOA TOOL for Visual Basic , 自動化、便利、マクロ、自分で管理などなど(ソース付き)

決まり文句

この記事で紹介しているのはネットゲームのウルティマオンラインのツール開発に関する内容ですが、ウィンドウメッセージを送ったり受け取ったりしたことの無い方には、VBでアプリケーション間通信の手助けとなるコードが書かれてるかもしれません。

途中からこの記事を見た方は、こちらから全て見ることができます。

シャード名、アカウント情報、キャラ情報

シャード名は普通に取得することができましたが、キャラ名やアカウント名は取得できなくて、UOAの管理しているIDとして取得できました。

UO.cfgにアカウント名、キャラ名が *ログアウト時* に保存されますが、クライアントが異常終了したときは保存されないと思うので若干問題が出そうです(・・;

ユーザーIDとやらも取得できましたがこちらは、パーティ関連で使うらしいので今回は必要なかったかもでした。

Form(抜粋)

    Private ShadeName As String = ""
    Private AcctID As Integer = 0
    Private UserID As Integer = 0
    Private CharaID As Integer = 0
 
    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
    Protected Overrides Sub WndProc(ByRef WMSG As Message)
        Select Case (WMSG.Msg)
            Case WM_UOA_LOGON
                CharaID = WMSG.WParam
                UserID = UOALink_GetUserID()
                AcctID = UOALink_GetAcctID()
                ShadeName = UOALink_GetShadeName()
                txtLog.AppendText(String.Format("ログインしました{0}", vbCrLf))
                txtLog.AppendText(String.Format(" ShadeName:{1} AcctID:{2} CharaID:{3} UserID:{4}{0}", vbCrLf, AcctID, CharaID, UserID))
                txtLog.AppendText(String.Format("{0}", vbCrLf))
 
            Case WM_UOA_LOGOUT
                CharaID = 0
                UserID = 0
                AcctID = 0
                ShadeName = ""
                txtLog.AppendText(String.Format("ログアウトしました{0}", vbCrLf))
                txtLog.AppendText(String.Format("{0}", vbCrLf))
 
        End Select
        MyBase.WndProc(WMSG)
    End Sub

Module(抜粋)

    Public Const WM_UOA_GET_USER_ID As Integer = WM_USER + 210
    Public Const WM_UOA_GET_SHARD_NAME As Integer = WM_USER + 211
    Public Const WM_UOA_GET_ACCOUNT_IDENTIFIER As Integer = WM_USER + 216
    Public Const WM_UOA_LOGON As Integer = WM_USER + 303
    Public Const WM_UOA_LOGOUT As Integer = WM_USER + 308
 
    Public Function UOALink_GetShadeName() As String
        Dim Result As Integer
        Dim Buf As String = ""
        Result = UOALink_SendMessage(WM_UOA_GET_SHARD_NAME, 0, 0)
        If (Result <> 0) Then
            Buf = fncGetAtomString(Result)
        End If
        Return Buf
    End Function
 
    Public Function UOALink_GetAcctID() As Integer
        Dim Result As Integer
        Result = UOALink_SendMessage(WM_UOA_GET_ACCOUNT_IDENTIFIER, 0, 0)
        Return Result
    End Function
 
    Public Function UOALink_GetUserID() As Integer
        Dim Result As Integer
        Result = UOALink_SendMessage(WM_UOA_GET_USER_ID, 0, 0)
        Return Result
    End Function

ダウンロード

開いたら File→Download で保存することができます。

UOA_Tool.#005.zip

0 件のコメント:

コメントを投稿