したらば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/

513 名無しさん@立夏 :2017/06/17(土) 19:01:51 ID:???
image dat になってるものを他シナリオで流用する方法はありますか?
例えば光の目のものを祖国と銃で使用するなど

514 名無しさん@立夏 :2017/06/17(土) 19:05:32 ID:???
image dat になってるものを他シナリオで流用する方法はありますか?
例えば光の目のものを祖国と銃で使用するなど

515 名無しさん@立夏 :2017/06/17(土) 19:51:59 ID:???
あるよ
だけどその方法を教えて良いのかどうかがわからないのだ

516 名無しさん@立夏 :2017/06/17(土) 20:06:37 ID:???
image.datの加工が必要になるのだが、昔ななあしさんがImageExtractorいうの作ってたけど問題が生じたとかで削除された経緯があったようでね
実際何がどう問題だったのか、今回のこともOKなのかどうか法律家でもない私にはわからないのだ

517 名無しさん@立夏 :2017/06/17(土) 21:41:10 ID:???
素材には素材の著作権があるからな

518 名無しさん@立夏 :2017/06/18(日) 17:38:27 ID:???
なんか他人のスクリプト見て勉強してると、else ifを使ってないことが多いのな
専用の変数用意してsetして次のif文飛ばしとかしてるんだが、そっちの方がelse ifより早いのかね?

519 名無しさん@立夏 :2017/06/18(日) 18:06:58 ID:???
本当に専用か確認した?
他でも使ってない?
else ifは確認そのものをすっ飛ばすんだからそんなに遅いはずないと思うけど

520 名無しさん@立夏 :2017/06/18(日) 19:01:03 ID:???
戦闘時イベントにelseが一切使えないのは理解してる
一応Visual Studio Code使っててフォルダ内全検索機能使って確認してるよ
銃魔のスクリプトだけど難読化目的なのかね?

521 名無しさん@立夏 :2017/06/18(日) 21:23:19 ID:???
銃魔見たことないけど俺も else if あんまり好きじゃないわ
if( 条件 ) { 処理 return } でさっさと引き返すほうが好き
他にevent(文字列変数)って手もあるよね。こっちはちょっと恐いけど

522 名無しさん@立夏 :2017/06/18(日) 21:39:49 ID:???
else if 使ったほうが後から見た時にひとまとまりの処理と認識しやすい

523 名無しさん@立夏 :2017/06/18(日) 23:27:18 ID:???
インデントがお粗末なスクリプトが多すぎて困ることが多い

524 名無しさん@立夏 :2017/06/19(月) 08:12:37 ID:???
そもそもそこは人の勝手だから
別に仕事で多人数で開発するわけでもないんだから他人が口を挟むところではないだろう
もちろん可読性が高いほうがバグ探しで有利だけどさ

525 名無しさん@立夏 :2017/06/23(金) 15:39:17 ID:???
else if使わないと何度もif通って重くなる場合がなぁ
それぞれ全く違う処理する場合(たとえば人材全パターン全く違うtalkを必要とする場合)で、人材のパターンがとてつもなく多いとelse ifで繋げなきゃいけないパターンもあるし・・・

ABCグループ化してAの中なら・・・Bの中ならで分割すれば軽くなるとはいえ、それだってパターンによってはさらにelse使わなきゃいけない場合もあるし、結局ifだelse ifだといっても何に使うかじゃないんでしょうか
そもそもif(){}if(){}とif(){}else if(){}では結果的に同じ動きするとしてもそれの持つ意味は厳密に言えば違うんだから

526 名無しさん@立夏 :2017/06/23(金) 15:49:16 ID:???
switch文が欲しかったです
else ifは使って当然という立場

527 名無しさん@立夏 :2017/06/23(金) 21:09:31 ID:???
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 )
}

528 名無しさん@立夏 :2017/06/29(木) 23:22:57 ID:???
ヴァーレンというより数学の質問なんだけどいいですか
勢力の経済値に連動して価値が上下する証券というか債権というかを作ってるんですけど、現在値段が経済値に比例するようになってる
でもこれだとゲーム序盤とか小規模勢力とかはすぐ証券価値が2倍3倍に上がっちゃうから、もっと緩やかな変化になるようにしたい
そこで√使おうと思ったんだけどヴァーレンの関数になかったから困ってる
ヴァーレンで可能な数値計算でどうにかできる方法はありますか?
教えて理系の人

529 名無しさん@立夏 :2017/06/30(金) 09:29:12 ID:???
一番簡単な方法言うぞ
勢力値を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)
}

