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

製作初心者講座スレ

405あなたの名前を入力してください:2020/08/03(月) 18:26:46 ID:Qzhub8LY
すみません質問させていただきます。
バリアントを作ろうと思っているのですが、構文も何も分からないので、
どれから手を付けたらいいか分からないのでアドバイスをいただければ嬉しいです。
自分が実装したいモノを追加で実装する形から学ぼうとただいまeratohoKを
改造させていただいております。
そこで現在詰まっている場所がありまして、調教時の[愛撫][触手][特殊]といった
タブを追加したいなと思い、USERCOMの220行目辺りを弄りTFLAG:7を増やして
ボタン(タブ)の追加をしたのはいいものの、追加されたタブをクリックしても
コマンドの表示が行われないのでどこを弄れば良いのかうんうん唸って一か月が経ち、
どなたかの手を借りたいなと・・・。
そのタブで表示させたいコマンドをCOMFのところに追加で作り、_COM_CATEGORYや
_COM_KNOWLEDGE_LEVELにも記述を追加したりもしているのですが・・・。
どことどこを弄れば良いのか分からない状態です。
もしよろしければいくつかの質疑応答に付き合っていただけると幸いです・・・。
長文失礼いたしました。

406405:2020/08/03(月) 18:37:02 ID:Qzhub8LY
うわぁごめんなさいっ;;テンプレあるのに確認してないとか・・・!
書き直します!

【質問】
・環境:eratohoK、eraRanceK
・質問内容:調教時のタブを追加したいがどこをどうすれば良いか
・目的
 構文を改造して見たけど思った通りにならないので、どういう仕組なのかを勉強しながら
 思った通りに動かしてみたい。

以上です、すみませんでした!

407あなたの名前を入力してください:2020/08/03(月) 21:04:38 ID:J42BG5Rs
Kの調教画面はいじったことなくて状況がよくわからん

・新設したタブボタンの表示はできている(はい/いいえ)
・新設したタブボタンをクリックした後、新設したタブボタンの色が表示中の色に切り替わっている(はい/いいえ)
・クリックした後、新しいタブに分類しておいたコマンド群が表示されている(はい/いいえ)

USERCOM.ERBで「;タブ設定」とコメントしてあるあたり、
@USERCOMの中でタブ切り替え入力時のTFLAG:7の変更処理があるんだけど
そっちはいじってある?

408あなたの名前を入力してください:2020/08/04(火) 05:29:15 ID:nb6XXe06
>>405
ERBは基本的に3種類の処理を組み合わせて動作しているのだが、どれが欠けても思った通りに動作しない。
A.画面に情報を表示する処理
B.コマンド入力を受け付ける処理
C.内部データを書き換える処理

今回のケースでは用意したボタンをクリックしても反応しないとのことだが、
TRAIN画面ではINPUTなどのコマンド入力用の処理を用意しなくても常にプレイヤーが入力した結果を受け取るように設計されている。
入力されたコマンドはRESULTに格納される。よって、「B.コマンド入力を受け付ける処理」に問題があるわけではない。
内部処理のフロー図:ttps://ja.osdn.net/projects/emuera/wiki/flow

>>407が指摘してくれているのは、
806行目にある @USERCOM で記述されている「C.内部データを書き換える処理」に問題があるのではないだろうか?ということ。
タブを管理している TFLAG:7 を書き換える処理は1056行目の TFLAG:7 = RESULT - 800 と書かれている部分なので、
途中にある IF/ELSEIF などの条件分岐を通過できるように改造してやる必要がある。

409好好 ◆hcbh0U7bsY:2020/08/04(火) 06:08:56 ID:mgbD6unk
>>406
新規タブとコマンドの追加についてですが、
以下の手順で可能だと思います。

1.対象となるコマンドファイルを作成(例:COMF0_愛撫.ERB)
2.Train.csvに対象となるコマンドを登録(番号が既存の物と被らないように注意してください。)
3._COM_CATEGORYに対象コマンドのタブの種類を登録
4._COM_KNOWLEDGE_LEVEL.ERBにコマンドの必要な性知識レベルを登録
5.USERCOM.ERB:220行目~232行目あたりにあるタブボタン表示処理に、対象のタブを追加する
6.USERCOM.ERB:969行目~971行目あたりにある、(;タブ設定)以下に追加したタブの番号を含むように数値を修正する

以上で、新規タブと新規コマンドの追加ができるはずです。
また必要であれば優先度の登録や、各コマンドに対しての新規コマンドの併用条件などを改修してください。

410好好 ◆hcbh0U7bsY:2020/08/04(火) 06:11:19 ID:mgbD6unk
すみませんsage忘れてしまいました。

あと>>409はeraRanceK環境で確認したことなので、
他のバリアントの場合は違う可能性もあります。

411405:2020/08/04(火) 19:15:48 ID:UMfDfEk6
みなさんありがとうございますっ!
今PCが触れる環境ではないので帰ったら早速試してみます!
本当にありがとうございました!!
また何か詰まったら質問させていただくコトになるかもしれませんが、
その時はどうかよろしくお願いいたします・・・!
バリアントの完成はまだまだ先になるかもしれませんし、完成できるかも
分かりませんが、やってみます!

>>410さん
好好さんありがとうございます、今はあたしもRanceさんの方でしているので
とてもありがたかったですっ!

412405:2020/08/10(月) 21:41:37 ID:HMQNCrC2
改めましてお礼を、みなさんのおかげで何がダメだったのかを知るコトができました、
ありがとうございます!

>>407さん
まさにここでした、もう少し構文の中をちゃんと見る癖を付けないとダメですね・・・。
教えてくださってありがとうございます!

>>408さん
ERBの仕組みを解説していただいてすごく為になりました、親切に分解して
説明していただいたのでわくわくしながらメモをさせていただきました!
408さんの解説は自分の中でeraの理解を深める機会になったので本当に助かりました!
ありがとうございます!

>>410の好好さん
具体的な手順の説明ありがとうございますっ!
1〜4までは出来ていたのですが、5〜6を書き換えなければいけないコトに
気が付かず一か月唸っていました・・・。

今回の解説と助言は本当に嬉しくて為になって思い切って聞いてみて良かったと
思っています!バリアントの完成を目指せるように頑張ります!
ありがとうございましたっ!

>>408さん

413あなたの名前を入力してください:2020/08/10(月) 21:47:40 ID:BT.ixpBI
聞くは一時の恥

414405:2020/08/11(火) 01:06:20 ID:L5X5Nu9Y
>>413さん
勇気を出してみて本当に良かったです。
バリアントを完成させたりeraに詳しくなって今度は教えれる立場になるのが、
お返しになるかなと思うので精進します。

415好好 ◆hcbh0U7bsY:2020/08/11(火) 14:59:34 ID:tXW7KLuM
>>412
バリアント製作がんばってください。
完成を楽しみにしています。

416405:2020/08/12(水) 12:33:50 ID:5HJtK3xs
>>415さん
好好さんありがとうございます、頑張りますね!
まさかRanceKの作者さんから助言いただけるとは思わなかったのでちょっとテンパっていました、
私も続いて誰かの琴線に触れるコトができるバリアント目指して頑張ります!

417あなたの名前を入力してください:2020/10/10(土) 02:12:06 ID:ZXimRhK.
関数処理についてGETNUM(STR, "")を使えるようにする場合
ファイル名をSTR.CSVをSTRNAME.CSVに変えれば使えるようになったのですが
代わりにSTR:0などが使用できなくなりました

erbの全体的な変更したくないのですが、STR.CSVとSTRNAME.CSVのCSV2種を併用するか
erbに記述されたSTRをSTRNAMEに置換するだけなのでしょうか?

418あなたの名前を入力してください:2020/10/10(土) 03:55:32 ID:IKQEWvb2
>>417
多分根本の理解が間違ってる
STRはSTRに格納する値を書くファイルで、STRNAMEが各STRの要素名を書くもの
https://ja.osdn.net/projects/emuera/wiki/exvar
>「str.csvで指定するのはSTRの中身であって要素名ではない」

なので、STRに格納している値を検索するならFINDELEMENTなんかで検索する必要がある

419あなたの名前を入力してください:2020/10/10(土) 05:44:49 ID:ZXimRhK.
>>418
ありがとうございます
STRnAME新しく作らなくても実装できました

420あなたの名前を入力してください:2020/12/10(木) 12:00:27 ID:Ass1jS/E
はじめまして。バリアント作成で困っているので質問させてください
配列の一括初期化方法と、配列の0以外の要素が入っている数の取得方法が分からず困っております。

配列の一括初期化方法は毎度配列長分だけループを回して初期値を代入すれば実装できるのですが、もっといい方法があるなら知りたいです。

配列の0以外の要素が入っている数の取得方法に関しても、ループを回して0以外の数を数えれば実装できるのですが、こちらももっといい方法があるなら知りたいです。

というのも現在SLGを作っており、最大ユニット数1024に設定しているため、AIの各勢力が自勢力のユニットを取得したり更新したりする際に何度も1024回ループを回さないといけないため、処理が重くなってしまうからです。
何かいい案がありましたら、是非教えていただけると助かります。
よろしくお願いいたします。

421あなたの名前を入力してください:2020/12/10(木) 12:08:32 ID:A/X1UBxo
>>420
https://ja.osdn.net/projects/emuera/wiki/excom
初期化はVARSET
https://ja.osdn.net/projects/emuera/wiki/exmeth
数えるのはINRANGEARRAY

422あなたの名前を入力してください:2020/12/10(木) 12:27:10 ID:Ass1jS/E
>>421
ご回答ありがとうございます。助かりました!

423あなたの名前を入力してください:2020/12/11(金) 22:36:31 ID:4/eDdq4s
ERBファイルの名前って、アルファベットじゃないとダメだったりしますか?
既存のバリアントに新しいERBで関数作っていじったりしてる時、
日本語ならファイルの中身が一見してわかりやすそうだなと思うのですが

424あなたの名前を入力してください:2020/12/11(金) 22:48:58 ID:qsYqrXXA
日本語でも中国語でもロシア語でも大丈夫
ただし公開するとファイル名エンコーディングの違いでトラブりやすいので注意

425あなたの名前を入力してください:2020/12/12(土) 04:13:22 ID:049LW9dY
アップロードするとファイル名が文字化けする恐れがあるという事でしょうか
であれば念の為、ファイル名はアルファベットで統一しておこうと思います

426あなたの名前を入力してください:2020/12/12(土) 07:12:51 ID:tSN8K/S6
文字化けはアップロード時じゃなくてzip解凍時に起こりやすい
解凍するときの環境(解凍ソフトやOSなど)によってフォルダ名の文字コード判定が誤認識を起こすことがある

tohoKなんかはフォルダ名・ファイル名ともに日本語ファイル名多いゾ
一回やってみてだめだったら切り替えてもいいんじゃない

427あなたの名前を入力してください:2020/12/12(土) 08:06:36 ID:c.mOGqB6
https://jbbs.shitaraba.net/bbs/read.cgi/otaku/16783/1498745115/105

文字化けしたバリアントで起動した場合にエラーを出す汎用関数もあるのでこれを使ってもいいと思う

428あなたの名前を入力してください:2020/12/12(土) 18:50:30 ID:049LW9dY
情報ありがとうございます
日本語名での製作も前向きに考えてみようと思います

429あなたの名前を入力してください:2020/12/27(日) 15:05:33 ID:IUBZ9X6k
eratohoA系列で汎用口上を作りたいのですが、何を参考に作ればいいか分からず困っております。
どなたか参考になるバリアント、あるいは具体的な作り方を教えていただけたらありがたいです。

430あなたの名前を入力してください:2020/12/28(月) 03:15:30 ID:kT9X5rXA
今はどうか知らないけど昔のイメージだと
A系列口上ならMegaten、汎用口上ならtohoYMが化け物って印象

431あなたの名前を入力してください:2020/12/28(月) 03:34:45 ID:EAOEqaBk
文章と構文どっちの参考になるものが欲しいの?

432429:2020/12/28(月) 09:31:09 ID:7JNprlcQ
>>430
eraMegatenですね、ちょっと見てみます!ありがとうございます

>>431
技術的な、汎用口上という仕組みそのものの実装方法が知りたかったです。言葉が足りてませんでした。

433あなたの名前を入力してください:2020/12/28(月) 09:40:34 ID:2rt36uZ.
>>432
基本は個別口上の存在チェック→なかったら汎用口上呼び出すだけだよ
個別口上の存在チェックのやり方と汎用口上の持たせ方とで多少違いはあるけど

434429:2020/12/28(月) 09:48:07 ID:7JNprlcQ
>>433 なるほど。それを踏まえて調べてみます。ありがとうございます!

435あなたの名前を入力してください:2021/01/03(日) 20:32:56 ID:e5T/hH3s
EraGVTに「@PASTTIME_街に出る」などの日本語を含んだ関数名がありますが
もしかして関数の名前は@以降は何語でも問題なかったりしますか?

436あなたの名前を入力してください:2021/01/03(日) 20:47:42 ID:54JSXwyg
>>435
半角記号はアンダーバーしか使えませんが、それ以外は漢字でもキリル文字でも使えます
https://ja.osdn.net/projects/emuera/wiki/diff#h5-.E9.96.A2.E6.95.B0.E5.90.8D.E3.81.AB.E4.BD.BF.E7.94.A8.E5.8F.AF.E8.83.BD.E3.81.AA.E6.96.87.E5.AD.97

437あなたの名前を入力してください:2021/01/04(月) 17:40:40 ID:hQKEfZxM
>>436
ありがとうございます
見たことのある大体の関数がアルファベットだったので入力できるのはアルファベットのみかと思ってました

438あなたの名前を入力してください:2021/01/04(月) 22:23:01 ID:BQ/eIn0o
>>437
大抵の言語では半角アルファベットと記号少々以外の文字を許容しないので、同じノリがEmueraでも生きてるんだと思う
じゃあEmueraではどうかというと、全角文字はファイルのエンコードで化ける可能性があるので個人的には関数名なんかに使うのは推奨しない
ただ、TALENTの定義とかで全角文字使った方が分かりやすいのは事実なんで、好みの問題といえばそうではある

439あなたの名前を入力してください:2021/01/05(火) 00:35:51 ID:/zgt3huQ
???
ファイルエンコードに問題があればそもそも正常動作は期待できないんだから、関数名に使おうが使うまいが関係なくない?
なんなら関数呼べずにエラー落ちしてくれた方が、ミスにすぐ気付けて助かるまであるし

440あなたの名前を入力してください:2021/01/05(火) 00:49:18 ID:5xcuShZs
どっちかというと「どっちも化けた結果動いてしまう」可能性があることが問題かな

441あなたの名前を入力してください:2021/01/05(火) 09:02:06 ID:Uc16LBEg
関数名に日本語を使うのは問題ない
んだけどファイル名に日本語を使うと文字化け時に意図しない動作になることがまあまあある

ファイル名に日本語を入れて文字化けした場合に、警告を出すパッチを以前作ったのでよかったら使ってみてね
https://jbbs.shitaraba.net/bbs/read.cgi/otaku/16783/1498745115/105

