■掲示板に戻る■ 全部 最新50 1-

汎用キャラクターデータベースCGIの改造について

1 名前:使わせてもらってます:10/3/28 03:35 ID:M0p1zUwbpE
こんにちは。
アリアンロッドの汎用キャラクターデータベースCGIを使わせてもらってます。

改造していくうちに、わからないことがあったので質問させてください。

1.装備品の表に「魔法防御」の項目を作り、それを戦闘の表の「魔法防御」と
 連動させようと思ったのですが、自動計算の方法がわからないです。
 魔法防御の「合計」までは自動計算できたのですが、戦闘表に反映させる方法が……。

2.メモを等幅で出力されるようにdefView.htmをいじったのですが、
 (書き込みではじかれるので、コードはかけません。DATA:memoの前後にPREをつけてます)
 datに記録される改行の付与がBRなので、一部ブラウザでは空行が反映されません。
 これを\nに変えれば直るかなと思ったのですが、どこをいじればいいでしょうか?

あと、jsの質問になってしまうので、ちょっとスレ違いかもですが……。

3.#DATA:item1_weight#、#DATA:item2_weight#、などの数値を合計したいのですが、
 すっきりした記述にするにはどのような式になるのでしょうか? 今は全部足してます。

2 名前:猫魂(管理人):10/3/31 21:14 ID:MFBEzQbIu2
> 魔法防御の「合計」までは自動計算できたのですが、
> 戦闘表に反映させる方法が……。

アリアンロッドはやったことがないのでよくわかりませんが、
装備品に魔法防御値が設定されていて、その合計を戦闘表に反映させたい
ってことでいーんでしょうかね?
で、装備品に魔法防御の項目を増やして、装備品による魔法防御の合計値の
計算と表示は出来ていて、それをさらに戦闘表の合計(ダイス目)の値を
自動計算する際に利用したいのだがどうしたらいいのか、と。

装備品による魔法防御の合計値が出せてるのなら同じよーにやれば
よさそうなもんですけども……
えーと、装備品による魔法防御の合計値を出す際には、恐らくsumEquipment()を
修正したんだと思いますけども、戦闘表の合計の場合にはsumBattle()をいじって
やればいいわけです。
for (i in ary) {
sum = 0;
for (j in keyAry) {
...(省略)
}
// 魔法防御力ならば装備品による魔法防御の合計値を加算する
if (ary[i] == "btlMgcDef") {
sum += numCheck(valueCheck("装備品による魔法防御の合計値のID"));
}
textWrite(ary[i], sum);
}

こんな感じにやればいーんじゃないでしょーか。

3 名前:猫魂(管理人):10/3/31 21:26 ID:MFBEzQbIu2
> BRを\nに変えれば直るかなと思ったのですが、どこをいじればいいでしょうか?

どこって、まあBRのところを全部修正すればいーんじゃないですかね。
でも、書き込みではじかれるのでコードが書けないってのは、CGI(Perl)を
いじれないってことなんですかね。
でしたらば、JavaScriptでBRを\nに置換するしかないでしょうねえ。

例えば、#DATA:memo#を<pre id="memo">#DATA:memo#</pre>として、
viewStartup()の最後辺りで
var node = document.getElementById("memo");
var len = node.getElementsByTagName("br").length;
for (var i = 0; i < len; i++) {
node.replaceChild(document.createTextNode("\n"), node.getElementsByTagName("br")[0]);
}
てな感じで置換してやればいけるんじゃないでしょーか。(<は半角)


> すっきりした記述にするにはどのような式になるのでしょうか?

for文でも書くしかないんじゃないですかね。(<は半角)

IDがitem1_weight〜item10_weightのように、数字以外が共通の場合。
result = 0;
for (var i = 1; i <= 10; i++) {
node = document.getElementById("item" + i + "_weight");
result += numCheck(valueCheck(node));
}

IDがバラバラだったらこんな感じに。
result = 0;
var ary = new Array('str','dex','agi','iq','sns','mnd','luk');
for (i in ary) {
node = document.getElementById(ary[i]);
result += numCheck(valueCheck(node));
}

4 名前:顔なき導師:17/6/1 17:00 ID:v85sddEvBo
はじめまして。
今回こちらの汎用キャラクターデータベースCGIのアリアンロッドバージョンを改造させて頂いているのですが、移動力の部分で躓いています。
移動力の参照元の値を筋力にしたいのですが、行動値になってしまいます。
(main.js 88行目をstrにしてみたけど参照されるのはやはり行動値です)

defForm.htm及びdefView.htmでテキスト入力、反映させると、今度はその下の特殊な判定部分が反映されなくなります。

ご教授いただけると幸いです。

5 名前:猫魂(管理人):17/6/2 11:57 ID:mbHt6CxF6A
大分以前のものなので内容を詳しくは覚えていませんが、
ざっと確認してみたところ、CGI自体ではなく、JavaScriptを
用いて行動力とスキル修正値の表示値から移動力を計算して
表示させているようです。
main.js の88行目、

temp = numCheck(valueCheck('move_skl')) + 5;
temp += numCheck(valueCheck('btlAct'));
textWrite('move', temp);

となっている部分ですね。
ここの、btlAct というのが行動力のようですから、
これを str_base に書き換えてやればいーんじゃないでしょうか。

表示された値を読み取っているので、指定する文字列はHTMLにて記述された
IDの値です。
筋力の基本値ならば str_base、筋力ボーナスは str_bonus です。
必要ならばそれらを加算すればよいかと思います。

6 名前:顔なき導師:17/6/2 15:39 ID:v85sddEvBo
お返事ありがとうございます。
該当箇所を変更させて頂き、どうにか反映させることができました。

しかし、この箇所を弄ると、すぐ下にある[特殊な判定]の【能力値部分】及び【合計部分】がシートの方に反映されなくなります。

引き続きご教授頂けると幸いです。

7 名前:猫魂(管理人):17/6/3 11:29 ID:mbHt6CxF6A
自己改造部分まで責任は持てませんが……

えーと、予想するに途中でエラーになって処理が止まっているんじゃないですかね。
特殊な判定の能力値なんかは sumDecision() で表示させてるようですので、
sumDecision() かもしくはそれ以前の sumBattle() に記述ミスがあるかどうか
を確認ってとこでしょうか。
上記のID部分以外、どこかいじってませんかね。
まずはIDを元に戻して正常動作するかどうかを確認して下さい。

8 名前:顔なき導師:17/6/3 21:19 ID:v85sddEvBo
Javascriptに関しては他にいじった場所がなくて。

IDを変更前に戻した所、正常動作は確認できています。
変更するとやはり反映されなくなります…

9 名前:猫魂(管理人):17/6/4 13:57 ID:mbHt6CxF6A
ふーん、なんででしょうね。
実物を見て調べないとちょっとわかりませんね。

10 名前:顔なき導師:17/6/13 01:28 ID:v85sddEvBo
色々やっていたら表示されるようになりました。
ありがとうございました。

つい先日気づいたんですけど、 str_bonus で参照される値はクラス補正の前の数値なんですね…

11 名前:猫魂(管理人):17/6/13 09:30 ID:mbHt6CxF6A
そうですか……

12 名前:顔なき導師:18/3/11 02:09 ID:VjnWCYKN8c
ついに召還が実装されたと聞いて
公式のエディターを超えてしまいましたか・・・

6.30 KBytes   2chは使っていない、2ちゃんねる風掲示板ですが何か?
続きを読む

掲示板に戻る 前100 次100 全部 最新50
名前: E-mail(省略可):

(C) read.cgi (Perl) ver3.0 http://www.toshinari.net/ by 森元俊成