☆ベルトアクション作成 Beats of rageスレッド☆ (654レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
164: 名前は開発中のものです。 [sage] 2021/06/17(木) 02:47:33.77 ID:1MwPeeuR(1/3) AAS
DOT {Index} {Time} {Mode} {Force} {Rate}
{Index} defines DOT index. Entity may have up to 10 DOT effects at one time. An entity can be hit by more than one DOT effect at once. If entity is hit by same indexed DOT effects, only the latest one will be applied.
{Time} defines how long DOT effect active in centiseconds.
{Mode} defines how DOT effect is applied to hit entity. HP damage is same type as original attack and affected by damage mitigation.
1 = Nonlethal HP (can reduce to 1 but not below).
2 = MP.
3 = MP and nonlethal HP.
4 = HP.
5 = MP and HP.
{Force} defines amount of damage per tick.
{Rate} defines delay between each tick in centisecond.
DROPVと同じように Attack コマンドと一緒に記述することで
一定時間、ダメージを与え続けるというもの、
Indexは特に気にしなくてOK(DOTが重複して掛かるかどうか)、Timeは持続時間(600で6秒)
ModeはHPにダメージ、MPにダメージか双方か、ダメージによって消滅するか
Forceは一回あたりのダメージ。Rateは総時間(Time)中、何回ダメージを与えるか
Timeが600でRateが100なら、1秒ごとに6秒間Forceダメージ与えるというもの。
165: 名前は開発中のものです。 [sage] 2021/06/17(木) 02:55:24.76 ID:1MwPeeuR(2/3) AAS
スクリプトで同じような事をしようと思うと
anim idle
@script
if(frame==1) { void self = getlocalvar("self");
setlocalvar("BT"+self, findtarget(self));
if(getlocalvar("BT"+self)!=NULL()) {
void target = getlocalvar("BT"+self);
void PDir = getentityproperty(self, "direction");
int tx = getentityproperty(target, "x"), px = getentityproperty(self, "x");
int tz = getentityproperty(target, "z"), pz = getentityproperty(self, "z");
if(PDir) {
if( tz - pz < 10 && tz - pz > -10 && tx - px > 30 && tx - px <240) {
changeentityproperty(target, "lifespancountdown", 600 ); // openborvariant("elapsed_time")+300);
changedrawmethod(target, "reset", 1);
setlocalvar("BT"+self, NULL());
changedrawmethod(target,"tintmode",3);
changedrawmethod(target,"tintcolor",rgbcolor(255, 64, 32)); }
} else {
if( tz - pz < 10 && tz - pz > -10 && tx - px > -240 && tx - px <-30) {
changeentityproperty(target, "lifespancountdown", 600 ); // openborvariant("elapsed_time")+300);
changedrawmethod(target, "reset", 1);
setlocalvar("BT"+self, NULL());
changedrawmethod(target,"tintmode",3);
changedrawmethod(target,"tintcolor",rgbcolor(255, 64, 32));
} } } }
@end_script
余計なことたくさんしてるんで長くなってますが、
自分の進行方向の敵を標的に選んで、縦軸にずれが10ドット、横軸30〜240ドットにいる
一番近い敵の色をちょっと赤っぽくして6秒後に即お陀仏というもの
DOTと同じような事をしようとするとスクリプトでは結構な手間がかかります。
いかにOpenBoRの基本コマンドが良くできているかということですね。
166: 名前は開発中のものです。 [sage] 2021/06/17(木) 07:47:06.34 ID:1MwPeeuR(3/3) AAS
上の例は、こんなことできたらいいなで、ざっと記述し動作確認します。
動作確認できたら、同じ処理をフラグで簡略化したりして
@script
void self = getlocalvar("self");
setlocalvar("BT"+self, findtarget(self));
if(getlocalvar("BT"+self)!=NULL()) {
void target = getlocalvar("BT"+self);
int tx = getentityproperty(target, "x"), px = getentityproperty(self, "x");
int tz = getentityproperty(target, "z"), pz = getentityproperty(self, "z"), IR=0;
if(tz - pz < 10 && tz - pz >-10) {
if(getentityproperty(self, "direction")) {
if(tx - px > 30 && tx - px < 240) { IR = 1; }
} else {
if(tx - px >-240 && tx - px <-30) { IR = 1; }
}
}
if(IR) {
changeentityproperty(target, "lifespancountdown", 600);
changedrawmethod(target, "reset", 1);
setlocalvar("BT"+self, NULL());
changedrawmethod(target,"tintmode",3);
changedrawmethod(target,"tintcolor",rgbcolor(255, 64, 0));
}
}
@end_script
こんな感じに直します。動作は一緒なんで、別にやらなくても良いのですが、なんとなくw
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.020s