SPSOS server SQL版

pioneer2.netで配布されているPSOBB専用のプライベートサーバー。
設置難易度が高く、運用には高いスキルが要求されます。

PSOサーバーの設置方法の説明のみに絞ることで極力わかりやすく書いているつもりです。
セキュリティや不正アクセス対策等のPSOサーバー設置と関係のないものは書いてません。
外部公開する場合、不正対策は重要ですがここでは特に触れてません。

文章作成者であるmisakiは
書かれていることを実行したことにより発生した如何なるトラブルについても責任は負いません。
自己判断で実行し、何が起こっても自己解決してください。

用意するもの

ログインサーバーとゲームサーバーのファイルは以下からDLできます。
Newest binaries (both SQL and non-SQL versions...)
http://www.pioneer2.net/forum/viewtopic.php?t=106

SPSOSサーバーはSQL版とDAT版の2種類があります。
SQLはキャラクタデータをデータベースで管理。
DATはlogin_server.exeと同じフォルダにDATファイルとしてキャラクタデータを出力します。
ここでの説明はSQL版です。

DAT版と比べてキャラクタやログインIDの管理に優れていますが設置や操作にスキルを要します。

MySQL(データベース)を使います。
MySQLの操作にphpmyadminを使うと便利です。
また、phpmyadminを動かすためにphpやApacheも必要です。
それらをPCで起動させる環境を用意してください。

個別にPCへインストールしてもかまいませんが
これらWEBサーバー関連ツールを一括インストールできるXAMPPというの便利なものがあります。
それを使ってまとめてインストールすることにします。
XAMPP for Windows
http://www.apachefriends.org/jp/xampp-windows.html

XAMPP Windows版のインストーラーを選択します。
インストール中に選択肢が出ますが、
意味がわからなければ触らずにディフォルトのままインストールしてください。

############################################################################
# XAMPP 1.7.3 - Setup #
#--------------------------------------------------------------------------#
# Copyright 2009 Carsten Wiedmann (FreeBSD License) #
#--------------------------------------------------------------------------#
# Authors: Carsten Wiedmann <[email protected]> #
# Kay Vogelgesang <[email protected]> #
############################################################################

Should I add shortcuts to the startmenu/desktop? (y/n): y
( スタートメニューとデスクトップにショートカットを作成しますか? )
通常は「 y 」

Should I locate the XAMPP paths correctly?
Should I proceed? (y/x=exit setup): y
( XAMPPのパスを設定しますか?続けていいですか?)
通常は「 y 」

Should I make a portable XAMPP without drive letters?
NOTE: - You should use drive letters, if you want use services.
- With USB sticks you must not use drive letters.
Your choice? (y/n): n
( ドライブレターを除いたポータブルXAMPPの作成をしますか? )
通常は「 n 」

以上の設定を終わらせると以下が表示されます。

1. start XAMPP Control Panel
2. relocate XAMPP (current path: C:\xampp)
3. disable HTTPS (SSL)
4. disable Server Side Includes (SSI)
5. enable IPv4 only (current: IPv4/6 (auto))
6. disable mod_perl
7. disable Apache::ASP

x Exit

Please choose (1-7/x):

コマンドラインでの設定はこれで終わりです。
「 x 」を選んでExitしてください。

XAMPP起動

使うのはApacheとMySqlです。
Startボタンを押すと起動します。

コントロールパネル

ApacheのAdminを押します。
ブラウザが立ち上がりXAMPP for Windowsというページが表示されます。

インストール完了

左側にあるメニューから「セキュリティ 」を選択。
セキュリティの今の状況とその下に以下が表示されます。
「そのような問題をすべて修正するには、単純に次のツールを使ってください。」

ということでツールを使います。
rootのパスワードを設定します。
rootはデータベースの最高権限を持ってるユーザーのことです。

XAMPPのディレクトリ制御 (.htaccess)に
rootとは違うユーザー名とパスワードを入力
http://localhost/へアクセスするときのパスワードの設定です。

次にphpMyAdminでデータベースを作成します。
メニューからphpMyAdminを選択します

phpMyAdmin

「 特権 」という項目があります。
特権を選択するとユーザ概略が表示されます。
「 新しいユーザーを追加する 」を選び、PSOサーバーで使うデータベース名を作成します。
ユーザー名とパスワードはお好きなように。

ログイン情報

ユーザー名 : テキストフィールドの値を利用 ( 説明の都合上psoservとします )
ホスト     : ローカル
パスワード : テキストフィールドの値を利用 ( 説明の都合上12345678とします )

ユーザ専用データベース

同名のデータベースを作成して全ての特権を与える

