したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール まとめる | |

改造・制作スレ part8

1 名無しさん@桜花爛漫 :2016/05/21(土) 22:17:05 ID:1hw1nxVw
改造・オリシナ制作などはこちらで。
過去に似たような質問があるかもしれないので、極力調べてから質問しましょう。

ヴァーレントゥーガまとめwiki シナリオ製作講座
http://www28.atwiki.jp/vahren_ency/pages/411.html


改造・制作スレ
http://jbbs.livedoor.jp/bbs/read.cgi/computer/42292/1250722590/l50
改造・制作スレ part2
http://jbbs.livedoor.jp/bbs/read.cgi/computer/42292/1282244590/l50
改造・制作スレ part3
http://jbbs.livedoor.jp/bbs/read.cgi/computer/42292/1305281909/l50
改造・制作スレ part4
http://jbbs.livedoor.jp/bbs/read.cgi/computer/42292/1331214703/
改造・制作スレ part5
http://jbbs.livedoor.jp/bbs/read.cgi/computer/42292/1350187379/
改造・制作スレ part6
http://jbbs.shitaraba.net/bbs/read.cgi/computer/42292/1372172557/
改造・制作スレ part7
http://jbbs.shitaraba.net/bbs/read.cgi/computer/42292/1396009373/

745 名無しさん@寒露 :2017/11/07(火) 00:16:53 ID:???
ユニットを出し過ぎて大規模戦闘をし過ぎるとクラッシュする対策はないでしょうか
確か死んだユニットにも何かデータ割り当ててたと思うのですが、それを無効にしたりなど出来ませんか

746 名無しさん@寒露 :2017/11/07(火) 19:49:23 ID:???
参考までに聞きたいのですが、ユニット出しすぎって何体くらいでなりましたか?

747 名無しさん@寒露 :2017/11/09(木) 20:52:33 ID:???
>>745
自分は本家シナリオや「きのたけ」で召喚しまくっても、ユニット数の制限で出せなくなる事はあっても、クラッシュはしませんでした。それで不思議に思って、召喚しまくる実験をしてみました。

陣営ごとのユニット制限を btl_unitmax = 1000 に増やした上で、敵ユニットに範囲攻撃を使わせて、召喚されたユニットを一気に掃除することで、ユニット数の制限に関わらずに、大量に召喚することができます。(掃除しないと、表示されてるユニット数が制限を越えた時点で、それ以上の召喚ができなくなる。)召喚し続けると Vahren.exe のメモリー消費量が増えて行き、ユニット数が多過ぎるとゲームが落ちました。終了時に OS のエラー通知が無かったので、アプリケーション側で状況を見て自ら正常終了した感じです。

次に実験データを例示し、最後に私の結論を載せます。メモリー消費量はタスクマネージャーの数値ですが、微妙に上下するので厳密ではありません。戦場のオブジェクトやエフェクト、BGM、効果音、顔絵などで、実際のゲームではもっと消費が増えるはずです。スキルやエフェクトによる違いは試してないので、それらがユニット数に影響するかはわかりません。

748 名無しさん@寒露 :2017/11/09(木) 20:53:27 ID:???
[ 最新の v7.00 2017-10-12版 ]
敵は1ユニット、自軍は8ユニットで 1000 * 8 = 8000ユニット召喚しました。メモリー消費量は、召喚前は 332,748 KB、召喚終了時は 1,315,692 KB でした。(1315692 - 332748) / 8000 = 122.7 なので1ユニット当たり 123 KB ぐらいです。

敵は1ユニット、自軍は8ユニットで 1400 * 8 = 11200ユニット召喚しました。メモリー消費量は、召喚前は 326,152 KB、召喚終了時は 1,701,876 KB でした。ユニットを召喚するたびに増えるメモリー量は 123 KB で一定してます。

敵は1ユニット、自軍は8ユニットで 1440 * 8 = 11520ユニット召喚しました。メモリー消費量は、召喚前は 326,228 KB、召喚終了時は 1,741,600 KB でした。

敵は1ユニット、自軍は8ユニットで 1450 * 8 = 11600ユニット召喚しようとすると、途中で落ちました。召喚できるユニット数の限界は 11500 ぐらいのようです。

敵ユニットを1体から80に増やしてみました。敵は80ユニット、自軍は8ユニットで 1420 * 8 = 11360ユニット召喚しました。メモリー消費量は、召喚前は 336,484 KB、召喚終了時は 1,732,724 KB でした。

