HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0628
とあるプログラマプラグイン機能を実装したい3解決


とあるプログラマ

リンク

2019/6/28(Fri) 16:56:07|NO.87768

HSPで作成したアプリケーションにプラグインを対応させるにはどういった方法があるでしょうか。
プラグイン開発の手軽さを考えてDLLライブラリのようなものではなくテキスト形式のスクリプトファイルを実行ファイル下のフォルダなどに配置してアプリケーション実行時に読み込み 実行する形で考えています。しかし1から言語を作るのは大変すぎますし、既存の言語形式で書くとしてもアプリケーション内で読み込んだものを変換して動かせるようにするモジュール等作るのも個人では相当難しいと思います。axファイルの読み込み、実行を実行中アプリケーション下で並行してできるならいいんですが、runコマンドでaxを実行すると変数類が全て破棄されてしますし…
なにか良い方法ありますでしょうか。



この記事に返信する


X

リンク

2019/6/29(Sat) 08:37:51|NO.87773

参考になるのはこちらのスレあたりでしょうか
http://hsp.tv/play/pforum.php?mode=pastwch&num=42969
http://hsp.tv/play/pforum.php?mode=pastwch&num=74782

また

monさまのお作りになられた
Module GS
http://monz.sp.land.to/wp/module_gs/about_module_gs/

えくー様のお作りになられた
mist
http://fe0km.blog.fc2.com/blog-entry-65.html

が応用できるかもしれません。



MIZUSHIKI

リンク

2019/7/1(Mon) 00:36:39|NO.87791

私も自分のソフトにユーザースクリプトを導入したくて、以下2つを実装したことがあります。

自作ソフト1:RhythmicaLyrics (http://suwa.pupu.jp/RhythmicaLyrics.html)
使用したもの:Lua 5.1

自作ソフト2:Touch Panel Gestures (http://suwa.pupu.jp/TouchPanelGestures.html)
使用したもの:mist(HSP3)


<Lua>
Luaは、Ver.5.1までしか扱ったことがありません。
最新のVer.5.3は、そのまま名前だけ変えるだけだと動きませんでした。

また、スタックの積み降ろしを理解しないといけないので難易度が高いです。

参考1:KpanさんによるHSPでの実行スクリプト
http://hsp.tv/play/pforum.php?mode=pastwch&num=25737

参考2:RhythmicaLyricsとの連携ツールのスクリプト置き場
http://timetag.main.jp/pukiwiki/index.php?GetTimetagLyrics
↑ lua5.1.dll, lua-xl.hspを使って、Module.hspの最初のほうを見て頂ければ何となく使い方が分かる、かな・・・?


<mist>
Xさんも紹介してくれた えくーさん が作った『HSPからHSP”ライク”なスクリプトを食って実行するためのプラグイン」です。
http://fe0km.blog.fc2.com/blog-entry-65.html

URL先を見てもらうと分かりますが、かなり何でも出来るような感じです。
HSP側の命令を公開して「ユーザーがposやmes命令を使ってソフト上に自由に描画する」ようなことまで出来ます。
(もちろん公開しないこともできます。というかそれがデフォルトです。)
mistはチュートリアルが充実しているので、ダウンロードして試してみてください。

私の場合はだいたい以下のような感じで実装しました。

#include "mist.hsp" mistString = {" #define UserScript1 MyFunc #module #deffunc MyFunc a = 0 + SYOKITI@hsp //初期値あったら足されてる repeat 10,1 a += cnt loop return a #global "} mstcompile mistString //ユーザースクリプトを読み込んでおいて UserScId = 1 ;mstload "SYOKITI = 100" //ユーザーに渡したいパラメータがあったのですが、SYOKITI@hspを使ってねみたいなテキトーな渡し方を選びました。 mstload "return UserScript"+UserScId+"()" //実行したい所で1行mistスクリプトを実行する。 mes stat //そして戻り値を利用する。


どちらを使う場合にも、自分でルールを決めて、ユーザーの作った関数名を拾う必要があります。(ある、と思います。)

私の場合、関数名は
・RhythmicaLyricsでは「SaveAs(引数1,引数2)」で固定。
・Touch Panel Gesturesでは「#define UserScript1 『ここに関数名』」と書いて貰い、先に検索して探しておく。
としました。

私個人としては、Luaは以前の盛り上がりが今は無さそうだし、2つの中ならmistの方が良いのではないかと思います。



とあるプログラマ

リンク

2019/7/2(Tue) 23:01:33|NO.87805

お二人ともありがとうございます。mistというのを試してみようと思います。既存のプログラムに組み込むには少し時間がかかると思いますし、自分が希望したようなプラグインも教えていただいたので一旦解決とします。
ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.