☆ベルトアクション作成 Beats of rageスレッド☆
1 :名前は開発中のものです。 :2019/01/14(月) 03:57:54.21 ID:BfjgfhbB.net フリーのベルトアクション作成ツールBeatsofrageでオリジナルの ベルトアクションを製作するスレッドです。 http://ime.nu/senileteam.segaforums.com/ なかったので立て直しました
280 :名前は開発中のものです。 :2022/02/27(日) 20:33:11.90 ID:ofDNDNVo.net >>279 mod レスキューコマンド2やトラブルインサウスタウンなどで 使われてますね、仕組みとしては 掴み側の敵の攻撃が成功したら、レバガチャ用のentityを喰らったプレイヤーにbindしてます。 レバガチャentityはプレイヤーのレバーとボタン入力をスクリプトで検知して 自身のhealthを減らし、0になったら消滅するので脱出成功。 掴んだ側の敵は、delayなどで一定時間待ち時間を
281 :名前は開発中のものです。 :2022/02/27(日) 20:37:32.32 ID:ofDNDNVo.net 経過したら、攻撃コマンドを実行させるというもの。 プレイヤーを掴むときはスクリプトのslamstart〜positionコマンドで拘束します。 実際にmodをプレイしたほうがわかり易いかもw
282 :名前は開発中のものです。 :2022/02/27(日) 21:01:29.27 ID:ofDNDNVo.net script @script void main() { void self = getlocalvar("self"); void attacker = getentityproperty(self,"parent"); void victim2 = getentityproperty(attacker, "opponent"); void victim = getentityproperty(victim2, "playerindex"); int HP = getentityproperty(self,"health"), HPmax = getentityproperty(self,"maxhealth"); int x1 = getentityproperty(attacker,"x"), z1 = getentityproperty(attacker,"z"); if(HP>=HPmax){ changeentityproperty(victim2, "position", x1, z1); performattack(victim2, openborconstant("ANI_FREESPECIAL")); setidle(attacker, openborconstant("ANI_IDLE")); bindentity(victim2, NULL()); performattack(attacker, openborconstant("ANI_PAIN")); setentityvar(self, "madjon", NULL()); killentity(self); } else if(playerkeys(victim, 2, "moveleft")){ // Left is pressed? changeentityproperty(self, "health", HP+4); } else if(playerkeys(victim, 2, "moveright")){ // Right is pressed? changeentityproperty(self, "health", HP+4); } else if(playerkeys(victim, 2, "attack")){ // Attack is pressed? changeentityproperty(self, "health", HP+2); } else if(playerkeys(victim, 2, "jump")){ // Jump is pressed? changeentityproperty(self, "health", HP+6); } } @end_script これが心臓部で、レバガチャEntityのヘッダー部に記述すると、このEntityが存在しているあいだ実行され続けます。 で、Anim Idleにレバガチャの画像を表示させればOK、上のスクリプトだと、Healthを増やしてMaxHealthまで行ったら脱出ですね。
283 :名前は開発中のものです。 :2022/02/27(日) 21:07:55.32 ID:ofDNDNVo.net レバガチャEntityが出現するとき(Anim Spawn)、NPCやOBSTACLEを掴んだら 自動で消滅するようになっていますね。 anim spawn @script void self = getlocalvar("self"); void atk = getentityproperty(self,"parent"); void vtm = getentityproperty(atk, "opponent"); changeentityproperty(self, "health", 1); if(getentityproperty(vtm, "type")==openborconstant("TYPE_NPC") ||getentityproperty(vtm, "type")==openborconstant("TYPE_OBSTACLE")) { killentity(self); } @end_script
284 :名前は開発中のものです。 :2022/02/27(日) 21:51:12.10 ID:ofDNDNVo.net 別のテストのときの動画なので、ちょっと混沌として分かりずらいですが レバガチャの様子がが映ってたので参考になれば。 tu.be/V4o4JU56YFU
285 :名前は開発中のものです。 :2022/02/28(月) 02:55:23.68 ID:T0w0iYnz.net >>280-284 ぐおおおおお!お手間取らせました、すみません! やっぱり簡単にはいかないんですね…全く理解が及びませんw 少しずつやってみようと思います、ありがとうございましたm(_ _)m
286 :名前は開発中のものです。 :2022/02/28(月) 18:49:21.11 ID:e4RME2GR.net >>285 mod トラブルインサウスタウンの data/chars/misc/grab/grab1.txt に上のレバガチャentityがあります。 基本 >>251 のようなslamスクリプトと一緒に混ぜて使います。 modをプレイして動作を実感したあと、entityのtxtやスクリプトを 覗いたほうが理解しやすいかも? txtをコピーしてキャラ画像を差し替えてみたりとか。 私は良く関係無い画像を表示させて、しおりというか目印にしてますw
287 :泥酔迷走スーパーラリー :2022/02/28(月) 20:37:06.80 ID:ya7gt2me.net ファイルが大きすぎる上に投げ抜けできた試しがないので Bad SchoolGirlsの ひなたとかの方が良くないですかね? 受付時間がひどいですけど
288 :泥酔迷走スーパーラリー :2022/02/28(月) 21:05:31.57 ID:ya7gt2me.net 545c . com /f/13296827-500775648-7a875b (空欄3個) パス? afeidanji
289 :名前は開発中のものです。 :2022/03/01(火) 02:54:01.00 ID:49Ib5jCa.net >>287 さんの MODでも同じような(原型一緒)処理なので、 入手し易い方で大丈夫です。 投げ抜けの難易度に関しては Data/Scripts/escript.c などに void spawngrab(void vName, float fX, float fY, float fZ,int HPgv, int Num2, int Num) こんな感じで、投げ抜けようのBindスクリプトが用意してあって、 float X Y Z はそのまま座標 int HPgv にセットしたパラメーターが例えば200なら、 レバー(左右)とボタン(アタック・ジャンプ)を合計200回ていどガチャガチャしないとです。 int Num2は{1}か{2}で投げ抜けた時の双方リアクションの選択、 int Numは謎、setentityvarで収納してますがGrab1では参照してる箇所がないので 他の場所のフラグでしょうか。 @cmd slamstart @cmd spawngrab "grab1" 200 200 1 150 2 8 @cmd position 0 30 60 1 0 @cmd depost 0 @cmd throw 40 1 5 1 0 0 こんな感じで差し込んで使うことになるかと思います。 Depost〜 Throw〜 までの間に 待ちFrame を制限時間としてはさみます。 試してませんが Delay 3000 とかでもいいのかも。 Hurt〜をはさんで、抜けるまでジワジワダメージでも良いかもしれません。 構造を知ってしまえば単純なことなんですが、それを思いつく方々の発想の柔軟さに敬服します。
290 :名前は開発中のものです。 :2022/03/04(金) 03:31:38.49 ID:y6oPXV1f.net キャラクタの登場が大爆発だったり、specialアタックが天空高くヒップアタックだったり 謎のシュールさが良い味のmodを提供している、 G.P.Smith氏がHAG+3というmodを上げてらしたんで、 もしやと思ってプレイしてみましたが元のmodはHAGv5.0のようです。 v5.0とv6.0の違いはプレイアブルキャラだけのようですが、 剣を持ったWWがプレイヤーキャラだったりと中々カオスですw スクリプト無しでかなり軽いんで人気なんですかね?
291 :名前は開発中のものです。 :2022/03/04(金) 07:39:18.87 ID:vVdcxQXF.net もう少しだけヒントを 是非お願いします!
292 :名前は開発中のものです。 :2022/03/04(金) 08:56:57.17 ID:vVdcxQXF.net 284様ありました! 情報ありがとうございます!
293 :天堂少女6.0探しています :2022/03/04(金) 10:31:25.42 ID:cEKsJ0D+.net 天堂少女6.0探しています ありがとうございます!やってみたけれども Dボールの嫁(18gou)さんとかB.jenetさんとかがいなかった 本物はキャラクター10人超えているはずで難易度セレクト的なものがあるはずです これら本物?(中華)にしかない素材の断片をずっと探していたのですよね でもなかなかうまくいきませんね
294 :天堂少女6.0探しています :2022/03/04(金) 11:12:53.78 ID:cEKsJ0D+.net もしも見つけていたら更なるヒントを願っています
295 :天堂少女6.0探しています :2022/03/04(金) 16:23:19.06 ID:cEKsJ0D+.net スミスちゃんはコウちゃん作品使っていた?というよりもむしろ ほかの人の作品をアップしすぎです(笑)
296 :名前は開発中のものです。 :2022/03/05(土) 08:00:40.28 ID:p49CKOCm.net KOH氏の特徴のあるキャラ動作までよく似てますね。私はキャラのモチーフの選定センス(こより等)と愛のあるグラフィックでKOH氏のファンです。 Smith氏の「細かい事はいいから勢いと爆発だ」的なセンスも好きです。
297 :名前は開発中のものです。 :2022/03/06(日) 03:35:38.26 ID:D4DSTBj4.net お手本MODとしてかなり有名かと思います、CrimeBustersを480x270に対応させようと いろいろ弄ってみましたが、どうやら既にあるっぽい?半分諦めムードw せっかく作ったのでステージ1の動画(音声無し)。 P1とP2の操作コンフィグを同一に設定して擬似2Pプレイ。 tu.be/dgHMFoynmAg
298 :名前は開発中のものです。 :2022/03/10(木) 01:37:04.97 ID:iC7iqZ0i.net そういえばピヨリみたいなのって作れるんでしょうか?
299 :名前は開発中のものです。 :2022/03/11(金) 03:47:02.05 ID:aFe4cfAL.net >>298 考え方によるのですが、 ムゲンのようなガチ対戦がからむものは、ちゃんと作ったほうが良いのでしょう。 OpenBoRは基本乱戦メインのサイドスクローラーが多いので、大雑把で良いと思います。 作ろうと思えば、ピヨリ値的なものが蓄積していって MAX近くになった際に大きい攻撃力がヒットしたらピヨる というようなものは手間の割りに効果が見えにくいので(専用エフェクト作れば良いのですが) プレイヤーのFreespecialなどで、Attack9はピヨリ技というように決めておき 喰らう側の Pain9にピヨリAnimを設定しておくのが手っ取り早いのではないでしょうか。 こうする場合は Models.txtに <MaxAttackTypes {int} で上限(初期4上限99) を増やしておかないといけません。 ちょっと違いますが Attack {x} {y} {width} {height} {ダメージ} {吹き飛び} {防御不能} {エフェクト表示無し} {硬直時間} {Z攻撃範囲} これを Attack 0 0 100 50 10 0 0 0 60 0 とすれば 攻撃がヒットすれば60フレーム分硬直します。 他にも Attackコマンドのすぐ下に Stun 3などと記述すれば3秒間硬直します。
300 :名前は開発中のものです。 :2022/03/11(金) 05:25:36.84 ID:/kzpLClR.net ダウン、動けない、追撃、拘束系 挽歌くにお等みたいに細かい事ができるものは殆ど無い見たことが無いです openborはどうでしょうか くにお等はバックドロップや馬乗りも印象的でした
301 :名前は開発中のものです。 :2022/03/11(金) 11:57:25.86 ID:UqoUjlxU.net >>299 ピヨリ値蓄積みたいなのをやりたかったんですけどやっぱ複雑ですか… ピヨリ専用のリアクションいいかも知れません、ありがとうございました!
302 :名前は開発中のものです。 :2022/03/12(土) 01:40:59.64 ID:eSAMRvJC.net OpenBoR の内部の変数、 getlocalvar("self")など、よく見るかと思います。 すごく大まかに分けて localvar と globalvar というのがあって 読んで字のごとく local は一時的 global はlocalに比して長期的に数値を保持しておけます なので int piyopiyo =0; 攻撃を受けるたび piyopiyp += piyopiyo; setglobalvar(getlocalvar("self")+"PIYO", piyopiyo); な感じで Anim Fallに if(getglobalvar(self+"PIYO") => 100) { ピヨリAnimに跳ぶ} 的な事はできるかも? 馬乗りはスクリプト Slamで追撃はFindtargetでプレイヤーの向いている方向の180ドットくらいを調べて そのターゲットがFall中なら、攻撃Animへの移行とかすれば良いかもしれませんね。 SoR2XなどのMODでやってたような? 蛇足ですが相手に攻撃が当たっているのが確定なら(didhitscriptとか)、 void tar = getlocalvar("damagetaker"); int enextanim = getentityproperty(tar, "nextanim"); int enextthink = getentityproperty(tar, "nextthink"); changeentityproperty(tar, "nextanim", enextanim +100); changeentityproperty(tar, "nextthink", enextthink +100); こんな感じにすることで+100で0.5秒程度、ダメージを与えた敵を 完全に硬直させる事ができます。
303 :名前は開発中のものです。 :2022/03/23(水) 01:49:53.63 ID:YS0aCHsY.net アニメカオスやHAGなど話題に上っていたので、私も”みたいなもの”を作りたいなと思いたち、 何もギミックなど無く、ただ敵を適当に配置してボスまで10分程度のステージ。 しかもステージリソースなどは他の方が作成したものをお借りさせて頂いてるのに、 それでも3日以上かかるという、自身のセンスの無さに辟易。 いくつか実験的なことをしてるとはいえ、混沌としてしまい、たびたびプレイヤーを 見失う事になる悲惨な構成。ただキャラをバラ撒くだけでもこんなに難しいとは。 まあある意味カオスだしいっか。 ステージ構成の〜.txt中でも@scriptで各種Entity(敵とかNPCとか何でも)をTossEntityで ステージに放り込んだりできるのは発見でした。 ExecuteAnimationやPerformAttackなどで、ステージ登場時に特定の動きも させられます。動画の最初に敵が跳びこんで来るのとか。 tu.be/DZkZLRIJmxk
304 :名前は開発中のものです。 :2022/03/23(水) 02:14:49.64 ID:YS0aCHsY.net spawn ninja flip 1 map 1 coords -200 200 @script void main() { void self = getlocalvar("self"); performattack(self, openborconstant("ANI_Attack1")); tossentity(self, 3, 3, 0); } @end_script at 600 こんな感じで記述すると、{Entity}Ninjaが anim Attack1の体勢で Y(a)3,X3,Z0の勢いで跳び込んできます。 void self = getlocalvar("self"); changeentityproperty(self, "TYPE", openborconstant("type_NPC")); changeentityproperty(self, "Hostile", openborconstant("type_ENEMY")); changeentityproperty(self, "Candamage", openborconstant("type_ENEMY")); こんなのを記述すれば敵をNPCに(逆も)できます。結構便利。
305 :名前は開発中のものです。 :2022/03/23(水) 03:42:34.71 ID:YS0aCHsY.net 意外と知られて無いのかも? anim attack ではなく、コマンドのattackでattack4と記述して、このattack4が相手にヒットした場合、 ヒットした相手にanim pain4やanim fall4などが存在していれば、 そのanimが優先して実行されます。 スクリプトslamstartなんかは、これを利用して専用ヤラレを表現してるんですね。 attackコマンドには一緒に記述することで、他にも特別な動作をさせるサブコマンドがあるので DCマニュアルで調べてみると面白いです。 よく使う吹き飛びの距離を変化させるdoropvとか、 forceDirectionとstunを組み合わせると、相手を振り返らせてそのまま硬直させるとか。
306 :名前は開発中のものです。 :2022/03/23(水) 07:46:06.96 ID:YS0aCHsY.net doropv ミス dropv Y X Z 高さ 幅 奥行 に吹き飛ばす方向の調整attack コマンドと一緒に使用 面白いのがDOT 多分ダメージオーバータイムの略で、指定したダメージを 一定時間と回数(5ダメージを1秒に1回3秒間など)、ヒットした相手に与える。 OTG オンザグラウンド?anim fall等で地面に倒れている相手にもattackがヒット、 ただし倒れている相手にBBoxを設定する必要があります。 結構沢山の要素が設定できるので、標準コマンドでもかなりの事が出来ますね。
307 :名前は開発中のものです。 :2022/03/24(木) 08:53:50.15 ID:SUDjzvRe.net DCマニュアルとうのは >>2 の上段のサイトのことですね。 英語ですが、ディープL先生に訳してもらえば かなりの情報が得られると思います。
308 :名前は開発中のものです。 :2022/03/24(木) 09:06:51.52 ID:SUDjzvRe.net 最初はスクリプトなど意識せず、初代BoRのモデル設定Txtなどを読んだり、 プレイヤーキャラや敵等のHealthを100から200にするだけでも、かなりバランスが変わるのが分かると思います。 登場キャラや設定も少なめで基本はシッカリしてるので、構造が分かり易くエディットをミスしてバグっても、追いやすいというのもあります。
309 :名前は開発中のものです。 :2022/03/27(日) 01:42:21.92 ID:HrM0WEsM.net 倒れている敵に追撃できないか? 簡単に作る場合は、Anim FreeSpecial などの コマンド Attack にOTGを設定して 置けばよいのですが、喰らう敵側の Anim Fall に BBoxを設定しておかないと 当然のごとく攻撃は当たりません。 通常のAnim Attack に スクリプトで FindTarget して、そこで取得できた敵のX,Y,Z とプレイヤーのX,Y,Zを比較して、攻撃が届く距離なら コマンド PerformAttack で ダウン攻撃Animに移行すればよいわけですが、この場合も、 敵側のAnim Fallには BBoxの設定が必要です。 あとは、FindTarget して、距離を測るまでは一緒で、見つけた敵を強引に スクリプト SlamStart で拾って、あとはよしなに。 もともと1対1の戦闘はそれほど考慮されていないので(それならムゲン) 特定の敵の情報を得るのは FindTarget、Opponent、DamageTaker くらいしか 私は知りませんので、なんとかそれでやりくりしてます。
310 :名前は開発中のものです。 :2022/03/27(日) 01:45:54.18 ID:HrM0WEsM.net >>307 2じゃ無くて >>7 ですね。 さらにミスって上げてしまいました。ごめんなさい。
311 :名前は開発中のものです。 :2022/03/30(水) 02:10:47.88 ID:jn3q1exc.net anim idle @script void self = getlocalvar("self"); void rflag = getentityvar(self, 1); if (rflag==NULL()){ setentityvar(self, 1, 0); } else { int rotate=getentityvar(self,1); if(rotate>=360){rotate=0;} changedrawmethod(self, "reset", 1); changedrawmethod(self, "rotate", rotate); changedrawmethod(self, "fliprotate", 1); rotate+=18; setentityvar(self, 1, rotate); } @end_script loop 1 delay 2 offset 42 43 attack 0 0 83 86 5 0 1 0 12 12 frame data/chars/spiral/ssword1.gif これは、射出される弾の1枚の絵を回転させられないかな?と作ったもの 回るには回ったんですが、やはりDrawMethod Rotateの特製か、中心を軸に回転させるのが難しい 無い頭で苦心するより、ペイントソフトで回転する絵を作ったほうが早そうです。
312 :名前は開発中のものです。 :2022/04/07(木) 09:32:24.21 ID:RWamgL6H.net bindentityの機能にターゲットと同じAnimを実行するというものがありますが 速いdelayやAnimを連続切り替えしたりすると、他のentity(敵とか)に影響が出て描画が遅れたりすることがあるようです。 特に同じAnim内でdrawmethodも使っていると症状が出やすいようです。 レイヤーコマンド使って優先順位付けしたら違ってくるかも?などと考えています。 かなり軽いエンジンなので、あんまり無理させちゃいけないのかも知れません。
313 :名前は開発中のものです。 :2022/04/07(木) 11:11:43.62 ID:V6ejTjoQ.net >>311 の回転ですが 元絵を余白も含めて縦横比を同じくらいにして offsetを画像の中心付近にすることで、 結構綺麗に回転します。 飛翔体などならそんなに違和感ないですね。 コツが分かってくると、スピンアタック系や ジャンプ中の前転などそれなりに使えそう。
314 :名前は開発中のものです。 :2022/04/07(木) 21:23:18.45 ID:RWamgL6H.net drawmethod rotate #とfliprotate 1はよく使ってます。 前者は好きな角度に回転させるのと、後者は対象のentiryの向きに合わせて 自動で反転してくれるというもの。 shiftx #にも自動反転があればもっと便利になるのですが、 中々難しいものです。
315 :名前は開発中のものです。 :2022/04/08(金) 01:33:24.24 ID:W27/nC7P.net >>304 のChangeEntityPropertyでTypeやHostileを変更するを利用して キャラ(Entity)がKnockdownCountで転ぶ(Fall)度に 敵になったり味方になったり変わる様にしたんですが、ChangeDrawmethodなどで 色も変えないと混乱の元なので却下。 動画では、一部の敵を倒すと一定時間NPCが出現するようにしましたが、このほうが分かり易いですね。 Stage2では敵を倒すとどんどん増援が来るようにしたはずが、レベル設定のGroup{Min}{Max}の 影響も受けるようで、そんなに敵だらけになるようなことはありませんでした。 Stage1のようにEnemyポータル方式のほうがメリハリがついて良いかもしれません。 テストとはいえ、コンセプトや世界観なしで適当に登録してある敵をただ順番に出現させているだけなので ゲーム性は全く無いですね。ステージもTGS4からの流用です。オリジナルを作れる日はいつの事やらw tu.be/k1-ss0M1Klc
316 :名前は開発中のものです。 :2022/04/09(土) 02:45:15.79 ID:huMt1Pej.net >>302 にてlocalvar と globalvar について軽く触れていますが、もう一つ EntityVar もあり、setEntityvar({entity},{index},{var}) 的につかいます。 EX. SetEntityVar(Self, 1, 999)GetEntityVar(Self,1)な感じで、 好きな入れ物(変数)として使えます。 Localvarはシステムも使っていて、結構な頻度でリセットされるので、 キャラ(Entity)固有の変数収納場所(フラグ処理とか)として便利かと。 MOD SailorMoonでは Kastorというキャラが、これを利用して 2対でプレイヤーの情報を共有して、同時攻撃をするなどしています。
317 :名前は開発中のものです。 :2022/04/09(土) 02:58:53.09 ID:huMt1Pej.net >>316 なので、いわゆるピヨリ値などはGlobalVarよりEntityVarに収納したほうが 管理しやすいかも知れませんが、いまのマシンパワーならメモリ効率とか考えなくても とくに支障はなさそうなので、使い易いほうで良さそうです。
318 :名前は開発中のものです。 :2022/04/11(月) 03:53:09.40 ID:mFlGfZLx.net プレイヤーが敵の情報を取得して、その敵を投げた際にdrawmerhod rotateを 使って回転しながら吹き飛ぶようにしようとスクリプト組んでたんですが ぜーん全上手くゆかないので、プレイアブルキャラ作成に逃避
319 :名前は開発中のものです。 :2022/04/12(火) 01:32:29 ID:vWluw1zD.net void slamSpin() { void self = getlocalvar("self"); void target = getlocalvar("Target"+self); if(target==NULL()) { target = getentityproperty(self, "grabbing"); setentityvar(self,3,NULL()); setlocalvar("Target" + self, target); } if(target!=NULL()) { if (getentityvar(self, 3)==NULL()){ setentityvar(self, 1, 36); setentityvar(self, 2, 16); setentityvar(self, 3, 69); } int zoom = getentityvar(self,2); int zoomfct = 256+(zoom*4); int rotate = getentityvar(self,1); if(rotate>=360) { setentityvar(self, 3, 99); } changedrawmethod(target, "enabled", 1); changedrawmethod(target, "rotate", rotate); changedrawmethod(target, "fliprotate", 1); changedrawmethod(target, "scalex", zoomfct); changedrawmethod(target, "scaley", zoomfct); changeentityproperty(target,"projectile",1); updateframe(target, 0); setentityvar(self, 1, rotate+=36); setentityvar(self, 2, zoom+=8); if(getentityvar(self,3)==99) { changedrawmethod(target, "rotate", 0); setentityvar(self,1,NULL()); setentityvar(self,2,NULL()); setentityvar(self,3,NULL()); depost(0); throw(999,1,0,4,3,0); changedrawmethod(target, "alpha", 3); spawnEF("crash",0,0,1,384,0); anichange("ANI_DODGE"); } } }
320 :名前は開発中のものです。 :2022/04/12(火) 01:51:05.23 ID:vWluw1zD.net 思ってたんと違ったけど、まあなんとか必殺投げが出来たので 最後の5行に別なスクリプトを呼んでますが、演出用なので 基本上のスクリプトをLooperという別なスクリプトで呼び出して使ってます。 動画のプレイヤーキャラ(黄色いの)が連続キックを繰り出しますが ああいう同じ動きをするとき便利なスクリプトで、殆どのユーザースクリプトに導入されていると思います。 @CMD Looper 3 5 という感じで7番目のFrame Data/〜に記述すると 3番目のFrame から6番目のFrame までを5回繰り返すというもの 標準コマンドのLoop だと延々と繰り返してしますので、Looper の便利さが分かるかと思います。 動画だと動画のフレームが跳んでしまって分かりにくいですが、 なんとなーく私のやりたいこと分かっていただけますでしょうか? tu.be/CRGXjQowAG8
321 :名前は開発中のものです。 :2022/04/12(火) 02:29:22 ID:vWluw1zD.net 上のスクリプトは汎用性はほぼ無し、条件設定として Health が25%切った相手を投げた際に30%の確立で発動な感じです (動画ではテスト用に発動条件ユルユルですが)。 なのでやっぱり 攻撃者のAttack5 などに、相手側がリアクションとして Pain5 や Fall5 を 設定しておいたほうが結果手間が掛からないかと思います。
322 :名前は開発中のものです。 :2022/04/13(水) 00:14:16.67 ID:aDur5ZAn.net ピヨリについて、面倒だと思うよーとか適当な事言っておいて EntityVar に値を入れておけば楽だと思うよーとか超いい加減なことばっかレスしてるんで 一応作ってみました、結果そんなに苦労はないかも? 今回はプレイヤーがピヨリ値を蓄積し、一定に達すると4秒間ピヨリ レバガチャで時間短縮と成功でリバーサル攻撃。 内容は単純でAnim Pain実行時ピヨリ値をプラス、Anim Idleで少しづつピヨリ値減少 一定数たまったら、Executeanimationで”Ani_Follow{#}”でピヨピヨ実行 このとき、レバガチャEntityをプレイヤーにBindEntityして ガチャ成功するとリバーサル攻撃用のAnim_Follow{#}にExecuteanimationするというもの レバガチャEntityにはLifespan 4が設定してあって、4秒で自動消滅 CPU戦でピヨるとかウザイだけかもという認識でしたが、作ってみたら意外と良かったw tu.be/6iLBqsjC2eI
323 :名前は開発中のものです。 :2022/04/13(水) 01:10:35.54 ID:aDur5ZAn.net anim pain @script if (frame==0) { void self = getlocalvar("self"); int incDM = getentityvar(self,9); if((incDM==NULL())||(incDM<=0)) { incDM=1; } incDM+=incDM; spawn01("dmflashsp", 0, 4, 0); if(incDM>=20) { executeanimation(self,openborconstant("ANI_Follow9")); } setentityvar(self,9,incDM); } @end_script ピヨリ蓄積部分もこんな感じで単純です。Anim Painの度に倍になってゆき、 数値20以上でピヨリAnim(Follow9)を実行。 anim idle @script if(frame==5) { void self = getlocalvar("self"); int incDM = getentityvar(self,9); if (incDM<=0) { setentityvar(self,9,NULL()); } if(incDM!=NULL()) { setentityvar(self,9,incDM-=1); } } @end_script アイドル状態でピヨリ値1ずつ減少。AnimのFrameが最後の方まで描画されたら 減少するようになってます。または、Anim Sleepを設定しておいて、 そちらで下がるようにしても良いかも。
324 :名前は開発中のものです。 :2022/04/13(水) 01:17:03.20 ID:aDur5ZAn.net script @script #include "data/scripts/escript.c" void main() { void self = getlocalvar("self"); void par = getentityproperty(self,"parent"); void vict = getentityproperty(par, "playerindex"); void vict2 = getplayerproperty(vict,"entity"); int HP = getentityproperty(self,"health"); int HPmax = getentityproperty(self,"maxhealth"); if(HP>=80) { spawn01("dmsuper", 0, 0, 1); executeanimation(vict2, openborconstant("ANI_Follow11")); bindentity(self, NULL()); killentity(self); } else if(playerkeys(vict, 2, "moveleft")) { // Left is pressed? changeentityproperty(self, "health", HP+4); } else if(playerkeys(vict, 2, "moveright")) { // Right is pressed? changeentityproperty(self, "health", HP+4); } else if(playerkeys(vict, 2, "attack")) { // Attack is pressed? changeentityproperty(self, "health", HP+2); } else if(playerkeys(vict, 2, "jump")) { // Jump is pressed? changeentityproperty(self, "health", HP+6); } } @end_script レバガチャ部分もシンプルで、方向キーで+4、アタック+2、ジャンプ+6で 80以上溜まったら成功(Follow11、リバーサル攻撃)
325 :名前は開発中のものです。 :2022/04/13(水) 01:25:34.49 ID:aDur5ZAn.net 2行目で #include "data/scripts/escript.c" してるのは、 成功時の演出 spawn01("dmsuper", 0, 0, 1);の為だけです。 anim spawn @script void self = getlocalvar("self"); changeentityproperty(self, "health", 1); @end_script 最初に Health 100(MaxHP)などと設定しておき、Anim Spawn時に 現HPを1にしています。 これを プレイヤーにBindEntity するのですが、スクリプト上方のSelf,Par,Vict,Vict2 ここを理解するのに頭こんがらがるかも知れませんね、元々他のモッダーさんが組んだ スクリプト(古くからあるのでBloodBane氏でしょうか?)をアレンジしましたです。
326 :名前は開発中のものです。 :2022/04/13(水) 04:05:16.91 ID:aDur5ZAn.net 元々、仕様とバグのギリギリいってる手法なので、 ピヨリ中にもう一回敵からのBindEntityを利用した攻撃を受けると OpenBoRが落ちますw やっぱり標準コマンドで何とかしたほうが良さそうですね。 レバガチャで回復早めるとかしなければ、EntityVarを使って 値を蓄積して、一定時間無防備になるというのは バグの危険なく可能です。 中々難しいものですね。
327 :名前は開発中のものです。 :2022/04/17(日) 02:42:23.91 ID:xLR26ELd.net なんか煮詰まったので、プレイアブルキャラ作成に逃避。 ムゲンからキャラのインポート(聞こえが良いですね)。 ここで新たに、光弾問題に遭遇、どうもDBキャラはいろいろ撃ちますが、 単純に弾を撃つならCustKnifeなりで作ればよいし、誘導弾ならType NPCのSubType Chaseとかで 追尾させればよいのですが、なんとなく弾幕作りたいな〜とかやってドハマリ中。 通常攻撃とシンプルな特殊技はこんな感じかな? tu.be/_xQBhCUit8c
328 :名前は開発中のものです。 :2022/04/17(日) 03:48:50 ID:xLR26ELd.net SpawnEF S{vName} {X} {Y} {Z} {S} {A} {R} {Ani} ナニコレ? 私個人のスクリプトですが、上の動画でも多用されています。 XYZは単純に座標、SはScale(Zoom)AはAlpha(透明度)R(回転)Ani(Anim) 本来、複雑な手続きを簡略化するのもスクリプトのメリットの一つだと思いますが 色々出来るようにして、かえって煩雑になった悪例w ちゃんと設計やらしない大雑把な性格そのままです。 怪我の功名とでもいいますか、一つAnimがあれば回転拡大縮小をつかって さまざまなエフェクトに活用出来そう。 ただし、ソースを見ないと意味不明、ですが、自身のオリジナルではないので アップは憚れるという、ムゲンと共通のジレンマ。 オリジナルの作者様には尊敬しかないです。
329 :名前は開発中のものです。 :2022/04/17(日) 16:44:32.78 ID:xLR26ELd.net openBoRには標準でsin cos atanなど揃っていたので、扇弾を弄ってたのですが 考えてみれば敵はそんなのお構いなしですし。 自分が敵にやられたらイラだつだろうしで、全方位弾にしました。 おおよその敵の方向に撃つ直進弾がたまに止まっちゃいますがご愛嬌w 一見おおっ!となっても実は使い道の無い技ということで。 特に敵以外との衝突判定はしてないので32×4射ってますが さすがopenBoR処理落ちなどしないですね。 セブンティーン氏が洪水おこしてますが、技が思いつかないので適当です。 Krrnはサポートに飛び込んできて、入力に連動して攻撃を繰り出すように出来ないか考え中。
330 :名前は開発中のものです。 :2022/04/18(月) 12:39:49 ID:+se/Swu+.net 何の事だと思ったら、動画の話しなんですね。 まだ、何も分かりませんが、日本語での解説ありがたいです。
331 :名前は開発中のものです。 :2022/04/19(火) 03:14:29.19 ID:a3xIrRSp.net >>275 Anim Death 中に SpawnFrame を実行させれば 倒されるたびに新たな敵({Entity}なら何でも)を出現させられます。 Anim Deathを必ず実行させる為に Falldie 1or2(Death 1or2) nodieblink はお好みで設定すればOK。 ですが Level(ステージやBranch)の中で Group 1 2 など出現キャラ数に 制限をしていると、SpawnFrame が実行されないので注意です。 Weapon で設定した場合、一定数転んだら別キャラ({Weapon})のような感じだったり 任意のタイミング(Freespecialなど)で切り替えたりして変身的に使えます。 {Weapon や Entity}で継承される技(Anim {xxx})が被ったりすると 上書きされたり(止める事もできますModelflag)するので気をつけないと 謎の技が暴発したりしますw Weapon を使うなら Animal も研究すると面白いかもしれませんね。
332 :名前は開発中のものです。 :2022/04/19(火) 03:24:07.55 ID:a3xIrRSp.net >>別キャラ({Weapon}) ({WeaponFrame} や{WeapLoss} などを設定して切り替わるようにする)。です。 このあたりの設定の細かさは流石です。
333 :名前は開発中のものです。 :2022/04/20(水) 21:43:31.43 ID:PW9VJXxm.net weaponの技の上書きというより、マージと言ったほうがわかり易いかも? Anim Freespecial1のみプレイヤーキャラにあって、weaponにAnim Freespecial2があった場合、武器を拾ったプレイヤーは両方使えるようになります。 Modelflag{0,1,2}を設定してないと、混ざったままになってしまうことがあるということですね。
334 :名前は開発中のものです。 :2022/04/22(金) 01:04:20.67 ID:g9+olsrt.net 算数も割り算の時点で微妙な私は、もちろんプログラムなんて全く分からなかったけれど kt住江さんの作品に出会ってOpenBoRを知って、なんとか拡散砲を撃てるようになりました。 リソースは全部ひと様のものなので本来動画すら微妙なんですが、 スクリプトの中身見たら四則演算って知ってる?って感じですが そんな私でも、For文とDrawmethodを組み合わせると、 こんな感じも演出出来てしまう。そしてすっごく軽いOpenBoR凄いという話です。 tu.be/hpDEMufHzC8
335 :名前は開発中のものです。 :2022/04/25(月) 03:51:31 ID:vu/W7WGq.net NO18さんの体力低下時スペシャルKRRN 最初はプレイヤーは空中に退避、各ボタン押下でMPに応じて技を繰り出す というような感じにしたんですが、操作が煩雑になるので連打に なんか連打も面倒(ピヨリで十分イライラですし)。 結果、全ての敵のそばに出現して勝手に暴れるように ただ、これをやると、その後MPの回復を0か遅くする、 またはタイマーセットで規制しないと 体力下げてスペシャル連打でいいよね?になってしまうのですが、 そのへん作り込むのは面倒、良いアイデアないでしょうか tu.be/iCGEtG9JQ8w
336 :名前は開発中のものです。 :2022/04/25(月) 19:15:40.23 ID:vu/W7WGq.net だんだん脳内で設定してスクリプトを切り張りしても、収拾つかなくなってきたので ルールのまとめをしてゆこうかと思います。 拡散するショットはMPの消費を激しくして、さらに3回を限度に。 KRRNの呼び出しはHP20%以下、1回きり。しかし、KRRNの攻撃力は高い。 KRRNを呼び出すとMAXMPは3分の1程度に(大技不能)、ただしMP回復力大幅アップ。 HP20%以下からプレイヤーキャラがHPを50%以上回復すると、 上のペナルティ(メリット)はリセットされる。 ピヨピヨから回復するための操作でMPをマイナスされる、 ただし回復に成功すればMPは回復する。 回復操作でMPが減り、時間切れではマイナスのままです。 敵の捕縛攻撃時に回復操作した場合、MPとHPはマイナスされる。 成功してもMPはマイナスのまま。 しかし、敵に大きなダメージを与えられる(今回の動画では映っていません)。 あとは追撃作成すればだいたい良いかな? tu.be/KkTDOyFT9hw
337 :名前は開発中のものです。 :2022/04/26(火) 01:26:17.09 ID:tRI20Ut9.net >>336 とやったら弱くなりすぎた。 ピンチ状態(HP20%以下)ではMP回復2倍は良い感じに思える。 その辺を分かり易くするエフェクトが必要かも? ピンチからHP50%まで回復すると、MP回復2倍のまま MaxMP100のハイパー状態に、でも拡散攻撃を実行すると MaxMP70MP回復25%ダウン(標準は "mpset" 100 0 0 8) なぜ、こんな事が気軽にできるかというと @cmd changeentityproperty getlocalvar("self") "mpset" 70 0 0 6 で即座に変更できるからです。 拡散攻撃に混ぜた挙動がおかしい弾は、 Range 0 100で追尾(SubType Chace)のType NPC のお手軽誘導弾。 これまでLocalVarで管理してたフラグを EntityVarで管理できるように。 Set(Get)EntityVar({Entity}{Index}{Var})というように使うのですが {Entity}毎の管理なのでとても便利です。このへんは以前からOpenBoRに存在してました 私が知らなかっただけですw 追撃については動画のボス・アダーさんに抱きつくような仕草をして 直後に「渦」のようなエフェクトが発生しますが、あれが原型で スクリプト的には、攻撃で吹き飛んだキャラがプレイヤーの攻撃範囲で HPが残っていた場合、プレイヤーまで引き寄せ再度攻撃するというもの 「鞭」を装備したキャラを想定した攻撃なので素手では変な見た目になりますね。
338 :名前は開発中のものです。 :2022/04/26(火) 01:47:14.17 ID:tRI20Ut9.net >>337 最後の追撃ですが、 FindTarget や Opponent、 Grabbing(Grabbed)で選んだ対象が ANI_Fall で A=Base のType Enemyだった場合、 そしてプレイヤーの攻撃範囲であったら スクリプト SlamStart して地面を蹴りつける動作でダメージを与えるというものを 作ったのですが、ちょっと見た目的に結構エグかったので削除。 まあそれまでにナグるわケるは好き放題にしてたくせに、何故か引いてしまいました。 別キャラの相手の背後にテレポートしてキりつけるは別にOKなんですが、 人それぞれ結構苦手なシーンがあるかもしれませんね。
339 :名前は開発中のものです。 :2022/04/26(火) 03:20:57.85 ID:tRI20Ut9.net >>313 Drawmethod Rotate を使った回転について マニュアルには −45 とすればマイナス方向の45度に回転させられるとあり 実際出来るのですが、画像の欠けが発生し易いようなので 素直に 315と設定したほうが良さそう。 Type Enemy の設定 Anim JumpAttack は これとRange 設定(0〜100など)だけで自動で前方ジャンプ攻撃を行います。 Anim JumpAttack2 は 同じく Range 設定で 垂直ジャンプ攻撃になります。 Type Enemyも結構いろいろ設定できるので、凝りだすとキリが無さそうです。
340 :名前は開発中のものです。 :2022/04/26(火) 07:34:52 ID:tRI20Ut9.net こちらがコンボを繰り出していると、たまに敵が無敵技で逃げたり 反撃してきたりしますが、 EscapeHits {#} ここで設定した数値+1連続で攻撃を受けると Anim Special2 が実行されます。 Falldie # やDeath # を1にしておくと、Health 0 で必ず Anim Death が実行されるので、フラグや演出にも使えそう。 Walk Idle Pain Fall Riseなどの各Anim はほぼ必須な Animなので 通常の利用だけでなく、必ず実行される特性を利用した演出や フラグの処理などに。ヘッダーで NoMoveを設定しておくと移動しなくなるので こちらも便利に使えそう。
341 :名前は開発中のものです。 :2022/04/28(木) 01:47:31.28 ID:k34JWO6S.net anim rise @script if(frame==2) { void self = getlocalvar("self"); int MHP = getentityproperty(self, "maxhealth"); if(getentityvar(self,"PNC")==NULL()&&getentityproperty(self, "health")<(MHP/5)) { setentityvar(self,"PNC","On"); setentityvar(self,"PCT",openborvariant("elapsed_time")+1500); spawnAni("FightEF4", 0, 0, 0, "ANI_Follow48"); spawnbind("piyo4", 0, 100, 1); } int incDM = getentityvar(self,9); if(incDM!=NULL()) { if(incDM>20 && getentityproperty(self, "health")<MHP/4) { executeanimation(self,openborconstant("ANI_Follow8")); } if(incDM>20) { executeanimation(self,openborconstant("ANI_Follow9")); } setentityvar(self,9,incDM-=2); } } @end_script これで、攻撃を受けて倒れた時、Healthが20%以下ならピンチモードになり。 蓄積ダメージがあったらピヨリに。 この辺は、Anim Painなどにも記述しておきます。
342 :名前は開発中のものです。 :2022/04/28(木) 01:51:47.77 ID:k34JWO6S.net Anim Idle @script if(frame==4){ void self = getlocalvar("self"); if( getentityvar(self,"PNC")=="On" ) { int MP = getentityproperty(self, "mp"); int MHP = getentityproperty(self, "maxhealth"); if(getentityproperty(self, "health")>MHP/2||openborvariant("elapsed_time")>getentityvar(self,"PCT")) { changeentityproperty(self, "mpset", 100); changeentityproperty(self, "mp", MP); spawnAni("ALLSP", 0, 0, 0, "ANI_Idle"); changeentityproperty(self, "health",MHP*0.75); setentityvar(self, "PCT", NULL()); setentityvar(self, "PNC", NULL()); setentityvar(self, "SSP", NULL()); setentityvar(self, "KSP", NULL()); } } } アイドル状態になるたび、回復のチェックをして ピンチになってから自力でHP50%以上か、または一定時間経過で自動回復。 EnergyCost {#} {#}これでMPのみで必殺技始動にしておかないと Specialガンガン使ってHealth減らせば、一定時間後に自動回復しまくりで 超イージーにw キャラの調整って難しい。
343 :名前は開発中のものです。 :2022/04/28(木) 02:03:08.09 ID:k34JWO6S.net Type Enemy や NPCは Range を設定する事で、一定距離内に入ったら攻撃を始めますが 彼我の距離が変わらないとずっと同じことを実行します。 int Crnd=rand()%20; if(Crnd>10) { changeentityproperty(getlocalvar("self"),"animation",openborconstant("ATK_Normal2")); } else if (Crnd>0) { changeentityproperty(getlocalvar("self"),"animation",openborconstant("ATK_FreeSpecial")); } こんな感じにランダム要素を入れてみたり。 Anim Idleも2〜3フレームしか実行されないことが多いので、Anim Attack#に Idleの内容と同じアニメを用意して、たまにはボーっとさせるのも一興。 EnemyやNPCに Anim Get を用意してると、回復アイテムを拾います。 気をつけましょうw まあそれを利用して回復アイテムを放置、 拾いに行く無防備Enemyをコテンパンにするのもあり。
344 :名前は開発中のものです。 :2022/04/28(木) 02:14:43.42 ID:k34JWO6S.net changeentityproperty(getlocalvar("self"),"animation",openborconstant("ATK_Normal2")); 上の"ATK_Nomal2"は"ANI_Attack2"とかで良いかもしれないけれど、 フリースペシャルは"ANI_FreeSpecial"でないとエラー 即興で適当に書いてしまいました。 ANI_ とATK_ てよく間違えるんです。 setentityvar(self,"PCT",openborvariant("elapsed_time")+1500); これは結構便利で、Anim Fallなどのタイミングで設定して openborvariant("elapsed_time")>getentityvar(self,"PCT") こんな感じで現在時刻(OpenBoR内の)が「設定した時間を超えたら 何かする」というような使い方ができます。
345 :名前は開発中のものです。 :2022/04/28(木) 02:24:25.39 ID:k34JWO6S.net setentityvar(self, "PCT", NULL()); setentityvar(self, "PNC", NULL()); setentityvar(self, "SSP", NULL()); setentityvar(self, "KSP", NULL()); このへん、いちいち NULL()にしてますが、 if 条件で GetEntityVar(self, "KSP")!=NULL() というように "KSPの"中身が空(NULL)ではなかったら「値をプラスする」や ==NULLだったら条件の始動にするなど、フラグとして便利 ただデフォは少ないのでScript.txt (注 Scriptsではない)の設定で増やそう。 あまり増やすとメモリ消費が激しいので、4096とかしないようにw
346 :名前は開発中のものです。 :2022/04/28(木) 03:53:19.54 ID:k34JWO6S.net ステージの設定で Spawn {Entity} Health 200 Aggression 30 Item Food Coords 300 180 0 At 300 こんな感じに記述して、ステージ上に様々なキャラ{Entity}を登場させます。 もともとのキャラ{Entity}でHealth を50などと設定してあっても 上の例だと Health 200で出現します。 Spawn {Entity}の部分は特にキャラである必要はなく{Entity}でさえあれば (Models.txtで設定)OKなので、特定の場所の演出用{Entity}でも良いわけです。 Item Food の所、そのキャラを倒すとドロップするのですが 演出用{Entity}でも、敵キャラでもOKなので色々ドロップさせると面白いですね。 ただ、1ステージで使える Spawn {Entity}は上限600個程度のようなので ほどほどで、次のステージに移行しましょう(ステージが切り替わると各種リセットされる)。 上の方のレスでもあった@Script も使えば、かなり様々なことができそうです。
347 :名前は開発中のものです。 :2022/04/30(土) 01:52:33.20 ID:rxj78wqY.net anim spawn @script { if(frame==2) { void self = getlocalvar("self"); void sprite = getentityproperty(self, "sprite",getentityproperty(self,"animpos")); int max_scale = 256; if ( getentityvar(self,"size") == NULL() ) { setentityvar(self,"size", 16); } int size = getentityvar(self,"size"); if( size <= max_scale ) { changedrawmethod(self, "flag", 1); changedrawmethod(self, "tintmode",5); changedrawmethod(self, "tintcolor", 0x40ff40); changedrawmethod(self, "scalex", size); changedrawmethod(self, "scaley", size); size += 16; setentityvar(self,"size", size); } } if(frame==3) { void self = getlocalvar("self"); changedrawmethod(self, "reset", 1); setentityvar(self,"size", NULL()); } } @end_script
348 :名前は開発中のものです。 :2022/04/30(土) 01:53:21.89 ID:rxj78wqY.net delay 40 drawmethod scale 0.3 offset 66 154 frame data/chars/plant/puke2.gif delay 16 frame data/chars/plant/puke2.gif @cmd looper 1 16 frame data/chars/misc/empty.gif 結局こーんな感じで愚直に拡大処理して敵を出現させたりしてるのです。 各{Entity}のデータを取得してスクリプトでスポポーンと処理したいものですが、 ひとつひとつ手動でやったほうがエラーも無く早いという。 エイティーンさんは、一回だけ自動回復付けて、なんか、もう、こんな感じで良いかなとラインに来たので また別キャラに逃避します。 tu.be/C-_sJr-DUXM
349 :名前は開発中のものです。 :2022/04/30(土) 02:15:26.77 ID:rxj78wqY.net void sprite = getentityproperty(self, "sprite",getentityproperty(self,"animpos")); ここは機能していないので削除です。こうして手探りで各コマンドの効能を調べてます。 切実にに情報が欲しいのが int Swidth = getgfxproperty(sprite, "srcwidth"); int Sheight = getgfxproperty(sprite, "srcheight"); この辺の使い方で、GetGfxProperty でSprite情報を取得して Swidth、Sheightでスプライト画像の幅やYの長さが取得できればいいなと 勝手に想像してるんですが、結果OffSetは0,0になってしまうので まったく成功の兆しがありません。 例えば、Animの特定フレーム((AnimPos)のSprite(画像)の情報を取得して その画像のキャンバス情報(横100*縦200ドットとか)を取得できる手段がありましたら ご教授ください。宜しくお願いいたします。
350 :名前は開発中のものです。 :2022/04/30(土) 02:33:43.50 ID:rxj78wqY.net anim idle @script if(frame==2) { void self = getlocalvar("self"); int MHP = getentityproperty(self, "maxhealth"); if(getentityvar(self,"PNC")==NULL()&&getentityproperty(self, "health")<(MHP/5)) { setentityvar(self,"PNC","On"); setentityvar(self,"PCT",openborvariant("elapsed_time")+1500); spawnAni("FightEF2", 0, 0, -1, "ANI_Follow12"); } } if(frame==3) { void self = getlocalvar("self"); int incDM = getentityvar(self,9); if(incDM!=NULL()) { setentityvar(self,9,incDM-=2); } if (incDM<=0) { setentityvar(self,9,NULL()); } if( getentityvar(self,"PNC")=="On" && getentityvar(self,"REV")!="On" ) { int MP = getentityproperty(self, "mp"); int MHP = getentityproperty(self, "maxhealth"); if(getentityproperty(self, "health")>MHP/2||openborvariant("elapsed_time")>getentityvar(self,"PCT")) { changeentityproperty(self, "mpset", 100); changeentityproperty(self, "mp", MP); spawnAni("ALLSP", 0, 0, 0, "ANI_Idle"); spawnAni("FightEF2", 0, 0, 0, "ANI_Follow29"); changeentityproperty(self, "health",MHP*0.75); setentityvar(self,"REV","On"); setentityvar(self, "PCT", NULL()); setentityvar(self, "PNC", NULL()); setentityvar(self, "SSP", NULL()); setentityvar(self, "KSP", NULL()); } } } @end_script
351 :名前は開発中のものです。 :2022/04/30(土) 02:47:59.07 ID:rxj78wqY.net >>301 さんのレスから そんなに難しい事なんかないよ!と言いたくて、 すこしスクリプトを書いてみましたが、ポンコツな私の能力では 結局こんなんなっちゃって、もうなんと申したら良いかって感じです。 やりたいことは HPが一定数減ったか? HPが減った状態から回復したか? 強力な必殺技を一定数使ったか? だけなんで、内容はシンプル。ただ、関連するAnimが他に Anim Faint、Anim Fall、Anim Pain、Anim Rise 少なくとも4つあるので、記述そのものはコピペでOKとはいえ面倒だなーと思いました。 手前味噌ですが、やってみたら意外とアクセントになって良かったかも? という感想です。
352 :名前は開発中のものです。 :2022/05/07(土) 01:55:26 ID:NmRbFI7S.net スクリプトで Looper を紹介しましたが 標準コマンドの Loop も十分に活用できるものです。 基本は Loop 1という感じで 1と0でOn/Offの関係です。 Loop 1 5 とすると10FrameあるAnimの場合、一回10Frame目までAnimを 実行した後、次は5Frame目から繰り返しでAnimを実行します。 例えば、Anim Runで0〜4Frameまでは走り始めのアニメ、5〜10Frameは 走っているアニメとすれば、最初の一回だけ0〜4Frame、以降5〜10Frameの 繰り返しでスムーズに走っている状態のアニメを再生できるわけですね。 Anim WalkやAnim Idleといったお馴染みの動作を想像していただければ分かり易いかと。 Walk Idle Run などはいつでも別な行動でキャンセルまたはリセットできるので 問題ないのですが、Anim FreeSpecialなどキャンセルできない行動にLoop 1と してしまうと 延々と同じ動作(Anim)を続けてしまいます。 そんなときは、ChangeEntityProperty({Self}、"Animation"、"")や ExecuteAnimationなどを@Cmdを使って実行し、強制的に別Animに移行したり Cancel を使って別なFreeSpecialに移行したりします。
353 :名前は開発中のものです。 :2022/05/07(土) 02:01:51 ID:NmRbFI7S.net 上の閉じたLoopでも BBoxで喰らい判定や、Attackコマンドと付随するFollowコマンドがあれば 別なAnimに移行できます。 なので、あえて閉じたLoopを使って、チャージの真似事をさせたり CancelでA2ボタンを押すたび別なFreeSpecialに跳んで、A2を押した数だけ べつな技を出す。なんてことが可能になります。 もちろん別な方の受け売りですが、Loopひとつで技のヴァリエーションが 増えるのはなかなか便利です。
354 :名前は開発中のものです。 :2022/05/10(火) 06:46:43.73 ID:ANAGzemE.net Jenniferで思ったけれど ゴオン・リーラ・ディ・ディオとか グリズリーコークスクリューマグナム みたいな巨大すぎる手だけの背景技が作りたいのと バットルサーキットみたいにショップに入れたりしたら面白いのにね
355 :名前は開発中のものです。 :2022/05/11(水) 03:15:52.16 ID:5CHTfmx4.net 背景技に関してはどこまで凝るかによりますが name {waza} type text subtype noskip こんな感じでEnityを作ると、このEnityがSpawnFrame などで呼び出されている間、 ゲームが一時停止されるのを利用するのが単純でよいかも? スクリプトで存在している全てのEntityに対してFreezeやStun状態にして プレイヤーのAnimをDrawmethod Scale {倍率}で巨大化させるという手もありますし。 PlayAnim(うろ覚え)でGIFアニメを再生するコマンドもあったはず。 画面一杯に演出を表示してボム的な技を繰り出す事に関してはかなり自由にできると思います。 お買い物に関しては、 DungeonsDragons Rise ofWarduke2015(Rise ofWardukeは少なくとも2種類ある) MIX Mastersあたりが、とても参考になります。 うろ覚えですがTekkenのDemoが装備品としてプレイヤーのステータスをアップする スクリプトを組んでいたような?
356 :名前は開発中のものです。 :2022/05/12(木) 03:20:11.72 ID:4lLWq45r.net PlayAnim(うろ覚え) => X Animation data/scenes/scene.gif 0 0 こちらが正しい表記 最後の 0 0 はXY座標 このコマンドでGIFアニメを再生できます。主にDEMOシーンなどに使います。 インゲーム中は普通に{Entity}を作ったほうが早そうです。
357 :名前は開発中のものです。 :2022/05/14(土) 02:02:26.01 ID:3oAON5YM.net 動画でOVERLOADをあげましたが、 何でかというとハンドガンの弾薬数を数字で表示したかったからです。 件のMODはハンドガンがプレイヤーに標準装備というなんとも掟破りな感じで私は大好きですw @script if(frame==0) { void self = getlocalvar("self"), gun = getlocalvar("G"+self); if(gun==NULL()) { gun = 0; setlocalvar("G"+self,0); } int Blt=(8-gun); settextobj( 9, 30, 200, 4, 0, Blt, openborvariant("elapsed_time")+600); } @end_script これをAnim Idleなど必ず1回は実行されるAnim に記述しておくと 画面左下に 数字がチョコンと表示されます。 このスクリプトの肝は settextobj のところで、どうもこれは標準コマンドっぽいのです。 {Index} {X} {Y} {Font} {Layer?} {表示したい内容} {表示する時間} DCManualに載ってなかったので手探りですが、意外と便利(Update,Updated を使わなくてすむ) 似たものに drawstring(int x, int y, int font#, text, layer) というのものがあるのですが ちょっと使いにくいので settextobj を専ら使っています。
358 :名前は開発中のものです。 :2022/05/14(土) 02:07:27 ID:3oAON5YM.net 動画のMODでは基本無限に撃ててしまうので、8発ごとにリロードを挟むようにしました。 anim freespecial @script void self = getlocalvar("self"); void gun = getlocalvar("G"+self); if(frame==0) { if (gun==NULL()) { setlocalvar("G"+self,1); } else { if(gun>=8) { performattack(self,openborconstant("ANI_FOLLOW5",1)); } else { gun = gun+1; setlocalvar("G"+self, gun); } } } @end_script Ani_Follow5に跳んでる部分がリロードアニメです。 このスクリプトでは LocalVar GlobalVar を使ってますが 少し上のレスの EntityVarを使えばもっと単純にできますね。
359 :名前は開発中のものです。 :2022/05/14(土) 02:32:09.60 ID:3oAON5YM.net 以前にも紹介しましたが @cmd clearspawnentry();setspawnentry "name" "test" @cmd bindentity spawn() getlocalvar("self") 60 1 40 1 0 1 こんな感じでたった2行でBindEntityが使えるので、 キャラクターと一緒に移動するエフェクトを表示したい場合などに便利です。
360 :名前は開発中のものです。 :2022/05/14(土) 02:37:55.00 ID:3oAON5YM.net SpawnFrameと同様の動作をする spawn(); ですがこの場合は座標の補正や向きなども指定しないとならないので @ScriptやScriptsで定義したほうが使い勝手が良くなります。
361 :名前は開発中のものです。 :2022/05/14(土) 03:25:29.49 ID:oWC+YZhm.net テラワロス syodai.g3.xrea.com/ura/patch.htm どうせならいつでもメニューを開けるようにできればPCゲームに負けないインパクトを出せそう
362 :名前は開発中のものです。 :2022/05/14(土) 14:26:04.17 ID:3oAON5YM.net ポーズメニューで難易度や同士討ちの設定など出来るようになってるのが ベア・ナックルX{#}で大元はChronoCrashでお馴染みクラタス氏だったような? tekken何とかdemoやknights and dragonsの何作目だったかポーズメニューで 装備品を切り替えてプレイヤーの攻撃や防御を変化させてたような? メニュー作りの基礎はRocketViper2やTMNTの何作目だったかBonus氏のMODが参考になるかと
363 :名前は開発中のものです。 :2022/05/14(土) 23:56:15.60 ID:3oAON5YM.net RVGM set OprnBOR PACK Open BoR Game Club この辺で検索するとメージャーなMODがリンクと共に紹介されています。 それぞれモッダーさんによって標準コマンドのみであったり そこまでスクリプト使わなくてもって感じに作成されています。 興味を持ったMODをアンパックしてDATAの中身を覗いてみれば 自分が作りたいMODの良いヒントが見つかるんじゃないでしょうか。
364 :名前は開発中のものです。 :2022/05/15(日) 11:25:46.85 ID:pXw15ZHa.net もうすぐこの文章も消えますので保管します 古いリスト一覧表 (閲覧できるだけ) m.vk . com /pages?oid=-156200484&p=Y (空欄3個) ia904502.us.archive . org /view_archive.php?archive=/1/items/OpenBOR-Launchbox-Pack/Game%20Paks.7z (空欄3個) mugenarchive . com /forums/archive/index.php/f-5-p-15.html (空欄3個) 3706 Ladies of Rage 不足分?
365 :名前は開発中のものです。 :2022/05/15(日) 11:44:51.33 ID:pXw15ZHa.net もうすぐこの文章も消えますので保管します2 www.afeidj . com /tag/openbor/ (空欄3個) パス afeidanji
366 :名前は開発中のものです。 :2022/05/18(水) 01:21:30.91 ID:2bJvsfcm.net ツールなども開発しているクラタス氏 スクリプトを覗かせていただくと、最近のものはDeffine などを駆使して 省略形を使ったりしてちょっと癖が強いので、 すこし前のSoR2XMegaMixあたりだと読みやすくとても勉強になります。 getentityproperty(self,"animhits") こういった Propertyの使い方なども とても参考になります。
367 :名前は開発中のものです。 :2022/05/18(水) 01:29:14.80 ID:2bJvsfcm.net performattack(self, openborconstant("ANI_FOLLOW8"), 0); changeentityproperty(self, "aiflag", "jumping", 1); changeentityproperty(self, "takeaction", "common_jump"); こういった処理を見つけて、こうすればANI_Follow8はジャンプ扱いになるのかな? と予想して自身の処理に組み込んでみたり。 changeentityproperty(self, "takeaction", "common_grabattack"); これだとAnim Grabattack 扱いになるのかな?などと色々実験してゆくうちに 夜が明ける感じです。
368 :名前は開発中のものです。 :2022/05/22(日) 22:22:15.61 ID:VlDnYkVW.net 保管させてください mk2k.net/releases/psp/games/ ameblo.jp/shoanddiggy/entry-12224585029.html 3943668BiiEff www.juwanshe . com /roms/bor/91-2-0-0-1.html 同人射撃遊戯東方射手5 mega.nz/file/LcQmQIjY#UOxB_BnsaJdT9uAIU9hI6VUBl5qcfXP_rsaPSr69NR0
369 :名前は開発中のものです。 :2022/05/22(日) 22:35:25.61 ID:VlDnYkVW.net 寝ぼけてすごく間違えちゃった
370 :名前は開発中のものです。 :2022/06/01(水) 02:50:36.94 ID:JmmaEfzE.net くにおくんLAが流行のExtraMenuも導入されて、Ver3.1.6になってますね。 海外の くにおくん人気は凄まじいものがありますが、やはり元が良いからでしょうか。
371 :名前は開発中のものです。 :2022/06/02(木) 00:15:15.40 ID:Jne9s08k.net ハイスクルーのやんちゃな男女が大暴れっていう、 くにおくんの系譜は現役で作られているようですね。
372 :名前は開発中のものです。 :2022/06/02(木) 00:42:54.95 ID:Jne9s08k.net >>358 射撃武器を使った場合、弾薬の演出で簡単に済ますなら Anim Attack{#}のコンボ途中にリロードアニメを混ぜればよいかもですね。 例えば、 Anim Attack5に射撃アニメ Anim Attack6にリロードアニメ ヘッダーの設定で AtChain 5 5 5 6 0 のようにすれば4発撃ったらリロードになります。 Range を設定すれば、AtChain 1 1 2 3 0 5 5 5 6 0 これで 近距離(1 1 2 3)殴り、遠距離射撃(5 5 5 6)にできるかも? ふと思いついたのでまだ試してませんがw
373 :名前は開発中のものです。 :2022/06/03(金) 02:24:03.03 ID:9BJR8uXf.net 何度目になったか、もう数えてませんが くにおくんLA 最後まで遊ばせていただきました。 kt住江 氏の間の取り方、適度な演出、攻撃とHPのバランスの妙 最高ですね。Ver3.1.6などのEdit作品も原作リスペクトのアレンジでよいのですが アンバーちゃん氏の巣穴ページからDLできる初期オリジナルが至高ですね(個人の見解)。
374 :名前は開発中のものです。 :2022/06/03(金) 21:14:08.99 ID:7Ag/1Egm.net ちゃん氏ワロス さすが日本人!全てに数字の鍵がかかってるね!
375 :名前は開発中のものです。 :2022/06/03(金) 21:46:04 ID:7Ag/1Egm.net そして書き込みエラーワロス mrbdn316.bl og36.fc2 . com /bl og-en try-1186.ht ml?sp
376 :名前は開発中のものです。 :2022/06/03(金) 22:49:14 ID:9BJR8uXf.net Pass はDLページの一番上に書いてありますよ? Edit作品は ChronoCrash にあります(要Login)。
377 :名前は開発中のものです。 :2022/06/04(土) 00:43:37.98 ID:dPRWKu7b.net #define OBC openborconstant #define GEP getentityproperty #define CEP changeentityproperty #define SLV setlocalvar #define GLV getlocalvar #define GEV getentityvar #define SEV setentityvar #define CLP changelevelproperty #define OBV openborvariant #define COBV changeopenborvariant #define GPP getplayerproperty #define CPP changeplayerproperty #define SGV setglobalvar #define GGV getglobalvar #define self GLV("self") こんな感じにスクリプトで宣言しておく事で
378 :名前は開発中のものです。 :2022/06/04(土) 00:50:34.82 ID:dPRWKu7b.net void rotation() { changedrawmethod(self,"enabled",1); changedrawmethod(self, "rotate", GGV("rotation")); if(GEP(self,"type") == OBC("TYPE_NONE") ) { if(playerkeys(0, 3, "moveup")) { float xpos = openborvariant("xpos"); float x = GEP(self,"x"); CEP(self, "velocity", (cos(GGV("rotation")) * 95)*0.01 , (sin(GGV("rotation")) * 95)*0.01, NULL() ); //Move! if( x > xpos+310 ){ CEP(self, "position", xpos+310, NULL(), NULL());} if( x < xpos+10 ){ CEP(self, "position", xpos+10, NULL(), NULL()); } } else { CEP(self, "velocity",0,0,0); } } } こんな風に略することができるんですが、 浅慮な私には逆にデバグ面倒になってない?と思ったり。思わなかったり。 #define GLV getlocalvar #define self GLV("self") この辺は便利そう。 〜/Data/Scripts/〜.c とか〜.h の中で使います。
379 :名前は開発中のものです。 :2022/06/04(土) 23:36:23.17 ID:/SuZQTlg.net 先生の先生?374?ux.getuploader . com /gikotakurpg/
380 :kt住江 :2022/06/08(水) 04:53:27.40 ID:wI0LZaee.net 皆様、お久しぶりです。 2022年も相変わらず能天気なkt住江です。 ダブルドラゴン番外編やくにおくんLAを遊んでくれた方、本当にありがとうございます。 最近、ようやく新たなOpenBORゲームの開発をスタートしましたので、ほんの少し告知します。 くにおくんの新たなる戦いが、中国は龍海で繰り広げられる! その名も『熱血硬派くにおくん 中国龍海編』 3〜4か月後の完成を目指しています。僭越ながら宜しくお願いします。
323 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200
本文 スレッドタイトル 投稿者