トップページgamedev
987コメント370KB

HSP - Hot Soup Processor [14]

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。2006/12/09(土) 22:35:08ID:E0eCgjhQ
       (  ,,,)
        .(  ,,)      スクリプト言語 HotSoupProcessor について
        ( ,,).        ゲーム製作の視点から、また〜りと語り合うスレ。
     , -──- 、
    (,;::-──-; )-、
     .|` ̄ ̄ ̄´;;|ヽ l   * 質問する前に検索してみる事
     l;    :::;;;l-' /   * ヲチ、ネタなどはスレ違い
    ,-ヽ───.'-、´..   * 歴代スレ、関連サイトは >>2-4 あたり
    ヽ ──── '

  ONION software (本家)
   http://www.onionsoft.net/
0891名前は開発中のものです。2007/05/17(木) 21:46:59ID:lJm49cl1
#define REG_OPTION_NON_VOLATILE 0x00000000 //情報はディスクファイルに保存され、システムを再起動時しても情報は失われません。
#define KEY_WRITE 0x00020006
#define REG_SZ 0x00000001
#defcfunc WriteReg int _key, var _subkey, var _data
hkey = 0 //↓規定値に書き込む
if RegCreateKey( _key, varptr(_subkey), 0, 0, REG_OPTION_NON_VOLATILE, KEY_WRITE, 0, varptr(hkey), 0) == 0 {
if RegSetValue( hkey, 0, 0, REG_SZ, varptr(_data), strlen(_data)+1 ) == 0 {
RegCloseKey hkey
return 0 //書き込みに成功
}
else {
RegCloseKey hkey
return -2 //書き込みに失敗
}
}
else {
RegCloseKey hkey
return -1 //キーのオープンまたは作成に失敗
}
#defcfunc DeleteReg int _hkey, var _subkey
return RegDeleteKey( _hkey, varptr(_subkey) )
#global
#define HKEY_CLASSES_ROOT 0x80000000

前に作ったやつをそのまま。参考に
0892名前は開発中のものです。2007/05/17(木) 23:11:30ID:ECrUiSe6
>>890 >>891
ウォォッ!ありがとう!
激しく参考にさせて頂きます。
('A`)ガンバルゼ
0893名前は開発中のものです。2007/05/18(金) 03:44:38ID:fYCuLcq6
うを、まじかっ
0894名前は開発中のものです。2007/05/18(金) 19:34:18ID:MlFuc+iH
         -―- 、__,
        '叨¨ヽ   `ー-、
         ` ー    /叨¨)
             ヽ,
         `ヽ.___´,     <うを、まぶしっ
            `ニ´


       :::. :      :  ..:::
        :::. :      .  .:::
        ::.. :     :  ..::
         :::.. :.   .:  .::
         :::...  ...  ...::
          ::.....  ...::::
          ∧ ::...::: /
             { ヽ| |ノノ
          _ト、Lj/}
       r<  { | |7ヽ、
       {  ,_ェェ.L⊥.__{ノ、
       j         `}ー'
         }   ――ー-{
         ヽ  --―‐r'
         \_ __. イ
          `ー┴ ´


0895名前は開発中のものです。2007/05/21(月) 15:10:11ID:PlwO7Z3Z
質問よろしいでしょうか? STGの、自機を狙ってくる弾を作りたいのですが
以下の方法だと、角度の精度が、大雑把と言うか、角度によっては弾が当たらない場合もあるのですが
どこがいけないのでしょうか。よろしくお願いします。(HSP3用です)

mx = 320 : my = 320 : ex = 320 : ey = 150 ; 敵味方座標
tx = 0:ty = 0 ; 弾座標
*main
e++ : if e = 60 : tx = ex : ty = ey : gosub *tama_houkou : e = 0
gosub *tama_move
stick k,15
if k&1 : mx-
if k&4 : mx+
if k&2 : my-
if k&8 : my+
redraw 0 : color : boxf
color ,$ff : pos mx,my : mes "▲" ; 自機
color $ff : pos ex,ey : mes "▼" ; 敵
pos tx,ty : mes "●"; 弾
redraw 1 : await 0 : goto *main
*tama_houkou ; 自機の方向を得る
a = ex - mx : b = ey - my
c = atan (a,b)
si = int(sin(c)*4) : co = int(cos(c)*4)
return
*tama_move ; 弾移動
tx+=-si : ty+=-co
return
0896名前は開発中のものです。2007/05/21(月) 15:18:49ID:L/tljOSY
intしてるからだろ
0897名前は開発中のものです。2007/05/21(月) 15:46:33ID:6fZCE0Or
>>895
0.1*4と0.2*4を整数にしたら幾つだ?
0898名前は開発中のものです。2007/05/21(月) 16:36:11ID:uOzhhUKS
整数と実数の扱いがどうもよく分からんので
今だに <<8 だの >>8 してるわモレ('A`)
08998952007/05/21(月) 16:36:22ID:PlwO7Z3Z
>>896さん、897さん
お早い回答、有難うございます。上手くいきました

