配役パターンを増やすには?

いじくるソースはlibディレクトリのconst.pl、setrole.pl、あとはrsディレクトリのtrs_*.pl(ただし、trs_basic.plは除く)です。

const.plのいじくり方

@order_roletableに適当な文字列(半角で他のものと重複しないもの)を要素に追加してください。注釈をつけておくと忘れません。

setrole.plのいじくり方

GetSetRoleTable関数にifとかelsifとかずらずら並んでいる部分がありますね。そこに次のような文章を付け加えてください。

	} elsif ($roletable eq 'さっき設定した文字列') {
		# 〜配分表の取得
		&GetSetRoleTable〜($sow, $vil, \@roles);
	}

(ただし〜には適切な文字列を挿入する、関数名はこのソースにある関数名と重複してはいけない。かつ、〜の部分は半角英数字でなければならない)
例えば、次のような感じです。

	} elsif ($roletable eq 'wbbs_e') {
		# E国配分表の取得
		&GetSetRoleTableWBBS_E($sow, $plcnt, \@roles);

これからはこの例を用いて説明していきます。
では、この関数を定義しましょう。まず、GetSetRoleTableDefault関数を丸ごとコピーアンドペーストしちゃいましょう。
その後、この関数の名前をGetSetRoleTableWBBS_Eに変えちゃいましょう。(オリジナルのほうは元のまま)
その後、ぐだぐだ調整していくわけなんですが、ROLEID_HAMSTERというのがハムスター人間の配役番号です。
で、出来上がったソースは次のとおりです。

sub GetSetRoleTableWBBS_E {
	my ($sow, $plcnt, $roles) = @_;

	# 人狼
	$roles->[$sow->{'ROLEID_WOLF'}]++;
	$roles->[$sow->{'ROLEID_WOLF'}]++ if ($plcnt >= 8);
	$roles->[$sow->{'ROLEID_WOLF'}]++ if ($plcnt >= 15);
	$roles->[$sow->{'ROLEID_WOLF'}]++ if ($plcnt >= 24);

	# 占い師
	$roles->[$sow->{'ROLEID_SEER'}]++;

	# 霊能者
	$roles->[$sow->{'ROLEID_MEDIUM'}]++ if ($plcnt >= 9);

	# 狂人
	$roles->[$sow->{'ROLEID_POSSESS'}]++ if ($plcnt >= 10);

	# 狩人
	$roles->[$sow->{'ROLEID_GUARD'}]++ if ($plcnt >= 11);

	# 共有者
	$roles->[$sow->{'ROLEID_FM'}] += 2 if ($plcnt >= 16);

	# ハムスター人間
	$roles->[$sow->{'ROLEID_HAMSTER'}]++ if ($plcnt >= 17);

	# 村人
	my $total = 0;
	my $i;
	for ($i = 0; $i < $sow->{'COUNT_ROLE'}; $i++) {
		$total += $roles->[$i];
	}
	$roles->[$sow->{'ROLEID_VILLAGER'}] = $plcnt - $total - 1;

	return;
}

この配役パターンでは

となります。注意すべきなのは配役を作るときに少なくともダミーの村人を1人は入れることです。
なお上の〜人以上でとかいうのはダミーの人数も含んでいます。審問に慣れている方は注意。

trs_*.plのいじくり方

%caption_roletableにsetrole.plで設定した文字列とパターン名を加えます。
ただし、全部のtrs_*.plで名前を統一する必要はありません。今回の場合は、

		wbbs_e  => 'E国',

とでも設定しておけばいいでしょう。

トップページへ戻る


OROTIサーバー
webmoney買取換金