敵は80ユニット、自軍は8ユニットで 1430 * 8 = 11440ユニット召喚しようとすると、途中で落ちました。初期配置ユニットが多いと、召喚できるユニット数が減るようです。

味方ユニットも8体から80に増やしてみました。敵は80ユニット、自軍も80ユニットで 141 * 80 = 11280ユニット召喚しました。メモリー消費量は、召喚前は 345,092 KB、召喚終了時は 1,731,812 KB でした。

敵は80ユニット、自軍も80ユニットで 142 * 80 = 11360ユニット召喚しようとすると、途中で落ちました。陣営や召喚かに関係なく、戦場に登場した累計ユニット数に限界があるようです。

[ v7.00 の古い 2017-08-28版 ]
敵は1ユニット、自軍は8ユニットで 1000 * 8 = 8000ユニット召喚しました。メモリー消費量は、召喚前は 326,920 KB、召喚終了時は 558,408 KB でした。古いバージョンの方が、明らかにメモリー消費量が少ないです。

敵は1ユニット、自軍は8ユニットで 1400 * 8 = 11200ユニット召喚しました。メモリー消費量は、召喚前は 326,832 KB、召喚終了時は 650,632 KB でした。(650632 - 326832) / 11200 = 28.9 なので1ユニット当たり 29 KB ぐらいです。

敵は1ユニット、自軍は8ユニットで 1440 * 8 = 11520ユニット召喚しました。メモリー消費量は、召喚前は 326,912 KB、召喚終了時は 659,420 KB でした。古いバージョンでは、ユニットを召喚するたびに増えるメモリー量は 29 KB で一定してます。

敵は1ユニット、自軍は8ユニットで 1450 * 8 = 11600ユニット召喚しようとすると、途中で落ちました。メモリー消費量が少なくても、同じように落ちるので、メモリー不足はクラッシュの原因じゃないです。

敵ユニットを1体から80に増やしてみました。敵は80ユニット、自軍は8ユニットで 1430 * 8 = 11440ユニット召喚しました。メモリー消費量は、召喚前は 330,204 KB、召喚終了時は 660,548 KB でした。新バージョンだと落ちたのに、古いバージョンだと、最後まで召喚できました。

敵は80ユニット、自軍は8ユニットで 1440 * 8 = 11520ユニット召喚しようとすると、途中で落ちました。最大数は微妙に違いますが、古いバージョンでも、累計ユニット数には限界がありました。

味方ユニットも8体から80に増やしてみました。敵は80ユニット、自軍も80ユニットで 142 * 80 = 11360ユニット召喚しました。メモリー消費量は、召喚前は 331,240 KB、召喚終了時は 661,620 KB でした。やはり、古いバージョンの方が少し多くユニットを出せます。

敵は80ユニット、自軍も80ユニットで 143 * 80 = 11440ユニット召喚しようとすると、途中で落ちました。80 + 80 + 11440 = 11600 なので、累計ユニット数は 11500 ぐらいまでみたいです。

[ 開発版の v6.85v 2017-06-16版 ]
敵は1ユニット、自軍は8ユニットで 1440 * 8 = 11520ユニット召喚しました。メモリー消費量は、召喚前は 329,340 KB、召喚終了時は 661,108 KB でした。

敵は1ユニット、自軍は8ユニットで 1450 * 8 = 11600ユニット召喚しようとすると、途中で落ちました。メモリー消費量や限界は 2017-08-28版と同じようです。

[ 正式版の v6.90 2017-03-27版 ]
敵は80ユニット、自軍も80ユニットで 142 * 80 = 11360ユニット召喚しました。メモリー消費量は、召喚前は 331,492 KB、召喚終了時は 662,436 KB でした。

敵は80ユニット、自軍も80ユニットで 143 * 80 = 11440ユニット召喚しようとすると、途中で落ちました。メモリー消費量や限界は 2017-08-28版と同じようです。

