[5865] 点線を引きたい 投稿者:惟神 投稿日:01/07/29(日) 18:31
プログラム初心者の惟神です

今、点線を引くモジュールを作っているのですが
私のしている方法だと、psetで1文字ずつ点を打っているので
どうしても処理がかなり遅くなってしまいます
しかも、縦に引く命令と横に引く命令を一つずつ作らないといけません
何か良い方法はあるでしょうか?
どなたかご教授ください〜


;-----------------------------------------
;ten_h p1,p2,p3
;点線を下方向に引きます
;p1は描画開始 x 位置、p2は描画開始 y 位置
;p3は描画終点 y 位置です

;ten_w p1,p2,p3
;点線を右方向に引きます
;p1は描画開始 x 位置、p2は描画開始 y 位置
;p3は描画終点 x 位置です
;------------------------------------------
#module
#deffunc ten_h int,int,int
mref x ,0
mref y1,1
mref y2,2

repeat
t=y1+cnt : if t\3 : t++
if t>y2 : break
pset x,t
loop

return

#deffunc ten_w int,int,int
mref x1,0
mref y ,1
mref x2,2


repeat
t=x1+cnt : if t\3 : t++
if t>x2 : break
pset t,y
loop

return
#global
;以下サンプル
screen 0,100,100
ten_h 50,10,90
ten_w 10,50,90
stop

[6009] Re: 点線を引きたい 投稿者:惟神 投稿日:01/08/02(木) 00:05
一括レスで申し訳ありません

>> ペークさん
モジュール内でredrawを使ってしまうと、
もしループ内でこの命令を呼び出した時
モジュール内でいったん書き換えスイッチをオンにしてしまっているため
点線がチラチラしてしまいます。
これはサンプルが悪かったようですね、どうも申し訳ありませんでした