設定が終わったら「 実行する 」を押してください。
新しいユーザーとしてpsoservが追加され、
左側のメニューにpsoserv(0)が表示されていると思います。
そのpsoserv(0)をクリックします。

そして右側上部にある「 インポート 」をクリック。
インポートするファイルに「 pso_server.sql 」を指定して実行してください。
sql/pso_server.sqlにファイルはあります。
データベースにテーブルが作成されます。

テーブル作成

データベース側の設定はこれで終わりです。
ブラウザ、Apacheは閉じてもかまいませんが
MySqlはログインサーバーで使いますので停止しないでください。

ログインサーバー設定

spsos_login_v***の中にある
ini/tethealla.iniとwelcome.txtをlogin_server.exeと同じ場所へコピー。

まずはログインサーバーのIPを確認します。
スタート → すべてのプログラム → アクセサリ → コマンドプロンプト
背景の黒い窓が立ち上がります。
そこで「 ipconfig 」と入力するとIPアドレスが表示されます。

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\misaki>ipconfig

Windows IP Configuration
Ethernet adapter ローカル エリア接続:

  Connection-specific DNS Suffix . :
  IP Address. . . . . . . . . . . .: 192.168.0.2
  Subnet Mask . . . . . . . . . . .: 255.255.255.0
  Default Gateway . . . . . . . . .: 192.168.0.1

IP Addressに表示された部分をチェック。
私の場合は 192.168.0.2 の部分がログインサーバーのIPになります。

# MySQL Host
localhost
# MySQL Username
mysqluser → ログイン情報で入力した名前 ( ここでの説明ではpsoservになってます )
# MySQL Password
mysqlpw → ログイン情報で入力したパスワードを入れる ( ここでの説明では12345678になってます )
# MySQL Database
mysqldb → ログイン情報で入力した名前 ( ここでの説明ではpsoservになってます )
# Server IP address to bind to (your private IP)
192.168.1.100 → 上記で調べたIPを入れる ( ここでの説明では192.168.0.2 )
# Welcome message
Your welcome message here... ( 日本語で入力すると文字化けします )
# The ship name
Unconfigured → ( ここでの説明ではpsocafeとします )

login_server.exeを起動させます。
「 Listening... 」まで表示されてたらうまくいってます。
表示されない場合は何らかの理由でデータベースへアクセス失敗してます。
タスクトレイに表示されているアイコンをダブルクリックで画面の切り替えができます。

Tethealla Login Server version 0.047 Copyright (C) 2008 Terry Chatman Jr.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
This program comes with ABSOLUTELY NO WARRANTY; for details
see section 15 in gpl-3.0.txt
This is free software, and you are welcome to redistribute it
under certain conditions; see gpl-3.0.txt for details.

Loading configuration from tethealla.ini ... OK!
Loading PlyLevelTbl.bin ... OK!
Loading 0xE2 base packet ... OK!
Loading 0xE7 base packet ... OK!
Loading parameter files specified in e8send.txt ...
Loading data from ItemMagEdit.prs ...
Loading data from ItemPMT.prs ...
Loading data from BattleParamEntry.dat ...
Loading data from BattleParamEntry_on.dat ...
Loading data from BattleParamEntry_lab.dat ...
Loading data from BattleParamEntry_lab_on.dat ...
Loading data from BattleParamEntry_ep4.dat ...
Loading data from BattleParamEntry_ep4_on.dat ...
Loading data from PlyLevelTbl.prs ...
Loading quest item allowances...
Number of quest item allowances: 984
Loading drop data...
... done!

MySQL connection parameters
///////////////////////////
Host: localhost
Port: 3306
Username: psoserv
Password: 12345678
Database: psoserv

Login server parameters
///////////////////////
IP: 192.168.0.2
Login Port: 12000
Character Port: 12001
Maximum Connections: 100
Maximum Ships: 50

Allocating 34851600 bytes of memory for connections... OK!
Allocating 16063200 bytes of memory for ships... OK!

Constructing default ship list packet ... OK!

Connecting up to the MySQL database ... OK!

Setting session wait_timeout ... OK!

Getting max ship key count... (1) OK!
Loading default.flag ... OK!
Opening server patch port 11000 for connections.
Opening server login port 12000 for connections.
Opening server character port 12001 for connections.
Opening ship port 3455 for connections.

Listening...

続いて、account_add.exeを起動させ
ゲームで使うログインIDやパスワードの設定をします。
一番最初に登録したIDがグローバルGMになります。

make_key.exeを起動させるとship_key.bintが作成されます。
ship_key.binをspsos_ship_v***のフォルダへ入れてシップサーバーを起動してください。

