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

汎用関数・ライブラリ総合スレ

1あなたの名前を入力してください:2017/06/29(木) 23:05:15 ID:YnTR6v9M
このスレッドは、フリーの調教ゲーム作成ツールeramakerおよびeramaker2、およびeramakerエミュレーターのEmueraに用いる
汎用コードの開発、配布のためのスレッドです。

スレッドの利用の際、以下の点にご注意ください。
・スレにオリジナルのコードを書き込んだ場合は、ライセンスを明示しない限りCC0で提供されたものとします。
参考……CC0 ttps://creativecommons.org/publicdomain/zero/1.0/deed.ja
>この作品は、たとえ営利目的であっても、許可を得ずに複製、改変・翻案、配布、上演・演奏することが出来ます
・ファイル配布時にはライセンスを明記すること。ライセンスなしだとあらゆる利用が不許可になります。


関連サイト

漠々ト、獏
ttp://cbaku.com/

Emuera公式ページ
ttp://sourceforge.jp/projects/emuera/wiki/FrontPage

eraシリーズを語るスレ まとめWiki V3
ttp://w.livedoor.jp/eraseries/

49あなたの名前を入力してください:2017/11/09(木) 22:31:51 ID:x33aatEc
どんなバリアントでもglobal.savの監視を使えるようにしたい場合、新しいEmueraで使えるようになってる「セーブデータをバイナリ形式で保存する」への対応が1つのハードルになるのかな。
Emueraのソースの適当な場所から処理を持ってきて簡単に対応できるんならいいけど。
新しいEmueraでセーブデータをUTF-8にしても文字化けせずに喋ってる?era2talkでは"shift_jis"指定してるはずだけど、自動検出が働いてる?

