装備開発のソース | るーじゅ生活期2

るーじゅ生活期2

ゲームの缶詰WORネタ

あいすもなかさん!ソース発掘ありがとうございます!

ぺ・・・perlが全然わからん\(^o^)/

 

8/17 22:00解読追記

投資上限

武器・防具開発

  ・威力・・・1550万Gold

  ・重さ・・・1300万God

  ・耐久・・・2000万Gold

アクセ

  ・威力・・・525万Gold

  ・重さ・・・525万God

  ・耐久・・・1000万Gold

 

 

開発の仕組み

 

<武器・防具>

威力:

 rand( 投資額÷5 )

 300以上は300に修正  ※最大0~310の乱数

重さ:

 威力 - rand( 投資額÷5 ) + rand(30) 

   ※最大重さが威力から-260しかされない(0~260の乱数)

 重さが20未満であれば、 10 + rand(10)で再抽選

 重さ>威力になったら、重さ=威力

 → 威力300の防具ができた場合は、重さは最低でも40

   威力が10以上あれば、重さは最低でも10

耐久:

 rand( 投資額÷2 )

 最高999  ※ 0~1000の乱数

 最低50

 

<アクセサリー>

威力:

 rand( 投資額÷5 )

 100以上は100に修正  ※最大0~105の乱数

重さ:

 威力 - rand( 投資額÷5 ) 

 重さが10未満であれば、 rand(10)で再抽選

 重さ>威力になったら、重さ=威力

耐久:

 rand( 投資額÷2 )

 最高500  ※ 0~500の乱数

 最低50

 

以下ソース ---------------------------

