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

【エミュレータ】Emueraスレ【+1】

273260:2021/03/10(水) 18:07:07 ID:HSNkGH22
トロイ検出騒動で鯖全体にまで悪影響が及ぶようになったらしいので取り下げました
もうこりごり…

274あなたの名前を入力してください:2021/03/11(木) 00:11:53 ID:kOs6NiE.
雑談スレでは「同じユーザーとパスが不特定多数に使われてるからパスお漏らしするサイトとして扱われてる可能性がある」とか言われてますが、Emuera実行ファイルのせいでロダに悪影響というのもどこかで言われてるんでしょうか?
セキュリティ対策ソフトがEmuera実行ファイルに文句付けてくるのは過去にも発生事例がありますね
せっかくの修正内容が公開取り下げになってしまうのはもったいないので何とかできるものなら何とかしたい

275260:2021/03/11(木) 22:20:25 ID:ps.Vcuqg
アンチウイルスソフト業界はダウンロード鯖ランキングリスト持ってて、今回私のバイナリがトロイ入り(となった)ので鯖のスコアを大きく悪くしたってことです
>>274 の言うように、今回初めてではなくて元々スコア悪い鯖扱いになってた様なので、今般 Avastとかいくつかでは監視リスト入り濃厚っぽい
一手遅かったけどバイナリは自主的に消したので、しばらく落ち着くのを待ってれば鯖スコアも回復する…と思いたい

配布バイナリに耐ディスアセンブルや難読化等の改変対策してなかったのは私のミス
で、最初引っ掛かりまくった物の VirusTotal での指摘によると、悪い点は Emuera 単体起動したときに Emuera.config などを吐くこと (元々)、ほか
Emuera にある、許可なく *ファイルを書き出す機能* が減点対象みたいですが、
本体側にUACやアクセス権とか仕様にかかわる変更が必要になる様なので私は白旗

276260:2021/03/19(金) 17:19:09 ID:6DYB3.kQ
この前の書き込みから放置プレイするのもあれなので、ほとぼり冷めた?くらいに Update ver 0.5.0 上げます

Emuera1.824+v11+webP v0.5.0(Secure対策版)
ソースのアップが主目的、バイナリは暗号化 7z になってます
http://book-shelf-end.com/up/dwlink.cgi?eraRx2231.7z

・webp読み込み周り安定化した…はずです
・webpのGCREATEFROMFILE() 周り安定化しました…と思います
・起動時、ディレクトリ権限&CSV・ERBディレクトリ有無を確認し、特にオプションがなければ、(コンフィグファイルやポップアップを吐かず)即終了
・いくえふめい…になってたReadme類をDocs添付
・バイナリの難読化 & libwebp のパッチ:セキュリティ対策ですがおまけ処置

権限チェック回りが難しくて、多分特定のWindows環境固有の実装だろうと思われます。これ以上は詳しい人に任せます

277あなたの名前を入力してください:2021/03/21(日) 00:17:10 ID:Zs5CstMs
>>276
まずはアップローダーに新しいファイルが置かれたことを嬉しく思います
+Secureのほうは、Emueraの設定を開こうとすると例外が発生する?みたいですが最初から発生していたのか途中から発生するようになったのかよく覚えてません
ところで、今回アップロードされた実行ファイルそのものはまだVirusTotalでチェックされてない感じなんですかね
(同じソースでもリビルドすると実行ファイルのハッシュは変化したりするので、等価の物は既にチェックされてるのかもしれませんが)

ちなみに自分は、libwebp_x64.dllやlibwebp_x86.dllという名前の外部ファイルの中身を実行するのはセキュリティ上のリスクと見なされるかもしれないのでlibwebp相当の処理を行うC#のソースがあればいいのかな、と思って何かやってたけど何の成果も得られませんでした

278あなたの名前を入力してください:2021/06/06(日) 03:41:01 ID:cePTN0ls
そういえばemuera側でcsvを作成って実装できたりしますか?
バリアントにオリジナルキャラ追加をゲーム画面でできるの提供できると面白そうだなと

279あなたの名前を入力してください:2021/06/06(日) 12:00:08 ID:HOy/u1bw
1番欲しい機能はFUNCTION関数をTRYCALLFORMする機能かな

280あなたの名前を入力してください:2021/06/06(日) 12:14:49 ID:QvtGR9rw
ERBからCSVのキャラ追加ってこと?
バグ出そうで怖いなぁ

CSV同様のデータを追加したいなら普通にADDVOIDCHARAしてNOを設定するだけでいけそうな気もするし
CSVにこだわらないならLOADTEXT/SAVETEXTで保存すればいけるか?

281あなたの名前を入力してください:2021/06/06(日) 15:25:01 ID:cePTN0ls
1ゲームを長くやるならともかく周回するような遊び方だとcsv作りたいのでaddchara系はあんまりですね……
10や20周同じキャラで周回とかオリジナルキャラを複数人追加して周回、みたいな遊び方には向きませんので

各自で作るにしてもバリアントが多様化してきてcsvがバリアントごとに追加の仕方微妙に違ってきているので
中身見ないと追加しにくいよりは直感的に作れるほうが好ましいし、キャラメイクそのものをゲームに組み込めそうだなと

282あなたの名前を入力してください:2021/06/06(日) 16:20:50 ID:2Zin1Qpw
昔、同じこと考えたなあ
要はCSV・ERBジェネレーターみたいなのが作れたらなと
Emuera側でポチポチするだけでCSV作れたら
バリアントによってはプレイヤーが手軽にオリキャラ持ち寄れるんじゃないかなみたいな

283あなたの名前を入力してください:2021/06/06(日) 16:39:37 ID:HsZmTquE
CSVの内容をEmueraの画面で出力して、ログをCSVファイルに保存させる形でやってたバリアントはある
今ならSAVETEXTで出力して拡張子を変えてねで済むかな
CSV形式にこだわらないなら、SAVECHARA/LOADCHARAでdatファイルに保存で済むのでは

284あなたの名前を入力してください:2021/06/06(日) 19:04:52 ID:cePTN0ls
CSVで調べていたからSAVECHARA/LOADCHARAはwikiでチェックしていなかったので
今制作しているものが終わったらいじってみます

285あなたの名前を入力してください:2021/06/06(日) 19:44:53 ID:HOy/u1bw
TWのモブ子セーブロードに使われてるね

286あなたの名前を入力してください:2021/06/08(火) 14:52:53 ID:TLkiUi4w
ここで質問していいのかわからないのですが、
INPUTMOUSEKEYでマウスの入力と、画面上に出力したボタンからの入力を同時に受け付ける方法ってあるのでしょうか?
マウスホイールでのステータス画面スクロールを実装したいと思いご教示いただきたく。

287あなたの名前を入力してください:2021/06/10(木) 00:08:26 ID:e2NKxmO.
>>286
RanceKのEmueraを使ってみてもいいのかな…… どうなのかな……
https://jbbs.shitaraba.net/bbs/read.cgi/otaku/16783/1595116469/457

288286:2021/06/10(木) 14:45:47 ID:DwU2fIQo
>>287
ありがとうございます。うーん、emuera本体をいじる必要がありそうですね。自分はパッチだけ弄ってる側なので今回は見送ることにします。

289あなたの名前を入力してください:2021/07/10(土) 03:25:11 ID:h60FpsDM
バイナリの取得場所がダークウェブ(パス入れないと入れず、検索エンジンからたどれない)のみなのが一番まずそう
なるほどたしかにexe系はちゃんと明るい場所に置かないとチェックできないと・・・

290あなたの名前を入力してください:2021/07/10(土) 20:33:52 ID:35eNoZEE
急に的外れなこと言い出してどうしたの

291あなたの名前を入力してください:2021/07/10(土) 20:42:13 ID:Qn9kCBpM
eratohoスレでアンチウイルスソフトがemuera.exeを弾いてしまうのでアップローダ上のzipファイルに含めるか否かで議論になってたけどその関係かな

292あなたの名前を入力してください:2021/09/04(土) 13:52:05 ID:HdZgv6Mg
すいません、質問です
以下のように関数ローカルで定数きった場合、続く配列宣言でその定数を認識してくれないのですが、これは仕様でしょうか
UserVars見る限りではいずれもERH内という限定がないので、いけそうに思ったのですが
>1次元配列変数を定義する際に変数名の前にCONSTを入れると、1次元配列の定数が定義されます。
><要素数>はすべて1〜1000000の範囲内の任意の整数または定数式です。省略した場合、1となります。

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

293あなたの名前を入力してください:2021/09/06(月) 16:17:20 ID:UH5eeMCI
>>292
さっとコードを眺めた感じ、確かにエラーになりますね
弄り倒せるかどうかは調べてみないと何ともです

294妊)|д゚):2021/09/06(月) 16:21:24 ID:UH5eeMCI
おっと、つけるの忘れてた

295妊)|д゚):2021/09/13(月) 02:03:48 ID:Z7vYOd3Q
かなり環境依存かと思いますが.NetアプリとATOKで相性が出るみたいです
Emueraでも短時間で入力が連続した場合に落ちることがあります(手元で散々出てる

まあ、かなりエッジケースなので再現する人は少ないとは思いますが念のため告知
(Emuera側でどうこうできる案件ではないので対応は不可能かと思います)

296あなたの名前を入力してください:2021/09/18(土) 03:28:05 ID:15P/Ir1s
Atok側でAtikインサイトをOFFにしましょう

297あなたの名前を入力してください:2021/09/18(土) 14:42:10 ID:T46GHJW.
>>294
ありがとうございます
可能ならば、修正いただけると助かります

298妊)|д゚):2021/09/19(日) 00:09:03 ID:qaH4XKMA
>>296
OFFでも再現したので対処法にはなりませんでした
現状はEmuera起動時はATOKを使わない、しかないでしょう

299妊)|д゚):2021/10/12(火) 22:32:23 ID:8xRFF39k
Win11がリリースされて少し経ったので、Emuera絡みを

.Net Framework 4.8が普通に入ってるので特段影響はないかと思います

一応、手元では.Net5以降への移植はできてはいますが、
これは完全に個人的なお遊びの範疇なのと、配布ファイルが色々不便な形態になるので
現在のところ、.Net5以降に移行する予定はありません

300あなたの名前を入力してください:2021/10/13(水) 10:23:15 ID:a0ZsqD/s
emueraの場合、windows api 使ってるから、.net5系統に移植してもあまり美味しくなかったりする?

301妊)|д゚):2021/10/14(木) 00:07:20 ID:NQmUlKVk
>>300
OS依存バリバリなので、そもそも多プラットフォーム展開できないですからねぇ
(すべてのOS用に処理を分岐させれば不可能ではないが、Windows依存コードが最低でも200ヶ所以上はあるので、現実的ではないどころの騒ぎではない)
後は配布面でのデメリットも大きいので、移行するメリットがない感じですね

302あなたの名前を入力してください:2021/10/14(木) 00:33:53 ID:/sGtGwLE
uEmueraはAndroidで動作してるけどソースを多数書き換えてUnity用のファイルも追加されてるみたいだし、未実装機能などもあるみたいですね
Windows向けビルドを作ってもEXEファイル1個だけではなく他のファイル群も一緒に配布しないと実行できないみたいですし

303あなたの名前を入力してください:2021/10/14(木) 00:59:45 ID:RG0BIGL.
Unity用のファイルが追加というよりUnityをベースとして作ってるのかも?
ウディタをSwitchに移植するのもUnity上でやりくりしてるなんて話あるし、Unityだとエミュレーションがやりやすいんだろうな

304あなたの名前を入力してください:2021/10/14(木) 02:21:06 ID:woxkVGW2
(.Net4→Unityは同言語・別フレームワークへの移植じゃないかなー)

305あなたの名前を入力してください:2021/10/14(木) 03:15:16 ID:8Tg19n.2
構文解析まわりが流用できても、表示関係は全部作り直しなんだろーなー

306あなたの名前を入力してください:2021/10/17(日) 14:13:02 ID:TF464/fI
随分前に妊)|д゚)さんかemuの人さんにセーブに記録される変数のサイズは大きくなる方には互換性ある(配列のサイズとか)と聞いた記憶が有るんじゃが
その認識で問題ないどす?

