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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0405
MIZUSHIKIGitHubに置いたモジュールを自動でインストール【mod_netinclude.hsp - Ver.2.0】0解決


MIZUSHIKI

リンク

2022/4/5(Tue) 23:57:38|NO.95919

mod_netinclude.hsp の Ver.2.0 が出来ました。

ホームページ:http://suwa.pupu.jp/HSP/index.html#netinclude
GitHub:https://github.com/MIZUSHIKI/HSP-Module/blob/master/mod_netinclude.hsp

#netincludeは、GitHubからモジュールをダウンロードしてそのまま#includeできるモジュールです。
コンパクトなminバージョンがあり、コピペするだけで利用することもできます。
(ダウンロードするモジュールはcommon内にnetフォルダが作られそこに保存されます。)

// // サンプル mod_netinclude(minバージョン使用) // #ifdef _debug #include "hspinet.as" #include "mod_regexp.as" #define netinclude(%1,%2=_@_@) addition %1* exist"hsptmp":if strsize>0{a@_@="":b@_@="":w@_@=dir_exe+"\\common\\":y@_@="#net\include":notesel a@_@:noteload"hsptmp":noteunsel:matches a@_@,a@_@,y@_@+"\\s*\"((?:net/)?)(.+?)\"\\s*/\\s*,?\\s*(\\w*)":repeat stat:x@_@=w@_@:if"current"=a@_@.cnt.3{x@_@=""}exist x@_@+a@_@.cnt.1+a@_@.cnt.2:a@_@.cnt="0":if strsize<0{a@_@.cnt="":if""=x@_@{a@_@.cnt.3="2":m@_@++}else{a@_@.cnt.3="1":n@_@++}} loop:if n@_@+m@_@>0{s@_@="","","":z@_@="ダウンロード":repeat 2,1:i@_@=cnt:foreach a@_@:if"0"=a@_@.cnt{continue}if""+i@_@!a@_@.cnt.3{continue}if""!a@_@.cnt.1{if""=b@_@{netinit:neturl"https://main-timetag.ssl-lolipop.jp/HSP3NetModules/netmod.php?req=data":netrequest_get"":repeat:netexec n@_@:if n@_@{break}await 50:loop:netgetv b@_@:matches b@_@,b@_@,"^(.*?)\t(.*?)$":j@_@=stat}k@_@=cnt a@_@.cnt="0":repeat j@_@:if getpath(b@_@.cnt.1,16)=getpath(a@_@.k@_@.2,16){a@_@.k@_@=b@_@.cnt.2:a@_@.k@_@.2=b@_@.cnt.1:break}loop:if"0"=a@_@.cnt{continue}s@_@.i@_@+=">net/(->"+a@_@.cnt+")"+a@_@.cnt.2+"\n"}else{s@_@.i@_@+=">"+a@_@.cnt.2+"\n"}loop:loop:if""=s@_@.1+s@_@.2{dialog"モジュールデータが見つかりませんでした",1,y@_@:end}if""!s@_@.1{s@_@.0+=w@_@+"\n\nに\n\n"+s@_@.1:if""!s@_@.2{ s@_@.0+="\nを"+z@_@+"、\n------\n\n"}}if""!s@_@.2{s@_@.0+=dir_cur+"\n\nに\n\n"+s@_@.2}dialog s@_@.0+"\nを"+z@_@+"します。",2,y@_@:if stat=6{s@_@="":x@_@=dir_cur:if""=b@_@{netinit}foreach a@_@:if"0"=a@_@.cnt{continue}if"1"=a@_@.cnt.3{chdir w@_@}a@_@.cnt.1+=a@_@.cnt.2:a@_@.cnt=a@_@.cnt+a@_@.cnt.2:split a@_@.cnt.1,"/",b@_@:repeat stat-1:dirlist _@_@,b@_@.cnt,5:if stat=0{mkdir b@_@.cnt} chdir b@_@.cnt:loop:neturl"https://raw.githubusercontent.com/"+a@_@.cnt:netrequest_get"":repeat:netexec n@_@:if n@_@{break}await 50:loop:netgetv b@_@:if"40"=strmid(b@_@,0,2){s@_@+=">"+a@_@.cnt+"\n"}else{notesel b@_@:notesave getpath(a@_@.cnt,8)}chdir x@_@:loop:if""!s@_@{dialog z@_@+"に失敗しました。\n\n"+s@_@,,y@_@:end}dialog z@_@+"しました。\nHSPを再実行して下さい。",,y@_@:end}}sdim a@_@} #else #define netinclude(%1,%2=_@_@) include %1 #endif #netinclude "net/a2d+AlphaLayer.hsp"/ ; ←末尾『/』は必須。 // 背景 picload dir_tv+"\\sozai5.jpg" // キャラ素材ロード alCreateImageByFile 0, dir_tv+"\\tamadot.png" ; 画像から仮想イメージを作成(イメージID 0) // キャラ alCreateImage 1, 64,64 ; 仮想イメージ(イメージID 1)を作って alalSetParent 1,,, 100,350 ; イメージID 1をアルファレイヤーとして貼り付け。 mes "背景のレイヤー(通常のHSPウィンドウ)とキャラのレイヤーを分けているので、" mes "キャラクターだけ動かしても背景を再描画する必要がありません。" // キャラクターアニメーション:alCopyImageToImage と alalRedraw を繰り返す repeat alErase alCopyImageToImage 0,1, 0,0,64,64, 64*(4+cnt\4),64*3 ; イメージID 0 から 1 へ 歩きモーション(1~4)をコピー alalRedraw 1 ; イメージID 1 のアルファレイヤーを更新。 alalWidth 1, ,, 100+cnt*10 ; アルファレイヤー(イメージID 1)の位置を移動 await 500 loop