749 名無しさん@寒露 :2017/11/09(木) 20:54:30 ID:???
実験の結果、最新版(2017-10-12) の問題点を発見しました。ユニット・データのメモリー消費量が古いバージョンに比べて4倍もあります。古いバージョンは1ユニットごとに 29 KB ぐらいだけど、最新版では1ユニットごとに 123 KB ぐらいです。したがって、ユニットを大量に出したいなら、最新版(2017-10-12) を使わない方がいいです。64-bit OS ならともかく、メモリー空間が狭い上に共有されてる 32-bit OS では、ユニット数の限界が来る前に、メモリー不足で動かなくなります。古いバージョンでも1ユニットに 29 KB もメモリーを使ってるのは謎です。数値データだけならもっと少ない筈なので、ユニットごとに画像データを保持してるのか、あるいは不要になったスプライトを解放してないのかもしれません。context や class の設定を変えたり、画像の大きさを変えたりしてみましたが、特に違いはありませんでした。

どうも、「死んだユニットにも何かデータ割り当ててる」のではなく、死んでもデータが丸ごと残ってるような気がします。その証拠に、スクリプトでは死亡ユニットのデータも取得できますし、死亡ユニットにスキルを使わせることもできるみたいですし、死体が消えずに残る不具合(沈んだユニット画像の上端が残る)もあります。スクリプトでユニットを取り除いた場合も、単に死亡扱いになるだけで、データは残ってました。ユニット数の限界に関しては、バグでは無いので、開発者に対応してもらうのは難しいように思います。

とりあえず、オリシナ作者ができる大規模戦闘時のクラッシュ対策としては、戦場に登場する累計ユニット数を 11500 ぐらいまでにするしかありません。守備側の初期配置数や援軍、攻撃側の出撃数や増援、それに双方が召喚する、全てのユニット数の合計です。無限召喚スキル(遠隔攻撃から召喚への連鎖)は、召喚数自体は設定できませんが、スキル使用間隔と連射数から、戦闘時間内に出せる数が決まります。予め、どれだけのユニットが戦場に出てくるかを計算して、その合計が限界以内に収まるようにすれば、クラッシュを避けれるでしょう。

750 名無しさん@寒露 :2017/11/10(金) 06:36:19 ID:???
これはかなり参考になるデータ
ありがたいです

751 名無しさん@寒露 :2017/11/10(金) 16:13:02 ID:???
メモリ的な限界は予想できてなかったのでうれしい

752 名無しさん@寒露 :2017/11/10(金) 17:16:04 ID:???
いや、メモリ的な限界が1番考えられただろ
その限界がどこまでかいまいちわからんかったのが問題だったわけで
それにしてもありがてえ検証だ

753 名無しさん@寒露 :2017/11/14(火) 17:00:11 ID:5622DLwA
setStatus(unit,move,hoge)が上手く動きません
talent=offのユニットだとうまく動かないでしょうか?それともほかの原因がありますか?

754 名無しさん@寒露 :2017/11/14(火) 17:27:13 ID:5622DLwA
少し気になって実験したのですが

unit notlnt
{
talent = off
name = ノータレ
}

setv(@aaa,notlnt)
msg(&notlnt&)→notlntと出力される

setv(@wanko,notlnt)
//この勢力にnotlntが存在するとする
storeUnitOfPower(pow,@bbb)
set(idx,0)
while(idx<count(@bbb)){
index(@bbb,idx,@bbb_get)

msg(&@bbb_get&)→notlntに当たった場合ノータレと出力される

if(@bbb_get == @wanko){

msg(同じものだよ!)→notlntが存在するはずなのに@wankoに合致するものがない
}

add(idx,1)
}

どういった問題を解決すればいいでしょうか・・・

755 名無しさん@寒露 :2017/11/14(火) 17:29:42 ID:???
連投すいません
目的としては、データベースとして使用しているtalent=onのユニットのステータスをtalent=offのユニットに移行するという目的です
データベースのmprecの数値でunitの種類を特定し、addUnitして追加したユニットにその他ステータスを落とし込むというのをやりたいと思っています

756 名無しさん@寒露 :2017/11/14(火) 17:55:36 ID:???
さらにすいません
>>754
誤;msg(&notlnt&)→notlntと出力される
正:msg(&@aaa&)→notlntと出力される
でした

757 名無しさん@寒露 :2017/11/14(火) 19:54:34 ID:???
unit構造体で定義された人材じゃないユニットを後からスクリプトでどうこうしようとするととんでもなく厄介だった記憶がある
dead_eventに疑似死亡イベント(レベルリセットして隠し領地に移動とか)を仕込んだ人材とかにした方が楽じゃないだろうか