>> sprocketさん
具体的なサンプルまで用意してくださって、本当に申し訳ありません
終点が始点より負の方向にある場合は、
同じ数で引くか-1を掛ければよかったんですよね
こんな簡単な事に気付きませんでした(^^;
この方法なら私の作ったものより綺麗ですし、高速に描画されるので
このサンプルを少し改造してみたいと思います

>> ANTARESさん
そういう手もありましたか…
bufferに描画→gcopyという手は、
どうも画像を扱う時のみとしか今までは考えていませんでした(^^;
この手法はまた別のモジュールに流用できそうです
レスありがとうございました!

プログラムっていうものは、ホント発想の転換が大事なものですね

>> chokkoさん
VRAM操作にはまだ手を出した事が無いので、
直接RGB値を書き換えるという方法は思いつきませんでした(^^;
一応ヘルプ見ながら試してみたのですが、今一理解できてないので
もっと勉強してからこの方法を試して見ます
方法2は、ANTARESさんの方法と考え方は同じですね
今度、他のプログラムで流用してみます
> スタート地点からゴール地点まで、psetが一歩ずつゴールを
> 目指して追いかけて来ると考えて下さい。STGで敵が自機に向かって移動してくるのと同じです。
あ、そういう風に考えればよかったんですね
STGは以前、試しに作ったことがあるのに気付きませんでした…(^^;
レスありがとうございました!

>> すっとんきょうさん
レスありがとうございます
点線が一本ならまだしも、十数本を、しかもループ内で描画するとなると
やはりpsetによる速度低下は否めません…
高速な描画を突き詰めていくと、やはりVRAM操作は外せませんね
さくらさんのHPからTIPSをダウンロードして
今、VRAM操作について勉強しています
すっとんきょうさんのモジュールを実行してみましたが
アンチエイリアスかかっていて、しかも高速に動いていて驚きました
頑張って解読してみたいと思います(^^

[6020] Re^2: 点線を引きたい 投稿者:うっちー 投稿日:01/08/02(木) 12:48 <URL>
反応が鈍くて既にこのスレッドは終わっちゃったかもしれませんが…(^^;)

速度的にどうかは実験したことがないのでわかりませんが、
WinAPI関数の「LineTo」を使うと手軽に点線が引けます。
点線だけではなく、破線、1点鎖線、2点鎖線なんかも可能です♪
API関数を使うため、loadlib.dll等が必須ですが…
私のホームページに置いてあるので試してみてはいかがでしょう?(^-^)

[5904] Re: 点線を引きたい 投稿者:すっとんきょう 投稿日:01/07/30(月) 13:30
 ども、すっとんきょうです。

> 惟神さん
>
> 今、点線を引くモジュールを作っているのですが
> 私のしている方法だと、psetで1文字ずつ点を打っているので
> どうしても処理がかなり遅くなってしまいます
> しかも、縦に引く命令と横に引く命令を一つずつ作らないといけません
> 何か良い方法はあるでしょうか?

 一番やりやすい方法は、redraw 0の状態でをpsetで点を1つずつ打っていき
、点線を描画し終えたらredrawをかけるというやり方ですね。

 ただ、psetの速度が気になる場合はvramに直接書き込むという方法もあり
ますが、そうなると幾つか厄介な問題も出てきます。
 例えばpsetの場合は、指定した座標がスクリーンの範囲外であれば、自動
的に描画が行われないようになりますが、vramを使うと、この範囲のチェック
を自分で行う必要があります。
 もちろん、線の描画中にそのチェックが何度も行われていては、無駄な処
理が増えて描画速度が落ちてしまいます。
 その為、事前に描画範囲を確認しておく必要が生まれます。この辺りの方
法については、下記のページのアルゴリズムの解説で詳しく説明しています。
 その代わり、紹介しているプログラムはC言語ですが…。

http://www.people.or.jp/~fussy/index.htm

 その他の問題として、カラーモードに併せた操作や、画像の横幅を4バイ
ト単位に修正する作業、画像の位置が上下逆さまになっているなど、問題は幾
つかあります。

 一応自分が以前作ったライン描画モジュールも載せておきます。
 きちんと作れば、実際はこのモジュール以上の描画速度が得られるかもし
れません。

http://www3.ocn.ne.jp/~staro/hsp_dir/aaline.as

 その他、さくらさんのページのHSPTips!にあるvram操作に関する解説や、H
SPSDK中のhtmlファイルなどが参考になります。

 では…

[5894] Re: 点線を引きたい 投稿者:chokko 投稿日:01/07/30(月) 08:04 <URL>
> 今、点線を引くモジュールを作っているのですが
> 私のしている方法だと、psetで1文字ずつ点を打っているので
> どうしても処理がかなり遅くなってしまいます

(方法1)
mref ,66を使用して、VRAM内のRGBを直接書き換えると
より高速化できます。(VRAM操作の方法はヘルプに書いてあります。)
パレットモードとフルカラーモードで
VRAM内の配置が異なる点に注意して下さい。

(方法2)
まず、オフスクリーンを確保しlineで実線を書きます。
その上からディザリングさせたマスクを被せ、それを
コピーしてくるとかなり高速です。

> しかも、縦に引く命令と横に引く命令を一つずつ作らないといけません
> 何か良い方法はあるでしょうか?

スタート地点からゴール地点まで、psetが一歩ずつゴールを
目指して追いかけて来ると考えて下さい。STGで敵が自機に向かって移動してくるのと同じです。
頑張って下さい♪

[5889] Re: 点線を引きたい 投稿者:ANTARES 投稿日:01/07/30(月) 06:22 <URL>
>今、点線を引くモジュールを作っているのですが
>どうしても処理がかなり遅くなってしまいます
 モジュールとして適切なやり方ではありませんが、
最も高速に点線を引く方法は、点線の画像をbufferに
用意しておき(またはbufferにpsetで描いておき)、
gcopyする方法でしょう。

[5869] Re: 点線を引きたい 投稿者:sprocket 投稿日:01/07/29(日) 19:08 <URL>
> しかも、縦に引く命令と横に引く命令を一つずつ作らないといけません

縦も横もひとつの命令で引けるようにしたいなら次のようなやり方もあります。
斜め線も可能。
速度の改善にはなりませんが。


#module
; hasen 開始x座標, 開始x座標, 終端x座標, 終端x座標
#deffunc hasen
mref v1
mref v2,1
mref v3,2
mref v4,3

xl=v3-v1
yl=v4-v2

max=xl:if max<0 : max=-max
a=yl:if a<0 : a=-a
if a>max : max=a

repeat max
if cnt\2 : pset xl*cnt/max+v1,yl*cnt/max+v2
loop
return
#global

repeat
rnd a,256
palcolor a
x1=x2:y1=y2
rnd x2,winx:rnd y2,winy
hasen x1,y1,x2,y2 ; 必要に応じて redraw を使って高速化
wait 1
loop
stop

[5870] Re^2: 点線を引きたい 投稿者:sprocket 投稿日:01/07/29(日) 19:14 <URL>
いらんかも知れないけど訂正

>; hasen 開始x座標, 開始x座標, 終端x座標, 終端x座標 ←誤
; hasen 開始x座標,開始"y"座標,終端x座標,終端"y"座標 ←正

[5866] Re: 点線を引きたい 投稿者:ペーク 投稿日:01/07/29(日) 18:44 <URL>
redraw 0〜redraw 1で高速化してみよう
#module
#deffunc ten_h int,int,int
mref x ,0
mref y1,1
mref y2,2
redraw 0
repeat
t=y1+cnt : if t\3 : t++
if t>y2 : break
pset x,t
loop
redraw 1
return

#deffunc ten_w int,int,int
mref x1,0
mref y ,1
mref x2,2

redraw 0
repeat
t=x1+cnt : if t\3 : t++
if t>x2 : break
pset t,y
loop
redraw 1
return
#global

#でも遅くなりませんでしたよ(・_・)?
#二つ以上命令を作るなら、二つ作らないと駄目ですよ。

[5991] WEBへの入力 投稿者: 投稿日:01/08/01(水) 09:48
初めてメールします。  龍と申します。
あるホームページに自動で項目を入力したいと思っているのですが、
以下のようなスクリプトだと幾らTabキーでカーソルを指定の項目へ
おくっても、アドレスのところに文字が入ってしまい
ます。 何か方法はないでしょうか? これができれば、懸賞などの
入力にも使えると思えます。 誰か御知恵を貸して下さい。

−−− 省く −−−
exec "http://www.onionsoft.net/hsp/bbs/hspbbs.cgi?",16
wait 150
−−− 途中省く −−−
aplobj "web",2
aplact,2
aplkey 09
wait 150
aplstr "お名前"
wait 150
−−− 以下省く −−−

[6001] Re: WEBへの入力 投稿者:スミス 投稿日:01/08/01(水) 20:01 <URL>
スミスです。

ブラウザ内のオブジェクト(InputBox等)は、apl系命令では操作ができないようです。
考え方を変えて、サイト限定であればhspsockを利用して、cgiに直接引数を渡す手もあります。

[6014] Re^2: WEBへの入力 投稿者: 投稿日:01/08/02(木) 09:06
> スミスです。
>>どうも、ご返答ありがとうございます。

> ブラウザ内のオブジェクト(InputBox等)は、apl系命令では操作ができないようです。
> 考え方を変えて、サイト限定であればhspsockを利用して、cgiに直接引数を渡す手もあります。
>>hspsockは分かるのですが、cgiに直接引数を渡すと言う事がよく分かりません。 できれば詳しく教えて頂けないでしょうか。

どうかよろしくお願いいたします。 m(_)m

[6019] Re^3: WEBへの入力 投稿者:スミス 投稿日:01/08/02(木) 11:51 <URL>
スミスです。

hspsockのサンプルとしてhspsock.asというのがあります(\hsp25\sample\hspsock)。
これの*sdの処理でsockopen命令後、sockput "GET "+dir+"〜・・・
とありますが、文字列変数dirの中身は例えば"/index.html"だったりします。
これをcgiへのアクセスに置き換えると、"xxxx.cgi"となりますが、引数を
渡すのであれば、"xxxx.cgi?name=test&page=1&mode=normal"みたいな手続きで行うことが出来ます。
この中の"name"だとか"page"だとかはそのcgiで受け取ることができるパラメータ名
ということになり、これらのパラメータ名はhtmlのソースのTEXTタグのname=の部分を確認すれば判明します。

プログラムのテストで他サイトにいきなしアクセスしちゃうのも余計な負荷をかけてしまうので、
まずはご自分が契約なされているISPのWebサーバ上にテスト用のcgiを置き、
それに対してテストするなりしてください。
もしくは、Windows用のWWWサーバソフト(HTTPD)などを入れてローカルでテストしてみてください。
ご参考までに。

[6013] 無題 投稿者:MAS 投稿日:01/08/02(木) 08:46
FTPアップロードソフトを作りたいのですが、
HSPで作れますか?

[6018] Re: 無題 投稿者:トントン 投稿日:01/08/02(木) 11:48 <URL>
過去ログを検索してみてください。
それでは。

[5959] ウィンドウのサイズについて 投稿者:桑原(くわばら)です。 投稿日:01/07/31(火) 15:13 <URL>
こんにちわ。僕は、桑原といいます。

Vector から、HSP で作られたソフトをダウンロードしたことが
あるんですが、そのソフトによっては、起動するときに、
ウィンドウが一瞬白く大きくなってから指定されたサイズ、色に
なるみたいです。

そういった現象は、なぜ起こるのでしょうか?
また、その解決方法などあったら、教えてください。お願いします m(_ _)m

[6017] Re: ウィンドウのサイズについて 投稿者:桑原(くわばら)です。 投稿日:01/08/02(木) 11:38 <URL>
桜井さん、150 さん、教えてくださいまして、誠に有難う御座います。

でも、僕は、あまり HSP を使ったことがないので、殆どコマンドが分かりません。
どういったコマンドから勉強していけば良いのでしょうか?

> PS. 何も考えずHPのURLクリックしてしまいました(笑)
あ、どうもすみません。でも、僕の Web ページは、本当に下品です。
仕上がりは、殆どできてません。ちょっとした文字ぐらいです。
特に下品なのは、「変な昔話」です。今後、色々な情報を公開するつもりですが、
まだ、現在の Web ページは、未完成なので、見ないで下さい。m(_ _)m

とりあえず、メモしておきます。
今後の HSP プログラムの作成に役立てたいと思います。
誠に、有難う御座いました。m(_ _)m
また何かあったら、そのときも、どうぞよろしくお願いいたします。

[5961] Re: ウィンドウのサイズについて 投稿者:150 投稿日:01/07/31(火) 15:23
 
> Vector から、HSP で作られたソフトをダウンロードしたことが
> あるんですが、そのソフトによっては、起動するときに、
> ウィンドウが一瞬白く大きくなってから指定されたサイズ、色に
> なるみたいです。
>
> そういった現象は、なぜ起こるのでしょうか?
> また、その解決方法などあったら、教えてください。お願いします m(_ _)m

IDが0のウィンドウならば、EXE化するときにメインウィンドウを非表示にする
オプションにチェックをいれておき、描画処理終了後にgselで表示すれば
いいですし、それ以外のウィンドウの場合は、以前例示されている方が
いましたが、-500,-500など、デスクトップからは見えない場所で作成して
おき、必要なときにwidth命令でX/Yの座標を変えてやればいいですよ。

見難くなってしまった・・・反省。

[5960] Re: ウィンドウのサイズについて 投稿者:桜井 投稿日:01/07/31(火) 15:20
> Vector から、HSP で作られたソフトをダウンロードしたことが
> あるんですが、そのソフトによっては、起動するときに、
> ウィンドウが一瞬白く大きくなってから指定されたサイズ、色に
> なるみたいです。
>
> そういった現象は、なぜ起こるのでしょうか?
> また、その解決方法などあったら、教えてください。お願いします m(_ _)m

おそらくですが、実行可能ファイルを作成する時に、
"起動時にメインウインドゥを非表示にする"
にチェックを入れていなかったためかと。
まさか、ウインドウ初期化直後にまた初期化なんてしないでしょうから・・・。

PS. 何も考えずHPのURLクリックしてしまいました(笑)

[6006] API 投稿者:MAS 投稿日:01/08/01(水) 22:21
前からずっと気になっていたんですが、
皆さんが使っているAPIというものはどういうものなのですか?
過去ログ検索で「API登竜門」と言うサイトを見つけたのですが、
なぜか繋がりません。誰か教えてください・・・・
またAPIについて詳しく書いてあるサイトがあったら、
それも教えてくれるとありがたいです。

[6016] Re: API 投稿者:トントン 投稿日:01/08/02(木) 10:09 <URL>
> 過去ログ検索で「API登竜門」と言うサイトを見つけたのですが、
私のサイトのことですよね。
「API登竜門」は新コーナー「HSP-CENTER」の中に移転しました。
http://www.f8.dion.ne.jp/~skenta/hsp/hspcenter.htm
の下のほうのAPI講座がそうです。
それでは。

[6007] Re: API 投稿者:Lahan 投稿日:01/08/01(水) 23:06 <URL>
http://yokohama.cool.ne.jp/chokuto/

↑のサイト等は結構わかりやすかったですよ。
実例や簡単なリファレンスもありますし。
私は大体ここで学びました。

[6015] HSP 投稿者:htht 投稿日:01/08/02(木) 09:22
http://messages.yahoo.co.jp/bbs?action=m&board=2000083&tid=a3ha3sa3p&sid=2000083&mid=1
HSPの掲示板へ↑

[6011] 宣伝で恐縮です。 投稿者:Digm 投稿日:01/08/02(木) 02:35 <URL>
 自作ゲームをホームページにアップしました。
 タイトルは「シューティングモンスターズ」(略称シューモン)と言います。

 名前からネタがバレバレがですが、何もゲットしません。(^_^;)
(ピカチ○ーも出てきません)
 拙い作品ですが、ゲームユーザーな方のお越しをお待ちしてます。

http://www.top.or.jp/~digm

[5982] シューティングゲームで・・・ 投稿者:ひさし 投稿日:01/08/01(水) 00:39
こんばんわ、hspやって2,3ヶ月です。
今シューティングゲームを作ってるんですが、スコアの保存ができません。

score=10000 ;スコア(仮)
poke score,,score
bsave "*.*",score ;*.*はファイルネーム

スコアなので他人にメモ帳とかで変更されたくないです・・・
頑張ってるんだけど謎が謎を呼んで・・・(汗)
でもエラーが起きないって事は厳密に言うとあっているのかなぁ?
わかる人よろしくお願いします。

[5983] Re: シューティングゲームで・・・ 投稿者:sprocket 投稿日:01/08/01(水) 00:55 <URL>
> スコアなので他人にメモ帳とかで変更されたくないです・・・
> 頑張ってるんだけど謎が謎を呼んで・・・(汗)

poke が何のためにあるのか知りませんが、スコアの保存だけなら以下のようにして出来ます。
保存ファイルはバイナリデータになるのでメモ帳で変更されたりはしないと思います。
(変更されたらエラーが出るようにチェックサムをつけることもありますが)

score=12345 ;スコア
mes ""+score
bsave "temp.txt",score ;save
score=0

bload "temp.txt",score ;load
mes ""+score
stop

[6008] Re^2: シューティングゲームで・・・ 投稿者:ひさし 投稿日:01/08/02(木) 00:00
> 
> poke が何のためにあるのか知りませんが、スコアの保存だけなら以下のようにして出来ます。
> 保存ファイルはバイナリデータになるのでメモ帳で変更されたりはしないと思います。
> (変更されたらエラーが出るようにチェックサムをつけることもありますが)
>

おぉぉ!ありがとうございます!できました!

[6005] 時刻合わせ 投稿者:MOMO 投稿日:01/08/01(水) 22:16
HSPでSNTPを使った時刻合わせは可能ですか?
あれば 方法を教えてもらえないでしょうか?

[6004] ショートカットから起動 投稿者:neg 投稿日:01/08/01(水) 21:48
エクスプローラーの「送る」の様な物を作っているのですが、
どうにも上手くいきませんでしたので、質問させて頂いています。

exec命令でアプリケーションそのものにコマンドラインを与えて
起動することは出来たのですが、
ショートカットに同様の方法を取ると失敗してしまいました。

アプリケーション本体のアドレスがわからず、ショートカットのアドレスのみ
判明しているときに、コマンドラインを与えて起動するにはどうすれば良いのでしょうか?
ご存知の方は是非ご教授をお願いいたします。

[5996] HTMLタグと演算子の判別 投稿者:くみ 投稿日:01/08/01(水) 12:33
こんにちわ。質問です。

HTMLファイル内に含まれる 演算子の "<" や">" 等を
&lt;、&gt;に全置換したいのですが ">" が タグなのか
演算子なのか 判別できません。(T_T)
もし できるのでしたら やり方を教えてください。m(_ _)m

[6002] Re: HTMLタグと演算子の判別 投稿者:ペーク 投稿日:01/08/01(水) 20:19 <URL>
> こんにちわ。質問です。
>
> HTMLファイル内に含まれる 演算子の "<" や">" 等を
> &lt;、&gt;に全置換したいのですが ">" が タグなのか
> 演算子なのか 判別できません。(T_T)
> もし できるのでしたら やり方を教えてください。m(_ _)m
うすあじさんのHSPcenterに全置換スクリプトがあります。

#&amp;lt;は&amp;amp;lt;でできたり・・・

[6003] Re^2: HTMLタグと演算子の判別 投稿者:ペーク 投稿日:01/08/01(水) 20:19 <URL>
> #&amp;lt;は&amp;amp;lt;でできたり・・・
あぁ!変換されないの!?
&copy;

[5998] Re: HTMLタグと演算子の判別 投稿者:えいじ 投稿日:01/08/01(水) 17:12
> HTMLファイル内に含まれる 演算子の "<" や">" 等を
> &lt;、&gt;に全置換したいのですが ">" が タグなのか
> 演算子なのか 判別できません。(T_T)
> もし できるのでしたら やり方を教えてください。m(_ _)m

極端な話をすれば、
dim HTML,1
HTML=10
a=2<<HTML>>4
mes a
stop
みたいなことも出来るのでそのままでは無理ですね…(-;
また、HTMLタグは改行せずに続けて書いてよいので
文頭と、それに対応するものを変換という方法も無理です。
なので別のアプローチを考える必要があります。
例えば、<#>から</#>までは全て置き換えとか、
最初から特殊な記号で書くのか
(質問の意図からしてこれは意味ありませんがw)
というのが思いついた方法かなぁ。。。
あとはタグの解析をして不正な表記の場合は
変換という方法もあるけど、
利用可能タグに制限がない限りは難しいなぁ。。。
制限があるならそれのみを判別すればいいので
楽なんですが。。。

それでは再見!

[6000] エクセルを操作できますか? 投稿者:小心者 投稿日:01/08/01(水) 17:41
初めて投稿します。
最近HSPに興味を持ちいろいろ勉強しているのですが、
HSPでエクセルのシートやセルを直接操作することはできますか?
初歩的な質問で申し訳ないのですが、
どなたか教えていただければ助かります。

[5988] MIDIplayer 投稿者:MAS 投稿日:01/08/01(水) 08:50
僕はMIDIプレイヤを作っています。
それで、"2:32/5:00"のように、今演奏した時間/曲の演奏時間
と言うのを表示したいのですが、
また、できたら早送り、巻き戻し、音量調節などいろいろな機能もほしいです。
そういうdllなどはないでしょうか??

[5993] Re: MIDIplayer 投稿者:sprocket 投稿日:01/08/01(水) 10:15 <URL>
> それで、"2:32/5:00"のように、今演奏した時間/曲の演奏時間
> と言うのを表示したいのですが、
> また、できたら早送り、巻き戻し、音量調節などいろいろな機能もほしいです。
> そういうdllなどはないでしょうか??

時間表示と時点移動についてはDLLを使わなくても mci を使えば出来ます。
(自分のページでMCIコマンド集とサンプルのMIDIプレイヤーを公開しております。)
音量調節となると、APIを使う必要がありそうですが、簡単なものでいいなら
sndvol32.exe /t を呼び出せば形にならなくはないです。

[5995] Re^2: MIDIplayer 投稿者:MAS 投稿日:01/08/01(水) 10:30
> 時間表示と時点移動についてはDLLを使わなくても mci を使えば出来ます。
> (自分のページでMCIコマンド集とサンプルのMIDIプレイヤーを公開しております。)
> 音量調節となると、APIを使う必要がありそうですが、簡単なものでいいなら
> sndvol32.exe /t を呼び出せば形にならなくはないです。
ありがとうございました。
とてもためになりました。

[5989] (削除) 投稿者:(削除) 投稿日:01/08/01(水) 09:35
(削除されました)

[5990] Re: クリップボードにテキストを転送したいのですが・・ 投稿者:あはは 投稿日:01/08/01(水) 09:37
> クリップボードテキスト転送したいのですが
> 拡張命令:hspext.dllが必要です とか書いてあるけど
> どうやって拡張すりばいいのかわからないのと
>
> button"送る",*okuru
> stop
> *okuru
> clipset "strings"
>
> といれても文法が間違っていますと出ます

追記 それからクリップボードに送る文字に変数は使えますか?
それも教えてください
> どうすればクリップボードテキスト転送ができるようになりますか?
> おしえてください

[5992] Re^2: クリップボードにテキストを転送したいのですが・・ 投稿者:桜井 投稿日:01/08/01(水) 09:58
ちょっと親記事が削除されてて何がどうなってるのかわかんないんですけど・・・。

> > クリップボードテキスト転送したいのですが
> > 拡張命令:hspext.dllが必要です とか書いてあるけど
> > どうやって拡張すりばいいのかわからないのと

というのはあははさんの質問と受け取ってもいいんでしょうか?
勝手にそう仮定しますが(^^;

スクリプトの先頭に、
#include "hspext.as"
と入力して下さい。
これでhspext.dllの命令が使えるようになります。

> 追記 それからクリップボードに送る文字に変数は使えますか?
> それも教えてください

以下のスクリプトで試してみましょう。

#include "hspext.as"
buf="クリップボードに送る文字列"
button"送る",*okuru
stop
*okuru
clipset buf
end

[5994] Re^3: クリップボードにテキストを転送したいのですが・・ 投稿者:あはは 投稿日:01/08/01(水) 10:15
> ちょっと親記事が削除されてて何がどうなってるのかわかんないんですけど・・・。
>
> > > クリップボードテキスト転送したいのですが
> > > 拡張命令:hspext.dllが必要です とか書いてあるけど
> > > どうやって拡張すりばいいのかわからないのと
>
> というのはあははさんの質問と受け取ってもいいんでしょうか?
> 勝手にそう仮定しますが(^^;
>
> スクリプトの先頭に、
> #include "hspext.as"
> と入力して下さい。
> これでhspext.dllの命令が使えるようになります。
>
> > 追記 それからクリップボードに送る文字に変数は使えますか?
> > それも教えてください
>
> 以下のスクリプトで試してみましょう。
>
> #include "hspext.as"
> buf="クリップボードに送る文字列"
> button"送る",*okuru
> stop
> *okuru
> clipset buf
> end

桜井さんのおかげで
ソフトが完成しましたありがとうございました

[5976] 無題 投稿者:yah 投稿日:01/07/31(火) 20:05
私は現役の迷惑メーラーですが、無造作にメールアドレスを作り出して出会い系メールを大量に送る高機能なソフトの作り方を教えてください
お願いします
文句があるならメールに送って下さい

[5987] Re: 無題(迷惑メール作成ソフト) 投稿者:jirou 投稿日:01/08/01(水) 07:40
 >私は現役の迷惑メーラーですが、無造作にメールアドレスを作り出して
>出会い系メールを大量に送る高機能なソフトの作り方を教えてください
>お願いします

・現存するそういったソフトは、とんでもないメール数を処理しているようなので無理
・出来たとしても、倫理的に問題(迷惑)
・存在しないメールを送信した場合、エラーメールが発生するのでサーバーに負担がかかり、メール数が多いとダウンする可能性もある。


>文句があるならメールに送って下さい

こういった「文句があるなら」という発言(しかも単発)の場合
本人のアドレスでは無い場合も有るのでメールでなどは送りませんょん

# タイトルは内容が解るのを付けましょう

[5985] おしえてください 投稿者:つばっち 投稿日:01/08/01(水) 01:51
最近HSPをはじめました。
大きな数(ある数の何千乗など)の計算をしたいのですが、
正しい計算結果が得られません。
なぜでしょうか。
できないと非常にまずいんです。
よろしくお願いします。

[5986] Re: おしえてください 投稿者:HIROMI 投稿日:01/08/01(水) 04:35
> 大きな数(ある数の何千乗など)の計算をしたいのですが、
> 正しい計算結果が得られません。
> なぜでしょうか。

HSPが一度に覚えていられる桁数をオーバーしています.
暗算ではなく筆算をさせましょう.

> できないと非常にまずいんです。

筆算をさせられるようになっても速度的に無理だと思います.
もっと高速な言語を使用した方がいいかと思います.

[5921] フォルダー選択について 投稿者:geo 投稿日:01/07/30(月) 23:32 <URL>
dialogでファイルを開く(選ぶ)ことは出来るのですが、フォルダー(ディレクトリ)を選択する事が出来ません。
どなたか、知っていませんか?

[5923] Re: フォルダー選択について 投稿者:MAS 投稿日:01/07/30(月) 23:39
> dialogでファイルを開く(選ぶ)ことは出来るのですが、フォルダー(ディレクトリ)を選択する事が出来ません。
> どなたか、知っていませんか?
selfolder命令でできます。
この命令はhspext.dllを使います。
詳しくはマニュアルを読んでください。

[5984] Re^2: フォルダー選択について 投稿者:geo 投稿日:01/08/01(水) 01:14 <URL>
> > dialogでファイルを開く(選ぶ)ことは出来るのですが、フォルダー(ディレクトリ)を選択する事が出来ません。
> > どなたか、知っていませんか?
> selfolder命令でできます。
> この命令はhspext.dllを使います。
> 詳しくはマニュアルを読んでください。
フォルダー選択の方法を教えてくださいってありがとうございます。

[5974] パレットについて。 投稿者:あい 投稿日:01/07/31(火) 18:03
こんばんは。
ただいま、パレットについてちょっと混乱しています。

「screen」や「buffer」で画面モードを0(フルカラー)にしているので、
パレットについて特に意識はしていなかったのですが、
「gmode 2」にして透明色を使いはじめてから、
うまく表示されない場合がでてしまいました。
それぞれの画像は、サイズ節約のため16色や256色などパレットの内容もバラバラです。

これだけの説明では伝わらないかも知れませんが、
画面モードをフルカラーにしていれば、
特にパレットは意識しなくて構わないのでしょうか。
透明色は、RGB=(0,0,0)にしておけば、
パレットの番号などは意識しなくて構わないのでしょうか。

どなたか御教授お願いします。

[5980] Re: パレットについて。 投稿者:K-K 投稿日:01/07/31(火) 21:21

>「gmode 2」にして透明色を使いはじめてから、
>うまく表示されない場合がでてしまいました。
>それぞれの画像は、サイズ節約のため16色や256色などパレットの内容もバラバラです。
まず,画像の表示自体がおかしい場合は,画像やウインドウの横の幅が4の倍数に
なっているかを確かめてください.4の倍数になっていないと正常にコピーできない
ことがあります.
あと,RGB(0,0,0)だと思っていたのがRGB(0,0,1)とか見た目は黒でも
実際にはRGB(0,0,0)になっていないような場合も考えられます.

>画面モードをフルカラーにしていれば、
>特にパレットは意識しなくて構わないのでしょうか。
フルカラーモードではパレットは無いので意識する必要は無いです.

では.

[5981] Re^2: パレットについて。 投稿者:あい 投稿日:01/07/31(火) 22:30
レスありがとうございます。
アドバイスいただいて、もう一度はじめからやりなおしてみたところ、
あっさり成功してしまいました。

原因は、アドバイスの通りRGB(0,0,0)でなかったみたいです。
書き込む前に、そこも注意して何度も確認していたのですが、
windowsのペイントを使っていたのがまずかったみたいです。
起動が遅くて使っていなかったPhotoshopで作りなおしたらできました。

こんな恥ずかしい私ですが、
また何か問題が発生したときにはよろしくお願いします。
ありがとうございました。

[5969] はじめは・・・ 投稿者:iwa 投稿日:01/07/31(火) 16:46
はじめて書き込ませていただきます
僕は、イマ中2でHSP暦1ヶ月です
大体の命令にもなれてさぁゲームをつくるぞぉぉぉ
っとおもったんですが
なにを作ったらいいかわかりません
シューティングはむずかしすぎるし・・・
どなたかご教授おねがいします

[5970] Re: はじめは・・・ 投稿者:150 投稿日:01/07/31(火) 17:00
> シューティングはむずかしすぎるし・・・
> どなたかご教授おねがいします

自分は一番最初にHIT&BLOWを作りましたよ。
画面も、オリジナルっぽくつや消しシルバーを基調として作りました。
ゲーム自体は大した事ないですが、出来るだけ見た目クオリティー高そうな
のを、というコンセプトで。

三並べなんかに挑戦するのもいいかも知れません。

シューティングもぜんぜん難しくはない(ある程度のものまではですが。)
ので、ぜひ挑戦されていはいかが?

あまり参考になりそうにもありませんね。ゴメン。

[5977] Re^2: thankyou 投稿者:iwa 投稿日:01/07/31(火) 20:16
ありがとうございます
3並べに挑戦したいと思います
ありがとうございました

[5975] 無題 投稿者:yah 投稿日:01/07/31(火) 20:03
 

[5973] はじめまして 投稿者:たけC 投稿日:01/07/31(火) 17:47
MLDファイル再生するソフトをHSPで作りたいと思っているんですが、MLDファイルが再生できるスクリプト、または、dllがダウンロードできるサイトをご存知の方がいらっしゃれば教えてください。

よろしくお願いします

[5968] 追加して objprm するには 投稿者:あはは 投稿日:01/07/31(火) 16:35
ちゃんとできました
ありがとうございます
すこし複雑ですが
がんばります

[5971] Re: 追加して objprm するには 投稿者:sprocket 投稿日:01/07/31(火) 17:01 <URL>
> ちゃんとできました
> ありがとうございます
> すこし複雑ですが
> がんばります

それはよかったです。
ただ、連続する話題はレスに対する返信にしてくださいね。

[5972] Re^2: 追加して objprm するには 投稿者:あはは 投稿日:01/07/31(火) 17:26
> > ちゃんとできました
> > ありがとうございます
> > すこし複雑ですが
> > がんばります
>
> それはよかったです。
> ただ、連続する話題はレスに対する返信にしてくださいね。

はい こんどからそうします

[5965] 追加して objprm するにはどうすればいいのですか? 投稿者:あはは 投稿日:01/07/31(火) 16:16
追加して objprm するにはどうすればできますか?
あとobjprm するとき英文字【aなど】を入れたいときに
どうしても変数と認識してしまうのですが
解決できますか?

[5967] Re: 追加して objprm するにはどうすればいいのですか? 投稿者:sprocket 投稿日:01/07/31(火) 16:31 <URL>
> 追加して objprm するにはどうすればできますか?

メッセージボックスのバッファの内容に文字列を加算します。

sdim buf,32768
mesbox buf,400,300,1
button "add",*add
stop
*add
objprm 0,buf+" add"
stop


> あとobjprm するとき英文字【aなど】を入れたいときに
> どうしても変数と認識してしまうのですが
> 解決できますか?

それは、英文字を "ダブルクォーテーション" で囲んでないためです。

[5966] Re: 追加して objprm するにはどうすればいいのですか? 投稿者:ペーク 投稿日:01/07/31(火) 16:26 <URL>
> 追加して objprm するにはどうすればできますか?

┐;~_~)┌ドウイウコッチャ

> あとobjprm するとき英文字【aなど】を入れたいときに
ダブルクォーテーション(")でかこめば問題ありません。

[5964] 宣伝です。 投稿者:トントン 投稿日:01/07/31(火) 15:46 <URL>
トントンです。
BRANCHの新コーナーが出来たので、この場で報告させていただきます。
タイトルはHSP-CENTERです。HSPに関するコラムやアルゴリズムをやっています。
ぜひ1度来てみてください。
それでは。

[5932] VRAMについて 投稿者:トントン 投稿日:01/07/31(火) 08:30 <URL>
トントンです。
VRAMについて知りたいのですが、ヘルプのどこに書いてあるのでしょうか?ご存知の方、教えてください。

[5933] Re: VRAMについて 投稿者:桜井 投稿日:01/07/31(火) 09:45
> トントンです。
> VRAMについて知りたいのですが、ヘルプのどこに書いてあるのでしょうか?ご存知の方、教えてください。

HSPマニュアル総合インデックス → HSPからのDLL呼び出し方法リファレンスマニュアル
のところの最後にちょこっと書いてありますよ〜(^^)

では(^-^)ノ

[5963] Re^2: VRAMについて 投稿者:トントン 投稿日:01/07/31(火) 15:42 <URL>
ありがとうございます。見つけました。
少し複雑ですががんばってみます。

[5957] いろいろ教えていただきありがとうございます 投稿者:あはは 投稿日:01/07/31(火) 14:51
みなさんに教えていただいたおかげでだいぶソフトができましたが
ここから下に書く質問はまだわからないので教えてください


メツセージボックスにボタンを押していれることができましたが
2つボタンを押すと2つとも並んで表示することができますか?
----------------------------------------------------------------
こんなふうにしたい↓
________________
| | ←メッセージボックス
----------------
(こんな)  (ふうに) ←ボタン

↓ボタンを押したらこんなのになるようにしたい
 ________________
| こんなふうに | ←メッセージボックス
----------------
(こんな)  (ふうに) ←ボタン

[5958] Re: いろいろ教えていただきありがとうございます 投稿者:sprocket 投稿日:01/07/31(火) 15:08 <URL>
> メツセージボックスにボタンを押していれることができましたが
> 2つボタンを押すと2つとも並んで表示することができますか?

メッセージボックスの内容に新しい内容を追加して objprm することで
可能です。


投稿のタイトルは内容を簡潔に表すものにしてください。

また、掲示板は多くの人が共有する場です。
同じ質問を続けて投稿することは避けていただけるとありがたいです。
特にツリー表示を使っている人にとっては混乱の元となります。

[5962] Re^2: いろいろ教えていただきありがとうございます 投稿者:あはは 投稿日:01/07/31(火) 15:41
> > メツセージボックスにボタンを押していれることができましたが
> > 2つボタンを押すと2つとも並んで表示することができますか?
>
> メッセージボックスの内容に新しい内容を追加して objprm することで
> 可能です。
>
>
> 投稿のタイトルは内容を簡潔に表すものにしてください。
>
> また、掲示板は多くの人が共有する場です。
> 同じ質問を続けて投稿することは避けていただけるとありがたいです。
> 特にツリー表示を使っている人にとっては混乱の元となります。

すいません こんどから注意します

[5954] 別ウィンドウ(2回目...) 投稿者:たう 投稿日:01/07/31(火) 14:00 <URL>
width 200,220
font "MS UI Gothic",12
objmode 2
cls 1
*main
key=""
pos 25,10:mes "キーワード"
pos 20,25:input key,150,22
objsize 100,12

pos 25,75:mes "検索エンジン"
pos 10,90:chkbox "Yahoo!JAPAN",yahoo
pos 10,102:chkbox "excite",excite
pos 10,114:chkbox "Google",Google
pos 10,126:chkbox "infoseek",infoseek
pos 10,138:chkbox "フレッシュアイ",フレッシュアイ
pos 10,150:chkbox "LYCOS",LYCOS
pos 10,162:chkbox "goo",goo

pos 10,190:objsize 88,21:button "OK",*go
pos 98,190:objsize 88,21:button "キャンセル",*owari
stop
*go
if yahoo=1:exec "http://search.yahoo.co.jp/bin/search?p="+key,16 ;yahoo
if excite=1:exec "http://www.excite.co.jp/search.gw?search="+key,16 ;excite
if Google=1:exec "http://www.google.co.jp/search?q="+key,16 ;Google
if infoseek=1:exec "http://www.infoseek.co.jp/Titles?col=JW&qt="+key,16;infoseek
if フレッシュアイ=1:exec "http://search.fresheye.com/?term=monthly&kw="+key,16;フレッシュアイ
if LYCOS=1:exec "http://www.lycos.co.jp/cgi-bin/pursuit?query="+key,16 ;LYCOS
if goo=1:exec "http://www.goo.ne.jp/default.asp?MT="+key,16 ;goo
stop
*owari
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
という感じのスクリプトなんですが、
2つ以上の検索エンジンを選択すると、
ウィンドウ1つしか開かなくてうわがき(?)
されてしまってこまってます。
どうすればいいのでしょうか?
なるべくならHSPver.2.5でつくりたいです。

[5956] Re: 別ウィンドウ(2回目...) 投稿者:HIROMI 投稿日:01/07/31(火) 14:27
公開するものですか?
もしそうだとすると,新しいウィンドウで開く,ということ自体が実現困
難なことだと思います.
ユーザーはどんなブラウザを使用しているかわかりません.
そのブラウザがどんなオプションで新しいウィンドウを開くのかわからな
いし,タブ型ブラウザなら新しいウィンドウを開く機能ははじめから付いて
いないでしょう.
??ユーザー限定,とするならばそれにあわせたスクリプトを組めばいいわ
けです.

IEならば・・・
ieDir="\"C:\\Program Files\\Internet Explorer\\IExplore.exe\""
;↑各ユーザーが指定
exec ieDir+" http://www.goo.ne.jp/default.asp"

[5948] また質問です 投稿者:あはは 投稿日:01/07/31(火) 12:28
ボタンを押すとメッセージボックスに文字が
表示されるようにしたいのですが
どうすればできるでしょうか?
教えてください
(pos命令でボタンの場所を変えることができました。
 ありがとうございました。           )
 

[5952] Re: また質問です 投稿者:MAS 投稿日:01/07/31(火) 13:17
> ボタンを押すとメッセージボックスに文字が
> 表示されるようにしたいのですが
> どうすればできるでしょうか?
objprmを使ってはどうでしょう?
objprm オブジェクトID,表示される文字列変数
---サンプルソース
screen 0,640,480
a=""
mesbox a,winx,winy-50,5,500
button "押して",*SAMPLE
button "消すよ",*DEL
stop
*SAMPLE
b="表示する文字列です"
objprm 0,b
stop
*DEL
c=""
objprm 0,c
stop

[5953] Re^2: また質問です 投稿者:MAS 投稿日:01/07/31(火) 13:18
あ、先越されてたですね・・・

[5950] Re: また質問です 投稿者:ペーク 投稿日:01/07/31(火) 13:15 <URL>
button "Push",*push
stop
*push
input a
stop

[5951] Re^2: また質問です 投稿者:ペーク 投稿日:01/07/31(火) 13:16 <URL>
> button "Push",*push
> stop
> *push
> input a
> stop
あ、間違えてる(勘違いしてた。)
input a
button "Push",*push
stop
*push
objprm 0,"あ";変更
stop

[5949] メッセージボックスに文字表示 投稿者:脱力 投稿日:01/07/31(火) 13:14 <URL>
> ボタンを押すとメッセージボックスに文字が
> 表示されるようにしたいのですが
> どうすればできるでしょうか?
> 教えてください

buttonでラベルに飛んだあとに
objprmで、メッセージボックスに表示したい文字を送ればいいです。

objprmのHELP参照・・・
オブジェクトIDが厄介だとおもいますが・・

[5935] 無題 投稿者:たう 投稿日:01/07/31(火) 09:58 <URL>
[exec]でInternet Explorerを開くとき別ウィンドウで
ひらくことはできますか?おしえてください。
(execじゃなくてもいいです)

[5942] Re: 無題 投稿者:takadeko 投稿日:01/07/31(火) 11:53 <URL>
> [exec]でInternet Explorerを開くとき別ウィンドウで
> ひらくことはできますか?おしえてください。
> (execじゃなくてもいいです)
たぶん何もしなくても、別ウィンドウで開くと思います。
一応、命令です。↓

*hata
button"GO",*goweb
stop
*goweb
exec"http://dekodekomameta.hoops.ne.jp/",16
stop

です。参考にしてください。

[5945] Re^2: 別ウィンドウで開く 投稿者:たう 投稿日:01/07/31(火) 12:04 <URL>
できませんよぅ(T_T)
うちのPCの設定が違うから??

[5947] Re^3: 別ウィンドウで開く 投稿者:HIROMI 投稿日:01/07/31(火) 12:15
ここにはだいぶお久しぶり|・)ノ

> できませんよぅ(T_T)
> うちのPCの設定が違うから??

HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Topic ←ここの
WWW_OpenURL ←これを
WWW_OpenURLNewWindow ←こう

でも配布するんならこんなことやると嫌がられるので,
HKEY_CLASSES_ROOT\http\shell\ に
opennewキーを付け足して,HSP2.55でp3に"opennew"を指定しましょう.

[5946] Re^3: 別ウィンドウで開く 投稿者:takadeko 投稿日:01/07/31(火) 12:08 <URL>
> できませんよぅ(T_T)
> うちのPCの設定が違うから??
?????????んーーーよくわかんないんだけど・・
それは、あれですか?
button押した上に、IEが立ち上がるということですか?

[5936] 別ウィンドウで開く(かきなおし) 投稿者:たう 投稿日:01/07/31(火) 09:59 <URL>
 [exec]でInternet Explorerを開くとき別ウィンドウで
ひらくことはできますか?おしえてください。
(execじゃなくてもいいです)

[5862] バイナリ 投稿者:HyperSystem 投稿日:01/07/29(日) 18:20
こんにちわ、いきなりですが質問をさせていただきます。
えっとですね、着メロデータを作れるようなソフトを作りたいのですが、HSPでバイナリデータを作ることは可能なんでしょうか?
もし、可能ならどんな方法があるのでしょうか?
教えてください。

[5890] Re: バイナリ 投稿者:ANTARES 投稿日:01/07/30(月) 06:23 <URL>
 誤解があるように思うので、バイナリデータについて
説明します。
 バイナリデータにはいろいろなものがあります。
midiファイルもexeファイルもwavファイルもbmpファイルも
そのデータはバイナリデータです。テキストデータでないものは
すべてバイナリデータです。
 HSPはバイナリデータを作るのに十分な機能を持っていますが、
それがわかっただけで着メロデータが作れるわけではありません。
 例えば、htmlファイルはテキストファイルですし、HSPは
テキストファイルを作るのに十分な機能を持っていますが、
HSPでテキストファイルが作れるようになったからといって
htmlファイルが作れるとは限りません。どういうルールに
基づいてテキストデータを並べればhtmlファイルになるのかを
知り、そのルールに基づいてテキストデータを作って
初めてhtmlファイルを作ることができるのです。
 同様に、着メロデータを作るには、どんなデータをどんな
順序で並べればいいかというルール(フォーマットと言います)を
知って、そのルールにしたがってバイナリデータを作ることが
必要です。それは、いわば、bmpsaveを使わずにbmpファイルを
作るようなものです。
 ですから、着メロデータを作るには、まずそのフォーマットを
知ることが必要です。この点については、残念ながら私は
何の役にも立てません。

[5944] Re^2: バイナリ 投稿者:HyperSystem 投稿日:01/07/31(火) 11:59
あ、そういうのは知ってます。
すでに着メロデータに関する仕様書(?)みたいなものも手に入れていますし(解析サイトとかで
HTMLファイルもHSPで作ってこともありますしね。
わざわざ心配してくださってありがとうございます。

[5864] Re: バイナリ 投稿者:sprocket 投稿日:01/07/29(日) 18:27 <URL>
> えっとですね、着メロデータを作れるようなソフトを作りたいのですが、HSPでバイナリデータを作ることは可能なんでしょうか?

バイナリデータの操作は peek, poke で行えます。

[5943] Re^2: バイナリ 投稿者:HyperSystem 投稿日:01/07/31(火) 11:58
返事が遅くなってすみません。
peekとpokeでできるんですか。ありがとうございます。

[5937] 場違いな質問 投稿者:MAS 投稿日:01/07/31(火) 11:06
非常に場違いな質問ですいません。
僕は今じぶんのホームページでHSPの講座などをやりたいと
思っているんですが、それっておにたま氏の許可を取らないといけないんでしょうか?
(おにたま氏は今忙しいと思うのでこちらに投稿してみました。)

[5939] Re: 場違いな質問 投稿者:takadeko 投稿日:01/07/31(火) 11:48 <URL>
> 非常に場違いな質問ですいません。
> 僕は今じぶんのホームページでHSPの講座などをやりたいと
> 思っているんですが、それっておにたま氏の許可を取らないといけないんでしょうか?
私も昔同じような質問をしたことがあります。
これは、うすあじ氏によると、
☆こんなのならいい
1、講座やHSPに関するサイトであるなら、いいそうです。
2、DLLをUPしている。
☆してはいけないこと
1、HSP本体をDLできるようにしている。
または直リンク。
こんなかんじです。
-------------------------
わたしもHSPのサイトつくってるんで、暇だったらどうぞ
web : dekodekomameta.hoops.ne.jp/

[5941] Re^2: 場違いな質問 投稿者:MAS 投稿日:01/07/31(火) 11:52
> わたしもHSPのサイトつくってるんで、暇だったらどうぞ
> web : dekodekomameta.hoops.ne.jp/
  ↑このサイトなら時々行きます。お気に入りにもはいってます。
ありがとうございました。  

[5938] 質問です 投稿者:あはは 投稿日:01/07/31(火) 11:45
初めてHSPでソフトを作っているのですが
ボタンの座標はどうやってきめればいいのですか?
教えてください

[5940] Re: 質問です 投稿者:MAS 投稿日:01/07/31(火) 11:49
> 初めてHSPでソフトを作っているのですが
> ボタンの座標はどうやってきめればいいのですか?
> 教えてください
ボタンにかかわらず、オブジェクトの座標は
pos x座標,y座標
で指定できます。

[5927] hspdxをつかっての、弾の連射はできますか? 投稿者:たくてくす 投稿日:01/07/30(月) 23:51
 STGをつくっているのですが、hspdxに依存しない自機弾の連射を
組んでいたのですが、処理的に重くなってしまうのでスプライトを使用して
自機弾の連射を行おうとしたのですが、どうしても上手く行きません。

 何回か連射を行うと、弾が出なくなってしまい、しかも、スプライトの有効範囲を
出ているのに、スプライトが削除されずに処理が続いているようで、
どんどん処理速度が落ちていきます(結果的に、DirectXに依存していない
方よりも重くなってしまいます(TT。


*********************************************************
*myshot
repeat SHOTMAX:ym=cnt
if jkey1>=16:sht.ym=1:jkey1-
if sht.ym=1:gosub *weapon

es_draw xm,1
loop

return

*weapon
es_new xm,500
if xm<520 {
es_set xm,x+12,y,500;弾スプライト位置(No500)
es_type xm,4;type値(4)
es_adir xm,16,4000;X軸+
sht.ym=2
}

******************************************************

このようなサブルーチンで処理しているのですが、
どうしても上手く動きません……。

[5929] Re: hspdxをつかっての、弾の連射はできますか? 投稿者:たかのん 投稿日:01/07/31(火) 01:21 <URL>
> *myshot
> repeat SHOTMAX:ym=cnt
> if jkey1>=16:sht.ym=1:jkey1-
> if sht.ym=1:gosub *weapon
>
> es_draw xm,1
> loop

jkey1というのは弾を撃つキーの判定変数でしょうか?
それとも弾の生存期間を示すタイマーなんでしょうか?
どうもこのあたりに原因がありそうです。

ちなみに es_draw はこの repeat〜loop の区間では
必要ありません。es_sync と同様メインのループで
1回行えばOKです。


> *weapon
> es_new xm,500
> if xm<520 {
> es_set xm,x+12,y,500;弾スプライト位置(No500)
> es_type xm,4;type値(4)
> es_adir xm,16,4000;X軸+
> sht.ym=2
> }

このスプライトの生成処理部分は問題なさそうですね。
多分、なんですが、描写範囲を超えてスプライトが削除されても、
配列変数shtの値がリセットされてないため、変数SHOTMAX以上の
弾数が撃てなくなってるのではないかと。

hspdx.dll用のサンプルシューティング&スクリプトがありますんで、
よかったら参考にしてみてください。講座は途中かけなんだよな^^;

http://homepage1.nifty.com/takanon/hsp/sample30.lzh

[5931] ありがとうございました! 原因解明! 投稿者:たくてくす 投稿日:01/07/31(火) 04:25
> ちなみに es_draw はこの repeat〜loop の区間では
> 必要ありません。es_sync と同様メインのループで
> 1回行えばOKです。

1番大きな原因はコレだったようです^^;
実は雑魚敵を描くときにも別に1個に使ってたんで、それと妙な具合に干渉していたようです…。
 さらに2回描写してるからそれで処理が重くなっていたようです^^;


>
> http://homepage1.nifty.com/takanon/hsp/sample30.lzh

↑、じつはそちらのサイトの講座を参考にDirectX用にスクリプト移植してました(笑

本当にありがとうございました^^ノ

[5928] 修正… 投稿者:たくてくす 投稿日:01/07/30(月) 23:54
>  STGをつくっているのですが、hspdxに依存しない自機弾の連射を
> 組んでいたのですが、処理的に重くなってしまうのでスプライトを使用して
> 自機弾の連射を行おうとしたのですが、どうしても上手く行きません。
>
>  何回か連射を行うと、弾が出なくなってしまい、しかも、スプライトの有効範囲を
> 出ているのに、スプライトが削除されずに処理が続いているようで、
> どんどん処理速度が落ちていきます(結果的に、DirectXに依存していない
> 方よりも重くなってしまいます(TT。
>
>
> *********************************************************
> *myshot
> repeat SHOTMAX:ym=cnt
> if jkey1>=16:sht.ym=1:jkey1-
> if sht.ym=1:gosub *weapon
>
> es_draw xm,1
> loop
>
> return
>
> *weapon
> es_new xm,500
> if xm<520 {
> es_set xm,x+12,y,500;弾スプライト位置(No500)
> es_type xm,4;type値(4)
> es_adir xm,16,4000;X軸+
> sht.ym=2
> }
return

すいません、またコピー&ペーストのミスです(><
最後のreturn写し忘れてました

[5887] 思考ルーチンについて質問です。 投稿者:鈴菜 萌 投稿日:01/07/30(月) 06:19 <URL>
ちょっと前にも書き込ませていただきました鈴菜というものです。
思考ルーチンって、なんですか?・・・なんていったらタコられそうなので(苦笑)改めて・・・。
思考ルーチンは、どういう風に作り上げていけば言いのでしょうか?
前回のカキコ同様すごろくゲームを作っているわけなのですが、的の動きに関するところでストップしてしまっています。
ほかに関しては大体見通しがついているだけにちょっと悔しい状況・・・。
簡単なサンプルをいただけると感激モノです。
思考ルーチンに関して、フォーマットとかあるんでしょうか?
教えていただけると幸いです。

頑張れ卒製っ!いや、なんでもないです(笑

[5893] Re: 思考ルーチンについて質問です。 投稿者:chokko 投稿日:01/07/30(月) 07:45 <URL>
>思考ルーチンは、どういう風に作り上げていけば言いのでしょうか?

本来プレイヤーが受け持つパートを、鈴菜さんが受け持ったと思って
それをそのままスクリプトで表現して行けば大丈夫です。
通常は、プレイヤーのキー入力判定部分を、
そっくりそのまま思考ルーチンに置き換えます。
思考ルーチンで考えさせたベストなキー操作を、
stickの取得変数に直接自分で代入させるだけで構いません。

ちなみに、双六ならランダムな値をビットシフトして、
そのままstickのp1に放り込むだけで、
そこそこ動くような気がします(^^;)

>思考ルーチンに関して、フォーマットとかあるんでしょうか?
全く無いので、自由に作って行けばOKです。頑張って下さい。

[5930] Re^2: 思考ルーチンについて質問です。 投稿者:鈴菜 萌 投稿日:01/07/31(火) 01:44 <URL>
レス、ありがとうございました。
早速取り掛かりたいと思います。

最終的にはネット対応に・・・とか思ってたりします^^;
目指せ完成〜〜♪

[5892] Re: 思考ルーチンについて質問です。 投稿者:トントン 投稿日:01/07/30(月) 07:35 <URL>
もう少し具体的に
1.どういうソフトを作っているのか。
2.どういう処理をしたいのか。
という事が述べられていると、答える側も答えやすいと思います。
シミュレーションゲームについては888さんのページのゲームクリエーターズルームで
少し解説されています。
http://hp.vector.co.jp/authors/VA020801/

[5888] Re: 思考ルーチンについて質問です。 投稿者:鈴菜 萌 投稿日:01/07/30(月) 06:20 <URL>
> 前回のカキコ同様すごろくゲームを作っているわけなのですが、的の動きに関するところで・・・
的じゃなくって敵ですね。
あぅ、変換ミス・・・^^;

[5922] aplstr 投稿者:MAS 投稿日:01/07/30(月) 23:34
質問なんですが、
今僕はHP作成ソフトを作っています。
ウインドウが二つあって、右ウインドウにはボタンがあり、
それを押すと左ウインドウのエディタ部にタグが書かれるやつです。
僕はその機能を、hspextのaplstrで実現しようとしたわけなんですが、
たとえば
  aplstr "<IMG SRC="sample.gif" ALT="さんぷる">"
という命令を実行すると
  >
と右端の一文字しか表示されないんです。
どうにかして全部の文字を表示させられないでしょうか?

[5925] Re: aplstr 投稿者:K-K 投稿日:01/07/30(月) 23:41

>  aplstr "<IMG SRC="sample.gif" ALT="さんぷる">"
>という命令を実行すると
>  >
>と右端の一文字しか表示されないんです。

aplstr "<IMG SRC=\"sample.gif\" ALT=\"さんぷる\">"
としてみてください.

「"」は文字列の始まりと終わりを意味します.
MASさんの書いたものを見ると,どこからどこまでが文字列なのかが
おかしくなっています.
"<IMG SRC=" と " ALT=" と ">" が文字列として扱われます.
「"」を表示させるためには,「\"」と書く必要があります.

[5926] Re^2: aplstr 投稿者:MAS 投稿日:01/07/30(月) 23:50
> 
> >  aplstr "<IMG SRC="sample.gif" ALT="さんぷる">"
> >という命令を実行すると
> >  >
> >と右端の一文字しか表示されないんです。
>
> aplstr "<IMG SRC=\"sample.gif\" ALT=\"さんぷる\">"
> としてみてください.
>
上の命令を実行したらちゃんと動きました。
K-Kさんありがとうございました。

[5908] 多次元の配列への代入について 投稿者:Иα 投稿日:01/07/30(月) 16:00
お初に書き込ませて頂きます。
早速ですが質問です。

array.0.0=A
array.0.1=B
array.0.2=C
配列変数「array」にこういう感じの文字列を代入する場合に、
記述を簡略化する方法は無いでしょうか?

array.0.0="A"
array.0.1="B"
array.0.2="C"
だと、同じような配列を沢山使うために
エディタの画面が見づらくなってしまうんです。。
かといって、
array.0="A","B","C"
としても、
パラメータは
array.0=A
array.1=B
array.2=C
となってしまいますし。。。
こういう場合に何か..見やすい記述って出来ますでしょうか?

[5919] Re: 多次元の配列への代入について 投稿者:K-K 投稿日:01/07/30(月) 21:46

>array.0.0=A
>array.0.1=B
>array.0.2=C
>配列変数「array」にこういう感じの文字列を代入する場合に、
>記述を簡略化する方法は無いでしょうか?

解決策ではありませんが,いっそのこと配列の数字を今と逆に使うように
プログラムが作れないでしょうか?
つまり,1番目の数字と2番目の数字の役割を逆にするということです.

array.1.0 array.2.0 array.3.0の3つは連続したメモリ上にあるので
もしかしたらほんの少しだけ処理速度も上がるかもしれません.
また,場合によってはこの方が扱いやすいと思います.

実際に何をしているのかが分からないので,役に立つかどうかは分かりませんが…

[5912] Re: (poke を使うなら…)多次元の配列への代入について 投稿者:すもも 投稿日:01/07/30(月) 17:31 <URL>
> array.0.0=A
> array.0.1=B
> array.0.2=C
> 配列変数「array」にこういう感じの文字列を代入する場合に、
> 記述を簡略化する方法は無いでしょうか?

HSP の記述法だと、

array.0.0 = "A","B","C", ..

と代入すると、

array.0.0 = "A"
array.1.0 = "B"
array.2.0 = "C"

となります・・。
それでよければ、

sdim ch, 2 ; バッファ
sdim array,2,26,2 ; 2バイトの26個の配列が2個ある配列

repeat 26
poke ch, 0, cnt+65
array.cnt.0 = ch
poke ch, 0, cnt+97
array.cnt.1 = ch
loop

stop

; もしくは・・

sdim ch, 2
sdim array,2,2,26

repeat 26
poke ch, 0, cnt+65
array.0.cnt = ch
poke ch, 0, cnt+97
array.1.cnt = ch
loop

stop

#先日はハメをはずしてしまい、みなさまにはご迷惑をおかけしました m(_ _)m

[5914] Re^2: (poke を使うなら…)多次元の配列への代入について 投稿者:すもも 投稿日:01/07/30(月) 17:53 <URL>
以下のようでもできるみたいです・・。(式を簡略化しただけです)

sdim ch, 2 ; バッファ
sdim array,2,26,2 ; 2バイトの26個の配列が2個ある配列

repeat 26
poke array.cnt.0, 0, cnt+65
poke array.cnt.1, 0, cnt+97
loop

stop

[5909] dialogのmessage 投稿者:うなぎ 投稿日:01/07/30(月) 16:23
はじめまして

ファイルオープンのdialogでbmpとpngを選択したいんですが
dialogのmessageに複数登録することって出来ますか?

お願いします。

[5910] Re: dialogのmessage 投稿者:Иα 投稿日:01/07/30(月) 16:34
> はじめまして
>
> ファイルオープンのdialogでbmpとpngを選択したいんですが
> dialogのmessageに複数登録することって出来ますか?
>
う〜ん、よく解らないけど
dialog "bmp;png",16,"BMPファイル, PNGファイル"
とか
dialog "bmp;*.png",16,"BMPファイル, PNGファイル"
とかでいいんじゃないでしょうか。

[5911] Re^2: dialogのmessage 投稿者:sprocket 投稿日:01/07/30(月) 16:39 <URL>
> う〜ん、よく解らないけど
> dialog "bmp;png",16,"BMPファイル, PNGファイル"
> とか
> dialog "bmp;*.png",16,"BMPファイル, PNGファイル"
> とかでいいんじゃないでしょうか。

二個目の拡張子の前に *. をつけます。二つ目が正解

[5916] Re^3: dialogのmessage 投稿者:うなぎ 投稿日:01/07/30(月) 20:05
Иαさん、sprocketさんレスありがとうございます

";"ですか…気が付かないですよこれは。

ありがとうございます。

[5872] 「;」を使いたい! 投稿者:亮輔 投稿日:01/07/29(日) 20:49
HSPにはいつもお世話になってます。
今回は自動HP作成ソフトを作っています。
そこで、問題が生じてしまいました。
HSPでは;を常にコメントの開始としてコメントアウトしてしまいますが、
HPのhtmlの特にjavascriptなんかは改行の前に;を入れないと
エラーになってしまうのです。
;を入れても、アウトプットされずにかなり戸惑っています。
「;」を出力するためのコードとかありますか。
あったらぜひ教えてください。

[5873] Re: 「;」を使いたい! 投稿者:J.S.BUFFER 投稿日:01/07/29(日) 21:07 <URL>
\;

↑これでできます。

[5874] Re^2: 「;」を使いたい! 投稿者:亮輔 投稿日:01/07/29(日) 21:21
簡潔な答えをありがとうございます。
私もいつもは\;で対処してきたのですが、今回はうまく行かないのです。
どうやら文字列の{" 〜 "}内であることが原因のようです。
{" 〜 "}でもうまく行くようにするにはどうすれば良いでしょうか。

[5913] Re^3: 「;」を使いたい! 投稿者:J.S.BUFFER 投稿日:01/07/30(月) 17:35 <URL>
> 簡潔な答えをありがとうございます。
> 私もいつもは\;で対処してきたのですが、今回はうまく行かないのです。
> どうやら文字列の{" 〜 "}内であることが原因のようです。
> {" 〜 "}でもうまく行くようにするにはどうすれば良いでしょうか。

RiffRaffさんの返信された通り、どうやら「使えない」というのが答えのようですが、
(僕も {" "} の中で使えないというのは今日初めて知りましたが<笑)

でも、ちょっと面倒になりますが、応用次第で可能です(^^)

mes {"
1行目です。
2行目"}+"\;"+{"です。
3行目です。
"}

stop

・・・これで、しっかりと「;」が表示されるはずです。
ちょっとセコいやり方かもしれませんが(爆)

[5881] Re^3: 「;」を使いたい! 投稿者:RiffRaff 投稿日:01/07/30(月) 00:42
こちらを参照してください。

http://www.onionsoft.net/hsp/beta/betabbs.cgi?mode=allread&no=251&page=20

[5903] スクリプトエディタに 投稿者:am.ll 投稿日:01/07/30(月) 13:26
今、自分で作って自分しか使ってないスクリプトエディタあります。
それには、コンパイルの時に(コンパイル直前に)変換することで
『/*』から『*/』の間をコメントとしたり、『_』を使って一行を複数行に
分けたり、といった機能のようなものをつけているんですが、
これってHSP本来の文法からそれた記述をすることになりますよね。

こういうものを使用したり、
公開してはまずいのでしょうか?

[5907] Re: スクリプトエディタに 投稿者:sprocket 投稿日:01/07/30(月) 15:32 <URL>
>//略
> これってHSP本来の文法からそれた記述をすることになりますよね。
>
> こういうものを使用したり、
> 公開してはまずいのでしょうか?

別にまずくはないと思います。

[5851] (削除) 投稿者:(削除) 投稿日:01/07/29(日) 13:04
(削除されました)

[5871] Re: インターネットエクスプローラーの履歴をクリアする 投稿者:ν 投稿日:01/07/29(日) 20:06
> インターネットエクスプローラーの履歴をクリアするAPIはありますか?
C:\WINDOWS\Historyの中身を消しましょう。え?ダメ?

[5876] Re^2: インターネットエクスプローラーの履歴をクリアする 投稿者:Edit1.text 投稿日:01/07/29(日) 22:27
> > インターネットエクスプローラーの履歴をクリアするAPIはありますか?
> C:\WINDOWS\Historyの中身を消しましょう。え?ダメ?

普通には消せないんです。
特殊なフォルダのようで

[5902] Re^3: インターネットエクスプローラーの履歴をクリアする 投稿者:faust 投稿日:01/07/30(月) 13:23
> インターネットエクスプローラーの履歴をクリアするAPIはありますか?
IEのバージョンに依存してしまうのですがIUrlHistoryStg・IUrlHistoryStg2を使う方法があります。IE5.5以上推奨ですが
IE5でも大丈夫みたいです(私はIE5ですが上手くいきました)。
取り敢えずRiffRaffさんのLOLLIPOPモジュールを使って
http://cgi14.plala.or.jp/riffraff/hsp/lollipop/index.htm
IUrlHistoryStg2のClearHistoryメソッドを呼ぶサンプルを載せます。
(履歴が全て削除されます。)

#include "llmod.as"
#include "rrmod/com/lollipop.as"

clsid = "{3C374A40-BAE4-11CF-BF7D-00AA006946EE}"
CLSIDFromString CLSID_CUrlHistory, clsid
rclsid_CUrlHistory = stat

iid = "{AFA0DC11-C313-11d0-831A-00C04FD5AE38}"
IIDFromString IID_IUrlHistoryStg2, iid
riid_IUrlHistoryStg2 = stat

prm = rclsid_CUrlHistory, 0, CLSCTX_INPROC_SERVER, riid_IUrlHistoryStg2
CoCreateInstance pUHS2, prm

if (stat == 0){
callmethod 9, prm, 0, pUHS2 ;ClearHistory
Release pUHS2
}

CoUninitialize

dialog "completed"

他のメソッドについては自分で調べてみてください。

[5906] Re^4: インターネットエクスプローラーの履歴をクリアする 投稿者:Edit1.text 投稿日:01/07/30(月) 15:24
> > インターネットエクスプローラーの履歴をクリアするAPIはありますか?
> IEのバージョンに依存してしまうのですがIUrlHistoryStg・IUrlHistoryStg2を使う方法があります。IE5.5以上推奨ですが
> IE5でも大丈夫みたいです(私はIE5ですが上手くいきました)。
> 取り敢えずRiffRaffさんのLOLLIPOPモジュールを使って
> (http://cgi14.plala.or.jp/riffraff/hsp/lollipop/index.htm
> IUrlHistoryStg2のClearHistoryメソッドを呼ぶサンプルを載せます。
> (履歴が全て削除されます。)
>
> #include "llmod.as"
> #include "rrmod/com/lollipop.as"
>
> clsid = "{3C374A40-BAE4-11CF-BF7D-00AA006946EE}"
> CLSIDFromString CLSID_CUrlHistory, clsid
> rclsid_CUrlHistory = stat
>
> iid = "{AFA0DC11-C313-11d0-831A-00C04FD5AE38}"
> IIDFromString IID_IUrlHistoryStg2, iid
> riid_IUrlHistoryStg2 = stat
>
> prm = rclsid_CUrlHistory, 0, CLSCTX_INPROC_SERVER, riid_IUrlHistoryStg2
> CoCreateInstance pUHS2, prm
>
> if (stat == 0){
> callmethod 9, prm, 0, pUHS2 ;ClearHistory
> Release pUHS2
> }
>
> CoUninitialize
>
> dialog "completed"
>
> 他のメソッドについては自分で調べてみてください。


ありがとうございます。

[5905] RS232C 投稿者:たか 投稿日:01/07/30(月) 14:39
始めまして、たかです。

早速質問なんですが、パソコンとハンディーターミナルを
RS232Cで接続するのですが、HSPを使用して
ファイル転送は可能でしょうか?

よろしくお願いします!

[5899] カレントディレクトリって。 投稿者:ryu 投稿日:01/07/30(月) 11:25
カレントディレクトリっていったなんでしょうか。
EXEにするときに
カレントディレクトリにpackfaileがみつかりませんでしたとでます。

[5901] Re: カレントディレクトリって。 投稿者:No.9 投稿日:01/07/30(月) 11:29 <URL>
どうも、No.9です。

> カレントディレクトリっていったなんでしょうか。
> EXEにするときに
> カレントディレクトリにpackfaileがみつかりませんでしたとでます。

要するに現在作業を行っているフォルダの事です。(確か(^^;)
試しに、
a=curdir : mes a : stop
としてみれば、現在のカレントディレクトリが参照できます。
そこに packfile が無いのでエラーが出るのだと思います。
フォルダを移動する命令をヘルプで調べて、使うと上手く行くと思いますよ

[5896] packfile生成 投稿者:yuu 投稿日:01/07/30(月) 10:17 <URL>
packfileを、エディター上で行なわずに
HSPプログラム上で生成したいのですが、
hspcmp.dllの、pack_xxx命令系統でなんとかなるでしょうか。

DPMファイルに関する知識もなかったためか、
hspcmp.dllリファレンスを見ても方法がわかりませんでした。

[5900] Re: packfile生成 投稿者:No.9 投稿日:01/07/30(月) 11:25 <URL>
どうも、No.9です。

> packfileを、エディター上で行なわずに
> HSPプログラム上で生成したいのですが、
> hspcmp.dllの、pack_xxx命令系統でなんとかなるでしょうか。

出来ますよ(^^)
packfile 自体ただのテキストと思ってもらって大丈夫です。
よって、ただ単に packfile 自体を作るのであれば、
pack_ini 等の命令は必要ありません。
note命令を使って作成するだけです。
頑張って下さい♪

[5897] Re: packfile生成 投稿者:桜井 投稿日:01/07/30(月) 10:35
> packfileを、エディター上で行なわずに
> HSPプログラム上で生成したいのですが、
> hspcmp.dllの、pack_xxx命令系統でなんとかなるでしょうか。
>
> DPMファイルに関する知識もなかったためか、
> hspcmp.dllリファレンスを見ても方法がわかりませんでした。

ただ単にpackfileを作りたいだけなら、ファイル名を改行で区切って作れます。

↓こんな風に
pic01.bmp
pic02.bmp
wav01.wav
wav02.wav

これをそのまんまpackfileというファイル名でbsaveすれば、
packfileの出来あがりです。
その後、DPMファイルやEXE・SCRファイルを作る時に
pack_xxx系の命令を使います。

#これでいいんでしょうか(・_・)?
#もしかして全然ちがう?

[5898] Re^2: packfile生成(訂正) 投稿者:桜井 投稿日:01/07/30(月) 11:03
> #これでいいんでしょうか(・_・)?
> #もしかして全然ちがう?

と自分で書いておきながら全然違うような気がしてきたのでもう一個。

前述した方法でpackfileを作った後に、
pack_ini "作成するDPMファイル名"
でpackfileマネージャの初期化を行い、その後に
pack_make
でpack_ini命令で指定したファイル名で
packfile内で指定されたファイルを結合してDPMファイルを作成します。

#今度こそこれでいいんでしょうか(・_・)?
#もしかしてまたもや全然ちがう?

[5843] 文字の改行 投稿者:まり 投稿日:01/07/28(土) 23:49
なんか質問ばっかりでごめんなさい。

あの、文字を勝手に改行させることってできないんでしょうか?
たとえば2行ずつ表示したい長文があるとして・・・
エンター押すとまた次の2行がでるって感じのなんですが・・・

画面の外まで文字が行っちゃって困ってます。
どうかよろしくおねがいします。(ぺこり)

[5847] Re: 文字の改行 投稿者:pumpkin! 投稿日:01/07/29(日) 01:26
> なんか質問ばっかりでごめんなさい。

なんかわしばっか答えてごめんなさい。
来たらちょうど、ずら〜っと並んでいたんだよおぉぉっ。

> あの、文字を勝手に改行させることってできないんでしょうか?
> たとえば2行ずつ表示したい長文があるとして・・・
> エンター押すとまた次の2行がでるって感じのなんですが・・・

文字を表示する際の mes 命令のパラメータに
あらかじめ \n を埋め込んでおくのじゃダメなんですか?

text 150
mes "今日もニコニコ\n楽しくHSP"
stop

みたいに。

[5848] Re^2: 文字の改行 投稿者:まり 投稿日:01/07/29(日) 01:58
えっと・・・・もっと長文の時の場合はどうすればいいでしょうか?
それでもって例えば300ピクセルの幅にして
ぴったしその範囲で改行できるようにしたくって、
さらにエンター押したら続きが出るって感じの・・・・

ごめんなさい、説明がすっごい下手!!

ついでに前の文字が消えるようにしたいです。
文字が重なっちゃう・・・・・しくしく。

[5891] Re^3: 文字の改行 投稿者:pumpkin! 投稿日:01/07/30(月) 06:54
お詫びシリーズその2(ツリー版利用者には意味分かんないな) m(_ _)m 

> もっと長文の時の場合はどうすればいいでしょうか?

ちょっと意味がよく分かりません。
長文にした上で、そこに \n を挟むのじゃいけないんでしょうか?
「mes "今日もニコニコ明日もニコニコ楽しくHSP!!\nおにたまさん、どうもありがとう"」とか。
ただし、あまり長くすると制約にひっかかるので注意。

> 300ピクセルの幅にして ぴったしその範囲で改行できるようにしたくって、

原始的だけど、等幅フォントを指定した上で、文字数を数えて \n を挟むのが
いちばん手っ取り早い気がするなぁ。
あるいは、例えば1行が20文字でぴったりならば、20字掛ける何行かの
テキストファイルを別に作っておいて、2行ずつ読み出していくとか……。
この方法については同梱サンプルの「NOTE1.AS」あたりが参考になると思います。

> ついでに前の文字が消えるようにしたいです。

背景色(背景画像)で塗りつぶすことでまず元の文字を消し、その後に次の文字を書きます。
以下のサンプルはボックス部分(若干おおまか)を左クリックすると文字を書き換えます。

sdim chara,64,2
chara.0="今日もHSP・・・ \n明日もHSP・・・ !!"
chara.1="HSPは \nおにたまさんの著作物です。"

color ,,255 : boxf
gosub *draw_box : wait 50
a=0 : gosub *draw_character

*main_loop
repeat;          repeat〜loop間を左クリックされるまで繰り返す
wait 1;       無限に続くrepeat〜loop間には入れなければいけない命令
stick ky,0,1;   キー入力されたら、何のキーなのかその番号が変数kyに入る
if ky=256 : break; 左クリック(番号256)されたら繰り返しを終了する
loop
if mousey<300 : goto *main_loop
;           クリック位置のy座標が300未満ならまた戻り、以上なら下のスクリへ
gosub *draw_box;            元の文字を消す
a=1 : gosub *draw_character;     新たな文字を書く
stop

*draw_box;    水色のボックスを塗るサブルーチン
color ,125,255 : boxf 20,300,620,460 : return

*draw_character; 文字を書くサブルーチン
color 255,255,255 : font "MS ゴシック",36,1
pos 100,340 : text 100 : mes chara.a : return

[5895] Re^4: 文字の改行 投稿者:pumpkin! 投稿日:01/07/30(月) 08:35
> 長文にした上で、そこに \n を挟むのじゃいけないんでしょうか?
> 「mes "今日もニコニコ明日もニコニコ楽しくHSP!!\nおにたまさん、どうもありがとう"」とか。
> ただし、あまり長くすると制約にひっかかるので注意。

おっと皆さんすみません。「\n」のことにばかり頭が行ってしまいました。

mes "今日もニコニコ明日もニコニコ楽しくHSP!!\nおにたまさん、どうもありがとう"

などと書くぐらいなら

mes {"
今日もニコニコ明日もニコニコ楽しくHSP!!
おにたまさん、どうもありがとう
"}

の方が見やすいし、1行文字数の制約に対する心配も、多少は少なくなりますね。

[5879] 複数のasのファイル使えますか? 投稿者:まり 投稿日:01/07/30(月) 00:05
ごめんなさい、また質問です・・・(;;)

んと、プログラムが長くてダラダラしてて見にくいので
小分けにしたいんですけど、複数の○○.asをくっつけることができますか?
#includeって最初に書いてやると変になっちゃうし・・・

希望としてはオープニングみたいなので一つのasをつくって、
ボタン押したら次のasに進むみたいな・・・
できたらおしえてやってくださいな〜!
我侭で悪いんですが簡単な言葉で教えてくださると嬉しいです。
ほんとに全然わからないんで・・・とほほ〜!

[5886] Re: 複数のasのファイル使えますか? 投稿者:pumpkin! 投稿日:01/07/30(月) 04:39
公開糾弾してしまったのでお詫びに(^-^)。

> プログラムが長くてダラダラしてて見にくいので
> 小分けにしたいんですけど、複数の○○.asをくっつけることができますか?

#include 命令を使えばできます。
変になるのは「命令を出している場所が」間違っているからだと思います。

「小分けしたいときに使う」#include 命令は、最初に書く必要はありません。
#include 命令とは「その命令を出した場所に」あなたの指定したファイルの内容を
そのまま差し込む命令です。具体的に説明します。

命令1
命令2
命令3

というスクリプトを書いたとします。このうち「命令2」を小分けして
別のasファイルにしたいとします(もちろん命令2は、何十行、何百行でも可)。
そして、その「別のasファイル」のファイル名を「another.as」とつけるとします。
その場合、次のようにすればOKです。

命令1
#include "another.as"
命令3

「#include "another.as"」で another.as にある「命令2」が挿入されるため、
元のスクリプトと同じことになります。

> 希望としてはオープニングみたいなので一つのasをつくって、
> ボタン押したら次のasに進むみたいな・・・

スクリプトの整理が目的ならば、include命令の出し場所を工夫すれば
十分じゃないかと思います。ボタンを押した跳び先のスクリを小分けしたうえで
includeするような感じで……。

[5861] 画像の一部をクリックできますか? 投稿者:まり 投稿日:01/07/29(日) 17:39
毎度質問ばかりでごめんなさい。

えっと、画像の一部分だけをクリックして進むことってできますか?
画像というかウィンドウの一部分って感じで・・・
例えば400*300のウィンドウがあって
横が100、縦が100の位置から
200*100の横長の長方形だけをクリックしたいと・・・

□□□□
□■■□   ←この黒の部分だけクリックみたいなかんじです。
□□□□

この黒い部分だけクリックはできるんでしょうか?
なんかstickとかmouseだかループだかさっぱりで・・・

どなたかよろしくおねがいします。(ぺこり)

[5875] Re: 画像の一部をクリックできますか? 投稿者:くま 投稿日:01/07/29(日) 22:11
こんにちは 浜口ユヅさん&ペークさんにより既に正攻法のやり方
が示されていますしその方法がためになると思いますが、

> なんかstickとかmouseだかループだかさっぱりで・・・

という状態なのであれば、以下のような方法もあります(Forceさん
作の拡張プラグインExforce.dllを使います)

#include "Exforce.as"

screen 0,400,300 : color 0,0,255 : boxf
color 255,255,255 : pos 110,140
mes "この辺にボタン有り"

objsize 200,100 : pos 100,100
button "",*lb : id=0
style=0
drawbtn id,style ;Exforce.dllの命令です
stop
*lb
dialog "ボタンが押されました!"
stop

上記の状態で、ボタンは背景を透過して枠だけ表示されてる感じに
なってます。この状態で充分にデバッグし、その後 style=0 を
style=$b にすれば、ボタンは全く見えなくなります。機能自体は
通常のボタンと同じであり、処理の書き方も同じでOKです。

# ExforceはANTARESさんや和哉さんのHPでDLできたと思います

[5863] Re: 画像の一部をクリックできますか? 投稿者:浜口ユヅ 投稿日:01/07/29(日) 18:23
 プログラミングで大事なのは発想の転換だと思うんですが。
stickはマウスやキーボードが押されたかを調べる命令です。mouseはマウスの
座標が入っているシステム変数です。ループは処理をぐるぐると回らせること
ができます。というわけで、大体この三つでお望みの処理は出来ます。

 以下の処理を無限ループさせます。
 まずはマウスが200*100の長方形の中に入っているかどうか調べます。
mousex、mouseyをそれぞれif命令で判定します。
if (mousex>画像のx座標)&(mousey>画像のy座標)&(mousee<=画像のx座標+200)&(mousey<=画像のy座標+100)
こうですね。
それでコレが真ならば、stickでマウスが押されているか確認します。クリッ
クされていればstickは256を返すので、if命令で256が返されているか
調べます。返されていれば画像の一部をクリックされたと言うことになる
ので、break命令でループを抜け出して押された場合の処理に繋げればいいの
です。
 返されていなければループの最初に戻ります。最初のif命令後が偽であれば
これもループの最初に戻ります。

 と、これをHSPの命令で書けばいいのです。
 ただしmouseと言う変数は、waitあるいはawaitが無いと中身が更新されませ
ん。なのでループの最初にますwait 1ないしawait 1を入れて置いてくださ
い。

[5867] Re^2: 画像の一部をクリックできますか? 投稿者:ペーク 投稿日:01/07/29(日) 19:01 <URL>
> if (mousex>画像のx座標)&(mousey>画像のy座標)&(mousee<=画像のx座標+200)&(mousey<=画像のy座標+100)
> こうですね。
(),=が抜けています。mouseeになっています。
if (mousex>=画像のI座標)&(mousex>=画像のy座標)&(mousex<=(画像のx座標+200))&(mousey<=(画像のy座標+100))

[5868] Re^3: 画像の一部をクリックできますか? 投稿者:ペーク 投稿日:01/07/29(日) 19:02 <URL>
> if (mousex>=画像のI座標)&(mousex>=画像のy座標)&(mousex<=(画像のx座標+200))&(mousey<=(画像のy座標+100))
訂正!
                 ↓ここ
if (mousex>=画像のI座標)&(mousey>=画像のy座標)&(mousex<=(画像のx座標+200))&(mousey<=(画像のy座標+100))

[5877] Re^4: 画像の一部をクリックできますか? 投稿者:まり 投稿日:01/07/29(日) 23:30
くまさん、ユヅさん、ペークさんありがとうございました〜〜!
なんとか?クリックできました、うれし〜v

dllってなんなのかわかんなかったけどまた勉強しよっと!
また分からないことがいっぱいでると思いますけど
そのときはよろしくおねがいしますね〜〜v

[5882] まりさんへ(Re. 画像の一部をクリックできますか?) 投稿者:pumpkin! 投稿日:01/07/30(月) 01:54
こんにちは。
場の雰囲気を壊して申し訳ありませんが
ちょっと厳しいことを言わせていただきます。

> まりさん
> 例えば400*300のウィンドウがあって
> 横が100、縦が100の位置から
> 200*100の横長の長方形だけをクリックしたいと・・・
>
> □□□□
> □■■□   ←この黒の部分だけクリックみたいなかんじです。
> □□□□

人に安易に聞く前に少しは考えてください。
教えられたことは理解してから先に進んでください。
教えられたことが分からないというのなら、追加質問するなりして
理解するように努めてください。

あなたが質問された内容は 2001/07/28 03:47:58 に
「Re^2: 文字をクリックしたいです。」として回答した
スクリプトを理解しさえすれば、ごくわずかな改造だけで実現できます。
「改造」というのすら大げさで、そのまんまのスクリプトといっても
いいぐらいのものです。

また、投稿したスクリプトは、決して避けては通れない「公式」のような
ものであることは、スーパー初心者以外の方はみな「その通りだ」と
うなずいてくれるはずです。
もしまりさんが、みなさんから教えてもらったことを
ただコピペ、つぎはぎして、「私が作ったソフトだ」と言うのなら
とんでもない話です。
あなたのためです。考え方をあらためてください。

# メアドを公開されていないため、公開での苦言、ごめんなさい。

[5883] Re: まりさんへ(Re. 画像の一部をクリックできますか?) 投稿者:まり 投稿日:01/07/30(月) 02:19
ごめんなさい、いろいろ進めていく内にわからないことも増えちゃって・・・
参考書片手にどうにかがんばってたんですけど乗ってないとこもあって。

たしかに聞けば済むって感じになっちゃってごめんなさい。

これからは発言を控えるようにしますね・・・すいませんでした。

[5885] Re^2: まりさんへ(Re. 画像の一部をクリックできますか?) 投稿者:pumpkin! 投稿日:01/07/30(月) 03:20
> これからは発言を控えるようにしますね

いえいえ、発言を控えろって言っているわけじゃないです。
「回答してもらったスクリは理解するように努めてください」ということです。
じゃないと、今回のようにほとんど同じことを質問するなんてことにも
なってしまいますし、いつまでたっても工夫・応用ができないままです。

もちろん、回答をもらっても、その回答が理解できないこともありますよね?
その場合は、分からない部分について
それこそ「どんどん」追加質問をしたらいいと「私は」思います。
みなさんもきっとそういう人に対しては、「質問ばっかりしやがって」とは思わず
「一生懸命理解しようとしている人だな」と逆に好感を持つのではないかと思います。

ただ単に自分の期待する動作をするスクリを入手できれば
その内容を理解しなくてもいい、みたいな投稿に見えましたので
これじゃいつまでたっても同じだな、と苦言を書き込みました。
質問が多いことへの苦言ではないですよ。

まじめな話、前回投稿したスクリプトは絶対に理解すべきものですので
ヘルプと突き合わせてぜひ自由に使えるようになってください。

まりさんのまたの投稿を楽しみにしています。

[5856] ネットゲーについて 投稿者:じゃむ 投稿日:01/07/29(日) 14:24
AkihiroさんのAMdplayを使って、ネット格闘ゲームを作っているんですけど
データの送信に0.5秒〜1秒かかってしまいます。
リアルタイムということで、同期とらなければいけないので
キー押してから、送信して0.5秒後に動くとなるとゲームになりません。
データの量を1バイトにしても1000バイトにしても変わらないですし
自分のPCで2個立ち上げてやっても変わりません。
何か、原因があるんでしょうか?
それとも限界なんでしょうか?
教えてくださいー

[5880] Re: ネットゲーについて(通信速度 投稿者:スミス 投稿日:01/07/30(月) 00:23 <URL>
スミスです。

> AkihiroさんのAMdplayを使って、ネット格闘ゲームを作っているんですけど
> データの送信に0.5秒〜1秒かかってしまいます。

考えられる原因はいくつもあり、それを特定して改善するしかないです。

まず、大きく二つに切り分けて構成を洗い出し調査します。

<システム環境の側面>
・ハードスペックとして十分なのか。
(おそらく十分なスペックかと思いますが何も情報がないので一応)
・ネットワーク構成は?
(LANなのかInternetなのか、C/S型なのかPtoPなのか)
・回線種別や通信機器のタイプなどは?
(アナログなのかISDNなのかなど)
などを視点にそれに関わる機器の設定が最適化されているのかなど。
(モデムのバッファ設定などは最適か、HUBによる衝突が発生していないかとか)

<ソフトウエア/通信アルゴリズム>
・同期なのか非同期なのか
・DirectPlayに対する詳細設定はどうなのか
(コネクション時のフラグ設定など)
・ユーザのキー入力(要求)を受けてからAMdplayのsend命令までのフローは最適なのか
・データをRecieveしてからその結果を処理し再現(描画)するフローは最適なのか
などたくさんありますが、それらを少しづつ調べて悪ければ改良なりするしかないです。
0.5sec以上かかるということですが、付属サンプルはどうですか?同じですか?
もしサンプルでは正常ならば、
たぶんプログラム内での通信アルゴリズムが最適な組み方になっていない可能性が大きいです。

ちなみに私のプログラムでは、Internet経由でも50ms〜200msでデータ送受信とその結果を再現し終えてます。
ネットワークゲームならではのレスポンスが早く思えるようにするテクニックもあるので、
いろいろと研究してみてください。
数をこなさないとそれらはわからないことが多いかもしれません。
(書籍には載っていないようなことが多いです)

たいしたことないですが私のサイトも参考にしてみてください。
http://di2-rpg.hoops.ne.jp/
ネットワークゲーム製作講座をしてます(まだまだ途中ですが)

[5878] HPソフト 投稿者:MAS 投稿日:01/07/29(日) 23:57
僕もHP作成ソフトを作っています。
そのソフトで、ファイルをWEBサーバーに転送する
いわゆるFTPソフトのような機能を盛り込みたいのですが、
そういった機能を追加するdllなどはあるんでしょうか?

[5857] どうするの? 投稿者:目太 投稿日:01/07/29(日) 15:03
ボタンを押したら,ボタンに書いてある文字を
メッセージボックスに表示させるようなことは出来ますか?

[5860] Re: どうするの? 投稿者:暇な人 投稿日:01/07/29(日) 17:02
> ボタンを押したら,ボタンに書いてある文字を
> メッセージボックスに表示させるようなことは出来ますか?
以下のように記述してください。

btn="こんにちは";ボタンに表示される文字
msb="ボタンを押してください";最初にメッセージボックスに表示する文字

mesbox msb,200,25,1;メッセージボックス
msbid=0;メッセージボックスのオブジェクトID
objsize 100;ボタンのサイズを指定
button btn,*gogo;ボタン
stop
*gogo
objprm msbid,btn;メッセージボックスの内容を書き換える
stop

[5859] Re: どうするの?(ボタンのテキストを取得) 投稿者:桜井 投稿日:01/07/29(日) 16:53
> ボタンを押したら,ボタンに書いてある文字を
> メッセージボックスに表示させるようなことは出来ますか?

これで出来ましたが、例によってウラワザかもしれません。

;ボタンをクリックしたら文字列型変数bufに
;ボタンに表示されているテキストを取得します。
objsize 320,24
button "ボタンに表示するテキスト",*Label
sdim buf,256
mesbox buf,320,240,1
stop
*Label
sdim buf,256
objsend 0,$0D,256,buf,0
objprm 1,buf
stop

# objsendの p1 にはボタンのオブジェクトID、
# p2に $0D(WM_GETTEXT)、
# p3にテキストを取得する変数が確保しているバッファのサイズ、
# (sdimで確保したサイズ-1 がいいと思います)
# p4にテキストを取得する変数名、p5に 0 を指定します。
# システム変数statには取得した文字のバイト数が代入されます。
# ボタン以外に、chkbox・mesbox・inputにも使用できるようです。

[5832] サイズを固定する方法 投稿者:あさり 投稿日:01/07/28(土) 15:54
ID=2以降のウィンドウで、スクロールバーをつけたままで、ウィンドウの端をドラッグしても
サイズを変えられないようにしたいのですが、方法ないでしょうか?

[5835] Re: サイズを固定する方法 投稿者:sprocket 投稿日:01/07/28(土) 16:14 <URL>
> ID=2以降のウィンドウで、スクロールバーをつけたままで、ウィンドウの端をドラッグしても
> サイズを変えられないようにしたいのですが、方法ないでしょうか?

β版のHSPなら対応しています。(2.5ではダメです。)

screen 2,,,4
stop

[5849] Re^2: サイズを固定する方法 投稿者:KEN 投稿日:01/07/29(日) 05:15
> > ID=2以降のウィンドウで、スクロールバーをつけたままで、ウィンドウの端をドラッグしても
> > サイズを変えられないようにしたいのですが、方法ないでしょうか?
>
> β版のHSPなら対応しています。(2.5ではダメです。)
>
> screen 2,,,4
> stop

スクロールバーをつけたままという条件だからβ版のHSPでも無理なんじゃない?

#include "llmod.as"

screen 2,640,480,,dispx-320/2,dispy-240/2,320,240
mref BMSCR,67 : prm=BMSCR.13,-20,$200 : setwndlong prm
prm.1=-16,$16F00000 : setwndlong prm
prm.1=0,0,0,0,0,$27 : dllproc "SetWindowPos",prm,7,D_USER
stop

↑無理矢理スタイル変更すれば、それっぽい事は出来なくも無いですけど WS_THICKFRAME 有りと
WS_THICKFRAME 無しでは、フレームのサイズが違うので色々と問題が出てきます。
あまりと言うか全然お勧めは出来ませんが...なら書くなよ...σ(^_^)

ループで監視して、サイズが変更されたら width命令で元のサイズに戻すっていうのが
一番無難なんじゃないかな

[5858] Re^3: サイズを固定する方法 投稿者:あさり 投稿日:01/07/29(日) 16:51
sprocketさん>
> β版のHSPなら対応しています。(2.5ではダメです。)
>
> screen 2,,,4
> stop

これだとスクロールバーが消えちゃうんです〜(^_^;

KENさん>
> ループで監視して、サイズが変更されたら width命令で元のサイズに戻すっていうのが
> 一番無難なんじゃないかな

無理やり変えるよりこの方法がよさそうですね。
お二人ともどうもありがとうございました。

[5855] RS232C通信プロトコル 投稿者:Ken,I 投稿日:01/07/29(日) 14:15
comopen分で、パリティを偶数とか奇数にするにはどうしたらよいのでしょうか?パリティ無しは”N”で良いみたいですけど、、、、、、

[5460] RS232Cの制御コードの表示法を教えてください。 投稿者:Ken,I 投稿日:01/07/18(水) 21:27
mesboxに制御コード16進数を表示させたいですが、アドバイスを下さい。
現在ワンチップマイコンのRS232Cを使いPCから送った文字をエコーバックさせて実験しています。当然PC側からも制御コードを送れないようです(¥n ¥rは送られてはいますEnter Keyにより でも表示は ・・のみ)

[5466] Re: RS232Cの制御コードの表示法を教えてください。 投稿者:ANTARES 投稿日:01/07/19(木) 08:53 <URL>
>mesboxに制御コード16進数を表示させたいですが、アドバイスを下さい。
 単に制御コードを16進数文字列に変換したいだけならば、
str命令で、できます。

[5473] Re^2: RS232Cの制御コードの表示法を教えてください。 投稿者:Ken 投稿日:01/07/19(木) 19:50
> >mesboxに制御コード16進数を表示させたいですが、アドバイスを下さい。
>  単に制御コードを16進数文字列に変換したいだけならば、
> str命令で、できます。
有難うございます。
str a,18 で変換できましたけど、2文字以上変換できないんです????
おしえてくださ〜い。

[5486] Re^3: RS232Cの制御コードの表示法を教えてください。 投稿者:No.9 投稿日:01/07/20(金) 00:05 <URL>
どうも、No.9です。

> str a,18 で変換できましたけど、2文字以上変換できないんです??
??
> おしえてくださ〜い。

str a,18 の18というのは、16進数2桁の意味だと思います。
ゆえに、表示したい桁数を16に足せば変換出来ると思いますよ♪

[5489] Re^4: RS232Cの制御コードの表示法を教えてください。 投稿者:ANTARES 投稿日:01/07/20(金) 06:50 <URL>
 制御コードが2文字を超えるはずはないし、仮に超えたとしても
必要な桁数になるはずなので、私も質問の意味が
よくわかりませんでしたが、唯一思いついたことは、
以下のようなスクリプトになっているとうまくいきません。
aが文字変数のままであることが原因ですが、
「poke a,0,127」を「a=127」にするか、
pokeの前に「a=0」または「int a」を挿入すると、
うまくいきます。

a=16
str a,18
mes "a="+a
poke a,0,127
str a,18
mes "a=["+a+"]"
stop

[5490] Re^5: RS232Cの制御コードの表示法を教えてください。 投稿者:ANTARES 投稿日:01/07/20(金) 07:01 <URL>
"\n"を「\n」と表示したい(または改行したい)のなら、
受け取ったデータが13のときに「\n」を表示して(または
バッファに"\n"を加えて)データ10を無視すればいいでしょう。
ただし、これはワンチップマイコンが改行コードとして
「CR(13)+LF(10)」を送ってくる場合です。
(改行コードとしてCRしか送ってこない場合も結果的には
うまくいきます)

[5509] Re^6: RS232Cの制御コードの表示法を教えてください。 投稿者:Ken 投稿日:01/07/20(金) 21:19
> "\n"を「\n」と表示したい(または改行したい)のなら、
> 受け取ったデータが13のときに「\n」を表示して(または
> バッファに"\n"を加えて)データ10を無視すればいいでしょう。
> ただし、これはワンチップマイコンが改行コードとして
> 「CR(13)+LF(10)」を送ってくる場合です。
> (改行コードとしてCRしか送ってこない場合も結果的には
> うまくいきます)
有難うございます。こんな感じでしょうか?もう一息だと思います。
cls 1
alloc jyusin_moji,32000 ; テキストのバッファを確保(受信用)
jyusin_moji="" ; バッファをクリア
objsize 645,250
pos 19,30: mesbox jyusin_moji,,,1

; 文字列16進数で取り出す
jyusin_moji="ABCDEFG 123456\r"
strlen len,jyusin_moji ;文字列の長さを求める
sdim moji,len ;長さ分の配列を用意
len1=len*2
sdim code1,len1
moji=jyusin_moji
code=0
n=0:d=0
*kurikaesi
await 1
peek code,moji,n:n++ ; インデックス n 番目の文字を代入(ここでは10進数)
str code,18 ;10進を16進2桁に変換
poke code1,d,code:d+=2 ;文字を代入
poke code1,d,",":d+=1 ;文字間を","であける
code=0
if n=len{ objprm 0,code1 : stop }
goto *kurikaesi

もう少しですが、頭がまわらない。

[5514] Re^7: RS232Cの制御コードの表示法を教えてください。 投稿者:ANTARES 投稿日:01/07/21(土) 07:53 <URL>
誤:sdim moji,len			;長さ分の配列を用意
正:sdim moji,len+1 ;長さ分の配列を用意
 文字列の終わりにはターミネータ(終わりの目印)が必要です。
詳しくはマニュアルの「文字列の秘密」をご覧ください。

誤:len1=len*2
正:len1=len*4
 16進数にして2バイト、カンマを加えて3バイトになるので、
足りません。上とともに、再現不能な不具合の原因になります。

修正前
poke code1,d,code:d+=2 ;文字を代入
poke code1,d,",":d+=1 ;文字間を","であける
修正後
code+=",": strlen m,code: if d+m+1>len1: dialog "len1が足りません": end
code1+=code: d+=m
 あえて修正する必要はありませんが……

[5694] Re^8: RS232Cの制御コードの表示法を教えてください。 投稿者:Ken 投稿日:01/07/25(水) 21:35
ANTARESさん、有難うございます。232Cの制御コードを無事表示できるようになりました。話は変わりますけど computは文字列しか扱えないのでしょうか?制御コードが送信出来ないので、困っています。なにかよい知恵は、ありませんでしょうか。

[5765] Re^9: RS232Cの制御コードの表示法を教えてください。 投稿者:Ken 投稿日:01/07/27(金) 19:42
comgetcは数値が扱えるのに、computは数値は駄目なのかな。
例えば、制御コードの02h”STX”を送信するにはどうしたら
よいのでしょう。どなたか 教えてください。
現在mesboxに書かれた文字を、取り出し送信しようとしています。

[5766] Re^10: RS232Cの制御コードの表示法を教えてください。 投稿者:K-K 投稿日:01/07/27(金) 19:59 <URL>
> comgetcは数値が扱えるのに、computは数値は駄目なのかな。
> 例えば、制御コードの02h”STX”を送信するにはどうしたら

HSP 2.55β2に付いているhspext.dllにはcomputcという命令が新しく
加わってます.いまのhspext.dllでやるなら,
str s
poke s,0,$2 ;制御コード
poke s,1,0 ;文字列の終わりに0を書き込む
comput s

なんてしても出来るかも知れません.(実際には試してないので,分かりませんが)

[5854] Re^11: RS232Cの制御コードの表示法を教えてください。 投稿者:Ken 投稿日:01/07/29(日) 13:52
K−Kさんβ2で制御コードを送信できました。有難う

[5852] 検索機能 投稿者:MAS 投稿日:01/07/29(日) 13:29
文字列検索で、文字列がヒットしたときにその文字列を選択範囲に指定するという機能を作りたいのですが・・・
instrで検索し、strlenで長さを調べ、
その長さ分だけ選択範囲に指定すればいいと思うのですが、
その選択範囲に指定する命令がわかりません。
誰かそういう命令知りませんか???

[5853] Re: 検索機能 投稿者:sprocket 投稿日:01/07/29(日) 13:50 <URL>
> 文字列検索で、文字列がヒットしたときにその文字列を選択範囲に指定するという機能を作りたいのですが・・・
> instrで検索し、strlenで長さを調べ、
> その長さ分だけ選択範囲に指定すればいいと思うのですが、
> その選択範囲に指定する命令がわかりません。
> 誰かそういう命令知りませんか???

標準の mesbox を使うなら objsend という命令があります。
こういうことですよね?

sdim buf,1024
buf="http://www.web-sanin.co.jp/p/sprocket/"
astr="sprocket" ; この文字列を選択

mesbox buf,winx,winy,1

strlen l,astr
instr a,buf,astr,0
wp=a
lp=a+l
tp=1
objsend 0,$b1,wp,lp,tp ; くわしくはopjsendリファレンスを
stop

[5846] カーソルの変化がキタナイ 投稿者:あい 投稿日:01/07/29(日) 01:22
こんばんは。

HSPでのカーソルの変化は、
「Exforce.dll」を使った「chgcursor」が一般的なようですが、
カーソルを変えると、ちょっとした処理の間に一瞬だけ元に戻ってしまい、
表示が汚くなってしまいます。

過去ログで検索したら、
「チラつきは色数を減らせ」という様なことが書いてありましたが、
チラつきとはこのことなのでしょうか。
2色のカーソルでも一瞬だけ元に戻ってしまいます。

みなさんキレイに表示されていますか?
原因・改善方法など御教授お願いします。

[5803] 文字をクリックしたいです。 投稿者:まり 投稿日:01/07/28(土) 02:20
こんにちわ〜!どなたかおしえてください〜!
HSPの本読んでも難しくて最初のほうで混乱してるし・・・
なんで皆こんな難しい本、理解できるんだろ。すごい!!

ところでえっと、ボタンではなく文字をクリックして先にすすめる
ようなことはできないんでしょうか?
いつもボタンなんですけどなんか見栄えわるくって・・・

どうぞよろしくおねがいします、ぺこり。

[5841] Re: 文字をクリックしたいです。 投稿者:まり 投稿日:01/07/28(土) 23:17
みなさん教えてくれてありがとうございました〜!!

初心者みたいですけど実はもう何年?もこの状態なんです。
頭わる〜〜!本も難しくて・・・・もっと初心者向けの本つくってほしいな〜!

あ、それからまた質問が・・・
えっと、エンターキー押したら進むっていうのできるようになったんですけど・・・
何度も書くの面倒なので台詞もループさせたら
(文字の変数に1ずつ足してループさせて次の台詞に進む)
台詞が次にでてきた台詞と重なっちゃうんです。
もっと前のほうにrepeatをもっていったら
今度はgcopyのせいで画面が真っ白になっちゃうし・・・
どうしたらいいんでしょうか・・・(;;)
誰か助けてください、ほんとお馬鹿でごめんなさ〜い!

[5845] Re^2: 文字をクリックしたいです。 投稿者:pumpkin! 投稿日:01/07/29(日) 01:03
> 初心者みたいですけど実はもう何年?もこの状態なんです。

しまった。サービスするんじゃなかった(冗談)。

> えっと、エンターキー押したら進むっていうのできるようになったんですけど・・・
> 何度も書くの面倒なので台詞もループさせたら
> (文字の変数に1ずつ足してループさせて次の台詞に進む)
> 台詞が次にでてきた台詞と重なっちゃうんです。
> もっと前のほうにrepeatをもっていったら
> 今度はgcopyのせいで画面が真っ白になっちゃうし・・・
> どうしたらいいんでしょうか・・・(;;)

書いたスクリプトを投稿してみてはいかが?
そのほうが的確な回答が得られると思います。

[5819] Re: 文字をクリックしたいです。 投稿者:jun_wolf 投稿日:01/07/28(土) 13:13 <URL>
うちのホームページにマウスクリック座標判定の追加命令が
あるので、使えば簡単に作れると思います、暇があったらつかってください。
[IFMOUSE]HSPの追加命令のところにあります。

[5804] Re: 文字をクリックしたいです。 投稿者:No.9 投稿日:01/07/28(土) 03:09 <URL>
どうも、No.9です。

> ところでえっと、ボタンではなく文字をクリックして先にすすめる
> ようなことはできないんでしょうか?
> いつもボタンなんですけどなんか見栄えわるくって・・・

その文字のある位置範囲をクリックすれば、次の処理に進むという
スクリプトを組めば出来ますよ(^^)
過去ログを『画像ボタン』なんかで検索すれば、
サンプルが出てくると思います。
頑張って下さい♪

[5806] Re^2: 文字をクリックしたいです。 投稿者:pumpkin! 投稿日:01/07/28(土) 03:47
入門者さんっぽいのでサービス。
(というか、レス書いていたら先越されてしまったんだよおぉぉっ T-T)
やっていることはNo.9さんのおっしゃっている内容です。
1個所だけ分かりにくいかなと思うところがありますが、
まあ頑張ってください。

screen 0,400,400,0
color 0,128,255 : boxf
color 255,255,255 : font "MS ゴシック",48,1
pos 200,300 : mes "★Click★"
pos 200,350 : mes "★here!★"

*main_loop
repeat
wait 1
x=mousex/200 : y=mousey/100
stick ky,0,1
if ky=256 : break
loop
if x!=1 | (y!=3) : goto *main_loop

color ,125, : boxf : stop

なお、さくらさんのホームページ内「HSP Tips」の030番も参考になると思います。
http://www.silkroad.ne.jp/sakura/web/main/tips/tipmain01.htm
ただし、ちょっと難しいかもしれません。

[5840] 教えてほしいことが・・・ 投稿者:たかひさ 投稿日:01/07/28(土) 22:38
はじめまして。
いまhspで、格闘ゲームを作っています。
そこで、自分が右向きは作れるんですが、相手より右に行って左向きがわかりません。
右向きの画像以外に左向きの画像を作るのでしょうか?
もしくは作らないで他の命令使えばいいんでしょうか?
まだ初心者なので教えていただきたいです。
よろしくお願いします

[5842] Re:画像の反転 投稿者:150 投稿日:01/07/28(土) 23:19

> 右向きの画像以外に左向きの画像を作るのでしょうか?
> もしくは作らないで他の命令使えばいいんでしょうか?

width 100,100
buffer 2,100,100,0
gsel 2
picload "bitmap.bmp"
gsel 0
pos 100,0
gzoom -100,100,2,0,0,100,100
stop

 ↑のスクリプトを実行すると、任意のビットマップ画像
 (100x100ドット)が反転されます。
 ※ハイ&ローのカードゲーム作っていた時の、カードがめくれる
  アニメーションで使っていた一部分です。

 ご参考までに。

[5844] Re^2:画像の反転 投稿者:pumpkin! 投稿日:01/07/29(日) 00:50
> いまhspで、格闘ゲームを作っています。
> そこで、自分が右向きは作れるんですが、相手より右に行って左向きがわかりません。
> 右向きの画像以外に左向きの画像を作るのでしょうか?
> もしくは作らないで他の命令使えばいいんでしょうか?

もうほかの掲示板で解決済みのようですね?
「同時」マルチポストをすると、
せっかく回答をしてくださった150さんのように
解決済みのことに無駄な時間を使うことになるので
礼儀としてやめてほしいと思います。

[5824] ツールバーとかを表示するDLL 投稿者:えび 投稿日:01/07/28(土) 14:34
ツールバーなどを表示できるようにするDLLがあると聞いたのですが、
どこからダウンロード可能でしょうか?

[5838] Re: ツールバーとかを表示するDLL 投稿者:MAS 投稿日:01/07/28(土) 18:14
> ツールバーなどを表示できるようにするDLLがあると聞いたのですが、
> どこからダウンロード可能でしょうか?
そういったDLLならたくさんありますよ。
例をあげておくとすれば、
Exforce.dll ---Forceさん http://www3.tky.3web.ne.jp/~arsene/
srexhsp.dll ---さくらさん http://www.silkroad.ne.jp/Sakura/
など・・・
その他にこのページでもそういう講座を開いているようですが、
難しいのでボクにはさっぱりです(笑)

[5839] Re^2: ツールバーとかを表示するDLL 投稿者:MAS 投稿日:01/07/28(土) 18:15
> その他にこのページでもそういう講座を開いているようですが、
> 難しいのでボクにはさっぱりです(笑)
すいませんURL忘れました。
これっす
http://yokohama.cool.ne.jp/chokuto/index.html

[5820] メッセージボックス 投稿者:jun_wolf 投稿日:01/07/28(土) 14:00 <URL>
メッセージボックスに左右上下のスクロールバーはどうやってつけるのですか?

[5821] Re: メッセージボックス 投稿者:sprocket 投稿日:01/07/28(土) 14:12 <URL>
> メッセージボックスに左右上下のスクロールバーはどうやってつけるのですか?
これのことですか?

sdim buf,256
mesbox buf,winx,winy,5
stop

[5837] Re^2: メッセージボックス 投稿者:jun_wolf 投稿日:01/07/28(土) 16:39 <URL>
あれ!!、横スクロールバーつきってそういうことだったんでしたか・・
昔に使って横スクロールバーしかなかった記憶が・・・・・
ありがとうございました。

[5829] ご・・・ゴーサブが異常? 投稿者:えび 投稿日:01/07/28(土) 15:28
gosubが働いていない?
ちゃんとgosubで指定したのに、そこへ行ってくれず、あげくの果てに、
「サブルーチン外のreturnは無効です」というエラーメッセージ!!
どうなっているのでしょうか?
こういうプログラムですが・・・

cls 4
gosub *mes_set
gosub *box_set
gosub *button_set
*box_set
color 200,200,200 : boxf 50,300,590,450
color 20,20,20 : boxf 53,303,587,447
return

*button_set
objsize 100,25
pos 50 ,273 : button "物理攻撃",*buturi
pos 150 ,273 : button "魔  法",*mahou
pos 250 ,273 : button "逃げる",*nigeru
return

*buturi
;cls 4 : gosub *box_set
;pos 55,305 : mes message.0
;wait 150 : gosub *button_set
*mahou

*nigeru

*mes_set

;sdim message,30,5
;message.0 = "敵を殴った。"
;message.1 = "敵に魔法を唱えた。"
;message.2 = "逃げた!!"
;message.3 = "逃げたが、つかまった。"
;message.4 = "敵を倒した"
return

何か異常ありですか?
教えてください!

[5834] Re: ご・・・ゴーサブが異常? 投稿者:浜口ユヅ 投稿日:01/07/28(土) 16:13
> gosubが働いていない?
> ちゃんとgosubで指定したのに、そこへ行ってくれず、あげくの果てに、
> 「サブルーチン外のreturnは無効です」というエラーメッセージ!!

> cls 4
> gosub *mes_set
> gosub *box_set
> gosub *button_set
> *box_set
> color 200,200,200 : boxf 50,300,590,450
> color 20,20,20 : boxf 53,303,587,447
> return
 一番最初のコレで、gosub *button_setが実行された後戻ってきますよね?
 戻ってきた後すぐに*box_setを通り過ぎて、それからreturnが来るのでエ
ラーになります。
 途中でラベルが貼ってあっても、その場所は何事もなかったかのように通り
過ぎるんです。動作を止めたいならstop命令とかを使う必要があります。



cls 4
gosub *mes_set
gosub *box_set
gosub *button_set
stop
*box_set
color 200,200,200 : boxf 50,300,590,450
color 20,20,20 : boxf 53,303,587,447
return

*button_set
objsize 100,25
pos 50 ,273 : button "物理攻撃",*buturi
pos 150 ,273 : button "魔  法",*mahou
pos 250 ,273 : button "逃げる",*nigeru
return

*buturi
cls 4 : gosub *box_set
pos 55,305
color 255,255,255
mes message.0
wait 150 : gosub *button_set
stop
*mahou
stop
*nigeru
stop
*mes_set

sdim message,30,5
message.0 = "敵を殴った。"
message.1 = "敵に魔法を唱えた。"
message.2 = "逃げた!!"
message.3 = "逃げたが、つかまった。"
message.4 = "敵を倒した"
return

 コレで取りあえず物理攻撃ボタンを押したときにちゃんと動くようになりま
す。あと文字色は初期値で黒(RGB 0,0,0)なのでcolor命令で白に書き換えま
した。

[5833] Re: ご・・・ゴーサブが異常? 投稿者:Sey 投稿日:01/07/28(土) 16:05
とりあえずこれで動きます。

cls 4
gosub *mes_set
gosub *box_set
goto *button_set ;*button_setでループするのでgotoが適当と思います。

*box_set
color 200,200,200 : boxf 50,300,590,450
color 20,20,20: boxf 53,303,587,447
return

*button_set
objsize 100,25
pos 50,273 : button "物理攻撃",*buturi
pos 150,273 : button "魔  法",*mahou
pos 250,273 : button "逃げる",*nigeru
stop ;これがないと入力を待ってくれません

*buturi
cls 4 : gosub *box_set ;ここで描画色が変わっていることに注意、文字を
描いてもほとんど見えません。
pos 55,305 :color 255,255,255: mes message.0
wait 150 : goto *button_set

*mahou
goto *button_set

*nigeru
goto *button_set

*mes_set
sdim message,30,5
message.0 = "敵を殴った。"
message.1 = "敵に魔法を唱えた。"
message.2 = "逃げた!!"
message.3 = "逃げたが、つかまった。"
message.4 = "敵を倒した"
return

最適な方法ではないかもしれませんが、goto,gosubがらみのトラブルは、dia
log命令などで目印をつけ、どこが実行されているのかを確認していくと、解
決しやすいです。

[5836] Re^2: ご・・・ゴーサブが異常? 投稿者:えび 投稿日:01/07/28(土) 16:15
> stop ;これがないと入力を待ってくれません
↑これが原因でした。
ありがとうございます。
(全く、こんな当たり前のことをどうして忘れるんだ!?)

[5828] ウインドウズを終了させる方法 投稿者:太郎 投稿日:01/07/28(土) 15:21
どうしても、sysexitを使う事ができないんですが?

[5831] Re: ウインドウズを終了させる方法 投稿者:sprocket 投稿日:01/07/28(土) 15:51 <URL>
> どうしても、sysexitを使う事ができないんですが?

使用しているOSくらい明記してほしいところです。

以下のスクリプトを実行すると、Windows9x の場合マシンの電源が落ちますが、
WindowsNT/2000 の場合は hspext.dll の問題でシャットダウンできません。

#include "hspext.as"

sysexit 2
end

[5724] 誰か教えて・・・ 投稿者:山本X 投稿日:01/07/26(木) 13:55
どうしても、画像の一部を少しだけ暗くするということができません。
誰か教えて下さいプリーズ。
それと、画面フィードアウト及びオンのとき画像が荒くなってしまいます。
つまりその、なんつーか色が減っちゃうんです。
最後に、HSPのデモで「こんなふうに、サウンドノベル風のものも作れます」みたいなことを言うちょっと前にでる、画面の移り変わりの記述が
よくわかりませんです。こう、カーテンがスライドするみたいな感じの
アレっす。(説明が無茶苦茶ですいません)

[5830] Re: 誰か教えて・・・ 投稿者:山本X 投稿日:01/07/28(土) 15:43
いや、どうもありがとう!
たすかりましたよ。
でも、画面を暗くするのは結局分かりませんでした・・・
あと、あのHPっておもしろいですね。
実に参考になります。

[5729] Re: 誰か教えて・・・(ワイプ) 投稿者:yu-se 投稿日:01/07/26(木) 16:29
> 最後に、HSPのデモで「こんなふうに、サウンドノベル風のものも作れます」みたいなことを言うちょっと前にでる、画面の移り変わりの記述が
> よくわかりませんです。こう、カーテンがスライドするみたいな感じの
> アレっす。(説明が無茶苦茶ですいません)

要はバッファに読み込んだ画像を、メイン画面に少しづつコピーしてるだけです。
そのコピーの仕方でカーテンの様に見せたりできる訳ですが、
このデモのやつはちょっとその理屈がヤヤコシイかも。
(やってる事は簡単なんですが)

面倒だったらデモの該当箇所をそのままパクっちゃうとか。

スクリと同じ場所にYJ_PNN.MAGを置いて実行。
(YJ_PNN.MAGはHSPの\sample\demoに入ってます)
;--------------------------------------------------
screen 0,640,400,1 ;←メイン画面
buffer 3,640,400,1 ;←バッファ
picload "yj_pnn.mag" ;←バッファに画像読み込む

;以下バッファからメインに画像を(ワイプ)コピー
gsel 0:gmode 1
mx=-32:repeat 60
repeat 32
a=cnt*20:x=cnt+mx:if x>20 : x=-1
if x>0 : pos a,0:gcopy 3,a,0,x,400
loop
await 48
mx+:loop

stop
;--------------------------------------------------

もし理屈が知りたければ↓この辺りを参考にして研究してみるとか。
http://www.campus.ne.jp/~ishigami/CREATION/COLUMN/DIS-WIP.htm

[5728] Re: 誰か教えて・・・(画面の一部を暗くする) 投稿者:ペーク 投稿日:01/07/26(木) 15:01 <URL>
dialog "bmp",16,"ビットマップ"
picload refstr
wix=winx:wiy=winy
buffer 2,,,0:gcopy 0,0,0,wix,wiy
gsel 0
redraw 0
repeat 30
line cnt*2,0,0,cnt*2
loop
redraw 1
wait 100
pos 0,0:gcopy 2,0,0,wix,wiy
stop

[5818] 検索 投稿者:MAS 投稿日:01/07/28(土) 12:26
私はいまテキストエディタを作っているのですが、
文字列の検索方法がわかりません。
また、できればメモ帳のような検索ダイアログもだしたいのですが・・・
どなたか知っている方、教えてください。お願いします。

[5826] Re: 検索 投稿者:Chaos 投稿日:01/07/28(土) 14:43

> 文字列の検索方法がわかりません。
> また、できればメモ帳のような検索ダイアログもだしたいのですが・・・

HELPでinstrとscreenを探してみましょう。
検索ダイアログは、screenで新規Windowを作成した後、
mesboxやchkboxなどを貼り付けていくといいですよ。

[5786] aplstr 投稿者:まこっちゃん 投稿日:01/07/28(土) 00:15
ども、はじめまして。

えっと、最近このHSPをしってはまっているんですが
hspextのaplstrが文字化けを起こします。

以前のログを検索してみたところwin2000で起こる現象らしいのですが
これの対処ってのはあるんでしょうか??

直接、作者にメールしたほうがいいのかな?
どなたか教えてくださ〜い。

[5809] Re: aplstr 投稿者:jirou 投稿日:01/07/28(土) 08:19
ヘルプに

| aplstr命令は、文字列をそのまま送信することができますが、 [ALT]キーなどの特殊
| キーの情報は送信できません。 aplstr命令は、キーの情報をキューにためるだけで
| す。実際に押した結果を反映するためには、waitやawait命令を後に入れる必要があ
| ります。一度に大量の情報を送りすぎると、キューがあふれてうまく送信されなくな
| る可能性があります。 aplstr命令は、すべてのアプリケーションにおいて認識され
| るとは限りません。aplstr命令の送信を受け付けない場合は、aplkey命令などで試し
| てみてください。

と有りますから

1文字づつ、wait を入れながら分割して送ってみてはどうでしょう?

また、「すべてのアプリケーションにおいて認識されるとは限りません。」
と言うことは、アプリケーション側の処理との問題の可能性もあるので…。

また、スクリプトの関連する部分と送信先アプリが解れば、だれか実験できるかも
知れませんよん。


# メールは控えましょうねん。
# 「おにたまさん」は自分の仕事の他に「HSP」の開発もされているのでお忙しそうですし
# 今時間が有ればver2.55を早く正式版に…と思う今日この頃

[5813] Re^2: aplstr 投稿者:sprocket 投稿日:01/07/28(土) 09:15 <URL>
> 1文字づつ、wait を入れながら分割して送ってみてはどうでしょう?
>
> また、「すべてのアプリケーションにおいて認識されるとは限りません。」
> と言うことは、アプリケーション側の処理との問題の可能性もあるので…。
>
> また、スクリプトの関連する部分と送信先アプリが解れば、だれか実験できるかも
> 知れませんよん。

実際に以下のスクリプトで実験してみたところ、WindowsMe では問題は起こりませんでしたが、
Windows2000 だと日本語だけがすべて文字化けしてしまいます。

#include "hspext.as"
repeat
aplsel "無題 - メモ帳"
if stat=0 : break
wait 10
loop

aplobj "EDIT"
aplstr "ABCあいうstringすとりんぐ"


過去ログにあるとおり、これは hspext.dll の問題なのでは...

[5822] Re^3: aplstr 投稿者:faust 投稿日:01/07/28(土) 14:24
私もはっきりした事は分かりませんが全角文字もWM_CHARで
送信しているためかもしれません。
Win2000をお使いの人は以下のスクリプトを試してもらえませんでしょうか。
(要loadlib.dll)

#include "llmod.as"
#module
#deffunc aplstrex val, int
mref string, 24
mref hwnd, 1

ps = 0
prm = hwnd, $286, 0, 1
repeat
peek ch, string, ps
if ch == 0 : break
prm.2 = ch
if ch = $0d : gosub *ime
if ch>=$81 & (ch<=$9f) : gosub *ime
if ch>=$e0 & (ch<=$fC) : gosub *ime
dllproc "PostMessageA", prm, 4, D_USER@
ps++
await 0
loop
return
*ime
ps++
peek ch2, string, ps
wch = ch<<8+ch2
prm.2 = wch
return
#global
exec "notepad" : wait 5

classname = "Notepad"
getptr prm, classname
prm.1 = 0
dllproc "FindWindowA", prm, 2, D_USER
hPWnd = dllret

prm = hPWnd, 0, 0, 0
classname = "EDIT"
getptr prm.2, classname
dllproc "FindWindowExA", prm, 4, D_USER
hWnd = dllret

string = "ABCあいうstringすとりんぐ\n\t嗚呼"
aplstrex string, hWnd
stop

[5825] Re^4: aplstr 投稿者:sprocket 投稿日:01/07/28(土) 14:37 <URL>
> 私もはっきりした事は分かりませんが全角文字もWM_CHARで
> 送信しているためかもしれません。
> Win2000をお使いの人は以下のスクリプトを試してもらえませんでしょうか。

Windows2000 でも文字化けなく送信できました。すばらしい

[5781] スクロールバーの操作 投稿者:わに 投稿日:01/07/27(金) 23:33
こんにちわ。わにです。

さて、いきなりですがID2〜31のウィンドウの
スクロールバーを操作する方法はありませんか。
ちょい、色々調べてみたんですが、見つからなかったので・・。

[5811] Re: スクロールバーの操作 投稿者:へろへろ 投稿日:01/07/28(土) 08:25 <URL>
> スクロールバーを操作する方法
ウィンドウ内のスクロールであれば、
DLLなしでも出来たりしますが、お勧めはしません

※スクリプトの一部にKENさんのものを利用させて頂きました。

screen 2,640,480,,dispx-320/2,dispy-240/2,320,240 : redraw 0
repeat 10
t=cnt\2*64 : i=cnt*48
repeat 5 : boxf t,i,t+63,i+47 : t+=128 : loop
loop
redraw 1 : gsel 2,2 : H=0 : V=0 : t=1 : i=1


repeat
await 5 : ginfo 6
if prmx=winx&(prmy=winy) : wait 100 : continue
H+=t : if 640-winx<H : t=-1 : else : if H<0 : t=1
V+=i : if 480-winy<V : i=-1 : else : if V<0 : i=1

objsend 13-41,$114,H<<16+5,a,1
objsend 13-41,$115,V<<16+5,a,1
loop

stop

[5823] Re^2: スクロールバーの操作 投稿者:KEN 投稿日:01/07/28(土) 14:30
> > スクロールバーを操作する方法
> ウィンドウ内のスクロールであれば、
> DLLなしでも出来たりしますが、お勧めはしません

へろへろさんへ
objsendで出来たんですね...知らなかったσ(^_^;)?
DLL無しで出来るのはすばらしいです。

> ※スクリプトの一部にKENさんのものを利用させて頂きました。

すいません。私が書いたサンプルには若干ミスがあります。
H+=t : if 640-winx<H : t=-1 : else : if H<0 : t=1
V+=i : if 480-winy<V : i=-1 : else : if V<0 : i=1
この二行を
H+=t : if 640-winx<=H : t=-1 : else : if H<=0 : t=1
V+=i : if 480-winy<=V : i=-1 : else : if V<=0 : i=1
に修正して下さい。(イコールが抜けてた)

[5807] Re: スクロールバーの操作 投稿者:KEN 投稿日:01/07/28(土) 05:34
> こんにちわ。わにです。
>
> さて、いきなりですがID2〜31のウィンドウの
> スクロールバーを操作する方法はありませんか。
> ちょい、色々調べてみたんですが、見つからなかったので・・。

スクロールバーの操作ってスクロールバーをスクロールさせるって事でいいのかな?
dllを使ってもいいのならウィンドゥにメッセージを送ってやればたぶん出来ると思いますよ
自分の環境(Win98)ではちゃんと動いたよ。(要loadlib.dll&llmod.as)

#include "llmod.as"
#module

#deffunc SetScrollPos int,int

; 水平、垂直スクロールバーのどちらか一方だけ操作したい場合は、
; 操作したくない方の値に-1を指定して下さい。

mref p1,0 ;水平スクロールバーのスクロール座標
mref p2,1 ;垂直スクロールバーのスクロール座標
mref _stat,64 ;システム変数stat
mref BMSCR,67 ;ウインドゥ情報(BMSCR構造体)

;#define SB_THUMBTRACK $0005
;#define WM_HSCROLL $0114
;#define WM_VSCROLL $0115

if BMSCR.17!5|(BMSCR.18<2) : _stat=1 : return
prm=BMSCR.13 : await 0 : ginfo 4
if prmx!p1&(BMSCR.1!winx)&(p1>=0) : prm.1=$0114,p1<<16+$0005,0 : sendmsg prm
if prmy!p2&(BMSCR.2!winy)&(p2>=0) : prm.1=$0115,p2<<16+$0005,0 : sendmsg prm
_stat=0

return
#global

;[ SAMPLE ]

screen 2,640,480,,dispx-320/2,dispy-240/2,320,240 : redraw 0
repeat 10
t=cnt\2*64 : i=cnt*48
repeat 5 : boxf t,i,t+63,i+47 : t+=128 : loop
loop
redraw 1 : gsel 2,2 : H=0 : V=0 : t=1 : i=1
repeat
await 5 : ginfo 6
if prmx=winx&(prmy=winy) : wait 100 : continue
H+=t : if 640-winx<H : t=-1 : else : if H<0 : t=1
V+=i : if 480-winy<V : i=-1 : else : if V<0 : i=1
SetScrollPos H,V
loop


#久しぶりに来てみたら大文字、小文字の違いはあるけど同じハンドルネームの人がいるみたいですね (^^;
#以前、通りすがりとか初心者って言うハンドルネームでクレームついてたみたいだし
#問題あるようならハンドルネーム変えるので言ってね。

[5814] DLL 投稿者:degu 投稿日:01/07/28(土) 10:33
DLLってどうやってつかうんですか?

[5817] Re: DLL 投稿者:なる 投稿日:01/07/28(土) 11:55 <URL>
> DLLってどうやってつかうんですか?
HSPEXTならば、スクリプトの先頭に「#include "hspext.as"」を
つけます。
各種DLLのReadme等をみると載っていると思います。

[5816] Re: DLL 投稿者:sprocket 投稿日:01/07/28(土) 11:10 <URL>
> DLLってどうやってつかうんですか?
マニュアルにしっかり書いてありますよ。

[5787] 範囲指定 投稿者:ちょーすけ 投稿日:01/07/28(土) 00:15
if条件式で範囲指定をしたいのですが・・・(^^;
例えばxの範囲が100以上200以下の場合、
if 100>x<200 : end
と書いても、ダメなようでして・・・
どなたか教えて下されば光栄です。^^

[5789] Re: 範囲指定 投稿者:らぶらどおる 投稿日:01/07/28(土) 00:20
> if条件式で範囲指定をしたいのですが・・・(^^;
> 例えばxの範囲が100以上200以下の場合、
> if 100>x<200 : end
> と書いても、ダメなようでして・・・
> どなたか教えて下されば光栄です。^^

VBの様な関数方法では使えないです。

確か、これで良かったはず・・・。
if x>100 & x<200 : (この後にtrueの場合の命令を書き込む)

私も初心者なものですから・・・

[5793] Re^2: 範囲指定 投稿者:pumpkin! 投稿日:01/07/28(土) 01:27
> 確か、これで良かったはず・・・。
> if x>100 & x<200 : (この後にtrueの場合の命令を書き込む)

おっと、らぶらどおるさんらしからぬ勘違い。
if x>100 &(x<200) のように、後ろのパーレンは省略できないっす(Ver.2.5)。

x=255
if x>100 & x<200 : mes "成立" : else : mes "不成立"
stop

上のスクリだと、不成立なのに成立になっちまいます。
私は正規版2.5を使っているので、ベータ版でOKでしたらごめんなさい。

[5815] Re^3: 範囲指定 投稿者:らぶらどおる 投稿日:01/07/28(土) 10:37
> > 確か、これで良かったはず・・・。
> > if x>100 & x<200 : (この後にtrueの場合の命令を書き込む)
>
> おっと、らぶらどおるさんらしからぬ勘違い。
> if x>100 &(x<200) のように、後ろのパーレンは省略できないっす(Ver.2.5)。
>
> x=255
> if x>100 & x<200 : mes "成立" : else : mes "不成立"
> stop
>
> 上のスクリだと、不成立なのに成立になっちまいます。
> 私は正規版2.5を使っているので、ベータ版でOKでしたらごめんなさい。

私の勘違いでした・・・
カッコで囲まないと、エラー出てます(;--)

[5796] Re^3: 範囲指定 投稿者:ちょーすけ 投稿日:01/07/28(土) 01:37
らぶらどおるさん、pumpkinさん、どうもありがとうございました。^^
そして、またまた図々しいのですが、
正しいスクリプトを教えて頂きたいのですが・・・
宜しければ、お願いいたします。m(_ _)m


> > 確か、これで良かったはず・・・。
> > if x>100 & x<200 : (この後にtrueの場合の命令を書き込む)
>
> おっと、らぶらどおるさんらしからぬ勘違い。
> if x>100 &(x<200) のように、後ろのパーレンは省略できないっす(Ver.2.5)。
>
> x=255
> if x>100 & x<200 : mes "成立" : else : mes "不成立"
> stop
>
> 上のスクリだと、不成立なのに成立になっちまいます。
> 私は正規版2.5を使っているので、ベータ版でOKでしたらごめんなさい。

[5798] Re^4: 範囲指定 投稿者:chokko 投稿日:01/07/28(土) 01:48 <URL>
> if条件式で範囲指定をしたいのですが・・・(^^;
> 例えばxの範囲が100以上200以下の場合、
> if 100>x<200 : end
> と書いても、ダメなようでして・・・

100以上、200以下という場合は下のような感じです。
以上、以下の「以」は引っかけ問題の模様です(笑)
if (x>=100) & (x<=200) : 〜
if x>=100 & (x<=200) : 〜
if x>99 & (x<201) : 〜
↑どれも同じです。頑張って♪

[5801] Re^5: 範囲指定 投稿者:ちょーすけ 投稿日:01/07/28(土) 01:53
いやぁ〜、どうもありがとうございました。
迷宮入り寸前でした。(笑)
皆様の暖かいアドバイスに、感涙・・・(ToT)

> > if条件式で範囲指定をしたいのですが・・・(^^;
> > 例えばxの範囲が100以上200以下の場合、
> > if 100>x<200 : end
> > と書いても、ダメなようでして・・・
>
> 100以上、200以下という場合は下のような感じです。
> 以上、以下の「以」は引っかけ問題の模様です(笑)
> if (x>=100) & (x<=200) : 〜
> if x>=100 & (x<=200) : 〜
> if x>99 & (x<201) : 〜
> ↑どれも同じです。頑張って♪

[5800] Re^5: 範囲指定 投稿者:pumpkin! 投稿日:01/07/28(土) 01:53
> 正しいスクリプトを教えて頂きたいのですが・・・

書いてあるとおりですが……??(^-^)

> if x>100 &(x<200) のように、後ろのパーレンは省略できないっす(Ver.2.5)。

らぶらどおるさんの条件式の後ろの方を( )でくくってくださいと
いうだけです。
あとchokkoさんの回答の中では、2番目3番目のように
最初のパーレンを省略すると処理速度が速くなるそうです。

[5784] 秀和システムの書籍について 投稿者:ゆう 投稿日:01/07/28(土) 00:08
はじめまして。
これからプログラミングをはじめようか・・っという気の長い道のりのスタート地点にいるのですが、
とりあえず、秀和システムのHSPの解説本を買ってみようかと思っています。
で、質問なのですが現時点での配布されているバージョンは2ですね?
書籍はおそらくバージョン1の時代のものだと思うのですが・・
「手始め」に買う本としてはどんなもんでしょうか?
さわりを学習するに充分であれば、購入してみようかと思っているのですが・・
アドバイス、お願いします。

[5788] Re: 秀和システムの書籍について 投稿者:らぶらどおる 投稿日:01/07/28(土) 00:17
> で、質問なのですが現時点での配布されているバージョンは2ですね?
> 書籍はおそらくバージョン1の時代のものだと思うのですが・・
> 「手始め」に買う本としてはどんなもんでしょうか?
> さわりを学習するに充分であれば、購入してみようかと思っているのですが・・
> アドバイス、お願いします。

書籍の対応バージョンは2.5ですので、ご安心を!!

[5790] Re^2: 秀和システムの書籍について 投稿者:ゆう 投稿日:01/07/28(土) 00:37
> 書籍の対応バージョンは2.5ですので、ご安心を!!
おぉ・・・すばやいレス、ありがとうございます!

[5810] Re^3: 秀和システムの書籍について 投稿者:jirou 投稿日:01/07/28(土) 08:25
> > 書籍の対応バージョンは2.5ですので、ご安心を!!
> おぉ・・・すばやいレス、ありがとうございます!

ver2.4 の頃までは、書籍なんて無くて
プリントアウトしたヘルプ(確かtextだった)とBBSが唯一の頼りでした。今の状態が羨ましいです。

また、バージョンが変わっても基本的な命令の仕様は変わらない
のが普通なので、本は買っておいても損は無いとおもいますよん。

[5812] Re^4: 秀和システムの書籍について 投稿者:yu-se 投稿日:01/07/28(土) 08:39
そういえば、新しいHSP本が出るって話を小耳に挟みましたが
本当なのかな?

[5785] 無題 投稿者:どろ 投稿日:01/07/28(土) 00:09
大文字・小文字を関係なく文字列の検索をするにはどうすればいいのですか?

[5802] Re: 無題 投稿者:惟神 投稿日:01/07/28(土) 01:56
プログラム初心者の惟神です〜

> 大文字・小文字を関係なく文字列の検索をするにはどうすればいいのですか?

私の場合、一文字ずつコードを抜き出して
それを大文字・小文字両方と比較してます
私が作っているソフトに組み込んでいるルーチンを
ちょこっと改造(改悪)してみました(^^;
無駄に長い上に、応用性の低いスクリプトですが
よろしければどうぞ〜

あー、ちなみにこの方法だと漢字は読み取れないので
あくまでアルファベット専用と言う事で…
しかも、最初の一文字以降の文字列は
順序バラバラでも捕捉してしまう…バグだらけ(^^;

http://mito.cool.ne.jp/kannagar/kensaku.as

あ、あと無題はやめた方がいいのでは…

[5797] Re: 無題(大文字と小文字の区別) 投稿者:chokko 投稿日:01/07/28(土) 01:38 <URL>
> 大文字・小文字を関係なく文字列の検索をするにはどうすればいいのですか?

検索を行う文字列のキャラクターコードが
65〜90にある場合はA〜Zの大文字なので、
それに32を足して小文字に変換させます。
逆に、97〜122の場合はa〜zの小文字なので、
32を引いて大文字に変換させてやるとOKです。
これを利用して検索を考えてみると、
良い方法が見つかるかと思います。
頑張って下さい♪

[5775] いろいろな命令 投稿者:MAS 投稿日:01/07/27(金) 22:29
皆さんや他のホームページなどが使っている命令で
説明書には載っていない命令が多数あるのですが、
その命令の説明をしているホームページなど知りませんか?

例:X=dispix/2-200

など・・・・知っていたらぜひ教えてください。

[5778] Re: いろいろな命令 投稿者:ちょっと初心者 投稿日:01/07/27(金) 22:52 <URL>
> 皆さんや他のホームページなどが使っている命令で
> 説明書には載っていない命令が多数あるのですが、
> その命令の説明をしているホームページなど知りませんか?
>
> 例:X=dispix/2-200

これは、変数 Xに dispix/2-200 を代入するという意味です。
dispixはdispxの間違い(だと思います)ですが、dispxが1024
だったとすると、Xには312が代入されます。X=312になると言うことです。

[5782] Re^2: いろいろな命令(補足) 投稿者:pumpkin! 投稿日:01/07/27(金) 23:51
> 説明書には載っていない命令が多数あるのですが、
> その命令の説明をしているホームページなど知りませんか?

命令マニュアルだけではなく
「プログラミングマニュアル1・言語仕様ガイド」 (hspprog.htm) も
読むといいっす。
質問の「dispx」はその「システム変数一覧」に出ています。
そこそこの期間HSPを使わせていただいていますが、
ヘルプに出ていない命令は私の記憶にはありません(Ver.2.5)。

あと、そのスクリがdllを使っている場合は当然ヘルプにない命令が出てきますので
MASさんが見たサンプルの先頭に「#include "hspdx.as"」といった
インクルード命令があるかどうかに注意してください。
ちょっとしたサンプルの先頭にこの命令がある場合はたいがいdllを使っていますので、
命令については、該当するdllのヘルプを読むことになります。

[5783] Re^3: いろいろな命令(補足) 投稿者:MAS 投稿日:01/07/28(土) 00:02
> > 説明書には載っていない命令が多数あるのですが、
> > その命令の説明をしているホームページなど知りませんか?
>
> 命令マニュアルだけではなく
> 「プログラミングマニュアル1・言語仕様ガイド」 (hspprog.htm) も
> 読むといいっす。
> 質問の「dispx」はその「システム変数一覧」に出ています。
> そこそこの期間HSPを使わせていただいていますが、
> ヘルプに出ていない命令は私の記憶にはありません(Ver.2.5)。
>
> あと、そのスクリがdllを使っている場合は当然ヘルプにない命令が出てきますので
> MASさんが見たサンプルの先頭に「#include "hspdx.as"」といった
> インクルード命令があるかどうかに注意してください。
> ちょっとしたサンプルの先頭にこの命令がある場合はたいがいdllを使っていますので、
> 命令については、該当するdllのヘルプを読むことになります。

pumpkin!さん、ちょっと初心者さん、どうもありがとうございました。
これでスクリプトの中の難点が解消されると思います。  

[5700] データ内に編集内容を挿入させたい 投稿者:惟神 投稿日:01/07/25(水) 23:36
タイトルが分かり辛くて申し訳ありません
プログラミング初心者の惟神です

テキストファイルの一部分を(w)peek&(w)pokeで抜き出して
それをメッセージボックスへ送り、任意に編集した後
元のデータの位置へ内容を挿入する〜と言う事をしたいのですが
保存する際に(w)pokeだとそれ以降のデータを上書きしてしまって、思うようにいきません
編集して増減したbyte分データをシフトさせつつ、
編集内容を元の位置へ挿入させるには一体どうしたらよいのでしょうか?

抜き出す直前と抜き出し終わった直後に改行コードを入れて、
メモリノートパッド命令を使うと言う、やや強引な手を思いついたのですが
それだと、データ全体を読み込まなければならない上、
文字列を崩してしまう可能性がある為、失敗に終りました。

ビットシフトでなんとかなりそうな気もするのですが
どうにも上手い手が考え付きません。

どなたか、よろしければご教授お願いします

[5717] Re: データ内に編集内容を挿入させたい 投稿者:ANTARES 投稿日:01/07/26(木) 09:45 <URL>
	buf="apple,grape,orange"
mes buf
;以下、「mesboxの編集により、bufから取り出されたgrapeが
;grapefruitsに書き換えられた状態」を作る
strlen len,buf
p=6: getstr s,buf,p,',' ;grapeをsに取り出す
l=strsize
mes s
s="grapefruits"
mes s
;以下、buf内のgrapeをgrapefruitsに書き換える
strmid t,buf,p+l-1,len ;終わりまでの場合、第4パラメータは大きすぎてもよい
strmid buf,buf,0,p ;poke buf,p,0でもよい
buf+=s+t ;bufの長さがsdimで指定した値-1を超えないように注意
mes buf
stop

[5780] Re^2: データ内に編集内容を挿入させたい 投稿者:惟神 投稿日:01/07/27(金) 23:27
sprocketさん、ANTARESさん、回答どうもありがとうございました

>sprocketさん
今、なるべくstrmidやinstrを使わずに文字列を抜き取ると言う事に
挑戦しているのですが(あんまり意味ないのですが 汗)、
peek&pokeでstrmidと同じ事をしてみます
ビットシフトは関係ないですね…間抜けな事をしてしまった…
  >HSPβではmemcpyという命令もあります。
β版の新規命令はonkeyくらいしか知りませんでした…勉強してみます!
  #其方のサイトのサンプルをよく参考にさせてもらっています
  #サイト運営頑張ってください〜

>ANTARESさん
わざわざ具体的なサンプルまでありがとうございます
原理はなんとなく理解したつもりなので、
なんとかアレンジして組み込んで見ます!
…というか、抜き出した文字列とそのうしろの文字列を
足せばよかっただけなんですよね(^^;
なぜかこんな単純な事に頭が回りませんでした…

お二方、どうもありがとうございましたm(_ _)m

[5702] Re: データ内に編集内容を挿入させたい 投稿者:sprocket 投稿日:01/07/26(木) 00:07 <URL>
> 編集して増減したbyte分データをシフトさせつつ、
> 編集内容を元の位置へ挿入させるには一体どうしたらよいのでしょうか?

strmid命令が使えると思います。HSPβではmemcpyという命令もあります。

> ビットシフトでなんとかなりそうな気もするのですが

ビットシフトは別の話だと思いますが..

[5734] 特殊フォルダーの参照? 投稿者:らぶらどおる 投稿日:01/07/26(木) 17:52
特殊フォルダー(コンパネやダイアルアップネットワーク)
の参照は出来ないでしょうか?
プラグイン等がありましたら、教えてください。

[5763] Re: 特殊フォルダーの参照? 投稿者:おくだ 投稿日:01/07/27(金) 17:27 <URL>
>特殊フォルダー(コンパネやダイアルアップネットワーク)
>の参照は出来ないでしょうか?

;開きたいということであれば以下の方法で可能です。

;コントロールパネルの場合。
exec "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}",16

;ダイヤルアップネットワークの場合。
;exec "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{992CFFA0-F557-101A-88EC-00DD010CCC48}",16

[5779] Re^2: 特殊フォルダーの参照? 投稿者:らぶらどおる 投稿日:01/07/27(金) 23:26
> >特殊フォルダー(コンパネやダイアルアップネットワーク)
> >の参照は出来ないでしょうか?
>
> ;開きたいということであれば以下の方法で可能です。
>
> ;コントロールパネルの場合。
> exec "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}",16
>
> ;ダイヤルアップネットワークの場合。
> ;exec "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{992CFFA0-F557-101A-88EC-00DD010CCC48}",16

ご返答ありがとうございます。
開いた後に、その中にあるファイル(プログラム?)等を操作するには
どうしたら良いのでしょう?
ぶっちゃけて言うと、
「ダイアルアップ」と「メール」の設定をバックアップする物を作成したいのです。

[5767] エラーについて 投稿者:TKC 投稿日:01/07/27(金) 20:02
初めまして。
よろしくお願いします。

初めてのHSPプログラミングで、ちょっとしたデータベースの様な物を作りました。
住所録みたいな物で、左側にツリービューで名前を表示して、名前を選択すると、右側に住所や電話番号などが表示するという様なものです。

ある程度仕上がったのですが、ソフトを起動させ使っていると突然
「Can not find "SetFocus"
 dll=0」
というエラーが表示され、強制終了しまう。
このエラーは一体なんですか?
分かる方がいらっしゃれば、どうかご教授下さい。
よろしくお願いします。

[5772] Re: エラーについて 投稿者:桜井 投稿日:01/07/27(金) 20:48
> ある程度仕上がったのですが、ソフトを起動させ使っていると突然
> 「Can not find "SetFocus"
>  dll=0」
> というエラーが表示され、強制終了しまう。
> このエラーは一体なんですか?

おそらくllmodを使用している際に起きるエラーだと思います。
「このDLLのこの命令を使ってね」とスクリプトが言った時に、
「そのDLLにそんな命令はないよ」とllmodがエラーを出した状態です。

llmodを利用しているモジュールに問題があるので、
スクリプト内でエラーが起きた命令を調べ
その命令のあるモジュールの作者に文句を言うか(ぉぃ)、
そのモジュール内の、エラーを起こした命令部分の
dllproc "SetFocus",〜,〜,*
(*部分には 0 か D_KERNEL か D_KERNEL@ のどれかが入っていると思います)

dllproc "SetFocus",〜,〜,※
(※部分には 1 か D_USER か D_USER@ のどれかを元々入っていたものに合わせて入れてください)
に置き換えてみてください。
説明がわかりにくてすみません。

#私はWin32APIにはさほど詳しくないので間違っている可能性があります。
#そのときはご容赦ください。m(_ _)m

[5777] Re^2: エラーについて 投稿者:TKC 投稿日:01/07/27(金) 22:39
さっそくのレスありがとう御座います。

> そのモジュール内の、エラーを起こした命令部分の
> dllproc "SetFocus",〜,〜,*
> (*部分には 0 か D_KERNEL か D_KERNEL@ のどれかが入っていると思います)
> を
> dllproc "SetFocus",〜,〜,※
> (※部分には 1 か D_USER か D_USER@ のどれかを元々入っていたものに合わせて入れてください)
> に置き換えてみてください。

元々、D_USER@が入ってました・・・
逆に D_KERNEL@にしたりしてみましたが、ソフトを起動するなりエラーが出ました。
1か、D_USER@じゃないとダメみたいです。
1かD_USER@以外ですと、ソフトを起動させるとすぐにエラーになるんですが、私の場合は、起動してしばらく操作してるとエラーが出ますので、きっと私のスクリプトが原因かと思います。(タブン)

もう一度組み直してみます。
桜井さんどうもありがとう御座いました。
何か分かりましたら、またよろしくお願い致します。

[5773] 文字列の幅 投稿者:おかづ 投稿日:01/07/27(金) 21:43 <URL>
こんにちは。早速ですが、質問です。
フォントによって、文字列を表示したときの幅が異なりますよね。
その幅を取得する方法が知りたいのですが、以前掲示板で扱われた
話題だったような気がして探しても見つかりませんでした。
どなたか教えていただけませんでしょうか。
よろしくお願いします。

[5774] Re: 文字列の幅 投稿者:faust 投稿日:01/07/27(金) 22:11
> フォントによって、文字列を表示したときの幅が異なりますよね。
> その幅を取得する方法が知りたいのですが、
>(以下略)
「GetTextExtentPoint32」を使うと出来ますよ。

[5776] Re^2: 文字列の幅 投稿者:おかづ 投稿日:01/07/27(金) 22:38 <URL>
> 「GetTextExtentPoint32」を使うと出来ますよ。

なるほど、そのAPIを使えばいいのですね?
わかりました。素早い回答ありがとうございました。

[5751] 無題 投稿者:雷名 投稿日:01/07/27(金) 10:36
始めまして、雷名です。
早速質問ですが、
画像はフェードイン、フェードアウトはできますか?
あと、文字もフェードイン、フェードアウトさせたいのです。
どうすればいいんでしょうか?

[5752] フェードイン、フェードアウト 投稿者:雷名 投稿日:01/07/27(金) 10:37
> 始めまして、雷名です。
> 早速質問ですが、
> 画像はフェードイン、フェードアウトはできますか?
> あと、文字もフェードイン、フェードアウトさせたいのです。
> どうすればいいんでしょうか?
題名書き忘れたので、もう一回いれます。

[5771] Re: フェードイン、フェードアウト 投稿者:ペーク 投稿日:01/07/27(金) 20:44 <URL>
;文字のフェードイン・フェードアウト
color:boxf
repeat 255
color cnt,cnt,cnt:font "MS ゴシック",40:pos 0,0:mes "ペーク"
await 5
loop
repeat 255
color 255-cnt,255-cnt,255-cnt:pos 0,0:mes "ペーク"
await 5
loop
stop

[5759] Re: フェードイン、フェードアウト 投稿者:lion 投稿日:01/07/27(金) 12:55 <URL>
> > 始めまして、雷名です。
> > 早速質問ですが、
> > 画像はフェードイン、フェードアウトはできますか?
> > あと、文字もフェードイン、フェードアウトさせたいのです。
> > どうすればいいんでしょうか?

palfade命令をリファレンスで調べてみましょう。
それと、↑のワード検索で過去ログを検索したらたくさん
そうした内容の記事が出てきましたよ。

[5768] キーを押したことにするには? 投稿者:taka 投稿日:01/07/27(金) 20:05
教えていただきたいのですが、プログラムで、キーを押したことにする
ことは、できないのでしょうか?

例えば、『aaaとキーを押せ!』って命令を書いたら、メモ帳とかで『
aaa』と表示させるとか・・・。

そんなことは出来ないのでしょうか?

ヘルプとは過去ログとかいろいろ見てるんですけど、あまりよくわか
りません、よかったら教えてください。お願いします。

[5769] Re: キーを押したことにするには? 投稿者:jirou 投稿日:01/07/27(金) 20:30
> 教えていただきたいのですが、プログラムで、キーを押したことにする
> ことは、できないのでしょうか?
>
> 例えば、『aaaとキーを押せ!』って命令を書いたら、メモ帳とかで『
> aaa』と表示させるとか・・・。
>
> そんなことは出来ないのでしょうか?
>
> ヘルプとは過去ログとかいろいろ見てるんですけど、あまりよくわか
> りません、よかったら教えてください。お願いします。

HSPをインストールしたサンプルフォルダにある「Aplnote.as」が参考になると思います。
(ベーター版では当然? 有りませんが・・・)

標準で付いているサンプルも、よくよく見ると参考になりますよん。

[5770] ありがとうございました! 投稿者:taka 投稿日:01/07/27(金) 20:41 <URL>
> 
> HSPをインストールしたサンプルフォルダにある「Aplnote.as」が参考になると思います。
> (ベーター版では当然? 有りませんが・・・)
>
> 標準で付いているサンプルも、よくよく見ると参考になりますよん。

出来ました!jirouさんどうもありがとうございました。
これからは、サンプルとかも見て勉強したいと思います!

[5760] ウィンドウを閉じる方法 投稿者:どぅ 投稿日:01/07/27(金) 13:38
前、よくお世話になりました。
最近、また疑問がでできたので教えてください。

ネット中に広告を閉じるソフトがありますけど、
あんなふうに、既に開いているウィンドウを
HSPから閉じさせたいのですが、
どうもそれらしき命令が見当たりません。

何かいい方法はないでしょうか?
よろしくお願いします。

[5761] Re: ウィンドウを閉じる方法 投稿者:passer-by 投稿日:01/07/27(金) 15:28
> ネット中に広告を閉じるソフトがありますけど、
> あんなふうに、既に開いているウィンドウを
> HSPから閉じさせたいのですが、
> どうもそれらしき命令が見当たりません。

ウィンドウタイトルを一意に特定できれば次の要領でウィンドウを
閉じることができます。

#include "hspext.as"
sdim ttl,128
mes "ウィンドウタイトル"
input ttl,200,25,128
button "閉じる", *wclose
stop
*wclose
aplsel ttl
aplact
aplkey 115,4 ;Alt + F4
stop

問題は「どうやって閉じるウィンドウを特定するか」でしょうね。

[5764] Re^2: ウィンドウを閉じる方法 投稿者:どぅ 投稿日:01/07/27(金) 18:04
passer-byさん、おはやいご返事ありがとうございます。

> 問題は「どうやって閉じるウィンドウを特定するか」でしょうね。
あ〜そうですよね。そっちのほうがもっと大変だった。
でもとりあえずやってみます。助かりました。

[5762] listviewでソート 投稿者:ぷぅ 投稿日:01/07/27(金) 15:50
エクスプローラみたいに、listview のタイトル欄を押すたびに、
既定、昇順、降順という様にアイテムがソートするようなのは出来ないのでしょうか?
また、その機能に近いやり方があれば、教えてください。
お願いします。

[5745] すごろくゲームを作っているのですが・・・。 投稿者:鈴菜 萌 投稿日:01/07/27(金) 02:38 <URL>
というか、まだ頭の中だけなんでスが^^;

フィールドのマップをどうやって処理するのがベターなのでしょうか?
フィールド用のでっかいバッファを作るのが今のところ有力なのですが、こりゃ、効率悪いですよね^^;
よい方法は無いものでしょうか。よろしくお願いします。
ちなみにイメージ的にはCompileから出ているDiskStation15号に収録されている「フロートランドのおとぎばなし」というゲームです。
あんな感じでできればなぁ、とか思っています。

[5757] Re: すごろくゲームを作っているのですが・・・。 投稿者:スミス 投稿日:01/07/27(金) 11:50 <URL>
スミスです。

> フィールドのマップをどうやって処理するのがベターなのでしょうか?
> フィールド用のでっかいバッファを作るのが今のところ有力なのですが、こりゃ、効率悪いですよね^^;

おそらく大きくバッファを用意してもそれほど問題ではなく、
実際にプログラムを組む場合にも極端にむづかしいわけでもなく、
総合的にベストに近い効率かもしれません。
そうとはわかっても、すごろくの道の部分のみでデータ化したい
というのであれば、このような設計はどうでしょうか。

道のデータは、1次元の文字列配列変数で用意
変数に入れる文字に意味を持たせる
F・・・次に進めるSTEP番号(配列の添字番号)を示す文字
I・・・イベントの種類

MAP.1 = "F02I05"
MAP.2 = "F03F10I04"
MAP.3 = "I99";ゴール
MAP.10= "F01I3"

これら変数の中身を解析するルーティンを組めば良いわけです。
なんとなく意味わかりますか?

[5758] Re^2: すごろくゲームを作っているのですが・・・。 投稿者:鈴菜 萌 投稿日:01/07/27(金) 12:53 <URL>
> 道のデータは、1次元の文字列配列変数で用意
> 変数に入れる文字に意味を持たせる
> F・・・次に進めるSTEP番号(配列の添字番号)を示す文字
> I・・・イベントの種類
>
> MAP.1 = "F02I05"
> MAP.2 = "F03F10I04"
> MAP.3 = "I99";ゴール
> MAP.10= "F01I3"
>
> これら変数の中身を解析するルーティンを組めば良いわけです。
> なんとなく意味わかりますか?
レス、ありがとうございます。
この方法で試してみたいと思います。
また、質問するかもしれませんがよろしくお願いします。

[5748] sysexit命令について 投稿者:nemo 投稿日:01/07/27(金) 10:02
なんかいやってもsysexit命令ができないのですがどうしたらいいでしょう?だれか使い方おしえてください,,,,,, m(..)m

[5754] Re: sysexit命令について 投稿者:nemo 投稿日:01/07/27(金) 10:57
> なんかいやってもsysexit命令ができないのですがどうしたらいいでしょう?だれか使い方おしえてください,,,,,, m(..)m
>・・・・わかりませんね(笑)

[5755] Re^2: sysexit命令について 投稿者:nemo 投稿日:01/07/27(金) 10:58
> > なんかいやってもsysexit命令ができないのですがどうしたらいいでしょう?だれか使い方おしえてください,,,,,, m(..)m
> >・・・・わかりませんね(笑)
> Win Meではだめでしょうか・・・・・

[5756] Re^3: ホントにできん!(汗) 投稿者:ν 投稿日:01/07/27(金) 11:07
> なんかいやってもsysexit命令ができないのですがどうしたら
> いいでしょう?だれか使い方おしえてください,,,,,, m(..)m
> ・・・・わかりませんね(笑)
> Win Meではだめでしょうか・・・・・
WinMeで試してみましたが、本当にできませんね。(汗)

[5750] Re: sysexit命令について 投稿者:ν 投稿日:01/07/27(金) 10:31
> なんかいやってもsysexit命令ができないのですがどうしたらいいでしょ>> う?だれか使い方おしえてください,,,,,, m(..)m

#include "hspext.as"を入れてないという事はありませんよね?

[5753] Re^2: sysexit命令について 投稿者:nemo 投稿日:01/07/27(金) 10:55
> > なんかいやってもsysexit命令ができないのですがどうしたらいいでしょ>> う?だれか使い方おしえてください,,,,,, m(..)m
>
> #include "hspext.as"を入れてないという事はありませんよね?
>インクルードしてますよ。by nemo

[5749] Re: sysexit命令について 投稿者:sprocket 投稿日:01/07/27(金) 10:15 <URL>
> なんかいやってもsysexit命令ができないのですがどうしたらいいでしょう?
> だれか使い方おしえてください,,,,,, m(..)m

WindowsNTや2000を使ってません?
だとしたら sysexit 命令は使えないはず。

[5740] 作成プログラム 投稿者:KOTONE 投稿日:01/07/26(木) 22:41
初めまして。某誌にて(笑)記事を拝見し、DLさせて頂きました。
初歩的な質問で申し訳有りませんが、HSPでWinamp等他ソフト用のdll
ファイルを作成する事は出来るでしょうか。出来る場合にはファイルの
変換方法を教えて下さい。

[5747] Re: 作成プログラム 投稿者:ICEMAN 投稿日:01/07/27(金) 07:31 <URL>
ICEMANです。
"作成プログラム" KOTONE wrote:
> 初歩的な質問で申し訳有りませんが、HSPでWinamp等他ソフト用のdll
> ファイルを作成する事は出来るでしょうか。

残念ながらHSPではEXEとSCR形式しか出力できないので
DLLは作成できません。DLLとなるとC/C++、Delphi
などを使って作ります。

ではまた

[5739] listbox 投稿者:mil 投稿日:01/07/26(木) 22:17
listboxで中の表示がランダムな時に
特定の表示を選択した時に
特定の説明が出せるようにするには
どうしたらいいでしょうか?


表示が上から「あ」「い」「う」「え」「お」の時でも
「い」「う」「あ」「え」「お」の時でも
「あ」を選択した時に「あ」の説明が出るようにしたいのです
自分なりに分かり易くしたつもりですけど、わかりにくいですかね?
誰かお願いします

[5746] Re: listbox 投稿者:sprocket 投稿日:01/07/27(金) 02:55 <URL>
> listboxで中の表示がランダムな時に
> 特定の表示を選択した時に
> 特定の説明が出せるようにするには
> どうしたらいいでしょうか?

メモリーノートパッド命令で選択されている文字列の内容を調べればよいかと。

sdim buf,256 : buf="あ\nい\nう"
sdim astr,256
item=-1
itbk=-1

notesel buf

randomize
notemax x
repeat 3 ; 行をランダムに入れ替え
rnd a,x
noteget astr,a
notedel a
noteadd astr,0
loop

objsize 90,60
listbox item,60,buf

repeat
if item!itbk {
itbk=item
noteget astr,item
s=0:wpeek s,astr,0:str s,16+4

if astr="あ" : astr="説明: 'あ' "+s+" a"
if astr="い" : astr="説明: 'い' "+s+" i"
if astr="う" : astr="説明: 'う' "+s+" u"

color 255,255,255:boxf
color:pos 100,0:mes astr ; 表示
}
wait 5
loop

[5679] VRAMへのイメージ転送 投稿者:たくてくす 投稿日:01/07/25(水) 17:02
題名の事をやろうとして、

---------------------------------------------
*clsmode
buffer 1,800,600,0:picload "bmp/ynitto00.bmp",1,0,0
screen 0,800,600,0,0,0,640,480
gsel 1
es_buffer 0,0
     gsel 0

*returm
redraw 0
pos 0,0:gmode 0,300,150:gcopy 1,0,0,300,150
pos 0,0:color 255,0,0:mes "転送テスト、"+stat
button "再描画" ,*returm
redraw 1,0,0,199,49
stop
-------------------------------------------
このようなスクリプトを組んでみたのですが、コンパイル+実行(F5)を
行うと、「文法が間違っています」と言われてしまいますが、
どうすればいいのでしょうか?
(実行ファイルのあるフォルダには、hspdx.dllも一緒にいれてあります)

[5688] Re: VRAMへのイメージ転送 投稿者:ANTARES 投稿日:01/07/25(水) 19:15 <URL>
 docs\Hspdx.txtを読むことをお奨めします。

[5697] ありがとうございました。 投稿者:たくてくす 投稿日:01/07/25(水) 22:23
なんとか動くようになりました。


……その代わり不正処理で強制終了するようになってしまいましたが、
コレばっかりはどうしようもないですね(TT

わざわざお答えありがとうございましたm(__)m

[5699] Re: ありがとうございました。 投稿者:NANASE 投稿日:01/07/25(水) 23:28 <URL>
> なんとか動くようになりました。
>
>
> ……その代わり不正処理で強制終了するようになってしまいましたが、
> コレばっかりはどうしようもないですね(TT
>
> わざわざお答えありがとうございましたm(__)m

不正な処理の原因と言えば、画像転送の失敗とかでは?
ウインドウサイズと同じかそれ以下のサイズの画像を転送していますか?
特に思い当たるのはそれしか・・・

[5703] Re^2: ありがとうございました。 投稿者:たくてくす 投稿日:01/07/26(木) 00:21
> 
> 不正な処理の原因と言えば、画像転送の失敗とかでは?
> ウインドウサイズと同じかそれ以下のサイズの画像を転送していますか?
> 特に思い当たるのはそれしか・・・

送ってる画像は640*480で、ウィンドウの大きさは800*600ですから、
その点は特に問題はないと思うのですが……

[5705] Re^3: ありがとうございました。 投稿者:すもも 投稿日:01/07/26(木) 00:37 <URL>
> 不正な処理

buffer 1 はシステムで使われているので、できるだけ
使用を避けましょう。
hspdx を使っているのなら、ID9 以降のオフスクリーンバッファを
使っていませんか? 使おうとすると、2.5 だと強制終了すると
思います。
(hspdxfix か、2.6 または 2.55 を使いましょう)

[5708] 未だに・・(TT 投稿者:たくてくす 投稿日:01/07/26(木) 01:41
> > 不正な処理
>
> buffer 1 はシステムで使われているので、できるだけ
> 使用を避けましょう。
はい、buffer 2に修正してみました^^

> hspdx を使っているのなら、ID9 以降のオフスクリーンバッファを
> 使っていませんか? 使おうとすると、2.5 だと強制終了すると
> 思います。

いえ、ID0〜9の間で試してみましたが、全て強制終了されてしまいます。


#include "hspdx.as"

*clsmode
buffer 2,800,600,0:picload "bmp/ynitto00.bmp",1,0,0
screen 0,800,600,0,0,0,640,480
gsel 2,0
es_buffer 0,0
gsel 0

*returm
redraw 0
pos 0,0:gmode 0,300,150
gcopy 2,0,0,300,150
pos 0,0:color 255,0,0:mes "転送テスト、"+stat
button "再描画" ,*returm
redraw 1,0,0,199,49
stop

↑のスクリプトで、強制終了が発生します。
「es_buffer 0,0」の部分を削除して実行するときちんと動くのですが……

[5723] Re: 未だに・・(TT 投稿者:lion 投稿日:01/07/26(木) 13:09 <URL>
まさかとは思うんですが、DirectXの初期化をし忘れている
ということはないですよね?
それと、DirectXを使う場合gcopyとかmesとかは
使えない(画面に反映されない)ですよ。

[5727] Re^2: (初期化?)未だに・・(TT 投稿者:すもも 投稿日:01/07/26(木) 14:32 <URL>
あれこれしてる間に lion さんがレスをつけてくださいました。
そうですよね・・。DirectX を使うには初期化が必要です。

↓あまり意味もなくモジュール化してみました。ご参考にどうぞ

#module

; モジュールの中で hspdx の命令を使います
#include "hspdx.as"

#deffunc dd_draw ; 描画担当関数。ここに描画ルーチンを付け足します
gmode 2, picx@, picy@
es_copy 0, 0, 0
return

#deffunc dd_ini ; いろいろ初期化担当関数
gsel 2
es_buffer 0
return

#deffunc dd_start int, int ; DirectDraw 初期化関数
mref wx, 0
mref wy, 1

es_ini
es_screen wx, wy, 8
mystat = stat
if mystat = 1 : dialog "DirectDrawの初期化に失敗しました",1 : end
if mystat = 2 : dialog "スクリーンの初期化に失敗しました",1 : end

dd_ini
return

#deffunc dd_proc ; 大まかなループの流れ担当関数
mref mystat, 64
mystat = 0

stick ky
; ESC が押されたら stat に 1 を返す
if ky&$80 : mystat = 1 : return
es_cls
dd_draw
es_sync
await 0
return
#global

; 画像を選びます
sdim filename, 256
dialog "bmp;jpg;mag", 16, "画像"
if stat=0 : end
filename = refstr

; 画像を読みこみます
buffer 2,,,1
picload filename
picx = winx : picy = winy
if (picx>640) || picy>480 : dialog "画像のサイズが大きすぎます" : end

; DirectDraw 初期化
dd_start 640, 480 ; 画面の大きさ指定

; メインループ
repeat
dd_proc
; 1 が返ったらおしまい
if stat = 1 : break
loop

[5742] ぁぅ 投稿者:たくてくす 投稿日:01/07/26(木) 23:00
すいません(><
もろに抜けてました(汗

お騒がせしました^^;>

[5741] lalu 投稿者:たくてくす 投稿日:01/07/26(木) 22:59
> あれこれしてる間に lion さんがレスをつけてくださいました。
> そうですよね・・。DirectX を使うには初期化が必要です。
>
> ↓あまり意味もなくモジュール化%B

[5704] ちなみに… 投稿者:たくてくす 投稿日:01/07/26(木) 00:30
参考になるのかならないのかはわかりませんが(なにぶん、意味がわからないので^^;)
強制終了時の、エラーの詳細は以下の通りでした。



HSP2 のページ違反です。
モジュール : HSPDX.DLL、アドレス : 0187:00a91851
Registers:
EAX=00000000 CS=0187 EIP=00a91851 EFLGS=00010246
EBX=00000000 SS=018f ESP=0065fc94 EBP=00000002
ECX=00000320 DS=018f ESI=00000000 FS=4b1f
EDX=00000000 ES=018f EDI=ffffffff GS=0000
Bytes at CS:EIP:
8b 40 04 6a 44 50 8b 08 ff 51 14 e8 3f f9 ff ff
Stack dump:
00a999f8 00a999d0 00000000 00a91a34 bff559e6 00440638 00000002 00000000 00000000 00000000 00000001 00000113 00103fc4 00000000 8cd60000 ffff7a1b

[5684] あれ?(Re: VRAMへのイメージ転送) 投稿者:ペーク 投稿日:01/07/25(水) 18:58 <URL>
> *clsmode
> buffer 1,800,600,0:picload "bmp/ynitto00.bmp",1,0,0
> screen 0,800,600,0,0,0,640,480
> gsel 1
> es_buffer 0,0
>      gsel 0
>
> *returm
> redraw 0
> pos 0,0:gmode 0,300,150:gcopy 1,0,0,300,150
> pos 0,0:color 255,0,0:mes "転送テスト、"+stat
> button "再描画" ,*returm
> redraw 1,0,0,199,49
> stop
どこにes_buffferと入っているのでしょうか?
> es_buffer 0,0
↑ちゃんとes_bufferになっていますね。

[5680] Re: VRAMへのイメージ転送(追記) 投稿者:たくてくす 投稿日:01/07/25(水) 17:04
「es_bufffer」の部分で、「文法が間違っています」と言われてしまいます。

[5681] Re^2: VRAMへのイメージ転送(追記) 投稿者:NANASE 投稿日:01/07/25(水) 18:06 <URL>
> 「es_bufffer」の部分で、「文法が間違っています」と言われてしまいます。

fが1個多いです。(^^;

[5696] Re^3: VRAMへのイメージ転送(追記) 投稿者:たくてくす 投稿日:01/07/25(水) 22:06
> > 「es_bufffer」の部分で、「文法が間違っています」と言われてしまいます。
>
> fが1個多いです。(^^;

あ、すいません、コレ単純にこぴー&ペーストの失敗です(><;

[5682] Re^3: VRAMへのイメージ転送(追記) 投稿者:ペーク 投稿日:01/07/25(水) 18:46 <URL>
> > 「es_bufffer」の部分で、「文法が間違っています」と言われてしまいます。
>
> fが1個多いです。(^^;
ほんとだ。正確には「ex_buffer」ね。

[5685] Re^4: VRAMへのイメージ転送(追記) 投稿者:ペーク 投稿日:01/07/25(水) 18:58 <URL>
> ほんとだ。正確には「ex_buffer」ね。
es_bufferだった・・・

[5735] コマンドでコンパイルする 投稿者:yuu 投稿日:01/07/26(木) 19:26 <URL>
HSPのプログラム上で、任意のASファイルをコンパイルする方法が知り
たいです。
その際に最低限必要なファイルも。

方法or紹介されてそうなHPのURL をお願いします。

[5737] Re: コマンド(HSP)でコンパイルする 投稿者:桜井 投稿日:01/07/26(木) 19:59
> HSPのプログラム上で、任意のASファイルをコンパイルする方法が知り
> たいです。
> その際に最低限必要なファイルも。
最低限必要なものとしてhspcmp.dllが必要ですが、
通常存在するはずですのでその点は気にしなくてもいいと思います。

> 方法or紹介されてそうなHPのURL をお願いします。
そういうホームページを知らないので簡単なサンプルを作ってみました。
ダイアログでファイルを選択し、そのファイルをコンパイル&実行するものです。

;------------------------------------------------------------------------------------
#include "hspcmp.as"
dialog "as",16,"HSP Source"
if stat=0 : end
hsc_ini refstr ;ダイアログで選んだファイルをコンパイル対象に設定。
hsc_objname "obj" ;作成するオブジェクトファイルの名前を"obj"に設定。
hsc_comp 1 ;この命令でオブジェクトファイルを作成。
if stat : dialog "エラーが発生しました。"
;コンパイルに失敗した場合、ダイアログを表示させて終了する。
exec "hsp2.exe \""+curdir+"\\obj\""
;hsp2.exeに作成したオブジェクトファイルを読み込ませて実行。
end
;------------------------------------------------------------------------------------

#こんな感じでいいんでしょうか(・・)?

[5738] あうち。ミスったんで訂正。 投稿者:桜井 投稿日:01/07/26(木) 21:53
すみません、簡単なサンプルとかいっといてバグがありました・・・。

if stat : dialog "エラーが発生しました。"
という行を、
if stat : dialog "エラーが発生しました。" : end
に置き換えてください。(些細な事ですが・・・。(^^;)
申し訳ありませんでした。m(_ _)m

#要は、hsc_iniでコンパイルの対象となるスクリプトを指定し
#hsc_compでオブジェクトファイルを作成して
#execでhsp2.exeにそれを読みこませる、という事です。

[5743] Re: コマンドでコンパイルする 投稿者:yuu 投稿日:01/07/26(木) 23:31 <URL>
桜井さん、takadekoさん、ありがとうございます!

また、わからないことがあれば質問しますので、
皆様そのときもまたよろしくお願いします!

[5736] Re: コマンドでコンパイルする 投稿者:takadeko 投稿日:01/07/26(木) 19:46 <URL>
> HSPのプログラム上で、任意のASファイルをコンパイルする方法が知り
> たいです。
まず、上のメニューで、HSPというものをクリックして
START、AXを作成と言うものがあるので、それをクリック
すると、START、AXができるので、
次はその実行ファイルに組み込みたいファイルを
ツール、PACKFILEを作成をクリックします。
すると、一覧がでてくるので、その中から組み込みたいもの
を選んで、閉じます(START、AXは必須です。)。
そして、実行ファイルを作成をクリック、
ファイル名を書いてOK。
--------------------------------------------------
> 方法or紹介されてそうなHPのURL をお願いします
詳しくはうすあじさん、のHSPセンターへどうぞ
www.hspcenter.com/
そいから、EXEの説明はまだですが・・
takadeko(おいら)のサイトも・・・
初心者のためのサイトです。参考になったらどうぞ
dekodekomameta.hoops.ne.jp/
<ただいま、HSPゲーム大会実施中>

[5731] メモリノートパッド 投稿者:mil 投稿日:01/07/26(木) 17:16
メモリノートパッドについて
くわしくかかれたページってないですか?
おしえてください

[5733] Re: メモリノートパッド 投稿者:No.9 投稿日:01/07/26(木) 17:28 <URL>
> メモリノートパッドについて
> くわしくかかれたページってないですか?
> おしえてください

メモリーノートパッドのどの命令について知りたいのかを書いて貰えると、
こちらで詳しく教えてもらえると思いますよ♪
また、マニュアルをじっくり読んで、ちょっとしたサンプルなんかを
自分で作ると解ってくると思います(^^)

[5730] う〜んこまったんぁ 投稿者:tomiya 投稿日:01/07/26(木) 16:36
とみやというものですが、『stick p1,p2,p3』の非トリガータイプキー
の設定がわかりません教えてください!!
(おしっぱなしでも検出する設定がわかりません)

[5732] Re: う〜んこまったんぁ 投稿者:No.9 投稿日:01/07/26(木) 17:24 <URL>
どうも、No.9です。

> とみやというものですが、『stick p1,p2,p3』の非トリガータイプキー
> の設定がわかりません教えてください!!
> (おしっぱなしでも検出する設定がわかりません)

p2 をキーコードと同じ数字にすれば押しっぱなしに対応しますよ♪
複数キーに対応したい場合は、全部を足した数字にすれば良いです。

[5598] ユーザー設定をさせたい。 投稿者: 投稿日:01/07/23(月) 23:05 <URL>
皆さんに質問があります。
ユーザー設定付きのソフトを作りたいのですけど
どうしたら作れるのでしょうか?

ちなみに私のホームページが出来ました。
ソフトが少しあります。よければ見に来てください。

[5726] Re: ユーザー設定をさせたい。 投稿者:WoodFields 投稿日:01/07/26(木) 14:21
> ユーザー設定付きのソフトを作りたいのですけど
私は、iniファイルを使っています。ポリゴンさんの
HSP ini File Read/Write Library(Hspini.dll)でできます。
レジストリならHSPの標準機能というか、Hspext.dllですね。
いずれにしても、アプリの現在の状態や、chkbox、listbox、combox等の
値を格納しておきます。

[5599] Re: ユーザー設定をさせたい。 投稿者:うっちー 投稿日:01/07/23(月) 23:15 <URL>
> ユーザー設定付きのソフトを作りたいのですけど
> どうしたら作れるのでしょうか?

質問があいまいすぎてなさりたいことがよくわかりませんが、
onexit命令などを使って
ウィンドウが消される直前に
bsave命令などを使って保存すればいいんじゃないでしょうか?
で、起動時にそのファイルの存在をexist命令などで調べて
読み込み、反映させるようにすればいいと思うんですが…
そんな単純な問題じゃないって?(^^;)

[5634] やはりMIDIファイルが鳴らないようです(ToT; 投稿者:MISO 投稿日:01/07/24(火) 16:50
ログが消えてしまったので新規登録です。

あいかわらずMIDIだけ、鳴りません。(WAVEは鳴る)
スクリプトを頭からチェックしました。
MCI、というのも使ってみました。
記述は、
スクリプト冒頭辺りで
sndload "midi2.mid",1,1
と入力して、
真っ直ぐ通過する部分で
snd 1
で鳴らしています。
#incluedで長いスクリプトを分割して繋げる前までは鳴ってたんですけど
今はなぜかエディタからの実行時でも鳴りません。
ちなみに、もう一つの全然別のスクリプトでは鳴るんです。
これは一体・・・(汗)どうやったらMIDIが鳴るんでしょう?

[5667] Re: やはりMIDIファイルが鳴らないようです(ToT; 投稿者:清水恵 投稿日:01/07/25(水) 12:04 <URL>
検討違いな事書いてたらごめんなさい(^^;。

前に私もwaveは鳴るもののmidiが鳴らないという事があって、私
の場合はmidiファイルが別フォルダにあって、sndload命令時にフ
ルパスでファイル名指定していたんですけど、chdirでフォルダ移
動して、sndload命令ではファイル名のみ設定するようにしたら問
題なく鳴るようになりました(^^;。

sndload命令の前にchdirでフォルダ移動してみてはいかがでしょう
か(^^;。

[5637] Re: やはりMIDIファイルが鳴らないようです(ToT; 投稿者:ペーク 投稿日:01/07/24(火) 19:19 <URL>
> sndload "midi2.mid",1,1
1以外をしてしてみれば?

sndload "midi2.mid",1,0
snd 0

[5718] Re^2: やはりMIDIファイルが鳴らないようです(ToT; 投稿者:みそ 投稿日:01/07/26(木) 11:27
恵さん、ベークさん、ありがとうございます。
ためしてみますね。(・W・

[5722] Re^3: やはりMIDIファイルが鳴らないようです(ToT; 投稿者:ペーク 投稿日:01/07/26(木) 12:47 <URL>
> 恵さん、ベークさん、ありがとうございます。
ベークじゃなくてペークです。

[5721] Re^3: やはりMIDIファイルが鳴らないようです(ToT; 投稿者:miso 投稿日:01/07/26(木) 12:01
MIDI、やっぱり鳴りません・・・(汗)
WAVは、相変わらず鳴ってます。

※以下の事をやってみました。
・記述間違いがないかチェック
・命令を通っているかチェック
・PackfileにMIDIを入れない
・MIDI音源はフリーズしていない
・同じフォルダにMIDIファイルが置いてある
・十分なウェイトをとっている

アドバイスのとおり、
chdirで移動してみたり、(フォルダを作ってみました)
MIDIを読み込む数字を1じゃなくしてみたりしました。
な、鳴りません。これだけ試しても駄目なんて・・・(;-;

ちなみに記述は、
sndload "midi2.mid",1,1
sndload "battle.mid",2,1
sndload "swi.wav",3,2
sndload "hit.wav",4,2
sndload "up.wav",5,0
sndload "break.wav",6,2
sndload "chir.wav",7,0
sndload "cymbal.wav",8,0
sndload "midi1.mid",9,0
(原文ママ)
と、最初の方でよみこんで、
通り道に
snd 1
等としるして鳴らすようにしてあります。

鳴ってた時期もあったんですがねえ・・・(滝汗)何故・・・
やっぱり、だめでしょうか?

[5725] Re^4: やはりMIDIファイルが鳴らないようです(ToT; 投稿者:sprocket 投稿日:01/07/26(木) 13:56 <URL>
> MIDI、やっぱり鳴りません・・・(汗)
> WAVは、相変わらず鳴ってます。

sndload でだめなら、mci を試してみてはどうです?

[5719] #includeの落とし穴(?) 投稿者:えび 投稿日:01/07/26(木) 11:49
こんにちは。
RPGを作っているのですが、
すごい気になったことがあります。
#includeのなかで、変数を代入して足して引いて・・・
とやったら、2になるはずが、-14692になってしまいました・・・・
#includeのなかで変数って使っちゃダメなんですか?

[5720] Re: #includeの落とし穴(?) 投稿者:sprocket 投稿日:01/07/26(木) 12:00 <URL>
> #includeのなかで、変数を代入して足して引いて・・・
> とやったら、2になるはずが、-14692になってしまいました・・・・
> #includeのなかで変数って使っちゃダメなんですか?

#include は関係ないと思います。HSPマニュアルの
「HSP2よくある質問Q&A (hsp2faq.htm) 」にヒントがあると思いますよ。

[5678] セーブとロードと#include 投稿者:daiki 投稿日:01/07/25(水) 16:42
どうも、daikiです。
二つ、書く事があります。
一つめ
セーブとロードですが、三つのスクリプトを#inclodeでつなげているので
ヘンな事になるんです。
1、セーブすると、セーブファイルができる。
2、セーブファイルの中には、どこまで進んだかが、記録される。
3、ロードすると、記録されたとこから、スプリクトが再開される。
と、言うかんじにしたいんですが、どうすればいいんでしょうか?
二つめ
#include命令は、二つはつかえないんですか?
1のスプリクトから、2へ、2から3へ、3から1へ、
とすると、ラベルが二つ定義されている。と、いわれます。
また、1から2、1から3。と、いうかんじにしても、
ラベルが二つ定義されている。と、いわれます。
これは、仕様ですか?

[5689] Re: セーブとロードと#include 投稿者:ANTARES 投稿日:01/07/25(水) 19:38 <URL>
> 1のスプリクトから、2へ、2から3へ、3から1へ、
「3から1へ」とはどういう意味でしょう?
もしかして#includeをgoto命令のようなものと考えています?

 例えば、
#include "file1.as"
と書いたとすると、そこにfile1.asの内容がコピー&ペースト
されるものと考えてください。

[5691] Re^2: セーブとロードと#include 投稿者:daiki 投稿日:01/07/25(水) 20:39
> もしかして#includeをgoto命令のようなものと考えています?
ズバリ、そうだとおもっていました。
ちがったんですねw
レス、ありがとうございます。
ところで”3から1へ”の意味ですけど、
スプリクト1番目が終了して、#includeでスクリプト2へいきます。
それで、2も終了して、#includeで3にいきます。
そして、3から1のスプリクトへ、#include命令でいかせようと
すると、ラベルが二重です。と、いわれる・・
そうゆうわけです。
3から1には、いかせられないんでしょうか?

[5695] Re^3: セーブとロードと#include 投稿者:桜井 投稿日:01/07/25(水) 21:37
> そして、3から1のスプリクトへ、#include命令でいかせようと
> すると、ラベルが二重です。と、いわれる・・
> そうゆうわけです。

#includeは、スクリプト同士をコンパイル時にくっつける命令です。
例えば下のようにスクリプトを書くと、
;---------------------------
;[script1.as]の内容
*label1
#include "script2.as"

;[script2.as]の内容
*label2
#include "script3.as"

;[script3.as]の内容
*label3
#include "script1.as"
;---------------------------

HSPはまずscript1.asとscript2.asをくっつけます。(見やすいようにタブを入れています。)
*label1
*label2

その後にscript3.asをくっつけます。
*label1
*label2
*label3

script3.asに#include "script1.as"があるので、
*label1
*label2
*label3
*label1
となります。ラベルが重複していますよね?

同じファイルを2度インクルードしなければエラーは起きないハズ
ですので、上のスクリプトの場合は script3.as にある
#include "script1.as"を削除すればエラーは起きなくなります。

> 3から1には、いかせられないんでしょうか?
goto *1のラベル でいかせられます。
#includeでなくgotoを使いましょう。

#長くなってすみません。m(_ _)m

[5692] Re^3: セーブとロードと#include;追加 投稿者:daiki 投稿日:01/07/25(水) 20:41
ラベルが二重にはなっていません。
そこは大丈夫です。

[5687] Re: セーブとロードと#include 投稿者:ANTARES 投稿日:01/07/25(水) 19:05 <URL>
>1、セーブすると、セーブファイルができる。
>2、セーブファイルの中には、どこまで進んだかが、記録される。
>3、ロードすると、記録されたとこから、スプリクトが再開される。
>と、言うかんじにしたいんですが、どうすればいいんでしょうか?
 同じ質問を二度しても、同じようなレスが返るだけです。
前のレスでわからなかったのなら、どこがわからなかったのかを
書きましょう。

>#include命令は、二つはつかえないんですか?
>1のスプリクトから、2へ、2から3へ、3から1へ、
>とすると、ラベルが二つ定義されている。と、いわれます。
 同じラベルを二度定義しているだけでは?
ファイルが違っても同じラベルを二度定義してはいけません。

[5683] Re: セーブとロードと#include 投稿者:ペーク 投稿日:01/07/25(水) 18:55 <URL>
> 1、セーブすると、セーブファイルができる。
> 2、セーブファイルの中には、どこまで進んだかが、記録される。
> 3、ロードすると、記録されたとこから、スプリクトが再開される。
> と、言うかんじにしたいんですが、どうすればいいんでしょうか?
exist "save.dat"
if strsize!-1:bload "save.dat",save
んでもってsaveの内容が「1」なら特定のラベルに飛ぶとか。

> #include命令は、二つはつかえないんですか?
> 1のスプリクトから、2へ、2から3へ、3から1へ、
> とすると、ラベルが二つ定義されている。と、いわれます。
> また、1から2、1から3。と、いうかんじにしても、
> ラベルが二つ定義されている。と、いわれます。
> これは、仕様ですか?
1→2→3→1というように行うと、無限ループになってしまいます。
1→2→3なら無限ループにはならないんですが、↑では無限ループになってしまいます。
無限ループが入ったため(一緒のソースを無限につなげたため)にラベルが二重に定義されているというエラーが出るのです。
1→2,1→3は、問題は無いはずです。
しかし、2か3に別のソースとつなげているのならエラーが発生します。
コレも無限ループだね。(◎_◎)*
たとえば3と2をつなげているのなら、
1→3→2
└→2  という感じにラベルが多重になってしまいます。2のラベルが二つ存在するという事になる・・・
なっていなくてエラーがでるのなら、EmEditですべてつなげて見やすくしてみてください。
二つ同じラベルはありませんか?

[5693] Re^2: セーブとロードと#include 投稿者:daiki 投稿日:01/07/25(水) 20:50
ベーグさん、レスありがとうございます。
あと、私は、#includeで、スプリクトとスプリクトをつなげてるんですが、
1のスクリプトから、2のスプリクトのラベルまで、goto命令やその他の
命令をつかっていくことはできるんでしょうか?
1のスプリクトから、2または3の、スプリクトのラベルまで、いけるのか?
と、言う意味です。教えてください。
あと、御誕生日おめでとうございます。
あなたのホームページの掲示板に書いておきました。

[5714] Re^3: セーブとロードと#include 投稿者:ペーク 投稿日:01/07/26(木) 06:16
> ベーグさん、レスありがとうございます。
ちょっとまて、ベーグって誰や!?

[5716] Re^4: セーブとロードと#include 投稿者:daiki 投稿日:01/07/26(木) 08:21
> ちょっとまて、ベーグって誰や!?
おはようございます。daikiです。
ペークでしたか、本当にごめんなさい。
あと、桜井さん、レスありがとうございます。

[5686] Re^2: セーブとロードと#include(修正) 投稿者:ペーク 投稿日:01/07/25(水) 19:00 <URL>
> しかし、2か3に別のソースとつなげているのならエラーが発生します。
> コレも無限ループだね。(◎_◎)*
2と3なら無限ループだけど2か3なら無限ループになりませんね。

[5609] EXEファイルについて 投稿者:オルカ 投稿日:01/07/24(火) 12:40
はじめまして。オルカです。
EXEファイルを作成しようとすると、

#ファイルがありません

というエラーメッセージが出ます。
はじめたばかりでよくわかりません。
教えてください。

[5659] Re: EXEファイルについて 投稿者:オルカ 投稿日:01/07/25(水) 10:57
オルカです。
皆さんのおかげでEXEファイルを作成できました!
K-Kさん、jirouさん、すももさん、yukiさん、pumpkinさん、
ペークさん、Akiさん、和氏之壁さん、
本当にありがとうございました!

[5632] Re: EXEファイルについて 投稿者:K-K 投稿日:01/07/24(火) 16:15 <URL>
> #ファイルがありません
> というエラーメッセージが出ます。

多分,フォルダにないファイルがpackfileに指定してあるのが原因です.
"#ファイルがありません"の後にファイル名がついていると思います….
それが無いファイルです.

また,packfileに長いファイル名か,スペースや全角文字を含むファイルを
指定すると同じようなことになったと思います.

一応,packfileをファイルごと消して作り直した方がいいと思います.

[5646] Re^2: EXEファイルについて 投稿者:pumpkin! 投稿日:01/07/25(水) 01:32
>オルカさん
> #ファイルがありません
> というエラーメッセージが出ます。

1) C:\hsp というフォルダを作ってください。
2) そこにasファイルと埋め込みたい素材ファイルを置いてください。
3) ファイル名は半角英字8文字(拡張子含め11字)以内にしてください。

以上で「C:\hsp」内のasファイルを開き、パックファイルし直すとたぶんうまくいきます。
うまくいった場合で理由を知りたいときは、うすあじさんの掲示板へ行って
「本家掲示板で営業活動」で過去ログ検索し、ヒットした投稿を読んでください。
ケースは違いますが同じことです。
http://www.est.hi-ho.ne.jp/cgi-bin/user/okuyama/hspbbs.cgi

> Aki さん
> *.as ファイルをデスクトップ上に置いて再度チャレンジしてみるとか…

デスクトップはパックファイル作業には好ましくないという話を聞いたことがあります。

[5651] Re^3: EXEファイルについて 投稿者:jirou 投稿日:01/07/25(水) 06:09
> デスクトップはパックファイル作業には好ましくないという話を聞いたことがあります。

windowsフォルダの下に有るので、その分深くなる。
半角カタカナが混じる(当然日本語Windowsのみですが)ので影響が有るかも。
と言うことですね。

# ちょっと見ない間に流れが速いううむ。

[5648] Re^3: (dpm ファイル形式)EXEファイルについて 投稿者:すもも 投稿日:01/07/25(水) 02:54 <URL>
> >オルカさん
> > #ファイルがありません
> > というエラーメッセージが出ます。
>
> 1) C:\hsp というフォルダを作ってください。
> 2) そこにasファイルと埋め込みたい素材ファイルを置いてください。
> 3) ファイル名は半角英字8文字(拡張子含め11字)以内にしてください。

Hspsdk.cpp によると、dpm ファイル形式では、格納される
1ファイルにつき 32 バイトの情報が割り当てられていて、

0x00 char[24] ファイル名
0x18 DWORD オフセット
0x1c DWORD ファイルサイズ

なので、内部で strcmp() を使うためファイルネームが 23 バイト以内、
そして内部で tolower() を使っているので半角文字のみを使う、
(つまり、半角文字で 23 文字以内)
というのが条件だったように思います。
#2.6 以降では改定されたかも知れません(^^;
packfile の条件はよくわかりません・・。

[5649] 補足です 投稿者:すもも 投稿日:01/07/25(水) 03:35 <URL>
> (つまり、半角文字で 23 文字以内)

これはフルパス(C:\hsp\nya.wav)ではなく、
ファイル名(nya.wav など)の制限です。

[5621] Re: EXEファイルについて 投稿者:yuki 投稿日:01/07/24(火) 14:01
どうも。yukiです。
> EXEファイルを作成しようとすると、
>
> #ファイルがありません
僕も昔(2ヶ月)やりました。

そのときに研究したのですが『EXEにできない…』は[hsprt]というファイルを間違えて捨ててしまった為に起こりました。

[hsprt]をもう1回置いて見て下さい。多分できますぜ。

[5623] Re^2: EXEファイルについて 投稿者:オルカ 投稿日:01/07/24(火) 14:22
> どうも。yukiです。
> > EXEファイルを作成しようとすると、
> >
> > #ファイルがありません
> 僕も昔(2ヶ月)やりました。

[hsprt]置いてみました。
でも同じエラーが出ます。
すみませんが、EXEファイル作成時に最低必要なファイルを
あげてもらえませんか。
DLL等は使っていません。お願いします。

[5624] Re^3: EXEファイルについて 投稿者:ペーク 投稿日:01/07/24(火) 14:37 <URL>
> [hsprt]置いてみました。
hsed2.exeと同じフォルダに置きましたか?(・・)?

[5625] Re^4: EXEファイルについて 投稿者:オルカ 投稿日:01/07/24(火) 14:51
> > [hsprt]置いてみました。
> hsed2.exeと同じフォルダに置きましたか?(・・)?

同じフォルダに置いたんですが…。

[5631] Re^5: EXEファイルについて 投稿者:Aki 投稿日:01/07/24(火) 16:04
> > > [hsprt]置いてみました。
> > hsed2.exeと同じフォルダに置きましたか?(・・)?
>
> 同じフォルダに置いたんですが…。

対象の *.as ファイルが階層の深いところにあるときに、そのテのエラーが出たと思いますが、そういうわけでもないでしょうか?
(どれくらい深いときに起きるかは忘れました。*.as ファイルをデスクトップ上に置いて再度チャレンジしてみるとか…)

[5611] Re: EXEファイルについて 投稿者:和氏之壁 投稿日:01/07/24(火) 12:58 <URL>
> #ファイルがありません
何のファイルが無いのか本文ではよくわかりませんが…自分なりの解釈で…

EXE化する前のようですが、
F5を押してソースから起動させた際には(標準エディタの場合)
エラーを起こさずに動きますか?
また、なんらかの原因でHSPの動作に必要なファイルが消えているのかもしれません。

EXE化した後にエラーが出る場合は
画像などのファイルを読みこませる処理がある場合 −> プログラムで指示した場所(通常は作成したEXEファイルと同じフォルダ)にファイルが存在する必要があります。
HSPプラグインを使用している場合 −> 作成したEXEファイルと同じフォルダに置いてやる必要があります。

あと、start.asファイルを作成し直した場合は、PACKFILE編集も最初からやり直した方がいいみたいですよ。

[5617] Re^2: EXEファイルについて 投稿者:オルカ 投稿日:01/07/24(火) 13:13
> EXE化する前のようですが、
> F5を押してソースから起動させた際には(標準エディタの場合)
> エラーを起こさずに動きますか?

F5を押したときにはエラーは起きません。
packfileもstart.asも最新のものを使っているのですが…。

[5619] Re^3: EXEファイルについて 投稿者:和氏之壁 投稿日:01/07/24(火) 13:26 <URL>
> F5を押したときにはエラーは起きません。
> packfileもstart.asも最新のものを使っているのですが…。

うーん、変ですね…
マニュアル類を省いて持ち運んでいた時があったのですが、
なにかのファイルをコピーし忘れたのか、「普通に動いてもEXE化できない」という事が自分にもありました。

もう1回、HSPフルセットを解凍してみて、
(恐らく関連付けさせていると思うので)解凍し直したhsed2.exeを実行してから、問題のソースを読みこませてEXE化してみてください。
それで試してみても駄目でしたら、ちょっとわからないですね。

[5698] chdirについて 投稿者:ALPHA 投稿日:01/07/25(水) 23:00
初歩的な質問ですみませんが、chdir命令で、一つ前のディレクトリー
に戻すには、どうすればいいですか?教えてください。

[5701] Re: chdirについて 投稿者:桜井 投稿日:01/07/25(水) 23:43
> 初歩的な質問ですみませんが、chdir命令で、一つ前のディレクトリー
> に戻すには、どうすればいいですか?教えてください。

適当な変数にカレントディレクトリ(curdir)を代入させて、
chdirでカレントディレクトリを移動しその後の処理を終わらせた後、
またchdirでカレントディレクトリを代入させた変数を指定して
カレントディレクトリを元に戻せばOKです。

それともこういう事でしょうか?
mes curdir
chdir "..\\"
;カレントディレクトリをひとつ上のディレクトリへ移動
mes curdir
stop

[5707] Re^2: chdirについて 投稿者:ALPHA 投稿日:01/07/26(木) 00:56
> > 初歩的な質問ですみませんが、chdir命令で、一つ前のディレクトリー
> > に戻すには、どうすればいいですか?教えてください。
>
> 適当な変数にカレントディレクトリ(curdir)を代入させて、
> chdirでカレントディレクトリを移動しその後の処理を終わらせた後、
> またchdirでカレントディレクトリを代入させた変数を指定して
> カレントディレクトリを元に戻せばOKです。
>
> それともこういう事でしょうか?
> mes curdir
> chdir "..\\"
> ;カレントディレクトリをひとつ上のディレクトリへ移動
> mes curdir
> stop
ありがとうございます。さっそく試してみます。

[5454] 暗号化した画像を EXE の外に持つ方法 投稿者:真絵 投稿日:01/07/18(水) 19:36 <URL>
みなさんは画像ファイルをどのように同梱してますか?
画像ファイルを暗号化する場合についてお聞かせください。

以下の要件があります。

■大量の画像ファイルを扱うため、差分ファイル作成を前提にして1つずつ EXE の外に持ちたい
■市販ソフト同様、暗号化といっても気休め程度で構わない

HSP2.6β4から PACKFILE および DPM ファイルの暗号化機能が付いたので
1つまたは2つにまとめて暗号化することは可能であることはわかっています。
複数の DPM ファイルを読み込めると解決しそうですが、それもサポート
されていません。

この時期だから簡単に流れちゃうかもしれませんが、よいアイディアが
あったら教えて下さい。

復号+読み込みの dll を書くしかないのでしょうか。。。

[5457] Re: 暗号化した画像を EXE の外に持つ方法 投稿者:sprocket 投稿日:01/07/18(水) 20:22 <URL>
> ■大量の画像ファイルを扱うため、差分ファイル作成を前提にして1つずつ EXE の外に持ちたい
> ■市販ソフト同様、暗号化といっても気休め程度で構わない

難しいですね。
フルカラーBMP並みのデータサイズでもよければVRAMデータをHDDから直接読み込むことも出来ます。
これは画像フォーマットではないので、容易に閲覧されることはないはずです。

BMP等を自動的にVRAMの生データとして吐き出すスクリプトを組んでそれをコンバータとして、
読み込み側はサブルーチンでVRAMデータの読み込みを処理させれば、画像を勝手に閲覧されたりは
しにくくなると思いますが...

screen 0,400,200,0 ; フルカラーモード
size=winx*winy*3
mref vram,66 ; VRAM

repeat 100
palcolor cnt
line cnt*4,cnt*50\winy ; 適当に模様を表示
loop

bsave "vram~.dat",vram,size ; 表示内容を生データで保存

wait 50
color:boxf

wait 50
bload "vram~.dat",vram,size ; 保存してデータをVRAMにロード
redraw 1

delete "vram~.dat" ; データファイル削除
stop

[5554] Re^2: 暗号化した画像を EXE の外に持つ方法 投稿者:真絵 投稿日:01/07/22(日) 19:17 <URL>
sprocket さん、ご返答ありがとうございます。

> > ■大量の画像ファイルを扱うため、差分ファイル作成を前提にして1つずつ EXE の外に持ちたい
> > ■市販ソフト同様、暗号化といっても気休め程度で構わない

> BMP等を自動的にVRAMの生データとして吐き出すスクリプトを組んでそれをコンバータとして、
> 読み込み側はサブルーチンでVRAMデータの読み込みを処理させれば、画像を勝手に閲覧されたりは
> しにくくなると思いますが...

要件も満たしているし、手間もかからないので、良い方法だと思いました。
他にお話がないということは、やはりみなさんは専用のプラグインを
使っているのでしょうかね。。。

[5571] Re^3: 256専用でなら・・・ 投稿者:fang 投稿日:01/07/23(月) 03:13 <URL>
256画像限定でもいいなら、こんなのはどうでしょうか?
とりあえず、展開方法だけサンプル付で紹介しておきますね。

http://hp.vector.co.jp/authors/VA020208/hsp_as/test.lzh

画像データは特殊なので、以下のような手順で作成しておいてください。
(今回のサンプル画像は手作業で作りました)

●隠蔽画像データの作成方法
1、画像からパレットデータのみ抜き出して、セーブしておく。
(ここで、暗号化をかけることもできます)
2、現在の画像のパレットの数値をオール0(真っ黒)にして、画像をセーブする。
3、2で作成した画像のお尻に、1で作成したパレットデータをくっつけ、セーブする。
4、完成。実際に必要なのは3のデータだけです、他は削除してもかまいません。

>他にお話がないということは、やはりみなさんは専用のプラグインを
>使っているのでしょうかね。。。
そうですね、自分でやるならそうしますよ。

[5706] Re^4: 256専用でなら・・・ 投稿者:真絵 投稿日:01/07/26(木) 00:49 <URL>
> 256画像限定でもいいなら、こんなのはどうでしょうか?
> http://hp.vector.co.jp/authors/VA020208/hsp_as/test.lzh

> ●隠蔽画像データの作成方法
> 1、画像からパレットデータのみ抜き出して、セーブしておく。
> (ここで、暗号化をかけることもできます)
> 2、現在の画像のパレットの数値をオール0(真っ黒)にして、画像をセーブする。

パレットを別管理する(何だったらプログラムに埋め込んでしまう)のも
お手軽で効率がよいです。ありがとうございます。

フルカラーの場合が悩ましいけど、今までの案との合わせ技で、
処理量と相談しながら論理圧縮でもかけてみようかなと思います。

[5676] 配列変数 投稿者:初心者 投稿日:01/07/25(水) 16:18
文字型配列変数をINT命令をつかって数値型にしようとしても
できません、仕様なのですか?

[5690] Re: 配列変数 投稿者:jirou 投稿日:01/07/25(水) 20:13
> 文字型配列変数をINT命令をつかって数値型にしようとしても
> できません、仕様なのですか?

同じ名前の配列型変数を、文字型と数値型の両方で使おうとしてるわけですよね。
変数の定義時点で矛盾が生じると思いますが。

また、ヘルプを読むと

|dim,sdim命令はスクリプト内のどこででも定義・再定義することが可能です。
|また、配列変数を作成すると内容はすべて0にクリアされます。


仕様と言えば仕様でしょうが・・・。

# 初心者? 本名が?
# HSP の? プログラムの?
# 本文中に説明で書くのは別ですが、名前は「オリジナル」な物を考えましょうよ。

[5673] 配列変数を利用しての文字表示 投稿者:とーてる 投稿日:01/07/25(水) 16:13
配列変数を利用して、
mes e.0に「あいうえお」という文字を表示させたいのですが
表示が出来ません。配列変数を使わなければ表示できるのですが..
どなたか、配列変数を使ってどのように表示すればよいのか
教えてください!おねがいします。


e.0="あいうえお"
mes e.0
stop

[5675] Re: 配列変数を利用しての文字表示 投稿者:sprocket 投稿日:01/07/25(水) 16:17 <URL>
> mes e.0に「あいうえお」という文字を表示させたいのですが
> 表示が出来ません。配列変数を使わなければ表示できるのですが..

文字列型配列変数を扱うためには、先に sdim をしておく必要があります。

sdim e,256,1

e.0="あいうえお"
mes e.0
stop

[5642] 小数 投稿者:Zwei 投稿日:01/07/24(火) 23:14
初めまして、Zweiと申します。以後よろしく

早速ですが、質問です。
小数を扱うにはどうすればいいのでしょうか。
いつも計算結果が『0』になってしまってどうしたものかと考えてます。

どなたかご教授お願いします

[5672] Re: 小数 投稿者:Mt_Daimonji 投稿日:01/07/25(水) 16:09 <URL>
初めまして
>
> 早速ですが、質問です。
> 小数を扱うにはどうすればいいのでしょうか。
> いつも計算結果が『0』になってしまってどうしたものかと考えてます。
>
> どなたかご教授お願いします

浮動小数を扱うDLLと計算式を書けば自動的にこのdllを呼び出すコードに変換するプログラムを作りました。参考にして下さい。
http://homepage1.nifty.com/DAIMONJI/

[5643] Re: 小数 投稿者:宿六 投稿日:01/07/25(水) 00:15
> 小数を扱うにはどうすればいいのでしょうか。

この返事を見る頃には気付いているかもしれませんが・・・デフォルトでは使えないっすよ。(ver2.5)
2.55β、もしくはdllの使用によって扱うことが可能になりますけど・・・。

最近、初心者増えまくりなんですね。せめてマニュアルに一通り目を通していただければ、と。

[5653] Re^2: 小数 投稿者:jirou 投稿日:01/07/25(水) 06:19
> > 小数を扱うにはどうすればいいのでしょうか。

ベータ版で対応されているので意味が無くなってきましたが・・・
制度が必要で無ければ、10000倍とかしておいて表示時に「割る」と「余り」で少数表示と言うのも有りました

> 最近、初心者増えまくりなんですね。せめてマニュアルに一通り目を通していただければ、と。
アーンド、「過去ログを読んでみる」「ワード検索」で検索してみる
を活用すると、同じ様な質問をされている方が見つかったりしま〜す。