あと、試してないけどWindowsで「アクセス日時」を更新する設定にしている場合、
(参考: ttp://news.mynavi.jp/column/win81tips/026/ )
WatcherChangeTypes.Changedは「Emueraで書き込んだ時のlast write time」と「era2talk自身で中身を見た時のlast access time」の両方で発生したりする?(last access timeは「前回からの間隔が短いので無視します」で回避できる?)もしかすると、セキュリティ対策ソフトのlast access timeで発生する可能性もあり?

50あなたの名前を入力してください:2017/11/12(日) 01:53:32 ID:qNknA.ps
全然ジャンルは違うけどもしglobal.savの書き込みまで出来たら
HTTP-GETしたりした結果を書き戻してERBで外部通信とかもできるのかしら・・・

51あなたの名前を入力してください:2017/11/12(日) 13:34:41 ID:OrQIqlHY
外部プロセスで書き込みまでやっちゃうと、
「Emueraでの書き込みタイミングと外部プロセスでの書き込みタイミングが重なってしまったら、global.sav更新内容の一部が失われたり、Emueraがエラー落ちしたりするんじゃないか疑惑」

「Emueraはglobal.savの変更を監視するためにループさせておいて外部プロセスでの処理に時間がかかってしまったら、Emueraが無限ループ警告を出すんじゃないか疑惑」
が発生するかもしれない
全自動でやるんじゃなくて、人間が世話してやればいいのかな

Emueraは入力待ち状態にしておいて、外部プロセスからEmueraにWM_INPUTやWM_KEYDOWNのようなメッセージを送信することでプロセス間通信できるかな、とも思ったけどそうすると今度は
「人間がEnterキーやマウスボタンを押してから離すまでの間にメッセージが来ても大丈夫なのかどうか疑惑」
が発生するのかなあ

52あなたの名前を入力してください:2017/11/12(日) 19:59:39 ID:oqxIipdw
自前でファイル更新確認ループとかやりゃおかしなことになるけど
それは方法がおかしいからじゃないの
ファイル監視はFileSystemWatcher使えばやってくれると思うよ

53あなたの名前を入力してください:2017/11/12(日) 22:14:39 ID:OrQIqlHY
そっちじゃないんだ
自分でC#か何かで実行ファイルを作る時の話じゃなくて、バリアントのERBファイル側で処理をどう書くかの話なんだ
global.savが外部から変更されるのを待つ機能なんて、Emueraには用意されてないよね?

54あなたの名前を入力してください:2017/11/12(日) 23:16:58 ID:oqxIipdw
まさかERBでやる気だとは思わなかった
書き込みタイミングが被った場合の>>51の懸念は妥当だと思う
対処するならEmuera側でやるのが現実的じゃないか

55あなたの名前を入力してください:2017/11/13(月) 00:10:24 ID:Wh4.T.AM
>対処するならEmuera側でやるのが現実的じゃないか
それを言ってしまうのであれば、もう
「global.savを外部プロセスで監視するとかじゃなくて、もうEmueraにプロセス間通信機能を付けるとか、プラグイン機能を追加するとかやっちゃえよ」
という話になるよね……

56あなたの名前を入力してください:2017/11/13(月) 09:09:38 ID:M3GsfCrM
>>55
100%同意するが、Emueraの開発側がそういうの嫌ってそうなのがなぁ

57あなたの名前を入力してください:2017/11/14(火) 08:29:42 ID:v6iZUYC.
emuera側書込完了フラグと外部プロセス側書込完了フラグを用意して
外部プロセス書込完了フラグのチェックとTINPUTをループで回せばいけるんじゃないの?

58あなたの名前を入力してください:2017/11/14(火) 12:16:41 ID:bF4yJOTY
>>57
何でそれでできるのか分からない

59あなたの名前を入力してください:2017/11/15(水) 00:16:25 ID:8yd69N8c
SAVEGLOBAL
LOCALS = %GLOBALS:0%
REDRAW 0
$LOOP1
TINPUT 100,0,0," "
CLEARLINE 2
LOADGLOBAL
SIF LOCALS == GLOBALS:0
GOTO LOOP1
REDRAW 1
PRINTFORML 誰かが書き換えやがったぜ

TINPUTを使うというのは、こんな感じのことだよね
上記の処理のままでは無限ループ警告が出ないけど、TINPUTとCLEARLINEを消したら無限ループ警告が出る

60あなたの名前を入力してください:2017/11/15(水) 00:43:02 ID:8yd69N8c
もしかすると、TINPUTとCLEARLINEを使う代わりにTWAIT 100,0みたいなのでもいいのかな

61あなたの名前を入力してください:2017/11/15(水) 08:25:24 ID:2awMuoCI
>>59
大体そんな感じ。ボクが考えてたのはこんな感じですかね。
----------------
GLOBALS:0 = 外部プロセスに渡したい文字列
GLOBALS:1 =
SAVEGLOBAL
GLOBAL:0 = 1    ; emuera側書込完了フラグ
GLOBAL:1 = 0    ; 外部プロセス側書込完了フラグ
SAVEGLOBAL
; 外部プロセス処理待ちループ
REDRAW 0
WHILE 1
TINPUT 100,0,0," "
CLEARLINE 2
LOADGLOBAL
IF GLOBAL:0 == 1 && GLOBAL:1 == 1
 GLOBAL:0 = 0
 GLOBAL:1 = 0
 SAVEGLOBAL
 BREAK
ENDIF
WEND
; 渡された文字列に対する処理
PRINTFORML 「%GLABALS:1%」が外部プロセスから渡されたよ
GLOBALS:0 =
GLOBALS:1 =
SAVEGLOBAL

----------------
外部プロセス側の要求待ち
WHILE 1
LOADGLOBAL
IF GLOBAL:0 == 1 && GLOBAL:1 == 0
 GLOBALS:1 = emueraに渡したい文字列
 SAVEGLOBAL
 GLOBAL:1 = 1
 SAVEGLOBAL
ENDIF
WEND
----------------

TINPUTにすると、emuera側で処理待ちのキャンセルを組み込めるという利点が一応あります

62あなたの名前を入力してください:2017/11/15(水) 08:33:27 ID:2awMuoCI
>>61
フラグと渡す文字列でSAVEGLOBALを分けてるのはただのおまじないです。
たぶんそこまでやる必要はない。
なお、動作確認してないので間違いがないかは知りません。

63あなたの名前を入力してください:2017/11/15(水) 20:18:29 ID:3hm/cPJA
無限ループ疑惑のメッセージボックスを抑制する命令を作ってくれればいいと思う
重い処理するときとか勝手に出るのも抑制できるし結構要るよね

64あなたの名前を入力してください:2017/11/15(水) 21:48:40 ID:8yd69N8c
TWAIT 100,0 では100ミリ秒待たなくてもEnterやマウスクリックで進むことができる。
TWAIT 100,1 では強制的に100ミリ秒待たせる、はず。
・入力値を知りたい場合
または
・数値入力しないでEnterやマウスクリックだけの場合には進めたくない
であればTINPUTにする必要あり。

ちなみに、>>61はemuera側も外部プロセス側もerabasicの文法で書いてくれてるけど
外部プロセス側は普通にC#でも何でも使って作ればいい。
元々の>>41が、
「無改造のEmuera単体では実現できないことを、外部プロセスを利用して実現してみよう」
という感じの発想(だと思う)ので。
もしも外部プロセスがerabasicを実行できるのであれば、プロセス間通信とか考えずに
eraIm@sJ4U!やeraSumireTeruのように改造版Emuera単体でバリアントを実行するほうが
確実だと思う。そもそも、global.savを使って通信すること自体がイレギュラーなので。

ただし、無改造Emueraを2つ同時に動かして連携させて何かを実現する、というのも
それはそれでネタとしては面白いかもしれない。

>>63
「無限ループ警告までのミリ秒」を大きい数値にしておけばいいと思う。
不具合で本当に無限ループになってる場合、警告が出てくれないと困る。

65あなたの名前を入力してください:2017/11/15(水) 23:57:58 ID:2awMuoCI
マウスクリックには対応できないけど、TINPUTでなくTONEINPUTにしたほうが良かったかも。
待機待ちキャンセルに使うならそれこそね。
>>64
外部プロセスをerabasicで書いたのは、みんな共通で分かるかなということで使っただけで、外部プロセスもeraであることを想定したわけではないです。
多重起動してglobalでデータのやり取りすれば、Emueraでマルチスレッドとかできるね
そこまでやる必要があるかと聞かれると無い気がするけれど

66あなたの名前を入力してください:2017/11/16(木) 23:40:33 ID:8GSPxWrg
>外部プロセスをerabasicで書いたのは、みんな共通で分かるかなということで使っただけで、外部プロセスもeraであることを想定したわけではないです。
ですよねー。
ただ、>>61を読んだだけでは断定できないので一応。

単なるEmuera多重起動の場合、どのプロセスがどんな役割を担当するのか決めるのが難しいかもしれない。
global.savを介して先着順で決めたりできる……?
batファイルか何かで時間差起動してやったほうが、タイミングが重なる心配をしなくていいかも?

自分が考えてたのは、メインとサブとでファイルを別にする。
メインは、「セーブデータをsavフォルダ内に作成する」をYESにする。
サブは、「セーブデータをsavフォルダ内に作成する」をNOにして、メインのsavフォルダ内に配置する。
NTFSのハードリンクだかジャンクションだかを使えば自由にフォルダ配置できてEmueraを3つでも4つでも
使えるかもしれないけど、使い道を思いつかないし、扱いが面倒っぽいのでやらない。

活用方法としては、>>43で書いたような別ウィンドウでのAA表示や画像表示ぐらいしか考えてなかったけど。
とりあえず、一方向の通信でサブに表示させるテスト。
ttp://era.moe.hm/cgi/era/upload.php?id=0003245
ただし、特定の環境上で、
Emuera1821.exe(私家改造版ではない最新版)ではタイミング次第でエラー落ちしてしまう。
Emuera1821+v6.exeでも同様にエラー落ち。
Emuera1755.exe(>>41でも使われてる)では時々エラーメッセージが出るだけで落ちないんだけど。

67あなたの名前を入力してください:2017/11/17(金) 22:44:33 ID:301vlBq6
>>66
サンプル見てみましたが、これemuera本体の問題ですね。
SAVEGLOBALとLOADGLOBALが同タイミングで実行された場合にアクセスエラーになる模様
ファイルアクセス失敗時に即例外とせず、何回かリトライするようにすれば、発生は抑制できるけどそれはなんか違う方向に行ってる気がする

68あなたの名前を入力してください:2017/11/17(金) 23:52:37 ID:O/Df.RPA
>>67
・Emueraのバージョンによって挙動が異なる
・他のプロセスとの通信とか考えてない場合でも、エラーになる可能性があると思う
・リトライの仕組みはあったほうが良いと思う
というわけで、とりあえずera板のEmueraスレに書き込んでみました。

69あなたの名前を入力してください:2017/11/20(月) 01:21:38 ID:fpumW5hg
面白そうなことやってますね
昔nscrでチャットの書き込み表示させて遊んだのを思い出した
maker1-maker2間の通信とかはやってみた方居るんだろうか?

70あなたの名前を入力してください:2017/11/20(月) 01:53:47 ID:fpumW5hg
確かデータの末尾にマジックワードを付けて、ファイルに書き込む途中で読み込んだ場合はそれがないので読みなおし、
データが正規なら読んだら消すって感じの単純なポーリングだった気がするんだけど細部は覚えてないなあ

71あなたの名前を入力してください:2017/12/07(木) 21:54:49 ID:5Vp85Gow
>>66
http://era.moe.hm/cgi/era/upload.php?id=0003266
動くようにEmuera改造してみました。

7266:2017/12/08(金) 22:22:23 ID:Mx5B2K8s
>>71
ありがとうございます。
5ミリ秒では少ないかな、と思ったけど大丈夫っぽいですね。
start_era1821.batでエラー落ちする環境でも、start_era1821_改造版.batでは落ちない。
もちろん、sav\global.sav を読み取り専用にすればエラーになる。

73あなたの名前を入力してください:2018/01/23(火) 21:38:10 ID:Qe.7U9RE
某所のレスで思い出したので適当に
CC0ライセンスで

;精度確保用、係数つきSQRT関数
@X_SQRT(ARG:0, ARG:1)
#FUNCTION
RETURNF SQRT(ARG:0 * ARG:1 * ARG:1)

;精度確保用、係数つきCBRT関数
@X_CBRT(ARG:0, ARG:1)
#FUNCTION
RETURNF CBRT(ARG:0 * ARG:1 * ARG:1 * ARG:1)

;ARG:0にARG:1の平方根をかける(ARG:2で精度を指定する)
@TIMES_SQRT(ARG:0, ARG:1, ARG:2 = 100)
#FUNCTION
RETURNF ARG:0 * X_SQRT(ARG:1, ARG:2) / ARG:2

;SOURCE系で何か手抜きできないかと思ったがどうなんだ?これ
;具体的にはCOM側で関数に数値渡してオシマイ!みたいなの
;MIN_VALUE==0, LEVEL==9, RATE==10, BORDER==10で10000
@S_CURVE(MIN_VALUE, LEVEL, RATE = 10, BORDER = 10)
#FUNCTION
#DIM MIN_VALUE ;最小値、COM依存を想定
#DIM LEVEL ;効果レベル、感覚系ABL等を想定
#DIM RATE ;効果レート、COM依存を想定
#DIM BORDER ;上限っぽいもの、COM依存を想定
SIF INRANGE(LEVEL, 0, BORDER - 1)
 RETURNF MIN_VALUE + RATE * POWER(LEVEL + 1, 3)
RETURNF TIMES_SQRT((MIN_VALUE + RATE * POWER(BORDER, 3)), LEVEL - (BORDER - 2), 100)

74あなたの名前を入力してください:2018/02/07(水) 04:10:00 ID:LYCwuwsY
外部プロセスとの通信が可能になれば伺かのような媒体とemueraを組み合わせてインタラクティブなプレイが出来そう
ちなみに伺か側はSAORIっていう外部プロセスとやりとりする機能はある

75あなたの名前を入力してください:2018/02/07(水) 21:05:02 ID:b2IVX2yo
era.moe.hm/cgi/era/upload.php?id=0003394
文字列を上書配置していくための関数
車輪の再発明かもしれない

7675:2018/02/07(水) 21:40:47 ID:b2IVX2yo
懐かしのブラクラが簡単に作れたりします

┌──────────────────┐
│┌──────────────────┐
││ │
││終了しますか はい [0] │
└│ │
└──────────────────┘

0


┌──────────────────┐
│┌──────────────────┐
││┌──────────────────┐
│││ │
└││終了しますか はい [0] │
└│ │
└──────────────────┘

77あなたの名前を入力してください:2018/02/07(水) 21:42:20 ID:hCc/T3j.
>>75
頭に[]を付けると良くない挙動をする、
というのは具体的に何がどう良くない挙動なのでしょうか?

ボタンとして設定していない文字列がボタンの一部として認識される現象のことなら、
文字列配置変数.erbの122行目をPRINTPLAINFORMにすることで解決できるっぽいですがどうでしょうか。

7875:2018/02/07(水) 21:57:17 ID:b2IVX2yo
>>77
PRINTPLAINFORMは試してみたけどすごく重くなるんです

79あなたの名前を入力してください:2018/02/08(木) 00:23:54 ID:.0QvokyI
>>78
ボタンの後にPRINTPLAINしたとしても、
PRINTPLAINの中身が空文字列( == "" )だった場合はボタンを区切ることができないようです。

PRINTPLAINを多用すると重くなるということなので使用を最小限に抑えるため、
ボタンを描画した直後の一文字だけPRINTPLAINするように改造してみました。
era.moe.hm/cgi/era/upload.php?id=0003396

なお、>>78氏向けの提案用サンプルであり一般使用を想定していません。注意。

8075:2018/02/08(木) 19:51:48 ID:li2FVAeQ
>>79
他人が書いたコード読んでうまいこと書き直すってすごいですね…
なにはともあれありがとうございます

81あなたの名前を入力してください:2018/02/08(木) 22:02:49 ID:FFj9ZdAI
乙です。
これはすごい・・・
オートで立ち絵のAAと背景のAAを合成できる・・・

8275:2018/02/08(木) 23:34:27 ID:li2FVAeQ
era.moe.hm/cgi/era/upload.php?id=0003399
>>79氏のものに加えて少し更新
 ・デモ表示でちょっと遊んでみた
 ・使い方説明を作ってみた
 ・枠の線種を選べるようにした

83あなたの名前を入力してください:2018/03/26(月) 21:17:29 ID:1kL9MVHk
[その他]汎用チートERBv1.2
http://era.moe.hm/cgi/era/upload.php?id=0003497
大抵のバリアントで使えるチート(データ操作)ERBです

84average:2018/07/30(月) 16:56:29 ID:B7e17qyk
era2talk v0.10
http://era.moe.hm/cgi/era/upload.php?id=0003815
eraの口上をsoftalkやVOICEROIDなどの読み上げソフトに読ませます。
>>41のアップデートです。
Emuera1808以降のすべてのバリアントに対応させたほか、多重読み上げを抑制するようにしました。

また、実際にeratohoЯeverseの口上に適応させてみました(同梱してあります)。
grep置換することで既存の口上のセリフ部分を読み上げさせることができます。

85妊)|д゚):2018/07/30(月) 22:33:20 ID:z9sL6aNg
ほんとだ、PRINTPLAINやたら重いねぇ、ちと見てみるか

