▼スレッド
│
└◇924:Re[4]:下が表示されない [moon] 01/26 19:27
└◇925:Re[5]:下が表示されない [ミル] 01/26 21:30
└◇926:Re[6]:新しい鍛冶品の追加 [moon] 01/26 22:18
└◇927:Re[7]:新しい鍛冶品の追加 [moon] 01/27 00:06
└◇930:Re[8]:新しい鍛冶品の追加 [ミル] 01/29 19:02
└◇931:Re[9]:新しい鍛冶品の追加 [moon] 01/29 22:13
└◇933:Re[10]:新しい鍛冶品の追加 [ミル] 01/31 19:15
└◇934:Re[11]:新しい鍛冶品の追加 [moon] 02/01 00:05
└◇935:Re[12]:新しい鍛冶品の追加 [ミル] 02/05 15:49<-last
> 分割を使用していますが、メインプログラムやプレイフォームのところはrequireという様にplファイルの指定はしています。スレッド一覧
> 下が表示されないということは何が読み込まれていないという状態なのか、分かりますか?
その時に表示されたページのソースを見るとどこでエラーが出ているのかの見当がつけられると思います。
# というかローカルサーバのCGIエラーログを見ればすぐにどこが悪いのか分かるのでまずはそれを確認してください。(ローカルテストをしていない場合はしてください。)
もしそれでも分からなければ見てみますのでHTMLソースの下から数行をここに書き込んでください。
> 後、恐縮ですがもう一つ質問です。
> アイテムの属性。というか、平たく言えば新しい種類の武具を追加したいのです。
> それで、他のサイトの改造法を見たのですが、# Sub Blacksmith #の追加方法が今一理解できないのです。
> これもよければ教えて下さいませんか。
新しい種類の装備品を追加するだけならsub blacksmithは変更しなくても大丈夫です。
sub blacksmithを変更するのは新しい鍛冶品を追加する場合です。
す……。すごいですね。httd。スレッド一覧
分からないところがバッチリ分かってロコポロものです(目からウロコがポロポロ)
おかげさまでバッチリ解消されました!分割の場合のrequireって思ってたより様々な場所にあるんですね……。全く私の不注意でした。
武器防具の追加ですが、言葉足らずでした。申し訳ありません。
新しい種類を追加するだけでなく、やはり鍛冶できるようにもしたいのです。
ご教授が面倒であればなんとかPC前で唸ってみますが……。
> 武器防具の追加ですが、言葉足らずでした。申し訳ありません。スレッド一覧
> 新しい種類を追加するだけでなく、やはり鍛冶できるようにもしたいのです。
> ご教授が面倒であればなんとかPC前で唸ってみますが……。
では、やっていることの要点を順を追って説明してみます。
1. $rnd = int(rand(100)) + 1;
成功するかの値を作成している。
2. if ($sp =~ /Ws/ && $sp =~ /As/ && $sp =~ /Sc/) { $trnd = int(rand(4)) }からelsif ($sp =~ /Sc/) { $trnd = 3 }まで
習得スキルにより何が出来るかを決定している。($trnd=0が剣、1が盾、2が鎧、3が銀細工)
3. $rnd = 0 if $sp =~ /Bp/;
鍛冶100%のスキルを習得している場合は必ず成功にする。
4. if ($rnd <= $def_pr) {から}
成功なら$trndの値に従ってアイテムを作成する。
(1) 2.の部分を修正して該当スキルを習得しているなら新しい鍛冶品に相当する値(オーソドックスにやるなら$trnd=4)が選ばれることがあるようにする。
(2) 4.の中にif($trnd == 4){この部分には銀細工などと似たような処理}をする。
(2)は他のをコピーして少し修正すれば良いだけですが(1)は組み合わせが少し複雑なので頑張ってください。
if ($sp =~ /Ws|As|Sc/) {この部分も修正が必要でした。スレッド一覧
ここに新しく追加した種類の鍛冶品を作成できるスキルを追加してください。
> (1) 2.の部分を修正して該当スキルを習得しているなら新しい鍛冶品に相当する値(オーソドックスにやるなら$trnd=4)が選ばれることがあるようにする。
上記は1つや2つくらいの追加ならそれほど面倒でもないですが追加する種類が多いと面倒なので次のような方法でやったほうが良いかもしれません。
my @trnd = ();
push(@trnd, 0) if(index($sp, 'Ws') != -1); # 剣
push(@trnd, 1, 2) if(index($sp, 'As') != -1); # 鎧と盾
push(@trnd, 3) if(index($sp, 'Sc') != -1); # 銀細工
push(@trnd, 4) if(index($sp, '??') != -1); # ??は新しいスキル
# さらに付け加える場合は似たようなものを連ねれば良い。
# ここから念の為なので無くても良い
if(!@trnd){
push(@msg, 'あなたは鍛冶が行えません。');
return;
}
# ここまで念の為
$trnd = $trnd[int(rand(@trnd))]; # $trndの決定
とても分かりやすく教えて頂き、ありがとうございます。そして遅いレスでごめんなさい。スレッド一覧
まだ2ぐらいまでしか進んでいないので、迷惑かもしれませんが問題にぶつかったときにまた教わらせてくださいませませ。
ところで、今気付いたのですがSoS2って鍛冶は何の種類ができるかはランダムなんですよね?
種類を増やすと自分の狙った武具ができず、なかなかイラつくと思うのですが、何かコマンドで作りたい種類の武具を選択する。等の良い救済措置はないでしょうか?
> ところで、今気付いたのですがSoS2って鍛冶は何の種類ができるかはランダムなんですよね?スレッド一覧
> 種類を増やすと自分の狙った武具ができず、なかなかイラつくと思うのですが、何かコマンドで作りたい種類の武具を選択する。等の良い救済措置はないでしょうか?
# 個人的にはランダムならランダムでその良さがあると思います。
アイテムの使用方法によりそれにあっている鍛冶のやり方が異なると思います。
例えば、アイテムを直接使用できるのならインゴットを一時使用にしてから種類を選択できるようにする、オリジナルのようにアイテムを直接使用できないならアイテム使用の画面で種類を選択してから使用できるようにする、など。
私の使用しているSoSは、ましまろ様の旧分割verですが、アイテムを使用しようとすると勝手に処理がされて鍛冶品ができる。というようになっています。スレッド一覧
ふむ……。ランダムならではですか。
やはり選択できたほうが良いと思います。鍛冶品ですから。自分の作りたい物を作れなくては。
まぁ、こんなことは人それぞれですからね。ランダムの場合も良いところはあるでしょう。
> 私の使用しているSoSは、ましまろ様の旧分割verですが、アイテムを使用しようとすると勝手に処理がされて鍛冶品ができる。というようになっています。スレッド一覧
では、後者の「オリジナルのようにアイテムを直接使用できないならアイテム使用の画面で種類を選択してから使用できるようにする」ですね。
それなら、次の手順で情報を探し当ててください。
1. MissingLinkのSoS2ページに掲載されている「改変・改良・改修のコラム」さんのURLをコピー。
2. 「Internet Archive」にてコピーしたURLを検索。
3. 見付かったページに掲載されている「インゴット使用時に、作製品の指定ができる方法」のURLをコピー。
4. Internet ArchiveでコピーしたURLを検索。
5. 見付かったページを見る。
# 表示関係で改良の余地があるのでその点にはNo.927が役に立ちそうです。
おおっ! これは便利ですね!スレッド一覧
おかげ様で選択できるようになりました! ありがとうございました。