#_/_/_/_/_/_/_/_/_/#
#_/ 武器作成 _/#
#_/_/_/_/_/_/_/_/_/#
sub TOWN_ARM2 {

    &CHARA_MAIN_OPEN;
    &COUNTRY_DATA_OPEN( "$ kcon");

    $date = time();
    $s_time = $date - $kdate;
    if($s_time < $BATTLE_TIME){$s_time = $BATTLE_TIME - $s_time;&ERR("次のアクションまで $s_time 秒お待ちください。");}

    if($in{'wei'} eq "" || $in{'dmg'} eq "" || $in{'tai'} eq "" || $in{'se_id'} eq ""){
        &ERR( "金額、種類が入力されていません。");
    }
    if($in{'newname'} eq "" || length($in{'newname'}) < 4 || length($in{'newname'}) > 16) { &ERR("アイテム名が誤って入力されています。」); }
    if ( ($in{'dmg'} =~ m/[^0-9]/) || ($in{'tai'} =~ m/[^0-9]/) || ($in{ 'wei'} =~ m/[^0-9]/) ) {&ERR("金額に数字以外の文字が含まれています。"); }

    $c_poi = $COUNTRY_POINT*4;
    if($kcex < $c_poi){&ERR("国への貢献度が足りません。 ($c_poi 以上)");}
    if($xxind <= 0){&ERR("これ以上作成できません。");}
    if($in{'town'} ne $xxins){&ERR("マークがなければ開発できません。");}

    $item_id = $in{'se_id'};
    $wei = $in{'wei'};
    $dmg = $in{'dmg'};
    $tai = $in{'tai'};
    $azuke = $wei+$dmg+$tai;

    if($azuke < 0) { &ERR("負の数は入力できません。"); }
    else { $azukeru = int($azuke) * 10000; }

    if($azukeru > $xxgold) { &ERR("お金が足りません。"); }
    else { $xxgold -= $azukeru; }

    $wei /= 5;
    $dmg /= 5;
    $tai /= 2;

    if($item_id eq "2"){
        if($wei>105){$wei=105;}
        if($dmg>105){$dmg=105;}
        if($tai>500){$tai=500;}
        $new_dmg = int(rand($dmg));
        if($new_dmg > 100){$new_dmg=100;}
        $new_wei = int(rand($wei));
        $new_wei = $new_dmg - $new_wei;
        if($new_wei < 10){$new_wei=int(rand(10));}
        if($new_wei > $new_dmg){$new_wei=$new_dmg;}
    }else{
        if($wei>260){$wei=260;}
        if($dmg>310){$dmg=310;}
        if($tai>1000){$tai=1000;}
        $new_dmg = int(rand($dmg));
        if($new_dmg > 300){$new_dmg=300;}
        $new_wei = int(rand($wei));
        $new_wei = $new_dmg - $new_wei+int(rand(30));
        if($new_wei < 20){$new_wei=10+int(rand(10));}
        if($new_wei>$new_dmg){$new_wei=$new_dmg;}
    }

    $new_tai = int(rand($tai));
    if($new_tai > 999){$new_tai=999;}
    if($new_tai < 50){$new_tai=50;}

    if($item_id eq "0"){
        open(IN,"$ARM_LIST");@ARM_DATA = <IN>;close(IN);
        push(@ARM_DATA,"$in{'newname'}<>$new_tai<>$new_dmg<>$new_wei<>$xxele<>0<>0<>$xxins<>\n");
        open(OUT,">$ARM_LIST") or &ERR2('ARM 新しいデータを書き込めません。');
        print OUT @ARM_DATA;
        close(OUT);
        $ mess = "武器";
    }elsif($item_id eq "1"){
        open(IN,"$PRO_LIST");@PRO_DATA = <IN>;close(IN);
        push(@PRO_DATA,"$in{'newname'}<>$new_tai<>$new_dmg<>$new_wei<>$xxele<>0<>0<>$xxins<>\n");
        open(OUT,">$PRO_LIST") or &ERR2('PRO 新しいデータを書き込めません。');
        print OUT @PRO_DATA;
        close(OUT);
        $ mess = "防具";
    }elsif($item_id eq "2"){
        open(IN,"$ACC_LIST");@ACC_DATA = <IN>;close(IN);
        if($new_dmg > 100){$new_dmg = 100;}
        push(@ACC_DATA,"$in{'newname'}<>$new_tai<>$new_dmg<>$new_wei<>$xxele<>0<>0<>$xxins<>\n");
        open(OUT,">$ACC_LIST") or &ERR2('ACC 新しいデータを書き込めません。');
        print OUT @ACC_DATA;
        close(OUT);
        $ mess = "アクセサリー";
    }else{
        $new_tai=1;
        open(IN,"$ITEM_LIST");@ITEM_DATA = <IN>;close(IN);
        push(@ITEM_DATA,"$in{'newname'}<>1<>$new_dmg<>$new_wei<>$xxele<>99<>0<>$xxins<>\n");
        open(OUT,">$ITEM_LIST") or &ERR2('ITEM 新しいデータを書き込めません。');
        print OUT @ITEM_DATA;
        close(OUT);
        $ mess = "アイテム";
    }

    $ xxind--;
    &COUNTRY_DATA_INPUT;
    if($ lockkey){&F_LOCK; }

    &MAP_LOG("<font color=orange><B>\[開発\]</B></font>$xxname局は新しい $mess"<font color=red>$in{'newname'}</font> 「威力(<font color = red> $ new_dmg </font>)、重量(<font color = red> $ new_wei </font>)を開発しました。」);
    #かっこいい
    if(-e $ lockfile){unlink($ lockfile); }

    &HEADER;

print << "EOM";
<h1>新しい$mess「<font color=red>$in{'newname'}</font>」威力(<font color=red>$new_dmg</font>)、重量(<font color=green>$ new_wei</font>)、耐久度(<font color=blue>$new_tai</font>)を開発しました。</h1>
<hr size=0>
<p>
<form action="$FILE_STATUS" method="post">
<input type=hidden name=id value=$kid>
<input type=hidden name=pass value=$kpass>
<input type=hidden name=mode value=STATUS>
<input type=submit value="村に戻る"></form>
EOM

    &FOOTER;
    exit;
}
1;