intを外す事も試してみましたが、結果は同じで、何故だろうと思いましたが
上の場合、敵味方の座標も、小数型にしておかなければいけなかったのですね
先に下の文を参考に作ったので、気付きませんでした。

#define DtR 0.017453293 ; 度 -> ラジアン
mx = 320 : my = 240
*main
redraw 0
color : boxf
color ,$ff : pos mx,my : mes "▲"; 自機
color $ff : pos ex,ey : mes "●" ; バリア
redraw 1
a++ : if a = 360 : a = 0
rok = DtR*a
si = int(sin(rok)*100) : co = int(cos(rok)*100)
ex = mx+si : ey = my+co
await 0 : goto *main
0900名前は開発中のものです。2007/05/21(月) 19:57:48ID:4L3YMMMs
質問させていただきます
アクションゲームを作っているのですが
「→,↓,←,」のキーを押し続けると
「-->スタック領域のオーバーフローです」
のエラーが出ます
「移動、ジャンプ、ダッシュ、座り」
等の行動まで出来るようになった段階では問題なかったのですが
「攻撃」を加えた後でエラーが出るようになりました
「攻撃」関係の部分を全て消しても同じエラーが出ます
「攻撃」を加える前は同じ操作をしても
エラーは出なかったはずですが勘違いかもしれません

自分で調べられる範囲で調べてみたのですが
サブルーチンと式が間違っているらしいことはわかったのですが
指摘されている部分を見ても具体的に何が間違っているのかわかりません
( if zky=1 and atacktime=0 :atacktime+=1)
上が指摘された部分なのですが
根本的に、エラー「スタック領域のオーバーフロー」が何故出るのか解りません
長文かつ基本的な質問をしているのかもしれないのですが
もし解る方がいらっしゃいましたら教えてもらえないでしょうか
他に書くべき事がある場合も指摘してもらえると助かります
よろしくお願いします
0901名前は開発中のものです。2007/05/21(月) 20:27:48ID:z34WPkiM
>>900
大抵サブルーチンからgotoとかしてメインに戻ってたり
ループからブレイク無しでループの外に行ってたり
新規命令やサブルーチンを同じ新規命令やサブルーチン無限に呼んでたり
とかだな

>指摘されている部分を見ても具体的に何が間違っているのかわかりません
エラーで出る行番号は目安ぐらいにしかならない(特に3.0aは)
後、エラーエログも正確じゃない(特に3.0aは)
0902名前は開発中のものです。2007/05/21(月) 20:30:21ID:z34WPkiM
新規命令やサブルーチン内から同じ新規命令やサブルーチンを無限に呼んでたり

だな・・・
0903名前は開発中のものです。2007/05/21(月) 20:46:15ID:4L3YMMMs
>>901

ありがとうございます思い当たる部分もあるのでチョットいじってみます

似たような質問で申し訳ないのですが
例えば
*sub ;(サブルーチン)
if (〜) :goto *nuke
(サブルーチン命令)
*nuke
return
の様にサブルーチン内で gotoを使って命令を飛ばすのは
何か問題があるのでしょうか?
0904名前は開発中のものです。2007/05/21(月) 21:30:46ID:z34WPkiM
>>903
サブルーチンネストの限界(128?)まで行かなければいいので
gotoでジャンプすること自体は問題ない、901でもメインって言ってるだろ?
(普通メイン内にreturnなんて置かないじゃん)

ネストってーのは
gosub *A
stop
*A
gosub *B
return
*B
return

ってなってた場合*Aに飛んだときにネスト1になって
更に*Bに飛ぶとネスト2になる、returnするとネスト1になって
gosub *Bの次の行に飛ぶ

これは、gosub で飛んだ物は戻る場所を保存してるからで
だからreturnするだけで飛んだ逆順にジャンプ元に戻ることが出来る
でも戻り先を保存できる個数には制限があってそれが128個