86妊)|д゚):2018/07/30(月) 22:39:30 ID:z9sL6aNg
あー、そういうことかー
PRINTPLAINは呼び出しごとに逐次バッファクリアしないといけないから処理量多いのか

再設計したくなるような処理だが、これいじろうとすると、一帯の処理全部書き換え必要な気もするな…

87あなたの名前を入力してください:2018/08/30(木) 02:36:44 ID:iA0rH1i6
文字列を使った連想配列もどき&可変長配列もどき
ttp://era.moe.hm/cgi/era/upload.php?id=0003893

・_DICTIONARY.ERB
"[髪型:ショート][髪色:緑][瞳色:青]"のような文字列を作って連想配列のように扱うライブラリ。
例えば変数STRが"[髪型:ショート][髪色:緑][瞳色:青]"であるとき、DIC_GET(STR, "髪色")で"緑"を取得します。
DIC_SET(STR, "髪型", "ロング")は"[髪型:ロング][髪色:緑][瞳色:青]"を返します。

・_DICTIONARY.ERH
"ショート,セミロング,ロング,"のような文字列を作って可変長配列のように扱うライブラリ。
LIST_GET(STR, 1)は"セミロング"、LIST_ADD(STR, "ロングウェーブ")は"ショート,セミロング,ロング,ロングウェーブ,"を返します。
CALL LIST_FOREACH(STR, "関数名") で配列中のそれぞれについてCALLFORM %関数名% 値 ;を呼び出したりもできます。
詳細はファイル内の説明を参照してください。