530 名無しさん@立夏 :2017/06/30(金) 09:30:54 ID:???
このスクリプトはインデントのために全角空白使ってるからそのまま使うなよ

前半部分は高速化のための呪文部分
本質は後半のwhile(1==1)
癖でwhile(true)って書いてしまった

531 名無しさん@立夏 :2017/06/30(金) 09:32:01 ID:???
これで勢力値を二分の一乗した値がloopに代入されるぞ

532 名無しさん@立夏 :2017/06/30(金) 09:37:15 ID:???
ニュートン法使った方が早いだろうから自分で考えてくれ

533 名無しさん@立夏 :2017/07/02(日) 07:30:29 ID:SuIz0SiY
SpotMakeHelper作者様へ
要望なのですが、ドラッグでスポットを自由に移動できるようにしていただけませんでしょうか
今のままですと微妙な位置調整ができず不便さを感じますのでご一考くださると幸いです

534 名無しさん@立夏 :2017/07/03(月) 02:57:48 ID:???
平方根はこれでイケるはず:

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)
}

535 名無しさん@立夏 :2017/07/05(水) 19:35:18 ID:???
回答書いてもらって感想の一つも言わんとは失礼なやっちゃ

536 名無しさん@立夏 :2017/07/06(木) 16:40:39 ID:???
初歩的かつ、恐らくもはや答えが出てる質問だと思うのですが、
調べても上手く見つけることが出来なかったので質問させて頂きます。

ヴァーレントゥーガ本体に入っている素材はヴァーレントゥーガを改造した
オリジナルのゲームでもヴァーレントゥーガと同じ条件で使用可能なのでしょうか?

ジャンキージャンク様等、素材の出所が分かる素材はそこに従えるのですが、
アイコンなどはどこから出てきてるのかも良く分からず困っています

537 名無しさん@立夏 :2017/07/06(木) 22:31:24 ID:???
公開するつもりなら流用はVT自体のMODとかでもない限りは止めた方が無難
アイコンは小物入れになかったっけかな

538 名無しさん@立夏 :2017/07/06(木) 23:01:55 ID:???
>>538
ありがとうございます。
「VTの拡張シナリオ」という体ならば、「俺はスクリプト書いてるだけなのでセーフ」になるんですね。
やはりオリジナルゲームとして公開するならばその辺りは一つ一つ確認する必要がありそうですね。
小物入れ探してみます。
重ね重ねお礼申し上げます。

539 名無しさん@立夏 :2017/07/07(金) 10:53:01 ID:???
正直√なんて無理だろうから他に良い方法ないですか?的なニュアンスで聞いたんですが普通に√出せるんですね 理系ってすごい
ありがとうございました
実際使うかは分かりませんが内政はそのうち公開するかもしれません(ngt用だけど)

>>535
PC書き込み規制+スマホ紛失コンボから今日復活したんだ
すまんな
独り暮らしでぼっち学生だから誰もスマホ鳴らしてくれないんじゃ

540 名無しさん@立夏 :2017/07/07(金) 15:45:43 ID:???
そんならしょうがあるめえ

541 名無しさん@立夏 :2017/07/08(土) 22:53:25 ID:???
>>533
作者です。
SpotMakeHelperをお使い頂きありがとうございます。
ドラッグ機能の追加検討したいと思います。

微妙な位置調整ですが、右側にあるNumericUpDownコントロールで値の増減が可能となってます。
そちらにフォーカスを合わせてキーボードのアローキーの上下または、マウスで▲▼ボタンをクリックすることで数値が1づつ変わります。
そちらもお試しください。

542 名無しさん@立夏 :2017/07/09(日) 00:10:51 ID:A1.p9DLk
>>541
ありがとうございます!

543 名無しさん@立夏 :2017/07/11(火) 12:50:13 ID:???
初歩的な質問で申し訳ないんですが
人材追加をしようとした所エラーが出て困っています
ステータスだけのものならエラーが無しで起動するのですが、スキルを書き加えるとエラーが出ます
既存のスキルを名前と説明文だけ変更したものなのでスキル本体に問題はないと思うのですが…

エラー内容は
1:データ文で=を書き忘れています
2:データ文が不正です または関数が不正です
よろしければアドバイスお願いします

544 名無しさん@立夏 :2017/07/11(火) 16:11:39 ID:???
多分使っちゃいけねえ文字使ってんじゃねえかな
とりま書き換えた部分全てを調べて半角文字があったら全角にしてみ