>何か問題があるのでしょうか?
問題があるとすれば、読みにくくなる、バグの元になる
(gotoで飛んでreturnしてたら自分でも訳分からなくならない?)
特別な理由が無ければサブルーチン内で決着を付けた方が良いと思う
*sub ;(サブルーチン)
if (〜) {gosub *nuke :return}
とか
0905名前は開発中のものです。2007/05/21(月) 21:54:57ID:u6L0+dFc
サブルーチンなんて使わずに全部関数で処理すれば問題ない
0906名前は開発中のものです。2007/05/21(月) 22:14:17ID:z34WPkiM
>>905
おいおい
そう言う問題じゃねーだろ
新規関数内から同じ関数呼ぶのもネストの問題は解消できないのにw
分かった上で使わないと結局後で同じような問題で詰まるよ
0907名前は開発中のものです。2007/05/21(月) 22:58:11ID:TYL2/hnH
Dr.デバッグ「構造化プログラミングですぞ」
0908名前は開発中のものです。2007/05/21(月) 23:01:13ID:MgK7IWd+
オブジェクトHSPとか出たらいいのにね。
09099002007/05/22(火) 02:31:24ID:jdPp968J
>>904
返事遅くなってすいません
解りやすい説明ありがとうございます
コレで問題可決できそうです
本当にありがとうございました
0910名前は開発中のものです。2007/05/22(火) 03:25:14ID:w8FHk1Gb
>>903
>if (〜) :goto *nuke
>(サブルーチン命令)
>*nuke
>return
の*nuke〜return間に何も無いなら
飛ぶ必要がないぞ

if (〜) :return
(サブルーチン命令)
return

これで事足りる
途中で抜ける方に return -1
最後まで行く方に return 0
ってやっておくと

gosub *sub
if stat<0 :mes "エラー"

とか出来る

後、サブルーチン内にデータ渡して処理したくなったら
マクロ、新規命令、新規関数、モジュールとか覚えれば色々便利
0911HSP32007/05/22(火) 12:06:38ID:8kCRlLEp
かなり初歩的な質問かもしれませんが、

背景画像をずっと表示しっぱなしで、
bufferでID2ウインドウにキャラ画像読み込んで
そのキャラを移動させた時に、boxfなどで塗りつぶすともちろん背景消えますよね?

でも塗りつぶさないと一度表示されたキャラが移動しても消えないので
移動すればするほどペンでなぞったみたいに繋がります・・・。

まとめますと
・背景は表示しっぱなし。
・キャラを表示、stickなどで動かせる。
・背景だけ消さずにキャラを一度消して、移動先で再描写。

こういう場合どうすればよいでしょうか?・・・。
boxfで一度消すやりかたで、背景なしだったら出来ます。
0912名前は開発中のものです。2007/05/22(火) 12:14:55ID:2Jc5HiBL
>>911
boxfの代わりに、背景をコピーしる。
つまり、背景画像用のスクリーンバッファか領域が必要。
0913HSP32007/05/22(火) 12:32:02ID:8kCRlLEp
>>912
さっそくありがとうございます!
まだいまいち頭では解っていませんが、
ヒントになりました!

背景をコピーする考えでやってみまう!
0914名前は開発中のものです。2007/05/22(火) 13:17:28ID:w8FHk1Gb
>>913
buffer 1
picload dir_exe+"\\sample\\demo\\sky_bg.jpg"
buffer 2
picload dir_exe+"\\sample\\game\\shootchr.bmp"
gsel 0

repeat
redraw 0 ;redraw命令はは必ず表示ウィンドウが操作先になってる必要がある
gmode 0
pos 0,0 :gcopy 1,0,0,640,480
stick k,$f
if k&1{x-2}
if k&4{x+2}
if k&2{y-2}
if k&8{y+2}
gmode 2
pos x,y :gcopy 2,0,0,128,64
redraw 1
await 10
loop

ウィンドウ上に表示した物を動かす場合は
基本的に背景で使ってる画像で上書きする

殆んどのフレームで動きがあるよな物なら毎フレーム
背景コピー>キャラコピー と自分で処理するのが普通
(ツクールとか使ってた人が良く戸惑う・・・)
0915HSP32007/05/22(火) 13:31:10ID:8kCRlLEp
>>914
めちゃくちゃ親切にどうもです><

もろ解りでした!
本当、根本的な捕らえ方が違ってたみたい・・・
頭が柔らかくなりました。ありがとうございました!
0916HSP32007/05/22(火) 17:19:48ID:8kCRlLEp
911で質問した者ですが、お陰様で画面の表示方法は一通り解ったんですが
また新たに疑問が出来たので、お暇な方が居れば教えてください

キャラを操作する時の"初動動作スピード"の事なんですが、
例えば→にキャラを進める場合
キー押し始めはゆっくりで、すぐさま最高スピードになって、
キーを放してもすぐには止まらないようにしたいのですが
どうすればいいんでしょうか・・・?