このライブラリとEmuera1.823beta003の新機能を使って「キャラクターなんとか機」の再現を試みたのがこちら
ttp://era.moe.hm/cgi/era/upload.php?id=0003892

88あなたの名前を入力してください:2018/08/30(木) 02:41:29 ID:iA0rH1i6
間違えた。
「・_DICTIONARY.ERH」は「・_LIST.ERB」の間違いです

89あなたの名前を入力してください:2018/08/31(金) 02:04:27 ID:gEBxa2XQ
>>87
両方DLさせていただきました。
Emueraってこんなこともできるんですね、eraの新境地を見た感じです。
仕様とかコードを理解出来たら製作がもっと楽しくなるのだろうなぁ。

90あなたの名前を入力してください:2018/10/08(月) 23:52:24 ID:HoJJ7p/w
>>38
RANDCHOOSEで古い処理に存在した上のほうのキャラばかりが優先される弊を除けそうです
ありがとうございました

91あなたの名前を入力してください:2018/10/19(金) 00:49:48 ID:/6ZLW.z6
厨二ネーム生成関数
ttp://era.moe.hm/cgi/era/upload.php?id=0004027
この関数は汎用キャラ用ランダム名前付けをベースに作成されました

この関数は、
1)まず「読み仮名」を生成
2)次にその読み仮名に適合する漢字を生成
このように二段階で名前を生成します

これによって、名前(given nameの方)のバリエーションが大幅に増えます
従来の500パターンから1万パターンくらいにはなってるんじゃないでしょか
ちゃんと計算したわけじゃないけど

また、漢字変換処理の過程において、ケレン味のある派手な当て字もあえて使用することにしました
まともっぽい名前と厨二ネームで半々くらいでしょうか
ゲームに使うんだしこれくらいやっちゃってもいいんじゃないの?という感覚です

※変換パターンを削減すれば普通の人っぽい名前のみを生成できるようにもできるはずです

92あなたの名前を入力してください:2018/10/19(金) 00:53:31 ID:/6ZLW.z6
……一文字で色々変換して漢字拾ってたら予測変換が変な教育されちって使いづらい

93あなたの名前を入力してください:2018/10/20(土) 08:59:19 ID:d.dTL3BQ
疑似lambda
http://era.moe.hm/cgi/era/upload.php?id=0004040

lambdaっぽい処理をeraでやるための関数群

SIF TALENT:恋慕
  A += 3
SIF TALENT:淫乱
  A += 6

とか、

REPEAT CHARANUM
  IF TALENT:COUNT:服従
    (処理)
  ENDIF
REND

みたいなパターンを簡易化することを目的としています。

【主要関数】
・CALC_CHARA_SINGLE_DATA(valueName,charaIndex,valueKeys)
 与えられたキャラに対し、CFLAGやTALENTに重みをつけて合計を計算する。
 例:CALC_CHARA_SINGLE_DATA("TALENT",MASTER,"針さばき*2,サド")
   ->MASTERが針さばきを持っているなら2、サドを持っているなら1として、合計を返す。(両方持っているなら3を返す)

・CALC_CHARA_RANGED_DATA(valueName,charaIndex,valueKey,rangeList)
 与えられたキャラのABLやCFLAGについて、値の範囲ごとに重み付けをして結果を返す。
 例:CALC_CHARA_RANGED_DATA("ABL",MASTER,"技巧","3,1|7,3|*,5")
   ->MASTERの技巧が3以下なら1、4〜7ならば3、8以上なら5を返す。

・GET_RANDOM_CHARAS(rule,selectResult)
 ruleを満たすキャラをselectResultの要素数分だけランダムに返す。戻り値はselectResultに格納
 例:GET_RANDOM_CHARAS("TALENT:index:恋慕 && TALENT:index:処女",targetList)
   ->処女かつ恋慕であるキャラをtargetListの要素数分だけランダムに返す。

・GET_RANDOM_CHARAS_CORE(rule,selectResult)
 GET_RANDOM_CHARASの式中関数版。戻り値の返し方以外同じ

・GET_RULED_SINGLE_CHARA(rule)
 GET_RANDOM_CHARASで返すキャラ数を1名に限定した代わりに、関数そのものの戻り値としてキャラ番号を返すようにしたもの
 例:GET_RULED_SINGLE_CHARA("ABL:index:従順 >= 5")
   ->従順が5以上であるキャラからランダムで一人選んで返す