758 名無しさん@寒露 :2017/11/14(火) 20:15:02 ID:???
>>757
talentなユニットだと困ることがあるのであえて外しています
具体的にはaddUnitした際に陪臣になってしまうことがやりたいシステムに致命的な邪魔になってしまうので

先日色々やってみましたが無理だったので、talentを外す方向で対応しました

とりあえずstoreUnitOfPowerとかで取得したユニットとして使えばマトモに使えて、setvで直接文字列突っ込んだのは使えないって感じになってますね

で、ユニットを外して入れ直す際のやり取りが

1・talent=onのダミーユニットを隠しspotに入れる
2・talent=offのユニット(以下メインユニット)のステータスを取得してダミーユニットに性能をコピー
3・メインユニットをeraseUnitで全部消す
4・メインユニットを再び発生させる、この際ダミーユニットを参照
5・ダミーのステータスを取得してメインユニットに反映

で、setLevelがこれまたダミーユニットにうまいこと反映しないみたいで、これはaddLevelを1づつするしかないのかな

759 <あぼーん> :<あぼーん>
<あぼーん>

760 名無しさん@寒露 :2017/11/15(水) 20:42:51 ID:???
>754
unit 構造体の名前(notlnt)と、ユニットの名前(ノータレ)の使い分けが難しいです。

wiki によると、setv は文字変数に文字列を代入します。
>> setv(@wanko,notlnt)
この行では @wanko に構造体の名前として「notlnt」を代入してます。

その一方で、storeUnitOfPower は「ユニットの識別子」を文字変数に代入します。そして、unit/classの識別子における文字変数要素とは name で指定した文字列のようです。
>> index(@bbb,idx,@bbb_get)
この行では @bbb_get にユニット名として「ノータレ」を代入してます。

>> if(@bbb_get == @wanko){
「notlnt」と「ノータレ」は異なるので、この比較で合致しない訳です。setv(@wanko,ノータレ) として、ユニット名で探したらどうでしょうか。

761 名無しさん@寒露 :2017/11/16(木) 16:52:33 ID:???
>>760
なるほど、全角文字をスクリプトでも使えるのですね
ちょっとそれ念頭においてやってみます

色々目からウロコでした、ありがとうございます〜

762 名無しさん@寒露 :2017/11/25(土) 21:04:37 ID:???
ユニットが遠隔攻撃しながら前進&後退するのが嫌で、スキルの減速率を大きくしたり(slow_per = 1 で99%減速するはず)、地形の影響を大きくした(consti = 1 で移動力が20%になるはず)のですが、じわじわ動くようにはなりませんでした。

それで不思議に思って調べたのですが、移動速度には最低値があるみたいです。2種類のユニットの移動力をそれぞれ 1 と 50 にしても同じ速さで動きますが、1 と 51 は微妙に違います。移動速度の最低は 50 と思われます。それなら最高値もあるのかと、移動力を上げて試してみました。移動力 1250 と 2000 は同じ速さで動きますが、1240 と 2000 は微妙に違いました。移動速度の最高は 1250 ぐらいです。

まとめると、地形やスキルの影響で変化した後の移動速度は0(完全に停止)か50〜1250の間になるようです。動きが速すぎると当たり判定が難しそうですが、遅すぎるのも駄目とは意外でした。

763 名無しさん@寒露 :2017/11/29(水) 16:10:18 ID:???
どなたかお知恵をお借りしたいのですが、無敵突進スキルを作る方法ってありませんか?
光の目の「幽鬼の浸透」を流用できればよかったのですが、私の勘違いでなければ、
chargeスキルだとslideしても無敵になってくれない(進路上の攻撃にボコボコにされる)ように見えます
nextでmissileスキルに渡してslideさせたら今度は動いてくれませんし、バフをかけることもできませんし…
charge使いたいのは助走の有無を判定したいからなので、missileでもそちらの代替ができるなら構いません
どなたか解決法をご存知ありませんでしょうか

764 名無しさん@寒露 :2017/12/01(金) 19:05:50 ID:???
>> 763
chargeスキルで実現する方法をいろいろ考えてみました。

A)高速移動で避ける。
光の目の「幽鬼の浸透」のスクリプトを見ても、どうやって無敵にしてるのか判りませんでした。とりあえず、スライド速度を、敵の発射する魔法・矢・弾よりも速くすれば、スライド中に攻撃されても避けれそうです。ただし、長距離を高速でスライドする必要があるので、思ってる動きと違うかもしれません。

