注意!
この改造スクリプトは、Masters Barのパーティスレッドから始まり、現在も開発進行中です。

概要

SOSIIにパーティの概念を取り付けます。

パーティに参加することで、同じ目的意識を持った仲間と一緒に冒険することが可能になります。

  • 現在、パーティシステムは「酒場」「パーティウィンドウ」のみ実装されています。
  • パーティ探索やパーティ戦闘などの機能は未実装なので、導入する際はご注意ください。

改造

1. 設定の変更

設定に以下を追加します。

# 酒場・パーティ設定
$partydat      = 'party.cgi'; # 酒場登録プレイヤーリスト
$partydir      = 'party/';    # パーティ別データファイル

$barchat_file    = 'barchat.cgi';   # 酒場の会話ログ
$barmaster_file  = 'barmaster.cgi'; # 酒場のマスターの台詞ファイル
$barmassage_file = 'barmsg.cgi';    # 酒場メッセージファイル

$partymember_max      = 5;           # パーティに参加できる人数(2~$partymember_max)
$barmassage           = '「いらっしゃいませ。どうぞごゆっくり」'; # 酒場メッセージファイルがないときのメッセージ
$barchat_max          = 100;         # 酒場の会話の表示件数
$partychat_max        = 50;          # パーティチャットの表示件数
$barchat_limit_time   = 10;          # 酒場の会話連稿制限時間(yes=制限時間[秒],no=0)
$barchat_limit_length = 100;         # 酒場の会話文字数制限(yes=文字数[全角],no=0)
$barchat_reload_time  = 30;          # 酒場の会話自動リロード(yes=リロードする間隔[秒],no=0)
$barchat_bar_color    = '#AAAAAA';   # テーブルチャット時のバー全体の会話の色
$barchat_party_color  = '#2E8B57';   # パーティチャットの色
$barchat_whisp_color  = '#CD5C5C';   # 耳打ちの色
$barchat_system_color = '#800000';   # システムからのメッセージの色
$barchat_msgarea_id   = 'msgarea';   # チャットのコメント欄のID
$barchat_chatframe_id = 'chatframe'; # チャットのインラインフレームのNAME,ID
$barchat_system_id    = 'system';    # システムからのメッセージのID
$barchat_system_name  = '';          # システムからのメッセージの名前

@userflag = qw(
	id nm ps jb ig sp bp bn ak dd hp xp ab db
	av wn lz dt mn bg xi tm lf fe cm is ht fg rw kl
);
# ↑プレイヤーのステータスフラグ。フラグ足しを行っている場合は空白文字で区切って追加

@userflagの設定は必ず行ってください。

街移動などの改造でフラグ足しを行っている場合は

@userflag = qw(
	id nm ps jb ig sp bp bn ak dd hp xp ab db
	av wn lz dt mn bg xi tm lf fe cm is ht fg rw kl
	tw
);

のように追加してください。

 

2. # Main Program # の修正

main program に以下を追加します。

if ($Fm{'mode'} eq 'goto_bar')			{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'backto_bar')		{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'bar_sit_table')		{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'bar_talk_master_before')	{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'bar_talk_master_after')	{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'recruit_party_before')	{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'recruit_party_after')	{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'recruit_party_close')	{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'join_party_before')		{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'join_party_after')		{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'leave_party_before')	{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'leave_party_after')		{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'party_affair')		{ require 'party.pl'; &bar_form	}
if ($Fm{'mode'} eq 'chat_register')		{ require 'party.pl'; &chat_register	}
if ($Fm{'mode'} eq 'party_window')		{ require 'party.pl'; &party_window	}

 

3. # Sub Make Continue # の修正

sub make_con の

	$fg = ''; &userout;

の上に

	require 'party.pl'; &is_myparty;

を追加

4. # Sub Player's Data # の修正

sub player_data の

	print qq|<form method=$method action=$cgiurl target=_blank>\n|;
	print qq|<input type=hidden name=pass value="$ps">\n|;
	&OKbuttoninform('n','my_record');
	print qq|<div align=right><b>My Record</b></div>\n|;
	&form('end');

	print qq|<br><br><table align="right" cellspacing="3"><tr><td>|;
	print qq|<form method="$method" action="$cgiurl" target="_blank">\n|;
	&input('hidden','pass',"$ps",'',''); &input('hidden','mode','my_record','','');
	&input('hidden','id',"$Fm{'id'}",'',''); &input('hidden','ps',"$Fm{'ps'}",'','');
	print qq|<div align=right><input type=submit value="My Record" style="font-size:$butfsz;border:solid"></div>\n|;
	&form('end');
	print qq|</td><td>\n|;
	print qq|<form method="$method" action="$cgiurl" target="_blank">\n|;
	&input('hidden','mode','party_window','',''); &input('hidden','id',"$Fm{'id'}",'',''); &input('hidden','ps',"$Fm{'ps'}",'','');
	print qq|<div align=right><input type=submit value="Party" style="font-size:$butfsz;border:solid"></div>\n|;
	&form('end');
	print qq|</td></tr></table>\n|;

に置き換え。

表示が気に入らなければご自由に変更してください。

5. # Sub Normal Action # の修正

sub normal_action の任意の場所(「銘入り品の名前を変更する」の下あたりがよいかと)に以下を追加

	&input('radio','mode','goto_bar','',"酒場に行く<br>\n");

6. # Sub Note After # の修正

sub note_after の

	return if $fg ne 'NB';

を削除

7. # Sub Delete After # の修正