・GET_RULED_CHARAS(rule,selectResult)
 ruleを満たすキャラを先頭からselectResultの要素数分だけ返す。
 例:GET_RULED_CHARAS("TALENT:index:恋慕 && TALENT:index:処女",targetList)
   ->処女かつ恋慕であるキャラを先頭からtargetListの要素数分だけ返す。

・COUNT_RULED_CHARAS(rule)
 ruleを満たすキャラ数を返す。それ以外はGET_RANDOM_CHARASに同じ
 例:COUNT_RULED_CHARAS("CFLAG:index:200")
   ->CFLAGの200番が0以外なキャラ数を返す。(eraRL&@exの場合、強姦フラグが立っているキャラ数となります)

【ruleの定義】
・ruleは最終的に数値を返すのであれば、どんな条件式でも設定可能です。
 すなわち、グローバルな変数、定数、TALENT、ABL、CFLAG、EXP、式中関数などが全て使用できます。
・ただし、ローカル変数は使用できません。必要に応じ、リテラル化して条件式を組み立ててください。
・ここに上げている関数では、indexはキャラ番号として解釈されます。内部処理関数では異なる場合があります。
 詳細はEVALUATE関数の定義を参照してください。


普段は↓で色々と弄っています。実装例も下記バリアントになります。
eraRL@&ex 開発スレ
http://jbbs.shitaraba.net/bbs/read.cgi/otaku/16783/1514679031/

また、eraInSchool_orgでも上記関数を使用しています。

【学園系】era_inSchool開発スレ【淫乱3人目】
http://jbbs.shitaraba.net/bbs/read.cgi/otaku/16783/1494631846/

94No.76 ◆TjhVHgLlXw:2018/11/29(木) 19:31:10 ID:Tw/3btV6
末尾平仮名・片仮名の文字列を渡すと捨て仮名を追加して返す式中関数 権利放棄
スレでたくさん改善して頂いたので貼り
@SMALL_STR(ARG_STR)
#FUNCTIONS
#DIMS ARG_STR
#DIMS REPLACE_STR
#DIMS LAST_CHARACTER_STR

REPLACE_STR '= REPLACE(ARG_STR, "゛", "")
REPLACE_STR '= REPLACE(REPLACE_STR, "゜", "")

SIF STRLENSU(ARG_REPLACE_STR) < 1
 RETURNF

LAST_CHARACTER_STR '= CHARATU(ARG_REPLACE_STR, STRLENSU(ARG_REPLACE_STR) - 1)

SIF STRCOUNT(LAST_CHARACTER_STR, "[あかさたなはまやらわがざだばぱアカサタナハマヤラワガザダバパ]")
 RETURNF ARG_STR + "ぁ"
SIF STRCOUNT(LAST_CHARACTER_STR, "[いきしちにひみりぎじぢびぴイキシチニヒミリギジヂビピ]")
 RETURNF ARG_STR + "ぃ"
SIF STRCOUNT(LAST_CHARACTER_STR, "[うくすつぬふむゆるぐずづぶぷウクスツヌフムユルグズヅブプ]")
 RETURNF ARG_STR + "ぅ"
SIF STRCOUNT(LAST_CHARACTER_STR, "[えけせてねへめれげぜでべぺエケセテネヘメレゲゼデベペ]")
 RETURNF ARG_STR + "ぇ"
SIF STRCOUNT(LAST_CHARACTER_STR, "[おこそとのほもよろごぞどぼぽオコソトノホモヨロゴゾドボポ]")
 RETURNF ARG_STR + "ぉ"

RETURNF

名前のフリガナやランダム喘ぎ声などを渡すと末尾に合う「ぁぃぅぇぉ」を付けて返し
甘えた呼び方にしたり、喘ぎにランダム感を足します
見やすいようにスペース入れたのでコピペするときはタブに置き換えしてください

95No.76 ◆TjhVHgLlXw:2018/12/09(日) 19:48:16 ID:JvFxZN1Y
すみませんorz
>>94は最後に変数名をわかりやすくしようとして変えたら
変更前の名前が残ってしまってました
ARG_REPLACE_STR←REPLACE_STRに置換してください

96あなたの名前を入力してください:2019/09/05(木) 09:32:03 ID:v.qF8Uz6
サスケェ…

97No.76 ◆TjhVHgLlXw:2019/09/08(日) 23:02:03 ID:vVc.2kjQ
以前スレ民のかたに教わりながら作ってUPしたCO0のcolorMatrixのサンプルから
ARG_COLORに0xRRGGBBのカラーコードを、ARG_ALPHAに0〜255の透明度を指定し
画像の色を変える機能だけ抜き出して貼ります(ARG_ALPHAは指定しなければ初期値不透明)
ARG_COLOR=-2でグレーのシルエット画像に・ARG_COLOR=-1で元の画像をそのまま表示
発色は元画像の明るさでだいぶ変わるので少し癖があります
ベース画像は彩度0を想定して作りました
もっと奇麗に色の出るやりかたがあるのかもしれないので気が向いた方は改善してください
今度は最低限の部分をコピペしたのでミスはないはず(と願う)作者名表記とかは不要です

ERHに
#DIM COLOR_MATRIX_ELEMENTS, 5, 5

ERBに
@CODE_TO_RGB_R(ARG_COLOR)
#FUNCTION
#DIM DYNAMIC ARG_COLOR
#DIM DYNAMIC RGB_R

RGB_R = (ARG_COLOR >> 16) & 0xFF

RETURNF RGB_R


@CODE_TO_RGB_G(ARG_COLOR)
#FUNCTION
#DIM DYNAMIC ARG_COLOR
#DIM DYNAMIC RGB_G

RGB_G = (ARG_COLOR >> 8) & 0xFF

RETURNF RGB_G


@CODE_TO_RGB_B(ARG_COLOR)
#FUNCTION
#DIM DYNAMIC ARG_COLOR
#DIM DYNAMIC RGB_B

RGB_B = ARG_COLOR & 0xFF

RETURNF RGB_B


@GET_COLOR_MATRIX(ARG_COLOR, ARG_ALPHA = 255)
#DIM DYNAMIC ARG_COLOR
#DIM DYNAMIC ARG_ALPHA
#DIM DYNAMIC RGB_NEW_R_OLD_R
#DIM DYNAMIC RGB_NEW_G_OLD_R
#DIM DYNAMIC RGB_NEW_B_OLD_R
#DIM DYNAMIC RGB_NEW_R_OLD_G
#DIM DYNAMIC RGB_NEW_G_OLD_G
#DIM DYNAMIC RGB_NEW_B_OLD_G
#DIM DYNAMIC RGB_NEW_R_OLD_B
#DIM DYNAMIC RGB_NEW_G_OLD_B
#DIM DYNAMIC RGB_NEW_B_OLD_B