B)バリアーを張る。
本家シナリオのリリスが敵の攻撃を相殺しながらスライド移動します。敵の攻撃に属性を付ければ、遠隔攻撃・魔法攻撃だけなら相殺で無効にできるでしょう。しかし、接近攻撃は防げなさそうです。

C)分身を送り出す。
敵陣をゆっくり往復したいなら、本体はスライドさせずに、攻撃モーションだけ動かす手もあります。「image = @@」にすれば自分のユニット画像になるので、resize_s と resize_s_start で途中から速度をマイナスにして、発射した画像が戻ってくるようにできます。その間、本体は攻撃位置で停止させておけば、分身がスライドしてるように見えそうです。分身は矢・弾と同じ扱いなので、敵に攻撃されません。ただし、本体は普通に攻撃を受けます。

D)回復しまくる。
敵から攻撃されることを前提にして、受けたダメージを直ぐに回復すれば、無敵と同じになります。「attack_us = 7」で自分を命中対象に変えてから healスキルに繋ぐと、敵を攻撃しながら自分を回復できます。ただし、一撃で死ぬような攻撃(即死・大ダメージ)には対処できません。また、回復量の数値がユニットの頭上に湧き上がるのは奇妙に見えるかもしれません。

どの案にも問題がありますが、参考になれば幸いです。

765 名無しさん@寒露 :2017/12/03(日) 13:06:47 ID:???
>>764
アドバイスありがとうございます。
そうですね、自分も実現可能なのはその4つだと思っています。

しかし、Aだと一瞬で多数のモブを斬り殺すサムラーイみたいな技になっちゃいますし、
Bは自分もやってみましたが、やはり接近攻撃は相殺できませんでした。
Dも思いつきはしましたが…突進よりむしろ全回復が便利な技になっちゃいますからねぇ。

Cなら工夫次第で、例えば自キャラを画面外にスライドさせて、
しばらくして戻ってこさせたら実質無敵に…等と考えましたが、
やはりヴァーレンの仕様を考えると「往復」にどうしてもなってしまうので、
無敵突進(一定距離まで何があっても突き進む)という自分のイメージとはちょっと合いませんでした。
色々すいません。

766 名無しさん@寒露 :2017/12/06(水) 23:02:12 ID:???
>>765
近接攻撃全部を近接で発動してダメージ判定をMissileにしたらどうですかね
近接後に一瞬だけ判定する小さいMissile攻撃を判定する感じです
ごく特殊なパターン以外でほかのユニットにあたることはないかと

767 名無しさん@寒露 :2017/12/08(金) 12:05:19 ID:ZVSUzBMM
シナリオを作っていて時折Vahren.exeを立ち上げてもエラーメッセージすら吐かないで消える事があるんだけど何なのかな?

768 名無しさん@寒露 :2017/12/08(金) 12:32:12 ID:???
datファイル開きながら起動すると落ちるよ
exe起動してからなら開いても大丈夫だけど

769 名無しさん@寒露 :2017/12/08(金) 14:50:59 ID:???
>>768
それはエディタ次第
terapadだとdat開きながらでも起動できるよ

770 名無しさん@寒露 :2017/12/08(金) 19:43:07 ID:???
メモ帳最強

771 名無しさん@寒露 :2017/12/09(土) 01:04:13 ID:J8woA3Go
プレイヤー勢力以外がみんな同盟結んでせめてくるんですがどうすれば解消されますか?
幼稚な質問ですいません。
diplo系を弄くろうとしたんですがコンテンツの解説にもなくて困っています。
hostil設定はしていません。

772 名無しさん@寒露 :2017/12/09(土) 18:56:34 ID:???
>>771
シナリオ製作講座に「外交について」という、そのものずばりの解説ページがあります。

プレイヤーが最強国になると、残りの敵が同盟を結びやすくなるのですが、その判定を diplo_most_power で調節することができます。最強国じゃないのに仲間外れにされるなら、相性の違いの影響かもしれません。敵同士の相性を悪くするとか、敵マスターの野望を高くして、お互いに争うように仕向ければいいです。

773 名無しさん@寒露 :2017/12/09(土) 21:52:57 ID:J8woA3Go
ありがとうございます。
できました。