パッチサーバー設定

spsos_login_v***の中にあるpatch_server.exeを起動させてください。
ログインサーバー同様「 Listening... 」まで表示されてたら正常です。

日本語で遊びたい場合、言語ファイル(unitxt_j.prs)が別途必要です。
unitxt_j.prsは日本語版公式クライアントをインストールすると入ってますので
それをログインサーバーのpatches/data/の中へ入れてください。
主にアイテム名が日本語化されます。

PSOBB公式サイトで配布されたクライアントで
最新のもの(ver1.25.11)からunitxt_j.prsを取り出してください。
アップデート等で追加されてるデータがありますので
パッケージ版の古いやつとかを使うとアイテム名が表示されないかもです。

welcome.txtに書いてある文字がパッチサーバー接続時に表示されます。
ウェルカムメッセージとして使用してください。

シップサーバー設定

spsos_ship_v.**/ini/lang.ini、localgms.ini、ship.iniをship_server.exeと同じ位置へコピー
先ほど作成したship_key.binも忘れずに。
ship.iniの設定を変更します。

ログインサーバーのIPを指定します。

# The IP address or host name of the login server to register the ship to.
67.180.96.41 ( ここでの説明では192.168.0.2 )

入力したらシップサーバー起動。
下のようなログが表示されます。
「 Now ready to serve players... 」が表示されてたらサーバーは正常に稼動してます。
タスクトレイに表示されているアイコンをダブルクリックで画面の切り替えができます。

Tethealla Ship Server version 0.143 Copyright (C) 2008 Terry Chatman Jr.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
This program comes with ABSOLUTELY NO WARRANTY; for details
see section 15 in gpl-3.0.txt
This is free software, and you are welcome to redistribute it
under certain conditions; see gpl-3.0.txt for details.

Loading configuration from ship.ini ... OK!

Loading language file...
Language 1 (English:)
Language 2 (Spanish:sp)
Language 3 (French:fr)
Language 4 (Italian:it)
Language 5 (German:gr)
OK!



省略



Received rare monster appearance rates from server...
Hildebear appearance rate: 0.250000%
Rappy appearance rate: 0.777000%
Lily appearance rate: 0.450000%
Pouilly Slime appearance rate: 0.250000%
Merissa AA appearance rate: 0.250000%
Pazuzu appearance rate: 0.250000%
Dorphon Eclair appearance rate: 0.250000%
Kondrieu appearance rate: 20.000000%

Now ready to serve players...

一応ログインサーバー側も確認してください。
「 Listening... 」に続いて以下が表示されてると思います。
ログインサーバーでシップサーバーを認識してるのがわかると思います。

Listening...
Accepted SHIP connection from 192.168.0.2:3076
Ship psocafe (192.168.0.2:5278) has been successfully registered.
Player count: 0
Ship key index: 1

PSOBBでログインサーバーへアクセス。
ロビーまで到着できれば一通りサーバーの設置と動作確認は終わりです。

BBクライアントの設定方法はSPSOSクライアントのページを参照してください。

login_v.045/ship_v.135以前からのアップデート

login_v0.46、ship_v1.37からは共有倉庫が実装されました。
これに伴いMySQLのテーブル構造も変わりました。

login_v045以前のキャラクタデータをv046以降へ引継ぎを行う場合は
SPSOSのバージョンアップとMySQLのデータベースも更新する必要があります。

共有倉庫のデータを格納する場所が以前のものにはありません。
SPSOSのプログラムのみバージョンアップしても共有倉庫は機能しません。
また、この状態で共有倉庫にアイテムを入れるとデータは保存されず消失します。

MySQLの更新方法

phpMyAdminを使ってSPSOSのデータベースへアクセスしてください。
現在のデータが表示されます。

旧テーブル

「 エクスポート 」でデータのバックアップを取ってください。
「 実行する 」を押すだけです。
データベース名.sqlというファイルが保存できます。
画像の場合ですとpsoserv.sqlが出力されます。

次に共有倉庫のテーブルを追加します。
「 インポート 」を選び、spsos_login_v.046/sql/pso_server.sqlをインポートしてください。
これで共有倉庫を格納する場所が作られました。
以前のデータが空になってると思いますので、先ほどバックアップしたデータを復元します。

同じようにインポートを使ってバックアップしたデータを入れます。
画像の例だとpsoserv.sqlをインポートすることになります。

新テーブル

account_dataとcharacter_dataの間にbank_dataが追加されたのを確認したら
実際にログインできるか、共有倉庫が使えるかどうかを確認して問題がなければ完了です。

▲ top