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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0729
ねんねこUNDERTALEの戦闘画面を作りたい16解決


ねんねこ

リンク

2021/7/29(Thu) 12:42:41|NO.93356

UNDERTALEみたいなのを作りたい
ただそれだけ。



この記事に返信する


わたしです

リンク

2021/7/29(Thu) 20:47:10|NO.93362

あの、失礼ですが、
何個も何個も登校するのが悪いとは思ってないですけど、
自分の投稿に対して返答があったのにそれを無視して
新しい投稿をするのは如何なものかと思います...
返答をくれた方に対して失礼じゃないでしょうか



礼賛乙

リンク

2021/7/30(Fri) 14:24:53|NO.93376

どの部分が作れないかぐらい言え



ねんねこ

リンク

2021/8/2(Mon) 07:28:04|NO.93433

えっと、
・枠からハートが出ないところ
・敵の攻撃
・HPバー
かなぁ



*

リンク

2021/8/2(Mon) 17:50:31|NO.93440

枠からハートが出ないところというのは壁の当たり判定が欲しいってことかな?
大雑把すぎてどこから説明すればいいのか...
HSP3付属のサンプル見て勉強してからもう一度挑戦する事をオススメします。



わたしです

リンク

2021/8/2(Mon) 21:15:51|NO.93448

ひとまず、「http://hsp.tv/play/pforum.php?mode=about
こちらリンク先の「HSP3掲示板の使い方」の下にある「投稿時の注意」、
7番と6番を読んでおきましょう。
三つとも、それがどうしたのか、全く分からず、
他の方が言っている通り、何から答えればいいのかわかりません。
例えば、
「HPバーを作りたいが、HPが減った時、HPバーに反映されず困ってます」
のような出来る限り具体的な内容に、
その状態を再現できる簡潔なスクリプトがあれば尚スムーズに話が進みます。
また、スクリプトは今作っている全てではなく、
再現できる最低限のものが良いです。(長すぎるとそれを見るのも大変なため)



ねんねこ

リンク

2021/8/4(Wed) 09:40:47|NO.93463

>>93440
そうします、ありがとうございました



ねんねこ

リンク

2021/8/4(Wed) 10:05:44|NO.93464

ハートが枠から出ないようにするコード

celload "heart.png" heart=stat mx=300 ; X座標 my=300 ; Y座標 msp=2 ; スピード *main redraw 0 ; 描画始め cls gmode 2 ; 透明色ありの指定 pos mx,my ; 表示位置の設定 celput heart ; 画像コピー line 200,200,200,400 line 400,200,400,400 line 200,200,400,200 line 200,400,400,400 redraw 1 ; 描画終わり await 20 stick key,15 ; キー入力 if key&1 : mx=mx-msp if key&4 : mx=mx+msp if key&2 : my=my-msp if key&8 : my=my+msp if mx<=196:mx=mx+2 if mx>=375:mx=mx-2 if my<=197:my=my+2 if my>=377:my=my-2 goto *main
最初はtamane_jump.hspが役に立つと思ったんだけど、keymove.hspの方が役に立ったね



ねんねこ

リンク

2021/8/4(Wed) 18:27:59|NO.93468

>>93464
を少し改造して骨が流れてmx=0になったときに骨がまた流れてくるようにしました

celload "heart.png" heart=stat celload "bone.png" bone=stat *l mx=300 ; X座標 my=300; Y座標 msp=3 ; スピード hp=10 *bone2 mx2=500 randomize my2=rnd(351) if my2<=200:goto *bone2 *main redraw 0 ; 描画始め cls 4 color 255,255,255 mes hp gmode 2 ; 透明色ありの指定 pos mx,my ; 表示位置の設定 celput heart ; 画像コピー mx2=mx2-10 pos mx2,my2 celput bone color 200,20,0 line 200,200,200,400 line 400,200,400,400 line 200,200,400,200 line 200,400,400,400 redraw 1 ; 描画終わり await 20 stick key,15 ; キー入力 if key&1 : mx=mx-msp if key&4 : mx=mx+msp if key&2 : my=my-msp if key&8 : my=my+msp if mx<=196:mx=mx+3 if mx>=375:mx=mx-3 if my<=197:my=my+3 if my>=377:my=my-3 if mx>=mx2 and mx<=mx2+100 and my>=my2+20 and my<=my2+80:hp=hp-1 if hp=0:goto *gameover if mx2=0:goto *bone2 goto *main *gameover goto *l



ねんねこ

リンク

2021/8/4(Wed) 18:30:26|NO.93470

>>93468
欠点
画像ファイルがなければいけない
骨に当たると最初から()
(最初からっていう概念あるっけ)



ねんねこ

リンク

2021/8/4(Wed) 18:43:46|NO.93472

>>93468
を改造してHPの位置を調整し敵を表示させるようにしました