VARSET COLOR_MATRIX_ELEMENTS

IF ARG_COLOR == -2
COLOR_MATRIX_ELEMENTS:0:0 = 0, 0, 0, 0, 0
COLOR_MATRIX_ELEMENTS:1:0 = 0, 0, 0, 0, 0
COLOR_MATRIX_ELEMENTS:2:0 = 0, 0, 0, 0, 0
COLOR_MATRIX_ELEMENTS:3:0 = 0, 0, 0, ARG_ALPHA, 0
COLOR_MATRIX_ELEMENTS:4:0 = 60, 60, 60, 0, 255
ELSEIF ARG_COLOR == -1
COLOR_MATRIX_ELEMENTS:0:0 = 255, 0, 0, 0, 0
COLOR_MATRIX_ELEMENTS:1:0 = 0, 255, 0, 0, 0
COLOR_MATRIX_ELEMENTS:2:0 = 0, 0, 255, 0, 0
COLOR_MATRIX_ELEMENTS:3:0 = 0, 0, 0, ARG_ALPHA, 0
COLOR_MATRIX_ELEMENTS:4:0 = 0, 0, 0, 0, 255
ELSE
RGB_NEW_R_OLD_R += CODE_TO_RGB_R(ARG_COLOR)
RGB_NEW_G_OLD_R += CODE_TO_RGB_R(ARG_COLOR)
RGB_NEW_B_OLD_R += CODE_TO_RGB_R(ARG_COLOR)
RGB_NEW_R_OLD_G += CODE_TO_RGB_G(ARG_COLOR)
RGB_NEW_G_OLD_G += CODE_TO_RGB_G(ARG_COLOR)
RGB_NEW_B_OLD_G += CODE_TO_RGB_G(ARG_COLOR)
RGB_NEW_R_OLD_B += CODE_TO_RGB_B(ARG_COLOR)
RGB_NEW_G_OLD_B += CODE_TO_RGB_B(ARG_COLOR)
RGB_NEW_B_OLD_B += CODE_TO_RGB_B(ARG_COLOR)
COLOR_MATRIX_ELEMENTS:0:0 = RGB_NEW_R_OLD_R, RGB_NEW_R_OLD_G, RGB_NEW_R_OLD_B, 0, 0
COLOR_MATRIX_ELEMENTS:1:0 = RGB_NEW_G_OLD_R, RGB_NEW_G_OLD_G, RGB_NEW_G_OLD_B, 0, 0
COLOR_MATRIX_ELEMENTS:2:0 = RGB_NEW_B_OLD_R, RGB_NEW_B_OLD_G, RGB_NEW_B_OLD_B, 0, 0
COLOR_MATRIX_ELEMENTS:3:0 = 0, 0, 0, ARG_ALPHA, 0
COLOR_MATRIX_ELEMENTS:4:0 = 0, 0, 0, 0, 255
ENDIF

RETURN 0

98ばふぉ ◆hDnGQesiDI:2019/10/05(土) 18:57:48 ID:Nf4/S4JA
汎用関数_Window描画関数_ver2.0
http://book-shelf-end.com/up/dwlink.cgi?eraRx0290.7z
拙作(>>35)のリメイク版です。
機能的にはいろいろレベルアップしてますが、互換性はないです。
(サンプルレベルならおまけフォルダに入れている"WindowDrawer_OldToNew.ERB"を利用することで動くことは確認しています)
サンプルを同梱してあるので、詳しくはそちらで確認してみて下さい。

99あなたの名前を入力してください:2019/11/16(土) 13:02:28 ID:DWT00LII
CC0ライセンスでどぞ
;デモ関数
@HOGE
#DIM HOGE
#DIM RAND_ID, 3
VARSET RAND_ID
RAND_ID = 50, 30, 20
;数値を相対的な確率として、RAND_IDの添字0〜2を返す
HOGE = ARRAY_HIT(RAND_ID, VARSIZE("RAND_ID"))
SELECTCASE HOGE
CASE 0
 PRINTFORML 50%でここ
CASE 1
 PRINTFORML 30%でここ
CASE 2
 PRINTFORML 20%でここ
CASE -1
 PRINTFORML エラー出たらここ
ENDSELECT

VARSET RAND_ID
RAND_ID = 50, 30, 20
;配列に記録した数値を等確率でランダムに返す、表示されるのは50、30、20
HOGE = RAND_CHOICE1(RAND_ID)
PRINTFORMW いべんと{HOGE}

;----------------------------------------------------------------------------------------------------
;連続した数字を抽選し、確率偏らせたい場合用
;----------------------------------------------------------------------------------------------------
@ARRAY_HIT(HIT_LIST, LIST_SIZE)
#FUNCTION
#DIM REF HIT_LIST ;確率分布リスト
#DIM LIST_SIZE;確率分布リストのサイズ
#DIM CHK_ID ;判定対象となる要素
#DIM HIT_RAND ;抽選乱数処理
LOCAL = MAX(SUMARRAY(HIT_LIST, 0, LIST_SIZE),1)
HIT_RAND = RAND(0, LOCAL)
;DEBUGPRINTFORML LIST_SIZE={LIST_SIZE} HIT_RAND{HIT_RAND}
FOR CHK_ID, 0, LIST_SIZE
 SIF HIT_RAND < SUMARRAY(HIT_LIST, 0, CHK_ID + 1)
  RETURNF CHK_ID
NEXT
;THROW 抽選失敗
;カウンター抽選失敗によるTHROW落ちが発生してるのでー1を返すことにする
RETURNF -1

;----------------------------------------------------------------------------------------------------
;均等分布で数字(自由設定)が直接欲しい場合用
;配列の終端判定はVARSIZE利用(配列長いっぱいまで使い切る必要がある)
;----------------------------------------------------------------------------------------------------
@RAND_CHOICE1(LIST)
#FUNCTION
#DIM REF LIST
#DIM DYNAMIC LIST_SIZE
LIST_SIZE = VARSIZE("LIST")
SIF LIST_SIZE <= 0
 RETURNF -1
RETURNF LIST:(RAND:LIST_SIZE)