442あなたの名前を入力してください:2021/03/18(木) 07:54:57 ID:O1RIOrmM
東方系列などで
既に口上のあるキャラに対して全く別の口上を作ってみたいなと思ったのですが
仮に作った場合、口上はどちらか一方だけをERBに入れるようにしないとダメでしょうか
システム側に何か追加するか書き換えるかして
キャラにどの口上を適用するか選べるようにできないでしょうか

443あなたの名前を入力してください:2021/03/18(木) 08:23:51 ID:9E0jwO6g
>>442
すでに存在するヴァリアントに口上追加するなら、住民の方で対応するだろうから口上に専念してもええで

自作ヴァリアントなら、megatenとかに口上選択システムあるから参考にしていいと思う

444あなたの名前を入力してください:2021/03/18(木) 19:38:38 ID:O1RIOrmM
>>443
了解です
まずは口上作ってから考えてみます
ありがとうございます

445あなたの名前を入力してください:2021/05/02(日) 21:52:21 ID:JqPqcGwM
Rename.csvは具体的にどのように活用するものなのでしょうか
少しググッて見ても、Rename.csv自体がどのような働きを担っているかの説明が見つかりません

また、Emuera.configのデフォルトで無効になっていますが、有効にする必要がないor推奨されないということでしょうか

446あなたの名前を入力してください:2021/05/03(月) 00:46:14 ID:KiqKwz6w
あれそもそもeramakerEx用の定義だもの
ERB内の単純置換をするだけで、要はLISPのマクロと同じ
可読性損なうから必要性がないなら使わない方がいい

詳細はEmueraのconfig設定の説明とeramakerExの記載を参照

447あなたの名前を入力してください:2021/05/03(月) 03:34:57 ID:6EBFkv4E
EramakerExのReadmeを読みました
ERBを記述する際に、素質「臆病」を操作する際などに
TALENT : xxではなく[[臆病]]で処理が通るようにするツールという事でしょうか

ひとまず現在の環境に適したもので無さそうなのは理解できました
ありがとうございます

448あなたの名前を入力してください:2021/05/07(金) 18:58:44 ID:T1NuZT36
昔、Wikiかどこかで「一文字変数は使わないほうが良い」といったような記述を見た気がするのですが
改めて探してみてもソースが見つかりません
実際に一文字変数は現在の環境で相性が悪かったりするのでしょうか
また、他にもデフォルトの変数の中で使用を控えた方が良いものはあるでしょうか

449あなたの名前を入力してください:2021/05/07(金) 19:48:12 ID:kTuIlDkY
1文字変数はとにかく視認性が悪くgrepもしづらい
他のもCFLAGだろうがEXPだろうが数字直打ちはおすすめしない
CSVで名前つけるかERHで変数定義するかした方がいい

450あなたの名前を入力してください:2021/05/07(金) 20:08:50 ID:lNc40D0g
>>448
https://seesaawiki.jp/eraseries/d/%a5%b7%a5%b9%a5%c6%a5%e0%b2%fe%c2%a4Q%26A#content_1_1
相性悪いとかいう次元でなく諸悪の根源レベルなので、一文字変数の使用は禁忌

他に使用すべきでないのは、下リンク先で「この変数はobsoleteです」と書かれている
LOCAL/LOCALSと組み込み多次元配列変数。理由は一文字変数とも共通するけど、変数名から内容を類推しづらいから
https://ja.osdn.net/projects/emuera/wiki/exvar

451あなたの名前を入力してください:2021/05/07(金) 20:12:55 ID:hSvtoCQA
(ループ変数は1文字で許してください)

452あなたの名前を入力してください:2021/05/07(金) 20:24:15 ID:lNc40D0g
(そうしたいのはやまやまだけど、ERBだと問答無用でグローバルになっちゃうのでダメー)

453あなたの名前を入力してください:2021/05/07(金) 21:05:51 ID:hSvtoCQA
(説明見てきました。おこりうる自体を想像したら、なんか背筋がゾッとしたんですが……orz)

454あなたの名前を入力してください:2021/05/07(金) 22:02:25 ID:i72ecdsc
一文字変数のスコープはマジでバグの原因だからな・・・・
今参加してるバリアント、いきなりあなたが㌧タヒする謎のバグが出てて、原因がCALL呼び先で一文字変数上書きしてることだったオチがある

455あなたの名前を入力してください:2021/05/07(金) 22:05:43 ID:RdHL1Q6M
いつでもどこでも使えるからこそ不用意に他で使ってる文字を使ってしまってバグるんよね

456あなたの名前を入力してください:2021/05/07(金) 22:52:44 ID:T1NuZT36
>>449
>>450
了解です
ソースもありがとうございました

新たに2点よろしいでしょうか

1
「CSVで名前をつける」というのはERBで見かける
 EXP:V経験
といった表示の事かと思われますが
これはどのように設定すれば良いでしょうか
CSVにはよく
 1,V経験
とカンマ区切りで名前が書かれていますが
これで名前が付いてERBでも反映されるという事でしょうか

2
ユーザー定義変数(関数内DIMでもERHでも)を定義する際
変数の名前を日本語で定義する事は出来るでしょうか
 #DIM 総数
みたいな形で

457あなたの名前を入力してください:2021/05/07(金) 23:00:29 ID:yqvKmO0Q
1も2もそれで正しい

458あなたの名前を入力してください:2021/05/07(金) 23:57:04 ID:T1NuZT36
了解です
ありがとうございます

459あなたの名前を入力してください:2021/05/08(土) 00:31:25 ID:jBdpv9Z.
>>456,458
補足
名前で要素指定できる変数は、以下リンクの「文字列による配列変数の要素の指定」に一覧がある
https://ja.osdn.net/projects/emuera/wiki/exetc

460あなたの名前を入力してください:2021/05/11(火) 21:53:36 ID:3gUQUBoY
csvいじったりMOB増やしたりしかしたことがない初心者です

【質問】
・環境
 新バリアント

・質問内容
 一般的な調教系eraの中で、ベースとして適しているバリアントを教えてほしい、
 構造がシンプルで理解しやすいものであればありがたいです
 ※一応現時点ではwikiの「eracustom ver0.03」か「eraMeiQ外伝」を使わせていただく想定

・目的
 一般的な調教系バリアントをベースに、
 調教フェイズの前に調教対象を追い詰める調査フェイズと戦闘フェイズを追加したバリアントを作成する

ざっくりした質問で申し訳ないですがよろしくおねがいします。

461あなたの名前を入力してください:2021/05/12(水) 22:26:42 ID:P793RW1E
その想定ならcustomになると思う。eraMeiQ外伝はreadmeの「ほか」項を読もう
おすすめを教えるのが難しい理由は
おすすめバリアントを否定的に言う人が出ると迷惑をかけてしまうからってのもあるが
種類が多くてパッチもあるから、ライセンスまで把握してる人がいないってもある
バックアップreadmeライセンス確認他ツール、このあたりばっかりは自己責任で

462あなたの名前を入力してください:2021/05/13(木) 18:25:15 ID:Z5OdK/AQ
EratohoKシリーズでセーブやロードのショップ項目を左側に寄せて
更に残ったスペースにキャラ一覧を表示させていますが
一見して同じ行に別々の関数の結果を表示しているように見えるあのUIはどのように作られているのでしょうか
まだまだ理解が浅く、ERBを呼んでみてもどうにも要領を得られません

463あなたの名前を入力してください:2021/05/13(木) 19:35:44 ID:boVxsCgA
>>461
回答感謝、readme読めてなかったあぶない
指摘助かります
とりあえず自分の知ってるバリアントの範囲で検討します

464あなたの名前を入力してください:2021/05/15(土) 01:55:39 ID:JCqeJKHI
>>462
おおざっぱなイメージを知りたいなら
右のコンテンツで改行するとき、専用の改行関数をつかってる
その改行関数は、PRINTL の次行で行頭にボタンを表示するよう指定してる
どのボタンを表示するかは、表示開始時の行番号を保存、現在行番号から引くと
開始から今何行表示したかがわかるから、それで分岐させている

465あなたの名前を入力してください:2021/05/15(土) 10:43:46 ID:xUJNwc2Y
>>464
ありがとうございます
イメージが掴めたお陰でどのERBのどの部分が該当するのか把握できてきました
もう一度読み直してみようと思います

466あなたの名前を入力してください:2021/05/18(火) 17:41:38 ID:pwMy8RW.
デフォルトではゲーム開始時に、0番のキャラCSVがMASTERのデータとして適用され
作成されたMASTERを操作するていでゲームが進行するという理解で間違いないでしょうか

ADDCHARA 0を処理に含むバリアントが多く、Era悪魔でメイドではあなたをもう1人作っていたりする所をみると
あるいはMASTERに0番のキャラが反映された上で
0番のキャラを加入させないと調教時の主人等として動かせないという事でしょうか

467あなたの名前を入力してください:2021/05/19(水) 18:06:27 ID:wzzZp3S.
>>466
MASTERという変数は登録されたキャラのうち、マスターは誰なのか指定する変数です。なのでMASTERにはキャラ登録番号が1つ入ります。
多くバリアントでMASTERはあなたで、あなたのキャラ番号はCHARA.CSVで大抵0に指定されているので真っ先にADDCHARA 0され、真っ先に登録されたので登録番号が0になります。したがって、MASTERには0が入ります。
仮にキャラ番号2をMASTERにし、あなたを調教対象にしたいならADDCHARA 0とADDCHARA 2したうえでMASTERに1を入れます。MASTERに入るのはキャラ番号ではなく登録番号なので間違えないで下さい。

MASTERに数値を入れたからといってMASTERキャラが生成されるという訳ではありません。
あくまでADDCHARAされたキャラの内、誰がマスターなのかを指定するだけです。

あなたをキャラクターとして扱わない(主人公が存在しない)のであれば、あなたにABLやBASEなどのキャラ変数は必要無いのであなたをADDCHARAする必要は無いですし、MASTERを使う必要もありません。ぜんぶFLAGやTFLAGなどで賄えます。

era悪魔でメイドを見たことが無いのですがよく分からないのですが2度ADDCHARA 0されているという事でしょうか?
基本的にあなたのCSVを使うのは主人が入れ替わったりあなたを調教対象としたり、あなた以外のキャラ同士でうふふしたりするのを想定しているからです。不要であれば前述の通りあなたをADDCHARAしないバリアントを作ることは可能です。


何が疑問なのかいまいち判然としないのですが、質問の回答はこれでよろしいでしょうか?

468あなたの名前を入力してください:2021/05/20(木) 01:29:08 ID:7By6ades
>>466
たしかに「0番のキャラCSVがMASTERのデータとして適用され」ている
バリアントは多いが、自動的にそうなる処理か問われたら違う
MASTERに0番キャラが反映されているなら既にADDCHARA 0登録はされてるから
そこから更になんらかの加入処理をする必要もない(特殊な処理でない限り)

charaX.csvはADDCHARAなどでゲームに登録されないと読み込まれない
それは0番でも調教者でも他キャラでも同じ
eratohoまとめV3 Q:キャラ番号と登録キャラ番号とはなんですか?
ttps://seesaawiki.jp/eratoho/d/ERB%b3%ab%C8%AFQ%26A#content_1_9
キャラ番号(CSV番号)と登録番号の違い、ADDCHARAのやってることが曖昧そうだから
ここに書いてくれてることを読んでみるといいかも

※最近の話補足
「登録キャラ番号」のほうがよく使うから「登録キャラ番号」を
「キャラの番号」という広義の意味で「キャラ番号」ってつい表現してしまいがち
そのせいか最近は「キャラ番号」を「NO」とか「CSV番号」って
区別して呼ぶ人が多い気がする

「登録キャラ番号」を「キャラ配列番号」って呼ぶ人もいる
「登録キャラ番号」がBASEやCFLAGの配列番号だからだと思う

469466:2021/05/20(木) 02:14:19 ID:zSRQOJvA
>>467
MASTER関連の挙動や役割をよく分かっていませんでした
初回起動時にMASTERに0が代入されて自動的に番号0番のキャラが主人公になるのでなく

・ADDCHARAで番号に対応したキャラデータが読み込まれゲーム内に作成される
・ADDCHARAされたキャラは作成された順に別途、登録番号を持つ
・作成されたキャラの内、MASTERと同じ登録番号のキャラがどこかのタイミングで主人公に指定される
・MASTERへの能力変化等の干渉は、主人公に指定されたキャラに対して処理される

こういう事でしょうか
問題なければおおよその疑問が解けたかもしれません
ありがとうございます


Era悪魔でメイドでは0番のあなたと99番のドッペルあなたを用意して
変数の一時保存等に使うとERBに記述されていました
私の今の理解度よりももっと複雑な処理なのかもしれませんので、ひとまず取り下げます


加えて以下について質問してもよろしいでしょうか

・調教対象リストなどを新たに作る場合、
 MASTERであるキャラを除外して表示させないと調教対象に主人公が含まれる状況になるか

・MASTERに対応する番号のキャラが居ない状態で
 「EXP:MASTER:1 ++」のようにステータスを操作した場合はエラーになるか

470あなたの名前を入力してください:2021/05/20(木) 02:24:19 ID:zSRQOJvA
>>468
ADDCHARAでキャラを読み込んだ上で
MASTER等の役割をあてていく形で間違いないでしょうか
情報ありがとうございます


Emueraの勉強がてら1から基本的な部分を記述していってみてるのですが
いざやってみると分からない事だらけで…
現行のバリアントでもERBのどこかに
MASTER = 0(あるいは対応する変数)とか
TARGET = *
のような記述があったりするのでしょうか
ttps://ja.osdn.net/projects/emuera/wiki/flow
ではMASTERやTARGETの指定に言及が無いので、ERB側で指定するのではと考えているのですが

471あなたの名前を入力してください:2021/05/21(金) 00:08:44 ID:FY47N0sQ
概ねその理解でいいと思います。MASTERの初期値は0なので書き換えしない限り一番最初にADDCHARAされたキャラが主人になると言うことです。

キャラを全員表示した場合、除外しない限り当然MASTERも表示されます。それが調教対象選択の場面であればMASTERがMASTERを調教するということも起こりえます。

キャラクター変数で0〜CHARANUM-1以外のキャラ登録番号を参照しようとすると必ずエラーが発生します
MASTERだけでなくTARGETやASSIでも同様です。
DELCHARAなどでキャタクターを消した場合でも、登録番号は前に詰められるので負の値やCHARANUM以上の値を与えない限りエラーになることはありません。ただ、TARGETやASSIは初期値(誰も選ばれてないとき)は-1なので代入せずに使うとエラーになります。

また、キャラ操作系命令でキャラの登録番号が入れ替わってもMASTER,TARGET,ASSIなどは自動で追従するので殆どの場合手動で操作する必要はありません。

基本的にゲーム中に主人が変わることは余り無いのでMASTERを書き換える事はありません。だから主人になるキャラを最初に生成してMASTERは初期値のままのバリアントが多いです。