*l mx=300 ; X座標 my=300; Y座標 msp=3 ; スピード hp=100 *bone2 mx2=500 randomize my2=rnd(351) if my2<=200:goto *bone2 *main redraw 0 ; 描画始め cls 4 color 255,255,255 pos 100,410 mes hp gmode 2 ; 透明色ありの指定 pos mx,my ; 表示位置の設定 celput heart ; 画像コピー mx2=mx2-10 pos mx2,my2 celput bone pos 200,0 celput ske color 200,20,0 line 200,200,200,400 line 400,200,400,400 line 200,200,400,200 line 200,400,400,400 redraw 1 ; 描画終わり await 20 stick key,15 ; キー入力 if key&1 : mx=mx-msp if key&4 : mx=mx+msp if key&2 : my=my-msp if key&8 : my=my+msp if mx<=196:mx=mx+3 if mx>=375:mx=mx-3 if my<=197:my=my+3 if my>=377:my=my-3 if mx>=mx2 and mx<=mx2+100 and my>=my2+20 and my<=my2+80:hp=hp-1 if hp=0:goto *gameover if mx2=0:goto *bone2 goto *main *gameover goto *l



礼賛乙

リンク

2021/8/4(Wed) 18:55:55|NO.93473

・redraw 0とredraw 1の間にclsを挟むと意味がなくなる。ちらついている
redraw 0 ~ redraw 1内には描画処理のみ行い、キー入力処理、プレイヤーの移動などの処理は外部に書いたほうが管理しやすい
・壁の形状はシンプル(四角形)なので、壁によるプレイヤーキャラの座標の制限はlimitを使うと便利
・インデントは見やすくする。コードによくわからないインデントが目立つ

p_sizex = 16 // プレイヤーXサイズ p_sizey = 16 // プレイヤーYサイズ mx = 300 // プレイヤーX座標 my = 350 // プレイヤーY座標 msp = 4 // プレイヤー移動速度 x1 = 200 // 左の壁のX座標 x2 = 400 // 右の壁のX座標 y1 = 300 // 上の壁のY座標 y2 = 450 // 下の壁のY座標 *main stick key, 1+2+4+8 // キー入力 if (key & 1) : mx -= msp if (key & 2) : my -= msp if (key & 4) : mx += msp if (key & 8) : my += msp mx = limit(mx, x1, x2 - p_sizex) // プレイヤーのX座標を壁内に制限 my = limit(my, y1, y2 - p_sizey) // プレイヤーのY座標を壁内に制限 redraw 0 // 描画 color 0, 0, 0 : boxf // 背景の塗りつぶし color 255, 0, 0 boxf mx, my, mx + p_sizex, my + p_sizey // プレイヤーの描画 color 255, 255, 255 pos x1, y1 line x2, y1 : line x2, y2 : line x1, y2 : line x1, y1 // 壁の描画 redraw 1 await 1000/30 goto *main



ねんねこ

リンク

2021/8/4(Wed) 19:07:42|NO.93474


#include "hsp3util.as" text 100 gsel 0,-1 screen 1 *ll onkey 0 emes "おちたニンゲンに なまえをつけてください" name="" input name,100,20 button "OK",*ok repeat if name="がすたー" or name="ガスター" or name="Gester" :end await 10 loop *ok if name="スケルトン" or name="すけるとん" or name="Skeleton":goto *skele *start gsel 1,-1 screen 0 celload "heart.png" heart=stat celload "bone.png" bone=stat celload "ske.png" ske=stat *l story1=0 story2=0 time=0 mx=300 ; X座標 my=300; Y座標 msp=3 ; スピード hp=100 *bone2 mx2=500 randomize my2=rnd(351) if my2<=200:goto *bone2 *main redraw 0 ; 描画始め cls 4 gmode 2 ; 透明色ありの指定 pos mx,my ; 表示位置の設定 celput heart ; 画像コピー mx2=mx2-10 pos mx2,my2 celput bone pos 200,0 celput ske color 200,20,0 line 200,200,200,400 line 400,200,400,400 line 200,200,400,200 line 200,400,400,400 color 255,255,255 pos 100,410 mes name,1 mes " HP:",1 mes hp,1 mes " ",1 if story1=0:emes "このよのおわりだ":story1=1 if story2=0 and story1=1 and time=300:emes "とめられるのはぼくしかいない":story2=1 if story1=1 and story2=0:mes "このよのおわりだ" if story2=1 and story3=0:mes "とめられるのはぼくしかいない" redraw 1 ; 描画終わり time=time+1 await 20 stick key,15 ; キー入力 if key&1 : mx=mx-msp if key&4 : mx=mx+msp if key&2 : my=my-msp if key&8 : my=my+msp if mx<=196:mx=mx+3 if mx>=375:mx=mx-3 if my<=197:my=my+3 if my>=377:my=my-3 if mx>=mx2 and mx<=mx2+100 and my>=my2+20 and my<=my2+80:hp=hp-1 if hp=0:goto *gameover if mx2=0:goto *bone2 goto *main *gameover goto *l *skele onkey 1 emes "いまから たたかう モンスターの なまえ。" onkey goto *ll stop
UNDERTALEっぽくしてみた