545 名無しさん@立夏 :2017/07/11(火) 20:37:23 ID:???
>>543
>「スキルを書き加えるとエラーがでる」、エラー内容が「1:データ文で=を書き忘れています」
以上の事から、スキルの書き加えた構文が間違っていると推測できます
たぶん書き加えたスキルの前に「,(カンマ)」が抜けているのじゃないかな?

546 名無しさん@立夏 :2017/07/14(金) 20:58:33 ID:???
>>544>>545
アドバイスありがとうございます
ちょっと忙しくて時間取れないので試せてませんが教えてもらった通りやってみます
返信ありがとうございました

547 名無しさん@立夏 :2017/07/20(木) 23:55:07 ID:jc6SN27k
SpotMakeHelper更新しました

http://ux.getuploader.com/vahren/download/4319/SpotMakeHelper+Ver1.2.zip

548 名無しさん@立夏 :2017/07/21(金) 04:18:13 ID:UMWAh7aM
>>547
ありがとうございます!

549 名無しさん@立夏 :2017/07/23(日) 17:41:26 ID:???
ヴァーレン本体が落ちる目安ってPC機体毎に違うのでしょうか?
そもそも処理が重かったり多すぎると何故落ちるのでしょうか

550 名無しさん@立夏 :2017/07/23(日) 23:16:05 ID:???
重くなくても落ちるときは落ちるよね

551 名無しさん@立夏 :2017/07/24(月) 13:11:43 ID:???
そこらへんの基準がわかればありがたいのですがね

552 名無しさん@立夏 :2017/07/25(火) 06:46:00 ID:???
最新版はわからないけどaddtroopあたりは直近くらいまではダイアログでないまま落ちることがあったかな

553 名無しさん@立夏 :2017/07/25(火) 18:43:17 ID:???
time長めのスキルは要注意
人材専用スキルならまだしも、一般ユニットも扱えるスキルだと大体重くなる
これがでrushまであった日にはもう大変

554 名無しさん@立夏 :2017/07/25(火) 19:12:53 ID:???
おお、ありがとうございます
rushが大きいので、それも一因でしたか

555 名無しさん@立夏 :2017/07/25(火) 22:39:58 ID:???
呼ぶと100%無言落ちする関数あるよなしかも複数
ゼロから自作するなら関数のテストから始めたほうがいいですよ

556 名無しさん@立夏 :2017/07/28(金) 02:49:18 ID:???
領土を広げた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構造体の再利用は不可能なのでしょうか?

マスターは死亡していません。

557 名無しさん@立夏 :2017/07/28(金) 06:26:06 ID:???
同名の別勢力をつくらないとダメだったと思う

558 名無しさん@立夏 :2017/07/28(金) 18:45:30 ID:KigvTGxQ
>>556
滅亡時に滅亡するのではなく、アボンのエフェクトと滅亡ダイアログと同時に事前に決めたハイドスポットに逃がすってのはどうですか

復活自体は不可能です

559 名無しさん@立夏 :2017/07/28(金) 19:40:59 ID:???
>>557
>>558
ありがとうございます。
やっぱりPower構造体の再利用は不可能なんですね。
アボンのエフェクトと滅亡ダイアログはEXEが制御してるんでしょうか?ちょっと見つかりませんでした。
ちなみにVTではなく、LostTechnologyをベースに色々といじっています。

苦肉の策ですが、
storeSpotOfUnitでリーダーのいるspotを抽出し、isJoinで本拠地spotから途切れていたら、
リーダーを強制的に本拠地に飛ばす処理で滅亡を回避してみたいと思います。

かなり強引ですが・・・。

560 名無しさん@立夏 :2017/07/28(金) 20:51:57 ID:???
復活が駄目ならそもそも滅ぼされなければいいじゃない
やったことないが、戦闘開始前にchangeMasterでマスターを他の領地にいる人材に変更すればどうだろう

ただ戦闘中にマスター(元)のステータス確認されるとまずいが

561 名無しさん@立夏 :2017/07/28(金) 21:06:42 ID:???
>>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とかは下の負けたパターンの場合の最後にダイアログと共に出せば問題なく表示可能かと

562 名無しさん@立夏 :2017/07/28(金) 21:25:35 ID:???
質問者ではありませんが、大変参考になりました
ありがとうございます!


新着レスの表示


名前: E-mail(省略可)


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

ポケットモンスターホワイト2 - 任天堂


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


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