;----------------------------------------------------------------------------------------------------
;配列の終端判定を-1検索に変更した
;長い配列の途中まででも使うことが出来る(ただしLIST内に-1を指定できない)
;----------------------------------------------------------------------------------------------------
@RAND_CHOICE2(LIST)
#FUNCTION
#DIM REF LIST
#DIM DYNAMIC LIST_SIZE
LIST_SIZE = FINDELEMENT(LIST, -1)
SIF LIST_SIZE <= 0
 RETURNF -1
RETURNF LIST:(RAND:LIST_SIZE)

100あなたの名前を入力してください:2019/11/20(水) 23:00:54 ID:WQsxQ0GM
ライブラリですらないシロモノですが。

制御コード文字定数集
http://book-shelf-end.com/up/dwlink.cgi?eraRx0574.zip

01〜1Fまで(0Aと0Dを除く)と7Fを格納した定数集です。
CHAR_(略語)という名前で定数を切っています。Emuera1824+v6.2対応
どうしても制御文字を使いたい場合にどうぞ

例:
CHAR_BS : バックスペース文字
CHAR_ESC : エスケープ文字

NULとCRとLFはEmuera側の解析処理が死ぬので多分無理

101あなたの名前を入力してください:2019/12/06(金) 00:40:48 ID:ld8kVcCE
>>41 >>43 の方のGLOBALを使った外部プロセス連携を真似して作ろうと思ったら、
SAVETEXT/LOADTEXTが作り出されてて、ありがとうございますの気持ち

102あなたの名前を入力してください:2019/12/20(金) 23:23:42 ID:Y/WcEBso
[その他]汎用チートERBv1.3
http://book-shelf-end.com/up/dwlink.cgi?eraRx0673.zip
>>83から更新
VariableSize.csvで禁止されていることをERB側で判断しようとしたけど結局できなかった……

103あなたの名前を入力してください:2020/05/21(木) 00:02:30 ID:G/anEBRE
>>93を某所で紹介したのにリンク切れなのを放置してたので、再うpついでにverうp。
以下の関数が追加されました。また、>>100の制御コードを使用しています(Emuera1824+v6.2対応)
http://book-shelf-end.com/up/dwlink.cgi?eraRx1173.zip

【追加関数】
・GET_RULED_FIRST_CHARA(rule)
複数のキャラruleを満たす場合に返すキャラがランダムではなく、indexが最も若いキャラである以外は、GET_RULED_SINGLE_CHARAと同じ

・FOR_EACH(targetArray,funcStr,answerArray)
targetArrayの各要素にfuncStrを適用し、結果をanswerArrayに返す。返り値は最後に処理したindex
funcStrでは、targetArrayのインデックスをindex、indexに対応する値をvalueとして扱う。

・FOR_EACH_CORE(targetArray,funcStr,answerArray)
式中関数であること以外はFOR_EACHに同じ

・TOTALIZE(targetArray,funcStr,firstValue=0)
初期値firstValueに対してtargetArrayの各要素をfuncStrを用いて統合し、結果を返す。
funcStrでは、targetArrayのインデックスをindex、indexに対応する値をvalue、totalizedValueを合計値として扱う。

・GET_VALUE_FROM_RANGED_DATA(value,rangeList)
CALC_CHARA_RANGED_DATAの一部機能を汎用関数として分離したもの。
valueName,charaIndexの代わりに、valueに値そのものを渡す

・GET_CHARA_ABL_MAP(targetChara,valueType="ABL")
キャラクタ変数valueTypeの全ての値を一つの文字列に連結して返す。ただし値が100を超えるものが一つでもあると、そこで異常終了する。
SAVETEXTを使わず、過去の断面を保存するのに使用できる。具体的にはinSchool_orgでビデオ撮影時のABLを保管するために使用
例:GET_CHARA_ABL_MAP(ASSI,"TALENT")
  ->助手のTALENTの値を全て連結した文字列を返す

・GET_CHARA_STR_ABL_FROM_MAP(targetMap,targetValue,valueType="ABL")
targetValueをvalueTypeの名前(CSVに定義されたもの)として、targetMapから対応する値を返す。
GET_CHARA_STR_ABL_FROM_MAP(targetMap,targetValue,valueType="ABL")
例:GET_CHARA_STR_ABL_FROM_MAP(targetMap,"従順","ABL")
  ->(targetMapにTARGETのABLの値が入っているとして)TARGETのtargetMap取得時点での従順の値を返す。

・GET_CHARA_ABL_FROM_MAP(targetMap,targetValue)
targetValueにCSVの番号を直接入れることを除き、GET_CHARA_STR_ABL_FROM_MAPに同じ

104あなたの名前を入力してください:2020/05/21(木) 00:18:39 ID:G/anEBRE
>>103はよく見たらモジュール足りてなかったので上げ直しました
http://book-shelf-end.com/up/dwlink.cgi?eraRx1174.zip

105average:2020/05/28(木) 09:29:52 ID:8Bb0YFOc
ZIPなどの圧縮ファイル解凍時に、Lhaplusだと文字化けして解凍されてしまい、
それに気づかずユーザーがプレイしてエラー落ちする現象が頻発したので、警告を出すようにするパッチです。

・mojibake_start.ERB
@MOJIBAKE_CHECK_START
RESULT = 99
TRYCALLFORM MOJIBAKE_CHECK
IF RESULT != 0
PRINTFORML ファイルが文字化けしています。「7-zip」を用いて解凍してください。
PRINTFORML https://sevenzip.osdn.jp/download.html
THROW ファイルが文字化けしています。「7-zip」を用いて解凍してください。
ENDIF

RETURN 0

・mojibake_た.ERB
@MOJIBAKE_CHECK
RETURN 0

実装例
@EVENTFIRST

CALL MOJIBAKE_CHECK_START

PRINTFORMW 正常に動作しました
BEGIN TITLE

RETURN 0


Lhaplusで解凍すると文字化けするためファイルを読み込まなくなるバグに警告を実装
http://book-shelf-end.com/up/dwlink.cgi?eraRx1197.zip

これはファイル名の「◯◯た.ERB」「◯◯た.CSV」が文字化けすると拡張子を破壊してしまうのを敢えて利用しました

106あなたの名前を入力してください:2021/03/22(月) 18:38:06 ID:Bky8hR2Q
有用スレなのであげておこう

