スクリプト

一部のスクリプトをここにすこぉぉぉぉぉしずつふやしていくつもりです
注意:my($○○○, $△△△) = split /@□□□>/, $target;
の□□□>の>を『>』に打ち直してください

ブログパーツを表示させる方法(@Pages)

config.cgiを開く
# 設置Path(/index.cgiを除いたhttp://~のURL)ブログパーツ用リンク
$game_path = 'http://サーバー/自分のID/party2';
にあわせて書き換える

次にconfig.cgiと同じフォルダーのその他のcgi拡張子を開く
#!/usr/local/bin/perl
となっているものをすべて
#!/usr/bin/perl
に書き換える

虎三角さんの『家で販売システム』で販売禁止アイテムを設定する

※虎三角さんの自宅販売システムを使っている方のみです
_town.cgiを開く
#=================================================
# 町共通処理 Created by Merino
#=================================================
これの下に
# 販売禁止アイテム(例>'wea' => [1,2,3,4,5],)
%taboo_items = (
	'wea' => [], # 武器
	'arm' => [], # 防具
	'ite' => [], # 道具
);
をいれる
@ならべるの処理を以下に書き換える
sub list_up {
	my $target = shift;

	my($target1, $price) = split /@かかく>/, $target;

	if($target1){
		if ($price =~ /^([0-9]+)\x20?G?$/) {
			if ($price < 0) {
				$mes = "価格は最低でも 0 G以上です";
				return;
			}
			if ($price > 10000000) {
				$mes = "価格は最高 9999999 G以下です";
				return;
			}
		}else{
			$mes = "何らかのエラー";
			return;
		}
	}

	$price = sprintf "%d", $price;

	if(&is_build_house){#家を持っていたら

	unless ($target1) {
		
		$mes .= qq|<br />|;
		open my $fh, "< $userdir/$id/depot.cgi" or &error("$userdir/$id/depot.cgiファイルが開けません");
		eval { flock $fh, 2; };
		while (my $line = <$fh>) {
			my($kind, $no) = split /<>/, $line;
			if    ($kind eq '1') {
				$p .= qq|<span onclick="text_set('@ならべる>$weas[$no][1]@かかく')">$weas[$no][1]</span> / |;
			}
			elsif ($kind eq '2') {
				$p .= qq|<span onclick="text_set('@ならべる>$arms[$no][1]@かかく')">$arms[$no][1]</span> / |;
			}
			elsif ($kind eq '3') {
				$p .= qq|<span onclick="text_set('@ならべる>$ites[$no][1]@かかく')">$ites[$no][1]</span> / |;
			}
			elsif ($kind eq '4') {
				$p .= qq|<span onclick="text_set('@ならべる>$eggs[$no][1]@かかく')">$eggs[$no][1]</span> / |;
			}
			elsif ($kind eq '5') {
				$p .= qq|<span onclick="text_set('@ならべる>$anis[$no][1]@かかく')">$anis[$no][1]</span> / |;
			}
		}
		close $fh;
		$mes = qq|どれをならべますか?<br />$p|;
		return;
	}

	
	#持ち物開く
	open my $fh, "< $userdir/$id/depot.cgi" or &error("$userdir/$id/depot.cgiファイルが開けません");
	eval { flock $fh, 2; };
	while (my $line = <$fh>) {
		
		my($kind, $no) = split /<>/, $line;
		#選んだ品物と一致したら(自分の持ち物にアイテムがあったら)
		if($switch ==0 && (($kind == 1 && $weas[$no][1] eq $target1 ) or ($kind == 2 && $arms[$no][1] eq $target1) or ($kind == 3 && $ites[$no][1] eq $target1) or ($kind == 4 && $eggs[$no][1] eq $target1) or ($kind == 5 && $anis[$no][1] eq $target1))){
ここに↓を追加する
			#販売禁止アイテムの処理
			for my $taboo_item (@{ $taboo_items{wea} }) {
				if ($weas[$taboo_item][1] eq $weas[$no][1]) {
					$mes = "$weas[$no][1]は販売できません";
					return;
				}
			}
			for my $taboo_item (@{ $taboo_items{arm} }) {
				if ($arms[$taboo_item][1] eq $arms[$no][1]) {
					$mes = "$arms[$no][1]は販売できません";
					return;
				}
			}
			for my $taboo_item (@{ $taboo_items{ite} }) {
				if ($ites[$taboo_item][1] eq $ites[$no][1]) {
					$mes = "$ites[$no][1]は販売できません";
					return;
				}
			}
ここまで
			#自分の店の品物開く
			open my $fh3, "< $userdir/$id/depot_s.cgi" or &error("$userdir/$id/depot_s.cgiファイルが開けません");
			eval { flock $fh3, 2; };
			$count_ie = 0;
			while (my $match = <$fh3>) {
				$count_ie ++ ;
				my($kind2, $no2, $price2) = split /<>/, $match;
				if($kind == $kind2 && $no == $no2 ){
					$switch2 = 1;##同じ品物が店にあった
				}
				if($count_ie >= 30){ ##品物上限決定!
					$switch2 = 2;
				}
			}
			close $fh3;
			if($switch2 == 0){
				open my $fh2, ">> $userdir/$id/depot_s.cgi" or &error ("$userdir/$id/depot_s.cgiファイルが開けません");
				eval { flock $fh2, 2; };
				print $fh2 "$kind<>$no<>$price\n";
				close $fh2;
				$switch = 1;#一個だけ移動
				$mes = qq|お店に並べました。<br />$p|;
			}
			elsif($switch2 == 1){
				$mes = qq|同じ品物は並べられません!残念!<br />$p|;
				push @NEW_line ,$line;
			}
			else{
				$mes = qq|棚がいっぱいでした!残念!<br />$p|;
				push @NEW_line ,$line;
			}
		}
		else{
			push @NEW_line ,$line;
		}
	}
	

	close $fh;
	open my $fh, "> $userdir/$id/depot.cgi" or &error("$userdir/$id/depot.cgiファイルが開けません");
	eval { flock $fh, 2; };
	print $fh @NEW_line;
	close $fh;
	}
} 

