レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
改造・制作スレ part8
キター!!
ななあしさんありがとうございます!!!
これで小隊システムいける!!!
500部隊ぐらい同時にだせる!!!(戦闘結果を全て手動で一気に動かせば高速)
ん、大部隊出せるようになる更新あったの?
>>469
おめでとう。
500部隊出せるってのは、一度の戦闘にという話だろうか?
>>470
なんか、複数の勢力を使って部隊運用うんたらとかいう話が前50レス以内にあったのよ。
そのために勢力を数百単位で導入する必要があったけど、そうなると1ターンの待ち時間が
長いからどうしよって話になってた。
それで今回設定された勢力の思考を完全にスキップできる要素が加わったからシステムに現実味が出てきたって話。
>>471
一度の戦闘にというのはどういうことでしょうか?
戦略マップには500(以上)配置できるようにする予定
隠蔽スポットも含め、使用可能性のあるspot数は現状おおよそ6万ほどを考えています
当然ですが、6万全部占領とかそういうシナリオではないです・・・
>>472
いや、いい忘れてくれ。ぶっちゃけ規格外の勢力数を使うオリシナは想像できんから、
どう現状を知ればいいかわからん。ゆえに質問も明後日の方向に。
公開をまじで楽しみにしてる、6万スポットとかも凄そう、がんばって。
不具合なのかどうかわかりませんが、ななあしさんに報告です。
「isComTurn()」を使ってCOM勢力のターン開始時にイベントを挿入すると、
「storeNowPower()」等で取得できるCOM勢力は、その時にターンが回っている勢力なのですが、
画面上の表示(勢力の状態やマスターの画像)は、一つ前のCOM勢力が表示されており、
内部的にはターンが回っている勢力になっているのに、画面表示は一つ前の勢力になっています。
関連して、ダメ元ながら要望です。
「isComTurn()」で判定されるタイミングは、COM勢力が外交を行う前ですので、
これを使ってCOM勢力のターン開始時に内政イベント等で資金を消費させる処理を行うと、
場合によってはCOM勢力が外交に使う資金が残らなくなってしまいます。(致命的なものではありませんが)
そのため、「isComTurn()」とはまた別に、COM勢力の外交の直後
(外交を実行していなくても、外交の思考を一度ひととおり終えた直後)の、
ユニットの雇用や移動の直前を判定する関数の追加は可能でしょうか。
先述の画面表示の件で仕様変更が出来ない場合の代替案としても要望します。
著作権とかそういう事に関してなんだけど
ユニットのアイコンを自作するため、そのための練習として本家のchipに入っているものをひたすら模写した
その甲斐あって今は自作できているんだけど、非常に本家のものと似ている(目の表現とかそのまんま)
こういう場合も、素材改変として考えたほうがいいのかな?
基本32マス×32マスでそんなこと気にしてたら禿げるぞ
嘘ついてないなら堂々としてればいい
>>476
ありがとう
とりあえず吹っ切れました
公開までがんばってみます
オブジェクトについて2つ質問があります。
マップメーカーの「重ねる」機能を使って、高さの違う二つのオブジェクトを重ねたのですが。
実際のマップで見ると、高さが下の位置のオブジェクトが優先的に描写されてとても不自然に見えます。
(下のオブジェクトの天井が、上のオブジェクトの側面より優先して描写される)
重ねる順番を変えてみたり、typeを変更したりしてみたのですがうまくいきません。
二つ目は、オブジェクトのミニマップの描写が、黒に近い灰色の塊であるため、ミニマップが汚く見える事です。
オブジェクトのミニマップ描写を変える方法はないのでしょうか?
地形チップと同じようにcolorをやってみましたが効果がありませんでした。
上記二つのことについて、何かご存知の方がいれば、ご教授お願いします。
重ねるはこっちではうまいこと動いてるけどなぁ
オブジェクト構造体の高さを見直してもう一度高さが下になるものから順に積んでみては?
祖国と銃との外交システムをロストテクノロジーとかに入れることできますか?
やり方わかる人ぜひ教えてください。
↑でいってた勢力ターンを素早く終わらせる設定はどこで確認できるんですか?
wikiは読みましたか
お手本みたいなクソコテで草
>>480
「祖国と銃との」というのは別シナリオという意味で取るなら別シナリオと直接つなげることはできません
「祖国と銃の」の誤字だとするなら外交システムというのはどの部分かはわからないですが、同じヴァーレンであるのでおそらくできないものはないかと
具体的にどの内政のどういうところをどの程度入れたいのかわからないので、wiki参照ってことで
>>481
勢力ターンを素早く終わらせる=スキップするだけの話なので、少し語弊があるかと
wiki参照です
wikiってまとめwikiのことですか
まとめwikiなら一通り見たのですがどこに書いてあるのかわからなくて…
おしえてくださいおねがいします
wikiってまとめwikiのことですか
まとめwikiなら一通り見たのですがどこに書いてあるのかわからなくて…
おしえてくださいおねがいします
まとめwiki一通りみても一切なにもわからないのならあきらめたほうが早いと思うよ
pcの操作すら分からない人がpcゲーのやり方聞く位スレ的には場違いだよ
wikiの意味は分かるんですか、どこに更新情報のってるんですか
それがわかんないです。
>>484「祖国と銃と」という題名のシナリオです。
内政イベントすこしいじくってロストテクノロジーの内政に上書きしたんですが
成功しないのです。
changePowerFixについてはわかりました。
イベント関連の改造は完璧に理解してないと難しいぞ
まあwikiのシナリオ製作講座見たら大体わかると思うが
個人的に宇宙戦ものシナリオがやりたいけど
もうないんだよね銀河英雄伝説とかをヴァーレンでとかできると良いけど
誰か作ってくれないかな(チラ
なんでいつまでも小学生相手にしてるの
みなさん分からないのですね。
自分で頑張ってみます。
最新版のDLと更新詳細というところを見れば分かると思うんだけど・・・
宇宙戦はシップ書くのがめんどくさい、現代戦+クトゥルフモノは絶賛制作中だけど
一ヵ月後にはエタってそうなやつ相手にパソコンの無料サポートしたいってやつはそうそういないわな
>>494
神々の黄昏ってのがありますよ。
拡張シナリオで。
>>495
更新については解決済みです。
ヴァーレンで三次元戦闘て無理じゃない?
基本は二次元ファンタジーだよね
具体的にどこをどう弄って駄目だったのか一切言わないんだもんな
一部追加ならともかく>>489 で言ってる通りの全上書きなんて祖国内政丸ごと持ってきてscenarioのpoliticsを祖国側と全く同じに上書きするだけだろとしか言えないし
自分で頑張ってみますって頑張ってから質問しろよクズ
勉強しようね
普通に組める様になったらSE職にも就けるよ
>>497
なぜそこでMarrinを勧めないんだ…
後は綺羅星の如くと、こっちは少し毛色が違う空中戦艦物だが黄昏の提督もあるな
VTのスクリプトは真面目にループ組まないと遅くなるからSEに向いてるかもな
言語とか覚えてかけるようになるのはすぐだし
なんか荒れてるなぁ・・・
流れ変えるけどpushDeathとstoreDeathの(部分的な)仕様メモ
wikiに書いてないっぽいし(だいぶ)前に質問している人がいたので書いてみる
直前の戦闘で死亡したユニットのデータを取得
援軍で参加した勢力、その戦闘で滅亡した勢力のデータも取得できる
pushDeath(?,勢力,?,基底クラス,?,数値変数)
storeDeath(?,勢力,?,基底クラス,?,文字変数)
あらかじめ「dead_event = count」がclass構造体(のベース)に書き込まれていないと無効
第六引数以外は@にして省略可、勢力には文字変数が使用できる
消滅しない人材ユニットも戦闘で死亡(HP=0)すればカウントされる
人材を除きたい場合は「dead_event = @」をunit構造体(のベース)に書くのが早い
自決・戦死した人材を含めたいならstoreDeath→生存している全人材をsubVarするのが多分いい
第一・三・五引数が何かは不明
第二引数を省略した場合はその戦闘に参加した全勢力の死亡ユニットが取得される
なんか解説が更新詳細のページに書いてあった時期があった気がする
その後別のページに書き写されるでもなく上書きされて消えた
ちょっと興味があって編集履歴から探してみたことがあったけど駄目だった
更新詳細の古い履歴があればなあ、と思うことがけっこうある
インターネット・アーカイブから探してみたけど見つからない
ファーレントゥーガという履歴書よりも確実な実績があった御人は
FFのリードプログラマーになれた
君も力を示せば就職は明るい
要望ですがimage.datの容量はこれ以上大きくできないでしょうか
可能であれば御一考願います
できればPCのベンチマーク機能も実装してください何でもしますから!
>>509
image.datの容量は最大「2048×2048」になってます・・・。
arbeit_capacity増やした傭兵の部隊にaddunitでユニットを追加しようとしたんだけど、上限増えてても8が上限と認識されるみたいで8人以上に増やせない
addunit以外に何かいい方法はない物だろうか
image dat になってるものを他シナリオで流用する方法はありますか?
例えば光の目のものを祖国と銃で使用するなど
image dat になってるものを他シナリオで流用する方法はありますか?
例えば光の目のものを祖国と銃で使用するなど
あるよ
だけどその方法を教えて良いのかどうかがわからないのだ
image.datの加工が必要になるのだが、昔ななあしさんがImageExtractorいうの作ってたけど問題が生じたとかで削除された経緯があったようでね
実際何がどう問題だったのか、今回のこともOKなのかどうか法律家でもない私にはわからないのだ
素材には素材の著作権があるからな
なんか他人のスクリプト見て勉強してると、else ifを使ってないことが多いのな
専用の変数用意してsetして次のif文飛ばしとかしてるんだが、そっちの方がelse ifより早いのかね?
本当に専用か確認した?
他でも使ってない?
else ifは確認そのものをすっ飛ばすんだからそんなに遅いはずないと思うけど
戦闘時イベントにelseが一切使えないのは理解してる
一応Visual Studio Code使っててフォルダ内全検索機能使って確認してるよ
銃魔のスクリプトだけど難読化目的なのかね?
銃魔見たことないけど俺も else if あんまり好きじゃないわ
if( 条件 ) { 処理 return } でさっさと引き返すほうが好き
他にevent(文字列変数)って手もあるよね。こっちはちょっと恐いけど
else if 使ったほうが後から見た時にひとまとまりの処理と認識しやすい
インデントがお粗末なスクリプトが多すぎて困ることが多い
そもそもそこは人の勝手だから
別に仕事で多人数で開発するわけでもないんだから他人が口を挟むところではないだろう
もちろん可読性が高いほうがバグ探しで有利だけどさ
else if使わないと何度もif通って重くなる場合がなぁ
それぞれ全く違う処理する場合(たとえば人材全パターン全く違うtalkを必要とする場合)で、人材のパターンがとてつもなく多いとelse ifで繋げなきゃいけないパターンもあるし・・・
ABCグループ化してAの中なら・・・Bの中ならで分割すれば軽くなるとはいえ、それだってパターンによってはさらにelse使わなきゃいけない場合もあるし、結局ifだelse ifだといっても何に使うかじゃないんでしょうか
そもそもif(){}if(){}とif(){}else if(){}では結果的に同じ動きするとしてもそれの持つ意味は厳密に言えば違うんだから
switch文が欲しかったです
else ifは使って当然という立場
switchはほしかったね
>>525
returnできるなら分岐内でreturnすれば、elseで繋ぐより速い・・・はず
if ( 1 ) { 処理1 } else if ( 2 ) { 処理2 } else { 処理3 } return
if ( 1 ) { 処理1 return }
if ( 2 ) { 処理2 return }
処理3 return
条件1・2がヒットする場合、後者のほうが1コマンド分速い・・・はず
ま、プレイヤーが体感できるような差ではないので、どうでもいい話ではありますね。
ワールドイベント(シナリオ指定イベント内)でreturnするとストーリー走らなかったりするし。
> 人材ごとにtalk
こんな分岐方法も使えるみたい。自己責任でどーぞ
event talk_人材1 {
talk(人材1だ)
}
event talk_人材2 {
talk(人材2です)
}
:
event プレイヤー人材を取得してイベント呼び出し {
setv( event_name, talk_ )
storePlayerUnit( str )
addstr( event_name, str )
// 存在しないイベントを誤って呼んでもエラーは出ない
routine( event_name )
}
ヴァーレンというより数学の質問なんだけどいいですか
勢力の経済値に連動して価値が上下する証券というか債権というかを作ってるんですけど、現在値段が経済値に比例するようになってる
でもこれだとゲーム序盤とか小規模勢力とかはすぐ証券価値が2倍3倍に上がっちゃうから、もっと緩やかな変化になるようにしたい
そこで√使おうと思ったんだけどヴァーレンの関数になかったから困ってる
ヴァーレンで可能な数値計算でどうにかできる方法はありますか?
教えて理系の人
一番簡単な方法言うぞ
勢力値をnumとして
if(num < 100){
set(loop, 0)
set(tmp, 1)
set(loop2, 0)
set(tmp2, 1)
}
else if(num < 2500){
set(loop, 10)
set(tmp, 11)
set(loop2, 100)
set(tmp2, 121)
}
else if(num < 10000){
set(loop, 50)
set(tmp, 51)
set(loop2, 2500)
set(tmp2, 2601)
}
else if(num < 22500){
set(loop, 100)
set(tmp, 101)
set(loop2, 10000)
set(tmp2, 10201)
}
else if(num < 40000){
set(loop, 150)
set(tmp, 151)
set(loop2, 22500)
set(tmp2, 22801)
}
else if(num < 62500){
set(loop, 200)
set(tmp, 201)
set(loop2, 40000)
set(tmp2, 40401)
}
else{
set(loop, 250)
set(tmp, 251)
set(loop2, 62500)
set(tmp2, 63001)
}
while(true){
if(loop2 <= num && num < tmp2){
break()
}
add(loop, 1)
set(loop2, tmp2)
add(tmp, 1)
mul(tmp, tmp)
set(tmp2, tmp)
set(tmp, loop)
add(tmp, 1)
}
このスクリプトはインデントのために全角空白使ってるからそのまま使うなよ
前半部分は高速化のための呪文部分
本質は後半のwhile(1==1)
癖でwhile(true)って書いてしまった
これで勢力値を二分の一乗した値がloopに代入されるぞ
ニュートン法使った方が早いだろうから自分で考えてくれ
SpotMakeHelper作者様へ
要望なのですが、ドラッグでスポットを自由に移動できるようにしていただけませんでしょうか
今のままですと微妙な位置調整ができず不便さを感じますのでご一考くださると幸いです
平方根はこれでイケるはず:
event calculate_sqrt
{
if(n<=0){
set(n,0)
return()
}
set(vp,1)
set(vq,n)
while(vp<vq){
mul(vp,2)
div(vq,2)
}
set(vq,vp)
set(vp,n)
div(vp,vq)
add(vp,vq)
div(vp,2)
while(vp<vq){
set(vq,vp)
set(vp,n)
div(vp,vq)
add(vp,vq)
div(vp,2)
}
set(n,vp)
}
回答書いてもらって感想の一つも言わんとは失礼なやっちゃ
初歩的かつ、恐らくもはや答えが出てる質問だと思うのですが、
調べても上手く見つけることが出来なかったので質問させて頂きます。
ヴァーレントゥーガ本体に入っている素材はヴァーレントゥーガを改造した
オリジナルのゲームでもヴァーレントゥーガと同じ条件で使用可能なのでしょうか?
ジャンキージャンク様等、素材の出所が分かる素材はそこに従えるのですが、
アイコンなどはどこから出てきてるのかも良く分からず困っています
公開するつもりなら流用はVT自体のMODとかでもない限りは止めた方が無難
アイコンは小物入れになかったっけかな
>>538
ありがとうございます。
「VTの拡張シナリオ」という体ならば、「俺はスクリプト書いてるだけなのでセーフ」になるんですね。
やはりオリジナルゲームとして公開するならばその辺りは一つ一つ確認する必要がありそうですね。
小物入れ探してみます。
重ね重ねお礼申し上げます。
正直√なんて無理だろうから他に良い方法ないですか?的なニュアンスで聞いたんですが普通に√出せるんですね 理系ってすごい
ありがとうございました
実際使うかは分かりませんが内政はそのうち公開するかもしれません(ngt用だけど)
>>535
PC書き込み規制+スマホ紛失コンボから今日復活したんだ
すまんな
独り暮らしでぼっち学生だから誰もスマホ鳴らしてくれないんじゃ
そんならしょうがあるめえ
>>533
作者です。
SpotMakeHelperをお使い頂きありがとうございます。
ドラッグ機能の追加検討したいと思います。
微妙な位置調整ですが、右側にあるNumericUpDownコントロールで値の増減が可能となってます。
そちらにフォーカスを合わせてキーボードのアローキーの上下または、マウスで▲▼ボタンをクリックすることで数値が1づつ変わります。
そちらもお試しください。
>>541
ありがとうございます!
初歩的な質問で申し訳ないんですが
人材追加をしようとした所エラーが出て困っています
ステータスだけのものならエラーが無しで起動するのですが、スキルを書き加えるとエラーが出ます
既存のスキルを名前と説明文だけ変更したものなのでスキル本体に問題はないと思うのですが…
エラー内容は
1:データ文で=を書き忘れています
2:データ文が不正です または関数が不正です
よろしければアドバイスお願いします
多分使っちゃいけねえ文字使ってんじゃねえかな
とりま書き換えた部分全てを調べて半角文字があったら全角にしてみ
>>543
>「スキルを書き加えるとエラーがでる」、エラー内容が「1:データ文で=を書き忘れています」
以上の事から、スキルの書き加えた構文が間違っていると推測できます
たぶん書き加えたスキルの前に「,(カンマ)」が抜けているのじゃないかな?
>>544 >>545
アドバイスありがとうございます
ちょっと忙しくて時間取れないので試せてませんが教えてもらった通りやってみます
返信ありがとうございました
SpotMakeHelper更新しました
http://ux.getuploader.com/vahren/download/4319/SpotMakeHelper+Ver1.2.zip
>>547
ありがとうございます!
ヴァーレン本体が落ちる目安ってPC機体毎に違うのでしょうか?
そもそも処理が重かったり多すぎると何故落ちるのでしょうか
重くなくても落ちるときは落ちるよね
そこらへんの基準がわかればありがたいのですがね
最新版はわからないけどaddtroopあたりは直近くらいまではダイアログでないまま落ちることがあったかな
time長めのスキルは要注意
人材専用スキルならまだしも、一般ユニットも扱えるスキルだと大体重くなる
これがでrushまであった日にはもう大変
おお、ありがとうございます
rushが大きいので、それも一因でしたか
呼ぶと100%無言落ちする関数あるよなしかも複数
ゼロから自作するなら関数のテストから始めたほうがいいですよ
領土を広げたAI勢力のマスターが孤立してアボン滅亡するのがちょっと嫌で、
マスター孤立アボンした勢力を復活させようとしているのですがうまくいきません。
if (isAlive(勢力A) == 0) {
event(勢力復活)
}
event 勢力復活
{
storePowerOfSpot(本拠spot, @文字変数)
if (@文字変数 == @ ) {
addPower(勢力A)
}else {
event(滅亡処理)
}
}
勢力Aが滅亡した時、本拠spot(power構造体のmemberに記述)が空白地なら、addPowerで勢力Aを復活せようとしています。
しかし、addPower(勢力A)の後も勢力Aは復活しておらず、isAlive(勢力A)では0が返ります。
本拠spotも空白地のままです。
wikiのaddPowerの説明には『指定した勢力を出現させます。power構造体のmemberに列挙されてるspotが領地となりますがry』
と記述してあるのですが、一度滅亡したpower構造体の再利用は不可能なのでしょうか?
マスターは死亡していません。
同名の別勢力をつくらないとダメだったと思う
>>556
滅亡時に滅亡するのではなく、アボンのエフェクトと滅亡ダイアログと同時に事前に決めたハイドスポットに逃がすってのはどうですか
復活自体は不可能です
>>557
>>558
ありがとうございます。
やっぱりPower構造体の再利用は不可能なんですね。
アボンのエフェクトと滅亡ダイアログはEXEが制御してるんでしょうか?ちょっと見つかりませんでした。
ちなみにVTではなく、LostTechnologyをベースに色々といじっています。
苦肉の策ですが、
storeSpotOfUnitでリーダーのいるspotを抽出し、isJoinで本拠地spotから途切れていたら、
リーダーを強制的に本拠地に飛ばす処理で滅亡を回避してみたいと思います。
かなり強引ですが・・・。
復活が駄目ならそもそも滅ぼされなければいいじゃない
やったことないが、戦闘開始前にchangeMasterでマスターを他の領地にいる人材に変更すればどうだろう
ただ戦闘中にマスター(元)のステータス確認されるとまずいが
>>559
エフェクトはskill spot_fireだったかな(?)でエフェクトそのものを処理してたはず
で、spotmarkの何番かでそれを指定の領地で発動させられます
ちなみにカチーンも可能
ということで、個人的な復帰というか擬似滅亡方法
イベントで滅亡する場合は勝手に国ごと逃せばおkで簡単なので割愛
条件は以下
1:滅亡条件が攻撃された場合
2:a:最後の1領地が取られる場合
b:隣接する領地がなく、その領地を取られた場合
c:隣接する領地がなく、Escape先がない場合
3:復活する想定がCPUである
2の条件を探すため事前に
a・領地数を数えて1の場合
b・storeSpotOfPower全領地を取って、whileで現在戦闘spotと隣接したspotが存在するかを調査
c・こればっかはもう事前に条件個別に作るしかない
このabcのいずれかが該当した時点で下のスクリプトへ
例として自シナのスクリプトを出しますがご容赦を
まずは戦闘開始時にイベント
//中立も条件にもしくは攻撃側で判定
☆呂蝉、高順、張遼、臧覇は自操作可能な味方で、こちら側が攻めた場合に敵にkahi_escp_spot という擬似撤退用スポットを領地に与え、spotつないで逃げ場を作ります☆
if(@atkpow == pkahi_ryosen|| @atkpow == pkahi_koujun || @atkpow == pkahi_choryo||@atkpow == pkahi_zouha&& zouha_ryuso != 1){
if(@defpow!=pkahi_moutoku){
addSpot( kahi_escp_spot , @defpow )
showSpot(kahi_escp_spot)
linkSpot(@batspot,kahi_escp_spot,0)
}
}
以下は戦闘イベントでなくワールドイベントで制御
storePowerOfSpot( kahi_escp_spot , @escp_now)
☆例として夏侯惇というユニットを使います☆
if(@escp_now != 0){
if(@escp_now==pkahi_kakouton){
if(count(@kakouton_spot)>=2 && has(@kakouton_spot,kahi_escp_spot)){
//守りきった場合、2つの領地を持ってる
//とはいえ、このシナリオでは確実に1領地しか持てない縛りがあるため、通常のシナリオでは戦場になったspotを持っているかを条件にするのがいいかと
subv(@kakouton_spot, kahi_escp_spot)
storeLeaderOfSpot( kahi_escp_spot , @kakouton_escp_unit_now)
addUnit(@kakouton_escp_unit_now,@kakouton_spot)
//連結した逃げ場を削除
hideSpot(kahi_escp_spot)
removespot(kahi_escp_spot)
}else if(count(@kakouton_spot)==1){
//負けた場合、領地が逃げ場の1つになる
//とはいえ、このシナリオでは確実に1領地しか持てない縛りがあるため、通常のシナリオでは戦場になったspotを持っているかを条件にするのがいいかと
storeLeaderOfSpot( kahi_escp_spot , @kakouton_escp_unit_now)
addSpot(kahi_kakouton_saihen_spot,pkahi_kakouton)
addUnit(@kakouton_escp_unit_now,kahi_kakouton_saihen_spot)
hideSpot(kahi_escp_spot)
//再編成用スポットkahi_kakouton_saihen_spotに逃がす
//理由としては、今後同じspotを使う場合があるため、ここに残しておくと夏侯惇以外の勢力が逃げたときに困る
removespot(kahi_escp_spot)
add(kahi_gekiha_point,5)
}
}
}
あくまでもそういう方法もあるってのと、結構細かいところ省いているのと、もっといい方法あるかもって想定の上で参考にして頂ければ幸いです
spotmarkとかは下の負けたパターンの場合の最後にダイアログと共に出せば問題なく表示可能かと
質問者ではありませんが、大変参考になりました
ありがとうございます!
>>561
遅くなりましたがありがとうございます。
とりあえず、
storeSpotOfUnit(マスター名, 現在地spot)
if (isJoin(本拠地spot, 現在地spot) == 0) {
storePowerOfUnit(マスター名, 所属勢力)
storePowerOfSpot(本拠地spot, 本拠地支配勢力)
if (所属勢力 == 本拠地支配勢力) {
addUnit(マスター, 本拠地spot)
dialog(マスター名,マスター名が本拠地spotへ脱出しました。)
}
}
安易で強引ですが、これとchangePowerFixを使って孤立アボンの可能性を抑えたいと思います。
もう1つ質問なのですが、stealth = 100って機能してるでしょうか?
攻城戦で、城壁内の櫓などの防衛兵器を遠距離職が攻撃して無駄死にするのを避けたくて、
防衛兵器のclass構造体にstealth = 100を追加したのですが、近接ユニットが殴りかかりました。
stealthは遠隔は無視するけど近接は殴る筈
>>564
納得しました。ありがとうございます!
addstringって素晴らしいよね
文字列変数に対するaddintegerもあれば本当に良かったのに
他にも数値変数の配列とか欲しかったです
配列使わなきゃい困るような複雑な処理は書かないけど変数名付けるのがめんどいから配列欲しい
変数が増えるに連れてザ・ド素人みたいな長い変数名になっていく
実際ド素人だけども
長い変数名はしょうがない というかそれでいい
へたに短縮するとそっちのほうが駄目でしょう
Wikiの制作講座と最新版のDLと更新詳細にも書いていないような関数とかどこで知るの?
pushDeathとかここで初めて知ったんだけど
>>567
長い名前のがテキストエディタで置換しやすい場合もあるから問題ないんじゃ?
というか配列は存在してるし、どの程度を複雑というかはともかく複雑じゃなくても別に配列は使えると思うけど、どういう配列を考えてるんだろ
Listみたいな?
マップそのものをシナリオ中に変更することってできますか?
マップの画像ではなく、マップ全体の大きさを変えたいです
ワールドマップ?
それとも戦闘マップ?
>>572
ワールドマップ
マップの一部を加えるといった形ではなく、全く違う大きさで違う場所のマップに切り替える感じ
bgを使って裏の画像だけ変えることはできるものの、横幅縦幅のスクロールはどう頑張っても変えられない
本体そのものを切ってスクリプトでmapを変更すればできるんだけど、プレイヤーにそれを求めるわけにはいかないし、内政1発でマップ切り替えみたいなのを想定してます
逆に考えるんだ
最初のマップより大きいのを使えないと考えるんじゃない
使うはずの一番大きなマップに合わせて最初のマップを用意するんだ
無駄なスクロール領域ぐらいなら大丈夫だろう
それはつまり地上戦と空中戦に分けて二つのワールドマップで進めていくみたいな感じ?
>>574
無駄なスクロール領域が極端に大きくなるんで勘弁してください
>>575
2つではないですが大凡そんな感じです
1つが極端に大きいマップでそれと別に極端に小さなマップを使用するため、非常に難儀しています
そこは内政ユニットを使ってセンタリングさせれば2,3クリックぐらいで済むしね?
640*480を2枚(AとB)用意するのじゃなくて、1280*480(A+B)でmap作って、
A側相当/B側相当を部分表示しておいて、hideSpot/showSpotで切り替えて使うとか?
debugPaperで640*480表示に設定してあれば必要な部分だけ表示は出来る…かも?(フルスクリーンの時にどうなるかは知らないケド)
>>578
まあ2枚ならちょっと違和感はありますがそれも可能かな・・・とは
とはいえその方式でするなら1枚+49枚なのでちょっと現実的じゃないかも
1枚をA、49枚をB00からB48として、AとBを行ったり来たりする感じですね
なお、フルスクリーンでbgやるとbgの方は左上に集約されます
map=だと一応ちゃんと表示はされるかなってぐらい
一応それは想定していなくはないのですが、あくまでもやりたいのは1枚と49枚の行ったり来たりって感じですねー
あと、やり方間違ってたらごめんですけどスクロールできちゃわないですか?それは
>>577
センタリングの意味がちょっとわかりません
ごめんなさい
>>580
言葉足らずですまぬ
サイズ小マップ(100*100)
に対して
サイズ大マップ(9000*9000)
としたら元々サイズ大のスクロール移動は呆れるほど面倒くさいはず
だったら内政欄(国策とか社会契約とか禁呪とかのある欄)に『移動』という項目を設けてみてはどうか?
移動内政スポットに置いておいた内政人材でサイズ小マップの中央あたりに存在する領地にスクロールしてセンタリングしたり、サイズ大マップの端の方に移動したり出来るようにすればいいのでは?
まあ、だだっ広い無駄領域がサイズ小マップに広がる事はこの案では避けられないが
>>571
シナリオ中に変更するのは無理
ゲーム中にsetUD(@scenario, @hogehoge)でシナリオ変更するのがいいと思う
>>583
シナリオ中にシナリオ変更できるのですか・・・?
いやもちろんシナリオ構造体からシナリオ構造体に移動できるのなら願ってもないのですが
NPCの新勢力旗揚げと陪臣雇用の両方をOFFする機能はありますが、
陪臣雇用だけをOFFするやり方ってありますか?
全人材に"loyal=自分"を指定するわけにもいかず、
compati_vassal_bdrを100以上にしてみましたが、100以上は認識していない感じでした。
開始時に
pushv(@freezepower,aaa)
msg(&aaa&)
set(idx,0)
while(idx<count(@freezepower)){
index(@freezepower,idx,@freezepower_get)
changePowerFix( @freezepower_get , freeze)
add(idx,1)
}
このような処理をしています
freezeに入っているのはプレイヤー勢力を除いた全勢力30勢力弱(aaaに入った数値)なのですが、プレイヤー勢力に終了を押した後再度プレイヤー勢力にターンが回ってくるまでに5秒ほどのタイムラグがあります
これはfreezeをせずともあるタイムラグと変わりません
どういった原因が考えられますか?
コンテキスト構造体で効果が分からない項目の仕様公開して欲しい
そこさえ改造できりゃ洋ゲー並みに戦えそうなのにもったいなすぎる
そもそも画像やスクリプトとかの暗号化の部分以外をオープンソースにして欲しい
まじかよ 更新されてら
でもバージョンは据え置きか
なんか素材に使えそうなのができたようなので共有
http://make.girls.moe/ #/
いいね!
だけど作成した画像の使用規約が見当たらないけど、知ってる?
すみません
class構造体やunit構造体でmerceを設定できるのはしっているのですが、
シナリオの途中で人材のmerceに新たに追加したいのですが、どのようにすればよいのでしょうか
addMerceって機能しないんだっけ
新しいmerce設定した新クラス設定しといてそっちに強制クラスチェンジとかでも一応出来るよ
ありがとうございます
試してみましたが人材の場合delskillだのlearnだの設定してあるとスキルが失われたりして結構大変ですね
一般はこれでうまくいきました
多分addFriendと一緒にやるって話だと思うんだけど
merceだけ書いてもfriendにできないクラスだと結局雇えないはずだから
merceの方だけ最初から書いといてもいいかも
それは最初に考えたのですが
他のMODと簡単に共存できるようにMODを作っておりますので、そのシナリオのクラスやユニットに手を加えて互換性を捨てるのは難しかったのです
次のようなスクリプトを組んで任意のタイミングで発動させるとメモリーの使用量が増え続けていく現象を見つけたのですがVTの仕様なんでしょうか。
処理が終了したあとも開放されずに居座っている感じです。ESC押しでタイトルに戻った時も使用量が変化していません。
開発中のシナリオでは文字変数を使用してイベントの呼び出しをしている処理が1ターン巡るあいだに数千、数万回実行しているのでかなり困っています。
setv(@call,testevent)
set(idx,10000)
while(idx)
{
sub(idx,1)
routine(@call)
}
event testevent
{
set(a,1)
}
メモリ使用量とかは分からんけどループにroutine入れると重くない?
>>597
俺もメモリとかはわかんなくてタスクマネジャー見る程度なんですが
呼び出し先(testevent)の変数をその都度クリアしてみたところ
メモリが増えなくなったような気がします
event testevent
{
set(a,1)
set(a,0)
}
ただ素人なんで自信はないです。試したexeはv7.0(最新ではない)です
>>597
そうかな? 俺は感じないけど
ローカル変数機能さえアレばな―
>>598
ストレスを感じる程度ではありませんね。
routine()ではなくてevent()で呼び出すと激重ですけど。
>>599
>俺もメモリとかはわかんなくてタスクマネジャー見る程度なんですが
当方もタスクマネージャーの詳細から使用量をモニタリングしていました。
>呼び出し先(testevent)の変数をその都度クリアしてみたところ
構造体変数の配列の代用として使っているのでそれができないです。
setv(@call, event_A)
routine(@call)
set(b, a)
event event_A
{
set(a,1)
}
event event_B
{
set(a,2)
}
etc...
という感じで値を参照するためにつかっているのでイベント構造体内での変数クリアができません。
文字型変数の場合はデータサイズが可変なのでクリアすることでメモリー使用量が変化するのは当たり前ですけど、
データサイズが固定である数値型変数はクリアしたところでメモリーの使用量には変化がないはずなんですけどどういうことなんでしょうね。
routineを何万回もやると重いのは俺環だったのか
もしかしてstoryをたくさん付けると重くなるのもうちだけか?
そのせいでstoryは全部一つにまとめてるしroutineも速さがさほど気にならない内政とかでしか使ってないんだけど
>>601
もしかしたら文字変数でイベント呼ぶと扱いが変わるのかもしれないですね
まあ俺にわかるのは「毎回クリアすれば増えないらしい」ってとこまでです
>>602
あ、ごめん、何万回も回したことはないからわかんない
シナリオの規模(イベント数とか)も影響してそうだし、事情が違うのかも
eventとかがあるのとないのとで確実に速さ違いますよ
100回ほど回るwhileにeventで100回回すのと、eventの中身をバラして入れたものだと後者のほうが圧倒的に速いです
イベント構造体の呼び出しを多用するとメモリー使用量が増加していくのは仕様みたいですね。
幸運なことに開発中のシナリオで見にいく必要がある変数が文字変数だけなのでゲームの開始時に文字変数の配列に展開しておきますか。
つきあってくれてありがとう。
>>604
やっぱりそうだよね
良くないけど良かった
>>604
一応確認、event( event構造体名 )が遅いのは仕様ですよ?
https://www28.atwiki.jp/vahren_ency/pages/534.html
> routine( event構造体名 )
> event構造体を呼び出します。
> 戦場マップや背景画像を指定しないただのサブルーチンを呼び出すのはこちらを使ってください。
> routine呼び出しの方が高速です。
>>597 の10000回ループもすぐ終わったし、
routine自体が重いってことはないと思いますが、何か条件があるのかも?
流れ的にevent「とか」ってのはroutineやstoryを含んでいるのだと思うが
何にせよオリシナやMOD公開するつもりならroutineループが重くなる環境が存在するということは頭に入れておいたほうがいいね
ただ確かに>>597 は全然重くないな
重くなった奴貼りたいけどもう全く別のスクリプトに変貌してるから無理だわ
ちなみに>>602 です
質問です。
power構造体のhome設定を後から変えたり、内容を取得する方法はありますか。
たしかないはずです
もう消えてるけどsetPowerHome(勢力,領地)がなかったっけ
一番簡単なのはwarlike使って線プッツンして狙いの方向に行かせるのが確実かと
>>612
少なくともwikiのログにはないけど
setPowerHomeは前スレでちょっとだけ出てたね
興味があったら試してみたらいいんじゃない?
更新のところにあるやつ、時々シナリオ製作のところに書かれずに流れちゃうことあるからねー
領地ウインドウを開いた時にイベントを発動させたいのですが、方法はないでしょうか?
また、領地を開いたり閉じたりする関数、開いている領地を取る変数、開いてる領地を条件にする・・・とかできれば助かるのですが・・・
もし仕様的にできないのであれば、ななあしさんに要望として目を通して頂ければとても助かります
もう機能追加はないと公式に宣言されてるで
公式に宣言されてるからといって完全に望みが絶たれたわけじゃないと思う。
少なくともmidiやoggのループ指定を組み込んでくれれば
RPGツクールやSRPGSTUDIOと同じくらいになるはずだから
それだけは是が非でも搭載してほしい。
変な数字入れるとバグって固まるとかでも全然いいんでAI設定の説明が欲しい
バグで思い出したけどスキルヘルプでアイコン出るようになったバージョンで何かスキルヘルプにバグあった気がしたけど
あれ直ったんだっけ?
スキルヘルプのバグなのか仕様なのかは分かりませんが、最新版でもそのままですね
ver7.00以降、func未指定の無効スキルのヘルプがスキルアイコンとスキル名が重なる
ワールド画面でユニットのスキルにオンマウスした時、
スキルヘルプ内にマウスカーソルが入っているとヘルプが開閉を繰り返す
>>621
このスレの過去ログにもある程度は出てくるけどそれ以外?
どの変数のことか書かにゃアドバイスしようがないと思う
scriptそのものが初心者な私に教えてください。
後々整理し易いように、作り始めた今のうちから先人のまとめかたを
参考にしたいんですけど、どの方のを参考にするのが皆さんオススメですか?
ヴァーレン派生のゲームで教えてください。
本家、むなしい努力、光の目は覗いてみました。
どれもすごいんでしょうけどわからなくて・・
整理しやすいまとめ方ってんならGreatEuropeWarとかスマブラ戦記とかかな
ジャンル別に細分化して個別にファイル作られてる
見やすいかどうかは別だけど
あと、もう使ってるかもだけど、サクラエディタ便利だよ
無いと何もできないレベル
自分がいちばん長く遊んだシナリオを読むのもいいよ
遊んで楽しいシナリオは自分の理想にも近い
ゲーム本体に詳しいほうがスクリプト読むのも楽しいし
vs codeの方がサクラより便利だよ
スクリプト覗くなら
本家ときのたけと銃魔と迫真は止めといたほうが良い
本家は作者がすっごいバラバラで書き方も統一されてない
きのたけと銃魔は国策関連が複雑過ぎて初心者には向かない
迫真はきのたけの流れを受けているから……
光の目は戦闘AIの書き方でいずれお世話になるが初心者にはどうだろう よくわからない
作者のコメントが多いのは祖国と銃と
むなしいも悪くない
まあ、こんなこと書いたけど一番良いのは>>627 さんの書いた通りスクリプト書きたいと思ったきっかけの作品を見ることだね
一番好きな作品なら愛を持って取り組めるはず
きのたけについて悪く書いたけどこれでMOD作成に入門したから好きであることがやっぱり大事だと思う
まぁでも、何をしたいかによるよね
挙動イメージとか掴まないままに見たらどのシナでもきっと鼻血が出る
皆さん色々教えてくれてありがとうございます!
書いてもらえたこと全部試してみますね。
今日scriptの種類?とか色々あることを知ったんですけど、
ヴァーレン系のscriptフォルダ内にある.datのファイルって
javascriptで合ってますか?
>>632
スクリプトはjavaではなく独自の言語で書くけど
構造体のことかな?
そうです構造体です。
あれは独自の言語だったんですね!
続けて答えてくれて皆さんありがとうございました。
Visual StudioとC#使える人にしか使えない(デバッグモードで例外周辺の変数を覗いて問題のファイルの場所を特定する)ヴァーレンの構文チェッカー作っててそれなりーにはできたんだけど私以外に需要ある?
>>635
ありますあります
Vの次はWだよね的なネーミングセンス
ヴァーレントゥーガ用構文チェッカー
Wahren ver0.0.0
ttps://ux.getuploader.com/vahren/download/4336
前にpushDeathの使い方wikiに載ってたような気がするんだけどなぁ
「なんか関数追加されたらしいけどよくわかんねーや」
→「銃魔ってシナリオが公開された、なるほどこう使うのか」
→「あれ、説明が消えてる」
みたいな感じだったと覚えてる
銃魔のために特注されたような関数だから時期としてはその前後だと思うんだけど
そのあたりを編集履歴やらアーカイブやらで探ってもさっぱりだ、あれは夢だったんだろうか
IFやWhileにも対応しました
実感としてかなりバグ取りが楽になりました
ttps://github.com/pCYSl5EDgo/Wahren
storememberofunit(test,@member)
storealltalent(@talent)
subv(@member,@talent)
上記のようにして人材以外の部隊メンバーに適用するイベントを作ろうとしたのですが人材が除かれませんでした
istalentでwhileループすれば除外できたのでこのイベント自体は問題ないのですが、storealltalentは他でも結構頻繁に使っているので使い方の認識を間違っているのだとしたら不安です
なぜ上の式では除外できなかったのでしょうか
>>639 すげえ
>>640
subvかも
以前使ったとき動作がおかしかったような。定かじゃないけど
>>640
subvとかaddvは変数に格納されている内容の、一番頭の内容しか見ていないからじゃないかな?
(@talentに「あ、い、う、え、お」と格納されているとしたら最初の「あ」しか見ていない)
だからwhileループで@talentの中に格納されている内容を、一つずつ取り出してやらないと意図した動作にならないハズ
>>641
>>642
まじかよ…やべえよやべえよ
複数要素の文字変数でのsubvaddv使いまくってました
今まで特に問題なかったけど大幅な修正が必要そうですね
ありがとうございました
まじか
俺のも直さにゃ
最終的な動作だけじゃなくて間にmsg&@変数&やら挟んで中身みながら特定してみてもいいと思う
他でうまく回っていたのならそこだけ実はoh! spell miss!してる可能性とか
>>588
スクリプトの暗号化はexeだから無いけど
画像の暗号化はPicEncoder.jarっていうやつを使うんだ
jarファイルってのは実はzipと同じフォーマットになっているから解凍をすると中からImageChg.javaっていうソースが出てくる
>>そもそも画像やスクリプトとかの暗号化の部分以外をオープンソースにして欲しい
とのことだが、実は画像の暗号化部分はオープンソースだったんだ
喜べ!
>>646
済まないが知ってた
艦隊コレクションの二次創作ヴァーレンでやってくれないかな〜(/ω・\)チラッ
昔、海戦再現した派生シナリオなかったっけ?
「何これ」のことだな
そこの作者のれどめも書いてるけど艦これは二次創作をゲームで発表するのは公式からNG
なんか、艦これキャラの絵を描いたトランプを出すだけでも動いてきた事がとかあったとかなかったとかあった気がする
>>648
ゲーム性があったらアウトなんじゃなかったっけ
フリーだとどうなんだろ
艦これのゲーム化権はDMMが独占してるから、艦これの窓口の角川側で勝手に許可が出せない
が、例の騒動もファンが勝手に騒いで勝手に自粛しただけだから、刺されない限りやるのは自由
だ、が、近年のヴァーレン界隈はクリーンに行こうとしているので、たぶん横槍入れられまくると思う
何これの艦載機スキルは正直面白いと思ってた
でも、マップが海だけだと代わり映えしないのが難だねぇ
極限まで簡素化した提督の決断4みたいだったなあれは
一例とした以下のような文字変数の要素数を数えて、その範囲内で乱数値を得る処理を実行していたのですが、特定の条件下で0ばかりが出力される現象に遭遇しました。
どんな原因が考えられるでしょうか。
setv(@str,a)
addv(@str,b)
addv(@str,c)
addv(@str,d)
addv(@str,e)
...etc(変数の要素数は可変です)
pushRand2(int1) ←ここは毎回乱数が出力されます。
pushv(@str, int2) ←ここも正しく取得されます。
mod(int1, int2) ←おそらくここで問題が発生します。なんで?
msg(&int1&)
結構前のバージョンの時にpushRand2について検証したことがあるんだけど、確かpushRand2で出力される乱数って必ず8の倍数だったはず
当時と仕様がが変わってなければ、それが関係しているんじゃないかな
>>655
剰余算で得た値にやたら偏りがあるのできになっていたんですがそういうことだったのですか。
ありがとう。
たしか許可さえ取ればかんこれは販売も二次創作ゲームもオッケーだった気がする
ただ、ゲームの画像とかbgmをそのまま使用したらアウトなだけでまねて描いた絵とかまねて演奏したやつならたしかおk
spotを陸と海に分ければ南方作戦とかできそう陸に上がれば船は動けない、みたいにすれば…
たしかGEWでなんか海軍と陸軍の移動の制限について語ってた気がしなくもない
スレチの雰囲気があったしあまり触れたくはなかったから静観してたけどよく調べもせず作って変な問題になって他のシナリオまで波及したらいやだから書いとくけど
「艦これ」の同人誌やイラスト・漫画・小説・コスプレ(全年齢)等の一般慣例的な【同人活動】については…公序良俗に反するもの・ゲームシステムのあるもの・ゲーム内の音源/画像を使ったもの・関係各社/者に迷惑を与えるもの以外は…【現時点】では基本【OK】と考えています
だからゲームシステムがある時点でトレースうんぬん以前にアウトだよ
フリーなら大丈夫?という意見もでてるけどボードゲームみたいなアナログなものはいいの?という質問に対して公式が
大変大変申し訳ありません、様々な見地/計画からそちらもご遠慮頂けますようお願い申しあげます。
といってるから自分が商品展開しようとしたときにすでに同人であってできないという状態を危惧してのことだろうからほぼアウトだと思うよ
どうしても作りたけりゃ大丈夫だろうから作るじゃなくて公式にしっかり説明して問題にならないようにちゃんと許可とってからやっておくれ
まあ、トランプの時も運営に許可とったかとってないかでももめてたし許可はどちらにしろいりますよね…
すまそ
VTのドット素材作りたいなと思うんですけど、教材としておすすめの本とかありませんか?
>>661
私はアップローダーのとこにあるドット絵をいじって覚えましたよ〜
なので、教材としてアップローダーのドット絵がVTのドット素材として企画も同じですし一番かと
ドット絵の打ち方ぐらいならwebに挙がってるようなやつで十分だよ
というか模写が一番早い 普通の絵もそうだけど、本はある程度描けるようになってからでないと、まず意味がわからない
たぶん、ななあしさんも想定していない仕様な気がするのですが、
addtroop等で出現させたユニットについて、出現したユニットが敵サイドのユニットにかかわらず、
その出現した敵ユニットを直接左クリックをすると操作できてしまいます
beastやunctrlTroopをすれば避ける事は出来ますが、
当addtroopで出現させたいユニットはプレイヤー通常操作のユニットでもあるため、beastは出来るだけ避けたく、
そしてunctrlTroopをした場合は、その処理が入ったとたんに戦闘中のユニット操作指定が全部はずれてしまうため、操作性にやや難が出てしまいます
なにとぞ良い知恵のご教授、もしくは何かしらの対応の方よろしくお願いしたく思います
複数の配列から配列をゲットする方法ってありますか?
例
@A→内部A00,A01,A02・・・・・A99
@B→内部B00,B01,B02・・・・・B99
・
・
・
・
・
@Z→内部Z00,Z01,Z02・・・・・Z99
と言う感じで配列があったとして、例えば今C56を取得した場合、B56、C55、C57、D56を追加で取得したいと言う場合です
ないです
配列ってのは文字変数のことで合ってる?
合ってるならindexとwhileループでマッチングすれば複雑にはなるけどできると思う
例えばの後の追加取得の法則性がよくわからないから例が書けないけど…
疑似的に二次元配列に展開されている要素から上下左右の要素を取り出すのならば、
変数を分割せずに要素を全部一つの文字変数配列に放り込んでおいたほうが簡単なのでは、
各列の要素数が100個あるのならインデックス値を+100or-100してやれば上と下の要素にアクセスできますよ。
ああ上下左右だったか
何にしても>>668 のやり方がベストかな
>>668
そこの問題点がありまして、文字変数を一定数以上連結すると非常に重くなる欠点が・・・
以前似たことをしようとして、spot5000個連結したらまず連結時に非常に重くなった問題ががが
それだけあるとどんな処理しても正直重そうな
いっそ開き直って「処理中ですからちょっと待ってね」なmsgだすとか
重さ的に許容できる範囲内で実現可能な二案、三案を用意した方がいい気もするとか
>>671
500づつに分割してどこがhasしてるか確認して10の配列をelseifで探していけば問題なくいけました
問題はこの配列が10個で済むパターンならいいのですが、最終的なシナリオで数万クラスを想定しているので、それで回数かけてwhileするのは現実的じゃないので何らかの方法を考えていました
以下のスクリプトで事前計算によりループの回転を100回未満に抑制できるはずです。
//変数@allに全要素を格納 A-Zの各列の要素は100個あるものとする
setv(@all,A00)
・
・
・
addv(@all,Z99)
//事前計算用変数
setv(@a,A00)・・・addv(@a,A99)
setv(@b,B00)・・・addv(@b,B99)
・
・
・
setv(@c,C00)・・・addv(@c,C99)
//インデックス値の推測
if( 1 == has(@a, @str) )
{
set(idx, 0)
}
else if( 1 == has(@b, @str) )
{
set(idx, 100)
}
else if( 1 == has(@c, @str) )
{
set(idx, 200)
}
・
・
・
else if( 1 == has(@z, @str) )
{
set(idx, 2500)
}
set(idx2, idx)
//変数@strの上下左右の要素を変数@getに格納する
clear(@get)
while( idx < idx2 + 99 )
{
index(@all, idx, @tmp)
if( 1 == equal(@tmp, @str) )
{
//両隣の要素を取得
set(tmpidx, idx)
sub(tmpidx, 1)
if( 0 <= tmpidx && tmpidx <= idx2 + 99)
{
index(@all, tmpidx, @tmp2)
addv(@get, @tmp2)
}
set(tmpidx, idx)
add(tmpidx, 1)
if( 0 <= tmpidx && tmpidx <= idx2 + 99)
{
index(@all, tmpidx, @tmp2)
addv(@get, @tmp2)
}
//上下の要素を取得
set(tmpidx, idx)
sub(tmpidx, 100)
if( 0 <= tmpidx && tmpidx < count(@all))
{
index(@all, tmpidx, @tmp2)
addv(@get, @tmp2)
}
set(tmpidx, idx)
add(tmpidx, 100)
if( 0 <= tmpidx && tmpidx < count(@all))
{
index(@all, tmpidx, @tmp2)
addv(@get, @tmp2)
}
break()
}
add(idx, 1)
}
誤りがあったので訂正です。
以下のスクリプトで事前計算によりループの回転を100回未満に抑制できるはずです。
//変数@allに全要素を格納 A-Zの各列の要素は100個あるものとする
setv(@all,A00)
・
・
・
addv(@all,Z99)
//事前計算用変数
setv(@a,A00)・・・addv(@a,A99)
setv(@b,B00)・・・addv(@b,B99)
・
・
・
setv(@c,C00)・・・addv(@c,C99)
//インデックス値の推測
if( 1 == has(@a, @str) )
{
set(idx, 0)
}
else if( 1 == has(@b, @str) )
{
set(idx, 100)
}
else if( 1 == has(@c, @str) )
{
set(idx, 200)
}
・
・
・
else if( 1 == has(@z, @str) )
{
set(idx, 2500)
}
set(idx2, idx)
//変数@strの上下左右の要素を変数@getに格納する
clear(@get)
while( idx < idx2 + 100 )
{
index(@all, idx, @tmp)
if( 1 == equal(@tmp, @str) )
{
//両隣の要素を取得
set(tmpidx, idx)
sub(tmpidx, 1)
if( idx2 <= tmpidx && tmpidx < idx2 + 100)
{
index(@all, tmpidx, @tmp2)
addv(@get, @tmp2)
}
set(tmpidx, idx)
add(tmpidx, 1)
if( idx2 <= tmpidx && tmpidx < idx2 + 100)
{
index(@all, tmpidx, @tmp2)
addv(@get, @tmp2)
}
//上下の要素を取得
set(tmpidx, idx)
sub(tmpidx, 100)
if( 0 <= tmpidx && tmpidx < count(@all))
{
index(@all, tmpidx, @tmp2)
addv(@get, @tmp2)
}
set(tmpidx, idx)
add(tmpidx, 100)
if( 0 <= tmpidx && tmpidx < count(@all))
{
index(@all, tmpidx, @tmp2)
addv(@get, @tmp2)
}
break()
}
add(idx, 1)
}
>>674
ありがとう
でも最初の2600の配列あるだけで相当重くなりません?
なんか他の原因あるのかな・・・
>でも最初の2600の配列あるだけで相当重くなりません?
ゲーム再開直後に文字変数配列を作成して保存しておけば毎回配列要素の作成をしなくてもいいですよ。
>>676
でなくて、その文字変数の配列があるってだけでやたら重いのは何か問題あるのかな・・・と
>>677
メモリーの使用量が増えると重くなるのは仕様なのでは、空いているアドレスを検索する処理がリソースを消費しているんじゃないですかね。
メモリーは最大で1.5GB程度まで使えることは確認していますけど、1GBを超えるくらいになると重すぎて実用レベルとはいえませんね。
使っていない、使い終わった文字列変数はclear関数で開放してやってメモリー使用を節約するくらいしかないと思いますよ。
>>678
なるほど
1つだけの配列だと重くて、複数に分割すると軽いのはそこらへんも関係あるのかなきっと・・・
setPowerHomeで勢力のHome設定を操作しているんですけど、COM勢力のspotの戦力配置に重みをつける方法はありますか。
質問です。
皆様シナリオのMapを作る時どのようなツールを使用していらっしゃるのでしょうか?
個人的にはむなしい努力の地図の雰囲気がとても好きです。
本家VTも雰囲気好き
私も同じような地図作りたいんでツール教えてください。
本家付属ツール使いんさい
ワールドマップの事じゃないの?
もしそうなら俺はsaiで描いてるな
choiceについてですが、選択肢の数が流動的な場合、想定される選択肢の数を全部書くしか方法はないですか?
例
誰を仲間から外しますか?の場合
その時点で仲間である物が1〜20人すべての可能性を想定する場合、選択肢1はselectで表現するにしても、choiceで表現する場合引数2〜20個の全てのパターンが必要でしょうか?
空欄や名前をクリックしたら元にもどる等の挙動で妥協する予定はありませんので、選択肢の数を決める方向性でお願いします〜
妥協せずに一つずつ全部書くしかないと思う
ランシナの配下選択みたいに4、5程度の選択肢の複数ページに分ければパターン少なめで済むかも
>>684
Great Europe Warの「部隊長一覧.dat」が割合そのまま使えそうな感じかな
文字数制限に引っかかったから自分で見てくれ
Boiにも似たようなキャラ選択があったな
あっちはキャラ数が多すぎて、小分けが顔あり、顔なし、ゲストの3枠だけでは手間が全く軽減されてない有様だけど…
「最後尾のキャラをチームから外します。よろしいですか?」
>>687 >>689
それは初期の人数が決まってる場合にのみ有効なような・・・
>>690
最後尾が隠れてる状態になると外せるようにしたいので無意味ですね
>>688
調べてみます
>>691
場合分けと剰余演算でイケるイケる
>>691
おまえ毎回条件後出しにして揚げ足取ってないか?
他人にアイディア求めるならもう少しちゃんと説明しろよ
>>680
たぶんないんじゃないかな。隠し関数は知らないけど
ワールドイベントで部隊を動かしてやるほうが早いと思う
>>692
なるほど、〜以上なら1ページ、〜以上なら2ページ・・・って感じで割り算の数値ページ分だけ用意した後、余ったページを使うと言うのはいいですね
>>693
>>691 はなると→なってもですね失礼しました
全想定のラインを細かく話さなきゃいけないならキリなくなるんで質問もできませんが・・・
最後尾のことでしたら、それを限定したはずし方になるのでそもそもの目的と大きく外れますし、元々choiceを用いてということを説明しています
>>694
結局どの仲間を外すかってことにchoiceが必要になってしまいそうなので、choice全通りとページ周りを両方試してみます
ワールドマップでの解雇となると、やはりプレイヤーが解雇「しない」という選択肢を取ってそのまま進めてしまうことを想定できちゃうので、無理そうですね
質問の要点をまとめるのは質問者の最低限のマナーだよ
キリなくなるから後出しジャンケンしますって回答者をbotか何かと勘違いしてない?っていわれても文句いえないぞ
>>692
綺麗にいけました、ありがとうございました〜
>>697
そのためchoiceを用いることと、人数の流動的な仲間を外すことという2点を要点として伝えました
それで足りないのであれば、どの程度をまとめればいいかわかりませんが、botとは考えていません
だからこそ出来る限り返事をしています
以上です
返事を下さった皆様ありがとうございました〜
ぶっちゃけ>>687 で終わってるのに何も考えずに聞き返してる辺りがもう
自分で考える気あるのか
しかも質問の返答に対して無意味ですねとかSAN値0かよ
ユニットの「素早さ (speed) 」と実際の攻撃頻度がどう関係してるのか調べてみました。
戦闘時のゲーム速度は「普通」のまま。行動速度は標準値の unit_action_bdr = 4000 です。
attack = 1, defense = 0 で単発の接近攻撃だけ所有する実験ユニット同士に殴り合いさせて、経過時間とダメージで攻撃回数を数えました。時間は厳密に計ったわけではないです。
speed = 60 だと一分間(戦闘時間で300経過)に43〜44回ぐらい接近攻撃します。
スライド速度が速い場合に攻撃回数が増えるか調べるため、
unit_sword_slide = 9 (12フレームで前進)
unit_sword_slide = 12 (9フレームで前進、標準はこれ)
unit_sword_slide = 50 (2フレームで前進)
で試しましたが、攻撃回数に違いはありませんでした。
スライドが速く終わっても、次の行動間隔までの待ち時間が長くなるだけです。
unit_sword_slide = 4 (25フレームで前進?)
前後にスライドするのに50フレーム(2秒)必要だろうから、スライドが終わるまで次の攻撃を待つなら、一分間の攻撃回数は30回になるはずですが、
実際には攻撃回数は43回と変化しません。
unit_sword_slide = 2 (50フレームで前進?)
前後にスライドするのに100フレーム(4秒)必要だろうから、スライドが終わるまで次の攻撃を待つなら、一分間の攻撃回数は15回になるはずですが、
実際の攻撃回数は30回でした。スライドが終わるのに丁度2秒かかってます。
スライド速度が極端に遅いと、行動間隔よりも長くなって、攻撃回数が減ることが確認できました。
ただ、スライド速度のパーセント指定の数値を極端に小さくした場合は、細かい距離が四捨五入されるせいか、スライド時間は計算通りにはならないようです。
スライド速度が影響しないように速くした条件で、speed だけ変えてみました。
speed = 70 だと一分間に50〜51回ぐらい接近攻撃します。
speed = 80 だと一分間に57〜58回ぐらい接近攻撃します。
speed = 90 だと一分間に64〜65回ぐらい接近攻撃します。
speed = 100 だと一分間に71〜72回ぐらい接近攻撃します。
「きのこたけのこ戦争」や「Brave of Island」では unit_action_bdr = 3500 になってるので、攻撃速度がどれだけ変わるかも調べてみました。
speed = 60 だと一分間(戦闘時間で300経過)に49〜50回ぐらい接近攻撃します。
speed = 70 だと一分間に57〜58回ぐらい接近攻撃します。
speed = 80 だと一分間に66回ぐらい接近攻撃します。
上記の調査結果から以下のことを推論しました。
戦闘時の内部カウンタは経過時間の10倍らしいので、1分で3000カウント、1秒で50カウントです。
「unit_action_bdr の数値」÷「ユニットの speed 値」=「間隔のカウント数」
のような関係がありそうです。
しかし、実際には unit_action_bdr = 4000, speed = 80 にしても、攻撃間隔は毎秒よりも微妙に遅くなるので、
「攻撃間隔=間隔カウント+2」ぐらいになってるのかもしれません。
この計算式を計測結果と比較してみました。
unit_action_bdr = 4000 の場合
speed = 60 なら攻撃間隔は 4000/60+2=69カウントなので、一分間に 3000/69= 43.5回攻撃します。
speed = 70 なら攻撃間隔は 4000/70+2=59カウントなので、一分間に 3000/59= 50.8回攻撃します。
speed = 80 なら攻撃間隔は 4000/80+2=52カウントなので、一分間に 3000/52= 57.7回攻撃します。
speed = 100 なら攻撃間隔は 4000/100+2=42カウントなので、一分間に 3000/42= 71.4回攻撃します。
unit_action_bdr = 3500 の場合
speed = 60 なら攻撃間隔は 3500/60+2=60カウントなので、一分間に 3000/60= 50.0回攻撃します。
speed = 70 なら攻撃間隔は 3500/70+2=52カウントなので、一分間に 3000/52= 57.7回攻撃します。
speed = 80 なら攻撃間隔は 3500/80+2=46カウントなので、一分間に 3000/46= 65.2回攻撃します。
だいたい理論値と計測値が一致するようです。
オリシナ作者がユニットごとの素早さを調節する際の参考にでもしてください。
ありがてえありがてえ
>>700 >>701
制作してからずっと思ってた謎が解けた
今年一番のありがとうを贈りたいよ
遠隔攻撃の速度について調べてる際に、ゲームの描画速度について矛盾点に気づきました。過去ログには描画速度が 25 fps とあったので、フレームレートと内部カウンタは別に進んでる(フレームスキップする為とか?)のだと思ってましたが、よくわかりません。
wiki によると、直進型の遠隔攻撃で「speed は1フレーム毎に進むドット速度」とあります。したがって range = 500, speed = 100 なら最大射程まで到達するのに500フレームかかるはずです。実際に見てみると、戦闘時の経過時間で50(10秒)でした。500フレームで10秒なら、1秒に50フレーム (50 fps) となります。これだと、内部カウンタとフレームの進み具合は完全に一致します。
50 fps で動いてるとするなら、先の接近攻撃のスライド速度も正しいことになります。wiki によると、接近攻撃の slide_speed は「12なら9コマ、25なら4コマで敵に当たる。」とあります。例えば、unit_sword_slide = 2 ならフレームごとに 2% 前進するので、50フレーム(1秒)で前進して、更に50フレーム(1秒)で戻ります。前後にスライドするのに丁度2秒かかる訳で、これは実際に計測した攻撃間隔と一致します。
上記の wiki の記述が正しいとすると、描画速度は 50 fps ということになります。しかし、wiki 内の「関数(イベントの設定)」で wait の説明に「このゲームは25fpsですので1秒間waitするなら25とします。」とあります。もしかすると全体マップと戦場画面でフレームレートが違うのかもしれません。(全体マップでは 25 fps だけど、戦場では 50 fps になるとか。)あるいは、単に wiki に書く際にフレームと内部カウンタを混同してるのかもしれません。(speed は1フレームではなく、1カウント毎とか。)どなたか詳しい情報を持ってる方がおりましたら、教えて頂けるとありがたいです。
一撃で敵を倒しやすいインフレ・シナリオでは、敵が死んだ後もその場所を攻撃し続ける現象が発生します。本家シナリオでは気になりませんが、「Brave of Island」で人材を強化しまくって無双プレイしてると、敵が居ない所を2度3度と攻撃するのが目に付きます。
どうしてこうなるのか script を見てみると、context.dat の unit_search_bdr が関係してました。標準の unit_search_bdr = 100 だと100カウント(2秒)ごとに標的を探すような感じです。「Brave of Island」ではこの値が unit_search_bdr = 160 と大きいので、敵が死んだ後に、誰もいない所をしばらく攻撃し続けます。試しに 50 に減らしてみたら、敵を倒す度に攻撃目標を切り替えてくれました。
無駄撃ちを避け、次々に敵を倒して爽快感を得たい場合は、unit_search_bdr の値を低くすると良さそうです。一方で、特定人材の攻撃力が強過ぎて、大群を片端から掃除してしまう、というのが嫌な場合は、unit_search_bdr の値を高くすることで、空撃ちを多くして、集団戦に弱くできます。「Brave of Island」のスクリプトは凝ってるので、参考になります。
こういうのほんと嬉しい
wiki にある「skill 構造体: missile 」のページの start_degree_type の説明で、「7: スキル発射方向をユニットの向きにします」とありますが、この説明は間違ってるような気がします。実際には「ユニットの向きにスキルを発射します」ではないでしょうか。本家シナリオのスクリプトで start_degree_type = 7 を使ってるのはソルジャー系の「シールド」で、盾は敵の方向ではなくユニットの向きに追随して動きます。
それに、start_degree_turnunit という後に追加された命令は「スキル発射方向にユニットの向きを変えます。」というものです。わざわざ新規に追加したのは、start_degree_type = 7 とは逆の効果にする為だと思います。
ただ、これは私がスキルを試してる際にそう見えただけで、本来の動作なのかはわかりません。とりあえず、他の開発者の経験を知りたくて書き込ませてもらいました。
>>707
日本語の問題だけども元からある説明とあなたの説明とでは前後が入れ替わってるだけでいってることは同じだよ
>>708
あなたのおっしゃる通りです。ご指摘ありがとうございます。
707番の投稿は無視してください。wiki の説明を私が誤読してました。「スキル発射方向を(標的の方向ではなく)ユニットの向き(と同じ)にします」ということですね。それなら実際の挙動通りで問題ありません。「スキル発射方向を(start_degree で標的の方向からずらした後で)ユニットの向き(として扱うこと)にします」みたいな誤解をしてました。本家シナリオで start_degree_type = 7 は start_degree と一緒に使わずに、単独で設定してるので、この場合だけ start_degree は無視されるんだと思います。
<あぼーん>
>>704
の投稿で、このゲームが 25 fps か 50 fps なのか質問した者です。
過去ログを調べると共に、実際にイベントも作って試してみました。結論から言うと、私が調べた限りでは、このゲームは戦闘中もそれ以外も 50 fps で、wiki 等に 25 fps と書かれてるのが間違いです。以下にその根拠を示します。
「改造・制作スレ」の706(2010/05/22)に、開発者(ななあし様?)による「speed=1000だと1フレームに10ドット進みます。」との記述がありました。wiki の speed の説明は正しいということです。
「改造・制作スレ part3」の558(2011/11/15)に、開発者(ななあし様?)による「 戦闘開始から1フレーム毎にカウンタは1ずつ増えます。カウンタ10ごとに制限時間が1減ります。」との記述がありました。普通速度では1分間で制限時間が300減ることからして、1分間=3000カウント=3000フレームになります。戦闘中は 50 fps ということみたいです。
「改造・制作スレ part4」の403(2012/06/24)に、「intervalがないと恐らくintervalのデフォルト設定である5フレーム空けての発射になります。ヴァーレンは1秒25フレームなので、大体0.2秒後くらいに次弾が発射されることになります。」と書き込みがありますが、この回答者は開発者ではないので、不正確な可能性があります。
同じ人による「初段攻撃の発動間隔ということなら、実験したかぎりでは素早さ60のキャラでおよそ60フレーム(約2.4秒)になるようです。」との記述は、私の計測結果(unit_action_bdr = 4000 なら移動中の遠隔攻撃の間隔は素早さ60のキャラで75フレーム(約1.5秒)ぐらい)と合いません。そもそも、攻撃間隔については、同じ speed でも context 設定によって全く変わるので、どういう環境で計測したのかが不明では比較できません。
「改造・制作スレ part7」の635(2015/05/25)に、不明な回答者による「このゲームは標準速度だとだいたい1秒25フレームなので750だと30秒おきに判定されるという意味になります。」との記述がありました。isInterval 関数についての質問だったので、実際にゲーム内で以下のような単純な戦闘中イベントを作って試してみました。
battleEvent(timer_shake)
event timer_shake {
rif (isInterval(750)){
shake()
}
}
すると、15秒ごとに画面が揺れました。そもそも isInterval という関数は、「戦闘カウントが数値で割り切れたら1が返ります。」という仕組みなので、1秒50カウントだから750÷50=15秒おきに発生する訳です。つまり、「1秒25フレームなので」という根拠は見当違いですし、結論も間違っていました。どうも、この回答者は開発者ではなさそうです。
そうなると、wiki の各所にある 25 fps という記述自体の信憑性が怪しくなってきます。例えば、「wait(数値)」の説明に、「数値フレームだけウェイトします。このゲームは25fpsですので1秒間waitするなら25とします。」とあります。上記の定期的に画面を揺らすイベントに wait を追加して実験してみました。
event timer_shake {
rif (isInterval(750)){
shake()
wait(200)
shake()
}
}
wiki が正しければ、200÷25=8で8秒間止まるはずです。しかし、実際には、揺れ始めてから4秒間止まって、再度揺れました。やはり、戦闘中(戦場画面)は 50 fps です。ついでに、ターン開始時に画面を2回揺らすイベントを作って実験してみました。待ち時間を wait(200) にすると、やはり4秒間止まります。ワールドマップ(戦略画面)でも、同じ 50 fps で動いてるようです。こうなると、wiki の説明自体が間違ってることになります。
どうして、いろいろな所に 25 fps という記述があるのか、理由は不明です。開発者が wiki の説明を書いてる訳ではないので、よく知らない人が掲示板等の誤った情報を参考にして、そのまま wiki に書き込んでしまったのかもしれません。あるいは、もしかすると「内部の座標計算やイベント処理は 50 fps でやってるけど、実際に表示する際は 25 fps で描画してる。」という事かもしれません。こればかりは開発者じゃないと確認しにくいです。(ゲーム画面を動画に撮って1フレームずつ動きを検証すれば判るかも?)とりあえず、他の人の反対意見が無ければ、wiki を訂正しようかと思います。
細やかな検証だね
私は支持するよ
>>711
自分の環境でデフォのバージョンは7.0ダウンロードした日17.8.29で40fpsだったよ
ここらあたりで上下してたから固定されてるっぽい
40fpsというのは外部ソフトでFPS表示と弓スピード100のレンジ500の同じ状況で検証
矢が出た瞬間停止録画開始と同時に停止解除、矢が消えたと同時に録画停止大体12秒ちょい計算上は12.5秒かかるはずだからまぁこんなものでしょう
昔のスクリプトでいじれるデータでのけてあるのが5.6あたりでそちらで試しても同じだったそれより前のバージョンはフリームのやつだったりHDDクラッシュでバイバイしてるからしらない
そっちで本当に10秒だとしたら環境で速度が変わってる可能性もあるしそれよりも前のバージョンだと違ったのかもしれない
後昨日いうかどうか悩んだけど多分自分はもう触れないだろうし最後に一つだけいっておくけども
最近ずっと独り言状態になってるけど前のごたごたで嫌われてるかもしれないから聞いても返ってこないかもしれないよ
>>713
検証実験ありがとうございます。他の人の実験結果は参考になります。おかげで「環境で速度が変わる」可能性を見落としてたことに思い至りました。
私は新参者で、過去にどんなごたごたがあったのかは知りませんが、最近は開発者が全く書き込んでませんね。ヴァーレントゥーガ作品群のファンとして、開発者やオリシナ作者の手助けになればと思って、いろいろ調べてます。
開発者(ななあし様)はゲームの動作速度について何 FPS かを明記してません。はっきりしてるのは「戦闘中の経過時間の表示がフレーム数の 1/10 である」という関係だけです。本家シナリオでの標準戦闘時間は500なので、一回の戦闘は5000フレームで構成されています。
ということは、FPS を知るには実際の戦闘時間を時計で測ればいい訳です。私の実験環境(効果音もBGMも無い、一番軽い状態)ではだいたい1分40秒でした。つまり、経過時間500で100秒だから、5000÷100=50 fps という計算です。しかし、こうやって計測できる FPS は環境や動作状況によって異なります。ゲーム動画を撮ってみようかと、FPS表示する撮影ソフトを試してたら、45 fps ぐらいまで遅くなりました。どうも、50 fps というのは理論上の最高値であって、実際のプレイ環境ではもっと下がるようです。
どうしてそうなるかというと、ヴァーレントゥーガにはフレームスキップ機能が無いからだと思います。パソコンが遅かったり、他に重いソフトが動いてたり、描画に時間がかかったり、ユニット数が多かったり、スキルのエフェクトが派手だったりすると、ゲームの動作速度自体が遅くなります。ゲームの中には重い処理を自動的にスキップ(コマ落ち)して、体感速度を一定に保とうという仕組みのもありますが、ヴァーレントゥーガはそのまま1フレームずつ着実に動かします。
要するに、戦闘中に重い処理があると、全体の動きがスローモーションになって、経過時間もゆっくりと進みます。戦闘時間は同じ 500 でも、終わるのに2分かかったなら、5000÷120=42 fps ということになります。何年も前の古いパソコンで、派手な戦闘をしたなら、25 fps しか出なかった、というのも十分考えられます。つまり、厳密に何フレームだから何秒という固定された関係にはなってません。だいたい1秒間に25〜50フレームぐらい進むけど、ゲーム内容やプレイする環境によって変動します。オリシナを作る際は戦闘経過時間(戦闘カウント、フレーム数)と実時間(秒)が一定しないことを考慮に入れる必要がありそうです。
まさかそうとるとはおもわなかったから本当に最後にいうけどあなたが嫌われてるっていう意味だよ
過疎なのか嫌われてるのかは知らないけど今までほとんど返答なしで答えなければwikiいじるぞっていうのはやめておいたほうがいいってことだよ
答えがないのは誰も答えを知らないからだろ
別に嫌ってないけどな
それどころかよくやると感心してたぞ
そういう風に喧嘩売るのやめなよ
そして答えてないのは語ることを持たないから
とりあえず一人やたら因縁つけてる奴がいるのは分かった
正直、同じレベルの検証ができないからありがとう以上の言葉を持てないんだよ
俺はこうやっていろいろ試して解明してくれてるのは非常に助かってるし嬉しいと思ってる
返答なし=嫌われてるってすごい理論だな
wikiって誰でも編集できることに意味があるんだから正しい情報に書き換えるのは別にいいでしょ
前のごたごたも何のことだか分からないし独り言状態ってぽつぽつ反応やお礼があるんだが
前のゴタゴタがすぐ上のことなら、自分の気に食わない人を同一人物と決めつけて、それに対する自分の意見を総意とする人がいるのはやだな
このスレは質問も検証も基本的に有意なことだと思うし、是非色々試して欲しい
加入ユニットに関して質問です
addUnitを使ってユニット加入イベントを作りたいのですが、領土1・その領土のキャパが1部隊という状態で、スクリプトを使って人材ユニットを陪臣でない状態で部隊に加入させる方法はないでしょうか?
どうしても陪臣でない状態で加入させたいと考えています
>>722
非人材ユニットを領地に追加。これに部隊リーダーだった人材1をメンバーとして追加してさらに人材2を追加。
この部隊のリーダーユニットを削除してやればできるのでは。
>>723
addPower(POWER)
addUnit(MASTER,SPOT)
addUnit(DUMMY,POWER)
addUnit(NAKAMA,DUMMY)
storeLeaderOfPower( POWER , @aaa)
set(idx,0)
while(idx<count(@aaa)){
index(@aaa,idx,@aaa_get)
msg(&idx&の&@aaa_get&)
if(isTalent(@aaa_get)==0){
msg(加入)
addUnit(@aaa_get,MASTER)
}
add(idx,1)
}
changeMaster(MASTER)
こんな感じでやりましたが、加入の後のaddUnitが動かないですね
加入は表示されるので、通ってはいるみたいですが
間違ってる部分あったらごめんなさい
あ、厳密にはうごいてるみたいですが、DUMMYが人材じゃないためにMASTERの下に別のDUMMYが加入してしまうみたいです(キャパ1なのでよく見えてなかった)
また、そのあとにaddUnit(NAKAMA,MASTER)も試しましたが陪臣になりました
DUMMYがclass構造体ならそりゃ別のがaddunitされるよ
addPower(POWER)
addUnit(MASTER,SPOT)
addUnit(DUMMY,POWER)
storeLeaderOfPower( POWER , @aaa)
addUnit(NAKAMA,@aaa)
(以下略)
これでどう
というかそのよくわからないwhileは何ぞ
他のユニットがいるところで弄る想定なの?
>>726
unit DUMMY
{
name = 陪臣ダミー
}
こんな感じですね
classではないです
talentじゃないという意味で人材じゃないと言いました
whileに関しては別の領地を新しく発生させてみても同じだったので、まあこれでいいかな?って感じです
いじるの自体はどこででもOKです。最終的にSPOTが1つであれば問題ありません
連投すいません
addPower(POWER)
addUnit(MASTER,SPOT)
addUnit(DUMMY,POWER)
storeLeaderOfPower( POWER , @aaa)
addUnit(NAKAMA,@aaa)
(以下略)
これも試してみましたが、addUnitの部分で結局別のDUMMYがMASTERの下についちゃいますね
じゃあわからないな
ごめんよ
いえいえ、ありがとうございます
やってるうちに何かみつかったり、他の方の回答で解決するかもなので、もう少しがんばってみます!
>>723 の解釈を間違ってないか
DUMMYにMASTERとNAKAMAを追加してDUMMYを消すのでは
>>732
DUMMYをMASTERに追加してみましたが、マスターなので追加できないみたいです
changeMasterは念のためやってるだけですね
最終手段はNAKAMAを全部タレント属性抜きにしてそもそも陪臣にならないようにするぐらいですが、その他のデメリットがヤバい感じです
やってるうちに不具合っぽいものを見つけたのでご報告
talentでないユニットにマスターをやらせて、そのマスターをそのまま別勢力の人材下に加入させると、何故か陪臣になりました
人材ユニットを追加する部隊リーダー人材がマスターであるときも考慮しないといけなかったのか。
だとすると、人材ユニットを追加する部隊のリーダーがマスターであった場合は、ダミーの人材ユニットを適当な領地に追加してこれにマスターを引き継がせます。
さらに非人材のダミーユニットを人材ユニットを追加する部隊がいる領地に追加します。
このダミーユニットの部隊にマスターとメンバーにする人材ユニットの順で追加します。
この部隊からリーダーユニットを削除したあとで勢力マスターを元の人材に戻します。
マスターを代行させていたダミーの人材ユニットを適当に邪魔にならない領地に飛ばします。
この方法でいけませんかね。
ただし、ダミーのユニットが処理の過程で発生するのでメンバーが最低二つは空きがないとだめですけど。たしか溢れたメンバーは削除されていたはず。
>>735 訂正
>このダミーユニットの部隊にマスターとメンバーにする人材ユニットの順で追加します。
正しくは
>このダミーユニットの部隊にマスターだった人材とメンバーにする人材ユニットの順で追加します。
>>733
その解釈でアタリです。
>>736 の訂正。
レス番は733ではなく732に対してです。連ミスごめん。
>>735
ありがとうございます
早速やってみました
addPower(POWER)
addSpot(DUMMYSPOT,POWER)
addUnit(TALENTDUMMY,DUMMYSPOT)
showSpot(DUMMYSPOT)
changeMaster(TALENTDUMMY)
addUnit(NOTALENTDUMMY,SPOT)
addUnit(MASTER,NOTALENTDUMMY)
addUnit(NAKAMA,NOTALENTDUMMY)
storeUnitOfPower(POWER,@POWER_units)
set(idx,0)
while(idx<count(@POWER_units)){
index(@POWER_units,idx,@POWER_units_get)
if(isTalent(@POWER_units_get)== 0){
//NOTALENTDUMMYのみが該当
eraseUnit(@POWER_units_get)
}
add(idx,1)
}
removeSpot(DUMMYSPOT)
changeMaster(MASTER)
このままだとマスター(マスター)・ナカマ(陪臣)という部隊になります
changeMasterをコメントアウトすると、非人材ダミー・マスター・ナカマという部隊になります
eraseUnitをコメントアウトすると、非人材ダミー・ナカマの部隊とマスターの部隊に分かれました
どうやら非人材部隊に所属した時点で陪臣になっているという問題があるようです
理解が間違ってたらごめんなさい
>>715
これは申し訳ありませんでした。
wikiをいじってはいけないとは知らなかったので、情報が不正確なら訂正した方がいいと思ってました。しかし、私は軽率で間違うことが多いので、wikiに関しては慎重な方にお任せします。
その他の閲覧者へ
こういう掲示板のマナーには疎いもので、私の行動を不快に感じた方にはあやまります。他に問題がありましたら、寛容な方は今後ともご指摘ください。
私の実験は、私が試した範囲内での観測結果に過ぎないので、推測や結論が間違ってるかもしれません。実際のゲーム内の動作とは異なる可能性があるので、あくまで参考レベルに留めてください。
スキルを試す為に何度も戦闘させてて感じたのですが、守備側(COM勢力)が、戦闘開始直後から迎撃してくる時と、初期位置で待ち構えてる時があります。実験条件を同じにする為には、毎回どちらか一方に固定したいので、どういう条件で挙動が変わるのかを調べてみました。
まず第一に、マスターの好戦値(kosen)が高いほど迎撃します。(マスターが存在しない勢力なら、その勢力に設定された好戦値)
マスターの kosen 値を指定しない場合、40回攻め込んで、迎撃してきたのは 21回でした。(5割ぐらい)
マスターの kosen = 100 にした場合、40回攻め込んで、迎撃してきたのは 31回でした。(8割ぐらい)
マスターの kosen = 80 にした場合、40回攻め込んで、迎撃してきたのは 26回でした。(6割ぐらい)
マスターの kosen = 50 にした場合、40回攻め込んで、迎撃してきたのは 16回でした。(4割ぐらい)
マスターの kosen = 30 にした場合、40回攻め込んで、迎撃してきたのは 12回でした。(3割ぐらい)
マスターの kosen = 10 にした場合、40回攻め込んで、迎撃してきたのは 3回でした。(1割ぐらい)
サンプル数が少ないのか乱数分布のせいか、うまく比例しませんが、だいたい kosen 値に依存してます。
kosen 値が 100 でも迎撃しないことがあるのは、btl_counter が関係してるみたいです。kosen = 100 にした上で、btl_counter = 80 だと、50回攻め込んで、迎撃してきたのは 41回でした。試しに btl_counter = 50 に減らすと、50回攻め込んで、迎撃してきたのは 30回でした。更に btl_counter = 20 に減らすと、50回攻め込んで、迎撃してきたのは 11回でした。シード値によって乱数にばらつきがあるのか、他にも要因があるのか、試行回数を増やしても正比例しませんが、迎撃する確率に差があるので、第二の条件は btl_counter と言えます。
それなら、btl_counter が高ければ kosen が低くても迎撃するのかと、kosen = 1, btl_counter = 100 でどうなるか試してみましたが、50回攻め込んで、迎撃してきたのは 3回でした。迎撃しやすいのは、kosen と btl_counter の両方が高い場合のようです。それで、kosen = 100, btl_counter = 100 にしたら常に迎撃するようになりました。
あと、戦力値も比較してるようで、守備側の戦力値が、攻撃側の半分以下だと、好戦値に関係なく迎撃しません。半分より少しでも上回ると、迎撃するようになります。また、守備側の戦力値が極端に低い場合は、戦闘開始直後に逃げ出します。どのくらい少なければ逃げるかも、マスターの好戦値に依存していて、前衛同士なら、kosen = 100 なら 4.3倍、kosen = 70 なら 3.2倍、kosen = 50 なら 2.2倍、kosen = 30 や 10 なら 2倍、ぐらいの戦力差で開幕逃亡するみたいです。好戦値が極端に低い場合でも、戦力差が2倍以下なら逃げませんが、2倍を少しでも上回ると逃げるようになります。ただ、前衛と後衛で微妙に違うし、判定基準はわかりませんでした。
また、攻撃側の戦力値が、守備側に比べて btl_intercept のパーセント未満なら、kosen に関係なく迎撃します。btl_intercept の値が大きいほど、少しでも戦力差があれば迎撃します。btl_intercept の値が小さいほど、少ない戦力で攻めても待機します。例えば、標準では btl_intercept = 50 なので、攻撃側の戦力が半分未満なら、攻撃側は必ず迎撃してきます。これは戦闘開始後に双方の戦力値が変動した場合も、適用されるみたいで、部隊を少しずつ退却させていくと、攻撃側の戦力値が半分を切った時点で、待機してた守備側が迎撃に転じます。
とりあえず、COM に必ず迎撃してきて欲しい場合は、kosen と btl_counter の値を両方とも 100 にして、攻撃側の戦力値を守備側の4倍以下にすればいいです。逆に、COM にその場で待機しといて欲しい場合は、kosen を -1 にして、攻撃側の戦力値を守備側に対して btl_intercept %以上にすればいいです。kosen を下げると戦力差で逃げ出しやすくなりますが、攻撃側の戦力値を守備側の2倍以下にすれば逃げません。戦力値と逃亡の関係は btl_retreat_coe の2番目の値が怪しいのですが、どういう仕組みなのかわかりませんでした。
btl_counter や btl_intercept は全ての戦いに反映されるので、実験目的以外で変更すると、予想外の影響があるかもしれません。オリシナ作者が勢力に個性を出したい場合は、好戦値で調節するといいです。本家シナリオの設定値を見てると、ななあし様が種族や勢力の特徴をよく考えてるなあ、と感心します。
ちゃんと投稿できたか見てたら、内容に書き間違いを発見しました。
(誤) 標準では btl_intercept = 50 なので、攻撃側の戦力が半分未満なら、攻撃側は必ず迎撃してきます。
(正) 標準では btl_intercept = 50 なので、攻撃側の戦力が半分未満なら、守備側は必ず迎撃してきます。
投稿前にもっとよく見直すべきでした。何遍もミスしてすみません。
また740番の訂正です。自分で条件を書いといて結論に含めるのを忘れてました。戦力差4倍は逃亡させない条件で、迎撃してもらうには2倍未満にしないといけないんでした。
(誤) COM に必ず迎撃してきて欲しい場合は、kosen と btl_counter の値を両方とも 100 にして、攻撃側の戦力値を守備側の4倍以下にすればいいです。
(正) COM に必ず迎撃してきて欲しい場合は、kosen と btl_counter の値を両方とも 100 にして、攻撃側の戦力値を守備側の2倍未満にすればいいです。
他にもミスしてるかもしれませんが、気付いたら訂正します。
今まで不明だったパラメータを検証してもらえるの有り難い
うーむ、すごい検証数だ。お疲れ様です
ユニットを出し過ぎて大規模戦闘をし過ぎるとクラッシュする対策はないでしょうか
確か死んだユニットにも何かデータ割り当ててたと思うのですが、それを無効にしたりなど出来ませんか
参考までに聞きたいのですが、ユニット出しすぎって何体くらいでなりましたか?
>>745
自分は本家シナリオや「きのたけ」で召喚しまくっても、ユニット数の制限で出せなくなる事はあっても、クラッシュはしませんでした。それで不思議に思って、召喚しまくる実験をしてみました。
陣営ごとのユニット制限を btl_unitmax = 1000 に増やした上で、敵ユニットに範囲攻撃を使わせて、召喚されたユニットを一気に掃除することで、ユニット数の制限に関わらずに、大量に召喚することができます。(掃除しないと、表示されてるユニット数が制限を越えた時点で、それ以上の召喚ができなくなる。)召喚し続けると Vahren.exe のメモリー消費量が増えて行き、ユニット数が多過ぎるとゲームが落ちました。終了時に OS のエラー通知が無かったので、アプリケーション側で状況を見て自ら正常終了した感じです。
次に実験データを例示し、最後に私の結論を載せます。メモリー消費量はタスクマネージャーの数値ですが、微妙に上下するので厳密ではありません。戦場のオブジェクトやエフェクト、BGM、効果音、顔絵などで、実際のゲームではもっと消費が増えるはずです。スキルやエフェクトによる違いは試してないので、それらがユニット数に影響するかはわかりません。
[ 最新の 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版と同じようです。
実験の結果、最新版(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 ぐらいまでにするしかありません。守備側の初期配置数や援軍、攻撃側の出撃数や増援、それに双方が召喚する、全てのユニット数の合計です。無限召喚スキル(遠隔攻撃から召喚への連鎖)は、召喚数自体は設定できませんが、スキル使用間隔と連射数から、戦闘時間内に出せる数が決まります。予め、どれだけのユニットが戦場に出てくるかを計算して、その合計が限界以内に収まるようにすれば、クラッシュを避けれるでしょう。
これはかなり参考になるデータ
ありがたいです
メモリ的な限界は予想できてなかったのでうれしい
いや、メモリ的な限界が1番考えられただろ
その限界がどこまでかいまいちわからんかったのが問題だったわけで
それにしてもありがてえ検証だ
setStatus(unit,move,hoge)が上手く動きません
talent=offのユニットだとうまく動かないでしょうか?それともほかの原因がありますか?
少し気になって実験したのですが
unit notlnt
{
talent = off
name = ノータレ
}
setv(@aaa,notlnt)
msg(¬lnt&)→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)
}
どういった問題を解決すればいいでしょうか・・・
連投すいません
目的としては、データベースとして使用しているtalent=onのユニットのステータスをtalent=offのユニットに移行するという目的です
データベースのmprecの数値でunitの種類を特定し、addUnitして追加したユニットにその他ステータスを落とし込むというのをやりたいと思っています
さらにすいません
>>754 の
誤;msg(¬lnt&)→notlntと出力される
正:msg(&@aaa&)→notlntと出力される
でした
unit構造体で定義された人材じゃないユニットを後からスクリプトでどうこうしようとするととんでもなく厄介だった記憶がある
dead_eventに疑似死亡イベント(レベルリセットして隠し領地に移動とか)を仕込んだ人材とかにした方が楽じゃないだろうか
>>757
talentなユニットだと困ることがあるのであえて外しています
具体的にはaddUnitした際に陪臣になってしまうことがやりたいシステムに致命的な邪魔になってしまうので
先日色々やってみましたが無理だったので、talentを外す方向で対応しました
とりあえずstoreUnitOfPowerとかで取得したユニットとして使えばマトモに使えて、setvで直接文字列突っ込んだのは使えないって感じになってますね
で、ユニットを外して入れ直す際のやり取りが
1・talent=onのダミーユニットを隠しspotに入れる
2・talent=offのユニット(以下メインユニット)のステータスを取得してダミーユニットに性能をコピー
3・メインユニットをeraseUnitで全部消す
4・メインユニットを再び発生させる、この際ダミーユニットを参照
5・ダミーのステータスを取得してメインユニットに反映
で、setLevelがこれまたダミーユニットにうまいこと反映しないみたいで、これはaddLevelを1づつするしかないのかな
<あぼーん>
>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,ノータレ) として、ユニット名で探したらどうでしょうか。
>>760
なるほど、全角文字をスクリプトでも使えるのですね
ちょっとそれ念頭においてやってみます
色々目からウロコでした、ありがとうございます〜
ユニットが遠隔攻撃しながら前進&後退するのが嫌で、スキルの減速率を大きくしたり(slow_per = 1 で99%減速するはず)、地形の影響を大きくした(consti = 1 で移動力が20%になるはず)のですが、じわじわ動くようにはなりませんでした。
それで不思議に思って調べたのですが、移動速度には最低値があるみたいです。2種類のユニットの移動力をそれぞれ 1 と 50 にしても同じ速さで動きますが、1 と 51 は微妙に違います。移動速度の最低は 50 と思われます。それなら最高値もあるのかと、移動力を上げて試してみました。移動力 1250 と 2000 は同じ速さで動きますが、1240 と 2000 は微妙に違いました。移動速度の最高は 1250 ぐらいです。
まとめると、地形やスキルの影響で変化した後の移動速度は0(完全に停止)か50〜1250の間になるようです。動きが速すぎると当たり判定が難しそうですが、遅すぎるのも駄目とは意外でした。
どなたかお知恵をお借りしたいのですが、無敵突進スキルを作る方法ってありませんか?
光の目の「幽鬼の浸透」を流用できればよかったのですが、私の勘違いでなければ、
chargeスキルだとslideしても無敵になってくれない(進路上の攻撃にボコボコにされる)ように見えます
nextでmissileスキルに渡してslideさせたら今度は動いてくれませんし、バフをかけることもできませんし…
charge使いたいのは助走の有無を判定したいからなので、missileでもそちらの代替ができるなら構いません
どなたか解決法をご存知ありませんでしょうか
>> 763
chargeスキルで実現する方法をいろいろ考えてみました。
A)高速移動で避ける。
光の目の「幽鬼の浸透」のスクリプトを見ても、どうやって無敵にしてるのか判りませんでした。とりあえず、スライド速度を、敵の発射する魔法・矢・弾よりも速くすれば、スライド中に攻撃されても避けれそうです。ただし、長距離を高速でスライドする必要があるので、思ってる動きと違うかもしれません。
B)バリアーを張る。
本家シナリオのリリスが敵の攻撃を相殺しながらスライド移動します。敵の攻撃に属性を付ければ、遠隔攻撃・魔法攻撃だけなら相殺で無効にできるでしょう。しかし、接近攻撃は防げなさそうです。
C)分身を送り出す。
敵陣をゆっくり往復したいなら、本体はスライドさせずに、攻撃モーションだけ動かす手もあります。「image = @@」にすれば自分のユニット画像になるので、resize_s と resize_s_start で途中から速度をマイナスにして、発射した画像が戻ってくるようにできます。その間、本体は攻撃位置で停止させておけば、分身がスライドしてるように見えそうです。分身は矢・弾と同じ扱いなので、敵に攻撃されません。ただし、本体は普通に攻撃を受けます。
D)回復しまくる。
敵から攻撃されることを前提にして、受けたダメージを直ぐに回復すれば、無敵と同じになります。「attack_us = 7」で自分を命中対象に変えてから healスキルに繋ぐと、敵を攻撃しながら自分を回復できます。ただし、一撃で死ぬような攻撃(即死・大ダメージ)には対処できません。また、回復量の数値がユニットの頭上に湧き上がるのは奇妙に見えるかもしれません。
どの案にも問題がありますが、参考になれば幸いです。
>>764
アドバイスありがとうございます。
そうですね、自分も実現可能なのはその4つだと思っています。
しかし、Aだと一瞬で多数のモブを斬り殺すサムラーイみたいな技になっちゃいますし、
Bは自分もやってみましたが、やはり接近攻撃は相殺できませんでした。
Dも思いつきはしましたが…突進よりむしろ全回復が便利な技になっちゃいますからねぇ。
Cなら工夫次第で、例えば自キャラを画面外にスライドさせて、
しばらくして戻ってこさせたら実質無敵に…等と考えましたが、
やはりヴァーレンの仕様を考えると「往復」にどうしてもなってしまうので、
無敵突進(一定距離まで何があっても突き進む)という自分のイメージとはちょっと合いませんでした。
色々すいません。
>>765
近接攻撃全部を近接で発動してダメージ判定をMissileにしたらどうですかね
近接後に一瞬だけ判定する小さいMissile攻撃を判定する感じです
ごく特殊なパターン以外でほかのユニットにあたることはないかと
シナリオを作っていて時折Vahren.exeを立ち上げてもエラーメッセージすら吐かないで消える事があるんだけど何なのかな?
datファイル開きながら起動すると落ちるよ
exe起動してからなら開いても大丈夫だけど
>>768
それはエディタ次第
terapadだとdat開きながらでも起動できるよ
メモ帳最強
プレイヤー勢力以外がみんな同盟結んでせめてくるんですがどうすれば解消されますか?
幼稚な質問ですいません。
diplo系を弄くろうとしたんですがコンテンツの解説にもなくて困っています。
hostil設定はしていません。
>>771
シナリオ製作講座に「外交について」という、そのものずばりの解説ページがあります。
プレイヤーが最強国になると、残りの敵が同盟を結びやすくなるのですが、その判定を diplo_most_power で調節することができます。最強国じゃないのに仲間外れにされるなら、相性の違いの影響かもしれません。敵同士の相性を悪くするとか、敵マスターの野望を高くして、お互いに争うように仕向ければいいです。
ありがとうございます。
できました。
RPGツクールなどのように
音楽用のOGGやMIDIをあらかじめ決めたループ地点からループするようにしたいのですが、
どなたか方法や改造の仕方をご存知でしたら教えてください。
原曲のファイルとは別にもう一つ、ループ再生用のファイル作っといて、
通常の再生が終わったらそのファイルに繋げるとかどうだろう
再生終了→次ファイルの再生開始がうまいこと繋がるように編集して、2週目以降はループ再生、って感じで
ウィンドウ枠の角を丸く表示する方法を見つけました。
RPGツクールVXのウィンドウスキン素材をそのまま使うと、左上のスキン画像がウインドウ全体に引き伸ばされるので、せっかく右上の枠画像を丸っこくしても、背景が四角に表示されて台無しです。(ツクールでは周囲の 2 dot には表示しないけど、ヴァーレントゥーガは全面に表示する為)
解決策は単純で、左上のスキン画像の四隅を枠の丸みに合わせて透明にするだけです。ウィンドウ枠の丸い角の透明部分は、背景画像でも透明になるので、綺麗に表示されます。(スキン画像は拡大されるので、透明部分も大きくなることに注意)
ほんの少しの修正で見栄えが良くなるので、ツクール仕様のウィンドウスキンを導入してる方は、ぜひ試してみてください。
>>775
灯方式で初回しか流す気がないイントロ部と、
ループさせたい主演奏部を別ファイルに分割する方が容量は軽くなりそうだな…
そういえばVTになってスキルやユニットで大きな画像を使えるようになったけど、スポットや旗だと大きな画像は使えないんだよね。
色々と画像に情報を詰め込もうとすると32×32だと足りない。
そういう意味じゃ旗の大きさ変えたり同じ勢力でも違う旗にできる方法があればいいんだけどねぇ
>>778
旗は仕様が決まってますが、スポット(領地)の画像は大きさを指定できます。
wiki の「シナリオ製作講座」の「spot構造体(領地の設定)」ページを参考にしてください。画像サイズを指定してやればいいだけです。
更にスクリプトで後から領地画像を変更することもできます。「関数(イベントの設定2)」ページの changeSpotImage です。
内政によって街が発展したり、戦乱で荒廃したりするのを、画像で表現すると面白そうです。
質問です
指定勢力の指定一般ユニットを別一般ユニットに変更することはできますか?
レベルによるクラスチェンジは無しで内政コマンドによって上位ユニットが開放されると自動で上位ユニットにクラスチェンジ……
と言うことがしたいのですが、制作講座見てもそれっぽいのがないので……
そういうのが有るなら俺も使いたいな
少なくともwikiにも無いしスクリプトで見た覚えも無いから多分無い
内政コマンドのイベント内でwhile使って全員changeclass処理するしかないと思う
changeClassにしても特定の勢力の特定の一般ユニットを変数に代入できるのかって問題が……
特定の一般ユニットってのがどういう範囲なのか分からないから何とも言えない
特定のクラスならstoreclassofunitで選り分ければいいし、領地ならstoreunitofspotでいい
特定のイベントで加入したユニットとかなると面倒くさいが、加入する時に識別用のスキルでも追加しておけばstoreskillofunitで判別できる
while,storeClassOfUnit,changeClassを使えばできる
勢力の標準雇用ユニットも合わせて変えるならerasePowerMerceとaddPowerMerce2でできる
それとクラスチェンジ前後でステータスが変わるならレベルは振り直した方が良いかもしれない
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以降はいらない
なにこれ凄い
レオーム家のソルジャーをボウマンにすると仮定するならば
まずレオーム家のソルジャー数を数え@PowerAUnitに代入、
レオーム家全ユニットに対してソルジャーかどうか確認しソルジャーならボウマンにクラスチェンジしidxに1加算。idxが@PowerAUnitを越えたら終了
って認識であってますかね……?組み合わせ次第でこんなことも出来るなんて目から鱗です!もっとスクリプト学ばないと……!
(完成するかはともかく)作成中のオリシナにこのスクリプトを改変(する部分が無さそうですが……)使用させて頂いてもよろしいでしょうか?
whileループは基礎中の基礎だからこのくらいは改変して使っても何も問題ないよ
シナリオ制作がんばれー
使用する関数が間違っていたので訂正
× storePowerOfUnit
◯ storeUnitOfPower
名前を間違ってしまった
もうだめだー
event ほにゃらら
{
storeUnitOfSpot(spot1,@s1haitiunit)
//spot1に配置されたユニットの種類を調べる
pushCon(spot1,@s1haitiunit,heisisuu)
//spot1に配置されたユニットの数を調べる(直接配置ユニット数のみを調べる関数は無いらしい?)
if (heisisuu >= 100)
//spot1に配置されたユニット数が100以上ならイベント発動
{
イベント処理
}
}
spot1に100ユニット以上が配置されていてもイベントが発動してくれません
毎ターン読み込まれ、毎ターン100ユニット以上つめこんでいるのでスクリプト自体に問題があるようなのですがどこが問題なのでしょうか?
spot1に2種類以上のユニットが配置されてませんか?
一部の関数以外は、複数の要素が入った文字変数は先頭を参照するので、例えばAが10体、Bが100体いて@s1haitiunitの先頭がAなら反応しないはずです
pushCon使ったこと無いけど
あ、あとユニットの種類に関係なく100体以上で発生ならcountvar(今はcountだっけ)でもいけると思います
ああ、ああ!引数の領地が持つ「全てのユニットの【識別子】」を〜と書いてあったから勘違いしてました!
storeUnitOfSpot(spot1,@s1haitiunit)
if (count(@s1haitiunit) >= 100)
で行けました!ありがとうございます!
addPowerMerce2( 勢力 , ユニット , ユニット , ‥)勢力に標準雇用ユニットを追加します。
addPowerMerce( 勢力 , ユニット , ユニット , ‥)こちらはマスター関連のデフォルト雇用情報がリセットされるので非推奨となりました。
とのことですがmerce2を使用すると本来雇用できない様に設定したマスターと同クラスユニットが、追加されるよう設定していないにも関わらず勢力の標準雇用ユニットに追加されます
反面merceを使用した場合その現象は起きず本来追加したいユニットだけが追加され、デフォルト雇用情報は別にリセットされません
これはwikiの情報が古い、或いは間違っているだけで本来はmerceの方を使用すれば良いんでしょうかね?
ほぼ愚痴
addLevelでフリーズする。AI勢力ターン開始時にフリーズするのでその勢力開始時に発動する内政スクリプト削除を総当りで試すと何度目かのaddLevelでフリーズすることを確認
AI用内政値をブーストして1ターン目にレベル上げると正常作動。正規挙動の20ターン程度で発動するaddLevelでのみフリーズする。なんで?
そのターンで上限超えてたりするんでない?
ごめん上限って何の?
ユニットレベルは上限に達しない。AI用内政値は数値変数使ってるけど20ターン時点でせいぜい内政値1000程度。挙動確認に1ターン目に50000打ち込んだ場合問題なし
後何故かaddBaseLevelでレベルを10以上に底上げしてもフリーズする。クラスチェンジ自体には問題ないのは確認済み
スクリプトでクラスチェンジするとフリーズ?って言うのも意味がわからんし数値変数いじれる回数に上限がある?もうやだなにこれいみわかんない
ああ、ユニットレベル上限のつもりで言ったよ
それで引っかかった覚えはうっすらとあったんだけど、それじゃないならわからないなぁ
それなりに使う事はあるけどこっちは引っかかった事ないねぇ
ホント申し訳ない。特定イベント制御用ユニットのクラスチェンジがおかしくて止まってるだけだった笑えよもうなんでクラスチェンジ設定してんだよいらんだろこんちくしょう
そら1ターン目から追加されるユニットじゃないんだから1ターン目にレベルアップコマンド打ってもバグらないはずだよ死にたいふええ
他でやれよと思ったけど意外と愚痴スレとか無いんだな
戦闘中イベントの発生についての質問です
scenario s1
{
fight = fight_ev
}
event fight_ev
{
if(inBattle(unitA,unitB) == 1 && isPlayer(unitA) == 0){
event(ev1)
}
}
event ev1
{
msg(テスト1)
if(isAnyDead(unitA) == 1){
}
}
event ev2
{
msg(テスト2)
}
こんな感じで作り、戦闘前に(テスト1)のメッセージが出た後、戦闘中にunitAを倒しても(テスト2)のメッセージが出ませんでした
(テスト2)を出すための条件のif(isAnyDead(unitA) == 1)をif(inBattle(unitA,unitB) == 1 && isPlayer(unitA) == 0)に変えたら(テスト2)のメッセージが戦闘前に出ました
他の条件でも試してみましたが、戦闘開始前に条件を満たせたら(テスト2)のメッセージが出て、
戦闘中に条件を満たす形では(テスト2)のメッセージが出ないようでした
wikiでは戦闘中にイベントを発生させるにはbattleEventを使うと書かれていましたが、
battleEventでイベントを指定すると条件を満たせていてもイベントを読み込めませんでした
間違っている部分があったら教えてください
自己解決しました
スレ汚し申し訳ないです
ヴァーレンでリアルな兵站システムって作れる?
自分は分裂した場所を独立させて再併合できるようにするくらいしか思いつかない……
どこまでリアルを追求するか、どういう兵站システムを作りたいのかよくわからないけど、遠くの領土ほど兵站の維持が難しく軍隊が多く配置できないって言うなら
ゾーン制使って移動制限、isnext使って本土から離れる土地程setcapaで配置部隊数下げる
ついでにある程度遠い領地にいつユニット数に応じて追加支出す
setcapaでの変更時、配置限界よりユニットが多く配置されてたらマイナス効果部隊スキル付与…とか?
質問です
敵の弓兵にこちらのヒーラーを狙わせるAIを作っているのですがうまくいきません
event yumihei_ai
{
rif(isInterval(100) == 1){
if(isDead(healer) == 0 && getDistance(healer,yumihei) <= 670 && isSameArmy(healer,yumihei) == 0){
routine(healer_aim)
} else if(inBattle(eventyou) == 0){
routine(aim_lp)
}
}
}
event healer_aim
{
msg(敵の弓兵が味方のヒーラーを狙います)
aimTroop(yumihei,healer)
}
event aim_lp
{
msg(弓兵の標的位置をリセットします)
aimTroop(yumihei,-1,-1)
}
こんな感じのスクリプトを作ってみました
これだとちゃんとこちらのヒーラーを狙って攻撃してくれて、味方のヒーラーがいなくなったら通常通りの動きをしてくれるようになりました
しかし、こっちの軍に敵と同じクラスの弓兵がいた場合、敵にもこちらと同じクラスのヒーラーがいた場合に処理がおかしくなってしまいます
味方の弓兵をyumiheiA、敵の弓兵をyumiheiB、味方のヒーラーをhealerA、敵のヒーラーをhealerBと分けてやったところ正常動作したので、イベントの処理で敵と味方で同じ一般クラスが居てもそれぞれ区別できる方法があれば教えてください
イベント戦闘なら
evhealer:healer
{
}
みたいな同能力別構造体のユニット配置すれば解決しないかな?
storeRectUnit&storeBaseClassOfUnitで選別してくとかstoreAliveUnitとかでクラスそのものでなくユニットを対象にするようにすればいけるかもしれないけど
戦闘中のスクリプトって人材にしか効かないのがあったりするから保証はできない
むしろクラス名直接ぶち込んで動いたと聞いてびっくりしたくらいだ
>>807
実は通常戦闘なんですよね……
今のところは、他の勢力とクラスが被らないラスボス勢力に限定して使うという事にしました
>>808
「敵」を一発で識別できる何かがあれば楽かな〜と思いますね
ちなみですが>>806 でスクリプトでは人材ユニットは対象外のようでした
余談ですが、どうにかして敵と味方の区別をつける方法がないか試行錯誤してた時発見したものがあります
味方のヒーラーと敵のヒーラー、味方の弓兵と敵の弓兵の構造体の名前が違えば正常に動作するなら、
味方のヒーラーと弓兵の構造体名を変えてしまえばいいと思い、
>>786 のスクリプトを使わせていただいて味方のヒーラーと弓兵の構造体の名前自体を変えてみました
これで動作するだろうと思ったら、この場合でも正常に動作しませんでした
あれこれ試した結果、どうやら変更前の構造体で判別してるそうです
例えば
ソルジャーをボウマンに変え、その元ソルジャーのボウマンでボウマン用のイベントを起こそうとしても動作せず、
ボウマンをソルジャーに変え、元ボウマンのソルジャーでボウマン用のイベントを起こそうとしたら動作した、と言った感じです
通常戦闘でのみの検証だったため、普通のイベントではどうなるか分かりませんが。
といった報告でした
>>804 ,805
ナチガリアさんの最新作が本国から兵を進軍させる感じになってたはず
ほかに、ふつうのRTSみたいに戦闘シーンで演出する手もあるんちゃうかな
天候ユニットが敵味方問わず移動Debuff、工兵ユニットが道路召喚して移動Buffとか
「リアルな兵站」という言葉からは仕様の定まらなさを感じる
まずは具体的なルールを列挙するところから始めては?
プレイヤー勢力では上手く雇用できるのに、NPC勢力がまったくユニットを雇用しないのって何か原因があるものなんでしょうか…
NPCの雇用には大きく分けて二つがあります。
①リーダーユニットの部下を雇用する
②勢力に新たなリーダーユニットを雇用する
①は人材や複数のクラスを雇用可能な一般ユニットでも行われますが、「同一クラスを雇用する」がONになっていると同じ基底クラスしか雇用しません。
これはNPCの上位雇用をONにした場合、雇用クラスの1段階目の金額で2段階目などのクラスが雇用されます。
NPCに多種多様なクラスを雇用させたい場合は同一クラス雇用をOFFにして、かつ複数のクラスが雇用可能な状態でなければなりません。
②はpower構造体に書かれているmerceから雇用率に合わせてランダムでリーダーを雇用します。
なのでプレイヤーのように「ユニットから雇用」ではそもそもないと思われます。
なのでそのクラスを雇える人材もユニットもいないのにpower構造体に書かれているユニットが雇用されていたりもします。
>>811 さんの状態ではおそらく②が行えていない状態ではないかと思いますのでpower構造体を見直してみてください。
staffにクラスが記載してあっても種族が抜けていることやmerceの記入が間違っていることなどが考えられます。
あまりに直らない場合は小物入れに該当するスクリプトをアップロードすれば間違いを見つけてもらえるかもしれませんよ。
ありがとうございます!
merceの記入が間違っていたようです。
そのままコピペして勢力を量産してしまっていたので全勢力で雇用していなかったようです
<あぼーん>
特定領地から特定クラスのユニットだけを取り出す方法ってありませんか?
どうしてもわからない……
こんな感じで行けませんかね
スポットで選ぶ→1ユニットずつクラス判定して文字変数に格納
storeUnitOfSpot(特定領地, @unit_spot)
pushv(@unit_spot, sum_unit_spot)
set(i, 0)
while (i < sum_unit_spot)
{
index(@unit_spot, i, @unit)
storeClassOfUnit(@unit, @class) or storeBaseClassOfUnit
if (equal(@class, 特定クラス))
{
addv(@class, @class_spot)
}
}
(あっ i足すの忘れてる...)
サンクス。
試してみる。
パース・クインカンシャル図法を使ったら世界一周を無理なく表現できることに気づいた。
もっと早く気づけていれば……
プレイヤーとは別の部隊を作り、プレイヤーが参戦した時にaddtroopで援軍として参戦させるイベントを作っているのですが、addtroopした一般兵を死亡した時に消滅するようにするのってclassにdead_event仕込んでイベントで消す以外に方法ありませんか
isdead()もgetlife()も一般兵だと使えない上、modなのであまりクラスデータを書き換えられないのです
>>820
召喚ユニットとして援軍の一般兵を出せばいいんじゃないでしょうか。
1)ユニーククラスの隊長ユニットを戦場に追加する。
2)その隊長ユニットが、部下の一般兵を援軍として呼び出す。
3)プレイヤーが死ぬ(逃げる)と、スクリプトで隊長ユニットを消去する。
4)隊長ユニットが召喚していた援軍部隊も一緒に消滅する。
東西ともに1位2位は決まった感あるな
>>821
すみません、意図が正しく伝わっていなかったようです
死んだとき消滅というのは「プレイヤーの死亡時に戦闘シーンから」ではなく「一般ユニットの死亡時に世界地図から」です
普通に出撃した一般兵は死亡すると消滅しますが、addtroopした兵は一般でも人材と同じく死亡時に世界地図から消滅しませんよね(まずここから間違ってたらすみません)
これを通常の兵と同じように死んだら世界地図からも居なくなるようにしたいということです
人材プレイ時に自由にできる自分の部隊をもう一つ作りたいって事
ミスった
人材プレイ時に自由にできる自分の部隊をもう一つ作りたいって事なら普通にやったんじゃ無理だと思う
部隊全員に個別の構造体engun1,engun2……みたいに割り振って名目上人材扱いにして、ソルジャーとして雇用したならソルジャーにクラスチェンジしつつ存在フラグオン……みたいな?
実際やったこと無いスクリプトだからうまくいくか走らないし保証はできない
<あぼーん>
俺もやろうとしたことだが、例えば「大国同士の決戦」みたいなイベントを作るとする
すると大国同士のユニットを関数で拾って戦闘マップにtroopで出現させる事になる
だが、その戦闘イベントでtroopしたユニットはその戦闘中死んでも戦後に普通に存命である
これと似た問題だと思う.良く分からんがaddtroopしたユニットはsleepとか受け付けてくれないし
>>821 はcountUnitで数えて後で疑似的に消すとかしか思いつかない
>>824 そういうことです
やっぱりかなり無理がありそうですね
ひとまず諦めて別の方法を探ります
ありがとうございました
夏休みの思い出にオリジナルシナリオ作りたいんで一通り必要なツール教えてくれませんか?
今のうちに予習しておきたいです
大体はヴァーレン本体に同梱されてるよ
もちろんふりーむとかじゃなく大物入れのやつね
エディタとかは好きなの使えばいいし
先にMODとか作ってみると良いかも
大物入れですか、フリームからダウンしてたので改めて確認してみます
MODから。か
途中行き詰ったらそうしてみます
絶対行き詰まる(確信)
嫌味なモブキャラみたいな台詞でモチベ落そうとするのやめよう
何事もまずは実際に当たってからだ
というか初めてなら今からやり始めないと始業式には間に合わないんじゃないかなあ…
素材全部フリーで揃えるにしてもスクリプト打つだけで結構時間かかるぞ
スクリプト打つだけなら慣れればどんどんペース上がる
問題は大量に打った後にエラー起きて何が原因かわからず頭抱えることだ
自勢力の領地を青色
他勢力の領地を緑色ってカーソルを合わせると光ってますが、どこで変えれますか?
中立勢力みたいにカーソル合わせても緑色、青色にも表示させたくないです
よく分からなくて。
そういうUI表示とかエフェクトみたいなのはcontext構造体で指定する
circle_alpha_perで透明度変えられるはずだから0にすれば消えると思う
聞くだけじゃなくてそれをやってるシナリオとやってないシナリオのスクリプト比べて調べたりしてみてね
どこのシナリオもやってないことは多分できないことだし
大物入れから本家ヴァーレンダウンロードしてきました。Javaの導入も普通にできた
PicEncoder.jar 改変を防ぐためにファイルを暗号化
mapMaker マップを作るエディタ、操作大丈夫そう
imageView imagedata.datが見つからないって出たので試しに名前だけ同じファイル作ってみたけど意味不明、名前からしてイメージビューアなのかな?これは必要ないかも
imageMaker ふええ何これなんかヴァーレンでよく見かけるエフェクトがたくさん並んでるよこれはとっても重要そう、画像データはimage.datに入ってるみたいだねこのエフェクト流用したいな使い方わかんないけどこれは重要そう
CharaChipMaker ユニットのキャラチップでも作るものかな?説明書にはツクール規格と書いてあるし太古の遺産の企画はどうでもいいかな、よくわかんないけどこれは重要度低そう
というとこまで進展しました。
(進展と言えるのか
そしたらソースコード嫁話はそれからだ
本家のコードは辞めといたほうがいいが
>>839
進捗報告はtwitterでやれ
わからん所が出てきたらここに書き込め
質問です。初めてキャラMODを作ろうとしていますがドット改変したキャラチップが黒くなって表示されません
何かしないといけない手順があるのでしょうか
解決しました。質問です。割合強化のリーダースキルにmp回復直接アップを混ぜるにはどうすればいいでしょうか
twitterは敵が多くて目立てません
カギだとアドバイスを得られないので・・ここで聞きます
direct=onとoffをまぜてるのは見たことないから多分2つに分けてスキル作るしかない
分けたほうが視覚的にもアイコンの違いでわかりやすいから、特に理由が無いならくっつける必要もない
回答ありがとうございます。なんとか別にして考えて見ます
あとまた質問です。きのたけの移動タイプ変更のLS(ガルボ)を見てはるすべ2のLSにadd = flyを入れましたが部隊員の移動タイプが飛行になりません。なぜでしょう
作品ごとに移動タイプのコードが共通とは限らない
ハルベリ2で飛行LSを作りたいなら、原作の時点で唯一の飛行LS持ちのラーウガルからコピーしたほうがいいぞ
状態異常以外は大体スクリプトで設定してあるものだからハルベリにmovetype flyの記述が無ければ無理
>>847 の言う通りコピペするか自分でmovetype flyを書く
解決しました。回答ありがとうございました。なんとか目処が立ちました
イベントのネタが思いつきません
というかタイトルが足りません
466(現シロクロ)みたいに後から変えてもいいんやで?
ハルベリ初期勢力多すぎるんですよね
数えたら23もありますよ
10こまでは考えたのに残り13で半分もいってないっていう…
勢力数の多寡といっても、ワールドマップの広さとか、初期領地の広さとか
国家間の関係とかも個々それぞれだし、あまり他所のシナリオばかり気にし過ぎないでも良いと思うで
タイトルだって、有名所でもナチガリアみたいに複雑に見えてかなり単純なのもあるしね
手の届く範囲で好きにやればええやわ
ていうか数日ちょっとで20を超える勢力を考え尽くすのはちょっと無理があると思う
ハルベリだって1の更新終了後に2が出るまで2年以上の間があるしね(実制作期間は知らんけど)
人魔大戦みたく、ワールドマップを2〜3個に分けてそれぞれの地域ごとに個別に完成させていって、
最後に擦り合わせて一つの大陸シナリオにするのもいいかもね
なんにせよ、一度にあれもこれも全部やろうとするとモチベが死ぬから、無理のない範囲から考えていくといいと思う
きのたけみたいにモチーフにできる元ネタあると楽なんだけどね
それこそ祖国と銃とやGreat Europe Warは現実が元ネタで勢力作ってるし
とりあえず薄く多く作るか厚く少なく作るかの方向性を決めれば良いかと
厚く多く作る欲張りセットもあるけど最初からこれは厳しい気が
気長に薄く多く作りたいかなぁ
製作者の方は技術だけでなくモチベもすごいんだなあ
頭の中の声に聞けばいいんですよ
Charがどこのデータか教えてくれますよ
ハルベリの人材を光の目に登場させてみようとしたのですがユニットのアイコンを追加する方法が分かりません
試しにハルベリ側のimageファイルを光の目のchipファイルに入れてみましたが容量が大きいので削除するという表示が出てきました
どなたかご存知の方ご教授ください
859です
自己解決しました
質問です。
特定人材のレベルを条件にイベントを発生させたいと思っているのですが、
人材ユニットのレベルを返す関数って無いのでしょうか?
調べても見つかりませんでした。
ttps://www28.atwiki.jp/vahren_ency/sp/pages/614.html
wikiをまず嫁
pushLevelダゾ
関数ってついてるページを調べまくってたんですが、なんでこのページに辿り着かなかったんだろう……
たった十分で答えてくださりありがとうございました。
できるだけもっと調べて質問するようにします。
人材ユニットのmemberに加えても初期陪臣にならない一部人材ユニットがいるのは何故なんでしょう?
特にloyalも付いてないのに…色々弄ってもはや万策尽きました
一番可能性が高いの
ス ペ ル ミ ス
陪臣にする人材をシナリオの方に記入していて、選択可能人材になっているのでは?
人材イベントの管理項目ってあんなにあるのか……
頭痛くなるな
ハルベリで人材プレイ用のイベントを作りたいのですが何が分からないかも分からない状態です
どういう手順を踏めばいいんでしょうか
ヴァーレんトゥーが本家のwiki見んさい
制作のページ全部読めば大体なんとかなる
story構造体、istalent、isplayer(あるいはstoreplayerunit)で大体なんとかなる
何度でも言うけどwikiや他シナリオを参考にしよう
シナリオはファイル多くて探すの面倒ならmodなら目当てのものだけ入ってるから探しやすい
むなしい努力で人材のイベント作ろうとしてるんですけど 他の部分の記述を参考にして
talk(人材,文章)
で書いていった結果
1 自分が作ったイベントでは、イベントを作りたい人材のtalk()の部分を書いてからゲームが起動しない
2 talk部分を取り除いたmsg()部分でも表示されないものがある
3 他のopイベントでテストした結果、自分がイベントを作りたい人材のtalk()部分だけが表示されない
4 msg(人材,画像,文章)でも同様の結果になる
ということが発生しました 解決しようがありません 助けてください
ファイル上げてみてくんない?
他のopイベントでテストしたってのは、if式ごと入れたんじゃなくてtalk部分だけ入れても表示されないってこと?
>>873 そうです
http://whitecats.dip.jp/up/download/1525079802/attach/
event の中にあるev_サブ.datのop_sigureが自分で作ったイベントです
途中までしかありませんが、eventの中の時雨×デルティエ(mod).txtが全文になります
テストはop_fenekuでやりました
>>874
合言葉はzipです
なんだかよくわからんスペース消したら動いたよ
それとmsg内の()は全角じゃないと駄目よ
あとNGT本体を二次配布しないで
ましてやNGTの中に更にNGT,zipを同梱するのはやめて
そしてMOD制作頑張って
ハルベリ2で人材イベントを作ろうとしているものですがもうなんか分からないのでファイルをアップロードするのでご指導頂けませんでしょうか
githubに公開した方が何かと便利やでー
アップロードするのは構わないけど、その上でどこが分からないか説明してね
何が何やら分からないと言われてもアドバイスしようもない
小物入れにアップしました。
ハルベリ人材イベント質問用というのがそれです
人材が勢力に所属した時にイベントが起きるというふうにするやり方が分からないという
質問になるかと思います。githubは私には早すぎると思ったので今回は遠慮させて頂きました、すいません
inPower(対象勢力,shigeru)をstoryの方のif式に加えるだけじゃないですかね
動かしてないから何とも言えないけど、イベントが始まらないのはイベント構造体名被りまくってるから内部でゴチャゴチャしてるんでは
あとisplayerが無意味に重複してるよ
おかげ様で何とか動くようになりましたのでアップロードさせて頂きました。本当にありがとうございました。
フリープレイ用ですが小笑の一つにもなれば幸いです。
>>874 です
たった今試してみたところ、ちゃんと動きました
また、非常識なふるまい申し訳ありませんでした
手順049 spot構造体の作成(最小限)
spot構造体を作成します。
この構造体は戦略フェイズにおけるエリア単体の情報を表します。
spot構造体はは複数作成可能です。
spot s1 {
name = 西の原っぱ
image = kusa
x = 240
y = 500
member = kumada
map = kusamap1
}
spot s2
{
name = 東の原っぱ
image = kusa
x = 400
y = 500
member = kumagai
map = kusamap1
}
spot s1 のs1って何ですか?
spot構造体 「名前」
{
スポットの内容
}
の「名前」の部分
spot1の略
なるほどそういう意味でしたかありがとうございます
攻撃側のスキルが死霊属性・恐慌の状態異常付加で、攻撃される側の耐性が死霊無敵・恐慌耐性なしの場合はどうなりますか?
ダメージが通らないけど状態以上にはかかる
>>891
回答ありがとうございます
オリキャラの耐性設定の参考にさせていただきます
aとbでaのマスターをbの勢力にaddUnitしたあとにマスターにして、bがaを吸収合併した場合に
aのマスター不在フラグを引き継いでしまう不具合?を発見しました。
bが戦闘を行うとマスター不在で滅んでしまいます。
aとbの合併の前にaのマスターを適当に他のメンバーに選んでおくことで回避できそうです。
スクリプトからアプローチして陪臣を直臣にする方法はありませんか?
普通に一度外してから勢力にaddunitしたらイカンのか
>>895
そのユニットの部隊に入った状態で直臣である状態にしたいのです
CPU状態に一時的にして確実に召し上げる方法とかあればいいんですが
何かそれ前も誰かが聞いてた気がするけど
特定の部隊から外したくない(専属)って時点で直臣というより陪臣じゃん
多分意図的にそういう状態にすることを想定してないと思うしできないんじゃないかな
陪臣か直臣かという設定上の問題よりも、陪臣である場合ユニットの順番変更が部隊内できないという問題がありまして・・・
全員陪臣の場合、特定の順番が固定になってしまう感じで色々困るのですよね
陪臣同士で順番を変更できればいいのですが
むなしい努力からキャラチップの素材を調達したいのですが
どこのファイルにデータがあるのかわかりません
どこに入っているのでしょうか?
>>898
陪臣位置入れ替えできないってことはマスタープレイ想定?
なら直臣は結局部隊から外せちゃうし、だったら部隊に入っていてもいなくても変わらないよね
何にしても前の質問者も色々手を尽くして駄目だったみたいだから代替案探したほうが良いよ
>>898
>陪臣同士で順番を変更できればいいのですが
これならaddUnitを使えば可能です。addUnitで陪臣を一旦部隊から外して領地に移動させ、再度同じ部隊にaddUnitすれば、最後尾に追加されます。
例えば、「リーダーの後ろに、陪臣C、陪臣B、陪臣A」と並んでいて、「リーダーの後ろに、陪臣A、陪臣B、陪臣C」にしたいとすると、陪臣Bと陪臣Cを外して陪臣Aだけにして、陪臣Bを追加してから、最後に陪臣Cを追加すればいい訳です。
あるいは、陪臣の数が多い場合は、全員を外してから、好みの順番でaddUnitすれば、簡単に順番に並んでくれます。リーダーが前衛で、後衛キャラを陪臣にしちゃうと、戦闘時に最前列に並んで死にやすいのですが、この方法で最後尾に移せば安心です。
>>899
素材を抜き出すのはダメだよ
小物入れのこれに入ってるからDLしなさい
https://ux.getuploader.com/vahren/download/3463
さんくす!
>>901
となると内政でどうこうする感じですか
陪臣=人材なので、人数とってchoiceの選択いくつか割ってで選ぶ感じですね
ありがとうございます、参考にいろいろプレイヤーの面倒にならないような処理ができるようにしてみます
内政のアイコンをスキルツリーみたいに配置することってできませんかね?
昔のVerのミドナのカード保有枠みたいなデカい画像に書き起こして、
各アイコンを内政の進行に併せて変更するスクリプトを組めばスキルツリーの表示『は』出来そう
問題点はスキルツリー側での操作は出来ない事や、
どうしても面積取ってしまうから出しっぱなしには向かないし、一時的に呼び出すコードとか組んでいると物凄く煩雑になりそうなことか…
ヴァーレントーガ自体が古くなってきたんだが他にいいゲームないか?
世界観を表現するのに
かーどわーす
SRCおすすめ
ヴァーレンよりも古い気が…w
オープンファーレンを完成させるのだ
>>905
可能か不可能かなら擬似的に可能
内政をツリーみたいにするってことですよね?
ツリー側で操作できるようにもできますが、やはり擬似的になります
具体的には40*36が内政アイコンの限界で、横を敷き詰めることが可能です
これをツリーにみたてた線まで入れて表示します
内政は横敷き詰めないと2段目にいくことができないので、横に不必要な部分は透明のアイコンを開けないようにします
こんな感じでどうでしょう?
ちなみに縦側には敷き詰められないので、そのあたりはアイコンに若干の工夫が必要かもしれません
透明なアイコンというか無効な識別子を指定すればアイコンなしの開けない内政ユニットになるはず
ただいずれにしても見えないオブジェクトが発生しちゃうけど
個人的にはやはりミドナ式をおすすめする
内政、ツリーに関する提案ありがとうございます
とりあえずミドナ式と「ライン」と透明の内政ユニットを配置する方法を試してみて
総合的に見て良さげな方法にしたいと思います
ご協力ありがとうございました
>>914
ミドナ式であれば、下地の画像にアイコンを条件にあわせて座標で表示するようにすれば非常に見た目は綺麗になります
ただしあくまでも座標なのでクリックできないのが弱点ではありますが・・・
どちらも一長一短といった感じですね
フリー素材の詰め合わせに含まれるセルシウスを黒髪の人間風にしたいのですがドットを弄るコツをおしえてくれませんか?
言葉で説明するのは困難なので「ドット絵 加工 講座」とかで調べた方が早いですよ
フリー素材いじるのはいいけど改変大丈夫なやつよね?
フリーだからなにしたっていいだろと勝手に改変して大炎上したことがあったはず
<あぼーん>
>>916
必要なら代わりにやってみるけどもう大丈夫かな?
自力で作れたんですがドットを一つずつ弄るという原始的極まりない方法なのでなんとも
そういうもんやで
クラスユニットがレベル上がってもhp増えないようにするにはどうすればよいですか?
multi=の後の数字消してもコンテンツのfv_○○を1とかにしてもクラスチェンジするとhpあがってしまって困ってます。
とりあえず異性間以外の速度以外の能力がクラスに完全依存のmarlinのスクリプト覗いてきたけど、
multi =で0に指定して上がらなくしているみたい
後、fv_は戦力値算出用だから成長率とは一切関係ないみたいだね
multi=5,hp hpが5%ずつ上がる
hpUp=5 hpが5ずつ上がる
優先度 multi<*Up
らしいのでどこかで*Upが指定されてたらmultiいじっても無視されると思う
みなさんありがとうございます。やってみます。
要望です。
テキストウィンドウや列伝などの文字のサイズを自由に変更できるようにしていただけないでしょうか。
フリーフォントを入れると文字が小さすぎて見えないのが理由です。
>>927
https://www28.atwiki.jp/vahren_ency/?cmd=word&word= フォント&type=&pageid=694
font_text = (フォント名) テキストウィンドウの文字
font_detail = (フォント名) 列伝の文字
>>928
いやフォントを変更すると文字が小さくなってしまうという話です。
質問です
攻城戦で観戦を行うとフリーズするのですが、考えられる原因は何でしょうか
それだけではなんとも言えないけど真っ先に疑うのはメモリ不足
あとはランクアップ記述が間違ってる時もフリーズするね
あと簡易戦闘でaddtroopするとフリーズするよね
あるいは城壁値と観戦を条件にフリーズするような戦闘イベント発生させてるか
ヴァーレンの暗号化オプションはヴァーレン内証明書を使っているのかな
どんな原理なんだろ
>>931 >>932 >>933
確認してみます。ありがとうございます。
<あぼーん>
>>935
素早さが0のやつがいたときにフリーズしたこともあった
誰か銀河英雄伝説シナリオ作ってくれないかな?
あとはオンラインとかやりたいが技術持っている人いないかな?
それはお前がやるんだよ
というのは置いといてとりあえず改変シナリオ一覧から似た設定の奴探してそれ改造するとこから始めてどうぞ
銀英伝に熱中したときに作ろうかなって思ったけど宇宙での小型戦闘機の挙動がvtでは表現できないなって思ってやめた。
てか銀英伝をモチーフにしたオリシナってもうあったと思うんだけど。
綺羅星だな。あくまで系であって、そのものではないんだけど…
銀英伝in石器時代をやればええんちゃう?
バトルアックスとゼッフル粒子地雷で戦う白兵戦シナリオか…
オフレッサー最強だなw
オフレッサー最強だなw
某ロボット世界のミノフスキー粒子みたく、この宙域はゼッフル粒子濃度が高いので火気使用不可です
装甲擲弾兵GO! な感じの設定ならヴァーレンでも出来そう
それもう銀英伝である必要が…
ラインハルトみたいな美形描くの難しそう
フリーアイコンにいいのあるかな
本編では実現しなかったオフレッさーVSローゼンリッターを是非・・・
ミッターマイヤーがバイエルラインを召喚して敵陣に突撃させる姿は見えます
キルヒアイスの副官スキルがやばいのは容易に想像がついた
初歩的な質問で申し訳ありません。
スキルの消費MP<ユニットのmprecだと、
そのユニットのスキル使用時のmp消費は0になってしまうのでしょうか?
speedによるが消費して即回復する感じになるね
消費自体はするからspeedを1000とかにして超速連射させればちゃんと枯渇する
>>952
聞きたいのは「MP消費」ではなく「MPの収支」では?
それならこんな感じでテストすればいいよ
テスト1 ユニットのMP200、mprec0、スキルのMP消費100
テスト2 ユニットのMP100、mprec50、スキルのMP消費100
テスト3 ユニットのMP100、mprec100、スキルのMP消費100
テスト4 ユニットのMP50、mprec1000、スキルのMP消費100
:(好きなだけテストしてみる)
この程度のテストは自分でしないとダメ
>>953
>speedによるが
通常スキル、hprec/mprecの回復はいずれも行動タイミング
speedで処理が前後することはない・・・と思ってたけど俺間違ってる?
そうなんだ
前にクソチートユニット作って無双ごっこした時に適当に設定したらMP尽きてスキル止まってたから回復タイミングはみんな同じだと思ってたわ
じゃあspeed上げると実質的にhpmp自動回復速度も上がるのね
>>954
質問主ではありませんが、興味があったので実験してみました。
テスト1:ユニットのMP10、mprec1、スキルのMP消費1
MPが10から減らないで、何発でも連射できました。
魔法攻撃でMPを消費した直後に、回復するので、表示は最大値のままです。
「最大値 -> 消費 -> 回復 -> 消費量と回復量が同じなので最大値に戻ってる」という状態です。
テスト2:ユニットのMP10、mprec1、スキルのMP消費2
1発撃つごとにMPが1ずつ減っていきます。
「初期値 -> 2消費 -> 1回復 -> 結果として1減ってる」という状態です。
9発撃った時点で残りMPが1になって、スキルを使えなくて休みます。以降は、発射と休憩を繰り返します。
speedを40,60,100,1000と変えて試してみましたが、MP回復のタイミングはスキル使用直後のままでした。
「MP回復 >= MP消費」なら切れ目なく連射できますし、「MP回復 < MP消費」ならMPが足りない間は休みます。
>>955
スキルの連射が止まったのは、MP不足ではなく、移動操作が原因ではないかと思います。
前進型の遠隔攻撃ユニットを敵から遠ざかるように操作して引き撃ちしようとすると判りやすいのですが、
ヴァーレントゥーガの仕様として、移動先を指定した直後(一定時間?)は攻撃できないようです。
更に、移動中も連射速度が落ちます(攻撃間隔が数フレーム長くなる)。
なので、停止してれば高速連射するユニットでも、頻繁に移動先を変えながら遊撃させようとすると、
動くだけであまり攻撃してくれない、という現象が発生します。
すみません。戦闘開始時、団子状になってしまう軍隊を部隊同士が重ならない程度に横列にしたいのですが、システムのどこを帰れば横列になりますでしょうか?初心者の質問ですみません…
>>956
実験&レポートおつかれさまです
>>957
横列とか正方とかはステージエディタ(マップ作るやつ)の時点で指定
広さは確かcontext.datあたりで設定・・・だと思います
スキル取り放題なキャラでのんびりやってたらいつの間にか4万ターンとか超えたけど
ヴァーレンの1ターンって何日くらいなんだろ
本当にのんびりやってますね…
ターン数とかバグらないんですか?
https://i.imgur.com/3VmePOw.jpg
表示は大丈夫みたいです
戦闘と戦闘の間ですら全ての種族の傷が完全に癒える程度には経ってるから1ターンはかなり長いよな
マスターの陪臣が召し上げに金がかからないのは仕様でしょうか?
金が掛かるようにしたいのですが・・・
陪臣の召し上げにお金がいること自体が自分の配下の私兵を買い上げて自分(マスター)の配下にするってことだから
そういう意味ではマスターの陪臣は配下と同義だからお金がかからないのは仕様だと思うよ
そもそもお金がかかったところでマスターの金=軍資金だから出たものが戻ってくるだけ
>>964
マスターの部隊にマップ上で固定したいのですが、何らかの方法はないでしょうか?
一応雇用後に部隊から抜いてマスターの部隊に入れると陪臣になるので、召し上げた瞬間に動かせるイベントがあれば対応できるのですが・・・
>>965
結局のところマスターの下から動かしたくないってこと?
それなら最初は陪臣で近衛でもなんでも特殊な役職にして勢力でトップにできず誰の下にもつけられなくしたら移動は不可能になるのと同義だと思う?
それなら陪臣といても部隊内で順番かえられるし便利なんじゃないかな
あぁよく考えたら人材にトップにできないとかは関係ないか
忘れておくれ
少なくともそういうシステムは見たこと無い
外せるけどstoryで即座に戻ってくる奴しか知らない
>>969
雇用系なら雇用や解雇した瞬間に読み込まれるからできるはず
見たこと無いのは>>967 じゃなく固定の方ね
質問なのですが・・
マスターなし陣営を作った場合、その陣営のみ視界が開けない(view_rangeの設定が無視される?)のだけど、解決方法が見えない・・どなたかご存知ないだろうか?
仮初のマスターを作って置いておくしかないのか。
>>972
マスターが存在しない勢力をプレイヤーが担当するのは想定外なのかもしれません。
バグとして修正してもらえるのを待つ以外には、視界制限を止めるしかなさそうです。
戦闘中イベントで showBlind() を使えば、動的に視界制限を解除できます。
>>973
なるほど・・ありがとうございます。
戦闘中イベントで対処というのは思い付きませんでした・・そういう手もあるんですね。
質問です。
難易度の一つとして戦闘の一時停止が出来ないというのは作れますか?
そこまで行くとスクリプトではなくヴァーレン本体そのものを改造する必要があるんじゃないか?
個人的に「やっちゃあいけないレベルの改悪」だとは思うが
視認性は演出にもなるからともかく、操作性を下げるのは難易度低下じゃなくてただの面倒くさいゲームだぞ
キーコンフィグが変更できるようになったら、ポーズのキーをあえて押しにくいとこに設定することで擬似的にポーズ困難にできるな
スキルの順序調節で、人材固有スキルをクラスが元々持っているスキルより前に出すのってどうすればいいの?
WIKIで順序で検索かけてみたけど一向にそれらしき関数が見当たらない…
>>979
sortkey = (数値)
「skill 構造体(遠距離攻撃/攻撃魔法)」の上にある「スキルの共通基本データ」に折りたたまれてるから覚えとくといいよ
>>980
確認してみたけど使い方がさっぱりわからない…
>>981
skill構造体で
skill sword
{
name = 剣
(中略)
sortkey = 500
}
skill spear
{
name = 槍
(中略)
sortkey = 300
}
skill bow
{
name = 弓
(中略)
sortkey = 700
}
ってすると
[槍][剣][弓]
の順番で並んでくれる
こんな感じ
chipフォルダに805、imageに634の画像ファイルがある状態で起動したら>>130 にある
「ユニットのキャラチップが規定サイズを超えました。一部排除して切り詰められます。」
が出た
chipフォルダの画像を一つ適当に削除したら出なくなったから、画像の上限は1438なんかな
>>982
分かりやすい説明ありがとうございます。試してみます
>>984
sortkeyでもいいけど、人材固有なら普通にskill2でいいんでないの?
なんか勘違いしてたらゴメン
>>985
こういう手段もあったんですね。教えていただきありがとうございます
ゲーム内での現在値ではなくて、構造体内の初期値をどの時点でも参照する方法ってありますか?
>>987
すまない、言ってる意味が分からないが何となくこういう意味かな、と感じた範囲で答えておく
恐らくは何らかの変数の初期値だと思うけど、それを別の変数にも入れて、その別の変数を参照すれば良いのではなかろうか
もしそういう意味じゃないなら、もう少し具体的に質問して欲しい
>>988
恐らくその意味であってます
やっぱりグローバル変数に個別に格納した上で、そこから引き出すしかないって事ですかね
ありがとうございました
classなら新しくaddunitして値取ってすぐ消す手もあるが
基本的にはグローバル変数に格納するか、構造体名を渡すと基本値を返すルーティンとか作っておくかだと思う
質問なんですが、Vahrenに入っているシナリオ製作ツールのImageMakerを使って作成してあるimageに
ImageViewを使ってchip追加しようとすると上手く行きません
と言うのも、透過処理したpngを上書きしようとすると、ImageMakerを使って作成したchipは、背景が真っ黒に対し
追加したchipは背景色となり、これを混ぜると、ImageMakerのchip分が背景真っ黒で登場してしまいます
正しい追加方法を教えて頂けると有り難いです
Image.dat、もしくはimage2.datにちゃんと追加されているなら
多分使い方は正しいと思う
ちなみにこっちだとchip2フォルダ内に置いておくと正常に描写されるけど
image2.datに含めると真っ黒く描写されてしまうpngファイルがある
因みにImageMakerを使って0から作っても、ImageViewを使って追加しても駄目だった
今のところ妥協してchip2フォルダ内に置いているけど、
物によってはシナリオ製作ツールと相性の悪いpngファイルがあるという事だと思っている
で、>>991 の使ったpngファイルもそうである可能性はある
自分と同じ事やって駄目なら、chipフォルダやchip2フォルダに置くしかないと思う
>>992
相性の問題のも有るんですね…何とか騙し騙し追加は出来ているので現状のままやっていきます
回答有り難うございました
属性耐性に関する計算式がwikiにも過去ログにもないようなので以下のようにして調べてみた
・verは6.85とそのスクリプトを7.00にそのまま移したもので最新バージョンに対して有効かは微妙に疑いが残る
・attack100,defense0,magic100,magdef100の一般ユニットと人材ユニットを作る
・各耐性強度に対応するattack倍率1の近接攻撃スキルを持たせて人材ユニットに一般ユニットを殴らせて数字を取る
・乱数があるのでダメージ最大と最少を取って足して2で割って中間値を求め、倍率を予想する
・またattackをmagicに置き換えて倍率がどこにかかるのかを見た
結論として倍率は攻撃値に掛かる形(与ダメージに掛かるわけではないのでダメージが下限になったり防御が高くても大ダメージを貰ったりする)
で耐性強度1から順に
2.0、1.75、1.5、1.2
6からは逆数で、例えば6の倍率は1/1.2、9の倍率は1/2.0
しかしこれはむなしい努力のwikiのダメージ計算と矛盾している
どちらかが間違っているのか、もしくは倍率を変えられるのか
https://jbbs.shitaraba.net/bbs/read.cgi/computer/42292/1282244590/543
過去ログではこんなんがあるけど
+4が0.2だとどう考えても死にそうにない場面で死ぬのがちょいちょいあるのよな
あと、キノタケだと表記をLanguageで差し替えてるだけだけど
200%/175%/150%/120%/80%/66%/57%/50%と見做してるのよな倍率
ダメージ最低値がデフォだと10だから無敵じゃない限り死ぬときは死ぬ
デフォだと?最低値って変えられるのか
fixですら10未満にならないから無理だと思ってた
>>994
wikiには書いてませんが、耐性によるダメージ倍率をcontextで設定できます。
「改造・制作スレ part3」の403で説明されてます。
https://jbbs.shitaraba.net/bbs/read.cgi/computer/42292/1305281909/403
damage_consti未設定時のデフォルト値は不明です。
かなり古い情報なので、バージョンによって違うかもしれません。
>>998
おお、これはありがたい
verはヤヌークの立ち絵があるから、恐らく最新版で
damage_constiと
damage_max,damage_minの攻撃値の係数に関する影響まで確認(敵防御0で攻撃値の乱数を変動なしに)
damage_consti未記述では0から順に
即死(表示される数字は最大ダメージ),2,1.75,1.5,1.2,1,1/1.2,1/1.5,1/1.75,1/2,ノーダメージ(最低ダメージも入らない)
逆数は0.83ではなく0.833…となるみたい
あとdamage_constiを記述しても即死とノーダメージは変わらないようだ
記述は標準では存在しないので書き加える形で
https://jbbs.shitaraba.net/bbs/read.cgi/computer/42292/1537276030/
次スレ立てました
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板