emuera (1-8-2-4) | 2019-01-27 00:29 |
emuera - etc 関連ファイル (1-8-2-1) | 2015-11-04 01:04 |
emuera - source ソースコード (1-8-2-4) | 2019-01-27 00:32 |
末尾にアルファベット又は"+v1"等が付くバージョンは私家改造版の作者様による更新です。
私家改造版及びbeta版は当サイトでは頒布していません。
最新版の更新履歴は最新の更新履歴を、
1.700~1.730までの更新履歴は1.730以前の更新履歴を、
1.700以前の更新履歴は1.700以前の更新履歴を参照してください。
追加された命令などの詳細はEmueraの拡張書式を参照してください。
以下、私家改造版Emuera1756beta2+v30に添付のreadmeより
・Emuera1756beta2+v30 内容: ○式中関数LOG10の実装に問題があり、比較的小さな値でも誤差が生じる場合があったのを修正 ○CALLTRAINの処理中の実装にtypoがあったので修正 ○デバッグコンソールの変数チェッカに式中関数を指定している時に、 表更新の結果がコード実行における例外の場合、その後の挙動がおかしくなるのを修正(できたはず) ○キーマクロ系を処理中にQUITにぶつかると変な挙動になるのを修正 (QUITにぶつかった時はそこでマクロ処理を打ち切るようにした) ○INPUT系の実行時にボタンチェックをするように変更(古いマシンで重くなるようならバックアウトの方針で) (現在様子見中) ○FORM構文における、略記マクロが働きようがなかったバグを修正 ○()内に式が存在しない場合例外が投げられるのを修正 ○LOOP行がエラー行の時にDO~LOOP内でCONTINUEが入ると.Netが例外を投げるのを修正 ○コード解析の処理で.Netが例外を投げてくれる事故を起こしうる挙動をしていたのを修正 ○デバッグコマンドで例外が生じた場合、その後の挙動がおかしくなるのを修正 ○CALLTRAINENDがイベント関数扱いのため、CALLTRAIN終了時にエラーになるのを修正 @CALLTRAINENDはイベント関数ではないため多重定義できないことに注意してください ○#DIM DYNAMIC変数が再帰呼び出しに対して正しくない挙動を示すのを修正 ○#DIM変数用の処理が#DIM変数を持たない関数の呼び出しに20%近い不必要な処理時間を発生させていたのを修正 プログラムにおいて、関数呼び出しとforeach列挙のオーバーヘッドは案外馬鹿にならないという好例かも ○#DIM STATIC変数のみの関数の呼び出しに対して#DIM DYNAMIC変数を持つ関数と同等の処理が行われることによる無駄な処理時間を排除 #DIMなし関数の場合とほぼ同等の処理速度まで改善 ○SWAPの処理のバグ(1736eで修正されたもの)がregressしていたのを修正 ○PRINTK系が正常に動作しなくなっていたのを修正 ○BEGIN TRAIN時のSTAINの初期化の仕様がeramakerと変わってしまっていたのを修正 ○FINDCHARA()の第1引数の変数にキャラクタ変数以外が与えられた場合のハンドリングができていないのを修正 ○FORM構文を含むGOTOFORMが全く動きようがなかったのを修正 ○CALLTRAIN中にUSERCOMの表示がされてしまうのをしないように修正 (どうしても表示をしたい場合はNOSKIP~ENDNOSKIPを使ってください) ○関数の再帰呼び出しの処理で全く洒落にならないとんでもない大事故があったのを修正 式中関数の場合も同様に事故るので修正 ○マクロ実行時に強制待ちフラグの立ったTWAITが原因でタイマーの処理がおかしくなるのを修正 ○変数の引数が多いときの警告表示がおかしいのを修正 ○PRINTDATA系やTRYCALLLIST系構文のスコープ内に$ラベルが定義できてしまうのを修正 (SELECTCASE内の$ラベルを外部から呼び出した場合をどうハンドリングするかはTODO) ○LINECOUNTの実装をCLEARLINEの実装と同一に これでないと、環境によって同じ表示によるLINECOUNTの変化が変わってしまい画一的動作ができないので ○定義済み色名からフォント表示色を指定できるSETCOLORBYNAME追加 書式:SETCOLORBYNAME <色名> 定義済みの色名はKnownColor列挙体(http://msdn.microsoft.com/ja-jp/library/system.drawing.knowncolor%28v=VS.80%29.aspx)に準拠 ○RETURNの引数省略時の挙動がeramakerと違ってしまっていたのを修正 ○TINPUTSが正しく動作しないってか、コードのtypoで悲惨なことになっていたのを修正 ○引数を定義できないシステム関数中でARGを使ってもARG使用に関する警告が出ないのを修正 ○終了時にごく稀に例外が投げられうる可能性があるのに対してアドホックに手入れ ○起動中にタイトルに戻る、コードの再読み込み等ができて挙動が怪しくなり得るためできないように変更 ○コードの再読み込み処理が豪快に例外を剛速球で投げ込んでくれる場合がいくらでもあったのを修正 ○解析モード終了時、コード解析時エラーによる終了待ちの時にタイトルに戻るを使えないように変更 ○デバッグウィンドウで式中変数をトレースしているときに例外を投げると、Emueraの挙動がおかしくなるのを修正 ○少々のコード整理 ○コードパース時にEmueraがハンドリングできていない処理上の問題によって、 .Net側から例外が投げられた時に情報としてスタックトレースを投げるように一時変更 (開発中のみの一時的な処置かもしれないし、正式版以降もそのままかもしれない ついでに、スタックトレースの表示について折り返しが生じないように変更 スタックトレースが投げられた時は、報告の際にバグの詳細とともにスタックトレースを Ctrl+Cで開くログウィンドウもしくは、ログをファイルに出力したものからコピペしてください スタックトレースにはどういう流れの処理の中で例外が起きたかの情報があるため、 修正作業の役に立つ物ですので、ご協力をお願いします) この変更に事故があったので修正 作業従事者:妊)|д゚)の中の人
以下、私家改造版Emuera1756beta1+v10に添付のreadmeより
内容:LOCALおよびARGに対するVariableSize.csvでの指定に関するバグ修正 SETFONTを既存の引数無しを受け付けるように変更 ARG周りの処理の処理法を変更 (処理の流れから、要素数拡張処理は作成時ではなくて関数ソート処理終了時に可能 で、さらに想定仕様からすれてたので修正) 通常命令版POWERの引数処理がとんでもない大事故コードだったのを修正 _rename.csvで一部可読性もろもろに問題のあるコードを書けてしまう部分があったのでできないように (具体的には関数宣言とプリプロセッサの行の全置換をできないように変更) _rename.csvの置換キーが二文字以下だと、置換処理がなぜかエラーを返してしまうバグを修正 FORM構文の解釈でエラーを拾いきれず例外を投げる場合があるのを修正 PRINTCを並べる数に絡んで解析モードでエラーが起こる場合があるのを修正 解析モード時に警告からエディタを開けないバグ修正(ついでにCSVにも対応させたり) 起動時エラーボタン化まわりの処理をちょっといじった RESULTの引数の互換警告のtypo修正 ADDCHARAの引数処理で豪快に誤爆ぶちかますのを修正 解析モードの関数解析処理が1756での変更とConflictして関数解析の処理が破綻していたのを修正 作業従事者:妊)|д゚)の中の人
chara*.csvの保持方法の変更。メモリ消費量を少し削減 「同名の非イベント関数が複数定義されたとき警告する」オプションによるエラー落ちを修正 その他コード修正
1755aベース、1755cをマージ。1755d以降は取り込んでいません。 擬似変数LINECOUNT追加 式中関数CONVERT追加 プライベート変数追加(暫定版) 引数解析時に定数式を展開するように処理を変更 > ABL:技巧 = CSVABL(0, GETNUM(ABL, "技巧"), 0) > ABL:2 = 2 上の2行は同じ速度で動作するようになります。 互換性に「関数・属性については大文字小文字を無視しない」オプション追加 処理の変更に伴い「ロード時にFORM文字列を解析する」オプション消滅。 「eramaker互換性に関する警告を表示する」オプションをシステムから解析へ移動。 システムに「全角スペースをホワイトスペースに含める」オプション追加。 デバッグコンソールがずれる問題を修正 SIFで飛ばしてはいけない行が飛ばせる問題を修正 ソース内の綴りミスを修正 論理XORがオペランドを2回評価する場合があった点を修正。 SKIP中、TINPUT又はTINPUTSに遭遇したときに警告からエラーへ切り替え EVENT関数中でのJUMPの動作をeramakerに合わせ修正 EVENT関数における#PRI、#LATER、#SINGLEの効果をeramakerにあわせ修正 IF文や代入文での引数の省略を警告対象に。eramakerでは動作が不定なため 識別子に.(ピリオド)を含められないように変更 \@~?~#~\@形式の3項演算子で#が見つからない場合を警告対象に その他、コードの大幅な改変
以下、私家改造版1755tに添付のreadmeの○改造内容の節
○改造内容 ・1755t 1. 関数宣言行で_Rename.csvを使った置換が動作しないのを修正 2. 関数毎にLOCAL、LOCALSの要素数を指定可能に プリプロセッサ#LOCALSIZE <設定する要素数>および#LOCALSSIZE <設定する要素数> 設定できる値は0より大きい整数 それ以外もしくは解釈できない文字列が与えられた場合は無視されます(Variablesize.csvの設定値を使用) 現状、イベント関数は一番最初に実行されるものの設定を使用(ここはTODO) 3. ARG、ARGSの仕様変更 引数で定義された分だけを問題なく使えるだけの要素数を確保するように変更 引数でARG等を使わない場合に処理中でARG等を使うのはLv2の警告(実行時エラー)となります これは上の変更でLOCAL等のかわりにARG等を使う必要性がなくなることから仕様となります 4. TOINTに'+'もしくは'-'のみを与えた場合に例外となるのを修正 0を返すように変更 ・1755s 1. TINPUT系、TWAITの実装のバグ修正 特定操作で想定外のタイマー動作を起こせた 2. お金の単位を取得する変数MONEYLABEL追加 名前のとおり ・1755p,q,r 1. SAVEGAMEの際に関数スコープが正常に復元しない場合があるのを修正(q,rでそれぞれエンバグ修正) ・1755o 1. 汚れの初期化処理で問題があったのを修正 ・1755n 1. 非イベント関数のシステム関数にプリプロセッサを用いても警告扱いにならないのを修正 もちろん、プリプロセッサは効力ありませんし、イベント関数以外を複数定義しても全部動くわけでもありません 2. プリプロセッサ#ONLY追加 次バージョン用に試作したのをそのまま投入 これが指定されたイベント関数1つのみが実行され、他の同名イベント関数を実行しないという指定 これが指定された同名イベント関数が複数ある場合も実行されるのは「最初の1つ」のみとなります ・1755m 1. デバッグコンソールの変数ウォッチにキャラクタ変数を扱う式中関数を入れた場合、 タイトル画面や該当するキャラがいない関数中でエラーになった場合に正しく動作しなくなるのを修正 ・1755l 1. RETURNFORMに2つ以上の引数を持つ文字列変数を渡すとエラーになるのを修正 でも、これ普通にRETURNで戻すべきであって、RETURNFORMは{~}や%~%を使いたい場合に使う物です、確か 2. 文字列変数に対して (変数) += \@A ? B # C/@ のように、三項演算子での自己加算構文を使うとエラーになるのを修正 典型的なチェック不足での事故 3. PRINTDATAK系が動かないという今までも誰も気づいてなかった致命的バグを修正 要は誰も使ってないということ 4. スクリプト実行周りをさらに整理 フロー処理は多少、全体でちょっとだけ高速化 多分、これが現状のソース構築での限界速度に近いと思われる これを次期本家Emueraに統合してどうなるかというところ ・1755k 1. タイトル画面等でのデバッグコマンドでの式中関数呼び出しが例外になるのを修正 ひどい事故だった ・1755j 1. 文字列三項演算子のパースに問題があったのを修正 %~%中に剰余演算子%があった場合正しくパースできなかった ・1755i(食べられずに済んだ) 1. フロー系処理の若干の高速化というか、処理仕様の若干変更というか 基本はProcess上で全てのスクリプトプロセスが出来るように変更 ProcessStateはユーザー定義式中関数呼び出し等必要な時だけProcessの一部変数のスナップショットを取るだけに使うように これで、ProcessStateが邪魔でコードの整理が難しいということはなくなる…はず 2. JUMPの処理の漏れ修正 うん、これは事故るわ 3..Net側で投げる例外(Emuera側でハンドルしていない例外)について、スタックを投げるように変更 おもに開発者のデバッグを楽にするため .Netのスタックは十二分な情報があるので便利 ついでに、表示がかぶって変にならないように ・1755h 1. マクロの読み込み処理を手入れ CONFIGと同様なパースをしていたため、一部正しく読み込めなかった ・1755g 1. JUMP系のエンバグ修正 JUMP後の終了時の処理が正しくなかった ・1755f 1. インクリメント・デクリメントを若干高速化 20%弱程度の高速化 A++ よりA = ++Aの方が速くなるというとんでもな事態に 2. ++(A + 1)を解析時にエラー構文としてハンドリングできないのを修正 ・1755e 1. インクリメント・デクリメントが働かないのを修正 コード書き換え時の処理漏れ ・1755d 1. 式中関数の処理の致命的エラッタを修正 うん、まさかあんなところでnullを投げられてたとは思わなかった ・1755c 1. コードの高速化はまだ続いていた 計算等の数値や文字処理が平均的にやや高速化 2. 三項演算子の手入れ \\@をうまくハンドリングできていなかった ・1755b 1. 無駄なstring.Formatの使用を削減 表示長指定のFORM構文が若干の高速化 2. FOMR構文の表示長処理でエラーが起こせ得たのを修正 内部処理と衝突を起こせる文法が存在した ・1755a 1. 環境によってペーストで問題が発生するのに手入れ 多分これなら大丈夫と信じたいところ 2. 引数解析のハンドリング強化 意外とまだまだ必要箇所は多そう 3. 1740bでのPRINTFORMSにおけるエンバグ修正 三項演算子が来る場合を忘れていた 他にも色々手入れ、遅くはなってるが、エスケープはかなり安全に処理 (以下スクリプトエンジンおよび内部処理の周りの高速化関連) a. CALL、ユーザー定義式中関数呼び出しの高速化、これに伴うファイル再読み込みの問題修正 CALLはおよそ40%、ユーザー定義式中関数は20%高速化 b. SETの高速化 代入先の変数が固定の場合および、代入する値が定数(固定値の変数除く)の場合を高速化 A = 0 がおよそ15%程度高速化、代入先のみが固定の場合で1~10%ぐらいの高速化、右辺定数の場合で10%程度ぐらいの高速化(だと思う) 特に代入先が非キャラクタ変数の多次元変数で固定の場合は相当高速化 c. FORM構文に普通の文字列が入っている場合における文字列取得の高速化 殺人的に無駄な処理だらけだったので、ずばっと、およそ40~50%程度の高速化 d. 変数数値取得の若干の高速化 ほとんどのケースで使う処理なので、何気に高速化が重要なところ それなりには速くなったと思う。変数が多いほど効果は大きいと…思う e. 命令系内部処理への高速化パス適用 インクリメントとかは速くなったはず f. REPEAT、FORの高速化 LOCAL、ARGでのregressionも解決 g. CALLFの高速化 ほぼ50%高速化 h. ALIGNMENTの高速化 自前処理で書き直したら55%ぐらい速くなった i. LOCAL、ARG、LOCALS、ARGSのアクセス高速化 多分25~30%ぐらい高速化 j. TIMESの高速化 10%ぐらい速くなった感じ k. ABLENAME等CSVで名称指定のconstな文字列変数へのアクセスの処理手入れ STR = %ABLNAME:0% で75%ほど高速化 l. 文字列三項演算子の処理高速化 結構速くなったはず m. ENCODETOUNIの高速化 IRCでコードくれた人thx n. これまでの高速化による解析処理の増加のうち、明らかに無駄処理のものを削除 多重判定になってるのがいくつかあった o. FORM文字列の処理の大幅すぎる手入れ たくさん手を入れすぎて、最早何をしたか覚え切れてない いずれにしても表示文字長指定の構文は大幅に高速化(特に定数の場合) p. 多重配列に対するVARSETの処理変更 とんでもないボトルネックがあったとは思いもせなんだ q. VARSETに絡む諸々 いつの間にかregressionしていたのが、元の速さぐらいには戻ったという程度かも r. スクリプトエンジン関係のコード整理 デッドコードをさくっと s. 速度的にクリティカルな処理で多用されている重い変数アクセスをある程度整理 処理全般が5~10%高速化した もう少し手を広げれば、一部命令も高速化できそう t. WINAPI+イメージバッファなしでの描写のちらつきを低減できたかも GDI+だとこの処理が変に動くのでWINAPIでのみ動くように力業処理 u. 内部処理の例外throw削減 Emuera開発者だけ地獄だが、速度的にはかなりおいしい v. ARRAYSHIFTの高速化 無駄処理の削除と処理速度はいじる要素数に大きく依存するような処理系に 要素数が少ないほど速い10個ぐらいなら100万回で1秒未満 対象が全体でこれまでと同等 改造者、文責:妊)|д゚)の中の人
以下、私家改造版1753bに添付のreadmeの○改造内容の節
・1753b 1. 別実装で配列要素数の同期処理実装 色々仕様が変わってます ・これまで → ・これから 要素数の指定は後ろ優先 → 要素数の指定は値が大きい方優先(無指定の場合はある方が優先) PALAMNAMEはPALAMに依存 → PALAMNAMEはPALAM、JUELにあわせて自動で調整されます(PALAMNAMEがJUELより少ない場合は警告表示) ちょっとむちゃくちゃしてるので、Emuの人整理よろ ・1753a 1. VariableSize.CSVのCSVファイルを用いる数値変数とその名前変数の配列要素数同期を全てなかったことに PALAMだけ仕様が違うというのはかえって混乱の元になるので、こういうところは仕様を一元化しておくべき 2. 設定の互換性の各オプションにツールチップで補足説明追加 ついでに、一括でeramaker仕様にするボタンと、Emuera現行仕様にするボタンを追加 前者はONとOFFのどちらがどういう仕様なのかとかわからない人が多いだろうということで 後者は今は数が少ないからいいが、数が増えたときのことを考えて 改造者、文責:妊)|д゚)の中の人
以下、私家改造版1752aに添付のreadmeの○改造内容の節
・1752a 1. 平文強制出力命令PRINTPLAIN、PRINTPLAINFORM実装 書式:PRINTPLAIN <表示文字列> 内容:引数の文字列を平文として出力する、この時ボタン文字列があってもボタン化しない 2. [SKIPSTART]等のプリプロセッサ行の後ろに何か続いている場合に警告を出すように変更 仕様上、プリプロセッサと同じ行に書かれたものは一切無視されるので注意してください 3. ペースト等のショートカットキーのハンドリングの問題修正 入力キーの判定を厳密に、一部問題を起こせたのでそれを解決 改造者、文責:妊)|д゚)の中の人
以下、私家改造版1751bに添付のreadmeの○改造内容の節
・1751b 1. エラー対策に入れたコードが悪さをしてたので削除 ・1751a 1. 解析モードおよび起動時エラー終了時にログが2回出力されるのを修正 2. 起動時の警告文が2行以上に分かれないようにした(以前の仕様と同じにした) 3. ライセンスファイルを最新版に同期 改造者、文責:妊)|д゚)の中の人
以下、私家改造版1740bに添付のreadmeの○改造内容の節
・1740b 1. RETURN、RETURNFORMを複数の返り値に対応 RETURN <数字1>(, <数字2>, <数字3>, ...) 先頭からRESULT:0、RESULT:1...という風に代入される 2. 文字列三項演算子のパース処理を手入れ 色々できてなかった 3. 起動読み込み時にエラーによる終了待ち時にエラー及び警告ログからファイルを開けるように手入れ 正常起動時はそもそも必要ないよね? 4. デバッグ入力に定数・変数・式中関数を直接渡した時にその結果を表示するように手入れ 5. GDI+でボタンを作るときにタブ文字の処理に大問題があったのを修正 PRINTBUTTON関係で簡単に再現できた、まあタブ文字を好きこのんで使う人は少ないのでマイナーな問題ということで 6. PRINTFORMS系のエスケープ文字のハンドリングを修正 PRINTFORMS "\\"がエラーになっちゃあいけません 7. GAMEBASE.CSVの値を読み込むところの読み込みハンドリング強化 まあ、そもそも数値求められてるところに文字入れる方が悪いというのは事実 8. デバッグコマンドでSAVEDATAを使えないように変更 動作上の問題はないとは思うが精神衛生上よろしくないので 9. 過去の入力ログを追いかける時に←キー、Homeキー、BSキーの処理が正しくできていなかったのを修正 直した後の挙動は仕様と言うことで、どうすればいいかわからんorz 10. Ctrl+Ins、Shift+Insのハンドリング追加、テキストペーストの仕様調整 コピペのセカンダリなショートカット、昔直したペースト処理のバグを再現できたりした。 ついでに、ペーストされるテキストからは書式指定子を取り除いてからペーストさせるようにクリップボードを処理するようにした ・1740a 1. VARSIZEにCSVで指定する文字列変数の一部を指定すると例外を吐くのを修正 2. VARSIZEに文字列変数を直に与えてしまった場合等におけるエラーハンドリングを修正 (ここは今後さらに手入れする方針で) 改造者、文責:妊)|д゚)の中の人
以下、私家改造版1739cに添付のreadmeの○改造内容の節
・1739c 1. 文字列変数に対するVARSETが正しく動作しないのを修正 2. デバッグコマンドでユーザー定義文中関数を呼び出しエラーを出すと、ユーザー定義関数がデバッグコマンドで正常に動作しなくなるのを修正 3. TWAITに対して\nを打ち込むと、状況次第では動作が異常になるのを修正 4. _Replace.csvのパース処理に問題があったのを修正 区切り文字の,の前にスペースがないと、1項目の最後の文字がなくなる問題があった 5. ADDCHARA、ADDSPCHARA、DELCHARAを複数数値引数に対応 一度にたくさんのキャラを足したり消せるようになりました 6 指定したキャラのみを抽出し、他を削除するPICKUPCHARA追加 書式:PICKUPCHARA <対象キャラ>(, <対象キャラ>, ....) 内容:引数で与えたキャラのみを残し他を全て削除 TARGET等の変数は処理に追随します 基本負の値は御法度ですが、例外としてMASTER、TARGET、ASSIのみ負の値の場合無視するようにしています 7. 文字列に対してUNICODEのバイトコードを返すENCODETOUNI実装 書式:ENCODETOUNI <対象文字列(FORM型文字列)> 内容:与えられた文字列をユニコードにエンコードしてそのバイトを数値として返す RESULT:0 文字数 RESULT:1~ バイト数値 8. エラーの表示に表示スタイルが反映されないようにした 9. 関数引数周りのエラーに関する処理周りの手入れ 10. 右矢印キーの動作に関するエンバグを修正 ・1739b 1. 引数のないいくつかの命令が例外を吐く問題を修正 2. 引数のないCUSTOMDRAWLINEが無限ループに入るのを修正 3. GETSTYLE命令が命令として認識できないのを修正 4. RichTextBoxにテキスト以外がペーストできたのを不可に 5. システム入力待ち時に引数を持つユーザー定義文中関数をデバッグから呼び出せないのを修正 ・1739a 1. TRYCJUMP、TRYCGOTOが意図通り動作しないのを修正 2. オプションのボタンを折り返さないがONの時、PRINTBUTTONの後にDRAWLINEなどの行をまたぐような表示処理をすると 意図と反して改行してしまうのを修正 3. 配列をシフトする命令ARRAYSHIFT実装 書式:ARRAYSHIFT <対象変数>, <ずらす数>, <ずらしてできた空白領域の初期値>{, <ずらず配列範囲の初値>, <ずらす配列要素の範囲の数>} 内容:配列変数を指定した数だけずらす、正の値で添え字の大きい方へ、負の値で小さい方にずらす 配列の範囲からはみでた値は掃き捨て、ずらして出来た空白領域は第2引数で指定した値で満たす 省略可能な第4および第5引数を使うと一部の範囲のみをずらすことができる 4. 配列要素を部分削除する命令ARRAYREMOVE実装 書式:ARRAYREMOVE <対象変数>, <消す範囲初値>, <消す要素数> 内容:配列変数を指定した初期値から要素数分だけ削除し、後ろを値を詰める 消す要素数を0以下にすると初期値から後ろ全て消去になります 5. 指定した値群が全て異なる値かをチェックする命令NOSAMES実装 書式:NOSAMES(<値1>, <値2>{, <値3>, ...}) 内容:引数に渡した値が「全て異なる」ものであれば1を返す、そうでなければ0を返す 6. 指定した値群が全て同じ値かをチェックする命令ALLSAMES実装 書式:ALLSAMES(<値1>, <値2>{, <値3>, ...}) 内容:引数に渡した値が「全て同じ」であれば1を返す、そうでなければ0を返す 7. 関数重複の警告を解析モードでは強制表示するように変更、表示がおかしいのを修正、最初に定義された場所を表示するように変更 8. 状況によって不必要にサウンドが鳴ることがあるのを修正 9. SETCOLOR等でフォントが色や太字等になっている状態でタイトルに戻った場合、変更が反映された状態のままなのを修正 10. CSVでの EQUIPに対応する表記「装着物」追加 改造者、文責:妊)|д゚)の中の人
以下、私家改造版1738hに添付のreadmeの○改造内容の節
・1738h 1. ONEINPUT系に関する大がかりな修正 報告されていた様々なトラブルに対応 既存のフレームワークでは綺麗に動かすのは困難と判断し、入力部分のコントロールをtextBoxからRichTextBoxに変更。 この変更に関する修正込み ・1738g 1. 代入行に対する_Rename.csvによる置換の挙動に問題があったのを修正 2. ONEINPUTと(ONE)INPUTSの組み合わせが(ONE)INPUTSがスキップされる場合があるのを修正 3. 解析モード時にERBファイル内の関数の一覧を表示するように変更 ・1738f 1. CALLFORM等で三項演算子が使えないのを修正 2. CSVXXX系で第2引数に負の値を与えると例外を吐くものがあるのを修正 3. エラーログからのテキストエディタ起動関係で、引数が最後に半角スペースを要求する場合に正しく処理できない等を修正 4. メニューからERBファイルを読み直すとき、_rename.csvの内容が反映されないのを修正 5. 一文字限定入力自動処理命令ONEINPUT、ONEINPUTS実装 書式:ONEINPUT or ONEINPUTS 内容:一文字のみの入力を受け付ける、入力すると自動的に次の処理に移る 6. 変数の値の複数からの一致確認命令GROUPMATCH実装 書式:GROUPMATCH(<値1>, <値2>,{<値3>,...}) 内容:値2から値N(任意の数)までの値に値1と同じ値のものが何個あるかを返す、ない場合は当然0 7. STRFINDのユニコード版STRFINDU実装 書式:STRFINDU(<検索対象>, <検索する文字列>{, <開始インデックス>}) 内容:STRFINDのユニコード版、返り値の文字の位置と開始インデックスがユニコードでのカウントになっている 8. PRINTBUTTONのPRINTC、PRINTLCタイプ、PRINTBUTTONC、PRINTBUTTONLC実装 書式:PRINTBUTTONC <表示文字列>, <ボタンの値(数値or文字列)> PRINTBUTTONLC <表示文字列>, <ボタンの値(数値or文字列)> 内容:PRINTBUTTONをPRINTC、PRINTLCと同様の整形で表示する 9._replace.erbでPBAND:0の初期値を指定できるように修正 書式:PBANDの初期値, <値> 10. REDRAW 0時にログ描写が乱れるのを修正 11. GDI+でフォントサイズを変更して再起動するとPRINTBUTTONやPRINTC系がずれてしまうバグを修正 ・1738e 1. REDRAW 0を指定時にメニューからタイトルに戻るとREDRAW 0の状態が引き継がれてしまうのを修正 その他コードの読み直し等REDRAW 0であるべきでない状況が呼び出される時は一時的にREDRAW 0を解除 2. コード実行中のエラーについて、エラー表示をボタン化し、テキストエディタで開けるように デフォルトは確実に入っているnotepad 設定からエディタのパス指定が可能 また、コマンドライン引数から行数指定が可能なエディタは、 下のコマンドライン引数の項目に、その指定用の引数を指定 (terapadであれば"/jl=XX"なので"/jl=") すれば、その行にあわせて開いてくれる…はず 起動時解析中のエラーはボタン関係の処理が難しいので対応できない公算大 3. ログの行数の下限を500行に あまりに少なすぎると表設定によっては例外が発生するため 4. PRINTBUTTONで改行コードをomitするように変更 ボタン周りは改行を考慮していないため ・1738d 1. $で始まるGOTO用ラベルの同一関数内での重複を捕まえられていなかったのを修正 重複したラベルにGOTOかけると最初に定義した方に飛ぶため、予期せぬ動作を招く場合がある なので、警告として表示すべきだったが、処理ミスで表示できていなかった 2. SAVEDATAの第2引数に改行文字"\n"を使えないように変更 セーブデータが壊れるための処置 3. 特定条件でUPCHECKが処理されないのを修正 普通はこのような状況は起こらないはずだが念のため ・1738c 1. DO~LOOP内でのCONTINUEが例外になる場合があるのを修正 引数解析をしない場合、処理中で未処理の引数の値を取得しようとして例外を吐いていた 2. EXPLVおよびPALAMLVの初期値指定を_replace.csvで可能にした 書式:EXPLVの初期値, <初期値"/"区切りで> PALAMLVの初期値, <初期値"/"区切りで> 3. CUP、CDOWNに対応するUPCHECKであるCUPCHECK追加 書式:CUPCHECK <キャラ> 内容:引数で指定したキャラに対するUPCHECKを走らせる、それだけ 4. 西暦1年1月1日からの経過時間を秒で取れるGETSECOND追加 書式:GETSECOND(命令形式) GETSECOND() (式中関数形式) 内容:上のとおり、2回使って経過時間を秒で取るぐらいが相場な命令 ・1738b 1. 特定の条件下で@EVENTSHOPからBEGINを行うと例外が発生するのを修正 簡単に例外再現できるエラーなのでクリティカルにも程ががが 2. 式中関数版のCHKDATAを実装 3. CSTR.CSVの要素指定がCharaXXX.CSVで使えないのを修正 4. CSVCSTRが使い方によってはエラーを誘発するのを修正 5. 代入行でLOCAL = 1のように全角スペースが入ってる場合のエラー表示の改善 ・1738a 1. WAIT系の処理でボタンの世代が進んでしまうのを修正 昔の処理ではWAITでは進まないのが正しいはず 2. CSTRを文字列要素指定に対応 CSTR.CSVで定義しますが、あくまでもこっち他の数値配列の文字列指定と同様に配列要素の数字との対応を定義します。 間違っても、STR.CSVのように中身を指定するものではありません。(中身はCharaXX.CSVで定義) 間違って勘違いして、うまく動かないというのは完全に自己責任ですので、こちらでは対応しません、あしからず 3. SELECTCASE構文のエラーハンドリング強化 CASE分岐の外に命令が存在している場合警告を表示 4. 文字列置換命令REPLACE実装 書式:REPLACE(<置換対象文字列>, <置換対象パターン>, <置換後の文字列>) 内容:置換対象文字列を置換対象パターンで検索し、ヒットしたら置換後の文字列で置き換える 内部処理は思いっきり正規表現です。第2引数はC#の正規表現の仕様に準じて動作します。 そのため、()や[]、$、/.*+等の正規表現で用いられる記号はエスケープ必須となります 5. 関数に対して#~が複数定義されたときのパース処理の仕様を調整 #FUNCTION、#FUNCTIONSが同時に定義された等をきちんと警告処理に 6. 関数定義のARG、ARGSに初期値を指定できるように拡張 <関数名>, ARG = 1, ARGS = "A" 指定可能な初期値は定数および定文字列のみ ARG、ARGS以外には指定不可 また、引数省略の呼び出し時に、ARG、ARGS以外も初期化されてしまうのをしないように変更 7. 画面サイズの取得が正しい値を返さないのを修正 8. 表示関係無視フラグを無視する区間を指定できるNOSKIP~ENDNOSKIP実装 この2つで囲った区間はSKIPDISP 1の状態でも表示等される 主にINPUTが必要な場合に使用するとよい また、この命令はSKIPDISPの状態に影響しないので、 SKIPDISPフラグが立ちうる環境下のコード(例えば表示/非表示のある口上関係)では これを使うと、絶対に表示する必要がある場所をきちんと表示できるようになります 9. PRINT等の画面出力命令およびWAIT、TWAITなどの命令を無視するフラグを設定する命令SKIPDISP追加 書式:SKIPDISP <数値> 引数:0 無視しないようにする 0以外 無視するようにする 内容:このフラグを立てると、PRINT等の出力が一切行われなくなる また、このフラグが立ってる間にINPUTおよびINPUTSに達した場合は ユーザーが何をすればいい知る術がないこと、また飛ばせば無限ループに入る可能性が高いため 警告文と対処法を明示した上でエラーになるようにしてあります 今一般に使われる口上の実装では口上の非表示が可能な場合、 表示と非表示でコマンドの結果が変わったり、動作が変わってしまう場合がある そこで、これを立てた上で口上を呼び出せば、表示はされることなくそれ以外の処理が行われるため 表示/非表示で同じ動作を期待できる INPUT/INPUTSがかぶる場合は上のNOSKIP~ENDNOSKIPで囲んだり、 SKIPDISP 0しておいて、INPUT処理後に再度SKIPDISP 1するなりの対策があります(一応前者推奨) ちなみに今無視するフラグが立ってるかはISSKIP()式中関数で取得できます 10. ログ出力命令OUTPUTLOG実装 やり過ぎはディスクの寿命を縮めるのでほどほどに 改造者、文責:妊)|д゚)の中の人
以下、私家改造版1736jに添付のreadmeの○改造内容の節
・1736j 6. Configに起動時にウィンドウを最大化するを追加 7. TINPUT系の時間切れ関係の表示をカスタマイズ可能に _Replace.csvで「時間切れ表示」で設定可能 8. _Rename.csvの置換対象文字列に「,」を使えるように変更 CALL TEST\, LOCAL\, LOCAL:1 , テスト とすれば、 [[テスト]]はCALL TEST, LOCAL, LOCAL:1と置換されます 9. _Rename.csvの仕様に一部制限を策定 RAWLIN, テスト D[[テスト]]E や F LOCAL == 1, あ SI[[あ]] のように、_Rename.csvを文法破壊に使えてしまうため、 命令を含む文字列は1行丸々の置換以外ではエラーになるように変更 つまり、 PRINTL テスト, 表示 [[表示]] はOK [[~]]の後ろにさらに引数等を追加した場合はエラーになります 変数の一部置換等はチェックしようがないため今まで通りの動作となります 10. 構文中に全角スペースが含まれる場合を明確に例外に 1736hの時に一緒に実装しておけばよかったが忘れてた ・1736i 1. CVARSETが正しく動作しないバグを修正 はいはいtypo、typo('A`) 2. 文字列中の指定部分文字列の数を取得する命令STRCOUNT追加 書式:STRCOUNT <検索対象文字列>, <検索文字列> STRCOUNT(<検索対象文字列>, <検索文字列>) 返り値、ヒットした数 ちなみに内部的には正規表現処理なので、検索文字列の書式はC#の正規表現の仕様に準じる 3. GETTIMESの時間の書式が昔のままになっていたのを修正 ただのインプリ漏れ ・1736h 1. 全角スペースを読み飛ばす仕様になっている部分があまりにも多すぎて、コードの互換性壊れまくりだったのを修正 eramakerではエラーになる構文中の文字列以外での空白等が無視ドスルーされまくりなど eramaker構文のみなにもEmueraでは動かないコードが大量発生しえたという恐ろしいバグ 2. CLEARLINEやFONTSTYLE、TINPUT系の第1引数に直接負の値を指定場合は警告を出すように変更 3. CALLFORM系が一切使われていないコードでTRYCALLLISTから呼び出されるだけの関数がエラーを誘発する場合があるのを修正 相当レアなケースだが、この条件だと該当関数が呼び出されない扱いになる 4. TIMES関数の第1引数に前置演算子のついた変数を渡した場合に投げる例外を変更 書式不正に伴う、内部処理での例外なので、ユーザーにはわけわかめなため、 書式不正であることを明確にした 5. GOTOで直接REPEAT~REND、FOR~NEXT構文の中に入るとループ末端で例外を投げるのを修正 eramakerではREPEATを経由せずにRENDに到達した場合は無視されるので、これにあわせた WHILE~WENDとDO~LOOPは問題なくループします 6. 一部数値変数と文字列変数の配列要素数を同期するように変更 CSVで設定できる~NAME系文字列変数とそれに対応する数値変数の配列要素数の設定を 一方のみ指定すれば両方同じ要素数になるように変更 7. TCVARをcsvによる文字列要素指定に対応 変数TCVARNAME追加 8. 文字列三項演算子で処理される文字列の先頭と最後の\nが無視される問題を修正 9. macro.txtの挙動に関する変更 macro.txtがない状態でマクロが全て空の場合、macro.txtを生成しないように変更 マクロが読み込み時からEmuera上で変更されてない場合は終了時にmacro.txtを更新しないように変更 10. 三項演算子中で""中の#を区切り演算子として認識しないように修正 生で使う場合は相変わらずエスケープ必須です 11. 1のエンバグ修正 ・1736g 1. 空行判定式中関数LINEISEMPTY()追加 この関数を呼び出した時点で、PRINTL の結果がただの空行になる場合には1が、そうでなければ0が返る PRINTC系で条件に応じたボタンを書き連ねる場合に、最後にこれを見れば、 表示されるボタンがあるかないかを判別し、なければ専用の表示をするとかも変数を使わずに容易に可能 2. CALLF系が式中関係で使えなかったのを修正 CALL系なのでダメに見えるが、単に式中関数を処理するだけなので、問題なく使える 3. ログ出力でファイル名の指定が無視されるのを修正 4. 1736fの挙動変更のエンバグを修正 クリティカルではないリグレッションでした ・1736f 1. 一時変数のキャラ変数版TCVAR追加 基本的な動作はTFLAGと同じ、違いはキャラ変数であることのみ 2. ボタン周りの処理仕様を大幅に手入れ ログ内の使えるボタンを拾えるように改造 ホイールスクロール時にボタンを判定するように変更 3. インプットマクロの処理のバグがregressionしていたのを修正 よくある話 4. ホイールやpageDown(Up)でのスクロール周りの処理で不必要な表示処理呼び出しが起こらないように修正 5. PRINT系文字列で先頭が\nだと表示がおかしくなるのを修正 相当昔から存在していたバグ、もちろん今まで見つからなかったのは誰も普通こんなことしないから 6. 変数の引数に直接式中関数を渡すとパースでエラーになるのを修正 何かしらの演算をする場合はもちろん()でくくる必要があります 7. システムデフォルトのタイトル画面で式中関数を呼び出すデバッグコードが正常に動作しないのを修正 ここらへんは式中関数の動作仕様の絡みだった 8. 式中関数を返り値無視で呼び出す命令CALLF、CALLFORMF実装 書式:CALLF 関数名, 引数1, .... (式中関数ですが、普通の関数の引数書式で呼び出してください) 内容:式中関数を通常の関数扱いで呼び出す、返り値は破棄される 疑似SETTERを作りたくてやった、今は反省している 9. VARSET, CVARSETの配列範囲指定を可能に 書式:VARSET <変数>, <値>, <配列範囲初値>、<配列範囲終値+1> 10. 前置インクリメント行の後ろに余計なコードが付いても警告にならないのを修正 これは本来ありえないコード 11. 雑多なバグ修正 12. プロジェクトをVC#2010用にコンバート ・1736e 1. SWAPの対象変数の引数にRANDが入るとおかしいことになるのを修正 これはあまりにもほどいバグだった 2. 1736dでの無限ループ判定強化が不完全なのを修正 条件次第では一切判定に飛ばない場合があった ・1736d 1. Win9XでWINAPI描画が正常に動作しないのを修正 Win9XのUnicodeサポートの貧弱さは地獄だぜ(ry 2. 高速化の煽りで無限ループ判定の頻度が落ちまくりだったので以前とほぼ同頻度になるように修正 3. VARSIZEの返り値が三重配列変数の場合おかしいを修正 ・1736c 1. バグ修正 @EVENTSHOP中のBEGINがエラーになっているのを修正 (ここでのBEGINは動作すべき) (@SHOWSHOPでのBEGINは動作が極めて不自然なため対応予定なし) TOINTの処理が直ってなかったのを修正 ・1736b 1. バグ修正 ARRAY関係命令のエラー判定処理修正 TOINTが符号付きの場合に正しく処理しないのを修正 CUP、CDOWNがUP、DOWNと同時に初期化されないのを修正 2. 数学関数を式中関数として追加 CBRT(三重根) LOG(自然関数) LOG10(常用対数) EXPONENT(指数関数) 書式は全部:関数名(引数) 3. GETTIME関係の微調整 書式をロケールデフォルト(ja-JPの場合yyyy/MM/dd H:mm:ss)→yyyy/MM/dd HH:mm:ssに変更 ・1736a 1. 最近追加した式中関数のバグ修正 案の定、色々悲しいことになっていた ついでにコードのリファクタリング、若干実行ファイルサイズを削減 2. EXISTCSVの第2引数が無意味になっていたのを修正 3. SPLIT命令実行時RESULTにSPLITで処理された文字列の分割数を返すように変更 分割後の処理がしやすいように 改造者、文責:妊)|д゚)の中の人
以下、私家改造版1735aに添付のreadmeの○改造内容の節
・1735a 1. MATCH、MAXARRAY、MINARRAYでキャラクタ変数が使えてないのを修正 2. SUMARRAY、MATCH、MAXARRAY、MINARRAYのキャラクタ回し版を追加 SUMCARRAY CMATCH MAXCARRAY MINCARRAY 書式は元の関数と同じ 3. GDIでタブ表示が有効になるように修正 パフォーマンスが落ちる場合にはバックアウトの可能性有り 改造者、文責:妊)|д゚)の中の人
以下、私家改造版1734tに添付のreadmeの○改造内容の節
・1734t 1. 配列の値の総和を取るSUMARRAY関数追加 書式:SUMARRAY(<対象となる配列変数>{, <開始位置>, <終了位置>}) 内容:開始位置<=i<終了位置の配列の値の和を取得する 開始位置、終了位置を省略すれば全体の和となる ○注意 キャラクタ配列を指定するときの注意点 SUMARRAY(CFLAG:2) とすると、キャラ位置2のキャラのCFLAGの和ではなく、 TARGETのキャラのCFLAGの和をとる これはキャラ配列変数の指定方法に関する仕様のためであるため注意が必要 2. 任意の1次元配列中に指定した数値or文字列を含む要素がいくつあるか数え上げるMATCH関数追加 書式:MATCH(<対象となる配列変数>, <検索する数値or文字列>{, <開始位置>, <終了位置>}) 内容:開始位置<=i<終了位置の配列の中に指定したものがいくつ含まれるか数え上げて返す 開始位置、終了位置を省略すれば全体からの検索となる ○注意 二重配列、三重配列には使えません また、キャラクタ変数に使った場合には<変数>:<キャラ位置>:XのXの中からMATCHします キャラ位置を回す命令は必要であれば別途用意します 3. 任意の数値1次元配列中の最大・最小値を取得するMAXARRAY、MINARRAY追加 書式:MAXARRAY or MINARRAY(<対象となる配列変数>{, <開始位置>, <終了位置>}) 内容:開始位置<=i<終了位置の配列の中の値の最大値or最小値を返す 開始位置、終了位置を省略すれば全体からの検索となる ○注意 二重配列、三重配列には使えません また、キャラクタ変数に使った場合には<変数>:<キャラ位置>:XのXの中からMATCHします キャラ位置を回す命令は必要であれば別途用意します 4. GETPALAMLVを式中関数化、EXPLV版のGETEXPLV追加 引数の仕様は以前と同じ 5. FORM構文でalignment要素を指定した文字列三項演算子を含まない%~%と三項演算子が共存する場合にエラーになるのを修正 6. SORTCHARA命令で文字列変数を指定したときに、その変数が未定義のキャラがいた場合例外を吐くのを修正 7. PageUp、PageDownキーに対応 10行のスクロールに相当 8. BEGINコマンドおよびRESETDATA時にスタイル指定もリセットするように変更 9. システム関数に#FUNCTION(S)を指定した場合、エラーとするよう変更 ・1734s 1. ユーザー関数名に変数名および命令の予約語を使えないように変更 なんで、そうなっていなかったかというのは自分に聞かれてもちょっと困る ・1734r 1. 表示処理におけるひらがな・カタカナ相互変換系を実装 命令:FORCEKANA <0~3> 0:変換を行わない 1:ひらがな→カタカナ 2:カタカナ→ひらがな(全角のみ) 3:カタカナ→ひらがな(全角・半角両方とも) 内容:フラグの数値で指定した変換系を使用する命令 命令は以下にしめすPRINTK系命令27種にのみ影響 (それぞれKを抜いたPRINT系命令と同等の命令) PRINTK PRINTKL PRINTKW PRINTVK PRINTVKL PRINTVKW PRINTSK PRINTSKL PRINTSKW PRINTFORMK PRINTFORMKL PRINTFORMKW PRINTFORMSK PRINTFORMSKL PRINTFORMSKW PRINTCK PRINTLCK PRINTFORMCK PRINTFORMLCK PRINTSINGLEK PRINTSINGLEVK PRINTSINGLESK PRINTSINGLEFORMK PRINTSINGLEFORMSK PRINTDATAK PRINTDATAKL PRINTDATAKW FORCEKANAで変換指定をするとPRINTK系命令の文字列は指定した変換をされた上で出力される ・1734q 1. DO~LOOP内でCONTINUEが動作してないのを修正 DO~LOOP内のCONTINUEはLOOPの条件判定を満たしてなければLOOPを抜けるのは仕様です (ほとんどの主要言語がこの仕様なのでそれにあわせてあります) 2. 存在する全てのキャラクタについて、キャラクタ変数の特定配列要素への代入を行う命令CVARSET実装 書式:CVARSET <代入先キャラクタ変数>, <代入先配列要素>, <代入する値> 内容:<変数>:xx:<代入先配列要素>について、全ての存在するキャラについて<代入する値>を代入する <代入先配列要素>には文字列による指定も使用可能 <代入先配列要素>は変数がNAME等非配列変数の場合にはどんな値を入れても無視されます <代入する値>を省略した場合は整数なら0、文字列なら空文字列が代入されます <代入する値>を省略している場合は<代入先配列要素>も省略可 この場合は<変数>:xx:0について処理が行われます。 なお、<代入先配列要素>と<代入する値>に文字列を指定する場合は""で囲む必要があります。 同様にFORM構文を使う場合には@""で囲んでください 3. 微調整 入力フィールドの高さをフォントサイズではなく行高さにあわせるように変更 ・1734p 1. エンバグ修正 ○TRYCALLLIST実行後にエラーになるのを修正(1734iでのエンバグ) ○RAND()の第2引数判定にまだバグが残っていたのを修正(1734oの修正によってバグが発現) ・1734o 1. 雑多な修正 ○CUP、CDOWNを文字列による添え字処理に対応 ○コンフィグでウィンドウサイズを変更後、再起動コマンドから再起動すると設定が反映されないのを修正 ○TOSTR()、RAND()の第二引数の判定処理が正しく動作しないのを修正 ○PRINT系命令で文字列中に'\n'を含む場合表示が正しくならないのを修正 ・1734n 1. 雑多なバグ修正 ○16進数が処理できなくなっていたのを修正 ○デバッグコードでいかさま化処理に行かないのを修正 2. PALAMLV自動判定命令GETPALAMLV追加 書式:GETPALAMLV <数値・変数>, <判定するLVの上限> 内容:与えられた値の内容とPALAMLVを比較し、 その変数がPALAMLVでどこまで以上かをRESULTに返す 判定の上限LVは第2引数に設定可能 PALAMLVの値を設定していなくても指定可能なので注意 ・1734m 1. TOINTのバグ修正 最初が非数字の文字列を渡すと例外吐くのを修正 2. 連続コマンド実行周りのバグ修正 連続コマンド中にBEGIN SHOPすると挙動がおかしくなるのを修正 ・1734l 1. 1734i~jのエンバグ修正 REPEAT、FORの挙動で一部変わってしまっていた部分があったので修正 2. クリップボードダイアログの挙動変更 どう見てもDockしていません、本当に(ry ・1734k 1. 1734i~jのエンバグ修正 デバッグコマンドで代入および一部命令が使えなくなっていたのを修正 2. ERBチェッカーモードにおける警告表示が設定ファイルに引きずられていたのを修正 目的上、eramaker互換性に絡む場合を除いて全ての警告LVの警告を表示する方がよいが コードのミスでそうなっていなかった ・1734j 1. スクリプトエンジンの改善 ○SIF、IF~ELSEIF~ELSE~ENDIF、SELECTCASE~CASE~CASEELSE~ENDSELECTを優先処理へ ○通常のスクリプト駆動エンジン自体を改善(なるべく関数スタックを出し入れせずに駆動) 2. eramaker互換性に関するLV0警告を追加 ・1734i 1. スクリプトエンジンの改善 ○SET、SETSを優先処理することでコード処理を全体的に高速化 ○フロー処理駆動系を改良、全体的に高速化 2. ログが保存できなくなっていたのを修正 ・1734h 1. 文字列変換関数TOUPPER、TOLOWER、TOHALF、TOFULL実装 書式:TOUPPER(<文字列>) TOLOWER(<文字列>) TOHALF(<文字列>) TOFULL(<文字列>) 内容:TOUPPER:文字列のアルファベットを大文字にする TOLOWER:文字列のアルファベットを小文字にする TOHALF:文字列の全角文字のうち半角文字にも存在する物を半角文字にする TOUPPER:文字列の半角文字を全角文字にする 2. 特定の書式を伴った場合の警告追加 LV0:比較演算子(==, !=, <>, >, <, >=, <=)が連続した場合に警告表示 3. 細かいバグ修正 DRAWLINEに太字スタイルが適用されてしまうバグ修正 1734gのエラーの表示法を修正(あれだと何が問題かわかりにくいので) 4. (バリアント・パッチ・口上作者向け)eramaker互換性関係の警告の表示の有無を設定可能に Emuera専用バリアントであれば必要ない警告なので設定側で切れるように 書式: eramaker互換性に関する警告を表示する:YES or NO ・1734g 1. (重要更新)命令行のパースについて致命的な問題があったので修正 eramakerでは(命令) (引数等)か(命令) (引数等)のように 命令の後ろに半角スペースorタブを入れる必要があるが、 特に(命令)=(引数)のように、半角スペースのところに記号もしくは全角スペースを入れると、 その行自体が無効な行として扱われる ところがEmueraはこのような無効な行についても、正しく処理できず PRINT=1に対して1を出力してしまう(他の命令でも同様の問題がある) そのため、この修正で(命令) (引数等)か(命令) (引数等)以外の書式はエラーとなるようにした ・1734f 1. 一時用文字列変数TSTR追加 TFLAGのSTR版それ以上でもそれ以下でもない 2. GETCHARAの仕様変更 書式:GETCHARA <検索対象NO>, (<0 or 0以外>)省略可 内容:検索対象NOをNOに持つキャラが所持してるキャラの中にいるか検索する いればその位置を、いなければ-1を返す。 (New!)第2引数(省略可)に検索対象の範囲を設定できる 0なら非SPキャラのみ、0以外なら非SP・SPキャラ両方を検索する (後者はGETCHARAとGETSPCHARAを同時に行う、とにかくそのNOを有するキャラがいるかの検索用) 非SPとSPが両方ともいる場合は非SPキャラの位置を返します 第2引数を省略すれば0と見なされますので、旧来の用途で使えます ・1734e 1. 1734bのエンバグ修正 ほう、FORWARDが6文字とな…もうねバナナとアボカド ・1734d 1. 一部命令の設定ミス修正 一部の入力待ちPRINT命令の設定をミスっていた 誰も使ってないから今まで問題が出なかっただけともいう 2. コードのリファクタリング まさにこれだけ、もちろん実行速度に(ry しかし、一部明らかに非効率な処理をしてしまってるので、これは要宿題 ただし、素のコードサイズは3KB減った だからどうしたである ・1734c 1. 引数チェックをさらに強化 まだ強化できるかも… 2. ソースコードのリファクタリング 少し整理されて、少しだけスパゲッティでなくなった、もちろん処理が速くなるとかそんなことは起こらない どこぞの誰かが言いました「リファクタリングは個人的充足感はあるが結果には結びつく変化は無いなぁ」 ・1734b 1. セーブデータ数コンフィグ取得命令SAVENOS実装 書式:SAVENOS <数値変数> <数値変数> = SAVENOS() 内容:コンフィグのセーブデータ数を取得 2. 命令版PRINTCPERLINEが全く使い物にならなかったのを修正 ・1734a 1. 引数チェックの強化 特に引数が多すぎる場合の判定を強化 TIMESの第2変数などでは1.00Rみたいな構文も通していたので、これも修正 他にもあるかと思うので、見つけたら教えてください 改造者、文責:妊)|д゚)の中の人
書式:TOINT <数値化する文字列> TOINT(<文字列>) (文中関数版) 内容:引数に与えられた文字列を整数値化 数字と解釈できない文字列の場合は0を返します。 小数値は整数に換算されて返されます。 なお、"1.05e2"のような小数+指数表記は仕様上正しく解釈できないため0が返るので注意してください
書式:SPLIT (対象文字列), (区切りに使う文字列), (分割した文字列を入れる文字列配列名) 内容:区切りに使う文字列で指定された文字列で対象文字列を区切り、複数の文字列として取り出す SPLIT "あい,うえ,,お", ",", LOCALS とすると、 LOCALS:0は"あい"、lOCALS:1は"うえ"、LOCALS:2は""(空文字列)、LOCALS:3は"お"となる
[PageInfo]
LastUpdate: 2013-06-17 22:03:27, ModifiedBy: minorshift
[Permissions]
view:all, edit:login users, delete/config:members