TARGETやASSIなどは頻繁に書き換わります。
と言うかキャラクター変数の第一引数は省略されていることが多いので、TARGETを書き換えないことにはキャラを選択出来ないです。

472466:2021/05/21(金) 14:36:06 ID:W00rNSUo

詳細な説明まことにありがとうございます
当初気になっていた部分は全て理解できたと思われます

MASTER代入の前例が余り無いながらも
仮に主人として操作するキャラを変更する場合は専用の関数等を作って
TARGETやASSI同様にMASTER == *で
その後のMASTERを対象にした処理では、代入した登録番号のキャラが参照されるという事で間違いないでしょうか

ご説明を拝読して思い出し、触手宮やSQNの入れ替わり処理やTWやKのなりきりニューゲームを見た所
MASTERはそのままに
ステータスを置き換える処理や
SWAP CHARAで登録番号だけ置き換える処理だったので
余り適切な処理では無いのかも知れませんが

473あなたの名前を入力してください:2021/05/21(金) 18:24:22 ID:MTWFqUYs
eramakerの仕様で言えばMASTERに任意のキャラ番号を代入するだけでいいはずなんだけど、
調教対象キャラを列挙するときに(MASTER==0を前提に)1〜CHARANUMで
ループしちゃってたりするので、SWAPCHARAで0番に入れ替えるとかじゃないかなぁ
この場合は SIF (COUNT == MASTER) ⇒ CONTINUE なんかで除外するようにすれば問題ない

後は単に調教対象キャラリストの番号が飛ぶのが嫌という神経質な人も居るかも(わたしです)
リスト選択肢番号とキャラ番号を分けて対応するのも面倒だし……

474あなたの名前を入力してください:2021/05/21(金) 23:08:47 ID:W00rNSUo
>>473
ループ処理との兼ね合いはとてもストンと納得できました
情報ありがとうございます

475あなたの名前を入力してください:2021/06/05(土) 23:45:39 ID:1hMPOvBs
興味もってwikiやらざっと目を通してみたんだけどほぼ内容理解できなかった…
プログラミングの知識から身に付けるべきなんでしょうか?

476あなたの名前を入力してください:2021/06/05(土) 23:50:51 ID:qxvsaLd.
実践しないと身につかない
恋慕に必要な好感度が記載されてるファイルを特定して数値をちょっと変えてみるとか簡単な改造から始めよう
数値弄るだけでエラー吐くことは少ない

477あなたの名前を入力してください:2021/06/06(日) 00:59:55 ID:Kru5v1LM
つまり前提知識は必要ではないのですね。返答ありがとうございました。善処します

478あなたの名前を入力してください:2021/06/06(日) 01:27:41 ID:HsZmTquE
トライアンドエラーでガチャガチャやってるうちに分かってくるレベルではあるけど、
変数とかIF分岐とか程度の初歩知識はあった方がスムーズに理解が進むかも

479あなたの名前を入力してください:2021/06/06(日) 01:55:52 ID:HOy/u1bw
wikiは行き詰まったら見返すぐらいがいいと思う

480あなたの名前を入力してください:2021/06/06(日) 09:30:13 ID:JBMyT9DI
IFとかも基本的な英語だから触ってればそのうち何となく分かるよね

481あなたの名前を入力してください:2021/06/07(月) 21:59:03 ID:dTIgsFhU
すいません、K系列でコマンドを自作する際はどのようにすればいいでしょうか

482あなたの名前を入力してください:2021/06/10(木) 00:06:01 ID:e2NKxmO.
>>481
tohoKの変更ログを見たらわかるかもしれんね
https://jbbs.shitaraba.net/bbs/read.cgi/otaku/16783/1593673769/83-84n

483あなたの名前を入力してください:2021/06/10(木) 19:32:07 ID:WzkQvzlw
似たコマンドのCOMFをコピペして条件設定、train.csvに追加するまでは他と同じ
日常系は300番からで、持続行動が多いから他コマンドを網羅的にイメージして
重複できない体位や行動を実行中は不可に条件設定する必要がある
カテゴリ(愛撫とかSMとかのタブ)の設定と性知識条件が別ファイルにある
(_COM_CATEGORY.ERB/_COM_KNOWLEDGE_LEVEL.ERB)
できたらAI側にも追加(COM_AUTOSELECTフォルダ内)でよかった気がする

484あなたの名前を入力してください:2021/06/11(金) 19:54:00 ID:DdJGcgto
>>482、483
ありがとうございました。無事できました

485あなたの名前を入力してください:2021/06/16(水) 21:35:34 ID:pI78OSNY
【質問】SORTCHARAのキーワード(FORWARD or BACK)は、必ずベタ打ちしなければならないのでしょうか?
キャラクタをソートするボタンを作っているのですが、分岐処理がスマートに書けなくて泣いています

以下の例はシンプルですが、ABL、BASE、CFLAGなどのパターンと合わせると手間が結構変わるのでどうにかならないかな、と。
tohoKは自作のソーターを用意しているようでこの問題とは無縁でした。簡単に借りられるようなスケールでもなかったので以下で検討しています

・入力例
 RESULTS '= "FORWARD"
 RESULT = 1

・期待するコード (不正なキーワード扱いでエラー落ちする)
 SORTCHARA ABL:TARGET:RESULT, RESULTS

・妥協したコード
 IF RESULTS == "FORWARD"
  SORTCHARA ABL:TARGET:RESULT, FORWARD
 ELSE
  SORTCHARA ABL:TARGET:RESULT, BACK
 ENDIF

486あなたの名前を入力してください:2021/06/17(木) 21:19:18 ID:zlk8271g
>>485
tohoKは表示順を並べ替えているだけであって、実際のキャラ登録番号をソートで変更しているわけではありませんよね、確か。
それはともかく、FORWARDだけなら省略可能ですがBACKのベタ打ちは避けられないと思います。+ではないera板のEmueraスレで軽く要望が出されてたみたいだけど取り入れようという動きは無いと思います。
FORWARDとBACKでSORTCHARAの記述回数が2倍になるのを避けたいならば対処は2パターン思い付くけどスマートとは言い難いな……

パターン1. まずはFORWARDもBACKも指定無しでSORTCHARAしてから、必要に応じてキャラ順をループで前後入れ替える

パターン2. ソート基準になるパラメータを別に用意してからSORTCHARAする
; こんな感じで。文字列のソートには使えないけどね。逆順でパラメータに__INT__MIN__が含まれている場合も多分このままではダメ。
;
; ここからさらにSTRFORM()をうまく使って一旦文字列に変換してから数値に戻せばFORループ中のIFも減らせるかもしれないけど回りくどいし、静的な解析で検出できないエラーが出る可能性もあるからオススメとは言えないかもね……
IF ソート条件2 == "逆順"
 係数 = -1
ELSE
 係数 = 1
ENDIF
FOR LCOUNT, 0, CHARANUM
 IF ソート条件1 == "体力"
  CFLAG:LCOUNT:ソート基準 = 係数 * BASE:LCOUNT:体力
 ELSE ; ソート条件1 == "好感度"
  CFLAG:LCOUNT:ソート基準 = 係数 * CFLAG:LCOUNT:好感度
 ENDIF
NEXT
SORTCHARA CFLAG:ソート基準

487あなたの名前を入力してください:2021/06/17(木) 22:11:30 ID:8A6OzL0A
>>486
回答ありがとうございます! パターン2がステキだと思います
負数を掛ければFORWARD一発でいけるという発想が出てこなかったので助かりました

文字列ソートについても
OSDNのexcomにSTRFORM()が引っかからなかったのですが、
頭3文字くらいかじってENCODETOUNI()でもいけそうですね

過去の経緯も聞けて嬉しかったです。ありがとうございました!

488あなたの名前を入力してください:2021/06/17(木) 22:30:27 ID:L9Mg5SwU
自前でソーティングアルゴリズム書くんやで・・・・(邪笑)

489あなたの名前を入力してください:2021/06/17(木) 23:28:08 ID:zlk8271g
文字列のキャラクタ変数でソートする話とSTRFORMを使う話は別なのよー
STRFORMはexcomじゃなくてexmethなのよー

ところで、文字列のデータをあえてENCODETOUNIを使って数値に変換してソートするという手法は面白いかもしれませんね
逆に、「マイナスの数値が出ないように適当な値を加算してから桁数を揃えた文字列にする」で、さらに複数の数値をそれぞれ文字列にして連結してからソートすれば「体力が小さいキャラから順に並びつつ、体力が同じキャラ同士の中では好感度が小さいキャラから順に並ぶ」もSORTCHARAで実現可能かもしれませんね 自前でソート処理を書いたほうが早い(速くはないかもしれない)気もするけど

490あなたの名前を入力してください:2021/08/30(月) 10:54:44 ID:ofQA/SUQ
ちょっと質問
以下みたいにローカルで定数きった場合、続く配列宣言でその定数を認識してくれないんだが、これは仕様だろうか
UserVars見る限りではいけそうな気がするんだが

@HOGE(fuga:0 = "",fuga:1 = "")
#DIM CONST VALUE_COUNT = 2
#DIMS fuga,VALUE_COUNT ;<-コイツがエラー吐く
FOR index,0,VALUE_COUNT
PRINTFORML fuga:index
NEXT

491あなたの名前を入力してください:2021/08/31(火) 00:10:46 ID:YFTFos2s
>2018/07/16 ver 1.822
>対象の.NetFrameworkのバージョンを2.0から4.5に更新
>ERH内で宣言した定数をERH内で他の変数の宣言に利用できるように修正

ERB内では宣言できないと思う

492あなたの名前を入力してください:2021/08/31(火) 01:37:51 ID:g1YHBm/2
ドキュメントで言う「定数式」は式であって(プライベートの)CONST変数じゃダメってことかね
ERHの方でVALUE_COUNTを定義すれば通るけど、「この関数中では定義されていません」って
エラーメッセージが不自然だし、バグなんじゃないかなぁとも思うが、C#よくわからないんだよなぁ

493あなたの名前を入力してください:2021/09/04(土) 13:49:17 ID:HdZgv6Mg
>>491-492
んー、やっぱりバグっぽいのかな
一応確認してみるか

494あなたの名前を入力してください:2021/09/11(土) 18:16:34 ID:989l8OXo
幾つかのバリアントを参考に基礎的な部分を勉強しているのですが
最近まで更新されてるバリアントの多くが
関数@EVENTBUYを形だけ宣言して中身がほぼ無かったり別の関数に飛ばしたりしている印象を受けました

このEVENTBUYの扱われ方について独学ではいまひとつ要領を得られずこちらに書き込みました
自分で調べた限りでは
ショップ画面等でアイテムとして定義されてる番号を手打ちすると@EVENTBUYが実行される仕様があるという記述を見かけ
独自の購入処理関数を作ってEVENTBUYをそこへ飛ばす処理とする等で無効化しているのかなと考えています

また一部のバリアントではゲーム中でアイテムの売買が行われていながら
_replace.csvでは販売アイテム数が0に設定されている例もありこれもEVENTBUYに関連する事なのでしょうか

495あなたの名前を入力してください:2021/09/12(日) 01:02:30 ID:2/vKB4fY
>>494
@EVENTBUY はeramaker標準のアイテム購入処理時に呼び出されるイベント関数です。

ITEM の値を増やしたり、MONEY を減らしたりする処理はeramaker本体が行うので、
実は @EVENTBUY の宣言は必須ではなかったりします。
(EVENTBUYの主な用途は、購入メッセージの表示や個数限定アイテムの制御など)

詳しい処理内容については、以下の「SHOP」の項を参照してください。
https://ja.osdn.net/projects/emuera/wiki/flow

496あなたの名前を入力してください:2021/09/12(日) 01:05:36 ID:2/vKB4fY
>>494
で、多くのバリアントで @EVENTBUY が使われていない理由ですが、恐らく
eramaker標準のアイテム購入処理だといろいろ融通が利かない部分があるため、
標準処理を使わずに @USERSHOP 内で自前の購入処理を使う事が多いからでしょう。

_replace.csvでの 販売アイテム数,0 指定もこれに関連するもので、
ここでゼロを指定すると @SHOW_SHOP 後の入力で標準購入処理が呼ばれなくなります。
詳しくは下記の「販売アイテム数」の項を参照してください
https://ja.osdn.net/projects/emuera/wiki/replace

497あなたの名前を入力してください:2021/09/12(日) 18:55:20 ID:Y.AvNE3A
>>495
>>496
本当にありがとうございます
疑問が一気に解消されました

498あなたの名前を入力してください:2021/09/13(月) 07:40:27 ID:NGLbFyUY
Eramegatenでは同じキャラを複数加入させることが可能ですが
単純に同じキャラをADDCHARAさせれば番号以外の情報が同じキャラが追加されるという事でしょうか

499あなたの名前を入力してください:2021/09/13(月) 13:15:42 ID:J/RFbQiQ
>>498
可能だよ

500あなたの名前を入力してください:2021/09/13(月) 14:56:41 ID:NGLbFyUY
>>499
了解です。ありがとうございます

501あなたの名前を入力してください:2021/09/20(月) 17:36:49 ID:oTmt4s5.
CSTRの中身によってフラグを立てたいとき、現在見様見真似で作った例として
SELECTCASE CSTR:性格
CASE "強気", "生意気"
 SIF TALENT:処女
  CFLAG:1 = 1
ENDSELECT
という書き方でやっているのですが、処理したいものが1つなので2行で済むように書くと
SIF TALENT:処女 && (CSTR:性格 == "強気" || CSTR:性格 == "生意気")
 CFLAG:1 = 1
ここまではわかりまして(合ってるはず)、
これを条件が増えても書けるようにもっと縮めるにはどのように記述すればいいのでしょうか?
SIF TALENT:処女 && (CSTR:性格 == "強気" || "生意気")
 CFLAG:1 = 1
などは試してもエラーが出てしまいます

502あなたの名前を入力してください:2021/09/20(月) 18:18:40 ID:kWAu3Qmo
SIF TALENT:処女 && GROUPMATCH(CSTR:性格, "強気", "生意気")
条件式をこう書けばいけるかな

503あなたの名前を入力してください:2021/09/20(月) 18:27:12 ID:oTmt4s5.
>>502
求めてたものバッチリそのものでした!ありがとうございます!

504あなたの名前を入力してください:2021/09/23(木) 17:33:17 ID:4emUQ6RQ
4XのCSTRを編集したいのですが、方法がわかりません。
今までは主に触っていたeramegatenにはCSTRのファイルがCSVにあったのですが、
4Xにはないようで、GREPをかけてもそれらしい一覧を見つけることができませんでした。
どなたか教えていただけませんでしょうか。

505あなたの名前を入力してください:2021/09/23(木) 17:49:42 ID:PFhZsw/.
>>504
cstr.csvはあくまでラベリングのためのファイルだからなくてもいい
存在しないなら、当該バリアントで使用してないだけのことなので、追加してやれば動くには動く
ただ、バリアント主に一言言っておいた方がいいかもしれんが

