FiveMとは
GTA5のシングルプレイやマルチプレイにアレンジを加えて、ロールプレイや様々なアイテムやシステムを追加して遊ぶMOD。本記事ではマルチプレイ用のFiveMを指す。
有志が沢山のサーバーやプラグインを提供していて、サーバーによっては500人ぐらいが同じサーバーで遊んでいたりする。
日本サーバーも昨今のイベントで活発になってきている模様。
なお、GTAオンラインとは全く別物なので注意。
以前は非公式のMODとして開発停止などを要求されていたが、FiveM開発元のCfx.reがRockstar Gamesの開発チームに参加したらしい。いわば事実上の公認MOD。
だがしかしプラグインなどには著作権など法に触れるようなコンテンツもあるので取り扱いには気をつけたい。
個人が作っているプラグインがほとんどなので脆弱性などにも気をつけよう。
クライアントがほぼ別なのでFiveMを導入してもGTAオンラインには入れる。
当然だが、FiveMはGTAオンラインと別サーバーではあるがGTA5を購入していない人は遊べない。(ログインチェックが入る)
他は公式FAQを要チェック。
必要な開発環境
本記事では公式マニュアルに則って話を進めるためこちらは必読。
インストールしてFiveMが起動できるところからスタート。
クライアントのシステム要件はここに記述されているスペックが必要。(大型サーバーだとこれでは足りないが)
- 必須
- 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の作法を知らないので調べた一例。グローバル変数は非推奨とのこと。
他の言語と同じような作法だと思われる
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
を作成する。
中身はこうする
fx_version 'cerulean'
game 'gta5'
author 'IROHAS' --制作者の名前
description 'Test Plugin' --プラグインの説明
version '1.0.0' --バージョン
client_script 'client.lua' --実行するクライアント側のスクリプト
server_script 'server.lua' --実行するサーバー側のスクリプト
同じディレクトリにclient.lua
を作成する
RegisterCommand('testmsg', function(source, args)
TriggerEvent('chat:addMessage', {
args = { 'テストメッセージです。クライアントにしか表示されません' }
})
end, false)
関数の詳細
この二つが出来たらサーバーにリソースとして読み込ませるために\txData\QBCoreFramework_EF69C6.base
下にあるserver.cfg
を編集。
登録すればfxmanifest.lua
があるフォルダを自動で読み込んでくれる
# ____ ____ _____
# / __ \| _ \ / ____|
# | | | | |_) | | ___ _ __ ___
# | | | | _ <| | / _ \| '__/ _ \
# | |__| | |_) | |___| (_) | | | __/
# \___\_\____/ \_____\___/|_| \___|
## 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]
...
txData
より上のディレクトリにあるstart_****_default.bat
を実行。
この画面になったらブラウザでlocalhost:40120
に接続する
FiveM側で接続。ローカルサーバーなのでserver.cfg
で設定したポートで127.0.0.1
に接続となる。
今回は127.0.0.1:32160
である。
F8を押しコンソール開いてconnect 127.0.0.1:32160
と入力。
ここで接続できない場合は何かしらのセットアップが出来ていないので公式のドキュメントを読もう。
ゲーム内でT
キーを押しチャットを開く。
そして/testmsg
と入力するとコマンドが実行される。
前述した通り、サーバーとクライアントが起動中でもプラグインを再読込することができる。
メッセージを編集してみる。
RegisterCommand('testmsg', function(source, args)
TriggerEvent('chat:addMessage', {
args = { 'メッセージを変更してみました。' }
})
end, false)
txAdmin左のパネルにあるResource
を開く。すると自分が登録したプラグインがあるのでRestart
ボタンを押す。
左のパネルにあるLive Console
からrestart プラグイン名
でも同じことができる。
再読み込みが出来たか確認の為にもう一度ゲーム内チャットで/testmsg
と入力してみる。
変更出来た。
次回はもう少し複雑なプラグインを作ってみる。