307あなたの名前を入力してください:2021/10/24(日) 10:41:34 ID:/xg64oQw
そもそも「表示関係は作り直し」とかそういうレベルではなく
内部で表示関係が切り分けされてなかったり内部の処理でWindowsに無自覚に依存してたりしてるからかなり苦しいよ

308あなたの名前を入力してください:2021/10/24(日) 21:29:11 ID:YBQNeG9g
表示関係の処理きちんと切り離そうにも、なんなら完全に一から実装し直した方が早いんじゃないかまであるくらい
内部まで表示関係が食い込んたりする

309あなたの名前を入力してください:2021/10/25(月) 12:48:37 ID:ZLumrMvc
でも1から構文解析まで作り直そうっていうなら今度エディタ連携とかLintとかも出来るように最近はやりのアプローチで解析木作ってほしいとか欲望が沸きあがってしまう…

310妊)|д゚):2021/10/26(火) 22:08:34 ID:pmK0iwCM
そこまでやるんだったら、もう言語1から作り直せよ案件

311妊)|д゚):2021/10/26(火) 22:19:55 ID:pmK0iwCM
で何となく

○1824+v12
https://ux.getuploader.com/ninnohito/download/478

・何かADDSPCHARAの動作が怪しいらしいので変っぽいところをとりあえずいじってみた
・コードを保持するとメモリ喰いすぎるので、保持せずにエラー時にファイルから読み出すように変更

多分これぐらいだと思う(色々遊んでたので何か変わってても文句言えない案件

312あなたの名前を入力してください:2021/10/26(火) 22:19:56 ID:FqEkuGLE
妊の人きた、これで勝つる
という訳ですみませんが良かったら>>306の質問にも回答頂けると大変助かるます

313妊)|д゚):2021/10/26(火) 22:21:56 ID:pmK0iwCM
>>312
セーブデータの読み出しについてならYesですね
元々配列はデータが入ってるところまでのみ保存する仕様なので、大きくなる分はそこはデータ無しという扱いになるので互換性が維持されます
逆は…試したことないけど多分チェックしてないと思ったからエラーか例外になりそう

314あなたの名前を入力してください:2021/10/26(火) 22:22:42 ID:FqEkuGLE
>>313
|ω・)��゙ ㌧トトト㌧㌧

315あなたの名前を入力してください:2021/10/27(水) 00:07:40 ID:HSzPI/4M
妊の人おつ
自分で実装する気がないから気楽に言うけど、仮にやり直すならBASIC系よりも、もう少しC系の文法に寄せたいよね

316あなたの名前を入力してください:2021/10/27(水) 00:09:48 ID:i.qa2B2s
>>311
更新乙です
>・コードを保持するとメモリ喰いすぎるので、保持せずにエラー時にファイルから読み出すように変更
ということは、起動後にファイル上書きするとメッセージ内容ズレるのか
上書きする方が悪いのはわかるけど、ちと不安

317あなたの名前を入力してください:2021/11/09(火) 12:50:19 ID:nqPeoTuU
ちょっと前に出てた.Net5移行の移植に関して個人でやろうと思ってる話を
なんかちょっと前に話だけ聞いたけどそんなもの夢物語でマジで実現なんてできないだろうって甘く見てた.Net MAUI(WinFormsみたいなUIツールをマルチプラットフォームに動作できる形で提供するプロジェクト)が実現しそうなので
それが正式リリースきたらちょっと試しに触ってみるね…配布についてちょっと面倒は出るけど少なくてもWinだけじゃなくMacでもうごくようになるとかは少ないながら今では実現できない需要あるだろうし…

318あなたの名前を入力してください:2021/11/09(火) 19:14:19 ID:qeU5decc
マイナーバグ報告。スキップブロック、完全にスキップしてない…
こういうところの処理を枝刈りしたら早く&軽くなりません?

【対象】
Emuera1824+v11
【現象】
[SKIPSTART]〜[SKIPEND]ブロック間にC言語のソースを記入 (多段 {} が使用されている )するとパースエラーが出る
C言語に限らず、C#、js、powershellなど、{}をブロックに使用する言語で発生する。
エラーメッセージは以下。ファイル名・行番号報告なし

MinorShift.Emuera.Sub.CodeEE:予期しない行連結記号'}'が見つかりました
ERBコードに解釈不可能な行があるためEmueraを終了します
※互換性オプション「解釈不可能な行があっても実行する」により強制的に動作させることができます
emuera.logにログを出力します
※※※ログファイルをemuera.logに出力しました※※※
エンターキーもしくはクリックで終了します

319妊)|д゚):2021/11/09(火) 21:23:55 ID:93FYgq6U
○1824+v13
https://ux.getuploader.com/ninnohito/download/479

>>318修正

320あなたの名前を入力してください:2021/11/09(火) 21:39:43 ID:k1lUGqGs
>>319
お早い対応乙です

321あなたの名前を入力してください:2021/11/09(火) 23:09:32 ID:qeU5decc
妊の人、素早い修正どもです
>>318 修正OKでした

メモリ問題はパース時のオブジェクトnewで、1オブジェクトが(.NET Frameworkの)Gen2入り判定とされる85kBを超えるので、すぐにGCされないゴミが溜まっていくからのようです
v11→v12で少し改善してますが、C++のBoost HASHライブラリだと 数百M〜1GB 前後でパフォーマンスが悪化するらしいので、適度な強制GCは必要かもしれません
一定数のファイル・関数数以上の場合、ファイルをパースし終わるたびに GC.Collect(2,GCCollectionMode.Optimized,false); を入れてみますか?

322妊)|д゚):2021/11/10(水) 09:32:02 ID:ZnnV3bmg
現実、ロード完了時に一番強いGC.Collect()して全部掃きだしてこれなんですよね

単純に行の解析済みデータのサイズが大きいのが問題という感じで、
メモリ使用量はここの再設計なしでは圧縮は難しそうです

323あなたの名前を入力してください:2021/11/11(木) 21:52:51 ID:kZ23/KU6
すみません、ここで聞いたら良い質問かどうかわからないんですが
Wikiを見るとローカル変数LOCALとLOCALSは廃止されたとあるのですが、
実際のバリアントを見ると今でもLOCALやLOCALSが普通に今でも使われています。
過去ログの議論を見ても実際に廃止にしたという話は見た限りではありませんでした。
実際問題現状ではどのような扱いになっているんでしょうか?

324あなたの名前を入力してください:2021/11/11(木) 22:05:12 ID:jIMyECB2
今でも廃止されてはないし、使えるけど、古い機能なので非推奨。
#DIMや#DIMSで変数定義して使うのが推奨されるやり方。
Obsoleteだし将来的に廃止される可能性はあるけど、実際問題としてまだまだ広く使われてるし
そう簡単には廃止されないと思われ

325あなたの名前を入力してください:2021/11/11(木) 23:34:41 ID:dHPoDVfM
obsoleteってよりはdeprecatedという雰囲気ではある
まぁ新規で作るなら使わないに越したことはない

326あなたの名前を入力してください:2021/11/11(木) 23:45:29 ID:/2YsLxkg
#DIMや#DIMSで困らないでしょうしね

327あなたの名前を入力してください:2021/11/22(月) 18:10:55 ID:23R4GUP.
正直出来ることならすでにあるLOCALやLOCALSを使った全ての変数をちゃんと#DIMや#DIMSで置き換えたい…
LOCALをちゃんとプログラミング的な配列として使ってる分にはいいんだけどera界隈は歴史的事情で一つの配列に全く別の意味の数字を入れるからコード読みづらくてメンテ性が…

328あなたの名前を入力してください:2021/11/24(水) 11:20:38 ID:Q411JnG2
>>327
それを成功させてるバリアントはいくつかあるので根気次第だ

329妊)|д゚):2021/11/28(日) 00:33:29 ID:zfpZZuvg
メモリ使用量をちょっとだけ減らすテクニックはあるが、若干パフォーマンスと引き換えになるのが難しいところだのぉ…

330あなたの名前を入力してください:2021/11/28(日) 00:37:48 ID:y9N7oFQU
eraBIOSから起動するEmueraOSの完成が待たれる

331妊)|д゚):2021/11/28(日) 01:25:29 ID:zfpZZuvg
理想論的には静的変数は全部連想配列的に扱うのが一番メモリの無駄が少ない気はするが、
パフォーマンスがかなり厳しい気がしないでもないがはてさて

332あなたの名前を入力してください:2021/11/28(日) 09:34:25 ID:OIcybwZg
パフォーマンス犠牲にしてメモリ使用量少し減らすくらいなら現行のままでいい気もする

333あなたの名前を入力してください:2021/11/29(月) 21:52:08 ID:Kan1dNi.
一部のバリアントは、少しなんてレベルじゃなく大きく複雑になっていますから。
プラグインになっている関数が非常に多いので、先日の対処があってもいずれヒープかスタックか、Framework の仕様限界が来て起動不能になると思います。

懸念があるのは一部の大型バリアントでしょうから、オプションで関数用変数やobsolute系変数など一部からDictionary・HashTable・DBなどを試行しては?
あと、破棄できる静的変数は積極的に破棄していいと思います (必ず初期化されていて、構文木的にさほど使われないものとか)

/// それ以前に、GetFilesでのファイル列挙時と読み込みforループ時に、ウインドウメッセージを処理できていない時間が長いのはよくないです
/// 読み込み途中で再起動するとウインドウ表示は無いけれどプロセスだけ一時的に残っちゃう時が…

334あなたの名前を入力してください:2021/11/30(火) 01:53:21 ID:IzYpg0fI
業務アプリでもないのですからロード中のハングなど些事でしてよ
LogicalLineとInstructionLineで削れるメンバの目星は付きますが、この構造を弄るとなるとそれなりの範囲でコード修正が必要ですわね
とはいえここを見直す以外に大きくメモリ消費を減らすのは厳しいので少しずつ手を入れるしかありませんわね

335あなたの名前を入力してください:2021/12/05(日) 03:39:32 ID:hQRn.Tso
バグ報告です。1824+v13(>>319)で確認
デバッグウィンドウのコンソールで、以下のように変数と定数を==で比較した場合、本来は比較として処理されるべきところが代入として処理されているようです
(以下の結果は、全て間に処理を挟まず連続して入力しています)
なお、直接確認したのはデバッグウィンドウのみですが、ERBファイル内でも同様の挙動をしているように見えます。

ITEM:0
1
ITEM:0 == 0
ITEM:0
0
LOCAL
0
LOCAL == 1
LOCAL
1
TALENT:0
1
TALENT:0 == 0
TALENT:0
0
TALENT:ASSI:0
0
TALENT:ASSI:0 == 1
TALENT:ASSI:0
1

336あなたの名前を入力してください:2021/12/05(日) 03:43:25 ID:hQRn.Tso
失礼、
>ERBファイル内でも同様の挙動をしているように見えます。
この部分撤回します。よく見たら思ってた挙動と違った

337あなたの名前を入力してください:2021/12/05(日) 12:58:22 ID:D3rdYu.s
真か偽かを返す式として解釈できる記述ではありますが、
警告Lv0 代入演算子に"=="が使われています
に相当する記述なので代入文としての解釈も可能、そして代入文としての解釈が優先されているようですね
現状のデバッグモードで真か偽かを確認したい場合はコンソールではなく変数ウォッチのタブを使うか、 (LOCAL == 1) のように括弧を付けて記述すれば良いかと思います

338あなたの名前を入力してください:2021/12/09(木) 01:02:18 ID:EdyF5kPE
Emuera1824v13のソース弄っていての気づき事項っす

1) Config.cs の getUpdateKey() で、ローダー(GetFiles)とは別にERB&CSVファイルを列挙している
.NETの仕様上、ファイル走査・列挙はファイルシステム分以外にはキャッシュしないから二重処理になってる
getUpdateKey()用のLastWriteTime取得をデータローダーの方に持っていくか、または*.ERB、*.CSV専用の読み込み関数を用意するのは如何?

2) 同 getUpdateKey()にて無駄な配列を確保している
ファイル数だけwritetimes配列を確保する必要がないような。デバッグ用か、凝ったHASHを計算するつもりだった名残かな?

3) 各 Directory.GetFiles() + for() は、foreach(var i in Directory.EnumerateFiles()) の方がいいかも
非同期読み込みするなら別だけど、.GetFiles から ListへのCopyと待機が余分に発生する
IEnumerable() で返ってくる方が遅延評価され僅かにマシ