774 名無しさん@寒露 :2017/12/11(月) 20:57:48 ID:???
RPGツクールなどのように
音楽用のOGGやMIDIをあらかじめ決めたループ地点からループするようにしたいのですが、
どなたか方法や改造の仕方をご存知でしたら教えてください。

775 名無しさん@寒露 :2017/12/11(月) 21:20:39 ID:???
原曲のファイルとは別にもう一つ、ループ再生用のファイル作っといて、
通常の再生が終わったらそのファイルに繋げるとかどうだろう
再生終了→次ファイルの再生開始がうまいこと繋がるように編集して、2週目以降はループ再生、って感じで

776 名無しさん@寒露 :2017/12/13(水) 19:50:33 ID:???
ウィンドウ枠の角を丸く表示する方法を見つけました。

RPGツクールVXのウィンドウスキン素材をそのまま使うと、左上のスキン画像がウインドウ全体に引き伸ばされるので、せっかく右上の枠画像を丸っこくしても、背景が四角に表示されて台無しです。(ツクールでは周囲の 2 dot には表示しないけど、ヴァーレントゥーガは全面に表示する為)

解決策は単純で、左上のスキン画像の四隅を枠の丸みに合わせて透明にするだけです。ウィンドウ枠の丸い角の透明部分は、背景画像でも透明になるので、綺麗に表示されます。(スキン画像は拡大されるので、透明部分も大きくなることに注意)

ほんの少しの修正で見栄えが良くなるので、ツクール仕様のウィンドウスキンを導入してる方は、ぜひ試してみてください。

777 名無しさん@寒露 :2017/12/14(木) 23:24:21 ID:???
>>775
灯方式で初回しか流す気がないイントロ部と、
ループさせたい主演奏部を別ファイルに分割する方が容量は軽くなりそうだな…

778 名無しさん@寒露 :2017/12/24(日) 19:43:57 ID:vV5Wt982
そういえばVTになってスキルやユニットで大きな画像を使えるようになったけど、スポットや旗だと大きな画像は使えないんだよね。
色々と画像に情報を詰め込もうとすると32×32だと足りない。

779 名無しさん@寒露 :2017/12/31(日) 17:12:34 ID:???
そういう意味じゃ旗の大きさ変えたり同じ勢力でも違う旗にできる方法があればいいんだけどねぇ

780 名無しさん@寒露 :2018/01/03(水) 13:31:17 ID:???
>>778
旗は仕様が決まってますが、スポット(領地)の画像は大きさを指定できます。
wiki の「シナリオ製作講座」の「spot構造体(領地の設定)」ページを参考にしてください。画像サイズを指定してやればいいだけです。

更にスクリプトで後から領地画像を変更することもできます。「関数(イベントの設定2)」ページの changeSpotImage です。
内政によって街が発展したり、戦乱で荒廃したりするのを、画像で表現すると面白そうです。

781 名無しさん@寒露 :2018/01/12(金) 22:16:57 ID:???
質問です

指定勢力の指定一般ユニットを別一般ユニットに変更することはできますか?
レベルによるクラスチェンジは無しで内政コマンドによって上位ユニットが開放されると自動で上位ユニットにクラスチェンジ……
と言うことがしたいのですが、制作講座見てもそれっぽいのがないので……

782 名無しさん@寒露 :2018/01/13(土) 00:25:52 ID:???
そういうのが有るなら俺も使いたいな
少なくともwikiにも無いしスクリプトで見た覚えも無いから多分無い
内政コマンドのイベント内でwhile使って全員changeclass処理するしかないと思う

783 名無しさん@寒露 :2018/01/13(土) 09:16:14 ID:???
changeClassにしても特定の勢力の特定の一般ユニットを変数に代入できるのかって問題が……

784 名無しさん@寒露 :2018/01/13(土) 10:48:32 ID:???
特定の一般ユニットってのがどういう範囲なのか分からないから何とも言えない
特定のクラスならstoreclassofunitで選り分ければいいし、領地ならstoreunitofspotでいい
特定のイベントで加入したユニットとかなると面倒くさいが、加入する時に識別用のスキルでも追加しておけばstoreskillofunitで判別できる

