☆ベルトアクション作成 Beats of rageスレッド☆ (654レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

341: 名前は開発中のものです。 [sage] 2022/04/28(木) 01:47:31.28 ID:k34JWO6S(1/6) AAS
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: 名前は開発中のものです。 [sage] 2022/04/28(木) 01:51:47.77 ID:k34JWO6S(2/6) AAS
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: 名前は開発中のものです。 [sage] 2022/04/28(木) 02:03:08.09 ID:k34JWO6S(3/6) AAS
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: 名前は開発中のものです。 [sage] 2022/04/28(木) 02:14:43.42 ID:k34JWO6S(4/6) AAS
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: 名前は開発中のものです。 [sage] 2022/04/28(木) 02:24:25.39 ID:k34JWO6S(5/6) AAS
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: 名前は開発中のものです。 [sage] 2022/04/28(木) 03:53:19.54 ID:k34JWO6S(6/6) AAS
ステージの設定で
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 も使えば、かなり様々なことができそうです。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.032s