4) 同、foreach()しかしないんなら、戻り値/引数はList() じゃなくてIEnumerable()で
遅延評価は副作用が怖いけど…

5) Framework Verを上げるなら、Unicode制御文字に注意
4.6.*からサポートされてる双方向文字や結合文字等、UNICODE制御文字が…
STRLENSUやエスケープ関数が危ない
欧米人は絵文字に喜んでるけれど、結合文字などのインジェクションクラッキングはどう思ってるんだろうね

6) 同、ファイルパスでロングパスと代替データストリーム(ファイル名:名前)が使えるようになってる
ほか、フォルダ名に空白が許可されてたりする

339あなたの名前を入力してください:2021/12/16(木) 13:07:46 ID:G76W/RCM
>欧米人は絵文字に喜んでるけれど、結合文字などのインジェクションクラッキングはどう思ってるんだろうね
これについては欧米人でも利用者は喜んでても実装側は複雑なUnicode仕様にf○ck言ってるのよく見かけるね…ただでさえUnicodeがバイト列として取り扱えないことにうだうだ言ってた人たちだから…

340あなたの名前を入力してください:2021/12/16(木) 23:26:47 ID:dY3biUeA
追加の気づき事項っす

7) GetFiles で、再帰呼び出しの制限がない
以前に、MSやGit (MSYS2) 、アーカイブソフトなどいろんなソフトでやらかしてる件です
GetFiles() をディレクトリ以下も走査する条件で呼んだ場合、ディレクトリの深さに依存して再帰呼び出しする仕様になっている
このとき無限フォルダ生成バグや、ハードリンクによる循環などが起こっていると、スタックオーバーフローで死んじゃう…
システム側で総列挙(対策済み)または再起深さ制限した方が良い

>>339
タイムリーに、VSでUNICODE双方向文字関連のセキュリティパッチが入りましたね
UTF16やUTF32でせっかく固定長の方向だったのに、またMBCS地獄ですからね
Emueraに関しては、通称UTF-8MAC (日本語濁音・半濁音が独特のエンコードされているやつ)食わしたとき、正常に動くのだろうか?

341あなたの名前を入力してください:2021/12/17(金) 02:31:47 ID:K5RM.Ck2
Emueraが大半のファイル/ディレクトリ読み込みでカレントディレクトリを無視する挙動になっているのは何か意図がお有りなのかしら?
解析モードで他所にあるファイルを食べさせることはできるようですのでセキュリティ的にはあまり意味がなさそうですわ
複数バリアントでのテストが行いにくいので、問題がないようでしたらcd起点で処理させるようにしたいと存じ上げますわ

342あなたの名前を入力してください:2021/12/24(金) 09:34:29 ID:eu2.Ul0M
>>341
Emueraはコンソールで使うことを意図せず、なおかつそういう使い方を知らずエクスプローラーでファイルを取り扱う人にとって直感的に使えるように…
…ということは特段なくまあeramakerからの伝統にのっとり実行ファイルのディレクトリ基準で動作し続けてきました
もしもemueraがその様に動作することを求めるのであれば2つの選択肢があります
1つはemuera改造をしている人達に要求を上げることです 運よく興味を持った人が出てきたら更新されるでしょう ですがまあemueraをコンソールから叩いてる人がそんなにいるとは思えませんこの界隈
2つは自分がemuera改造に乗り出すことです 自分でフォークして改造し…メンテする 必要ならば自分で作るのが最も端的な方策でしょう

2つ目にかかわって現在のEmuera界隈について
本来ならばemueraメンテナに対してパッチを投げて取り込んでもらうというのは一つのゴールでしたが現在中心的な開発者であったemuの人が実質的引退をして妊の人が代理で保守的なバグ修正を続けている状況です
そのためいつか複数のemuera改造を取り込んでまとめ上げようという意欲的な誰かが出てくるまでは新規の機能開発については個々にメンテし続けなければいけないでしょう

343あなたの名前を入力してください:2021/12/24(金) 09:39:44 ID:eu2.Ul0M
>>340
> Emueraに関しては、通称UTF-8MAC (日本語濁音・半濁音が独特のエンコードされているやつ)食わしたとき、正常に動くのだろうか?
ここについてはぶっちゃけEmuera内部では.Netのエンコーダに食わせて表示するときも.Netに食わせてレンダリングしてるだけだからそっちの実装次第かなぁ…
ただ濁音半濁音のせいでEmuera自体のコードで具合が出るかというと構文はほとんどがASCIIの範囲内で解決しているから.Netがそれを正しく取り扱えるのなら動くんじゃないかな

344あなたの名前を入力してください:2021/12/24(金) 21:00:47 ID:IIGECoNw
UTF-8MACと同等かは知らないけど、UTF-8でNFDの濁点文字を食わせてみた
結果としては「フォントによる」という感じで、
手元では游ゴシックだとほぼ問題なく表示されるけどメイリオだとダメだった

結合文字の濁点が使えれば喘ぎ声に使えて良いなぁと思ったんだけど、実用は厳しそう

345あなたの名前を入力してください:2021/12/25(土) 22:35:27 ID:j4aisRHk
.NET例外によるクラッシュです。以下長文也

〔対象〕 Emuera1824+v13
〔環境〕 Windows 11 Home 21H2 22000.376 / .Net Framework 4.8
【問題】
1, 「resourceディレクトリ」 に 「拡張子の最初の三文字がcsv」 (例: badfile.csvx) というファイルがあると、csvとして読み込んでしまう。
2, CSVに対する警告エラー表示のために行内容 を取得する際、ハンドル外例外 System.IO.FileNotFoundException が出力されクラッシュしてしまう。

【エラーログ】
警告Lv1:badfile.csvx:3行目:指定された画像ファイルが見つかりませんでした:;L.LMKNBJVHCGYIUHIOJLKMNNB NCGVYIHUIOJK;MN
予期しないエラーが発生しました:Emuera1824+v13
System.IO.FileNotFoundException:ファイル 'C:\XXX\XXXXX\x\XX\XXXX\era\erb\badfile.csvx' が見つかりませんでした。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
場所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
場所 System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
場所 System.IO.StreamReader..ctor(String path, Encoding encoding)
場所 System.IO.File.ReadLines(String path, Encoding encoding)
場所 MinorShift.Emuera.GameProc.Process.getRawTextFormFilewithLine(ScriptPosition position)
場所 MinorShift.Emuera.GameProc.Process.printRawLine(ScriptPosition position)
場所 MinorShift.Emuera.GameView.EmueraConsole.PrintWarning(String str, ScriptPosition position, Int32 level)
場所 MinorShift.Emuera.ParserMediator.FlushWarningList()
場所 MinorShift.Emuera.GameProc.Process.Initialize()
初期化中に致命的なエラーが発生したため処理を終了しました
※※※ログファイルをemuera.logに出力しました※※※

【原因&対処】
1 過去からあった模様。リソースCSV読み込みに Config.GetFiles() ではなく、System.IO.Directory.GetFiles() を直接呼んでいて、拡張子のチェック漏れ。

2 クラッシュはソースを保持しなくなった変更の影響のよう。
GameProc\Process.cs 内 getRawTextFormFilewithLine() のファイル読み込みがErbDir決め打ちになっていて、またファイル存在チェックをしていないため。
今の仕様では position (ScriptPosition) がフルパスまたは「Exeからの」相対パスを保持していないので、再スキャンが必要。

if ((position?.LineNo ?? 0) <= 0) return "";
//try {
var filepath = Directory.EnumerateFiles(Program.ExeDir, Path.GetFileName(position.Filename), SearchOption.AllDirectories)
.FirstOrDefault(cond => cond.IndexOf(position.Filename, 0, StringComparison.OrdinalIgnoreCase) > -1);
if (string.IsNullOrEmpty(filepath)) return $"<<File {position.Filename} not found.>>";
return File.ReadLines(/*Program.ErbDir + position.Filename*/ filepath, Config.Encode).DefaultIfEmpty("").ElementAtOrDefault(position.LineNo - 1) ?? "";
//} 以下catch節


オープンなとこでForkしてる人もいるわけですが、EraはOSSよりリアルでの炎上延焼リスクが大きいですからね
細々と、手前味噌でやるのがいいんじゃないかと

346妊)|д゚):2022/02/16(水) 17:15:21 ID:ledALMn.
○1824+v14
https://ux.getuploader.com/ninnohito/download/480

・手元ではとっくに直してたけど、他になんか出てきたら面倒だなぁで寝かせてた>>345の単純な修正

347あなたの名前を入力してください:2022/02/16(水) 22:44:59 ID:KvIN9qkA
ERBって文法上の理由で構文の静的解析が完全にはできなくて
実行時じゃないと確定しない場合があるとかなんとかあった気がするんだけどどういうの書いたときだっけ

348あなたの名前を入力してください:2022/03/17(木) 22:02:25 ID:sS3qieYs
文法上の理由というのはわからないけど、同名ルーチンが複数のファイルにある時にどれが呼び出されるんだと思った覚えがあるなあ
調べてないからわからないけど多分OSのファイルシステム検索順で決まってるんじゃないかという気はした

349あなたの名前を入力してください:2022/03/19(土) 16:07:45 ID:98imkZM.
>>347
HOGE=1+1
いや冗談じゃなくこの構文ですらHOGEが文字列変数か整数変数かという情報がないと構文解析できない

350あなたの名前を入力してください:2022/03/20(日) 07:40:31 ID:.IwhNRQM
11か2じゃないの?で、文字列操作にそんな構文があるならPRINT文のバリアント要る?

351あなたの名前を入力してください:2022/03/30(水) 19:36:06 ID:Xwo/.nHw
定義型変数がintegerなのかcharacterなのか宣言しなければ機械語的にそれがなんなのかわからないのは普通じゃね?

352あなたの名前を入力してください:2022/03/30(水) 22:40:15 ID:rQ9AvgsI
言語によるけど、文字列連結演算子と数値加算演算子で別の文字使ってたりすると定まるでしょ
パッと思いつくのはPerlぐらいしかないけど、数値加算は + だけど文字列連結は . 使うみたいなやつ

353あなたの名前を入力してください:2022/03/30(水) 23:19:40 ID:tiCWYo7I
文字列をクォーテーションで括る必要あっても定まりそう

354あなたの名前を入力してください:2022/04/01(金) 22:09:41 ID:nlRpu1js
>>351
真面目に説明するが違う
より正確に言うならPRINTとか文字列変数への代入がリテラルではなく生文字列を要求するところが違う
世の中のおおよその言語とかだとさっきの事例は
HOGE="1+1"とかHOGE='1'+'1'とかHOGE=1+1とか
この様にして型を判別する前から、それが文字列であるか数字であるかにかかわらず構文を解析できる
勿論HOGE="1"+1みたいな型が整合しない式もあるが構文解析の段階ではそれを正しく解析できるしそれをはじくのは解析した後に型の検証をする際の話だ

355あなたの名前を入力してください:2022/04/01(金) 22:12:04 ID:nlRpu1js
>>350
そしてこれも間違っている
文字列変数だった場合
HOGE'="1+1"
文字列変数への代入は生文字列だから連結してくれたりはしない

356あなたの名前を入力してください:2022/04/03(日) 00:22:47 ID:b63BFHtE
そもそもHOGEが代入不可の何らかである可能性が否定できない
広域変数宣言、#DEFINEマクロ、関数の多重宣言、あるいはこの式が特殊な関数に記述/呼び出しされている場合などの可能性を考えると、
おおよそ全てを読み込み(=実行)してみるまで確定できない

357妊)|д゚):2022/04/13(水) 21:59:39 ID:NwC8N5KE
○1824+v15
https://ux.getuploader.com/ninnohito/download/481

・LOADTEXTがあまりに致命的な面倒事を引き起こす原因になってくれてるのを修正

358あなたの名前を入力してください:2022/04/19(火) 20:29:00 ID:Jl1mLjhM
eraAWT自宅hybrid版 ver.1.0.4で、本体に同梱されているEmuera1824+v5では問題ないけどEmuera1824+v15に差し替えたらカスタムキャラやマップエディタのロードが正常動作しないようですね
とりあえず
REPLACE RESULTS:0, UNICODE(13) + UNICODE(10), "/"
の次の行に
REPLACE RESULTS:0, UNICODE(10), "/"
を追加すればv5でもv15でも正常動作しそうな感じかな