506あなたの名前を入力してください:2021/09/24(金) 03:59:10 ID:SpEaUWfo
>>504
str.csvは箱の中身を決定するファイルだけど、cstr.csvは箱自体の名前を決定するファイルだからcstr.csvをいじってもcstrの中身は書き換えられない。cstrの中身をいじりたいならchara.csvに書き込むかerbに代入する命令を書くしかない。

507あなたの名前を入力してください:2021/09/24(金) 14:55:43 ID:szle9/8A
>>505
>>506

なるほど、必ずしも必要なファイルではないんですね。
ありがとうございました。

508あなたの名前を入力してください:2021/10/10(日) 21:04:29 ID:UQis4QAE
以前質問させていただいた>>504です。
カスタムキャラの種族(エルフ、ドワーフ等)を管理するにあたって素質(Talent)か基礎(Base)のどちらを使うか迷っています。
形としては代入する数字で種族を決定する(1=エルフ、2=ドワーフ)といった感じにするつもりです。
最初は素質で管理しようと思っていましたが、遺伝処理を考えると基礎で管理したほうがいいのではないかと思い立ちました。
素質と基礎で違いはあるのでしょうか?
教えていただけると幸いです。

509あなたの名前を入力してください:2021/10/10(日) 21:17:54 ID:.pgKi8QM
基礎はDOWNBASEとかMAXBASEとかが使えるから増減する数値向け、種族には向いてないと思う
素質でいいとも思うけど、各種族がどの数値に対応するか覚えるの面倒だし可読性悪いから
CSTRかERHで文字列変数定義して種族名をそのまま書き込めばいいんじゃない?

510あなたの名前を入力してください:2021/10/10(日) 21:55:59 ID:UQis4QAE
>>509
なるほど、ありがとうございます。
ご指摘の点は既にCSTRで打ち込めるようにしてあるんですが、将来的にRPG要素を入れたいと思っているので
そこに絡められるように大雑把に分類できるようにしたかったんです。
種族名 :ダークエルフ(CSTRで打ち込み)
種族分類:エルフ(選択肢から選んで定義)
みたいなのが理想です。
K系列のバリアントをもとにいじっているのでタグ(フェアリーや蓬莱人など)を一つしか選べないようにする方法があれば一番なのですが、
どう書けばいいかわからなかったのでいっそ素質に…、と思い立った次第です。

511あなたの名前を入力してください:2021/10/11(月) 00:16:08 ID:HfDkxoWA
#DIM SAVEDATA CHARADATA TAG, MAX_TAG
Kはタグ用の変数群をERHで以上のように定義して、各キャラがMAX_TAG個のタグを設定できるようになってる
この設定枠を一個にすればいいだけ
というか(CSTRで打ち込み)と(選択肢から選んで定義)は排他にならないと思うけどなんか勘違いしてない?
普通に「選択肢の結果に応じて文字列変数に保存」とかできるよ?

512あなたの名前を入力してください:2021/10/11(月) 08:43:52 ID:BXgJt.HQ
>>511
教えていただきありがとうございます。この方法でやってみます。

>>普通に「選択肢の結果に応じて文字列変数に保存」とかできるよ?
不勉強でよくわかってないんですが、
「『エルフ』のボタンを押せばCSTRの文字列として『エルフ』と保存できる」という解釈でいいんでしょうか?
この辺の予定としては、CSTRに打ち込む種族名はあくまでフレーバーで、>>510の「種族分類」で、HPが低い代わりにMPが高めとか実際にRPG要素に影響する部分に絡めていくつもりです。
例えば「獣人」と一口に言っても、狼人間なのか猫人間なのか、同じ狼人間でもフレンズなのか某あつもりの住人なのか、までINFOに載せたいのですが、
そこまでするとタグの量とそれに紐づける処理の量が莫大になると思ったんです。
かといって文字列入力だけにすると、半角全角の違いや微妙な違いに対応しきれなくなるとも思いまして、
実際の処理としては「種族分類」と、フレーバーとして好きな種族名を入れる「種族名」で分けたんですが、もしかしてバグとかエラーになりやすかったりするんですかね?

513あなたの名前を入力してください:2021/10/11(月) 23:14:04 ID:LDEPjcYU
「データ上の種族」と「表記上の種族」をそれぞれ別の変数に持っておくだけなら問題ないんじゃない?
eramegatenはそういう処置が使われてるキャラがいる(全員ではない)
強いて言うならソースを書くときに混同したりしないよう気をつけるぐらいで

514あなたの名前を入力してください:2021/10/12(火) 00:02:56 ID:KQWhzr2I
こんな感じでよくない?

#DIMS CONST RACENAME = "人間","エルフ","ドワーフ"
#DIM MAXRACE = 3

$LOOP
PRINTFORML 種族を決めてください
FOR LOCAL,0, MAXRACE
PRINTBUTTON @"[%RACENAME:LOCAL%]", LOCAL
PRINTL
NEXT
INPUT

515あなたの名前を入力してください:2021/10/13(水) 22:55:38 ID:YyeT.qOU
>>513
ありがとうございます。混同しないように気を付けます

>>514
わざわざコードまで書いてもらってありがとうございます。
一部を参考させていただき、結局下のように落ち着きました。
#DIM 対象
FOR LOCAL, 0, VARSIZE("TAG_NAME")
PRINTBUTTON @"[%TAG_NAME:LOCAL%]", 4000 + LOCAL, HAS_TAG(対象, LOCAL)
NEXT
PRINTL

ひとまず形にすることを優先し、TAG_NAMEのまま流用しています。
ご教授いただきありがとうございました。

516あなたの名前を入力してください:2021/10/17(日) 20:21:20 ID:ogY7GP8E
多次元配列の特定の行だけVARSETすることってできますか?

517516:2021/10/18(月) 02:44:03 ID:Wzhvrin6
できるかはともかくやらなくていいことに気づいたので自己解決しました

518あなたの名前を入力してください:2021/10/19(火) 22:58:13 ID:gGme.ixk
度々質問させていただいてる者です。

ゲーム内でオリジナルスキルを複数作成し、ランダムキャラが使えるようにしたいのですが、良い方法ありませんでしょうか?
eratenのオリジナルスキルの要領で作ったスキルを複数保存し、キャラメイクの時に選択できるのが理想です。
K系列のカスタムキャラの保存機能を流用しようと一応考えてはいるのですが、もっと簡単な方法がもしあれば、と思い質問させていただきました。
皆さんでしたらどのようにされますでしょうか?

519あなたの名前を入力してください:2021/10/19(火) 23:52:03 ID:uWEQ90Wc
ゲーム内で作成したデータをセーブデータ間を超えて共有したいという意味なら、
GLOBALセーブに保存するほうが手っ取り早いと思います
https://ja.osdn.net/projects/emuera/wiki/exvar

ちょっと雑ですが以下例
・ERH
#DIMS SAVEDATA GLOBAL SKILL_NAME, 100
・スキル作成.ERB
LOADGLOBAL
SKILL_NAME:1 '= "スキルの名前"
SAVEGLOBAL
・スキル読み出し.ERB
LOADGLOBAL
printformL %SKILL_NAME:1% = スキルの名前

520あなたの名前を入力してください:2021/10/21(木) 21:22:29 ID:MQOaPfk6
乱文・連投失礼します
作りたいバリアントがあるのですが、どうも制作に手をつけたことがないので分かりません……
あるソシャゲが原作のバリアントです

521あなたの名前を入力してください:2021/10/21(木) 21:25:21 ID:MQOaPfk6
やりたいことの例えとしては「この子のガワを使って悪い事をするぞ、ヘッヘッヘ……」という感じです
原作の舞台が仮想世界なので、最初に選んだキャラクターを少しずつ調教し、駒として利用することを軸に考えたいです
また、主に洗脳や常識改変系を軸とした調教を行い
ハードコアプレイや人体改造要素を充実させたいです

長文失礼しました。

522あなたの名前を入力してください:2021/10/21(木) 22:04:49 ID:npAU4GvE
どっちかというと新バリアント作成スレ向きの話題かな
既存ので理想に近いのはあるの?
フルスクラッチはハードル高いから改変を勧める

523あなたの名前を入力してください:2021/10/21(木) 22:09:02 ID:MQOaPfk6
>>522 返信ありがとうございます。
新バリスレ向きの話題でしたか、申し訳ありません
恥ずかしながら、era系統については初心者なので
既存バリアントの把握は進んでいません……

524あなたの名前を入力してください:2021/10/21(木) 22:25:30 ID:npAU4GvE
いくつか遊んでみて、どういう事ができるのか把握してみるといいよ
誰もやってないことをゼロから作るのは大変だけど既存のものを自分好みに変奏するのはそこまでじゃないから(簡単だとは言ってない)

525あなたの名前を入力してください:2021/10/21(木) 22:37:08 ID:MQOaPfk6
まずは助言通り色々なバリアントを遊ばせていただきますね
近々新バリスレの方にも書き込ませていただきます。
ありがとうございました、失礼しました

526あなたの名前を入力してください:2021/10/24(日) 20:06:31 ID:AJloqceM
標準で読み込まれるcsvファイルの一覧を知りたいのですが、どこかに資料はありませんか?
また、キャラデータCSV(Chara数字.csv)の命名法則はChara数字のみでしょうか?

527あなたの名前を入力してください:2021/10/24(日) 20:29:01 ID:S6qVg7b.
>>519
解説ありがとうございます。
global変数はあまりなじみがなかったですが、スキル作成ERBができたら、チャレンジしてみます。

528あなたの名前を入力してください:2021/10/24(日) 22:31:31 ID:nycG8/Qk
>>526
Emueraならここ
https://ja.osdn.net/projects/emuera/wiki/exvar
eramakerなら仕様の中にあったはず
キャラデータCSVの定義はchara*.csvだから数字いらない

529あなたの名前を入力してください:2021/10/25(月) 20:54:57 ID:AcX3c9So
質問なのですが、
組み込み命令の「TIMES HOGE:1, 1.20」「SETBIT FUGA:2, 1」のように、
配列の途中から渡せる参照渡しの関数って定義できるんでしょうか?
REFを使ってHOGE:1を渡してもHOGE:0指定と同じになってしまうので上手くいきません

@FUNC(_A, _B)
#DIM REF _A
#DIM _B, 1
_A = _B

@FUNC_2
CALL FUNC, HOGE:1, 99
;=> HOGE:0 = 99 になっている

530あなたの名前を入力してください:2021/10/25(月) 23:49:17 ID:DB6djxtI
>配列の途中から渡せる参照渡しの関数って定義できるんでしょうか?
定義できないと聞いた覚えがあります
どのスレかは忘れましたが議論済みの仕様みたいです

531あなたの名前を入力してください:2021/10/26(火) 00:22:47 ID:7gO3NnQg
>>530
Emueraスレまで読んでいなかったので見落としてました
返信ありがとうございました

532あなたの名前を入力してください:2021/11/05(金) 02:09:09 ID:xHsrce8M
質問です
ERHファイルは複数作成しても正常に読み込まれるでしょうか

大量の変数の役割を予め頭に叩き込もうとするとこんがらがってくるので
いっそ使いたい変数を都度宣言して目的ごとにERHファイルを分けて整頓してしまった方が
少なくとも練習として何かしら作る分には気楽かなと思いまして

533あなたの名前を入力してください:2021/11/05(金) 03:09:08 ID:t4DdMN/c
正常に読み込まれるし、そうした方が良いと思う

534あなたの名前を入力してください:2021/11/05(金) 06:54:40 ID:F8EFd9Oo
TWのような箱庭系のバリアントを作る場合に土台にしやすいバリアントはあるのでしょうか?
今はTWのソースコードを追っているのですが、動作フローを追いかけるだけでも一苦労です…

535あなたの名前を入力してください:2021/11/05(金) 15:09:36 ID:xHsrce8M
>>533
了解です
ありがとうございます

536あなたの名前を入力してください:2021/11/05(金) 22:28:55 ID:ElAI/sE6
>>534
初心者が箱庭系バリアント……? 無謀やぞ
いや明らかに初心者じゃない人も質問してるからいいのか?
eracustom_FWってのが箱庭用ベースバリアントらしいけど今どこで入手できるのかはわからない

537あなたの名前を入力してください:2021/11/05(金) 22:29:59 ID:3OPuubuc
箱庭系は独自の良さがあるとはいえ複雑すぎるよね

538あなたの名前を入力してください:2021/11/06(土) 14:25:10 ID:ZXtTAp8.
ERHで定義したCHARADATA等の広域変数の値をChara.csvから代入する事は可能でしょうか


例えばキャラAがキャラBに処女を捧げていたとして

#DIMS CHARADATA SAVEDATA 破瓜相手

とERHで定義しキャラAのCSVにて
例えば

破瓜相手,キャラB
(ついでに処女なしやV経験等)

と書き込めばキャラAをADDCHARAした際に
キャラAの該当広域変数にキャラBの文字列が代入されるでしょうか

539あなたの名前を入力してください:2021/11/06(土) 15:59:11 ID:.BGRiR9A
>>538
>ERHで定義したCHARADATA等の広域変数の値をChara.csvから代入する事は可能でしょうか
できません

蛇足ですが参考まで
開発者向けの設定でemueraを起動したときにファイルの読み込み順が表示されるのを見ると実感しやすいと思いますが、
csvフォルダ内のファイル→*.ERH→*.ERBの順で読むのでERHの効果はCSVフォルダ内の記述には及びません

540あなたの名前を入力してください:2021/11/06(土) 16:06:55 ID:QhMVd0VQ
もっとキャラクターをオブジェクトっぽく扱いたいと思い始めると
普通にC#なりJSなりで書いた方が早いんじゃないかとなってしまう

541あなたの名前を入力してください:2021/11/06(土) 16:10:59 ID:ZXtTAp8.
>>539
了解です
キャラ独自に事前に持たせたい変数はCSTR等の標準のものを使う方が良さそうですね
ありがとうございます

542あなたの名前を入力してください:2021/11/06(土) 16:17:17 ID:ZXtTAp8.
>>540
Eraシリーズの「他ユーザーが持ち寄ったテキストを反映させながらプレイできる」という環境に憧れて
一時期は他の言語やゲームエンジンでのEraテイストゲームを…とも考えたのですが
プログラミングド素人なのでどうにも手順が分からず、Emueraでアレコレ考えていたりします

スレ違いな話題ですが
実行ファイル外のテキストの内部データをどう読み取って取り込むのかとか
パーサなるものを用いるのかとか
調べてみても要領を得られるほど学が足りていませんでした

543あなたの名前を入力してください:2021/11/06(土) 16:48:17 ID:QhMVd0VQ
>>542
>Eraシリーズの「他ユーザーが持ち寄ったテキストを反映させながらプレイできる」という環境に憧れて
>一時期は他の言語やゲームエンジンでのEraテイストゲームを…とも考えたのですが
>プログラミングド素人なのでどうにも手順が分からず、Emueraでアレコレ考えていたりします
ツクールMVやMZは実行エンジンがJacascript製でブラウザでも実行でき、従来のイベントエディタも健在なので
そちらにステップアップするという考えもあると思います。
Eraライクな仕組みを自分で作成する必要があるというハードルもありますが…

