EliteAPI(EliteAPI.dll, EliteMMO.API.dll)は、FF11のサードパーティ製ツール用のライブラリです。
EliteMMO.API.dllは、EliteAPI.dllを.NETのアプリケーションから使用するためのブリッジのようです。
api.elitemmonetwork.com
Cure-PleaseやEasyFarmなどで使用されています。
今回はEliteAPIを使って、簡単なコンソールアプリケーション(C#)を作ってみたいと思います。
準備
.NETの開発環境をインストールします。(Visual Studioを使用されている方は不要かも)
アプリケーションをx64でビルドするとライブラリがリンクできなかったので、x86で動作させるためにx86のランタイムもインストールします。
使ってみる
EliteAPIのバージョンは、
- EliteAPI.dll 1.3.0.2
- EliteMMO.API.dll 1.3.0.0
を使用します。
コンソールアプリケーションの雛形を作成します。
$ dotnet new console -o testApp
作成したプロジェクトのフォルダにEliteAPI.dll, EliteMMO.API.dllをコピーします。
testApp/ |- Program.cs |- testApp.csproj |- EilteAPI.dll |- EliteMMO.API.dll
プロジェクトファイル(testApp.csproj)を編集します。(Visual Studioであれば、IDE上で設定できるかも)
- x86の実行ファイルを作成するので、PlatformTargeをx86にする
- 参照するライブラリにEliteMMO.API.dllを追加する
- EliteAPI.dllをビルド時に出力ディレクトリにコピーするようにする
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> <PlatformTarget>x86</PlatformTarget> </PropertyGroup> <ItemGroup> <Reference Include="EliteMMO.API"> <HintPath>./EliteMMO.API.dll</HintPath> </Reference> </ItemGroup> <ItemGroup> <Content Include="EliteAPI.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup> </Project>
キャラクター名、メインジョブ、メインジョブレベルを出力するサンプルを作ってみます。
EliteAPIのインスタンスを得るため、FF11のクライアントのプロセスIDを取得します。
Process.GetProcessByNameメソッドを使用して、pol.exeのプロセスを取得します。
Windowerで複数のクライアントが起動している場合は、Processが複数取得できます。
ウィンドウのタイトルがログインしているキャラクター名になっているので、Process.MainWindowTitleで判別できます。
EliteAPIクラスのコンストラクタにプロセスIDを渡し、インスタンスを取得します。
このインスタンスを使用して、EliteAPIのメソッドでクライアントにアクセスします。
// Program.cs using System; using System.Diagnostics; using EliteMMO.API; namespace testApp { class Program { static void Main(string[] args) { Process[] pol = Process.GetProcessesByName("pol"); EliteAPI api = new EliteAPI((int)pol[0].Id); Console.WriteLine(api.Entity.GetLocalPlayer().Name); // キャラクター名 Console.WriteLine((JobType)api.Player.GetPlayerInfo().MainJob); // メインジョブ Console.WriteLine(api.Player.GetPlayerInfo().MainJobLevel); // メインジョブレベル } } }
実行
$ dotnet run
出力
Hogehoge BlueMage 99
実行形式のファイルを実行する場合は、"管理者として実行"する必要があります。