359妊)|д゚):2022/04/21(木) 21:43:37 ID:hV3jHlQ2
前後を見てないけど、LOADTEXTで読みこんだ文字列の改行コードを手動でいじってる感じの処理だから、変更点の影響がもろに出る処理になってますね

簡単に言えば、v15ではLOADTEXTで読みこんだテキストの\rを殺してる(Emueraの文字列変数と同様の扱い)ので、
v15以降は改行コードは\nだけ考えればOKになります

360妊)|д゚):2022/04/21(木) 21:47:55 ID:hV3jHlQ2
で、なぜこの挙動変更をしたかというと、
TextRendererのみ、\rがあると、そこで描画が1行下にずれてしまうという挙動をしてしまうので、
描画形式によって違いが生じない様にするためになります

361あなたの名前を入力してください:2022/04/21(木) 23:58:16 ID:TRSya166
つまり、MacOS9以前で作られた複数行テキストファイルを読み込ませたら改行が削除されて長い1行になってしまうということですね。
誰もやらないと思うけど。

362妊)|д゚):2022/04/23(土) 10:54:06 ID:WKzYQxCU
>>361
そこらへんが問題になるようなら、それはそれでまた考えたいところ
(おそらく、単独\rを\nに差し替えるだけでいいだろうけど

363あなたの名前を入力してください:2022/05/03(火) 01:12:09 ID:gbb8VsdM
eratoho総合スレのInt.MinValueの絶対値は、THROWにしてしまってERBで対応させるべきだとおもう。
emuera本体でごちゃごちゃ変に例外的な処理入れるのよくないよ・・・

364あなたの名前を入力してください:2022/05/03(火) 12:40:28 ID:LA/0h29I
tohoTWが使ってるのは野良改造版だから、ここでは妊の人のEmueraの話ですね
少なくとも、.NETの例外をお漏らししてるから本体側に手当てが必要かと

類似案件で、エラーは出ないものの(-__INT_MIN__==__INT_MIN__) という式が真を返してます
つまり、数値の内部表現がdecimalやBigInteger型等でない限り、境界値__INT_MIN__で -INTVALUE != -ABS(INTVALUE)になります
対処ですが、ABS(__INT_MIN__)で実行時エラーにするか、正の範囲に丸めるか、そのまま返すか、お好みで

365妊)|д゚):2022/05/03(火) 13:26:57 ID:5FFSlXaw
>>364
案件の方、確認したけど、そもそも.Net自体が
直接-long.MinValueするのは例外になると弾くくせに、一度変数に代入してその変数の-を取った場合は何もしないで素通しする素敵挙動ですわ
こっちは処理が通ってしまう仕様な以上、エラーにするのは現実的ではなさそうなので、実行時注意文表記で対応かな

まあ、とりあえずごねごねやっておきます。

366あなたの名前を入力してください:2022/05/04(水) 16:50:33 ID:M25qmfd6
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/expressions#1183-unary-minus-operator
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/checked-and-unchecked
constant expression以外はcheckedがオプションなりコード側なりで明示的に指定されていなければ単項-のオーバーフローを無視する仕様ですわ
この振る舞い自体はオーバーフローチェックの実行時コストを考えると現実的かつ妥当なものですの
constant expressionの場合はその問題がないので既定でcheckedとして扱われ怒られるというわけですわね

367あなたの名前を入力してください:2022/05/07(土) 09:38:53 ID:6RE/JgMQ
OSDNの演算についてのページ
https://ja.osdn.net/projects/emuera/wiki/exop
での演算子の優先度表について||とするべきところが|?|となっていないでしょうか?

368あなたの名前を入力してください:2022/10/07(金) 18:46:05 ID:6M90G.z2
NOSAMES関数についてバグ報告
wikiの説明と違い!GROUPMATCHのような挙動をします

NOSAMES("HAGE","HIGE","HIGE","HUGE","HUGE")
NOSAMES(0,1,1,1,1,1)
上記をデバッグウインドウでテストしても共に戻り値は1になりました

369妊)|д゚):2022/10/08(土) 17:31:45 ID:mFVtGyiQ
>>368
こりゃ、実装がおかしいですね、直してきます。

370妊)|д゚):2022/10/08(土) 18:57:44 ID:mFVtGyiQ
○1824+v16
https://ux.getuploader.com/ninnohito/download/482

>>368修正
・その他雑多な微変更

371あなたの名前を入力してください:2022/10/11(火) 00:31:29 ID:.NG1MpEk
おつです

372あなたの名前を入力してください:2022/11/03(木) 21:32:50 ID:iUB2hkcw
http://book-shelf-end.com/up/dwlink.cgi?eraRx3508.zip
Emuera私家改造版をベースにパフォーマンス改善等を行ったfork版ですわ
起動時で20%程度のメモリ消費削減と5%程度の実行速度アップが見込めるかと思われますわ
readmeにも記しましたがSKIPDISPでPRINT系命令を非表示にする際の挙動が異なりますので注意してくださいまし

正常動作・バグの発生問わず動作報告を頂けるとありがたいですわ
何分一人で行えるテストは量も質も程度が知れていますので

373あなたの名前を入力してください:2022/11/05(土) 20:07:35 ID:SwUDZlv6
>>372
eraten かーちゃん版144&口上&fix タイトル起動時

メモリ2.6GB前後:Emuera1824+v8.1(かーちゃん版デフォルトexe)
メモリ1.7GB前後:eee 

メモリ消費量が半端なく減ってました すごい

374あなたの名前を入力してください:2022/11/06(日) 00:32:53 ID:ChpHeNFQ
全データは3回試行した平均結果ですわ
eraMegatenと簡単なテスト用バリアントの2つですわ

eraMegatenRev144+口上+fix
起動後にロードしてホーム
v16: 1768MB
eee: 1356MB

起動後にEmpty.bat走らせてロードしてホーム
v16: 228MB
eee: 270MB
eraMegatenの起動時間はうまく測れなかったですわ

以下はテスト用コード
計算だけのFOR文を1億回回した時
FOR i, 0, 100000000
var = MAX(var, 0)
NEXT
v16: 5163ms
eee: 4618ms

表示だけするFOR文を10万回
FOR i, 0, 100000
PRINTFORML var: {var}
NEXT
v16: 5785ms
eee: 5757ms

375あなたの名前を入力してください:2022/11/07(月) 02:19:26 ID:Rn0iwQow
eeeforkでeraMegatenRev144+口上+fix起動後ホーム画面で[114] - 魔貨交換 -> [2] アイテムと交換 でエラー落ちしました(1824+v16では落ちませんでした)
SHOP関連\MOUSE_UI_STORE_UTILS.ERBの781行目で予期しないエラーが発生しました:eee
System.IndexOutOfRangeException:インデックスが配列の境界外です。
場所 MinorShift.Emuera.GameData.Variable.ReferenceToken.CheckBounds(Int64[] arguments, Boolean[] doCheck)
場所 MinorShift.Emuera.GameData.Variable.ReferenceToken.CheckRangeValidityForLastDimension(Int64[] arguments, Int64 index1, Int64 index2, String funcName, Int64 i1, Int64 i2)
場所 MinorShift.Emuera.GameData.Function.FunctionMethodCreator.FindElementMethod.GetIntValue(ExpressionMediator exm, IOperandTerm[] arguments)
場所 MinorShift.Emuera.GameData.Function.FunctionMethod.GetReturnValue(ExpressionMediator exm, IOperandTerm[] arguments)
場所 MinorShift.Emuera.GameProc.Function.FunctionIdentifier.RETURNF_Instruction.DoInstruction(ExpressionMediator exm, InstructionLine func, ProcessState state)
場所 MinorShift.Emuera.GameProc.Process.runScriptProc()
場所 MinorShift.Emuera.GameProc.Process.GetValue(SuperUserDefinedMethodTerm udmt)
場所 MinorShift.Emuera.GameData.Function.SuperUserDefinedMethodTerm.GetIntValue(ExpressionMediator exm)
場所 MinorShift.Emuera.GameData.Variable.VariableTerm1D.GetStrValue(ExpressionMediator exm)
場所 MinorShift.Emuera.GameProc.Function.FunctionIdentifier.SET_Instruction.DoInstruction(ExpressionMediator exm, InstructionLine func, ProcessState state)
場所 MinorShift.Emuera.GameProc.Process.runScriptProc()
場所 MinorShift.Emuera.GameProc.Process.DoScript()

376あなたの名前を入力してください:2022/11/08(火) 21:14:26 ID:aphXF6xg
eee 0.1.0.1
http://book-shelf-end.com/up/dwlink.cgi?eraRx3517.zip
>>375様の報告なさられたバグを修正いたしましたわ
動作報告をいただけたことを感謝申し上げますわ

わたくしの作業方針としましていわゆるホットパスにあたる部分を集中的に改良していきたいと思っております
現実的な用途においてPRINT系統の命令が秒間に実行される回数はせいぜい3桁程度でしょうからここのパフォーマンスは現状でも十分だと思っておりますわ
変数アクセスや数式の計算といった行為は非常に頻繁に行われるでしょうからこちらはまだ改善していきたいですわね

377あなたの名前を入力してください:2022/11/09(水) 20:27:06 ID:o1gXgRFc
調べても見つけられなかったんですが現状TOOLTIPの中身を改行するのは不可能ですか?
もしそうで可能ならば\nなり<br>なりで改行できるようにしていただけるとありがたいです
あとはSETDELAYと同じ要領でいいのでフォントサイズなんかも変えられるようにしていただけるとうれしいです

378あなたの名前を入力してください:2022/11/25(金) 19:58:22 ID:VGdKP1r6
>>376
eee 0.1.0.1でEra4Xを動かした所宙域マップおよび船内マップ表示が無くなりました
本体同梱のEmuera1824+v9・別途用意したEmuera1824+v16では正常にマップが表示されます
(それ以外は一応問題なく動いていそうでした)

379あなたの名前を入力してください:2022/12/03(土) 18:39:04 ID:IY.uy9KM
Emuera開発系の皆様、初めまして。
おかげさまでeraを楽しく遊ばせていただいております。

私はeraMegatenの起動が遅すぎる問題について、Emuera側の原因調査と改善を試みておりました。
つきまして、「Emuera1824+v8.1」にERBファイルを高速読み込みするモードを追加した改造版を作ってみました。
私個人の環境だとERB読み込み時間が24秒→5秒程度に改善しています。(その他の処理もあるため、全体としては通常の60%程度の時間でした。)

上記のご報告に加えて、ERBファイルのパッチではなくてEmuera自体の改造であるため
どこにアップロードしたらよいのか作法や手順等を知りたくてここに書き込みました。
お手数ですがご存じの方、よろしくお願いいたします。

380あなたの名前を入力してください:2022/12/03(土) 19:10:51 ID:IY.uy9KM
ちなみにERBファイル読み込み速度についてですが
読み込んだファイル内容を1行ずつ「Emuera\Sub\EraStreamReader.cs」の「public StringStream ReadEnabledLine()」
でチェック・取得している部分の処理がERBファイル読み込みの所要時間の大半を占めていました。
(既に皆様ご存じでしたらすみませんm(__)m)

上記の改造版ではチェック済みの内容をファイル出力しておくことで
次回以降はこのファイルをチェック無しで読み込むことで速度が改善するという理屈です。

381あなたの名前を入力してください:2022/12/03(土) 20:35:32 ID:4MnElVKw
アップロードはeraロダ3号機で良いのでは?

382あなたの名前を入力してください:2022/12/03(土) 20:56:18 ID:IY.uy9KM
なるほど、eraロダ3号機ですね。
ありがとうございました。m(__)m

383あなたの名前を入力してください:2022/12/05(月) 03:53:59 ID:DogpA89M
>>379
eraRx3534.zipのそれを試してみた所
とりあえずeraAS_0.663・era4Xは問題無く高速起動できるみたいです
(一応4Xの方はemueraの(元の)バージョンを下げる恰好になるのは気がかりではありますが)

ただエラーチェック済みのERBファイルを別の場所にコピー(+コメントの削除)しておくのではなくて
(元の場所にある・オリジナルの)ERBファイルを読み込む際にエラーチェックを省略するオプション設定を用意する、などの方が利便性は高そうだと思います