sub del_after の

	else {

の下に

		require 'party.pl'; &is_myparty; &delete_partymember;

を追加

8. # Sub Find to Delete # の修正

	if ($now > $tm && $ps ne $admpas) { unlink("$usrdir$id\.dat") }

	if ($now > $tm && $ps ne $admpas) {
		@escmsg = @msg;
		require 'party.pl'; &is_myparty; &delete_partymember;
		@msg = @escmsg;
		unlink("$usrdir$id\.cgi");
	}

に置き換え

9. ufs2.cgi, # Sub Delete After # の修正

    unlink("$usrdir$id\.dat");

の上に

    require 'party.pl'; &delete_partymember;

を追加

10. ファイルの作成・アップロード

ファイルの作成

名前種類設定名
partyフォルダ$partydir
party.cgiファイル$partydat
barchat.cgiファイル$barchat_file
barmaster.cgiファイル$barmaster_file
barmsg.cgiファイル$barmassage_file

上記5つのファイルを作成。中身は全て空で大丈夫です。

party.plのダウンロード

  • &ref(): File not found: "party.pl" at page "改造/パーティシステム";

上記のリンクを右クリック→名前をつけて保存でparty.plという名前で保存。

アップロード

ファイル名パーミッション
party755 or 705
party.pl644 or 604
party.cgi666 or 606
barchat.cgi666 or 606
barmaster.cgi666 or 606
barmsg.cgi666 or 606

上記のファイルをsos2.cgiと同じフォルダにアップロードします。

以上で改造は終了です。お疲れ様でした。

酒場の設定

必要ならば、酒場に入ったときのメッセージと「酒場のマスターと話す」コマンドの設定をすることが出来ます。

酒場に入ったときのメッセージの設定

barmsg.cgiを以下の内容に変更すると、3つのメッセージのうちどれかがランダムで表示されます。

「いらっしゃいませ。どうぞごゆっくり。」
「酒場へようこそ。今日もいい天気ですね。」
「こんにちは。最近の景気はいかがですか?」

barmsg.cgiが空の場合は設定で指定したメッセージを表示します。

「酒場のマスターと話す」コマンドの設定

barmaster.cgiを以下の内容に変更すると、酒場のマスターと話すことが出来るようになります。

Q1<>ここはどこ?<>
A1<>ここは冒険者が集う出会いの酒場。日々多くの冒険者たちが仲間を求めてこの酒場にやってきます。<>
Q2<>あなたは誰?<>
A2<>酒場へようこそ。私がこの酒場のマスターです。以後お見知りおきを。<>
Q3<>あなたト○ロっていうのね!<>
A3<>トォー、○ォー、<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>ヴォーーーーーーーーーーーーーーーーーーーーー!<>
Q4<>ここでは何が出来るの?<>
A4<>ここでは<br><ul><li>パーティメンバーの募集<li>パーティに参加する<li>酒場にいる人とチャット</ul><p>を、行うことが出来ます。</p><p>「パーティメンバーを募集する」では、パーティ名・募集人数・募集要項を設定することでパーティメンバーを募集することが出来ます。<br>パーティメンバーを募集しているとリストにあなたの名前が表示され、酒場に来た人があなたのテーブルに着くことが出来るようになり、募集要項を見てパーティに参加できるようになります。</p><p>参加したいパーティのテーブルに向かい「このパーティに参加する」を選択すると、そのパーティに参加することが出来ます。</p><p>酒場にいる人とチャットをするには、チャットウィンドウの発言欄に話す内容を書いて決定を押してください。<br>チャットウィンドウはおそらく「酒場のマスターと話す」などのコマンドの上に表示されているはずです。<p><p>酒場で出来る基本的なことはこれくらいでしょうか。詳しいことは実際にお試しになってみてください。<>
Q5<>ところでマスターっていくつ?<>
A5<>秘密です。<>
A5<>永遠の15歳です。<>
A5<>都合上18歳です。<>

Q+数字の質問を選択すると、対応するA+数字の答えをマスターが話してくれます。 対応する答えが複数ある場合はその中からランダムでひとつ選ばれます。

初心者のためのチュートリアルなどにご利用ください。

修正

Ver 1.01 → 1.02

パーティメンバーがいないときにキャラ削除した場合パーティファイルが削除されない不具合の修正
party.plをダウンロードし、新しいものに置き換え。

Ver 1.00 → 1.01

パーティメンバーが自動削除されたときの不具合修正

# Sub Delete After # と # Sub Find to Delete # の

		require 'party.pl'; &delete_partymember;
		require 'party.pl'; &is_myparty; &delete_partymember;
に置き換え。

party.plをダウンロードし、新しいものに置き換え。

文字コードがEUC-JPだったのをShift_JISに変更
party.plをダウンロードし、新しいものに置き換え。
パーティチャットで古い書き込みがうまく削除されない不具合の修正
party.plをダウンロードし、新しいものに置き換え。
チャットの制限・自動リロード機能にON/OFFの設定を追加
設定の
$barchat_limit_time   = 10;          # 酒場の会話連稿制限時間(秒)
$barchat_limit_length = 100;         # 酒場の会話文字数制限(全角)
$barchat_reload_time  = 30;          # 酒場の会話自動リロード(秒)
$barchat_limit_time   = 10;          # 酒場の会話連稿制限時間(yes=制限時間[秒],no=0)
$barchat_limit_length = 100;         # 酒場の会話文字数制限(yes=文字数[全角],no=0)
$barchat_reload_time  = 30;          # 酒場の会話自動リロード(yes=リロードする間隔[秒],no=0)
に置き換え。

party.plをダウンロードし、新しいものに置き換え。

コメント

コメントはありません。 Comments/改造/パーティシステム?

お名前:

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-04-30 (火) 00:57:44 (113d)