天界での『@ねがう』のシークレットを使えるようにする方法

god.cgiを開く
#=================================================
# @ねがう
#=================================================
sub negau {
	my $target = shift;

	my $p = qq|<table class="table1">|;
	for my $i (0 .. $#prizes-1) {
		if ($prizes[$i][0] eq $target) {
			&{ $prizes[$i][2] };
			return if $mes;
			
			$npc_com = "ふむ。$mの願いは「$prizes[$i][0]」だな。<br />$mの願いを叶えたぞ…。機会があればまたあえるだろう…。さらばだ…";
			$m{lib} = 'home';
			&write_memory("$mの願い『$prizes[$i][0]』を叶えてもらう");
			return;
		}
の下に
		elsif ($prizes[$#prizes][0] eq $target) {
			&{ $prizes[$#prizes][2] };
			return if $mes;
			
			$npc_com = "ふむ。$mの願いは「$prizes[$#prizes][0]」だな。<br />$mの願いを叶えたぞ…。機会があればまたあえるだろう…。さらばだ…";
			$m{lib} = 'home';
			&write_memory("$mの願い『$prizes[$#prizes][0]』を叶えてもらう");
			return;
		}
を付け足す

アイテムの一斉送信

これを使えばアイテムの一斉送信できます
管理人専用に作ったのでなるべく他のプレイヤーに使わせないでください
まず、これを入れたいcgi拡張子を開く
↓禁止アイテムの設定
%taboo_items = (
'wea' => [], # 武器
'arm' => [], # 防具
'ite' => [], # 道具
);
と、それから
push @actions, 'いっせいにおくる',;
$actions{'いっせいにおくる'} = sub{ &issei_okuru }; 
を入れる
次に↓を入れる
sub issei_okuru{
	my $target = shift;

	opendir my $dh, $userdir or &error("$userdirディレクトリが開けません");
	while (my $dir_name = readdir $dh) {
		next if $dir_name =~ /\./;
		my %p = &get_you_datas($dir_name, 1);

#		if ($m{job_lv} < 1) {
#		$mes = "未転職の方は、送ることはできません。";
#		return;
#		}

		if ($p{name} && $target) {
			if ($target =~ /^([0-9]+)\x20?G?$/) {
				my $send_money = int($1);
				if ($send_money > $m{money}) {
					$mes = "そんなにお金をもっていません";
					return;
				}
				elsif ($send_money <= 0) {
					$mes = "送金は最低でも 1 G以上です";
					return;
				}

				&send_money($p{name}, $send_money, "管理人からの送金");
				$okutta = $send_money;
				$okutta .= G;
			}
			elsif ($m{wea} && $weas[$m{wea}][1] eq $target) {
				for my $taboo_item (@{ $taboo_items{wea} }) {
					if ($weas[$taboo_item][1] eq $weas[$m{wea}][1]) {
						$mes = "$weas[$m{wea}][1]は送ることができません";
						return;
					}
				}
				$okutta = $weas[$m{wea}][1];
				&send_item($p{name}, 1, $m{wea}, "管理人");
			}
			elsif ($m{arm} && $arms[$m{arm}][1] eq $target) {
				for my $taboo_item (@{ $taboo_items{arm} }) {
					if ($arms[$taboo_item][1] eq $arms[$m{arm}][1]) {
						$mes = "$arms[$m{arm}][1]は送ることができません";
						return;
					}
				}
				$okutta = $arms[$m{arm}][1];
				&send_item($p{name}, 2, $m{arm}, "管理人");
			}
			elsif ($m{ite} && $ites[$m{ite}][1] eq $target) {
				for my $taboo_item (@{ $taboo_items{ite} }) {
					if ($ites[$taboo_item][1] eq $ites[$m{ite}][1]) {
						$mes = "$ites[$m{ite}][1]は送ることができません";
						return;
					}
				}
				$okutta = $ites[$m{ite}][1];
				&send_item($p{name}, 3, $m{ite}, "管理人");
			}

			&get_depot_c;
		}
	}
	closedir $dh;
	if ($target) {
		$npc_com = "$okuttaを全員に送りました";
		$m{money} -= $send_money if $send_money;
		$m{wea} = 0 if $target eq $weas[$m{wea}][1];
		$m{arm} = 0 if $target eq $arms[$m{arm}][1];
		$m{ite} = 0 if $target eq $ites[$m{ite}][1];
		return;
	}

	$mes = qq|どれを送る?<br />$p|;
	$mes .= qq|<span onclick="text_set('@いっせいにおくる>$weas[$m{wea}][1]')">$weas[$m{wea}][1]</span> / | if $m{wea};
	$mes .= qq|<span onclick="text_set('@いっせいにおくる>$arms[$m{arm}][1]')">$arms[$m{arm}][1]</span> / | if $m{arm};
	$mes .= qq|<span onclick="text_set('@いっせいにおくる>$ites[$m{ite}][1]')">$ites[$m{ite}][1]</span> / | if $m{ite};
	$mes .= qq|<span onclick="text_set('@いっせいにおくる>$m{money}G')">$m{money}G</span> / |;
	$act_time = 0;

}
最終更新:2012年04月21日 22:40