もちろん「そんなやり方をしたら事前にエラーを確認できない」というのはありますがエラーチェックと起動速度のどちらを取るかの話(極論「QUICKSTART内のERBを変更されたら確認できないのは同じ」)なので
「そもそもエラーを確認したい時に使うモードではない」と割り切っていいのではないでしょうか

384あなたの名前を入力してください:2022/12/05(月) 21:05:08 ID:SpnSgzbk
>>383
eraAS_0.663・era4Xにて高速起動に成功したとの報告、ありがとうございました。
わざわざ探した上で動作をお試しいただいたようで、ホントに感謝です。
改造元バージョンが古い件については恐縮ですが、eraMegatenでの標準版にあわせているということでどうかご了承下さい。

>ただエラーチェック済みのERBファイルを別の場所にコピー(+コメントの削除)しておくのではなくて
>(元の場所にある・オリジナルの)ERBファイルを読み込む際にエラーチェックを省略するオプション設定を用意する、などの方が利便性は高そうだと思います

上記のご助言につきましては、内容に強く同意しつつも私の力量不足により実現困難となっております。
今回の改造版Emueraが出力するファイルはコメントの削除だけでなく内容の変換・加工も行っているのです。
例えば[[キャラ:○○]]→2566 みたいな感じですね。内容精査・チェックと変換が入り組んでいる感じです。
内容チェックなしモードだけなら可能だと思いますがこの変換部分を効率化できるだけの知識がないため
苦肉の策としてEmueraが変換したERBの内容をそのままファイルとして保存しておき
高速起動モード起動時は該当処理自体をすっ飛ばして変換後ERBを読むだけ、といった対策をしております。

以下、eraロダ3号機にうpした改造版Emueraです。興味のある方は是非お使いください。
http://book-shelf-end.com/up/dwlink.cgi?eraRx3535.zip

385あなたの名前を入力してください:2022/12/22(木) 01:55:51 ID:YhBad3Pk
eee 0.1.1.1
https://book-shelf-end.com/up/dwlink.cgi?eraRx3553.zip
>>378様の報告内容を含めた不具合の修正を行いましたわ
他に_Rename.csvによるファイル置換処理を高速化していますが恐らくEraMegaten以外で差を体感するのは難しいと思われますわ

386あなたの名前を入力してください:2022/12/22(木) 21:42:59 ID:4HrfOkf6
すいません、ちょっと質問したい事があります

@SYSTEM_TITLE

CALL TEST
PRINTFORMW COUNT == {COUNT}

@TEST
#DIM LCOUNT, 2
#DIM ループ数 = 3, 7
#DIM 再帰回数

FOR LCOUNT:再帰回数, 0, ループ数:再帰回数
IF !LCOUNT:再帰回数 && !再帰回数
再帰回数++
CALL TEST
再帰回数--
ENDIF

SIF !再帰回数
COUNT++
NEXT

上のコードの結果は3じゃなく7でした、これは仕様なのでしょうか?

387あなたの名前を入力してください:2022/12/22(木) 22:27:09 ID:EHYHbpr2
その手のERBの書き方に関する質問は初心者スレの方がいいよ

388あなたの名前を入力してください:2022/12/22(木) 22:47:34 ID:UFEkDy/A
なるほどね、再帰から抜けた後にループ回数が7になってるわけだ

FOR前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:0
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:0
IF 始 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:0
FOR前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:0 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:0 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:0 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:0 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:1 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:1 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:1 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:2 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:2 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:2 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:3 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:3 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:3 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:4 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:4 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:4 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:5 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:5 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:5 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:6 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:6 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:6 COUNT:0
IF 終 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:0
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:0
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:1
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:1 COUNT:1
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:1 COUNT:1
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:1 COUNT:2
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:2 COUNT:2
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:2 COUNT:2
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:2 COUNT:3
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:3 COUNT:3
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:3 COUNT:3
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:3 COUNT:4
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:4 COUNT:4
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:4 COUNT:4
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:4 COUNT:5
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:5 COUNT:5
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:5 COUNT:5
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:5 COUNT:6
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:6 COUNT:6
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:6 COUNT:6
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:6 COUNT:7

389妊)|д゚):2022/12/22(木) 23:17:32 ID:CA8fp5ag
実は初期実装の仕様から延々と残っている課題で、Emueraはループはスタックされる形になっていないということから来る挙動になります。
スタックではないとどうなるかと言うと、同一のREPEAT・FORが呼び出される度に、カウント変数とループ回数が再定義されることを繰り返すことになりまして、
そのため、最後に呼び出された時のループ回数が再帰を抜けた後に残ったFORのループ回数となってしまっている
という現象になります。

390妊)|д゚):2022/12/23(金) 00:26:35 ID:geKxUqt6
じゃあ、スタックにすればいいんじゃね?ってなりそうなんですが、
CONTINUEとBREAKの仕様がこれまた、再帰をまーーーーーったく想定してないやばい奴なもんで、
かなり絶望したくなる何かになっております。

391あなたの名前を入力してください:2022/12/23(金) 07:31:08 ID:nwpQ.sys
>>389-390
なるほど、理解しました、今後そういう構文は避けます
詳しい解説ありがとうございました、勉強になります

392あなたの名前を入力してください:2022/12/24(土) 21:22:39 ID:J/a5WUYk
eramakerのループとGOTOまわりの挙動を確認していたら大変奇妙な問題に遭遇しましたわ

@TEST
A = 0
REPEAT 5
$LABELJMP
PRINTFORML COUNT={COUNT}
REND
PRINTFORML A={A}
IF A == 0
A = 1
COUNT = 0
GOTO LABELJMP
ENDIF

このようなコードが無限ループを引き起こしますわ

393あなたの名前を入力してください:2022/12/24(土) 21:45:25 ID:J/a5WUYk
詳細を調べたところ、どうやらREPEATに投げられる値より2以上小さい値(この場合は3以下)をCOUNTにセットしてループ内部にGOTOするとRENDの後に処理フローが関数の先頭に戻るようですわ
正直なところ原因が皆目検討つかない意味不明な挙動ですわ
他にもGOTOでループに飛び込んだ際にCOUNTが増える(emueraは増えない)という挙動の違いも確認しましたわ

eramakerをターゲットにした新規バリアントも長らく登場していないことを考えると、ループの再帰呼び出しがおバグりになる問題含めてeramakerとの互換性を切り捨ててでも挙動を整理してしまってよいのではと存じ上げますわ
あるいはループ内へのGOTOと再帰呼び出し(確認しやすい直接再帰だけでも)を解析時にエラーまたは警告扱いにするといった対処も考えられます
皆様はどう思われますでしょうか?

394妊)|д゚):2022/12/24(土) 22:07:21 ID:1GJV9Cqs
何が起きてるかはわかる
eramakerだとどういう挙動になるんだったかな…

ここらへんもループ系統がスタック処理になってないのが本質的原因ではありますね

395妊)|д゚):2022/12/24(土) 22:21:51 ID:1GJV9Cqs
えーと、予想になりますが
両者ともに
GOTO後RENDでループを抜けるか判定
抜けない場合はREPEATに戻るまでは共通で、
eramakerはここで新たにループ先頭に来たと判定しループを開始するが、
Emueraの場合は入り直すという処理をしないという違いになります。
これは再現する必要のある仕様でもないしどうでもいいかー

ちなみにループ周りのEmueraの挙動の問題は互換性はまったく無関係で、単純にEmueraの設計そのものの問題です

396あなたの名前を入力してください:2022/12/24(土) 22:41:14 ID:zlEjYtkU
>>385
era4Xの旧版相当(少なくともエラーを吐いた部分は>>378当時のもの)ですが宙域画面へと出ようとしたらエラーを吐いて落ちました
(船内マップは正常に表示されるようでした)

LIBRARY\WindowDrawer.ERBの1396行目でエラーが発生しました:eee
m_arrWndText:nWndId:(ARG) '= ARGS
エラー内容:インデックス-1は2次元配列変数M_ARRWNDTEXTの1次元目の範囲外です
現在の関数:@WNDMGR_WINDOWMGRMAIN(LIBRARY\WindowDrawer.ERBの1266行目)
関数呼び出しスタック:
↑LIBRARY\WindowDrawer.ERBの789行目(関数@WNDMGR_TEXTSET内)
↑SLG4X\MAP_WINDOW.ERBの722行目(関数@DRAW_SPACE_FORCE_OCCUPANCY内)
↑SLG4X\MAP_WINDOW.ERBの52行目(関数@DRAW_WINDOW内)
↑SLG4X\SLG_SHOP.ERBの37行目(関数@SLG_SHOP内)
↑SHOP\SHOP_LIFE\SHOP_LIFE82_宙域画面.ERBの23行目(関数@SHOP_LIFE_EVENTBUY82内)
↑SHOP\SHOP_LIFE.ERBの89行目(関数@EVENTBUY_LIFE内)
↑SHOP\SHOP.ERBの132行目(関数@EVENTBUY内)

また他のイベントの発生でも落ちました
どちらも旧版に同梱されていたEmuera1824+v9.exeや別途用意したEmuera1824+v16.exeでは正常に進行します

SYSTEM\EVENT_DAILY\各イベント群\LENDER_金貸しの来訪.ERBの74行目で予期しないエラーが発生しました:eee
System.ArgumentOutOfRangeException:インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。
パラメーター名:index
場所 System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)

場所 MinorShift.Emuera.GameProc.ProcessState.IntoFunction(CalledFunction call, UserDefinedFunctionArgument srcArgs, ExpressionMediator exm)

場所 MinorShift.Emuera.GameProc.Function.FunctionIdentifier.CALL_Instruction.DoInstruction(ExpressionMediator exm, InstructionLine func, ProcessState state)

場所 MinorShift.Emuera.GameProc.Process.runScriptProc()

場所 MinorShift.Emuera.GameProc.Process.DoScript()

397あなたの名前を入力してください:2022/12/25(日) 00:46:43 ID:D5/gelw6
これはなかなかに恥ずかしいケアレスミスですわね
>>396様の不具合を修正いたしましたわ
eee 0.1.1.1
http://book-shelf-end.com/up/dwlink.cgi?eraRx3555.zip

398あなたの名前を入力してください:2022/12/25(日) 01:00:38 ID:D5/gelw6
>>396様へ
イベントで落ちる不具合は再現・修正ができましたが上の宙域画面へ出るときのエラーがわたくしの環境では再現いたしません
メニューから進行カテゴリの[宙域画面]を開いたときに落ちるということでよろしいでしょうか?
差し支えなければ落ちる状況の再現が取れるセーブデータをアップロードしていただきたく存じます

399あなたの名前を入力してください:2022/12/25(日) 02:16:12 ID:t6zrh.L.
>>398
(eeeおよびera4X双方共に)最新版においても・セーブデータを問わず(例え解凍したまま・過去版からデータを移行していない状態で最初から始めた直後であっても)メニューから宙域画面を出そうとするとエラーを吐いて落ちます

再現しないとの事ですが
4Xスレ767にリンクがあるera4X-main.zipの中身(era4X ver 1.4.14)はだいぶ古いバージョンの様であり(769でリンクミスと言及されています)
一番新しい所で4Xスレ764にリンクがあるera4X-feature-replace_K.zip(era4X ver 2.0.0(このバージョン表記も変更が無いままの更新が続いていますが))の方がより新しいバージョンであると思われます
4X本体の取り違えの可能性はありませんでしょうか

また(宙域画面を表示した際にエラー落ちはしない)era4X ver 1.4.14であってもクリックした際に表示される本来は画面中央下のボックスの中に表示されるべき情報がセクターマップ右横部分に表示されるなど非正常な動作をしている様です

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

401あなたの名前を入力してください:2023/01/12(木) 19:37:49 ID:naHdB.Cw
>>399
ご指摘どおりera4Xが古いバージョンだったようですわ
無事に再現取れましたので改めてお礼申し上げますわ

eee 0.1.1.2
http://book-shelf-end.com/up/dwlink.cgi?eraRx3589.zip
時間がかかりましたが不具合修正のみですわ

402あなたの名前を入力してください:2023/03/12(日) 00:20:52 ID:mocyFadc
特定フォルダ以下をemuera規定のフォルダ構成と同じ様に読み込めたら便利だと思います。
こんなかんじで↓
eraNanika
├CSV
├ERB
├resources
└MOD
 ├任意フォルダA
 │├CSV
 │├ERB
 │└resources
 ├任意フォルダB
 └任意フォルダC...

