トップページ > 個人○○作成(武器以外)
個人○○作成(武器以外)
[概要]
ナンバーワンよりオンリーワン?
性能の高い超レアアイテムもいいけど、他人とはちがうもの(しかも自分が名付け親)なアイテムは持ってるだけでうれしくなるので。
個人武器作成もいいんだけど、プレイヤーに_hash.data書き換えさせたくなかったので作ってみた。
武器以外のものを想定している。防具とか守護精霊とか。プレイヤーはボーナス値9を4つのステータスに配分することができ、好きな名前をつけられる。
保存先は$PL_VALUES[47]を利用しているので、もし使用済みの場合は別のトコに保存しよう。
#####################config.cgi##########################################################
$ORIGINAL_ITEM = "精霊";
config.cgiの適当な位置に追加する。
ここを変えることにより、個人○○の部分が変わる。とりあえず初期値は精霊にしておいた。
#########################################################################################
########################ebs.cgi##########################################################
sub ORI_ITEM {require 'ebs_sub5.cgi';&ORIGINAL_ITEM;}
ebs.cgiの一番下にでも追加しておく。
#########################################################################################
###################ebs_sub3.cgi##########################################################
ebs_sub3.cgiの122行目(&STATUS)あたりに
my @ORI_DATA = split(/!/,$PL_VALUES[47]);
print"<span style=\"$STYL1\"> <b>$ORIGINAL_ITEM</b> </span><b>$ORI_DATA[0]</b> $STATUS_NAME[0]+$ORI_DATA[1] $STATUS_NAME[1]+$ORI_DATA[2] $STATUS_NAME[2]+$ORI_DATA[3] $STATUS_NAME[3]+$ORI_DATA[4] <br>";
と追加する。
ステータス画面で個人○○の名前を性能を表示する。
いろいろな情報をステータス画面に表示しすぎて邪魔なら、武器の予備2つをコメントアウトでもしとこう。
ebs_sub3.cgiの279行目(&CUSTOMIZE)あたりに
/^$ORIGINAL_ITEM作成$/ && do{
if($PL_VALUES[47]){&ERROR("$ORIGINAL_ITEMは1人1つまでしか所持できません");}
if((!$FORM{'ori_name'}) || (length($FORM{'ori_name'}) >= 30)){&ERROR("$ORIGINAL_ITEM名の入力が正しくありません");}
if(($FORM{'ori_at'} =~ /\D/) || ($FORM{'ori_at'} > 9)){&ERROR("$STATUS_NAME[0]補正の入力が正しくありません");}
if(($FORM{'ori_gu'} =~ /\D/) || ($FORM{'ori_gu'} > 9)){&ERROR("$STATUS_NAME[1]補正の入力が正しくありません");}
if(($FORM{'ori_sp'} =~ /\D/) || ($FORM{'ori_sp'} > 9)){&ERROR("$STATUS_NAME[2]補正の入力が正しくありません");}
if(($FORM{'ori_hit'} =~ /\D/) || ($FORM{'ori_hit'} > 9)){&ERROR("$STATUS_NAME[3]補正の入力が正しくありません");}
if(!$FORM{'ori_at'}){$FORM{'ori_at'} = 0;}
if(!$FORM{'ori_gu'}){$FORM{'ori_gu'} = 0;}
if(!$FORM{'ori_sp'}){$FORM{'ori_sp'} = 0;}
if(!$FORM{'ori_hit'}){$FORM{'ori_hit'} = 0;}
if((!$FORM{'ori_at'}) || ($FORM{'ori_at'} + $FORM{'ori_gu'} + $FORM{'ori_sp'} + $FORM{'ori_hit'}) > 9){&ERROR("ステータス補正の合計値が大きすぎます");}
$PL_VALUES[47] = "$FORM{'ori_name'}!$FORM{'ori_at'}!$FORM{'ori_gu'}!$FORM{'ori_sp'}!$FORM{'ori_hit'}";
last CUSTOM;};
と追加する。
実際に個人○○を作成している箇所。
上限値を変える場合は9となっている箇所を小さくしたり大きくしたりしよう。
#########################################################################################
###################ebs_sub4.cgi##########################################################
ebs_sub4.cgiの237行目(&BATTLE2)あたりに
#自分の個人○○に関する処理
if($PL_VALUES[47]){
my @ORI_DATA = split(/!/,$PL_VALUES[47]);
$Pl_AttPoint = int($Pl_AttPoint * ((10 + $ORI_DATA[1]) / 10));
$Pl_DefPoint = int($Pl_DefPoint * ((10 + $ORI_DATA[2]) / 10));
$Pl_SpPoint = int($Pl_SpPoint * ((10 + $ORI_DATA[3]) / 10));
$Pl_MisPoint = int($Pl_MisPoint * ((10 + $ORI_DATA[4]) / 10));
$Pl_Original = "<b>$ORI_DATA[0]</b>($STATUS_NAME[0]+$ORI_DATA[1] $STATUS_NAME[1]+$ORI_DATA[2] $STATUS_NAME[2]+$ORI_DATA[3] $STATUS_NAME[3]+$ORI_DATA[4])<br>";
}
#相手の個人○○に関する処理
if($VS_VALUES[47]){
my @ORI_DATA = split(/!/,$VS_VALUES[47]);
$Vs_AttPoint = int($Vs_AttPoint * ((10 + $ORI_DATA[1]) / 10));
$Vs_DefPoint = int($Vs_DefPoint * ((10 + $ORI_DATA[2]) / 10));
$Vs_SpPoint = int($Vs_SpPoint * ((10 + $ORI_DATA[3]) / 10));
$Vs_MisPoint = int($Vs_MisPoint * ((10 + $ORI_DATA[4]) / 10));
$Vs_Original = "<b>$ORI_DATA[0]</b>($STATUS_NAME[0]+$ORI_DATA[1] $STATUS_NAME[1]+$ORI_DATA[2] $STATUS_NAME[2]+$ORI_DATA[3] $STATUS_NAME[3]+$ORI_DATA[4])<br>";
}
と追加しておく。
+1につき+10%性能が高くなるようにしている。
ebs_sub4.cgiの377行目と380行目(&BATTLE2)をそれぞれ、
<b $chaStyl>EN:-$Pl_W[4]</b></div></td>
<b $chaStyl>EN:-$Vs_W[4]</b></div></td></tr></table>
から
<b $chaStyl>EN:-$Pl_W[4]</b></div>$Pl_Original</td>
<b $chaStyl>EN:-$Vs_W[4]</b></div>$Vs_Original</td></tr></table>
とでも書き換えておく。
両者の個人○○と能力を表示しているだけなので、各自好きなところで調整を。
#########################################################################################
###################ebs_sub5.cgi##########################################################
ebs_sub5.cgiの189行目(&SPECIAL)あたりを
$sp.= "<input name=\"custom\" type=\"submit\" value=\"個人$ORIGINAL_ITEM作成\" $STYLE_B1 onClick=\"document.Ms.cmd.value='ORI_ITEM';\">" if $PL_VALUES[29] >= 100 && !$PL_VALUES[47];
と追加する。
LV100と個人○○を持っていない場合だけ作れるようになる。
条件を変えたい場合はここを変えればいいけど、!$PL_VALUES[47]の条件を忘れると、いくらでも作れて毎回上書きしちゃうので注意。
ここだけじゃなくebs_sub5.cgiの&ORIGINAL_ITEM及び、ebs_sub3.cgiの&CUSTOMIZE()でも条件を満たせているかチェックするとなお良い。
ebs_sub5.cgiの一番下にでも
sub ORIGINAL_ITEM(){
&LOCK;
&DBM_CONVERT('P',"$FORM{pname}");
&UNLOCK;
&CUSTOM_HEADER('Main');
&JScfm(checkOriginalItem,"$ORIGINAL_ITEMを作成します。よろしいですか?");
print <<"EOM";
<TR><TD>$ORIGINAL_ITEM名:<input type=\"text\" name=\"ori_name\" size=\"30\" value=\"名無しさん\"></TD></TR>
<TR><TD>$STATUS_NAME[0]補正:<input type=\"text\" name=\"ori_at\" size=\"1\" value=\"0\"></TD></TR>
<TR><TD>$STATUS_NAME[1]補正:<input type=\"text\" name=\"ori_gu\" size=\"1\" value=\"0\"></TD></TR>
<TR><TD>$STATUS_NAME[2]補正:<input type=\"text\" name=\"ori_sp\" size=\"1\" value=\"0\"></TD></TR>
<TR><TD>$STATUS_NAME[3]補正:<input type=\"text\" name=\"ori_hit\" size=\"1\" value=\"0\"></TD></TR>
<TR><TD><input type="submit" name="Cmode" value="$ORIGINAL_ITEM作成" $STYLE_B1 onClick="return checkOriginalItem()"></TD></TR>
<TR><TD>ステータス補正は0〜9の範囲で設定して下さい。<BR>ただし4つの合計は+9までしか設定できません。</TD></TR>
</FORM></TABLE>
EOM
&FOOTER;
}
と追加する。
ここで個人○○の名前と性能を入力してもらう。
#########################################################################################