キャラの表示は>>914で教えてもらった感じにしてるのですが
試行錯誤してもよくわかりません、どうか教えてくださいませ・・・。
0917名前は開発中のものです。2007/05/22(火) 17:24:25ID:rss6mlVc
ヒント >>538-545
0918HSP32007/05/22(火) 17:28:23ID:8kCRlLEp
>>917
ごめんなさい、よく読んでなかった・・・
HSPが出来ないのもこういう性格だからですね・・・

気をつけます!そして、ありがとうございました!
0919名前は開発中のものです。2007/05/22(火) 20:35:53ID:8jBGKr9t
ホントに”試行”錯誤したのかと
0920名前は開発中のものです。2007/05/22(火) 22:57:11ID:BQr1kKD8
思考錯誤してんじゃね?
0921名前は開発中のものです。2007/05/23(水) 00:49:49ID:hC7KHRHo
>>916
x方向への移動量をdxとする。最高スピードをmaxdxとする。例えば、
・→が押されているなら、dx=dx+1。ただしdx>=maxdxなら増やさない。
・→が押されていないなら、dx=dx-1。ただしdx=0なら減らさない。
もちろんx方向への移動はx=x+dxだ。

>HSPが出来ないのもこういう性格だからですね・・・
うむ。素直ないい子じゃないか。ちんこをうpしてくれたらもっと手取り足取り教えてやって
もいいぞ。
0922名前は開発中のものです。2007/05/23(水) 03:43:11ID:IDKpuKz2
>>930
ちょwwwそれどう見ても40代オサンのちんpだろwww
0923名前は開発中のものです。2007/05/23(水) 08:54:07ID:Rf4xQAdP
ちょwwwどこの誤爆だwww
0924HSP32007/05/23(水) 09:32:21ID:/1RWwi8L
だめだ;;いくらやってもまじわかんない;;
誰か 914のソースで
→と←を押した時だけ916で言った通りにして貰えないだろうか?・・・

すごく優しく教えてもらってるのに、全然わかんない・・・
これだから単細胞は・・・

>>921
ありがとう!言ってる意味はすごく分かったけど、
多分こちらの捕らえ方が悪いんだろうけど、その感じでやってみると
maxdxに到達した時にそれ以上進まない・・・なんでだ・・・
むしろ、dx+1がmaxdxの数値(たとえば5なら)5までただ1を足すだけで
だんだんと加速する感じが出ないッス・・・

説明すらムズイ;;あと包茎なんで勘弁して下さい;;
0925名前は開発中のものです。2007/05/23(水) 12:40:32ID:8t6+q2xE
>>924

x = 320.0 : vx = 0.0
y = 240.0 : vy = 0.0
repeat:redraw 0

getkey k,37:if k : vx -= 5.0
getkey k,39:if k : vx += 5.0
getkey k,38:if k : vy -= 5.0
getkey k,40:if k : vy += 5.0
x = x+vx
y = y+vy
if x < 0.0 : x = 640.0
if x > 640.0 : x = 0.0
if y < 0.0 : y = 480.0
if y > 480.0 : y = 0.0

color 255,255,255:boxf
color 0,0,0:pos x,y:mes "★"
redraw 1:wait 10:loop

最大速度は自分でやってみそ
0926名前は開発中のものです。2007/05/23(水) 12:46:17ID:y5iF8WqO
;包茎に免じて。 >914の「gsel 0」以降を差し替え
dim dx,16:dim dy,16:repeat 16:dx(cnt)=((cnt&4)>0)-((cnt&1)>0):dy(cnt)=((cnt&8)>0)-((cnt&2)>0):loop
repeat
redraw 0
gmode 0
pos 0,0 :gcopy 1,0,0,640,480
stick k,$f:k&=$f
if dx(k) { xz+=dx(k) } else { xz -= limit( ((xz>0)-(xz<0)) , -10,10 ) }
x+=xz:if ( (x>640)|(x<-128) ) { x-=xz:xz=-xz }
y+=dy(k)*2
gmode 2
pos x,y :gcopy 2,0,0,128,64
redraw 1
await 10
loop
0927名前は開発中のものです。2007/05/23(水) 19:29:55ID:3+8L0L1n
包茎には優しいな
0928名前は開発中のものです。2007/05/23(水) 20:51:34ID:y5iF8WqO
あー、いま見たら間違ってるな。スマン >包茎

if dx(k) { xz+=dx(k) } else { xz -= limit( ((xz>0)-(xz<0)) , -10,10 ) }
のとこ、