403妊)|д゚):2023/05/28(日) 17:22:23 ID:EZxISraA
○1824+v18
https://ux.getuploader.com/ninnohito/download/487

・ビットマップファイルの一部拡縮表示でひどいことになるのを軽減(根本的原因はMS側なのでどうにも
・CUSTOMDRAWLINEが毎度文字列を生成して無駄に処理が重いので、色々変更
 (DRAWLINEFORMの方もおいおい処理変更予定)

404あなたの名前を入力してください:2023/07/09(日) 01:02:17 ID:/T.kjoEE
HTML関係のnonbuttonのposをかなり活用しているのですが
HTML_GETPRINTEDSTRで再取得しようとしたところnonbuttonの情報が失われてしまいました。
nonbuttonの情報もHTML_GETPRINTEDSTRで再取得できるようには出来ないでしょうか?
よろしくお願いします。

405妊)|д゚):2023/07/11(火) 22:18:26 ID:U0WLzBhI
>>404
テストケースあったりします?

406あなたの名前を入力してください:2023/07/12(水) 11:01:16 ID:LauQ5ik2
>>405
すみません、私の方で問題があったようです。
お手数おかけし申し訳ございません。

407あなたの名前を入力してください:2023/09/15(金) 01:23:44 ID:ezGjpZP.
最近OSDNがクソ重くて困る…

408妊)|д゚):2023/10/20(金) 00:30:43 ID:qxucA8ec
将来的なこと考えると、ここらへんでWindows依存の処理系から脱却を図りたいところだが、一部DLL直叩きしてる処理あるのをどうするかだなぁ
それ以前にSkiaSharpあたりの習得から始めないといけないけど

409あなたの名前を入力してください:2023/10/28(土) 09:13:22 ID:HHbkTXbo
とりあえず薄いラッパーみたいなのを作ってみて、小手先じゃ対応できない部分は元の処理を書きなおして解消するか、
それがごく一部ならば依存機能をむしろ独立したライブラリにすれば、各プラットホームにそこだけ移植すれば動かせるってことなんじゃないだろうか?

410あなたの名前を入力してください:2023/10/29(日) 20:43:33 ID:QUgRJPdo
目が悪いんで解像度+150%に拡大してるせいか
前々から画面サイズの設定が上手く反映されない問題あったけど
とうとう設定画面自体が異様に縦長になって、設定変更できなくなってしまった

411あなたの名前を入力してください:2023/10/31(火) 02:29:48 ID:O06xHUuM
Windows依存から離れようとしてる人チラチラいるけどみんないきなりWinFormで脱落してる印象

412 ◆eraTWk3.v6:2023/11/14(火) 02:04:02 ID:wwXQXwyU
https://book-shelf-end.com/up/dwlink.cgi?eraRx4164.zip
海外の開発者から転載許可を貰った実行ファイルです。
画像を必要な時に読み込むようになりメモリ使用量を削減するとのこと。

413あなたの名前を入力してください:2023/11/27(月) 11:03:46 ID:RGqby8xk
最近Emueraのソースコードが公開されてるのに気が付いて、いじって遊ばせてもらってます。
.NETを最新にして、.NETの標準乱数を使うようにしたり、タイマーを標準のDateTimeを利用するようにしたり…
WinFormsを剥がすのは無理ですけど_LibraryにあるDLL依存は簡単に剥がせそう。

414あなたの名前を入力してください:2023/11/28(火) 06:35:54 ID:H4j0rFVk
口上のネタが浮かばないときってどうしてるかな
ちょっとたくさん作らないといけなさそうなんだけど

415あなたの名前を入力してください:2023/11/28(火) 06:40:28 ID:H4j0rFVk
スレチかもだけど、なんだか製作相談スレが動いてないみたいだから
やっぱりあっちで聞いた方がよかったかな

416あなたの名前を入力してください:2023/11/29(水) 14:32:47 ID:fnH.yBgQ
WinFormsから脱却とか目指すならeramakerから脱却してnwjsやElectronのが良さげにも思える
あれがJavaみたいにライブラリをサンドボックスに出来るかはしらんけど

417あなたの名前を入力してください:2023/11/29(水) 22:28:56 ID:MahckLDI
erabasic版のEmueraが作れる程度の命令は持ってるサブセット処理系を作ってみるとか?

418あなたの名前を入力してください:2023/12/14(木) 23:16:33 ID:va7IeBrs
https://book-shelf-end.com/up/dwlink.cgi?eraRx4198.zip
>>413 ですが、フレームワークのバージョンを上げて、C#の新しい言語機能をいくつか利用しただけでだいぶ早くなった(感覚)ので、公開します。
動作自体に手は入れていないので、大きなバグとかは無いはず…
唯一挙動が違うのが、C#標準の乱数が内部状態を公開しないので乱数の状態を保存できないことですが、標準乱数の高速化の恩恵を受けたかったので、妥協しています。
もし使うのなら.NET 8のランタイムを入れてください

419あなたの名前を入力してください:2024/01/11(木) 20:54:22 ID:fS1vVS3g
>>418
era悪魔でメイド 2023_12_21 で使わせてもらった
体感、確かに軽くなったが不具合発生
「日付変更時に固まることがある」

いつでも固まるわけでは無いんだが、「一日が終わった・・・(SYSTEM.ERB 841行目)」の後で固まることが複数回あった。

DRAWLINE
PRINTW 一日が終わった・・・

;画面の色替え
CALL FADEOUT, TOSTR(GETBGCOLOR()), 4
TWAIT 100, 1
;一旦ログを流す
CALL MULTILINE, WINDOWROWS()
CALL EFFECT_ALLRESET

こんな処理の部分なので、自分のオマ環でないなら参考にしてくれ

420あなたの名前を入力してください:2024/01/12(金) 21:53:09 ID:CFIcsywA
>> 419
使用とバグ報告ありがとうございます

テストのためメイドさんを何日も放置して眠り、
タイマー系に問題が発生しているのを確認したので修正しました。

https://book-shelf-end.com/up/dwlink.cgi?eraRx4245.zip

src.zip以外をD&Dして.NET 8のランタイムをインストールしていただければ使用できます。

421あなたの名前を入力してください:2024/01/12(金) 23:31:01 ID:5YbUC.Y6
>>420
修正thx
メイドさんを何日も放置して眠り、でクスっとした

net8版emueraはこの週末にでも使わせてもらう

422あなたの名前を入力してください:2024/01/13(土) 05:41:33 ID:7AoZJiF.
>>420
別のコード変更を行っている最中に上のファイルだと、開発環境以外で実行できないという致命的な不具合を発見したので修正版を上げておきます…
https://book-shelf-end.com/up/dwlink.cgi?eraRx4247.zip
他の変更も入ってしまってるけど挙動に変更は無いので問題ないはず(2度目)

423あなたの名前を入力してください:2024/01/14(日) 18:43:46 ID:kF3skkrc
>>422
eraMegaten 150+151+151patch2+口上まとめ という環境で使おうとしてみたが起動しなかった

emuera.log
DDS-NETに接続しています...
警告Lv2:関数\画像エディット用ライブラリ\パーツ共通設定.ERH:24行目:行連結始端記号'{'が使われましたが終端記号'}'が見つかりません
警告Lv2:RPG\戦闘\SYSTEM_BATTLE.ERH:20行目:"TYPENUM"は解釈できない識別子です
警告Lv2:RPG\戦闘\SYSTEM_BATTLE.ERH:21行目:"TYPENUM"は解釈できない識別子です
ERHの読み込み中にエラーが発生したため処理を終了しました

>パーツ共通設定.ERH:24行目;#DIMS _CN_DRAW_CHARASPRITE_NAME,200
>SYSTEM_BATTLE.ERH:20行目;#DIM SAVEDATA CHARADATA C_HAVE_SKILL_ATK_TYPE, TYPENUM
>SYSTEM_BATTLE.ERH:21行目;#DIM ENEMY_HAVE_SKILL_ATK_TYPE, TYPENUM

スパゲティが食べれなかった可能性もあるが……参考までに書き込んでおく

424あなたの名前を入力してください:2024/01/15(月) 05:06:32 ID:7IZysM8U
>>423
使用とバグ報告ありがとうございます。
https://book-shelf-end.com/up/dwlink.cgi?eraRx4249.zip

eraMegatenに関する修正とタイマー処理の修正忘れを修正して、
UI系の最適化をいくつか行いました。
その際の都合でWINAPIモードが使用できなくなりました。
もし不都合があれば教えてください。

それと前回のバージョンからなのですが、ソースファイルを最初に一気に読み込むように変更したので、起動時の反応が若干悪いです。

425あなたの名前を入力してください:2024/01/15(月) 07:35:45 ID:7IZysM8U
https://book-shelf-end.com/up/dwlink.cgi?eraRx4250.zip
徹夜の成果でeraMegatenの起動が半分以下になる最適化方法を発見できたので、
連投になって申し訳ないのですがアップロードします。

当方の環境では15秒ほどで起動可能になりました

426あなたの名前を入力してください:2024/01/19(金) 16:39:05 ID:LIgYFdCo
https://book-shelf-end.com/up/dwlink.cgi?eraRx4251.zip
さらなる最適化の結果、eraMegatenの起動時間を10秒程度に短縮することができました。

ここから更に高速化、軽量化するためには、全体の大幅な書き直しが必要だと思われ、
私がERB構文に詳しくないのでこの辺で終わろうと思います。

もし不具合がありましたら、教えてください。

427あなたの名前を入力してください:2024/01/21(日) 04:32:53 ID:TfA4x8fc
.NETの標準乱数って線形代数だっけ?んでeraが昔からメルセンヌツイスタでこれが今になると結構遅めだよね
XORSHIFTとかその派生にしたらもっと早くならないかな

428妊)|д゚):2024/01/21(日) 09:11:24 ID:D5lbVSJg
C#のRandは結構問題ありますからねぇ…
メルセンヌツイスタが空間でかいわ遅いわなのは今ではそのとおりで、個人的には一応乱数アルゴリズム変えようかなって計画はある
XORSHIFT系もありだし、PCGあたりも候補になるかなと

429あなたの名前を入力してください:2024/01/21(日) 12:16:12 ID:MgsVUm/M
>> 427
C#は以前は線形合同法をベースにしたLagged Fibonacci法が使用されていましたが、
.NET6からxorshift系のxoshiro256**を標準乱数に使用しています。

430妊)|д゚):2024/01/21(日) 19:09:20 ID:D5lbVSJg
ここまで書いておいてなんだが、RANDDATAが存在する時点で移行が難しいな…
Emueraの使ってるSFMTがやっていることを前提にしてて、他のルーチンではこんなことやってないから、再現無理だ、これ

431あなたの名前を入力してください:2024/01/22(月) 01:44:31 ID:bAjKRIR6
>>429
あ、そうなのか
結構簡単に互換性壊してんのね.NET
お疲れ様でした

432あなたの名前を入力してください:2024/01/22(月) 02:15:16 ID:fDl/rrUw
>>431
シード値を指定された場合従来のLagged Fibonacci法を使用し、
シードが指定されなかった場合、つまり再現性を求められなかった時のみxoshiro256**を使うことで、
一応互換性について問題がおこらないように配慮はされています。

433あなたの名前を入力してください:2024/01/22(月) 18:36:18 ID:6DLdvhjo
OSDNが閉鎖するみたいです

434あなたの名前を入力してください:2024/01/22(月) 18:43:24 ID:WvQOvzNA
emueraの解説ページがなくなるのは困りますね
どこか引越しすることになるのかな

435あなたの名前を入力してください:2024/01/22(月) 23:09:02 ID:6DLdvhjo
移転できるならまとめWikiあたりに移転すべきかも
買収後のOSDNの重さ考えるとなおさら
構文の解説はEmuera.EM+EE版のが充実してるけど完全互換ではないからなぁ

436妊)|д゚):2024/01/22(月) 23:41:46 ID:yRVjnh2E
後はとりあえず、旧Ver含めた各種ファイルの引き上げも必要っすね

437あなたの名前を入力してください:2024/01/24(水) 14:16:57 ID:d0qYcHSs
https://book-shelf-end.com/up/dwlink.cgi?eraRx4266.zip
扱いやすいよう実行ファイルが一つになるようにコンパイルオプションを変更しました。
変わらず.NET 8のランタイムは必要です。

