☆ベルトアクション作成 Beats of rageスレッド☆ (658レス)
上下前次1-新
58: 2021/03/16(火)23:42 ID:t+wd47Is(3/3) AAS
スクリプト系は大変便利なコマンドが多いのですが無言で落ちたりするので注意も必要です。
あとお約束として@cmd 以降はアルファベットの大文字小文字を区別するのでさらに注意です。
59: 2021/03/17(水)00:14 ID:qqhuc2mx(1/3) AAS
なんだか色々偉そうに書き込んでますが、私は他人の作ったMODに
ぼくのかんがえたさいきょうのって感じで
無限などから拝借ゲフゴフしたプレイヤーキャラを登場させて悦に入る事しかできません。
まったくもってOpenBoRの仕様を理解しているわけではありません。
上の方のGuardPointsについてもAttaker側にGuardCostが必要だったり各コマンド実際には
さまざまな制限があります。
ですが、まああ、とりあえず弄って遊んでみましょう、時に新しいコマンドの使い方発見や
万が一MODなんか出来ちゃったら嬉しくない?というのが、私のやりたいことです。
スクリプトなんかについても他人のを勝手にコピペして動いた!ヤッター!程度のものです。
私が書き込んだのを信用してエラー落ち頻発で悶絶しても悪しからずでお願いいたします。
60: 2021/03/17(水)01:27 ID:qqhuc2mx(2/3) AAS
頼みの綱 DCマニュアルには 操作ボタンの中で
Accepted action inputs are:
A: Attack button
A2: Attack button2
A3: Attack button3
A4: Attack button4
J: Jump button
S: Special attack button
K: Alternate special attack button
とありますが、
この一番下のKボタンてどこなんだろ?
61: 2021/03/17(水)01:36 ID:qqhuc2mx(3/3) AAS
すぐ下にBlockのKだからSpecialと一緒、BはBackで使ってるし、
コマンド指定で混乱しないようにモッダーさんが自分で選んで使ってね
的なことが書いてありました。
ググル先生やディプル先生がいなかったら一生判らないですよ。
座標指定についてもXZA(Y)だったりXA(Y)Zだったり
微妙な違いがあって、悶絶案件は尽きないですね。
62: 2021/03/19(金)02:35 ID:hdeOB3k/(1) AAS
Palette none
私にとって結構重要なコマンド
Open BoRでは基本システムで用意されたパレット(絵の具のパレットと同じような意味)を
使ってFrameで指定された画像が表示されるのですが、ご存知の通り画像にも色々な種類があって、
常に共通のパレットで画像が描かれると不都合(肌色が緑とか)が出てしまう訳です。
そこでPaletteコマンドを使い、専用のパレットを指定して画像を表示することになりますが、
結構面倒だったのが、モデルのヘッダーでPalette noneを宣言することによって、
次の最初のFrameのパレットを基準として、以降のFrameも描かれることになります。
他のEntityや多彩なFlash(ヒット演出)を使うとき便利です。
63: 2021/03/20(土)01:30 ID:nx9KiXPx(1/3) AAS
com A2 freespecial
普通は上のように設定する事で A2を押すと Freespecialが発動します。
anim walk
cancel 0 99 0 A2 freespecial2
loop 1
delay 6
frame data/chars/test/test.gif
このように Anim WalkにCancel(3つ目の数値が0なのでA2押せばいつでも)を仕込む事で
Walkはレバーを入れている方向に歩くというAnimなので、
Comで設定してなくても実質 レバー入れA2 が成立し、
Freespacial2に処理が移行します。
Anim Runに入れれば レバーx2 A2が実質成立しますし、
Run Attackとの2択みたいなことも簡単にできますね。
64: 2021/03/20(土)02:36 ID:nx9KiXPx(2/3) AAS
grabin {type} {distance} つかみに関するもので格闘ゲームの吸い込みみたいな
forcedirection {dir} 相手を無理やり自分とは反対側に向かせたりする
damageonlanding {value} {type} 吹き飛ばし攻撃で地面にFallすると追加ダメージとか
dropv {height} {speedx} {speedz} 吹き飛ばし攻撃の高さや距離を、別ラインに強制移動させたり
nokill {bool} この攻撃ではHP1を残して生かしておく
stun {int} 設定した時間、硬直させる(Freezeみたいな)
seal {time} {energy} SpecialやFreespecialを設定した時間使用できなくする
forcemap {map} {time} 設定した時間強制的にmapのパレット色にする
noreflect {bi} Anim PainやAnim Fallに移行させずダメージを与える
jugglecost {int} 打ち上げ攻撃からの追撃(おてだま)回数管理
OTG {bi} Anim Fallずみの相手にもAttackをヒットさせたり
guardcost {int} Blockしてる相手のガード削り
DOT {Index} {Time} {Mode} {Force} {Rate} 設定した時間徐々にダメージを与える
staydown {rise} {riseattack} 強制的にダウンさせたままにする、起き上がり攻撃も遅らせる
これらは、基本Attackコマンドと一緒に使う事になります。
BurnやFreezeなど元々特殊な効能のあるAttackコマンドの派生とは別に、
特殊な状況を作り出すのに便利です。
65: 2021/03/20(土)02:43 ID:nx9KiXPx(3/3) AAS
例えば
Attack 0 0 50 50 0 1 0 0 0 0
dropv 4 1 0
こんな感じで設定すると、
Attackはダメージ0だけど吹き飛ばし効果あり
そしてDropvにより
吹き飛ばしの効果に上昇4横方向1奥行き0がプラスされます
いわゆる おてだま するとき便利ということになります
66: 2021/03/21(日)02:32 ID:xsxh/Aen(1) AAS
悶絶案件
Anim ChargeAttack(一定時間攻撃ボタンを押して、離すと発動)のタメ時間を設定する
ChargeTime これは、Anim ChargeAttackの中に記述しないと(例えばヘッダーとか)
落ちます、エラーログに原因が出力されずに。
マニュアルをちゃんと読めば何処で宣言すべきか書いてはあるんですが、
他のコマンドでは間違った場所でも特にエラーも出ず、無視されることが多いのに、
上のようにエラー出力せず無言落ちするものも一部ではあるので、油断できません。
ChargeAttack自体使い辛い(特にボタンを押してタメてるとか表示されない)ので、
滅多に使わないんですけどね、専用FXの設定とかあれば良いのですが。
逆にそういうのがエラー原因だとなかなか特定できなくて悶絶。
67: 2021/03/30(火)01:38 ID:1gbSxSh3(1/3) AAS
Anim Throw
なにげに Anim Grabからの派生だと思ってしまうかもしれませんが
単体(Anim Grabが無くても)で使用可能です。
Entityのヘッダーなどで設定(宣言)した GrabDistanceの距離に近づくと勝手に投げます。
ダメージもThrowDamegeで設定できます。
手数が増えますね。
68: 2021/03/30(火)02:02 ID:1gbSxSh3(2/3) AAS
それならAnim Grabに攻撃コマンドを設定したら?
Anim Grabの最後のFrameで一旦停止して入力待ちになってしまいます。
なので、上の直接Throwは実際には手数少なくなります。
OpenBoR のシステム上、Anim Grabからの派生 GrabUp、 Grab Down、 GrabForward
さらにそこからのAttack3や各Grabの2への合計6回分の攻撃が使えなくなるためです。
しかし、Anim Grabからの一時停止によるテンポの悪さは無くなるので、
いきなりThrowは、そこまで悪手でもないのかなと個人的には思います。
69: 2021/03/30(火)10:33 ID:1gbSxSh3(3/3) AAS
訂正 ThrowDamege X ThrowDamage O
Grabに関して、6回分の攻撃?
ThrowやAttack3(GrabAttackなどの3撃目)を出さなければ、
掴み抵抗など何も設定してない敵に、
2系(GrabUp2などの2系はGrabから3撃目のフィニッシュ攻撃)までAnimを用意してあると、
連打せずポチ・ポチとボタンを押す事で各方向2回ずつ攻撃できる(GrabUp・GrabDown・GrabForward分)ので
掴んだらやりたい放題になります。
ムゲンからのキャラ流用なんかだとモーションが余る事が多いので、
派生技が多くなるのは便利です。
70: 2021/04/05(月)10:33 ID:JCfKgngn(1) AAS
ロケットヴァイパーのシステムや敵をまるごと流用してるのに作りが雑なbriga de rua(英訳street fight)
キャラクター作りに愛が無い感じで正直微妙な出来
スクリプトの内用を理解しつつ改変してるようなので
それなりの技術力はありそうなのにゲームバランスやキャラの作り込みが
今一なんでなんとも勿体無い
ただわかる範囲では3まで作られているんで力尽きてるようでもなさそう
作者さんは飽きっぽい方なのかな
71: 2021/04/06(火)01:42 ID:XHHis+ii(1) AAS
Anim Follow#に処理を飛ばせる Followanim#これは
Grabの派生攻撃であっても記述すれば効果あるので
anim grabdown
delay 8
hitflash Flash2
hitfx data/sounds/beat4.wav
frame data/chars/test/ga1.gif
followcond 1
followanim 4
attack 92 114 28 39 13 1 1 0 10
frame data/chars/test/ga2.gif
こんな感じで組み込み、Follow4なんかには
よく使う攻撃なんか設定しておけば、その他のAnimとも共用できるので
便利に使えます。
一回しか使わないなら、そのまま記述しても良いのですけどね。
72: 2021/04/08(木)01:35 ID:91QCSGqP(1/2) AAS
いろいろなMODを楽しんでいると、いつものメニュー画面とは違ったものに出会う事もあるかと思います。
基本OpenBoRではDATAフォルダの中を読み込んで、各種メニューやセレクトシーンなどに移行するのですが
(level.txtだったりBGSフォルダの中だったり)。
DATAフォルダ直下にScript.txtが用意してあって中に、alwaysupdate 1などと記述してある場合
DATA/SCRIPTSフォルダ内にある Updated.cが優先して読み込まれ中に記述されてるスクリプトが実行されます。
MOD内で普遍的に使用されるスクリプトもここで定義されている事が多いので、
まずはここを探してみるのも良いかもしれません。
73: 2021/04/08(木)02:02 ID:91QCSGqP(2/2) AAS
訂正 level.txt → levels.txt
updated.c に関しては update.c(公式ではこっち)ですが、どちらも優先して読み込まれるようです。
こちらのスクリプトに記述するメリットは、オープニングメニューを派手にしたり、
その場でゲーム難易度などを変更可能にしたり、キャラにレベルアップの要素を仕込むときや
拡大縮小、ゲームの演出上の一時停止を組み込んだりなど、基本システムへの介入を可能にする事でしょうか。
各キャラ(Entity)に一つずつスクリプトを記述する手間が省ける(setglobalvarなどで変数を渡すだけで色々処理できる)
ような感じでしょうか。可能性は無限大になりますが、作る側に立つと脳天炸裂案件ですね。
74: 2021/04/09(金)17:18 ID:ncGtWkZW(1/2) AAS
開発中断か別なプロジェクト名に変わったのかも知れない
Demon Sluga 思い切りスクリプト使って
拡大縮小、キャラクターを飛ばしたり奥や手前から敵が出現したり、誘導弾を弾き返したり
全盛期のアーケードゲーム風に作られてます
手に入るヴァージョンによってかも知れませんが海外の環境依存文字を使っているため
一部手直ししないとステージ1すら始まりません
見るべきところは
models.txt
data/misc
data/misc/plane
この辺りの pu・i.txtやpu・d.txt、pu・.gif、
それらを呼び出すplaneb2.txtなどに関連するファイルの手直しになります
75: 2021/04/09(金)17:33 ID:ncGtWkZW(2/2) AAS
幼少の頃ゲームセンターで見た
ノリマロが大活躍するRescue Command remake
敵はオンナサンばかり
面白いのは 掴まれた時のレバガチャ要素
抜け出せないとダメージはもちろん、別なイベントに移行したりと
有効に使われてます。
ゲームバランス的に敵の攻撃力が高いのであれなら
defense all 0.1などモデルのヘッダーに記述して調整しましょう
76: 2021/04/10(土)10:53 ID:36EPLB+j(1) AAS
anim idle
loop 1
delay 22
offset 23 102
bbox 13 5 22 100
drawmethod shiftx 0
frame data/chars/ciel/std1.gif
drawmethod shiftx 0.02
frame data/chars/ciel/std1.gif
drawmethod shiftx 0
frame data/chars/ciel/std1.gif
drawmethod shiftx -0.02
frame data/chars/ciel/std1.gif
アニーメーションさせるなんて絵描けないしって方は上のようにすると
一枚の元絵が左右にゆらゆらします。
drawmethod shiftx 0 数値の0は何もしない、
+−の数値を入れる事で数値分元絵が変形します。
他に Scale 大きさ Rotate 回転など様々なオプションあり。
77: 2021/04/11(日)00:13 ID:9LUoOlWn(1/4) AAS
以前にCancelで気軽にダブルジャンプと書きましたが
anim jump
loop 0
cancel 1 9 0 j freespecial3
landframe 3
offset 33 121
delay 16
bbox 19 5 31 73
frame data/chars/ciel/jmp1.gif
frame data/chars/ciel/jmp2.gif
frame data/chars/ciel/jmp3.gif
delay 12
frame data/chars/ciel/jmp4.gif
anim freespecial3
jumpframe 1 2 1
landframe 3
offset 33 121
delay 16
bbox 19 5 31 73
frame data/chars/ciel/jmp1.gif
frame data/chars/ciel/jmp2.gif
frame data/chars/ciel/jmp3.gif
delay 12
frame data/chars/ciel/jmp4.gif
具体的にはこんな感じ
78: 2021/04/11(日)00:19 ID:9LUoOlWn(2/4) AAS
上の例では見たとおりAnimの表題だけ変えて中身はほぼ一緒
anim jumpland
loop 0
cancel 2 9 0 a freespecial2
delay 9
offset 33 72
frame data/chars/ciel/jmp5.gif
frame data/chars/ciel/jmp5.gif
frame data/chars/ciel/jmp5.gif
これはジャンプの着地に攻撃(A)ボタンを押しておくとFreespecial2発動
Anim Landなんかに同じような記述しておけば、投げられ受身に
反応してFreespecialを発動なんてことも自由です。
79: 2021/04/11(日)00:32 ID:9LUoOlWn(3/4) AAS
cancel 2 9 0 a freespecial2
この記述だと Frameの2〜9の間に Attackコマンドの有無に関係なく(0)
aボタンが押されたら FreeSpecial2を実行
え?例ではFrameコマンド3つしか無いけど?
スタートフレーム(2)は大事ですが終了フレーム(9)に関しては多すぎても
特にエラーにはならないようです。
3フレームで入力なんてきついなー、Delay 9となっているのでFrameコマンド
1つにつき100分の9秒あるんで、格闘ゲームみたいに忙しくなることはありません。
80(1): 2021/04/11(日)00:41 ID:9LUoOlWn(4/4) AAS
訂正 3フレームで入力 → 1フレーム
Frameの数え方なんですが、コマンドでフレーム数を数える場合
どうも1番目は 0と数えるようです。
なのでFrameコマンドは 0,1,2の3フレーム
Cancel コマンドの記述は 2、9とありますが9フレーム目なんてないので
Cancel コマンドの判定は 2フレーム(3番目)の一つのみになります。
このFrame数を数えるのが以外に面倒で、Cancelコマンドなどは特に問題にならないのですが
LandFrameやThrowFrameなど間違えるとゲームが遅延したりすることもあるので注意です。
81: 2021/04/12(月)01:07 ID:rapSeOc5(1/2) AAS
スクリプトを無理やりねじ込む
didhitscript @script
void main() {
void self = getlocalvar("self");
void tar = getlocalvar("damagetaker");
void anims = getentityproperty(self,"animationid");
if(tar != NULL()) {
if ( anims == openborconstant("ANI_ATTACK3")
||anims == openborconstant("ANI_FREESPECIAL5")
||anims == openborconstant("ANI_FREESPECIAL6")
||anims == openborconstant("ANI_FREESPECIAL7"))
{
tossentity(tar, 4, -1, 0);
}
}
}
@end_script
普通はSCRIPTSフォルダに〜.cな感じで入れておくのですが、
特定のEntityでしか使わない時には、
ヘッダーに上記のようにスクリプトを直接記述するという手もあります。
Didhitscript というのは、こちらの攻撃がヒットした際に参照されるScriptで
この辺はOpenBoR側で規則が設定されているので、他人の使い方を参考にしたり
DCマニュアルを読み込むしかないですね。
82: 2021/04/12(月)01:15 ID:rapSeOc5(2/2) AAS
上の例では、Void Main(){ }となっています。これは攻撃ヒット判定が行われるたび
毎回参照されるという意味になります。
C言語準拠の記述になるので、この辺の記述や演算子については、
適当にC言語 演算子などで検索してみてください。
で、内容としては、何らかのターゲットに特定(Attack3やFreespecial#)の攻撃がヒットしたら
いつもより大きく吹き飛ばします(TossEntity)。
それぞれのAttackコマンドにDropvなど設定すれば同じ効果は得られますが、
このスクリプトを使う事でAnim単位で動作を変化させる事ができるのがメリット。
83: 2021/04/13(火)00:39 ID:r7OWv6Qx(1/6) AAS
void EnemySpawn(float fX, float fY, float fZ)
{
void self = getlocalvar("self");
void vSpawn, vName;
int iMHealth = getentityproperty(self,"maxhealth");
int iHealth = getentityproperty(self,"health");
int iDirection = getentityproperty(self, "direction");
int iR = rand()%10 + 10;
if (iR >= 0 && iR < 4){
vName = "roxi";
} else if (iR >= 4 && iR < 8) {
vName = "Yanyu";
} else if (iR >= 8 && iR < 12) {
vName = "Sakura";
} else if (iR >= 12 && iR < 16) {
vName = "Spiral";
} else {
vName = "Heiderna";
}
clearspawnentry();
setspawnentry("name", vName);
if (iDirection == 0) { fX = -fX; }
fX = fX +getentityproperty(self, "x");
fY = fY +getentityproperty(self, "a");
fZ = fZ +getentityproperty(self, "z");
vSpawn = spawn();
changeentityproperty(vSpawn, "position", fX, fZ, fY);
changeentityproperty(vSpawn, "maxhealth", iMHealth);
changeentityproperty(vSpawn, "health", iHealth);
changeentityproperty(vSpawn, "direction", iDirection);
}
84: 2021/04/13(火)00:46 ID:r7OWv6Qx(2/6) AAS
上のスクリプトは、vName="Spiral"や"Sakura"など5種類の敵(Entity)を
ランダムに出現させるものです。
changeentityproperty(vSpawn, "maxhealth", iMHealth); 最大HP
changeentityproperty(vSpawn, "health", iHealth); 現在HP
changeentityproperty(vSpawn, "direction", iDirection); 向き
この辺は好みでランダム(rand()%200+ 50)とか設定しても良いでしょう。
85: 2021/04/13(火)00:50 ID:r7OWv6Qx(3/6) AAS
name REnemy
type Enemy
health 100
nomove 1 1
nodrop 2
lifespan 1
defense all 1.0
offense all 1.0
animationscript data/scripts/REnemy.c
load roxy
load Yanyu
load Heiderna
load Sakura
load Spiral
anim spawn
delay 10
offset 1 1
frame data/chars/misc/empty.gif
@cmd EnemySpawn 0 0 0
frame data/chars/misc/empty.gif
anim idle
delay 100
offset 1 1
frame data/chars/misc/empty.gif
これをMODELS.TXTにEntityとして設定します。
spawn REnemy
alias Island_Guard
map 1
coords 500 270
at 3200
そして好きなLevelのテキスト内に上のように記述すれば、そのポイント到達するたび
設定したランダムな敵(Entity)が出現するわけです。
86: 2021/04/13(火)00:57 ID:r7OWv6Qx(4/6) AAS
ステージを作ってるとどうしても内容を覚えてしまったりで、
だんだんテストプレイも飽きてきますので、ちょっとした気分転換になるかな?
敵を増やしたとき、スクリプト側とモデル側を少し書き換えるだけで登場させられるので
少しだけ手間が減らせるかなと思います。
もちろんEntityでさえあれば良いので、登場させるのはNPCだってITEMだって良いわけです。
87: 2021/04/13(火)01:17 ID:r7OWv6Qx(5/6) AAS
@cmd EnemySpawn 0 0 0
frame data/chars/misc/empty.gif
この部分を
@cmd EnemySpawn 0 0 0
@cmd EnemySpawn 40 0 0
@cmd EnemySpawn 80 0 0
frame data/chars/misc/empty.gif
なんてすれば、敵が3人ずつ登場します。
上下前次1-新書関写板覧索設栞歴
あと 571 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.008s