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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0514
修死新しい命令を自分で作りたいとき10解決


修死

リンク

2008/5/14(Wed) 23:51:20|NO.15819

新しい命令を自分で作りたいと思っているのですが例として次のような命令を作るには
どうすればよいのでしょうか?・・・というか作れるのでしょうか?

例 colormes p1,p2,p3//これを新しい命令として
  p1:xの値
  p2:yの値
  p3:メッセージする文字

*****ここのファイルはincludeのような形にして(別ファイル)****************
color 255,255,255
  pos p1,p2
mes "p3"



この記事に返信する


jill

リンク

2008/5/15(Thu) 01:22:38|NO.15822

まだ始めたばかりで正しいかどうか分かりませんが

#module #deffunc colormes int p1,int p2,str p3 color 255,0,0 pos p1,p2 mes p3 return #global colormes 10,50,"test" stop



レヴィン

リンク

2008/5/15(Thu) 10:20:19|NO.15826

jillさんのであってます(color 255,0,0は打ち間違いかな?修死
さんはcolor 255,255,255だし)。

ただ、1つ注意点があります。
>>ここのファイルはincludeのような形にして(別ファイル)
とあるのでソースファイルを分割するようですが、インクルードファイルは
実際に命令を使うよりも上に入れないと命令が使えない
ので注意!!



修死

リンク

2008/5/15(Thu) 19:22:52|NO.15836

>jillさん
ご返信ありがとうございます!
ある程度は自分でできていたのですが、#moduleを使わなければいけなかったんですね。
>レヴィンさん
ご返信ありがとうございます!
おそらくjillさんは255,255,255のままだと白色なので別な色で見えるようにしてくれたのかと
思います。アドバイスして頂いたものも注意して作りますね。

〉皆様方へ
話は変わるのですが、いまいち#funcの使い方が分かりません。
この命令はどういった時につかうのでしょうか?



船丸

リンク

2008/5/15(Thu) 19:33:20|NO.15837

#fong命令は外部DLL(API)を使わないのなら要らないです。



修死

リンク

2008/5/16(Fri) 09:36:16|NO.15854

>船丸さん
#funcはAPIを使わなければ必要ないんですね。ありがとうございました。

>皆様へ
何度も質問申し訳ありませんが、例えばこの新命令として作ったhspファイルの
プログラムを閲覧できないようにするにして、includeするに
はどうすればよいのでしょうか?



たこ

リンク

2008/5/16(Fri) 16:00:02|NO.15857

実行ファイルにしてやれば新規命令も一つにまとめてEXE化してくれて、
スクリプト自体が閲覧不可能になります...。



レヴィン

リンク

2008/5/16(Fri) 16:16:15|NO.15858

>>hspファイルのプログラムを閲覧できないようにするにして、includeするに
>>は…
意味が良く分からないんですが…

もしかして修死さんはユーザー作成命令の書かれているファイル―と言うか
インクルードファイルをDLLのように同梱しなければならないと考えているんでしょうか?
もしそうなら、それは間違いです。

インクルードされているファイルはコンパイル時にインクルードしているファイルに
結合されてコンパイルされています。
つまり、
"user_func.hsp"というファイルがあるとします。これの内容は以下のとおり

#module #deffunc colormes int p1,int p2,str p3 color 255,0,0 pos p1,p2 mes p3 return #global
jillさんの書いたやつですね。

そして"main.hsp"というファイルがあります。
これの内容は以下のとおり。


#include "user_func.hsp" *main colormes 10,50,"test" stop
これで"main.hsp"をコンパイルすると


#include "user_func.hsp"
の部分が

#module #deffunc colormes int p1,int p2,str p3 color 255,0,0 pos p1,p2 mes p3 return #global
に置き換えられてコンパイルされます。
これは、他のソースファイルをインクルードする場合にも同様です。

また、EXEにする場合、
ソースファイルは一切パックファイル及び、EXEの入ったディレクトリに
同梱する必要はありません。
同梱すると、パックファイルを解析された時、逆にソースを見られてしまいます。
(逆コンパイラだとEXEをソースにできるけど、変数名・ラベル名・コメントなどは
全て失われているので、大元のソースを見られることはありません。
ソース自体は見られるけど、解析かなりメンドイよ。
自分で作ったやつで試したことあるけど)



修死

リンク

2008/5/16(Fri) 16:19:29|NO.15859

ごめんなさい勘違いさせてしまって(^^;;
そういう意味ではなく、もしそのモジュールを他人の人に配布する際に
閲覧&変更できないファイルにするには・・・・という意味です。



たこ

リンク

2008/5/16(Fri) 16:46:24|NO.15861

残念ながら無理です。
ですが、モジュールの拡張子だけを.dllに変えて配布すれば、
閲覧はできないし、変更しようとしている人の目を少し誤魔化せられるかもしれないですww



raisen

リンク

2008/5/16(Fri) 18:24:53|NO.15862

拡張子をasにしてみてはどうでしょうか?
といっても・・・



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