438あなたの名前を入力してください:2024/02/01(木) 00:11:14 ID:NKP7Y6xc
OSDN(とスラド)の閉鎖延期ですってよ(どのみち移転は必要だろうけど)

439あなたの名前を入力してください:2024/02/04(日) 00:22:41 ID:W457uTu.
>>437
.NET 8のEmuera
-Debug を引数にしたデバッグモードは使えないようになってるの?

440あなたの名前を入力してください:2024/02/04(日) 01:03:33 ID:29lhq/f.
>>439
引数の解析を作り直した際に、大文字での-DEBUGしか認識しなくなっていたようです。
修正しておきました。テストありがとうございます。

https://book-shelf-end.com/up/dwlink.cgi?eraRx4281.zip

441あなたの名前を入力してください:2024/02/04(日) 16:21:00 ID:W457uTu.
>>440
修正助かる
小文字のみはやったが、大文字のみは予想外だった

442あなたの名前を入力してください:2024/02/14(水) 03:35:52 ID:AyG.XzPA
>>440です
フォントに関するバグを見つけたので近いうちに修正版を出します。

ところで、現状では起動処理以外は殆ど手を加えていません。
これは起動以外に重いと感じる処理が見つからなかった為です。
もし、処理落ちするケースを教えていただければ、もう少し最適化できるかもしれません

443あなたの名前を入力してください:2024/02/18(日) 17:30:18 ID:2jj7wdgI
.NET 8のEmuera で eraMegatenやってたらバグに遭遇した
特殊弾変更ができない

セットアップ → 装備変更 → キャラ選択 → 特殊弾変更

バリアント付属のemuera1824では特殊弾変更の操作可能
.NET 8のEmuera由来と思われる

444あなたの名前を入力してください:2024/02/18(日) 21:28:37 ID:9pGU7jcw
>>443
https://book-shelf-end.com/up/dwlink.cgi?eraRx4313.zip

ありがとうございます
上記のフォントのバグと報告していただいたeraMegatenの装備変更のバグ(キー入力のバグ)を修正しました。

実行に必要なファイルが2つになりました。Emuera.exeとlibSkiaSharp.dllです。
両方フォルダに入れて使ってください。

また、オリジナルと同じように起動中でもウィンドウが応答する様になりました。
起動速度はさほど犠牲になっていないはずですが環境によるので遅くなっていたら教えてください。

それと、これはおまけみたいなものですが、別作業の副作用でWebPを読み込めるようになりました。
eraTWが起動するようになりましたが、EM+EEの拡張に対応していないので途中で落ちます。

以上です。報告ありがとうございます。

445あなたの名前を入力してください:2024/02/20(火) 17:58:36 ID:ftLgpF5A
>>444
https://book-shelf-end.com/up/dwlink.cgi?eraRx4321.zip

あるバグを修正していた時に、eraTWがEM+EEの拡張をほとんど使っていない事に気づき、
ピンポイントでそれを実装することで、eraTWがある程度動くようになりました。
時間がないのでほとんどテスト出来ていませんが、元々のバグ修正と共にアップロードしておきます。

446あなたの名前を入力してください:2024/02/21(水) 00:05:32 ID:7c5Bs96U
eraTWで標準採用されているのはEM+EEじゃないはずなので、eraTW向けEmueraの機能拡張部分をEM+EEが取り込んだだけでは?

447あなたの名前を入力してください:2024/02/23(金) 14:40:17 ID:qXV6G5Mw
>>444-445
修正助かる、あとでtwでも遊んでみる
気づいたらeratenに取り込まれる予定なようで、メデタイ

448あなたの名前を入力してください:2024/03/01(金) 22:06:13 ID:gVPTnFrk
>>445
https://book-shelf-end.com/up/dwlink.cgi?eraRx4346.zip

eraMegaten サーバーの皆さんのフィードバック等に基づき
様々なバグを修正し、パフォーマンスを改善し、
新しい乱数の使用をオプションにし、デフォルト設定では互換性を維持するようにしました。
又、マウスを合わせているボタンの背景色を変えるオプション等を追加しました。

土日前にこちらにもアップしておきます。

449あなたの名前を入力してください:2024/03/01(金) 22:15:16 ID:aV684O/2
Emuera1824 で 「予期しないエラー」が出たので報告します。

【環境】 Emuera1824+v18 (>>403)、v16、v9 / Windows11 x64 Home 23H2 / .NET Framework 4.8.9181.0
【概要】 ARRAYSORT 使用時、指定する範囲上限が配列の限界を超えていると .NET エラー (System.ArgumentException)。
範囲境界検証漏れ、エラートラップ漏れ。
【エラー箇所】 src1824.backup\Emuera\GameData\Variable\VariableEvaluator.cs Line 730-731辺り
【検証コード】
@SYSTEM_TITLE
#DIM LIST, 4
LIST = 1, -1, 2, -2
; ↓配列範囲の上限を超えた指定:LISTのサイズ(= 4)で処理範囲が制限されるか、または解析時/実行時エラーが出ることを期待。
ARRAYSORT LIST, FORWARD, 1, 4
PRINTFORMW %LIST:0%, %LIST:1%, %LIST:2%, %LIST:3%

【エラーログ】
Now Loading...
MAIN.ERBの10行目で予期しないエラーが発生しました:Emuera1824+v18
System.ArgumentException:ソース配列の長さが足りません。srcIndex、長さおよび配列の最小値を確認してください。
場所 System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable)
場所 MinorShift.Emuera.GameData.Variable.VariableEvaluator.SortArray(FixedVariableTerm p, SortOrder order, Int32 start, Int32 num)
場所 MinorShift.Emuera.GameProc.Process.doNormalFunction(InstructionLine func)
場所 MinorShift.Emuera.GameProc.Process.runScriptProc()
場所 MinorShift.Emuera.GameProc.Process.DoScript()
※※※ログファイルをemuera.logに出力しました※※※

450妊)|д゚):2024/03/01(金) 23:16:37 ID:Chn.3qSU
>>449
こらひどい
ちょっと見て来ます

451妊)|д゚):2024/03/01(金) 23:34:26 ID:Chn.3qSU
○1824+v19
https://ux.getuploader.com/ninnohito/download/488

>>449修正できたはず(手元ではしっかりハンドリングできてる

452あなたの名前を入力してください:2024/03/02(土) 00:46:54 ID:OXfpcBKc
https://book-shelf-end.com/up/dwlink.cgi?eraRx4348.zip
>>451 こちらに追従させて頂き、ついでに配列のソート処理を書き直し、逆順ソートを高速化しました。

453>>449:2024/03/02(土) 10:09:11 ID:Ht69eW.I
>>451 素早い対応ありがとうございます。.NET例外が治っているのを確認しました
些細ながら、"私家改造版Emuera_readme.txt" の「◎現在のベースバージョン」の番号がv18のままでした
・Emuera1824+v18
 ○ARRAYSORTの第3変数と第4変数の和が範囲外になった時のハンドル漏れ修正

454fairiesvillage ◆O5Ld6sWb7U:2024/03/08(金) 21:33:39 ID:B0Diy3TY
よし、OSDNのEmueraのwikiの文章・画像データを回収できた
大した重さじゃないはずなのにすごい時間かかったなあ
Emueraのソースと実行ファイルは証明書エラーでとれんかった…

455あなたの名前を入力してください:2024/03/17(日) 16:52:00 ID:eO8Y5F9w
>>452
https://book-shelf-end.com/up/dwlink.cgi?eraRx4378.zip
変更点が多くなったので新しいバージョンとして投稿させていただきます。

以下が変更点です
・起動を高速化
・再起動処理を変更し、メモリを適切に開放するように変更
・実行ファイルが分かりやすいように、デフォルトのアイコンを変更
・ログ (前バージョンから有りますが書き忘れました)
 ・戦闘に.NET Emuera (バージョン)と表記されるように変更
 ・実行ファイルと同じ階層にpatch_versionsフォルダがあり、中にテキストファイルが有った場合、内容をログに含めるように変更
  主にeraMegatenでパッチバージョンをログに表記するための機能です
・UIの調整
 ・メニューを選択時に文字がホワイトアウトする事に違和感を覚えたので、変化しない様に変更
 ・その他細かい調整
・その他最適化

456あなたの名前を入力してください:2024/03/19(火) 00:28:10 ID:DDBJCEZQ
1824+v19にて奇妙な挙動を確認したので報告させていただきます。

読み込み完了後、メニューバー等から再起動を行うと、初回と比べて読み込み完了後のメモリ消費量が明らかに増加します。
更に再起動を繰り返していくと徐々に読み込み完了後のメモリ消費量が増加していきます。
増加量はバリアントごとに異なりますが、eraMegaten(口上あり)で2.5GBほどera悪魔でメイドで200MB程です。

繰り返していると、あるタイミングで初回と同等のメモリ消費量になる為、再起動時にGCが動いていないのではないかと推測します。

457あなたの名前を入力してください:2024/03/19(火) 02:21:01 ID:zNFBIsrk
みなさんお疲れ様です
まさか今あちこちでemuera制作が進むなんてすごいですねぇ……

458妊)|д゚):2024/03/23(土) 05:53:24 ID:MiyWLYTE
>>456
再起動やタイトル戻る時のリソース削除は完全にGCにかけずに、回収待ちなものが混ざってるので、後者が影響してるのかなという第一印象ですかね
Collectさせてからやるとどうなるかですかね、ちょっと試験してみます

459妊)|д゚):2024/03/23(土) 06:02:12 ID:MiyWLYTE
試してみたけどあんま変わらんですね
おそらく行データなどが未使用と判定されるまでのタイムラグがあるので、現状の実装では回避不能なのかもなぁ

460妊)|д゚):2024/03/26(火) 21:23:51 ID:1.eR.Lns
○1824+v20
https://ux.getuploader.com/ninnohito/download/489

・INPUTSに"@"1文字を渡すと何も起こらず入力処理も抜けないのを修正
無条件でデバッグコードだと決めつけるのも考えもの
readmeが更新されてないのは、単に忘れただけなので気にしない方向で

461あなたの名前を入力してください:2024/03/29(金) 20:05:33 ID:YCtI9zq.
>>455
.NET(8) 版v0.2.2.13 で不具合
* 起動時引数 -debug によるデバッグモードでデバッグウインドウを開いているとき、メニューから再起動を実行すると .net JITエラー
* VARSET命令の第三引数以降が機能しない。VARSET variable, n, A, B を指定しても、[A, B) 範囲での値設定が行われない
* TINPUT系命令の第三引数 残り時間表示フラグを指定したとき、カウントダウンの途中経過表示が更新されない

462あなたの名前を入力してください:2024/03/29(金) 23:33:29 ID:5vIRYc/.
>>461
報告ありがとうございます。

1と3に関しては確認し修正できたのですが、2に関して手元で再現できず…
再現するコードなどがあれば頂けると有り難いです。

463461:2024/03/30(土) 00:01:04 ID:wWUzFZHU
追加で確認したところ、2はDYNAMIC 変数で発生するようです。
【テストコード】
@TEST
#DIM DYNAMIC DVARS,10 = 0,1,2,3,4,5,6,7,8,9
#DIM SVARS,10 = 9,8,7,6,5,4,3,2,1,0
PRINT (PRE) DVARS:
FOR LOCAL, 0, 10
PRINTFORM {DVARS:LOCAL,2},
NEXT
PRINT  (PRE) SVARS:
FOR LOCAL, 0, 10
PRINTFORM {SVARS:LOCAL,2},
NEXT
PRINTL
DVARS:5 = -1,-2,-3
PRINT (POST) DVARS:
FOR LOCAL, 0, 10
PRINTFORM {DVARS:LOCAL,2},
NEXT

SVARS:5 = -1,-2,-3
PRINT  (POST) SVARS:
FOR LOCAL, 0, 10
PRINTFORM {SVARS:LOCAL,2},
NEXT
PRINTL
VARSET DVARS , -5, 0, 5
PRINT VARSET DVARS:
FOR LOCAL, 0, 10
PRINTFORM {DVARS:LOCAL,2},
NEXT
VARSET SVARS , -5, 0, 5
PRINT  VARSET SVARS:
FOR LOCAL, 0, 10
PRINTFORM {SVARS:LOCAL,2},
NEXT
PRINTW