107TW夢子口上の人:2021/03/29(月) 10:44:34 ID:4yNmY5FM
グラフィック表示ライブラリを更新したのでこちらで報告をば
G、CBG系の描画に対応しました。
使い方が大分煩雑化してきたので、もしわからなければ私宛にここかeratohoの方で呼びかけてもらえれば
気が付いた時にお答えします。(長くなりそうなら雑談スレの方に移った方がいいのだろうか…)

一応……本ライブラリは画像表示を簡略化するためのフリーライセンスのライブラリとなっています。
使用、改変、改造等に私の許可を得る必要はありません。(使うって言ってくれたらすごく喜びます)
同名のライブラリとして再配布するのは判別の観点からご遠慮ください。

グラフィックに文字書けるようにならないかなぁ…待ち望んでます。

【ファイルURL】
http://book-shelf-end.com/up/dwlink.cgi?eraRx2270.zip

【変更内容】
ver3.00
 G、CBG関連の関数を追加
 内部でグラフィックIDを記録保持するように変更
 CBGボタンの動的作成を追加
 HTML形式の描画にピクセル単位で縦横サイズを指定できる関数を追加

108ロウ:2021/11/24(水) 00:20:54 ID:oTOdo7..
emueraにてADVを作成するためのADVシステムライブラリを作成しました。
本システムを利用すれば、簡易にバリアントにADVを搭載させることが出来るようになります。

使用方法については各ERBおよびサンプルシナリオを参照してください。
質問して下さればお答えします。

また、本システムを使用した場合にはこちらのスレまで連絡を頂けると幸いです。
これはどのように使用されているか、バグや要望は無いか等を知るための個人的なお願いです。
報告と質問を元にして説明書を作ろうと思っているのでよろしくお願いします。

【ファイルURL】
http://book-shelf-end.com/up/dwlink.cgi?eraRx3042.zip

109あなたの名前を入力してください:2021/12/19(日) 06:03:02 ID:eOQKziuQ
-

110あなたの名前を入力してください:2021/12/28(火) 16:00:18 ID:6W70r./s
画面がスタックしていくウィンドウに近いUIフレームワーク作ってたけどPC壊れて消えちゃったんよな
コンフィグやショップを呼んだら戻ってこれて便利になりそうだっただけに残念

111あなたの名前を入力してください:2022/01/26(水) 00:01:43 ID:MOXnmXCg
if
0=3
3=3.14=π
π=null=undefined
undefined=understand
understand=0
これって無限ループ?
円周率をeraに組み込んで、演算したいんだけど
この関数でeraJKを改変して、eraDKを作るつもり。

112あなたの名前を入力してください:2022/01/26(水) 00:10:45 ID:1BUgSf/g
そもそも小数を扱えないeraBASICで必要な桁数なんてたかが知れてるし、定数にしていいんでは

113あなたの名前を入力してください:2022/01/26(水) 16:05:37 ID:mZavve0g
DK…? ドンキーコングでもはじまるのか?(初代

114あなたの名前を入力してください:2022/01/26(水) 18:56:30 ID:zWqYlJPg
クレムリン軍団を調教するバリアントか…

115あなたの名前を入力してください:2022/01/27(木) 18:15:57 ID:V5aQzQv6
他のDKというと…ドラゴンナイト?
デスクリムゾンはコンバット越前ぐらいしか居ないし…

116あなたの名前を入力してください:2022/01/28(金) 00:16:28 ID:BTj8rdZY
えっ 令和にダンクーガを!?

117あなたの名前を入力してください:2022/01/28(金) 01:15:25 ID:OIV5OCVs
ダンジョンキーパーやろ?

118あなたの名前を入力してください:2022/01/29(土) 22:45:42 ID:R7iWzq5U
eraBasicで小数うを扱うために自前で浮動小数点数の表示と計算をするライブラリ作ろうと思って調べて
標準規格の要求値が高すぎて諦めて投げ出したな…実装もひたすらビット演算することになってクッソ重いものになる見込みだったし

119あなたの名前を入力してください:2022/01/30(日) 09:15:32 ID:hsabFM4A
バージョン表示みたいに、出力するときに小数点付け足すことで足りる範囲でやれれば軽いんだけどね
314で計算して、文字列で出力するときにスライスして小数点打ってくっつけておしまい

120あなたの名前を入力してください:2022/02/09(水) 21:01:19 ID:RIh43jjQ
多倍長で計算するとか?
http://7ujm.net/play/pi.html

121あなたの名前を入力してください:2022/02/22(火) 15:34:58 ID:LNxQnAeE
例えば0.00001単位での精度の少数で良いならば
普段は目的の数を100,000倍した値で格納しておいて
表示時のみ÷100,000と剰余100,000して整数部と小数部を取得するのが一番手軽そうではある

122あなたの名前を入力してください:2023/03/18(土) 18:08:04 ID:/ULVRnH.
http://book-shelf-end.com/up/dwlink.cgi?eraRx3780.7z
最初は重複しない乱数を任意個数出力させようとしていたのが
いつの間にか(機能を限ってソースも入出力も簡単にした)「重複しない乱数2つ」を返す関数と
呼び出し元から渡された一次元配列の指定範囲の中身をランダムに入れ替える(=中身に重複しない数値を入れておけば「重複しない乱数n個」を出す事もできる)関数に化けていた代物です

(先に山札のn枚目までを特定の順番で積み込む処理とかをした後辺りで)「山札のn枚目よりも後ろのカードを・X枚目までシャッフル」とか
「始めの言葉と締めの言葉だけは固定にして中間の言葉はランダムな順番で表示したい」とか
そんな感じの処理にも使えるはずです

123あなたの名前を入力してください:2023/03/28(火) 00:09:07 ID:D9dHgQHU
http://book-shelf-end.com/up/dwlink.cgi?eraRx3815.7z
ソート用の一次元配列を用意せずに、またソートに用いる配列に0が入っていても関係なく全体をソートする二次元配列のソート用関数です
0を終端以外に使用せず・ソート用の一次元配列を用意するのならARRAYMSORT(と必要に応じてソート用配列にマイナスの値を掛けたりするとか)を用いる方がより高速なんじゃないでしょうか

http://book-shelf-end.com/up/dwlink.cgi?eraRx3814.7z
SWAP命令を用いる形式に修正したシャッフル関数(>>122 @NUM_ARRAY_SHUFFLE・@STR_ARRAY_SHUFFLE)の修正版です


新着レスの表示


名前: E-mail(省略可)

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

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

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

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