4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FiveMでプラグイン開発をする

Posted at

FiveMとは

GTA5のシングルプレイやマルチプレイにアレンジを加えて、ロールプレイや様々なアイテムやシステムを追加して遊ぶMOD。本記事ではマルチプレイ用のFiveMを指す。
有志が沢山のサーバーやプラグインを提供していて、サーバーによっては500人ぐらいが同じサーバーで遊んでいたりする。
日本サーバーも昨今のイベントで活発になってきている模様。
なお、GTAオンラインとは全く別物なので注意

以前は非公式のMODとして開発停止などを要求されていたが、FiveM開発元のCfx.reがRockstar Gamesの開発チームに参加したらしい。いわば事実上の公認MOD

だがしかしプラグインなどには著作権など法に触れるようなコンテンツもあるので取り扱いには気をつけたい。
個人が作っているプラグインがほとんどなので脆弱性などにも気をつけよう。

クライアントがほぼ別なのでFiveMを導入してもGTAオンラインには入れる。
当然だが、FiveMはGTAオンラインと別サーバーではあるがGTA5を購入していない人は遊べない。(ログインチェックが入る)

他は公式FAQを要チェック。

必要な開発環境

本記事では公式マニュアルに則って話を進めるためこちらは必読。

インストールしてFiveMが起動できるところからスタート。

クライアントのシステム要件はここに記述されているスペックが必要。(大型サーバーだとこれでは足りないが)
image.png

  • 必須
GTA5
当然ながらGTA5が必要。それと同時にSocial Clubのアカウントも作成する。(前記したログインチェックのため)
サーバー
本記事ではWindowsのサーバーを使うが、簡単な開発だけで公開はしない。そのためサーバーを公開したい人などは別にサーバーを用意する。
Linuxサーバーでも動く。
  • 推奨
VSCode
言わずもがな定番のエディター。
XAMPP
データベースが必要だが用意するのが面倒なので使う。他のRDBMSがあるならそちらでもOK。
余談だがXAMPPのRDBMSはMariaDBである。
自前でデータベースを用意する場合はポートの設定を忘れないようにすること
  • 非推奨
FxDK
公式のエディターだが何かと不便なので直接クライアントを起動しながらのデバッグが良い。
というのもプラグインの再読み込みがクライアント起動中に可能であり、なおかつそのまま動くのであまり使う必要もなく、特別に使いたいという理由がなければオススメはしない。

開発言語はLua, C#, JavaScriptと用意されているが一般的にはLuaが使用されているのでLuaを使う。
なお筆者はLuaを触ったことがないので基礎からとなる。予めご了承頂きたい。

サーバーの用意

txAdminを使うのが非常に楽なので頼ることにする。
余程のことがない限りは機能の少ないバニラ環境を使うことは無い。

このガイドに沿ってサーバーのインストールまでを終わらせる。
セットアップにあたってライセンスキーが必要なのでこちらも取得しておく。
なお、項目8において選ぶテンプレートを今回は変える
CFX DefaultではなくQBCore Frameworkを使用する。

画像付きなので自動翻訳を使いながらやれば簡単にできる。

サーバーを立ち上げる際はXAMPPのMySQL(表記上はMySQLだが実際はMariaDB)を起動しておく必要がある。

コーディング

なお本記事では入門編であるため簡単なプラグインしか作らない。
ゲーム内アイテムの実装等は後日。

Luaの作法を知らないので調べた一例。グローバル変数は非推奨とのこと。
他の言語と同じような作法だと思われる

sample.lua
myVariable = false -- Don't use this
local myVariable = false -- Use this

function someFunction() -- Don't use this
    print('Im a global function!')
end

local function someFunction() -- Use this
    print('Im a local function!')
end

--https://docs.qbcore.org/qbcore-documentation/guides/script-optimization より

大体ココに載ってるので見ながらが便利。

クライアント側でプレイヤーとのお金やアイテム等のトランザクションはするなとも書いてあるので気をつけよう。(セキュリティ的な問題で)

今回は簡単なコマンドを登録してコマンドを入力するとメッセージが送信されるプラグインを作る。
まずはFxServerのインストール先に移動してフォルダを作成する。今回は適当に選んだ。
D:\FiveM\txData\QBCoreFramework_******.base\resources\[myplugins]\mymsg

\mymsg下にfxmanifest.luaを作成する。
中身はこうする

fxmanifest.lua
fx_version 'cerulean' 
game 'gta5'

author 'IROHAS' --制作者の名前
description 'Test Plugin' --プラグインの説明
version '1.0.0' --バージョン

client_script 'client.lua' --実行するクライアント側のスクリプト
server_script 'server.lua' --実行するサーバー側のスクリプト

同じディレクトリにclient.luaを作成する

client.lua
RegisterCommand('testmsg', function(source, args)
    TriggerEvent('chat:addMessage', {
        args = { 'テストメッセージです。クライアントにしか表示されません' }
    })
end, false)

関数の詳細

この二つが出来たらサーバーにリソースとして読み込ませるために\txData\QBCoreFramework_EF69C6.base下にあるserver.cfgを編集。
登録すればfxmanifest.luaがあるフォルダを自動で読み込んでくれる

server.cfg
#   ____  ____   _____
#  / __ \|  _ \ / ____|
# | |  | | |_) | |     ___  _ __ ___
# | |  | |  _ <| |    / _ \| '__/ _ \
# | |__| | |_) | |___| (_) | | |  __/
#  \___\_\____/ \_____\___/|_|  \___|

## FiveM Documentation
## https://aka.cfx.re/server-commands

## QBCore Documentation
## https://docs.qbcore.org

## You CAN edit the following:
endpoint_add_tcp "0.0.0.0:32160" #TCPのポート番号を設定
endpoint_add_udp "0.0.0.0:32160" #UDPのポート番号を設定
sv_maxclients 48
set steam_webApiKey "none"
sets tags "default, deployer, qbcore, qb-core"

...

# QBCore & Extra stuff
ensure qb-core
ensure [qb]
ensure [standalone]
ensure [voice]
ensure [defaultmaps]

# test plugin 
ensure [myplugins]
...

XAMPPでSQLを立ち上げる
image.png

txDataより上のディレクトリにあるstart_****_default.batを実行。
image.png

この画面になったらブラウザでlocalhost:40120に接続する
b.png

このページでログイン
image.png

ダッシュボードのステータスがOnlineなら起動している
b.png

FiveM側で接続。ローカルサーバーなのでserver.cfgで設定したポートで127.0.0.1に接続となる。
今回は127.0.0.1:32160である。

F8を押しコンソール開いてconnect 127.0.0.1:32160と入力。
image.png

そうすると接続できるはず。
image.png

ここで接続できない場合は何かしらのセットアップが出来ていないので公式のドキュメントを読もう。

ゲーム内でTキーを押しチャットを開く。
そして/testmsgと入力するとコマンドが実行される。
image.png

実行後
image.png

前述した通り、サーバーとクライアントが起動中でもプラグインを再読込することができる。

メッセージを編集してみる。

client.lua
RegisterCommand('testmsg', function(source, args)
    TriggerEvent('chat:addMessage', {
        args = { 'メッセージを変更してみました。' }
    })
end, false)

txAdmin左のパネルにあるResourceを開く。すると自分が登録したプラグインがあるのでRestartボタンを押す。
image.png
左のパネルにあるLive Consoleからrestart プラグイン名でも同じことができる。

再読み込みが出来たか確認の為にもう一度ゲーム内チャットで/testmsgと入力してみる。
image.png

変更出来た。

次回はもう少し複雑なプラグインを作ってみる。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?