【.NET Emueraログ】
# 環境情報
.NET Emuera 0.2.2.13

# ログ

Now Loading...
(PRE) DVARS: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, (PRE) SVARS: 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,
(POST) DVARS: 0, 1, 2, 3, 4,-1,-2,-3, 8, 9, (POST) SVARS: 9, 8, 7, 6, 5,-1,-2,-3, 1, 0,
VARSET DVARS: -5,-5,-5,-5,-5,-5,-5,-5,-5,-5, VARSET SVARS: -5,-5,-5,-5,-5,-1,-2,-3, 1, 0,

464あなたの名前を入力してください:2024/03/30(土) 01:55:12 ID:6C6L2jjE
>>463
https://book-shelf-end.com/up/dwlink.cgi?eraRx4394.zip

ありがとうございます。
1,2,3が修正出来たはずです。

そのほかにいくつか作業中の変更が入っています
・v20の修正の取り込み
・最適化データを保存してより適切な最適化が行われるように
・exeと同階層のDataフォルダ内にerbフォルダなどが配置されていても読み込めるように
(ファイル整理用)
フォルダ階層のイメージ
-Data
--erb
--csv
--etc...
-Emuera.exe

465461:2024/03/31(日) 16:41:22 ID:zXJTVGI2
修正直後で申し訳ないですが、デバッグウインドウでの不具合を報告します。
【環境】 Emuera1824+v20 (>>460) : 少なくとも 1824+v9 〜 / Windows 11 x64 Home 23H2 / .NET Framework 4.8.9181.0 built by: NET481REL1LAST_C
     .NET(8) Emuera v0.2.3.3 (>>464) / .NET 8.0.1 でも発生
【現象】 デバッグウインドウのコンソールタブ内テキストボックスで、上キーで履歴を参照し入力する事を繰り返すと、約100件目で.NET JIT 例外。下キーでは発生しない?
【再現手順】
1. 起動時オプション -debug で起動
2. デバッグウインドウ → コンソール タブを選択
3. テキストボックスに任意の式を入力。参考に (A++)
4. 「上カーソルキー+Enter」 を約100回繰り返す

【エラーログ】
************** 例外テキスト **************
System.IndexOutOfRangeException: インデックスが配列の境界外です。
場所 MinorShift.Emuera.Forms.DebugDialog.updateInputs()
場所 MinorShift.Emuera.Forms.DebugDialog.textBoxCommand_KeyDown(Object sender, KeyEventArgs e)
場所 System.Windows.Forms.Control.OnKeyDown(KeyEventArgs e)
場所 System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
場所 System.Windows.Forms.Control.WmKeyChar(Message& m)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.TextBoxBase.WndProc(Message& m)
場所 System.Windows.Forms.TextBox.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** 読み込まれたアセンブリ **************
mscorlib
アセンブリ バージョン:4.0.0.0
Win32 バージョン:4.8.9181.0 built by: NET481REL1LAST_C
コードベース:file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
Emuera
アセンブリ バージョン:1.824.8851.38172
Win32 バージョン:1.824.0.0
コードベース:file:///C:/〜〜/Emuera1824+v20.exe
...

466あなたの名前を入力してください:2024/03/31(日) 19:47:52 ID:J.XNPEl6
>>465
報告ありがとうございます。

https://book-shelf-end.com/up/dwlink.cgi?eraRx4397.zip

修正しました。

467妊)|д゚):2024/04/01(月) 21:04:29 ID:mP7eUaWw
○1824+v21
https://ux.getuploader.com/ninnohito/download/490

>>465修正

468あなたの名前を入力してください:2024/04/19(金) 20:44:05 ID:Mc2CtNnI
.NET Emuera 0.2.3.9
https://book-shelf-end.com/up/dwlink.cgi?eraRx4458.zip

・命令の追加、仕様変更
 ・命令としてVARI,VARS命令を追加 (要設定)
  ・関数中のどこでも関数ローカルなダイナミック変数を定義できます
  ・VARIが整数、VARSが文字列です
   例.
    VARS Question = "生命、宇宙、そして万物についての究極の疑問の答え"
    VARI Answer = 42
  ・初期値として配列は与えられず、文字列は””で囲われている必要があります
 ・PRINTN系命令の追加
  ・改行しないPRINTW系命令です
  ・基本的なPRINT命令にのみ追加しています
 ・HTML_PRINTの仕様変更
  ・第2引数に0以外を与えることで自動的な改行を行わなくなります。(EM+EEと同仕様になるように調整)
・エラーログに実行ファイル名ではなくバージョンテキストを表示するように変更
・UIの調整
・様々な最適化、バグ修正

469妊)|д゚):2024/06/13(木) 23:31:58 ID:vF2WOaWI
○1824+v22
https://ux.getuploader.com/ninnohito/download/491

・一部の処理系でCALLNAMEがハンドリングできないのを修正
ごく一部なのでほとんど影響がなかったっぽい
・式中関数GETNUMBが実装はあるのに使われていないのを修正
式中関数GETNUMの第1引数が文字列指定のバージョン ただそれだけ

470あなたの名前を入力してください:2024/07/20(土) 13:56:01 ID:Uq5DagCE
Emuera.NET 0.2.6.0
https://book-shelf-end.com/up/dwlink.cgi?eraRx4609.zip
・描画システムをSkiaSharpに置き換えることで高速化
・命令の追加
 ・HTML_PRINT_ISLAND
  TAGを用いた記法はHTML_PRINTと同じだが、行情報に依存しない。
  このため、<div>タグでabsolute系の指定をしないとどこにも表示されない。
  行情報に依存しないため、通常のPRINT命令と違っていくらスクロールしても消えることがない
 HTML_PRINT_ISLAND_CLEAR(int)
  HTMLPRINT_ISLAND で宣言した領域を破棄し、表示を消す。
  この命令を行うまで常にHTML_PRINT_ISLANDの内容は表示され続ける。
  第一引数に数値を指定した場合、HTML_PRINT_ISLANDの第二引数で指定したレイヤーだけを破棄する。
  省略した場合、すべての領域を破棄する。
・式中関数の追加
 ・GDRAWTEXT(int ID , str TEXT , int x , int y)
  指定したIDのGraphicsの、座標x・座標yを起点に、TESTの内容の文字を描画する。
  文字の色、フォントなどはGSETFONT命令で指定する
  Emueraと同じフォルダ内にfontフォルダがあるなら、その中に置いてあるフォントファイル(TTF、OTF)を読み込み、インストールしているものとしてEmueraで使用可能になる。
 ・int HASH_XXH32( str ハッシュ名)
  ハッシュ名に対応したハッシュ値を、32bit内の数字で返す。
 ・int HASH_XXH3(string 入力)
  入力に対応した64bitハッシュ値を返す
・<font>タグに属性sizeを追加。
 <font size='x'>の様に指定する。
 コンフィグのフォントサイズに対してX%のサイズで表示するようになる。
・<div>タグを追加
 タグそのものには効果はなく属性を設定することで出力される内容に影響を与える。
 ・属性
  ・xpos = 'int' / ypos = 'int'
   出力される文字列等の位置がintの数だけ移動する。
   移動量はフォントサイズに依存しており、フォントサイズのint%となる。つまり100を指定することで全角1文字分移動する。
   '100px'のようにpxをつけて指定した場合はピクセル単位での距離指定となる。出力の情報自体は移動前の行で持っているので
   その行が見えない位置にスクロールされると出力された内容が消える。
  ・display = ('absolute-lefttop',absolute-leftbottom','relative')
   relativeはデフォルトの設定で、[xpos/ypos]が相対位置となる。
   absolute-lefttopは絶対位置指定で表示中の画面の左上を基準点とした位置から[xpos/ypos]で指定された位置に描画するようになる。
   absolute-leftbottomは左下が基準となる絶対位置指定となる。
   絶対位置指定の最中はスクロールなどをしても追従せずに同じ位置に表示され続ける。
  ・background_color = '#XXXXXX'
   背景を任意の色に変更できる
  ・height = 'X'
   divの高さを定義する。これを定義にすることにより文字がない部分にも背景色等が及ぶ
   高さはフォントサイズ単位で、pxを付けた場合はピクセル単位となる
  ・width = 'X'
   divの幅を定義する。これを定義にすることにより文字がない部分にも背景色等が及ぶ
   幅はフォントサイズ単位で、pxを付けた場合はピクセル単位となる
  ・border_width = 'X'
   エリアの外周の太さXの枠線を引く。
   Xはフォントサイズ単位で、pxを付けた場合はピクセル単位となる
  ・border_color = '#XXXXXX'
   枠の任意の色に変更できる
  ・padding = 'X'
   サブエリアの内周と文字の間の余白を定義する。この属性を定義しない場合、文字が外枠にほぼ密着するのに注意
   Xはフォントサイズ単位で、pxを付けた場合はピクセル単位となる
  ・hover-background-color = '#XXXXXX'
   この属性を宣言した<div>を<button>タグで囲んだ時、そのボタンにマウスカーソルを合わせると、<div>で指定した領域の背景色がこの色に変わる。
・UIの調整
・ローカライズ等(CRER氏に感謝)
・v22の取り込み
・様々な最適化、バグ修正

471あなたの名前を入力してください:2024/08/18(日) 20:41:21 ID:JX8hKOec
OSDN上のemueraソース、実行ファイル関係が落とせたので目下簡易的に共有
https://ftp.iij.ad.jp/pub/osdn.jp/emuera/
各中身についてのバージョン等はOSDN上のリリース番号確認の上、上記URL内の番号を確認すれば目的のファイルにアクセスできます

472あなたの名前を入力してください:2024/08/18(日) 21:16:52 ID:JX8hKOec
ちょっとわかりにくいので追記
>>OSDN上のリリース番号=ttps://ja.osdn.net/projects/emuera/releases/各番号←ここです

473妊)|д゚):2024/10/16(水) 19:43:42 ID:TxVeI8ho
○1824+v23
https://ux.getuploader.com/ninnohito/download/492

・GETNUM、GETNUMBでNICKNAME、MASTERNAMEを指定できないのを修正

474あなたの名前を入力してください:2024/10/16(水) 21:41:52 ID:EsSd0.Xc
>>473
うp乙

475妊)|д゚):2024/11/06(水) 21:31:37 ID:NkLIhmFk
○1824+v24
https://ux.getuploader.com/ninnohito/download/493

・ISNUMERIC関数で特定文字列がエラーになってしまうのを修正できたはず

476あなたの名前を入力してください:2024/11/06(水) 22:55:49 ID:ShECrbWU
うぽつ

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

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

479あなたの名前を入力してください:2025/06/01(日) 12:24:45 ID:j3.JSNgY
Emuera.NET 1824+v22+EMv18+EEv53の不具合?っぽいのここに挙げても大丈夫かな?
html_printの<div>でdisplay='absolute'にした時に、中のテキストがxpos無視して左端から書き出してしまうようなんだけど。

480あなたの名前を入力してください:2025/07/17(木) 16:19:46 ID:ShdfRhA.
仕様の範疇だと思うのですが、Emueraや自家版ではセーブデータにおける日時のロケール指定がされていないようで、たとえばWindowsで「令和y年/mm/dd」のようなロケールを使っていると
セーブデータの日時も07/07/17のようになってしまうようです。

[ 0] 07/07/17 16:16:37 1ターン経過難易度:E
[10] 2025/07/17 16:15:20 1ターン経過難易度:E
(上がEmuera・自家版、下が強制的に西暦対応のロケールを指定したemuera)

個人的には仕様の範疇だと思うのですが、ロケールを変更した際にセーブデータの日時を参照するようなバリアントではバグが起こらないとも限らないので想定した動作なのかどうか報告しておきます

481妊)|д゚):2025/07/20(日) 00:10:12 ID:msFutro.
>>480
確かに想定してなかったですね
どうするのが正解なんかなぁ…

482あなたの名前を入力してください:2025/07/20(日) 18:39:27 ID:z.EotAdg
>>481
やっぱり今から変えるのは破壊的変更ですよね。
ロケール指定できる機能を追加するのが妥当だと思いますが、他のEmueraとの互換性はどうなるのかな……?


新着レスの表示


名前: E-mail(省略可)

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

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

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

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