785 名無しさん@寒露 :2018/01/13(土) 13:35:15 ID:???
while,storeClassOfUnit,changeClassを使えばできる
勢力の標準雇用ユニットも合わせて変えるならerasePowerMerceとaddPowerMerce2でできる
それとクラスチェンジ前後でステータスが変わるならレベルは振り直した方が良いかもしれない

786 名無しさん@寒露 :2018/01/13(土) 15:33:46 ID:???
event classchange
{
storePowerOfUnit(@PowerAUnit, PowerA)
set(idx, 0)
while(idx < countVar(@PowerAUnit)){
index(@PowerAUnit, idx, @idx_unit)
storeClassOfUnit(@idx_unit, @idx_unit_class)
if (@idx_unit_class == classA){
changeClass(@idx_unit, classB)
pushLevel(@idx_unit, idx_unit_lv)
setLevel(@idx_unit, 1)
sub(idx_unit_lv, 1)
addLevel(@idx_unit, idx_unit_lv)
}
add(idx,1)
}
}

たぶんコレでいける
勢力Aの全ユニットのクラスを調べて、クラスAだった場合クラスBにクラスチェンジさせる
レベルを振り直さないならpushLevel以降はいらない

787 名無しさん@寒露 :2018/01/13(土) 16:06:22 ID:???
なにこれ凄い

レオーム家のソルジャーをボウマンにすると仮定するならば
まずレオーム家のソルジャー数を数え@PowerAUnitに代入、
レオーム家全ユニットに対してソルジャーかどうか確認しソルジャーならボウマンにクラスチェンジしidxに1加算。idxが@PowerAUnitを越えたら終了

って認識であってますかね……?組み合わせ次第でこんなことも出来るなんて目から鱗です!もっとスクリプト学ばないと……!
(完成するかはともかく)作成中のオリシナにこのスクリプトを改変(する部分が無さそうですが……)使用させて頂いてもよろしいでしょうか?

788 名無しさん@寒露 :2018/01/13(土) 16:32:53 ID:???
whileループは基礎中の基礎だからこのくらいは改変して使っても何も問題ないよ
シナリオ制作がんばれー

789 768 :2018/01/14(日) 00:02:02 ID:???
使用する関数が間違っていたので訂正
× storePowerOfUnit
◯ storeUnitOfPower

790 名無しさん@寒露 :2018/01/14(日) 00:06:50 ID:???
名前を間違ってしまった
もうだめだー

791 名無しさん@寒露 :2018/01/18(木) 15:01:22 ID:???
event ほにゃらら
{
storeUnitOfSpot(spot1,@s1haitiunit)
//spot1に配置されたユニットの種類を調べる
pushCon(spot1,@s1haitiunit,heisisuu)
//spot1に配置されたユニットの数を調べる(直接配置ユニット数のみを調べる関数は無いらしい?)
if (heisisuu >= 100)
//spot1に配置されたユニット数が100以上ならイベント発動
{
イベント処理
}
}
spot1に100ユニット以上が配置されていてもイベントが発動してくれません
毎ターン読み込まれ、毎ターン100ユニット以上つめこんでいるのでスクリプト自体に問題があるようなのですがどこが問題なのでしょうか?

792 名無しさん@寒露 :2018/01/18(木) 15:42:09 ID:???
spot1に2種類以上のユニットが配置されてませんか?
一部の関数以外は、複数の要素が入った文字変数は先頭を参照するので、例えばAが10体、Bが100体いて@s1haitiunitの先頭がAなら反応しないはずです
pushCon使ったこと無いけど

793 名無しさん@寒露 :2018/01/18(木) 15:44:32 ID:???
あ、あとユニットの種類に関係なく100体以上で発生ならcountvar(今はcountだっけ)でもいけると思います

794 名無しさん@寒露 :2018/01/18(木) 16:33:02 ID:???
ああ、ああ!引数の領地が持つ「全てのユニットの【識別子】」を〜と書いてあったから勘違いしてました!
storeUnitOfSpot(spot1,@s1haitiunit)
if (count(@s1haitiunit) >= 100)
で行けました!ありがとうございます!


新着レスの表示


名前: E-mail(省略可)


■ したらば のおすすめアイテム ■

こびとづかんフィギュア リトルハナガシラ - べネリック

いやぁさ、植木鉢の裏に結構居るもんだよね!

この欄のアイテムは掲示板管理メニューから自由に変更可能です。


掲示板管理者へ連絡 無料レンタル掲示板 powered by Seesaa