ねんねこ

リンク

2021/8/4(Wed) 19:15:11|NO.93475

>>93473
を参考にしました、本当にありがとうございます

#include "hsp3util.as" text 100 gsel 0,-1 screen 1 *ll onkey 0 emes "おちたニンゲンに なまえをつけてください" name="" input name,100,20 button "OK",*ok repeat if name="がすたー" or name="ガスター" or name="Gester" :end await 10 loop *ok if name="スケルトン" or name="すけるとん" or name="Skeleton":goto *skele *start gsel 1,-1 screen 0 celload "heart.png" heart=stat celload "bone.png" bone=stat celload "ske.png" ske=stat *l story1=0 story2=0 time=0 mx=300 ; X座標 my=300; Y座標 msp=3 ; スピード hp=100 *bone2 mx2=500 randomize my2=rnd(351) if my2<=200:goto *bone2 *main redraw 0 ; 描画始め color 0,0,0:boxf gmode 2 ; 透明色ありの指定 pos mx,my ; 表示位置の設定 celput heart ; 画像コピー mx2=mx2-10 pos mx2,my2 celput bone pos 200,0 celput ske color 200,20,0 line 200,200,200,400 line 400,200,400,400 line 200,200,400,200 line 200,400,400,400 color 255,255,255 pos 100,410 mes name,1 mes " HP:",1 mes hp,1 mes " ",1 if story1=0:emes "このよのおわりだ":story1=1 if story2=0 and story1=1 and time=300:emes "とめられるのはぼくしかいない":story2=1 if story1=1 and story2=0:mes "このよのおわりだ" if story2=1 and story3=0:mes "とめられるのはぼくしかいない" redraw 1 ; 描画終わり time=time+1 await 20 stick key,15 ; キー入力 if key&1 : mx=mx-msp if key&4 : mx=mx+msp if key&2 : my=my-msp if key&8 : my=my+msp kekkax=limit(mx,192,375) kekkay=limit(my,197,377) if kekkax=192:mx=mx+3 if kekkax=375:mx=mx-3 if kekkay=197:my=my+3 if kekkay=377:my=my-3 if mx>=mx2 and mx<=mx2+100 and my>=my2+20 and my<=my2+80:hp=hp-1 if hp=0:goto *gameover if mx2=0:goto *bone2 goto *main *gameover goto *l *skele onkey 1 emes "いまから たたかう モンスターの なまえ。" onkey goto *ll stop



ねんねこ

リンク

2021/8/4(Wed) 19:15:58|NO.93476

その代わりもっさり



ねんねこ

リンク

2021/8/4(Wed) 19:24:44|NO.93477

めっちゃ変更
・うざいからストーリー削除。→ただのよけゲーに
・inputの最大入力数を6に。

#include "hsp3util.as" text 100 gsel 0,-1 screen 1 *ll onkey 0 emes "おちたニンゲンに なまえをつけてください" name="" input name,100,20,6 button "OK",*ok repeat if a=6:goto *ok if name="がすたー" or name="ガスター" or name="Gester" :end await loop *ok if name="スケルトン" or name="すけるとん" or name="Skeleton":goto *skele *start gsel 1,-1 screen 0 celload "heart.png" heart=stat celload "bone.png" bone=stat celload "ske.png" ske=stat *l story1=0 story2=0 time=0 mx=300 ; X座標 my=300; Y座標 msp=3 ; スピード hp=100 *bone2 mx2=500 randomize my2=rnd(351) if my2<=200:goto *bone2 *main redraw 0 ; 描画始め color 0,0,0:boxf gmode 2 ; 透明色ありの指定 pos mx,my ; 表示位置の設定 celput heart ; 画像コピー mx2=mx2-10 pos mx2,my2 celput bone pos 200,0 celput ske color 200,20,0 line 200,200,200,400 line 400,200,400,400 line 200,200,400,200 line 200,400,400,400 color 255,255,255 pos 100,410 mes name,1 mes " HP:",1 mes hp,1 redraw 1 ; 描画終わり await 20 stick key,15 ; キー入力 if key&1 : mx=mx-msp if key&4 : mx=mx+msp if key&2 : my=my-msp if key&8 : my=my+msp kekkax=limit(mx,192,375) kekkay=limit(my,197,377) if kekkax=192:mx=mx+3 if kekkax=375:mx=mx-3 if kekkay=197:my=my+3 if kekkay=377:my=my-3 if mx>=mx2 and mx<=mx2+100 and my>=my2+20 and my<=my2+80:hp=hp-1 if hp=0:goto *gameover if mx2=0:goto *bone2 goto *main *gameover goto *l *skele onkey 1 emes "いまから たたかう モンスターの なまえ。" onkey goto *ll stop



ねんねこ

リンク

2021/8/5(Thu) 08:58:06|NO.93487




記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.93356への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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