if dx(k) { xz+=dx(k) } else { xz-= ((xz>0)-(xz<0)) }
xz = limit( xz , -20,20 )
とでもしてやっておくれ。
0929名前は開発中のものです。2007/05/23(水) 23:14:55ID:2ubFRilY
>>924
maxdxに到達した時にそれ以上進まない・・・なんでだ・・・
pos x+dx.y とかやってないか?w
//←→だけ加減速度付きサンプル
buffer 1
picload dir_exe+"\\sample\\demo\\sky_bg.jpg"
buffer 2
picload dir_exe+"\\sample\\game\\shootchr.bmp"
gsel 0
x=0.0:y=0.0:dx=0.0:dy=4.0:maxdx=10.0
repeat:redraw 2
gmode 0:pos 0,0 :gcopy 1,0,0,640,480
color 255,255,255
mes "x="+x+" dx="+dx:mes "y="+y
stick k,$f
if (k&5)=0 {;左右キー入力が無ければ減速
if int(dx)!0 {;dxが1未満ならdxを0に近づける
if dx>0.0 {dx=limitf(dx-0.3,0,maxdx)}else{dx=limitf(dx+0.3,-maxdx,0)}
}else{dx=0.0}
}else{
if k&1 {dx=limitf(dx-0.5,-maxdx,maxdx)}else:if k&4 {dx=limitf(dx+0.5,-maxdx,maxdx)}
}
if k&2 {y-dy}else:if k&8{y+dy}
x=limitf(x+dx,0,512) ;x+dxを0.0〜512.0に収める (実数型用)
y=limitf(y,0,416)
gmode 2:pos x,y :gcopy 2,0,0,128,64
redraw 1:await 10:loop
0930名前は開発中のものです。2007/05/23(水) 23:17:43ID:2ubFRilY
あら、一行目に > やるの忘れた・・・
まぁいっかw
0931名前は開発中のものです。2007/05/23(水) 23:44:29ID:8t6+q2xE
まぁ、普通に空気抵抗みたいな力でおk
0932HSP32007/05/25(金) 06:01:06ID:AURAMUwd
>>925-931
返事が遅れまくりで申し訳ないです・。・
みなさんのを試しに実行してみたら
すごく僕の望んでたモノになったとです!
これらを改良してみますね。ありがとうございました