今回の更新内容ですが、
GitHubに置いたモジュール情報をまとめて記録(登録/取得)できる HSP3NetModules というサービス(?)を作りました。
ここにモジュールの情報を集めることで、今までよりも#netincludeの記述を短くすることができるようになりました。

#netinclude "MIZUSHIKI/HSP-Module/master/a2d+AlphaLayer.hsp"/ ↓ #netinclude "net/a2d+AlphaLayer.hsp"/

HSP3NetModules は、phpで動いてます。
データはテキストファイル(.data)で保存されており、netmod.phpとdataファイルの2つだけで動くのでバックアップや配置場所(環境)の移行もやろうと思えば簡単にできます。
データの中身もURLにアクセスすれば誰でも確認できます。
https://main-timetag.ssl-lolipop.jp/HSP3NetModules/hsp3netmodules.data

phpからのデータ出力:https://main-timetag.ssl-lolipop.jp/HSP3NetModules/netmod.php?req=data
( ソースを表示した方が見やすいかも『 view-source:https://main-timetag.ssl-lolipop.jp/HSP3NetModules/netmod.php?req=data 』)

php中身(GitHub): https://github.com/MIZUSHIKI/HSP3NetModules/blob/master/netmod.php


HSP3NetModulesへのモジュールデータの登録は、誰でも可能です。

① まずは、mod_netinclude.hsp をインストールします。
以下をHSPで実行してください。commonフォルダに「mod_netinclude.hsp」がダウンロードされます。
(または上記のホームページ、GitHubからダウンロード)

// mod_netinclude.hsp インストール用スクリプト #include "hspinet.as" dialog dir_exe+"\\common\\\n\nに\n\nmod_netinclude.hsp\n\nをダウンロードします。",2,"mod_netinclude.hsp" if stat!6: end netinit: chdir dir_exe+"\\common\\" neturl "https://raw.githubusercontent.com/MIZUSHIKI/HSP-Module/master/" netload "mod_netinclude.hsp" dialog"mod_netinclude.hsp をダウンロードしました。": end
② 登録には mod_netinclude.hsp の netinclude_PostModule命令を使います。
モジュールは先にGitHubにアップロードしておいてください。php側で確認しに行きます。

//登録例 #include "mod_netinclude.hsp" netinclude_PostModule "MIZUSHIKI/HSP-Module/master/mod_grpbox.hsp"
③ ちゃんと登録できたかの確認は netinclude_GetData命令を使います。

//データの取得と表示 #include "mod_netinclude.hsp" netinclude_GetData

common内のnetフォルダにダウンロードして集約されるので、モジュールにhsファイル(ヘルプ)情報が書いてあれば F1ヘルプで命令の詳細も確認できます。

#include "mod_netinclude.hsp" #netinclude "net/mod_grpbox.hsp"/ syscolor 15 :boxf :color pos 100,100 grpbox "グループボックス", 150,100 ;← 一度HSP実行してモジュールダウンロード後、キーワードにカーソルを合わせて F1を押してみてください。 pos 300,100 edgebox "エッジボックス", 150,100

各命令等の詳細はオンラインヘルプを置いてますので、こちらからご覧ください。
http://suwa.pupu.jp/HSP/netinclude/OnlineHDL.html

---

簡単にモジュールをインストールして利用できる環境を作りたいと思い取り組んでみました。
「何かもっとこうした方が良いのではないか」ご意見・アドバイスなど頂ければ幸いです。

例えば、現状だとcommon内のnetフォルダにダウンロードされるので #include "net/mod_grpbox.hsp" のように毎回すべてに「net/」を記述しないといけないところとかはどうなのだろうかと考えています。
ただ、commonフォルダに直接ダウンロードしてしまうのはネットから取って来たものを区別しにくくなるので、フォルダに纏めた方が良いかと考え現在の方法を取っています。
等々

よろしくお願いします。



この記事に返信する


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