☆ベルトアクション作 ..
263:名前は開発中のものです。
22/02/09 22:24:10.37 3wZqpd99.net
>>261-262
うおーありがとうございます!>>160の通りにやったら無事成功しました
解説いただいたんで理解が深まりましたよ、何度もご丁寧にありがとうございました!
264:名前は開発中のものです。
22/02/11 02:59:45.13 aG1kfbJs.net
すでにCrimeBustersやLadiesOfRageなど参考になる作品が挙がっていますが
MOD内のスクリプトや各Entityの動作なんかが素直で読みやすいと個人的に感じるのが
WorldHeroesSupremeJusticeExtraとか、RocketViper2Purificationなどで入手し易いと思います。
同じRocketViperでも最近のものはメニューやプレイヤーセレクトなどもスクリプト使いまくりで
派手で凄いですが、なにもそこまでって感じなので、
MOD作成のお手本としては少し古いものをお勧めします。
特にRocketViper2Purificationあたりは、ストーリー(アクション画面上で展開)や
背景のアニメーションなど、わかり易く作られています。一通り中身を覗いてみれば
漠然とした自分のやりたい表現の手段が見えてくるんじゃないかなー?と思います。
BurnigFoxSilverEditionあたりも良いかもしれません。
265:名前は開発中のものです。
22/02/11 18:41:50.61 aG1kfbJs.net
すでにご存知の方も多いかと思いますが、ChronoCrashサイトにて
Piccolo氏が ToolKitを発表されています。
簡単に言えば、OpenBoR Statsです。
まだ試せてないですが、ムゲンのSFFやAIRファイルも読めるようです。
使用感としてはムゲンのFFのように、その場でAnimを再生したり
オニオンスキンが使えたりで、新鮮な気持ちでキャラ作成ができそうです。
266:名前は開発中のものです。
22/02/11 18:57:17.48 aG1kfbJs.net
>>262 さん
ちょっとした表示だけなら
Subentity {entity}
SpawnFrame # x z y c
あと似たものにSummonFrame
#はそのAnimでのFrameを上から数えて何番目か x z y は座標、
cはキャラクターの画像の位置か、画面の左上を0として数えるかです。
これを使って{entity} を表示させる事ができるんですが、
この場合、キャラクターが移動すると
{entity} は画面上の最初に表示された位置に留まってしまいます。
エフェクトなんかには便利です。
SummonFrameを使った場合の違いは、呼び出したものを任意のタイミングで消せる事でしょうか。
呼び出したキャラが倒れたら一緒に消えるとかできます。
SpawnFrameだと{entity}にLifeSpan を設定しておかないと表示された場所に残り続けます。
267:名前は開発中のものです。
22/02/15 03:22:00.11 XMpwbOyV.net
>>251 にあるスクリプトに @cmd dasher を組み合わせて
簡単に 相手を引きずって投げる 動作をさせてみました。
動画ではカクカクですが、もともとのキャラクターはムゲン用に作成されたものなので
スプライトが豊富でとてもスムーズに動いてます。
うちのPCが貧弱なのでコマ落ちしてますw
うちの環境ではPicclo氏のToolKitではAirファイルの変換は出来なかったので、
まだエディター部分以外はメニュー表示だけかもしれません。
まだ暫くはOpenBoR Stats0.53のお世話にならないとです。
268:名前は開発中のものです。
22/02/17 03:44:44.17 PDHSLg1A.net
有名で入手し易い作品、InfinityWar
プレイアブルキャラも非常に多く、疎いのでちょっと判りませんが
きっと原作のキャラの特徴を捉えているんだろうなと感じます。
スプライトの枚数は少なくてもとても活き活きしているので
一度覗いてみると、とても参考になります。
特に、スクリプト部分では Updated.c 部分が Zoom (技を使うとき一瞬拡大)特化なので
必殺技のエフェクト時にどのように画面の一部を拡大してるか、わかり易いと思います。
Anim の中で Loop 1を設定して、@CMD で Velocityを 0 0 0 にすると浮きっぱなしになるのは
かなり参考になりました(Cancel 0 99 0 A Freespecial#などで離脱する手段が必要)。
269:名前は開発中のものです。
22/02/19 03:28:54.07 9tJDMn9r.net
>>268 で、Anim中に Loop 1 など設定されていると
ChangeEntityProperty({Entity}, "Animation", openborConstant("ANI_Freespecial"))
など使って別なAnimを実行させようとしても抜け出せない事があります。
そんなときは、PerformAttackやExecuteAnimationを使う事になりますがそれでもだめな事があります。
Running # # # 1 1 などと設定されていると特にわかりやすいのが
Anim Run中に 一旦 Freespecial# に移行しても、また Anim Runに戻ってしまいます。
Anim Walkや Idleに戻ってしまうなど。
これはOpenBoRの仕様なのでどうしようもない面もあるのですが、
ChangeEntityPriperty({Entity}, "AIFlag", "Running", 0) とすると
Anim Runのループから抜け出せたり、同様にAnim Idleなら
ChangeEntityPriperty({Entity}, "AIFlag", "Idling", 0)
Walking、Jumping などなど、様々なAnim毎ににあります。
DCManualにもAIFlagに関してはほぼ載っていないので(私の探し方がわるいかも)、
いろいろな方の作られたスクリプトを覗くか、自分で総当りで試すしかなさそうです。
まあでも、IdleやRun、Jumpから抜け出せれば大概の事は足りるんじゃないでしょうか。
270:名前は開発中のものです。
22/02/19 03:40:05.66 9tJDMn9r.net
私がよくやるのが、Anim Grabに
Cancel {startFrme} {endFrame} {0} {A2} Freespecial#
ex.: Cancel 0 99 0 A2 Freespecial1
と記述して、キャンセル技が出るようにすることです。
乱戦中、コマンド技を出そうして意図しないところでGrab状態になってしまい、
とっさにJumpボタン(Grab終了技(Anim_Attack3))を押せればよいのですが、
気付かずお見合いになって他の敵から攻撃を受けてしまうことがあります。
そんな時、GrabにCancelコマンドを記述しておけば、下・右・A2なんてコマンドの時
敵を掴んでしまってコマンド技が不発でも、Cancelが発動して、何らかの技が出せるようになるわけです。
まああ、Grab状態のときは BBox 0 で無敵にしておけばよい事なんですがw
271:名前は開発中のものです。
22/02/19 04:49:31.93 9tJDMn9r.net
とても凄いスクリプトがChronCrashで発表されてます
2人でプレイしていた場合、画面のプレイヤーキャラが離れると
画面が分割されて表示されるというもの。
画面内にもう一つ画面を用意して、プレイの様子を映し出す演出は
RocketViper2等でもありましたが、プレイヤーの動きに合わせて
画面を分けるなんて凄い技術ですね。
272:名前は開発中のものです。
22/02/19 10:48:11.30 9tJDMn9r.net
もう一つ同じKratus氏が上げてるzoomBoss も大変使い勝手が良いです。
特定の場所をアップ(zoom)にすることができるので、ボスに限らず
ステージの目標やゴールにも簡単に応用できます。
この方のように発想を道具(スクリプトライブラリ)と結びつけられる能力を一欠片でも欲しいw
273:名前は開発中のものです。
22/02/20 02:17:16.16 4xgUpQdN.net
Kratus 氏の作成したスクリプト Zoom for Bosses を早速つかわせていただいて
動画にしてみました。
ついでに上のほうにあった ランダムな敵の出現スクリプトもテスト。
スクリプトは上手く動いてくれているのですが、WallやPlatformの設定がイマイチで
設定しても基本透明なので確認が難しいです。
if (openborvariant("count_enemies")<4) { 〜
この一行を足して、敵の数が 4以下になったら補充って感じで敵をスポーンさせます。
Level.txtのGroup {Min} {Max} と同じような感じになります。
274:名前は開発中のものです。
22/02/24 04:36:47.41 Xp/HWEAz.net
そういえばこれって防御力って概念はないんですかね?
275:泥酔迷走スーパーラリー
22/02/24 10:55:39.59 +Q1phfs/.net
キャラの中にキャラを埋め込んで
やられたり倒したりしたら
変身できたりしたら面白いのにね
生物から背景(ドラゴンズクラウンラスボス)とかね
276:名前は開発中のものです。
22/02/24 23:08:04.14 lG9kY8kz.net
>>274
offense
defense という要素がありますよ
それぞれに、normal攻撃からburn,freezeなどなど
なので普段のAttackコマンドなどでは攻撃力を変えずに
offense all 1.5 とヘッダーで設定すれば、全ての攻撃が1.5倍に
defense all 0.6と設定すれば被ダメージが40%減らせます。
>>275さん Weapon コマンドを上手く使って変身を実現してるModなら
ありましたね。
277:名前は開発中のものです。
22/02/25 14:46:49.81 jrQUKCkk.net
>>276
defense all いけました!
ググっても情報見つけられなかったんで助かりました!
278:名前は開発中のものです。
22/02/27 01:07:56.28 ofDNDNVo.net
Offense は 特殊攻撃 Burn Shock Freezeなどの攻撃力を上げ下げするだけなんですけど、
Deffense はBurnは吸収する、 Freezeは弱点で喰らいダメージ1.5倍 などなど
様々な設定ができるようなんですが、わたしもまだ真っ当に弄った事ないので
All で全ての攻撃に耐性をつけるくらいしか。
MODではD&D系のもので設定してる事が多いかも?
うろ覚えなんですが、通常攻撃は全く効かず、炎の攻撃で秒サツみたいな敵キャラが
登場したような?
279:名前は開発中のものです。
22/02/27 03:32:35.68 BVcqNQ44.net
掴み技からレバガチャで脱出みたいなのってできます?
280:名前は開発中のものです。
22/02/27 20:33:11.90 ofDNDNVo.net
>>279
mod レスキューコマンド2やトラブルインサウスタウンなどで
使われてますね、仕組みとしては
掴み側の敵の攻撃が成功したら、レバガチャ用のentityを喰らったプレイヤーにbindしてます。
レバガチャentityはプレイヤーのレバーとボタン入力をスクリプトで検知して
自身のhealthを減らし、0になったら消滅するので脱出成功。
掴んだ側の敵は、delayなどで一定時間待ち時間を
281:名前は開発中のものです。
22/02/27 20:37:32.32 ofDNDNVo.net
経過したら、攻撃コマンドを実行させるというもの。
プレイヤーを掴むときはスクリプトのslamstart〜positionコマンドで拘束します。
実際にmodをプレイしたほうがわかり易いかもw
282:名前は開発中のものです。
22/02/27 21:01:29.27 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:名前は開発中のものです。
22/02/27 21:07:55.32 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:名前は開発中のものです。
22/02/27 21:51:12.10 ofDNDNVo.net
別のテストのときの動画なので、ちょっと混沌として分かりずらいですが
レバガチャの様子がが映ってたので参考になれば。
tu.be/V4o4JU56YFU
285:名前は開発中のものです。
22/02/28 02:55:23.68 T0w0iYnz.net
>>280-284
ぐおおおおお!お手間取らせました、すみません!
やっぱり簡単にはいかないんですね…全く理解が及びませんw
少しずつやってみようと思います、ありがとうございましたm(_ _)m
286:名前は開発中のものです。
22/02/28 18:49:21.11 e4RME2GR.net
>>285
mod トラブルインサウスタウンの data/chars/misc/grab/grab1.txt
に上のレバガチャentityがあります。
基本 >>251 のようなslamスクリプトと一緒に混ぜて使います。
modをプレイして動作を実感したあと、entityのtxtやスクリプトを
覗いたほうが理解しやすいかも?
txtをコピーしてキャラ画像を差し替えてみたりとか。
私は良く関係無い画像を表示させて、しおりというか目印にしてますw
287:泥酔迷走スーパーラリー
22/02/28 20:37:06.80 ya7gt2me.net
ファイルが大きすぎる上に投げ抜けできた試しがないので
Bad SchoolGirlsの
ひなたとかの方が良くないですかね?
受付時間がひどいですけど
288:泥酔迷走スーパーラリー
22/02/28 21:05:31.57 ya7gt2me.net
545c . com /f/13296827-500775648-7a875b
(空欄3個)
パス? afeidanji
289:名前は開発中のものです。
22/03/01 02:54:01.00 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:名前は開発中のものです。
22/03/04 03:31:38.49 y6oPXV1f.net
キャラクタの登場が大爆発だったり、specialアタックが天空高くヒップアタックだったり
謎のシュールさが良い味のmodを提供している、
G.P.Smith氏がHAG+3というmodを上げてらしたんで、
もしやと思ってプレイしてみましたが元のmodはHAGv5.0のようです。
v5.0とv6.0の違いはプレイアブルキャラだけのようですが、
剣を持ったWWがプレイヤーキャラだったりと中々カオスですw
スクリプト無しでかなり軽いんで人気なんですかね?
291:名前は開発中のものです。
22/03/04 07:39:18.87 vVdcxQXF.net
もう少しだけヒントを
是非お願いします!
292:名前は開発中のものです。
22/03/04 08:56:57.17 vVdcxQXF.net
284様ありました!
情報ありがとうございます!
293:天堂少女6.0探しています
22/03/04 10:31:25.42 cEKsJ0D+.net
天堂少女6.0探しています
ありがとうございます!やってみたけれども
Dボールの嫁(18gou)さんとかB.jenetさんとかがいなかった
本物はキャラクター10人超えているはずで難易度セレクト的なものがあるはずです
これら本物?(中華)にしかない素材の断片をずっと探していたのですよね
でもなかなかうまくいきませんね
294:天堂少女6.0探しています
22/03/04 11:12:53.78 cEKsJ0D+.net
もしも見つけていたら更なるヒントを願っています
295:天堂少女6.0探しています
22/03/04 16:23:19.06 cEKsJ0D+.net
スミスちゃんはコウちゃん作品使っていた?というよりもむしろ
ほかの人の作品をアップしすぎです(笑)
296:名前は開発中のものです。
22/03/05 08:00:40.28 p49CKOCm.net
KOH氏の特徴のあるキャラ動作までよく似てますね。私はキャラのモチーフの選定センス(こより等)と愛のあるグラフィックでKOH氏のファンです。
Smith氏の「細かい事はいいから勢いと爆発だ」的なセンスも好きです。
297:名前は開発中のものです。
22/03/06 03:35:38.26 D4DSTBj4.net
お手本MODとしてかなり有名かと思います、CrimeBustersを480x270に対応させようと
いろいろ弄ってみましたが、どうやら既にあるっぽい?半分諦めムードw
せっかく作ったのでステージ1の動画(音声無し)。
P1とP2の操作コンフィグを同一に設定して擬似2Pプレイ。
tu.be/dgHMFoynmAg
298:名前は開発中のものです。
22/03/10 01:37:04.97 iC7iqZ0i.net
そういえばピヨリみたいなのって作れるんでしょうか?
299:名前は開発中のものです。
22/03/11 03:47:02.05 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:名前は開発中のものです。
22/03/11 05:25:36.84 /kzpLClR.net
ダウン、動けない、追撃、拘束系
挽歌くにお等みたいに細かい事ができるものは殆ど無い見たことが無いです
openborはどうでしょうか
くにお等はバックドロップや馬乗りも印象的でした
301:名前は開発中のものです。
22/03/11 11:57:25.86 UqoUjlxU.net
>>299
ピヨリ値蓄積みたいなのをやりたかったんですけどやっぱ複雑ですか…
ピヨリ専用のリアクションいいかも知れません、ありがとうございました!
302:名前は開発中のものです。
22/03/12 01:40:59.64 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:名前は開発中のものです。
22/03/23 01:49:53.63 YS0aCHsY.net
アニメカオスやHAGなど話題に上っていたので、私も”みたいなもの”を作りたいなと思いたち、
何もギミックなど無く、ただ敵を適当に配置してボスまで10分程度のステージ。
しかもステージリソースなどは他の方が作成したものをお借りさせて頂いてるのに、
それでも3日以上かかるという、自身のセンスの無さに辟易。
いくつか実験的なことをしてるとはいえ、混沌としてしまい、たびたびプレイヤーを
見失う事になる悲惨な構成。ただキャラをバラ撒くだけでもこんなに難しいとは。
まあある意味カオスだしいっか。
ステージ構成の〜.txt中でも@scriptで各種Entity(敵とかNPCとか何でも)をTossEntityで
ステージに放り込んだりできるのは発見でした。
ExecuteAnimationやPerformAttackなどで、ステージ登場時に特定の動きも
させられます。動画の最初に敵が跳びこんで来るのとか。
tu.be/DZkZLRIJmxk
304:名前は開発中のものです。
22/03/23 02:14:49.64 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:名前は開発中のものです。
22/03/23 03:42:34.71 YS0aCHsY.net
意外と知られて無いのかも?
anim attack ではなく、コマンドのattackでattack4と記述して、このattack4が相手にヒットした場合、
ヒットした相手にanim pain4やanim fall4などが存在していれば、
そのanimが優先して実行されます。
スクリプトslamstartなんかは、これを利用して専用ヤラレを表現してるんですね。
attackコマンドには一緒に記述することで、他にも特別な動作をさせるサブコマンドがあるので
DCマニュアルで調べてみると面白いです。
よく使う吹き飛びの距離を変化させるdoropvとか、
forceDirectionとstunを組み合わせると、相手を振り返らせてそのまま硬直させるとか。
306:名前は開発中のものです。
22/03/23 07:46:06.96 YS0aCHsY.net
doropv ミス
dropv Y X Z 高さ 幅 奥行 に吹き飛ばす方向の調整attack コマンドと一緒に使用
面白いのがDOT 多分ダメージオーバータイムの略で、指定したダメージを
一定時間と回数(5ダメージを1秒に1回3秒間など)、ヒットした相手に与える。
OTG オンザグラウンド?anim fall等で地面に倒れている相手にもattackがヒット、
ただし倒れている相手にBBoxを設定する必要があります。
結構沢山の要素が設定できるので、標準コマンドでもかなりの事が出来ますね。
307:名前は開発中のものです。
22/03/24 08:53:50.15 SUDjzvRe.net
DCマニュアルとうのは
>>2 の上段のサイトのことですね。
英語ですが、ディープL先生に訳してもらえば
かなりの情報が得られると思います。
308:名前は開発中のものです。
22/03/24 09:06:51.52 SUDjzvRe.net
最初はスクリプトなど意識せず、初代BoRのモデル設定Txtなどを読んだり、
プレイヤーキャラや敵等のHealthを100から200にするだけでも、かなりバランスが変わるのが分かると思います。
登場キャラや設定も少なめで基本はシッカリしてるので、構造が分かり易くエディットをミスしてバグっても、追いやすいというのもあります。
309:名前は開発中のものです。
22/03/27 01:42:21.92 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:名前は開発中のものです。
22/03/27 01:45:54.18 HrM0WEsM.net
>>307 2じゃ無くて >>7 ですね。
さらにミスって上げてしまいました。ごめんなさい。
311:名前は開発中のものです。
22/03/30 02:10:47.88 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:名前は開発中のものです。
22/04/07 09:32:24.21 RWamgL6H.net
bindentityの機能にターゲットと同じAnimを実行するというものがありますが
速いdelayやAnimを連続切り替えしたりすると、他のentity(敵とか)に影響が出て描画が遅れたりすることがあるようです。
特に同じAnim内でdrawmethodも使っていると症状が出やすいようです。
レイヤーコマンド使って優先順位付けしたら違ってくるかも?などと考えています。
かなり軽いエンジンなので、あんまり無理させちゃいけないのかも知れません。
313:名前は開発中のものです。
22/04/07 11:11:43.62 V6ejTjoQ.net
>>311 の回転ですが
元絵を余白も含めて縦横比を同じくらいにして
offsetを画像の中心付近にすることで、
結構綺麗に回転します。
飛翔体などならそんなに違和感ないですね。
コツが分かってくると、スピンアタック系や
ジャンプ中の前転などそれなりに使えそう。
314:名前は開発中のものです。
22/04/07 21:23:18.45 RWamgL6H.net
drawmethod rotate #とfliprotate 1はよく使ってます。
前者は好きな角度に回転させるのと、後者は対象のentiryの向きに合わせて
自動で反転してくれるというもの。
shiftx #にも自動反転があればもっと便利になるのですが、
中々難しいものです。
315:名前は開発中のものです。
22/04/08 01:33:24.24 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:名前は開発中のものです。
22/04/09 02:45:15.79 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:名前は開発中のものです。
22/04/09 02:58:53.09 huMt1Pej.net
>>316
なので、いわゆるピヨリ値などはGlobalVarよりEntityVarに収納したほうが
管理しやすいかも知れませんが、いまのマシンパワーならメモリ効率とか考えなくても
とくに支障はなさそうなので、使い易いほうで良さそうです。
318:名前は開発中のものです。
22/04/11 03:53:09.40 mFlGfZLx.net
プレイヤーが敵の情報を取得して、その敵を投げた際にdrawmerhod rotateを
使って回転しながら吹き飛ぶようにしようとスクリプト組んでたんですが
ぜーん全上手くゆかないので、プレイアブルキャラ作成に逃避
319:名前は開発中のものです。
22/04/12 01:32:29 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:名前は開発中のものです。
22/04/12 01:51:05.23 vWluw1zD.net
思ってたんと違ったけど、まあなんとか必殺投げが出来たので
最後の5行に別なスクリプトを呼んでますが、演出用なので
基本上のスクリプトをLooperという別なスクリプトで呼び出して使ってます。
動画のプレイヤーキャラ(黄色いの)が連続キックを繰り出しますが
ああいう同じ動きをするとき便利なスクリプトで、殆どのユーザースクリプトに導入されていると思います。
@CMD Looper 3 5 という感じで7番目のFrame Data/〜に記述すると
3番目のFrame から6番目のFrame までを5回繰り返すというもの
標準コマンドのLoop だと延々と繰り返してしますので、Looper の便利さが分かるかと思います。
動画だと動画のフレームが跳んでしまって分かりにくいですが、
なんとなーく私のやりたいこと分かっていただけますでしょうか?
tu.be/CRGXjQowAG8
321:名前は開発中のものです。
22/04/12 02:29:22 vWluw1zD.net
上のスクリプトは汎用性はほぼ無し、条件設定として
Health が25%切った相手を投げた際に30%の確立で発動な感じです
(動画ではテスト用に発動条件ユルユルですが)。
なのでやっぱり
攻撃者のAttack5 などに、相手側がリアクションとして Pain5 や Fall5 を
設定しておいたほうが結果手間が掛からないかと思います。
322:名前は開発中のものです。
22/04/13 00:14:16.67 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:名前は開発中のものです。
22/04/13 01:10:35.54 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:名前は開発中のものです。
22/04/13 01:17:03.20 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:名前は開発中のものです。
22/04/13 01:25:34.49 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:名前は開発中のものです。
22/04/13 04:05:16.91 aDur5ZAn.net
元々、仕様とバグのギリギリいってる手法なので、
ピヨリ中にもう一回敵からのBindEntityを利用した攻撃を受けると
OpenBoRが落ちますw
やっぱり標準コマンドで何とかしたほうが良さそうですね。
レバガチャで回復早めるとかしなければ、EntityVarを使って
値を蓄積して、一定時間無防備になるというのは
バグの危険なく可能です。
中々難しいものですね。
327:名前は開発中のものです。
22/04/17 02:42:23.91 xLR26ELd.net
なんか煮詰まったので、プレイアブルキャラ作成に逃避。
ムゲンからキャラのインポート(聞こえが良いですね)。
ここで新たに、光弾問題に遭遇、どうもDBキャラはいろいろ撃ちますが、
単純に弾を撃つならCustKnifeなりで作ればよいし、誘導弾ならType NPCのSubType Chaseとかで
追尾させればよいのですが、なんとなく弾幕作りたいな〜とかやってドハマリ中。
通常攻撃とシンプルな特殊技はこんな感じかな?
tu.be/_xQBhCUit8c
328:名前は開発中のものです。
22/04/17 03:48:50 xLR26ELd.net
SpawnEF S{vName} {X} {Y} {Z} {S} {A} {R} {Ani}
ナニコレ?
私個人のスクリプトですが、上の動画でも多用されています。
XYZは単純に座標、SはScale(Zoom)AはAlpha(透明度)R(回転)Ani(Anim)
本来、複雑な手続きを簡略化するのもスクリプトのメリットの一つだと思いますが
色々出来るようにして、かえって煩雑になった悪例w
ちゃんと設計やらしない大雑把な性格そのままです。
怪我の功名とでもいいますか、一つAnimがあれば回転拡大縮小をつかって
さまざまなエフェクトに活用出来そう。
ただし、ソースを見ないと意味不明、ですが、自身のオリジナルではないので
アップは憚れるという、ムゲンと共通のジレンマ。
オリジナルの作者様には尊敬しかないです。
329:名前は開発中のものです。
22/04/17 16:44:32.78 xLR26ELd.net
openBoRには標準でsin cos atanなど揃っていたので、扇弾を弄ってたのですが
考えてみれば敵はそんなのお構いなしですし。
自分が敵にやられたらイラだつだろうしで、全方位弾にしました。
おおよその敵の方向に撃つ直進弾がたまに止まっちゃいますがご愛嬌w
一見おおっ!となっても実は使い道の無い技ということで。
特に敵以外との衝突判定はしてないので32×4射ってますが
さすがopenBoR処理落ちなどしないですね。
セブンティーン氏が洪水おこしてますが、技が思いつかないので適当です。
Krrnはサポートに飛び込んできて、入力に連動して攻撃を繰り出すように出来ないか考え中。
330:名前は開発中のものです。
22/04/18 12:39:49 +se/Swu+.net
何の事だと思ったら、動画の話しなんですね。
まだ、何も分かりませんが、日本語での解説ありがたいです。
331:名前は開発中のものです。
22/04/19 03:14:29.19 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:名前は開発中のものです。
22/04/19 03:24:07.55 a3xIrRSp.net
>>別キャラ({Weapon})
({WeaponFrame} や{WeapLoss} などを設定して切り替わるようにする)。です。
このあたりの設定の細かさは流石です。
333:名前は開発中のものです。
22/04/20 21:43:31.43 PW9VJXxm.net
weaponの技の上書きというより、マージと言ったほうがわかり易いかも?
Anim Freespecial1のみプレイヤーキャラにあって、weaponにAnim Freespecial2があった場合、武器を拾ったプレイヤーは両方使えるようになります。
Modelflag{0,1,2}を設定してないと、混ざったままになってしまうことがあるということですね。
334:名前は開発中のものです。
22/04/22 01:04:20.67 g9+olsrt.net
算数も割り算の時点で微妙な私は、もちろんプログラムなんて全く分からなかったけれど
kt住江さんの作品に出会ってOpenBoRを知って、なんとか拡散砲を撃てるようになりました。
リソースは全部ひと様のものなので本来動画すら微妙なんですが、
スクリプトの中身見たら四則演算って知ってる?って感じですが
そんな私でも、For文とDrawmethodを組み合わせると、
こんな感じも演出出来てしまう。そしてすっごく軽いOpenBoR凄いという話です。
tu.be/hpDEMufHzC8
335:名前は開発中のものです。
22/04/25 03:51:31 vu/W7WGq.net
NO18さんの体力低下時スペシャルKRRN
最初はプレイヤーは空中に退避、各ボタン押下でMPに応じて技を繰り出す
というような感じにしたんですが、操作が煩雑になるので連打に
なんか連打も面倒(ピヨリで十分イライラですし)。
結果、全ての敵のそばに出現して勝手に暴れるように
ただ、これをやると、その後MPの回復を0か遅くする、
またはタイマーセットで規制しないと
体力下げてスペシャル連打でいいよね?になってしまうのですが、
そのへん作り込むのは面倒、良いアイデアないでしょうか
tu.be/iCGEtG9JQ8w
336:名前は開発中のものです。
22/04/25 19:15:40.23 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:名前は開発中のものです。
22/04/26 01:26:17.09 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:名前は開発中のものです。
22/04/26 01:47:14.17 tRI20Ut9.net
>>337
最後の追撃ですが、
FindTarget や Opponent、 Grabbing(Grabbed)で選んだ対象が
ANI_Fall で A=Base のType Enemyだった場合、
そしてプレイヤーの攻撃範囲であったら
スクリプト SlamStart して地面を蹴りつける動作でダメージを与えるというものを
作ったのですが、ちょっと見た目的に結構エグかったので削除。
まあそれまでにナグるわケるは好き放題にしてたくせに、何故か引いてしまいました。
別キャラの相手の背後にテレポートしてキりつけるは別にOKなんですが、
人それぞれ結構苦手なシーンがあるかもしれませんね。
339:名前は開発中のものです。
22/04/26 03:20:57.85 tRI20Ut9.net
>>313
Drawmethod Rotate を使った回転について
マニュアルには −45 とすればマイナス方向の45度に回転させられるとあり
実際出来るのですが、画像の欠けが発生し易いようなので
素直に 315と設定したほうが良さそう。
Type Enemy の設定
Anim JumpAttack は
これとRange 設定(0〜100など)だけで自動で前方ジャンプ攻撃を行います。
Anim JumpAttack2 は
同じく Range 設定で 垂直ジャンプ攻撃になります。
Type Enemyも結構いろいろ設定できるので、凝りだすとキリが無さそうです。
340:名前は開発中のものです。
22/04/26 07:34:52 tRI20Ut9.net
こちらがコンボを繰り出していると、たまに敵が無敵技で逃げたり
反撃してきたりしますが、
EscapeHits {#} ここで設定した数値+1連続で攻撃を受けると
Anim Special2 が実行されます。
Falldie # やDeath # を1にしておくと、Health 0 で必ず
Anim Death が実行されるので、フラグや演出にも使えそう。
Walk Idle Pain Fall Riseなどの各Anim はほぼ必須な Animなので
通常の利用だけでなく、必ず実行される特性を利用した演出や
フラグの処理などに。ヘッダーで NoMoveを設定しておくと移動しなくなるので
こちらも便利に使えそう。
341:名前は開発中のものです。
22/04/28 01:47:31.28 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:名前は開発中のものです。
22/04/28 01:51:47.77 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 キャラの調整って難しい。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
35日前に更新/359 KB
担当:undef