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

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

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(省略可)

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

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

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

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