544あなたの名前を入力してください:2021/11/06(土) 17:28:09 ID:ZXtTAp8.
>>543
ありがとうございます
MVなら手元にあるので、機会があれば挑んでみたいと思います

Eraライクな仕組みがどのように成り立っているかの部分がやはり課題ですね…
指定した階層の指定した文字列と拡張子を含むファイルを読み取るという命令があるのは理解できるのですが
読み込んだファイルの行ごとに特定の文字列や変数を、実行ファイル内に適切な対象に代入する部分で挫折しました
Era以外でそういった処理をする場面が思いつかず、調べるためのキーワードも分からない状態なので…

545あなたの名前を入力してください:2021/11/06(土) 18:06:22 ID:rlW0.0t2
>>541
ERBを使うという手もある
キャラ制作時に自動で読み込まれるようにするとか、それをフレームワークで動かすとかするのは結構めんどくさいけど

546あなたの名前を入力してください:2021/11/06(土) 18:21:29 ID:3i5XcYgU
TWのキャラデータ方式は結構使えると思う

547あなたの名前を入力してください:2021/11/17(水) 06:33:43 ID:4H.fn8nU
キャラクター独自の変数やフラグを実装するよりうまいやり方はありませんか?
TWを見るとCFLAGの領域にキャラが個別に利用するための領域が確保されていましたが、この方法だと管理がしづらいと思っています。
理想はキャラクター情報をオブジェクト化し、各オブジェクトごとに必要に応じて独自の変数やフラグを実装できるようにすることなのですが…

548あなたの名前を入力してください:2021/11/17(水) 10:54:30 ID:zjDHNFAo
ERHで#DIM CHARADATA 変数名
詳細は↓を参照
https://ja.osdn.net/projects/emuera/wiki/UserVars

549あなたの名前を入力してください:2021/12/15(水) 15:51:30 ID:ZVyt7f5g
eraToLoveAを主人公審神者縛りではなくキャラ×キャラできるようにしたいんですが、
どこのコードで初手あなたカスタム呼び出しているのかがわからずでずっと詰んでます。
どこを弄れば変わるかわかりそうな方っていらっしゃいませんか。

550あなたの名前を入力してください:2021/12/26(日) 22:30:32 ID:T9OSGJEk
SYSTEM.ERBの187行目にあるCALL START_CHARA_SELECTをコメントアウト
直下のCALL CHARA_BUYの次行にCALL KYOHAN_CHARA_SELECTを持ってくる
たぶんこれだけ

これじゃ次同じことがあったとき役に立たないから調べた手順を書くと
「あなたカスタム」フォルダ内にある「MASTER_TALENT_SET.ERB」ファイルの関数名
「ANATA_TALENT_SET」でERBフォルダ全体をgrep
「SHOP2.ERB」の「START_CHARA_SELECT」から呼ばれていて
現在のプレイヤー設定は後から追加された処理とコメントから把握

その前にある「MASTER=0」を1代入に変えてみたら登録外エラー
ここではまだキャラ登録が行われていないようなのでADDCHARAをgrep

「SHOP2.ERB」の「CHARA_BUY」が引っかかり
そこにプレイヤーを登録キャラから選択する処理は既にあることがわかった
あるのになぜ動かないのか、発生条件がMASTER==-1になっている
MASTER = -1でgrepするとSYSTEM.ERBの「EVENTFIRST」開始処理や
SHOP2.ERBの「TSUYOKUTE_GAME」強くてニューゲーム処理が引っかかった

START_CHARA_SELECT・ANATA_TALENT_SETが、CHARA_BUYの上に挟まれ
MASTERを0に設定したため、CHARA_BUY側はMASTER==-1を受け取れなくなり
プレイヤー選択が発生しなくなったのが原因では、と考えた

CHARA_BUY側でMASTER=0を選んだ後、START_CHARA_SELECTからの処理を
選択分岐で発生させるとスマートな追加処理になると思うが
とりあえず希望通りに遊ぶことは簡単にできると思う

551あなたの名前を入力してください:2022/01/24(月) 20:53:40 ID:mIA81buY
eraFGOK.50で遊んでいます

デイリーイベントを一つ作ろうとしていて、ランダム選出したキャラクターの素質を参照した上で素質に対応させた地の文を優先順位なしにランダム表示させたいのですが…

素質のそれぞれに対応させた地の文が4つあるとして、4つとも合致した場合(真、真、真、真)には SELECTCASE RAND:4 で処理できると思うのですが

4つの地の文に対して対応する素質が3つしかない場合(真、偽、真、真だとか) 漏れた素質に対応する文(左記1,3,4合致の時における2に対応させた文)は除外して残った3つの候補の中からランダム表示…と言った事をしたい時に

真真真真、偽真真真(1番目を省いたRANDに掛ける)、真偽真真(2番めを省いたRANDに掛ける)、真真偽真(3番めを省いた...)、真真真偽(4番めを...)…といったそれぞれのパターンを書き出して丁寧にSELECTCASE:RANDで処理していくほかにないのでしょうか?

552あなたの名前を入力してください:2022/01/24(月) 21:26:33 ID:WapRIdnQ
汎用口上を一個作っておいてRAND4の分岐でその素質持ってれば素質用口上持ってなかったら汎用口上ってやると簡単かしら

553あなたの名前を入力してください:2022/01/24(月) 23:27:50 ID:fkCTNKbs
K系列だったらIFRAND関数を使ってみても良いかもしれない
あるいはRAND:4で抽選して偽のところに当たったらRAND:4よりも前のところに戻って抽選し直すとか

554あなたの名前を入力してください:2022/01/25(火) 01:44:48 ID:u227Z.ao
>>551-553
なんだもうあるんだ・・・・w
一応作った。全角スペースをタブに置換すれば動くはず
GET_CHARA_RANDOMRULEの第一引数にキャラのindexを数値で、第二引数以降に条件を文字列で書けば、条件を満たすものの中からランダムで1つ選んで返す
(第一引数に指定した値は第二引数以降では変数indexとして参照できる)

@GET_CHARA_RANDOMRULE_ARRAY(targetChara,rule)
#FUNCTION
#DIM targetChara
#DIMS REF rule,0 ;必要なら雑に増やす
#DIM index
#DIM allowedRulesIndex,100 ;足りないとエラーになるので雑に増やす
VARSET allowedRulesIndex,-1
FOR index,0,VARSIZE("rule")
 SIF rule:index == ""
  CONTINUE
 SIF EVALUATE(rule:index,targetChara)
  allowedRulesIndex:FINDELEMENT(allowedRulesIndex,-1) = index
NEXT
SELECTCASE FINDELEMENT(allowedRulesIndex,-1)
 CASE -1
  RETURNF RAND:VARSIZE("allowedRulesIndex")
 CASE 0
  RETURNF -1
 CASEELSE
  RETURNF RAND:FINDELEMENT(allowedRulesIndex,-1)
ENDSELECT

@GET_CHARA_RANDOMRULE(targetChara,rule:0,rule:1 = "",rule:2 = "",rule:3 = "",rule:4 = "",rule:5 = "",rule:6 = "",rule:7 = "",rule:8 = "",rule:9 = "")
#FUNCTION
#DIM targetChara
#DIMS rule,10
RETURNF GET_CHARA_RANDOMRULE_ARRAY(targetChara,rule)

;コイツは汎用関数・ライブラリスレの>>103-104に入ってるやつと被ってるので、そっち使ってるなら不要
@EVALUATE(evalString,index=-1,value=-1,totalizedValue=-1,strKey="")
#FUNCTION
#DIMS evalString
#DIM DYNAMIC index
#DIM DYNAMIC value
#DIM DYNAMIC totalizedValue
#DIMS DYNAMIC strKey
RETURNF TOINT(STRFORM("{" + evalString + "}"))

555あなたの名前を入力してください:2022/01/25(火) 16:43:01 ID:A1UFGDIY
助かりました、ありがとうございます!

556あなたの名前を入力してください:2022/02/07(月) 12:15:11 ID:Ab7ffkCc
質問です
eraGVTを改造中にこのような記述を見つけたのですが、

LOCAL:1 = RAND:100 && TALENT:ARG:オトコ <= 0 && CHECK_HOLYVIRGIN_F()==0

変数への代入に&&や比較演算子は使えるものなのでしょうか?
単に記述ミスか自分の知識が足りないせいで理解できないだけかわからず……お知恵をお借りしたいのです

557あなたの名前を入力してください:2022/02/07(月) 12:32:02 ID:hJ9cAehE
こりゃまたやっかいな構文だなぁw
結論から言うと、構文としては正しいよ

まずeraBASICは、条件判定式の結果が成立するなら1、しないなら0を返す仕様になってる
(IF分は条件式が0以外ならELSEの前が実行される。SIF文や参考演算子、&&なども同様)
つまり提示の構文は、
"RAND:100 && TALENT:ARG:オトコ <= 0 && CHECK_HOLYVIRGIN_F()==0"
という条件式の結果が成り立つなら1、成り立たないなら0を、LOCAL:1に代入する、という意味になる。

これについては、デバッグモード起動して以下の式を入力してみて
("値1" == "値2") *2 - 1
このままだと-1を返すけど、"値2"を"値1"に書き換えると1を返す
括弧の中全体を0か1に変えて式を読んで見れば、どういうことかわかるはず

次にRAND:100 は、直後に&&がついてるので「RAND:100の結果が0以外のとき」と読み替えることができる
TALENT:ARG:オトコ <= 0とCHECK_HOLYVIRGIN_F()==0は見たままなんで省略

だから全体を解釈すると、RAND:100が0以外かつTALENT:ARG:オトコが0以下かつCHECK_HOLYVIRGIN_F()の結果が0なら、LOCAL:1に1を、それ以外なら0を代入する、という意味になる。

558あなたの名前を入力してください:2022/02/07(月) 12:51:38 ID:Ab7ffkCc
なるほど、普通に右部分は判定式と考えればいいのですね
詳しい説明ありがとうございます!

それならそれでなぜRAND:100で1%の除外を……?とか疑問は湧きましたが
また、直後に

IF LOCAL:1 < 50

という条件式があるのですが、
解説を自分が正しく理解できているのなら、このIFがELSEになることはないでしょうし
本来は50%を基本確率にして分岐させたかったっぽいですね……

意図を読み解いて修正しようと思います
助かりました!

559あなたの名前を入力してください:2022/02/08(火) 00:36:52 ID:aXUSF6vM
質問なんですが、複数人のキャラクターの特定の数値(例えばCFLAG:経験人数)をソートしたい場合、何かいい方法は無いでしょうか?
#DIM 選択キャラ,5
選択キャラ = 15,21,35,6,47
となった場合に、各キャラのCFLAG:経験人数をソートして表示し、その順番を記録したいのですが

560あなたの名前を入力してください:2022/02/08(火) 20:56:05 ID:s/1UzrGM
1.ARRAYMSORT命令を使う
2.自前でソート処理を行う
3.ソート用の配列変数に (CFLAG:経験人数 * 256 + キャラ登録番号) を入れてからARRAYSORT命令を使う キャラ登録番号は配列変数の中身を256で割った余りで求められる (計算式が不適切な場合は適当に変更するべし)
どれを試すかは自由

561あなたの名前を入力してください:2022/02/08(火) 22:30:56 ID:u0h9PrnE
しょうがないにゃぁ
任意の条件でソートする手段はEmuera標準で提供されていないので、自前で実装する必要あり
(ARRAYMSORTは副作用があるので考慮しない)
EVALUATEに関しては>>554参照
CALLF LIST_SORT(選択キャラ,"CFLAG:value:経験人数")
でソートできるはず