アニメーション表示まで出来て
後は敵とマップに関してが残った大きな仕事になりました。
みなさんのお陰です\(^o^)/
09339292007/05/25(金) 09:41:51ID:xVqJ1N/T
コメント間違ってた
>if int(dx)!0 {;dxが1未満ならdxを0に近づける
0未満を0.0に
0以外ならdxを0に近づけるだな・・・
0934名前は開発中のものです。2007/05/25(金) 14:22:30ID:AURAMUwd
質問ばかりで申し訳ないですが、
MP3などのオーディオデータを一時停止する事って出来ますか?

あと
マリオの様なアクションゲームのマップに関する概念を教えて欲しいです・・・
0935名前は開発中のものです。2007/05/25(金) 15:26:03ID:dQj34Ug0
>>934
>MP3などのオーディオデータを一時停止する事って出来ますか?
「HSP DirectSound Extension」とか、プラグイン使えば簡単。

>マリオの様なアクションゲームのマップに関する概念を教えて欲しいです・・・
基本は、よくある迷路ゲームとかと同じ。
画面を40x30(数字は何でも良いけど)の格子に分けて、それぞれの格子に属性を割り振る。
0だと何も無し、1だとブロックで行けない、2だと壊せるブロック、とかな。
二次元配列にすると管理が簡単。
後は自キャラの現在位置と、自キャラが次に進もうとしている格子の座標を比べた上で、
その格子の属性が0なら進める、1だと進めないというような処理を入れる。
その他、重力引っ張りとかジャンプとか、自キャラの動きに関する処理を入れれば、
大分マリオっぽくなるだろう。

一度テトリスとか迷路ゲームみたいな、単純な奴作って練習してみるのもお薦め。
0936名前は開発中のものです。2007/05/25(金) 15:50:00ID:bkZ5cjdX
おまえの次のセリフは
『マップ表示の仕方を教えてくださいこの野郎!』という!

\sample\game\mapmove1.hsp
\sample\game\mapmove2.hsp
0937名前は開発中のものです。2007/05/25(金) 16:28:28ID:Om3k+kQQ
初歩的な質問ですみません。
mmloadで音声を読み込んでおいてmmplayで鳴らしているんですが
複数のwavを同時に重なった状態で鳴らすことってできますか?
後発の音が前発の音を消してしまうのでとぎれとぎれなかんじになってしまう…
0938名前は開発中のものです。2007/05/25(金) 16:34:58ID:KndwYBJW
ttp://taillove.jp/mia/
のHSP DirectSoundExtension使え
0939名前は開発中のものです。2007/05/25(金) 20:26:10ID:JjZ3Sg5p
優しい奴ばっかりだな。
何があった?
0940名前は開発中のものです。2007/05/25(金) 22:10:51ID:AURAMUwd
>>935
すごく解り易かったです!
色々調べてたけど説明が長いだけで、解り難かったんです。
そういう風に簡潔にまとめてくれるとすごく助かります、ありがとうございました!

>>936
それは僕(934)に対しての言葉ですか??
そうならそのサンプル(?)に表示の秘密が隠れてるんですね!
じっくり吟味してきます!ありがとうございました!
0941名前は開発中のものです。2007/05/25(金) 23:18:55ID:AURAMUwd
(´・ω・`)
0942名前は開発中のものです。2007/05/26(土) 00:09:57ID:6s2TcZXX
手取り足取りソースまでもらっちゃって嬉しいのは分かるが
ちゃんと理解してるか。成長しないぜ…?
0943名前は開発中のものです。2007/05/26(土) 00:13:36ID:U/6PjzIv
>>942
そうそう、ソースのをそのままはめ込むのはやらない様にしています。
一度新規で教えてもらったソースを実行して、
一個ずつの命令をちゃんと勉強してます。

今回は初めてだから何も解らないけど、
次回作とか作る時に理解してないと困るの自分ですからね

って返信速っ
0944名前は開発中のものです。2007/05/26(土) 13:33:05ID:QgYK0MmP
14歳からのHSPプログラミングを見ながらシューティングゲームを作っています。
スペースキーを押すと弾が発射されるようにしたいのですが、何故かカーソルキー←で弾がはっしゃれるようになってしまいました。
何故でしょうか?以下がそのプログラムです。

randomize
buffer 1,,,1
picload "flogs.bmp"

screen 0,480,320,1

MX=240 ;自分のx座標を入れる変数
MY=160 ;自分のy座標を入れる変数
SN=0
SX=0
SY=0
gmode 2
0945名前は開発中のものです。2007/05/26(土) 13:36:51ID:QgYK0MmP
;/■/■/■メインループ/■/■/■
*LOOP1
redraw 0 ;ここから画面の書き換えを一時停止
color 0,96,0 :boxf 0,0,479,319 ;背景を深い緑で塗りつぶす

stick ky,15
if KY&1 :MX=MX-8 :if MX<0 :MX=0 ;左移動
if KY&4 :MX=MX+8 :if MX>448 :MX=448 ;右移動
if KY&2 :MY=MY-8 :if MY<0 :MY=0 ;上移動
if KY&8 :MY=MY+8 :if MY>288 :MY=288 ;下移動
gosub *shot

pos MX,MY
gcopy 1,0,0,32,32

redraw 1 ;ここから画面の書き換えを再開
await 30
goto *LOOP1

;/■/■/■弾の移動ルーチン/■/■/■
*shot
if (KY&16=16) and (SN=0) {
SN=1
SX=MX+24
SY=MY+12
}
if SN=1 {
SX=SX+12
color 0,255,255 :boxf SX,SY,SX+12,SY+4
if SX>474 :SN=0
}
return
0946名前は開発中のものです。2007/05/26(土) 13:58:02ID:wRE3vjEY
stick ky,15
ってあるけど、kyをKYに直せばいいんじゃないかな?
軽く見ただけなんだが、他は合ってるような気がする。
0947名前は開発中のものです。2007/05/26(土) 14:04:21ID:6s2TcZXX
優先順位のせい
 & よりも = が先になる

    *,/            4 高い
    +,-            3
    <<,>>          2
    比較演算子     1
    &,|,^          0 低い
0948名前は開発中のものです。2007/05/26(土) 14:08:18ID:QgYK0MmP
>>947
つまり、どのように直せばいいのでしょうか?
0949名前は開発中のものです。2007/05/26(土) 14:09:29ID:6s2TcZXX
上げちゃった スマソ

>>943
包茎だけど初心者の鑑だな('A`)
0950名前は開発中のものです。2007/05/26(土) 14:10:33ID:6s2TcZXX
>>948
ここ。

if (KY&16=16) and (SN=0) { 
0951名前は開発中のものです。2007/05/26(土) 14:15:26ID:QgYK0MmP
>>950
(KY&16=16)ここを直せばいいんですよね?
どのように直せばいいのか分かりませんが・・・。
優先順位が変わってしまうと、何故カーソルキー←で反応してしまうようになるのでしょうか?
0952名前は開発中のものです。2007/05/26(土) 14:27:17ID:QgYK0MmP
ちなみに
if (KY=16) and (SN=0) {
だとスペースキーで弾を発射してくれますが、移動キーと一緒に押した場合だと発射されなくて、ゲームとしてはおかしいですよね。
それ以外に方法があるのでしょうか?
0953名前は開発中のものです。2007/05/26(土) 14:32:52ID:6s2TcZXX
(KY&16=16) これは…
 & よりも = の優先順位が高いのでまず、 16=16 が計算される。結果は 1

  ↓    すると
 (KY&1)   こうなっちゃう


計算の優先順位を変えたいならカッコを使う。基本中の基本ダヨ

((KY&16)=16)
0954名前は開発中のものです。2007/05/26(土) 15:57:39ID:QgYK0MmP
>>953
なるほど!よく分かりました。
ありがとうございました。
0955名前は開発中のものです。2007/05/26(土) 23:57:15ID:CN+4bzjn
exist "test.aaa"
fsize = strsize
if fsize == -1 : end
bload "test.aaa",file,fsize,$30
repeat
 binary = peek(file,cnt)
 pos x,y
 mes ""+binary+"\t"+cnt
 y += 20
 if y >= 480 { x += 72 : y = 20 }
 await 0
loop
stop

ってやったときに、何故か5ループ目で「binary = peek(file,cnt)」の部分に「パラメータの値が異常です」ってエラーがでる
バイナリファイルが悪い訳ではなさそうなんだけど…
どうか原因を探ってエロイ人
0956名前は開発中のものです。2007/05/27(日) 00:01:35ID:6s2TcZXX
bloadの説明を100万回読め
0957名前は開発中のものです。2007/05/27(日) 00:52:45ID:RRXGBjPE
>>955
noteloadと違ってバッファの自動拡張はされない
sdim file,fsize とかdim file,fsize/4+1 とかやる必要がある

>>956
あのヘルプの書き方は分かり難いかもしれない・・・
(noteload使った後だと余計に)
0958名前は開発中のものです。2007/05/27(日) 01:12:58ID:GZUysg8b
bt大量修正ktkr

β10もうすぐリリース?
0959名前は開発中のものです。2007/05/27(日) 02:01:26ID:f0uFg6Lk
btって何
0960名前は開発中のものです。2007/05/27(日) 02:46:07ID:RRXGBjPE
バグトラッキング
バグ報告専用の掲示板みたいなもの
β版落とせるページにリンクあるだろ
0961名前は開発中のものです。2007/05/27(日) 02:58:45ID:f0uFg6Lk
おk理解した
0962名前は開発中のものです。2007/05/27(日) 20:48:39ID:XoiLMAio
(・∀・)
0963名前は開発中のものです。2007/05/27(日) 20:53:01ID:yI8gofKQ
>>956
>>957
d!
0964名前は開発中のものです。2007/05/27(日) 23:30:02ID:5Mnla165
>>938
ありがd
0965名前は開発中のものです。2007/05/28(月) 23:49:35ID:Yymrb+yR
dxdoundex.hpiが
ID33v2タグに対応していない
ということが解るのに
一日かかった。

古いプラグインとかがめちゃくちゃ放置で混在しまくっててわかりずらいよ
0966名前は開発中のものです。2007/05/28(月) 23:50:58ID:Yymrb+yR
dsoundexだた
0967名前は開発中のものです。2007/05/28(月) 23:58:42ID:7dAgd2iw
DLページかその周辺に、最終アップデートの日付くらい書いてあるだろ。
オレは、プラグインに限らず、ソフトをDLするときは、常にそのへん確認しているが。

現時点で ttp://hsp.tv/make/tool.html
からリンクされてない所のプラグインは、腐りかけてるとみて良い。
0968名前は開発中のものです。2007/05/31(木) 08:21:13ID:IoKv3lvp
o2.asをインクルードしたら文法エラーとか無いわwww
0969名前は開発中のものです。2007/05/31(木) 12:53:10ID:IoKv3lvp
pcbnet2を使ったら
エラー38/(^o^)\
0970名前は開発中のものです。2007/05/31(木) 13:25:43ID:HZuEQJWp
pcbnet2.asとpcbnet2.hpiを何処に置いてる?
0971名前は開発中のものです。2007/05/31(木) 13:31:50ID:IoKv3lvp
すまん、原因は繋がってないのにtcp〜命令実行したせいだった。
0972名前は開発中のものです。2007/05/31(木) 13:34:21ID:RJOUfmMc
接続して無いだけなら命令が失敗するだけじゃね?
0973名前は開発中のものです。2007/05/31(木) 14:05:04ID:IoKv3lvp
接続せずにやると

dllの呼び出しに失敗しました

ってダイアログでて落ちるんよ
事前の接続確認とか入れてないからw
0974名前は開発中のものです。2007/05/31(木) 23:43:38ID:fEo0UHrl
mod_joystick.asのジョイスティックのモジュールって
joyGetPosEx jstk, 0

if jstk.8 & 2 { ボタン2の処理}
みたいなビット演算がボタン2以降はできないことに今気づいた。

if jstk.8 & 1 { ボタン1の処理}
はできるけど

if jstk.8 = 2 { ボタン2の処理}
じゃないと駄目なんやね

なんか不便
0975名前は開発中のものです。2007/06/01(金) 00:29:58ID:j73l8Egc
>>974
何が?

訳分からん事言ってるぞ
モジュールとは全然関係ない部分だし(API使ってるだけなんだから)

>if jstk.8 = 2 { ボタン2の処理}
>じゃないと駄目なんやね
自分で駄目にしてるだけだろ?
0976名前は開発中のものです。2007/06/01(金) 06:35:17ID:OrC46weU
ごめん。原因がわかった。モジュールとか全然関係ない。
でも、なぜこうなるのかわからんけど。論理式よくわかんね

repeat
await 5
stick stk,15
if (stk&1)&(keybuf1=0) {a++}//←キー //これは動く
if (stk&2)&(keybuf2=0) {a--}//↑キー //これは動かない ?何故?
//if (stk&2){ if(keybuf2=0) {a--} }//↑キー //こっちだと動く

keybuf1 = stk//連射抑止(stick命令の場合この処理は要らんけど)
keybuf2 = stk
title ""+a
loop
0977名前は開発中のものです。2007/06/01(金) 06:58:53ID:OrC46weU
追記
if (stk=2)&(keybuf2=0) {a--}//↑キー// なぜか動く


「stk&2」を「stk=2」にすると動いたもんだから
>>974のような質問をした
0978名前は開発中のものです。2007/06/01(金) 07:06:35ID:/fmsomKr
>>977
mes stk&2 ;→2
mes keybuf2=0 ;→1

mes 2 & 1 ;→0 ふしぎ!
0979名前は開発中のものです。2007/06/01(金) 07:13:20ID:/fmsomKr
まぁ、HSPだとCでいう&&とか||がないっぽいので、
0か1だけを返すbool関数みたいなの作って一度噛ませた方がいいかも知れんね。
0980名前は開発中のものです。2007/06/01(金) 07:21:06ID:71fpNKbx
なにその糞仕様
0981名前は開発中のものです。2007/06/01(金) 08:35:40ID:j73l8Egc
>>977
おーい
良く考えろ
やるなら
if ((stk&2)>0) & (keybuf2=0)
とか
if ((stk&2)=2) & (keybuf2=0)
とかだろ・・・

if stk&2 {
これが使えてるのは0以外なら判定が成立するからで
(stk&2) ここで成立してる訳じゃない
(stk&2) これは 0 か 2 でしかない
&1 で1になるのは反対側が奇数の必要がある

0982名前は開発中のものです。2007/06/01(金) 10:56:05ID:/fmsomKr
そういえば、論理演算としての!が使えないのも地味に痛いんだよな。
0983名前は開発中のものです。2007/06/01(金) 12:31:39ID:jXoXCE/h
ネットワーク機能を盛り込んだはいいが
一人で複数窓デバッグしんどすぎるwww
0984名前は開発中のものです。2007/06/01(金) 19:58:16ID:OrC46weU
>>978
>>981
丁寧な解説ありがとう。
0か1のbool型が戻り値になるとばかり思っていた。

これで念願のボタン1押しながらボタン2押しても反応するので
ジョイスティックでジャンプボタン押しながらムチを振れるようにできう
repeat
await 5
stick stk,15
if ((stk&1)=1)&(keybuf1=0) {a++}
if ((stk&2)=2)&(keybuf2=0) {a--}

keybuf1 = stk&1//こうやね
keybuf2 = stk&2
title ""+a+" stk&1:"+(stk&1)+" stk&2:"+(stk&2)
loop
0985名前は開発中のものです。2007/06/02(土) 00:17:41ID:83EyezUN
ちょwwソレなんて悪魔城ドラキュラ?wwww
0986名前は開発中のものです。2007/06/02(土) 00:25:19ID:A107r78T
どこの誤爆だw
0987名前は開発中のものです。2007/06/02(土) 05:55:51ID:ny6zaGSO
>>985
わかってくれて嬉しいw
レス数が950を超えています。1000を超えると書き込みができなくなります。