@LIST_SORT(targetList,sortRule = "value",isDescend = 0,defaultValue = -1)
#FUNCTION
#DIM REF targetList
#DIM defaultValue
#DIMS sortRule
#DIM isDescend
#DIM gnome ;ノームの位置
#DIM elementCount
#DIMS sortFunc
elementCount = GET_LIST_LAST_ELEMENT(targetList,defaultValue) + 1
gnome = 1
sortFunc = \@ isDescend ? >= # <= \@
WHILE gnome < elementCount
 IF GROUPMATCH(COMPARE(EVALUATE(sortRule,,targetList:(gnome - 1)),EVALUATE(sortRule,,targetList:gnome)),0,(isDescend ? -1 # 1))
  gnome++
 ELSE
  SWAP targetList:(gnome - 1),targetList:gnome
  gnome = MAX(gnome - 1,1)
 ENDIF
WEND
RETURNF 1

;与えられた値を比較し、target1 < target2なら1、target1 == target2なら0、target1 > target2なら-1を返すラッパー関数
@COMPARE(target1,target2)
#FUNCTION
#DIM target1
#DIM target2
RETURNF (target1 == target2 ? 0 # (target2 - target1) / ABS(target2 - target1))

562あなたの名前を入力してください:2022/02/08(火) 23:45:24 ID:aXUSF6vM
>>560-561
ありがとうございます、参考にして目的に合わせて処理作ってみます

563あなたの名前を入力してください:2022/02/28(月) 19:52:36 ID:9nmkTkgE
質問させてください
数値を使ったor文を作りたいのですが構文的にはどういった感じになるのでしょうか

IF LOCAL == 1 || 2 || 3 || 4
PRINTFORML aaaa
ELSEIF LOCAL == 5 || 6 || 7 || 8
PRINTFORML bbbb

上のような感じで組むとLOCALの値が5〜8の時でもaaaaと返ってきます
PRINTFORML aaaa {LOCAL}といったときにaaaa{5~8} と表示はされるので恐らくor文の組み方自体が違うのだろうという事は分かるのですが…

564あなたの名前を入力してください:2022/02/28(月) 20:03:07 ID:/YZa/l4E
根本的に考え方が違う
LOCAL == 1 || 2 || 3 || 4
これは"1 || 2 || 3 || 4"の結果を計算し、その結果をLOCALと比較するという意味になる。
で、||は0かそうでないかしか計算しない(結果は1か0しかない)ので、結局↓の式と同じになる
LOCAL == 1

試しにLOCALの値を2にすると、aaaaもbbbbも表示されないはず

方式は4つ。めんどいのでPRINTFORMLの行は省略
1.律儀に全部書く。一番正攻法
 IF LOCAL == 1 || LOCAL == 2 || LOCAL == 3 || LOCAL == 4
 ELSEIF LOCAL == 5 || LOCAL == 6 || LOCAL == 7 || LOCAL == 8

2.不等号で判定。連続した数値の範囲内か判定するにはこれが楽
 IF 1 <= LOCAL && LOCAL <= 4

3.INRANGE関数を使う。実質的に2と同等
 IF INRANGE(LOCAL,1,4)
 ELSEIF INRANGE(LOCAL,5,8)

4,GROUPMATCH関数を使う。実質的に1と同等
 IF GROUPMATCH(LOCAL,1,2,3,4) > 0
 ELSEIF GROUPMATCH(LOCAL,5,6,7,8) > 0

565あなたの名前を入力してください:2022/02/28(月) 20:05:08 ID:/YZa/l4E
ごめん、2.に↓が抜けてるわ
ELSEIF 5 <= LOCAL && LOCAL <= 8

566あなたの名前を入力してください:2022/03/01(火) 17:08:19 ID:rzqTnce.
ありがとうございます
1の方法で良い具合に動作するようになりました

567あなたの名前を入力してください:2022/03/02(水) 21:43:13 ID:zDGkE8Hk
質問させてください

#DIM フラグ

IF フラグ == 1
PRINTFORML %ANAME(対象A)%の指が沿わされ…
ELSE
PRINTFORML %ANAME(対象B)%の指が沿わされ…
ENDIF

と言った文章で#DIM フラグ が立っているかいないかで分岐させる様にしたいのですが、対象の名前を指定する部分だけが変わる以外は全く同じ文面になる時、
PRINTFORML %ANAME(対象A)%(フラグが立っていないなら%ANAME(対象B)%)の指が沿わされ…
と言う風にひとつにまとめることはできるものでしょうか?

対象Aと対象Bのために全く同じ文章を2つ用意しているのですが、これを1つで済ませることができないだろうかと考えています


もう一つなのですが、3つ程度のの語句をSELECTCASE:RANDを3つ用意して組み合わせた時に
AAで
BBな
CC
といった感じに縦にばらばらに表示されてしまうものを、
AAでBBなCC といった感じに上手に表示させる方法ってあるものでしょうか
今は#DIMを使って%AA%で%BB%な%CC%といった感じでなんとかそれらしく出来てはいるのですが…

568あなたの名前を入力してください:2022/03/02(水) 22:27:10 ID:/vGZk042
1つ目は三項演算子をつかえばOK ↓のリンク先はeratoho WIKIに載ってる説明
https://seesaawiki.jp/eratoho/d/ERB%B9%BD%CA%B8%B9%D6%BA%C22#content_1_2_9
例文を使う時はこうなる
PRINTFORML \@ フラグ == 1 ? %ANAME(対象A)% # %ANAME(対象A)% \@の指が沿わされ…

2つ目はPRINTから改行キーワード"L"を省けば良さげ。 例えば
PRINTFORM AAで
PRINTFORM BBな
PRINTFORML CC
これで
AAでBBなCC
と表示されるけどこういうことでいいのかな

569あなたの名前を入力してください:2022/03/02(水) 23:07:05 ID:nJ7ME.NU
同じ条件で分岐する表現を何度もやるなら関数化した方がいいかもね

570あなたの名前を入力してください:2022/03/03(木) 22:01:41 ID:O9apcPY.
ありがとうございます、思った通り動くようになりました
助かります

571あなたの名前を入力してください:2022/03/17(木) 08:06:08 ID:WWGi7nEU
すみません。質問させてください

Emueraではcsvに記述したNAMEが各変数に割り当てられ、要素名として扱えますが
これを自作の#DIM的な変数にも構築することは可能でしょうか?
具体的にいうと
BASE.csvに 体力,1000とあればERB内でBASE:体力で参照できるように
#DIM HOGE 宣言後に HOGE:HUGAという要素名を割り当てたい

割り当てられないとマジックナンバーか広域な変数を作成する必要があり
かなり不便に感じているのですが…

572あなたの名前を入力してください:2022/03/17(木) 20:48:44 ID:DRxT.Nxs
ERHで#DEFINEする?

573あなたの名前を入力してください:2022/03/17(木) 21:23:11 ID:DRxT.Nxs
>>572
考えをメモしてたら操作間違えて書き込みました。申し訳ないです…

.ERHファイルを作成し、その中で[#DEFINE <置換元識別子> <置換先式>]と記述すれば.ERBファイル内の<置換元識別子>を<置換先式>に置換する
そうすると
<hoge.ERH>
#DEFINE 白米 0
#DEFINE 漬物 1

#DEFINE 好き 0
#DEFINE 嫌い 1

<fuga.ERB>
#DIM 好き嫌い,2

好き嫌い:白米 = 好き;(処理的には好き嫌い:0 = 0)

という形で記述できるから広域変数を使わずに要素名を割り当てられますかね?

574あなたの名前を入力してください:2022/03/17(木) 22:48:34 ID:WWGi7nEU
>>573
回答ありがとうございます
マクロかー 式中のみ展開とはいえ、大文字が基本構文なので怖いところがありますね…
いっそのことキャメル式の関数作って全部ラップしようかな

enumが欲しいぜ
名前空間も欲しい

575あなたの名前を入力してください:2022/03/18(金) 02:28:11 ID:EOhlf8kE
>>571
単純に定数切る方が多分早い

[ERH]
#DIM CONST HUGA = 0

[ERB]
@(省略)
#DIM HOGE
HOGE:HUGA = 1

そもそも単純に連番で表せないなら、変数から分けてしまう方が可読性を確保できるよ

576あなたの名前を入力してください:2022/03/18(金) 13:46:07 ID:hLJ8sNeA
他の変数と要素名が被る場合がね…
Emuera本体が対応してくれれば一番いいんだけど

577あなたの名前を入力してください:2022/03/20(日) 20:54:21 ID:8cYW3tTU
Emueraって大文字小文字区別してないんだ...
キャメル式に命名規則したかったのにな 命令と関数で記法違うのほんとストレス
これ日本語変数使わにゃやってけないなぁ 海外ではどうやってんだか

578あなたの名前を入力してください:2022/03/20(日) 21:06:06 ID:9vmAYQSY
設定で大文字小文字の区別できるよ

579あなたの名前を入力してください:2022/03/20(日) 23:05:37 ID:PmE/uhmc
???
大文字小文字を区別してないからこそ、キャメルケースでもなんでも好きに書けるのでは?
命令をキャメルケースで書いても動作は変わらないんだから

580あなたの名前を入力してください:2022/03/21(月) 01:56:02 ID:Yd5BJRtA
>>578
ありがとうございます!
私のバカ〜 設定を見落としていたとは

>>579
命令と関数で呼び出し方が異なるところがいやらしいのです
例えば関数だと CALL SetBit(ARG, ARG) となるところが
命令だと SETBIT ARG, ARG となる
この関数自作だっけ?命令だっけ?と毎度調べるたびにムカつくので
全部を関数に統一したいわけです KISSの法則的なやつです

同じ理由でFORM構文も殺したい 記号はわかりにくい
Print関数を作って全部文字列式に統一するんだ
TOINT()で整形して渡したほうが見た目で分かりやすいじゃないか

581あなたの名前を入力してください:2022/03/21(月) 01:58:04 ID:Yd5BJRtA
ミス
TOINT()じゃなくてTOSTR()だった

582あなたの名前を入力してください:2022/03/21(月) 17:55:23 ID:AZe2wDN.
>全部を関数に統一したいわけです
すればいいのでは?
命令実行するだけの下請け関数にキャラメル箱だろうがWikiNameだろうが好きなように付けちゃって呼べばいいような?

583あなたの名前を入力してください:2022/03/21(月) 23:17:48 ID:Yd5BJRtA
それやろうとして命令と同じ名前のキャメル式関数つくったら
Emueraが英文字大小区別してないことが分かってエラーになって途方に暮れたんだけど
それで嘆いたら>>578 さんが設定で変更できることを教えてくれたってのが
ことの顛末なんですよぉぉぉぉぉ
二方ともアドバイスありがとぉぉぉ

584あなたの名前を入力してください:2022/03/22(火) 02:36:39 ID:4G1qxkrE
まあ大文字小文字区別しないでキャメル式使おうとすると単語がくっついて解釈されるからなぁ
パッと思いつく、かつあんまり実用性ない例だと isErrorAssertion と isErrOrAssertion とかか?
なので>>580の言いたいこともわからんでもない

ただ既存の殆どのライブラリと互換性取れなくなるから、そこまでのメリットがあるかは知らん

585あなたの名前を入力してください:2022/04/13(水) 04:00:36 ID:IHLwEzTY
最近つーか昨日、eraについて知ったばかりなんですけど、
開発ツールの系譜って、この流れで合ってますかね?

■2005年
佐藤敏(=サークル獏)
・・・「eramaker」を開発

■2008年
MinorShift
・・・「Emuera」を開発

■2009年
佐藤敏(=サークル獏)
・・・「eramaker2」を開発

■2022年現在
妊)|д゚)の中の人
・・・「私家改造Emuera」を配布中

586あなたの名前を入力してください:2022/04/13(水) 18:30:15 ID:Bry8b0pE
既に俺より詳しそう
Emuの人は数年前までアプデしてたんだけどほぼ引退、今は妊の人がバグ取りやら最適化方面だけ引き継いでる感じ

587あなたの名前を入力してください:2022/04/13(水) 18:33:11 ID:Bry8b0pE
あとそれ以外にも機能追加していく人がたまにいたりするな

588あなたの名前を入力してください:2022/04/16(土) 13:56:06 ID:9mEFKmNA
Enter氏のEmueraEEとかですかね

eraはまったくの偶然から知ったもので、
どちらかというとテキストベースのゲームエンジンとして
すごく面白そう!という印象を受けました

Wikipediaに項目があってもよさそうなものだけど、
そこはまぁ、諸般の事情って奴ですかね・・・

589あなたの名前を入力してください:2022/04/20(水) 06:24:47 ID:v2C0GS4o
Wikipediaは明確な基準があるから単純に載せられないんだと思う
特に三大方針のひとつ「検証可能性」に完全に反する
ウィキペ用語だし詳細は省くけど、ソースがほぼ匿名ロダと匿名掲示板、まとめwikiだけになってしまうeraは難しい
獏さん時代メインならワンチャンいけるかもしれないけど、各方針・ガイドラインに沿うならほとんど書くことなさそう

匿名コミュニティ発で記事があるものは、大抵はメディアへの掲載・雑誌含む商業ラインでの配布・法人や著名人の反応があったりする

590あなたの名前を入力してください:2022/07/13(水) 06:41:29 ID:xVpgteFM
口上の側でコマンドに制限かけることって出来ますか?
たとえば特定のキャラだけクンニやフェラが出来ないようにするとか…

591あなたの名前を入力してください:2022/07/13(水) 06:56:23 ID:hiP9OBFM
基本的に無理だがバリアント次第では

592あなたの名前を入力してください:2022/07/13(水) 10:25:35 ID:AYMMrVLo
悪メの本番できないさくらちゃんとか

593あなたの名前を入力してください:2022/07/13(水) 12:27:18 ID:vQVEtU1I
悪メはキャラ毎のコマンド規制が非常に充実してるよな
倒錯系を忌避する伊吹ちゃんとか、名前に恥じず意地でも前の穴を使わせないミアとかそっちの意味でも個性が強い

594あなたの名前を入力してください:2022/07/13(水) 16:53:47 ID:LgX2/7x.
口上側から色々できると作者のモチベも上がるだろうね

595あなたの名前を入力してください:2022/07/13(水) 17:25:10 ID:d3ut9rEU
ここじゃなくて個別のバリアントスレで聞くべきだわ
やりたい事が明確ならバリアント主さんの手助けが貰えるかもしれんし

596あなたの名前を入力してください:2022/07/13(水) 20:35:18 ID:Z263mdm6
個人的にはそのキャラに特定の素質を持たせて、その素質を持ってるならコマンド実行時に弾くとかの方が汎用性高くていいと思うがね

597あなたの名前を入力してください:2022/07/21(木) 18:00:01 ID:31HAcFrQ
今、eraJKの改造してるんですがとりあえずEmuera1824+v8.1入れてみたんですけど
警告Lv1:COMF\性行為\COMF1-愛撫.ERB:14行目:システム関数@COM1 に引数が設定されています
@COM1(ARG)
って出てしまうんですけどこれって何が問題なんですか?引数ここに設定してはいけないのは何故?

598あなたの名前を入力してください:2022/07/21(木) 19:25:18 ID:8V9WckdY
@COMxxはCALLとかで直接呼び出す関数じゃないので引数を渡す事ができないからです

599あなたの名前を入力してください:2022/07/22(金) 18:55:49 ID:4KR/dgRo
回答ありがとうございました!内容理解するのに丸一日かかりました
COMはEmuera側でselectcom変数が配られてるから別の変数を@comに送れない?
という風にまとめとかflowとか見て解釈したんですが、じゃあ(ARG)消してみたら
USERCOM.ERBの13行目でエラーが発生しました:Emuera1824+v8.1
TRYCCALLFORM COM_ABLE{LOCAL}(MASTER)
エラー内容:引数の数が関数"@COM_ABLE1"に設定された数を超えています
現在の関数:@PLAYER_USERCOM(USERCOM.ERBの5行目)
関数呼び出しスタック:
↑EVENTCOMEND.ERBの133行目(関数@EVENTCOMEND内)
って出て意味が分からなくなりました。心が折れました

600あなたの名前を入力してください:2022/07/23(土) 19:25:47 ID:67tTclxk
@COM_ABLE1関数には引数が0個なのに, 実引数としてMASTERを渡そうとしているのエラーが出てますね (@COM_ABLE##も仮引数を持つことはできません)
TRYCCALLFORM COM_ABLE{LOCAL}
として実引数をすべて消すことでエラーは出なくなります

追伸:Emueraの私家改造版はv15が出てますが2年前のv8.1を使われてるのは理由がありますか?

601あなたの名前を入力してください:2022/07/24(日) 20:01:14 ID:mESX72Pk
少しずつ原因がわかってきました。JKは特にコマンド周りが一番好きなシステムですけど
その分特殊で他のを参考に理解っていうのが難しくて困ってました
今、eratohoまとめとeraシリーズを語るスレwiki、emuerawiki(ja.osdn.net/projects/emuera/wiki)
の3つを参考にしながら触ってるんですが、他にこのサイトおすすめだよ、とかってありますか?

v15を使っていない理由は当時のemuera1755より便利な機能が増えてるので1824入れてみたんですが
上記のエラーが出てしまったのでとりあえずエラー消せたらv15にしようかと考えていました

602あなたの名前を入力してください:2022/09/06(火) 20:54:05 ID:Dysw3kNE
素人質問ですいません。
今作っている部分でどうしても下記のエラーが出てしまうので、
EXCELでいうところのIFERROR関数のように、エラーが出た時の処理を加えたいと思っています。
(pythonでいうとtry~except?)
emueraのサイトは見たんですが、いまいち要領を得ません。
emueraでもIFERRORのような命令はかけるのでしょうか?
教えていただければ幸いです。

エラー内容:配列型変数TAG_NAMEの第1引数(-1)は配列の範囲外です

603あなたの名前を入力してください:2022/09/07(水) 00:19:06 ID:oj/mSVew
無いと思う
(関数を呼び出そうとしたけど存在しなかった場合に何かする、だったらTRYCCALLやTRYCCALLFORMがあるけど)
配列型変数の引数がマイナスにならないように事前チェックするのが正攻法だと思う

604あなたの名前を入力してください:2022/09/07(水) 07:03:26 ID:KwtJ4IgQ
回答ありがとうございます。
別の方法を探ってみます。

605あなたの名前を入力してください:2022/09/07(水) 22:27:32 ID:xyL1Vfdk
THROWがあるのにTRY CATCHがないってのもちょっとよくわからないところだよね

606あなたの名前を入力してください:2022/09/08(木) 00:22:10 ID:70LxUvEo
エラーが出るファイルの中身を見てないから確実なことは何も言えないけど、もしかするとEmueraの不具合か何かが原因で(-1)という値が発生しちゃってる可能性もないとは言えないかもしれないねぇ

607あなたの名前を入力してください:2022/09/29(木) 19:59:43 ID:fM3MVu6Q
遊ばせてもらってばかりで自分でいじったりしたことないんだけど、ソシャゲのホームで一線を越えたふれあいできるだけの感じのやつって作るの難しいんだろうか
ホームでふれあうのと行為始めるのは別で
寝るとデイリーイベントがあるくらいの
さらに希望言うならキャラはカスタムで作れるような
それで服着替えさせたりできて台詞とか反応変わるとか
難しいかなあ

608あなたの名前を入力してください:2022/09/29(木) 20:28:34 ID:s.gOcrkg
具体性に乏しいな
クリックすると設定したセリフを条件分岐に応じて出力するぐらいなら簡単だろうが、文字が出るだけで
Live2Dとボイスを標準装備してるソシャゲ並みの手ごたえを得られるとは思えない
もうちょっと何がしたいかはっきりさせて

609あなたの名前を入力してください:2022/09/29(木) 20:35:41 ID:eoedMeRs
話だけ聞くと悪魔でメイドにオリキャラ作成機能を乗っければそんな感じになりそう
ただ、悪魔でメイドには汎用キャラという概念がないからもし作るにしても大変そう

610あなたの名前を入力してください:2022/09/29(木) 21:39:45 ID:OSt9RjMM
ホーム画面みたいな所で立ち絵触って反応欲しいならeratohoLoAとか近いんかな

611あなたの名前を入力してください:2022/09/30(金) 04:56:37 ID:2q1iLtxg
伺かとか某奴隷との生活的なやつだろうか

612あなたの名前を入力してください:2022/09/30(金) 20:05:31 ID:GWypnMGA
たぶんものすごく初歩的な質問で申し訳ないんですが、era開発に必要なプログラミング言語とかって、なにかありますか?

613あなたの名前を入力してください:2022/10/01(土) 18:59:17 ID:X0rxHLFA
悪魔でメイド近いかもだけど難しいんだな
ありがとう

614あなたの名前を入力してください:2022/10/01(土) 19:25:27 ID:c4vyUnd.
>>612
中身はBASIC系統なのでVBとか触った経験あると割と活きるかな

615あなたの名前を入力してください:2022/10/01(土) 20:43:08 ID:/.kMUGTc
eraBasicはマジで単純な言語なので、一般的な言語の基礎さえわかっていれば簡単に応用できるのだ

616あなたの名前を入力してください:2022/10/01(土) 21:33:36 ID:es3eWvmI
そして適当に増改築繰り返すとスパゲッティができあがるのだ

617あなたの名前を入力してください:2022/10/03(月) 21:23:38 ID:zVYYRpVg
>>614-616 ありがとうございます

618あなたの名前を入力してください:2022/10/03(月) 22:57:11 ID:sRMR0SUA
なお本当のBASIC系言語を触ってるとeraBasicの癖が出まくって困るのまでが仕様
ifの後のthen忘れたり、end ifのスペース忘れた経験があるやつは多いはずだw

619あなたの名前を入力してください:2022/10/06(木) 14:46:18 ID:P57Sc.v6
引数を条件式にする方法ってありませんか?
こんな感じで引数を変えれば任意の条件でキャラを走査できればいいんですけど。

CALL HOGE(CFLAG:1 > 5)

@HOGE(条件式)
FOR LOCAL,1,CHARANUM
SIF 条件式
STRING += @"%CALLNAME:LOCAL%/"
NEXT

620あなたの名前を入力してください:2022/10/06(木) 15:13:32 ID:H88C7lWs
>>619
https://jbbs.shitaraba.net/bbs/read.cgi/otaku/16783/1498745115/93,103
↑このあたりを見ると幸せになれるかも。なれないかもw

621あなたの名前を入力してください:2022/10/06(木) 15:44:36 ID:P57Sc.v6
役立ちそうです、ありがとうございました。

622あなたの名前を入力してください:2022/11/09(水) 07:55:22 ID:nKdgtl1Y
eraの言語って他に使えるものだったのか・・・
という事はHTMLとeraしか出来ない俺でもVBってのを使える・・・?

623あなたの名前を入力してください:2022/11/11(金) 11:31:39 ID:CyEuwiCw
なんらかの言語一個マスターしてれば他の言語も大体わかる
erbはbasicに近い古い言語な感はあるけど

624あなたの名前を入力してください:2022/11/11(金) 20:24:25 ID:ZeztM1DE
eraできてもProlog系とかLISP系はキツくねぇかな

625あなたの名前を入力してください:2022/11/11(金) 22:48:02 ID:lqqRGF8.
大体の意味を理解できなかった男

626あなたの名前を入力してください:2022/11/12(土) 07:10:05 ID:Sy9yFJbo
大体の言語も大体わかる、とした方が良かったね
さておきHTMLできるというならJavaScriptも触っているだろうし、Electronで動かすのとかとっつきやすいかも?

627あなたの名前を入力してください:2022/11/15(火) 19:41:02 ID:8bmnu7iQ
素人質問ですいません。
エラー解決のため、CSVのBASEで、0,体力を400,体力というふうに番号を変えてみたところ、「体力が定義されていない」という膨大なエラーを吐きまくり、戻さざるを得なくなりました。
今までCSVの番号は定義されているものの名前で代用できる特に意味がないもの(BASE:MASTER:0=BASE:MASTER:体力)だと思っていたのでびっくりしました。
今は違う解決法を模索中ですが、仮に上記のようにBASEで振ってある番号を変えてもエラーを吐かないようにするにはどこを変えればいいのでしょうか?GREPしてみましたが、それを定義している箇所はわかりませんでした…。
後学のために教えていただければ幸いです。

628あなたの名前を入力してください:2022/11/15(火) 19:58:27 ID:9YjUhyeg
>>627
エラーの最初に「400は定義の範囲外」みたいなエラー吐いてない?
BASEの要素数が400もないから定義を作れず、その状態で構文解析してるから失敗してるだけ
400じゃなくて小さな数(5とか6とか)にするか、VariableSize.csvのBASEの値を401以上にすれば通るよ

ただ、BASEの要素数に連動して要素数変わるのがいくつかあるから、そっちも変更が必要
確認できたのはこれだけ。他にもあるかも
 ・MAXBASE
 ・BASENAME
 ・DOWNBASE

629あなたの名前を入力してください:2022/11/16(水) 17:38:36 ID:68qFOIFg
>>628
なるほど、VariableSizeでしたか。すっかり失念してました・・・。
教えていただきありがとうございました。

630あなたの名前を入力してください:2022/12/07(水) 19:38:58 ID:n3DNl5LU
なのでベースをera紅魔館に変え最新のEmueraを入れてみてとりあえず改造を進めようとしています
するといきなり、エラーが出てしまいました
CSV関連は直すことが出来ましたが、下記の物の理解が追い付きません、
これらエラーの意味をご掲示いただけませんでしょうか?
なお同様の文で紅魔館内部移動時にエラーが出ました

【バリアント】era紅魔館Ver0.022
【導入パッチ】Emuera1803beta008からEmuera
【エラー内容】
【エラーログ】
F0.ERB:27行目:"@FIRSTTIME"の1番目の引数を整数型から文字列型に変換できません(この警告は互換性オプション「ユーザー関数の引数に自動的にTOSTRを補完する」により無視できます)
IF (FIRSTTIME(312,1) ||【エラー発生状況】起動時
警告Lv2:Command\COM FIRSTTIME(20,1)) || (MASTER_POSE(4,4) != TARGET && MASTER_POSE(0,4)) || (STAIN:0 >= 2 && (STAIN:0 != 16 && STAIN:0 != 17) && ASSIPLAY == 0 && TALENT:MASTER:汚臭耐性 < 2) || TEQUIP:20

631あなたの名前を入力してください:2022/12/07(水) 21:38:19 ID:n3DNl5LU
toho総合から来ました
新しいバリアントを作ろうとベースをera紅魔館にEmueraを入れてみてとりあえず改造を進めようとしています
すると開始時にエラーが出てしまいました
CSV関連は直すことが出来ましたが、下記の物の理解が追い付きません、
これらエラーの意味をご掲示いただけませんでしょうか?

【バリアント】era紅魔館Ver0.022
【導入パッチ】なし
【エラー内容】
【エラーログ】
F0.ERB:27行目:"@FIRSTTIME"の1番目の引数を整数型から文字列型に変換できません(この警告は互換性オプション「ユーザー関数の引数に自動的にTOSTRを補完する」により無視できます)
IF (FIRSTTIME(312,1) ||【エラー発生状況】起動時
警告Lv2:Command\COM FIRSTTIME(20,1)) || (MASTER_POSE(4,4) != TARGET && MASTER_POSE(0,4)) || (STAIN:0 >= 2 && (STAIN:0 != 16 && STAIN:0 != 17) && ASSIPLAY == 0 && TALENT:MASTER:汚臭耐性 < 2) || TEQUIP:20

632あなたの名前を入力してください:2022/12/08(木) 03:07:32 ID:Lfsq4yDU
>>631
@FIRSTTIME関数の1番目の引数は文字列型が指定されている。一方で問題となっているFIRSTTIME(312,1)の"312"の部分は数値型
文字列型と数値型というのは別種のデータ形式であり、これらを直接やりとりすることは基本的にできない
だから314という数値型のものを文字列型へ変換する必要がある(EmueraにはTOSTRという数値型を文字列型に変換する命令がある)

古いEmueraでは数値を文字列型の引数に渡した時、自動で文字列型へ変換する機能があったがver1.808で停止された
なので1.807以前の古いEmueraを使うか(推奨しないが)、エラーメッセージにあるようにEmueraのヘルプ→設定→互換性とたどって
「ユーザー関数の引数に自動的にTOSTRを補完する」をチェックすることで回避できる

コード自体を直すなら「FIRSTTIME(312,1)」の部分は「FIRSTTIME(TOSTR(312),1)」となる(はず。多分……)
また最新の紅魔館NTRだとこの件は修正されている

どういう説明を求めているのかよく分からなかったから長くなっちゃった。型くらい知ってる!って人だったらごめんね…
紅魔館Ver0.022は割と古いバリアントだから紅魔館NTR系列のほうがいいかも?(NTRがいやなのかもしれないがNTR要素は除外もできる)

633あなたの名前を入力してください:2022/12/08(木) 10:44:54 ID:gdi1cLLc
紅魔はoverdriveも作られてたはずだからそっちでもいいかも

634あなたの名前を入力してください:2022/12/08(木) 14:07:48 ID:d9q/agNk
era紅魔館ODはロダ消滅で消えたからなあ

635あなたの名前を入力してください:2022/12/08(木) 20:08:53 ID:DVWEDg8M
お答えいただきありがとうございます、ですが…やはり今だちんぷんかんぷんですね
とりあえず追ってみて確認しましたが、
“;ARGSはイベント番号、ARGは真だと初回判定を更新しない、ARG:1はキャラ登録番号(省略するとTARGET,-1ならMASTER)”
に従うとしたら
IF FIRSTTIME(312,1)は
【312】がCOMF312(キス)、1が真で初回判定を変更しない(?)、そして今回は省略されているのでTargetで
かみ砕くと、「対象がキスをしていない状態のフラグが立っている時」ということになるのでしょうか?
また、今までは口上しか触っていなかったのでTOSTRの使い道がわかりませんね…
NTRより紅魔館を選んだのは単純に規模が小さい方がやりやすいと思ったからですが…
現実的に触ってみてキャラを削るだけでも相当難しいと感じ始めました…
これにさらにTWのコマンドや挿入継続などの状態を紅魔館仕様に変える必要があると考えると相当難しそうですね…

636あなたの名前を入力してください:2022/12/08(木) 21:55:11 ID:Lfsq4yDU
@FIRSTTIME関数には
  1,ARGSに与えられた番号のコマンドが過去に実行されたことがあるかを調べて報告する
  2,ARG:1のキャラクタに対し、ARGSに与えられたコマンドを実行したことがあるというフラグを立てる
の二つの機能があります
今回の場合では「キスを実行したことは記録せず(ARG=1)、TARGET(ARG:1省略)が過去にキス(312)を実行されたか調べて0か1で報告する」という働きをします
ARGが真だと初回判定を更新しないというのは口上などで過去の実行履歴を参照だけするときに使います。(2が実行されなくなる)

数値型、文字列型に関してはeratoho wikiのERB構文講座・基本やERB開発Q&Aに簡単ながら記述があるようなのでご覧ください

637ジンバブエ ◆rw2NXmNKnQ:2023/02/04(土) 19:04:06 ID:g3WqLoAw
完全に返事するのを忘れてしまいましたが…
2か月前にお答えいただきありがとうございます、おかげさまでまだいろいろとわからないままですが、
現在ヴァリアント自体を運営できるようになりました
そしてまた自分では解決できない問題が出たので質問させていただきます
GameBase.csvでバージョンを更新できるのは分かりましたが…
こちら上げた場合前のバージョンのセーブデータとの互換性がなくなってしまいます
セーブデータの互換性をそのままでバージョンを上げたいのですがその場合はどうすればよろしいのでしょうか?

638あなたの名前を入力してください:2023/02/04(土) 20:32:26 ID:uwmva7MM
GameBase.csvの話なので大元本家のGameBase.csvに関するヘルプを読んでみよう
ttp://cbaku.com/b/erakanon/eramacsv.html
これで解決するハズ

639ジンバブエ ◆rw2NXmNKnQ:2023/02/04(土) 23:21:32 ID:g3WqLoAw
解決しました!ありがとうございます…
しかしこういうWIKIってあとどれくらいあるんでしょうか…?
osdnもありましたし

640あなたの名前を入力してください:2023/02/05(日) 01:08:31 ID:he7AwxHg
eramakerの説明文書各種:>>3からチュートリアルに飛んでリンクを辿るといい
#遊びながら改変情報を見てみよう のとこね

Emueraの説明文書各種:osdnのEmueraWiki
ここから「eramaker情報について」のリンクを辿れば、
>>638をはじめ上で上げたeramakerの説明文書のとこには行きつく
一か所リンク切れがあるのとそれぞれのページの説明があるので、
上ではチュートリアル推したけど

噛み砕いて説明してる場所は他にもあるけど、
とりあえず最低限この両者を見れば仕様レベルの話は分かるはず
説明としてはとりあえずそれこそまずは>>3とかからかなあ

641あなたの名前を入力してください:2023/02/21(火) 01:47:43 ID:nf9Jjv5g
既存のeratohoKにちょっとした改造をして他作品の二次創作バリアントを作っているのですが、公開ってどのタイミングどの場所でやってみるのがいいですかね?
今はcsvは全部作成し世界観に合わない用語等を差し替えている段階なのですが
全キャラ分のスキル実装には正直時間がかかりそうで、完成度100%を目指すと出せるのはかなり先になりそうです……

642あなたの名前を入力してください:2023/02/21(火) 23:54:52 ID:GoL0nBcU
tohoKも初公開のバージョンではマップがera恋姫の物だったみたいなので、全然100%じゃなくてもいいと思う
キャラCSVの差し替えが終わってるならあとは「なんか動く物ができたよ!見てちょ!」と自分が思ったタイミングで良いのでは?

643あなたの名前を入力してください:2023/02/22(水) 16:58:01 ID:Q4qBpmqw
公開場所は新バリ作成スレでいいんじゃないかな

644あなたの名前を入力してください:2023/02/22(水) 17:02:55 ID:e1siyLKA
実際に動かしてはじめて浮上してくる問題もあるから、早いうちに公開して感想募るのがいいんじゃないかな

645あなたの名前を入力してください:2023/02/22(水) 22:43:43 ID:AeXPT3CE
ありがとうございます
もう少しだけ弄りたい部分があるのでそれが終わり次第新バリスレに投げてみようかと思います

646あなたの名前を入力してください:2023/03/03(金) 23:38:44 ID:eLjIHLS6
Flag.csvでフラグを管理するメリットはなんでしょうか?
広域変数を使えばよさそうな気がするのですが

647あなたの名前を入力してください:2023/03/04(土) 08:16:12 ID:O5XeFsXw
自分で答えを出してるじゃない。オワリ

648あなたの名前を入力してください:2023/03/06(月) 01:49:34 ID:o6fICZ5I
一文字変数とかと同じで(#DIMで任意の変数を定義できなかった頃の)古い仕様が残っている部分、というのが大きいかと

調べてみた感じだとemueraの「1.756beta002」で「#DIMによるプライベート変数宣言を追加」 「1.808」で「ヘッダーファイル(.ERH)実装」で
emueraが出てからでも数年は広域変数どころかプライベート変数も定義できなかったみたいですし
未だに残っているという部分に関しては「手を加える予定がないのなら今あえて整理に手間を掛けるのか」というのでそのまんまなんじゃないでしょうか

649あなたの名前を入力してください:2023/03/06(月) 10:50:45 ID:F/d5MU3o
強いてあげるならSAVEDATA使うとセーブデータがバイナリ形式にする必要がある

あとはFLAG表記があることで一目で広域変数だと認識できるとか

650あなたの名前を入力してください:2023/03/14(火) 10:28:36 ID:GTJgWDck
【質問】
・環境 eraVoiceroidA-1.26ベースの自作バリアント
・質問内容 eratohoЯeverseに実装されているアニメーションの実装方法が知りたいです
・目的 eratohoЯeverseにあるカラーバーが増減したり文字のカットインを行う方法を探しています
eratohoЯeverseの中身を覗いてみると、「ぱんくしょん」「ぱにめーしょん」というファイルでそれっぽいことをしていそうなので、これの最新版を探して取り入れるのが最適でしょうか?
ご教示よろしくお願いします

651あなたの名前を入力してください:2023/03/18(土) 09:56:01 ID:smsQmPqg
わけわからんからどなたか分かる人お願いします
tohoKのバリアントでスキルを作っているのですが、以下の方法でターゲットを取り戦闘不能にしたいと思ってます
敵が3名いたと仮定し、特定のタグを持った敵をターゲット対象に記録します
記録した対象からランダムで対象を取り出し戦闘不能に関わる関数を呼び出して終了します

〜省略〜
FOR LOCAL, 0, BATTLE_COMMANDER_NUM:対象側
    IF HAS_TAG(BATTLE_COMMANDER:対象側:LOCAL, タグ_ほにゃらら)
        対象リスト = BATTLE_COMMANDER:対象側:LOCAL
        対象人数 ++
    ENDIF
NEXT

IF カウント == 対象人数
    CALL FISHER_YATES_SHAFFLE(対象リスト)
    FOR LOCAL, 0, カウント
        シャッフル保存:LOCAL = SHAFFLE_ARRAY:LOCAL
    NEXT
   ※攻撃対象 = BATTLE_COMMANDER:対象側:(シャッフル保存:LOCAL)
    CALL SKILL_ASSASINATE(攻撃対象)
ENDIF

※印の部分で対象側のIDナンバーと思われる数値までは記録されてましたが、ASSASINATEの部分で対象は配列範囲外(-1)とされてうまくいきません
どう間違ってるのかもうよくわからんなってしまったので、どなたか原因が解る方よろしくお願いします

652あなたの名前を入力してください:2023/03/18(土) 14:54:07 ID:oXBnVKFg
tohoK 1.29.3で
ERB/SKILLS/98_針妙丸/SKILL_針妙丸_PERSONAL_2_鬼殺し両目突きの針.ERB
を見てみると敵を戦闘不能にさせるのは
CALL BATTLE_KNOCKOUT(対象側, LOCAL)
という感じなので関数名も引数の個数も異なっている
FGO K 0.5(修正版)にはSKILL_ASSASINATEがあるけどやっぱり引数は2つ
何か根本的に間違っている気がしないでもない

653あなたの名前を入力してください:2023/03/18(土) 17:46:02 ID:smsQmPqg
tohoKでもfgoでも共通して作ってたので見るべきソース先間違ってたあ…
ただ、どちらも関数直して見間違えてた参照引数を直して再トライしましたが、
BATTLE_武闘:対象側:対象番号 = 0
エラー内容:配列型変数BATTLE_武闘の第2引数(xxx)は配列の範囲外です
xxx←対象のキャラ番号

わかりません…

654あなたの名前を入力してください:2023/03/18(土) 19:52:09 ID:smsQmPqg
すみません、色々やってたら自決しました
話聞いてくれてありがとうございました…

655あなたの名前を入力してください:2023/03/18(土) 20:27:53 ID:dWwfQmrY
>自決しました
生きて?w

656Яeverse★:<売却済み>
<売却済み>

657あなたの名前を入力してください:2023/05/08(月) 23:07:59 ID:u4WD.Pbo
妙な終わり方してたんで亀レスのかき捨て
>>651だと選択結果の攻撃対象として{キャラ番号}を指定している
 BATTLE_COMMANDERの〇人目の{0, 1, 2}を指定するべき、、、動かしてないから多分、だけど

#DIM DYNAMIC 対象リスト, 3
#DIM 対象人数
#DIM 攻撃対象

対象人数 = 0
FOR LOCAL, 0, BATTLE_COMMANDER_NUM:対象側
  IF HAS_TAG(BATTLE_COMMANDER:対象側:LOCAL, タグ_ほにゃらら)
    対象リスト:対象人数 = LOCAL
    対象人数 ++
  ENDIF
NEXT

IF 対象人数 >= 1
  攻撃対象 = 対象リスト:(RAND:対象人数)
  CALL SKILL_ASSASINATE(対象側, 攻撃対象)
ENDIF

658あなたの名前を入力してください:2023/05/09(火) 07:43:30 ID:d//5i.zk
遅レスサンクス。全くその通りで、攻撃対象の指定に気付いたのは自決コメントを書き込んだ辺りでした
デバッグモードで代入されてる数値を目で追いながら、あーでもないこーでもないと悩ませてた結果こうなりました

;複数人
ELSE
   FOR LOCAL, 0, BATTLE_COMMANDER_NUM:対象側
     ;安全弁
     SIF BATTLE_SKILL_SEALED:対象側:LOCAL && !BATTLE_武闘:対象側:LOCAL
       CONTINUE
     SIF HAS_TAG(BATTLE_COMMANDER:対象側:LOCAL, タグ_ほにゃらら)
       対象リスト = LOCAL
   NEXT

   CALL FISHER_YATES_SHAFFLE(対象リスト)

   FOR LOCAL:0, 0, BATTLE_COMMANDER_NUM:対象側
     ;安全弁
     SIF SHAFFLE_ARRAY:LOCAL > BATTLE_COMMANDER_NUM:対象側
       CONTINUE
     SIF BATTLE_SKILL_SEALED:対象側:(シャッフル保存:LOCAL) && !BATTLE_武闘:対象側:(シャッフル保存:LOCAL)
       CONTINUE
     シャッフル保存:LOCAL = SHAFFLE_ARRAY:LOCAL
   NEXT
   COMBAT_SKILL_TARGET = シャッフル保存:LOCAL
ENDIF
CALL SKILL_ASSASINATE(対象側, COMBAT_SKILL_TARGET)

659あなたの名前を入力してください:2023/05/09(火) 11:26:56 ID:.1XNm7wk
憶測でキツメになってすまんけど、配列回りの理解が怪しくみえる
・対象リストの段階で、対象リスト:0 に上書きしていてリストになってない
・バリアントにもよるだろうけど、[ @FISHER_YATES_SHAFFLE ] 手元のtohoKだと用途がそもそも違う
・COMBAT_SKILL_TARGET で LOCAL は{BATTLE_COMMANDER_NUM:対象側 +1}であり、シャッフル保存のその部分には多分なにも入ってない
 結果対象側の最初のキャラに誤爆してるのではなかろうか
・BATTLE_SKILL_SEALED:対象側:(-1)は範囲外ですエラー落ち発生してないかな 一人/二人/三人部隊が混ざった時

660あなたの名前を入力してください:2023/05/09(火) 11:46:52 ID:.1XNm7wk
COMBAT_SKILL_TARGET = シャッフル保存:LOCAL の次行に以下を入れればデバッグモードで候補一覧がつらつらと表示されます
クラ落ちするようなら PRINTFORM %CALLNAME〜 の行はコメントアウトを。

[IF_DEBUG]
PRINTFORML タグ持ち対象キャラ 
FOR LOCAL:1, 0, 10
 SIF シャッフル保存:(LOCAL:1) == -1
  CONTINUE
 PRINTFORM キャラNo:{シャッフル保存:(LOCAL:1)}
 PRINTFORM %CALLNAME:(BATTLE_COMMANDER:対象側:(シャッフル保存:(LOCAL:1)))%
NEXT
PRINTW
[ENDIF]

661あなたの名前を入力してください:2023/05/09(火) 12:32:52 ID:d//5i.zk
その都度printform挟んで動きを止めて、中に入ってる数値を繰り返しチェックして回したので、エラーも出ませんしちゃんと動きますよー

662あなたの名前を入力してください:2023/05/09(火) 15:46:48 ID:d//5i.zk
と思って新規プレイデータで再デバック始めた途端にだめでした…なんてこった。前のデータはなんだったんだろ
660のデータを挟んでやってみます

663あなたの名前を入力してください:2023/05/26(金) 07:21:29 ID:eZa3SUQU
【質問】
・質問内容
 内輪向けに小規模なオリジナルのバリアントを制作しようとしているのですが、
 ベースにするのにいいバリアントはありますか?
 以下の条件で考えています。
  -口上の対応はなし
  -元ネタの要素は削除する
  -通常モードとエンドレスモードのみ
  -特別なエンディング分岐も考えない(あっても通常のハーレムエンドのみ)
 古いユーザーなのでeratohoRR1317等は手元にありますが、流石にレガシーすぎると考えています。

664あなたの名前を入力してください:2023/05/28(日) 23:26:19 ID:pt3h1nIo
奴隷監禁調教バリアントでパチュロダ3号機やeraロダ3号機に(も)置いてある物としてはeratohoYMAEMやeraVoiceroidAなどがあるみたいだけどベースとして適切かどうかは不明ですなあ
あるいはeramakerや古いEmueraで動いているバリアントを新しいEmueraで動かせば従来より快適になる可能性もあるけど、互換性に関する設定を変更するだけでは足りずにERBファイルを書き換える必要が生じる物もあるかもしれない

665あなたの名前を入力してください:2023/05/31(水) 18:28:47 ID:/wgNqzpM
>664
そうですか、ありがとうございます。

666あなたの名前を入力してください:2023/07/12(水) 18:44:06 ID:52f4SVnU
ちょっと聞きたいんですが

VARSET DITEMTYPE:0

ってした場合DITEMTYPE:1〜の中身も全部0になっちゃう?

667あなたの名前を入力してください:2023/07/12(水) 19:22:10 ID:r9QoLkOk
>>666
EmueraWiki見てって言いたかったけどなんか繋がらないな…
VARSETはDITEMTYPEとかの非キャラクタ多次元配列変数を対象にした場合、
第三引数以降の範囲指定すら無視して常に配列全体に代入される仕様

668あなたの名前を入力してください:2023/07/12(水) 19:36:03 ID:52f4SVnU
OSDNはなんか最近ずっとつながりにくいです。
読んでもわかりにくかったから聞いたんだけど結局試して確認しました。ありがとうございます。
そもそもVARSET DITEMTPYE:0:0って書かないとエラー出ちゃうのね。
その上VARSET DITEMTPYE:1:0って書いても結果は同じと

ってことは多次元配列で特定の配列の一部だけまとめて消したいときはFOR〜NEXTとか使うしかないのかな

669ジンバブエ ◆rw2NXmNKnQ:2023/10/25(水) 11:26:17 ID:k5zTdEAQ
お久しぶりに開発で詰まったので来ました
命令に関する質問なのですが、BEGINという命令の中身を見る方法はありますでしょうか?
TWや紅魔館NTRではすでにこの命令でターンの処理がひとまとめにされていて、
過去紅魔館ではCALL TRAIN_MAIN_LOOPを使ってターンのの動きを処理していました

670あなたの名前を入力してください:2023/10/25(水) 15:49:40 ID:pW/TwlEI
Emuera wikiの処理フローの流れ見るのが一番いいよ

671あなたの名前を入力してください:2023/11/28(火) 06:45:54 ID:H4j0rFVk
口上のネタってどう探したらいいかな
有名なネタとかは既に擦られていることが多いし
あんまり天丼みたいになるのはよくないと思うんだけど

672あなたの名前を入力してください:2023/11/28(火) 18:13:42 ID:LqpyXGxg
フランス書院?

673あなたの名前を入力してください:2023/11/29(水) 06:10:00 ID:UJ76oQYM
やっぱり書き分けにはインプットを増やすしかないのか
口上実装に穴ぼこ出来てるバリアントが多いから、とりあえず埋めてけば別人版の土台くらいにはなるかと思ったんだけど

674あなたの名前を入力してください:2023/11/29(水) 09:33:19 ID:w.mZoAtQ
口上の書き方なんてベース反応にキャラの口調で書き分けるぐらいでいいんだよ
Addその日の気持ちのノリ具合で加筆すればええ(update)

675あなたの名前を入力してください:2023/11/29(水) 15:12:04 ID:9HB3AIiE
とりあえず感じて来たら舌っ足らずにすると楽

……どれも同じになってあれだが


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

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