☆ベルトアクション作成 Beats of rageスレッド☆ (658レス)
上下前次1-新
339: 名前は開発中のものです。 [sage] 2022/04/26(火) 03:20:57.85 ID:tRI20Ut9(3/4) AAS
>>313313(1): 名前は開発中のものです。 [sage] 2022/04/07(木) 11:11:43.62 ID:V6ejTjoQ(1) AAS
>>311 の回転ですが
元絵を余白も含めて縦横比を同じくらいにして
offsetを画像の中心付近にすることで、
結構綺麗に回転します。
飛翔体などならそんなに違和感ないですね。
コツが分かってくると、スピンアタック系や
ジャンプ中の前転などそれなりに使えそう。
Drawmethod Rotate を使った回転について
マニュアルには −45 とすればマイナス方向の45度に回転させられるとあり
実際出来るのですが、画像の欠けが発生し易いようなので
素直に 315と設定したほうが良さそう。
Type Enemy の設定
Anim JumpAttack は
これとRange 設定(0〜100など)だけで自動で前方ジャンプ攻撃を行います。
Anim JumpAttack2 は
同じく Range 設定で 垂直ジャンプ攻撃になります。
Type Enemyも結構いろいろ設定できるので、凝りだすとキリが無さそうです。
340: 名前は開発中のものです。 [sage] 2022/04/26(火) 07:34:52.71 ID:tRI20Ut9(4/4) AAS
こちらがコンボを繰り出していると、たまに敵が無敵技で逃げたり
反撃してきたりしますが、
EscapeHits {#} ここで設定した数値+1連続で攻撃を受けると
Anim Special2 が実行されます。
Falldie # やDeath # を1にしておくと、Health 0 で必ず
Anim Death が実行されるので、フラグや演出にも使えそう。
Walk Idle Pain Fall Riseなどの各Anim はほぼ必須な Animなので
通常の利用だけでなく、必ず実行される特性を利用した演出や
フラグの処理などに。ヘッダーで NoMoveを設定しておくと移動しなくなるので
こちらも便利に使えそう。
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>2020(2): 名前は開発中のものです。 [sage] 2021/02/13(土) 02:09:06.65 ID:IDjzs9Ej(3/3) AAS
maxAttacks 30
maxFollows 30
maxAttackTypes 30
maxFreeSpecials 30
上は Models.txt の一例です、
キャラクターなどの Entity.txt 内の記述に間違いが無いはずなのにエラーが発生する場合は、
Models.txt や Levels.txt 内の設定をチェックしてみても良いかも。
Follow や FreeSpecial はとても便利でついつい多用してしまいますが、
標準の設定では 12になっています。
それらを解除するのが上の max~設定、
メモリーや処理スピードの関係で初期値が低くされているのだと想像します、
昨今のPCであれば上げても特に問題は無いと思います。
&& 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>1010(2): 名前は開発中のものです。 [sage] 2019/05/13(月) 12:25:32.20 ID:PvWAiouI(1) AAS
今更SUPER Final Fight GOLD Plusの気に入らない所自分でいじってみたけど
数値置き換えてるだけでも楽しいな
一から作れたらもっと楽しいだろうな
) {
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 も使えば、かなり様々なことができそうです。
347: 名前は開発中のものです。 [sage] 2022/04/30(土) 01:52:33.20 ID:rxj78wqY(1/5) AAS
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: 名前は開発中のものです。 [sage] 2022/04/30(土) 01:53:21.89 ID:rxj78wqY(2/5) AAS
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: 名前は開発中のものです。 [sage] 2022/04/30(土) 02:15:26.77 ID:rxj78wqY(3/5) AAS
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: 名前は開発中のものです。 [sage] 2022/04/30(土) 02:33:43.50 ID:rxj78wqY(4/5) AAS
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: 名前は開発中のものです。 [sage] 2022/04/30(土) 02:47:59.07 ID:rxj78wqY(5/5) AAS
>>301301(1): 名前は開発中のものです。 [sage] 2022/03/11(金) 11:57:25.86 ID:UqoUjlxU(1) AAS
>>299
ピヨリ値蓄積みたいなのをやりたかったんですけどやっぱ複雑ですか…
ピヨリ専用のリアクションいいかも知れません、ありがとうございました!
さんのレスから
そんなに難しい事なんかないよ!と言いたくて、
すこしスクリプトを書いてみましたが、ポンコツな私の能力では
結局こんなんなっちゃって、もうなんと申したら良いかって感じです。
やりたいことは
HPが一定数減ったか?
HPが減った状態から回復したか?
強力な必殺技を一定数使ったか?
だけなんで、内容はシンプル。ただ、関連するAnimが他に
Anim Faint、Anim Fall、Anim Pain、Anim Rise
少なくとも4つあるので、記述そのものはコピペでOKとはいえ面倒だなーと思いました。
手前味噌ですが、やってみたら意外とアクセントになって良かったかも?
という感想です。
352: 名前は開発中のものです。 [sage] 2022/05/07(土) 01:55:26.36 ID:NmRbFI7S(1/2) AAS
スクリプトで 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: 名前は開発中のものです。 [sage] 2022/05/07(土) 02:01:51.67 ID:NmRbFI7S(2/2) AAS
上の閉じたLoopでも
BBoxで喰らい判定や、Attackコマンドと付随するFollowコマンドがあれば
別なAnimに移行できます。
なので、あえて閉じたLoopを使って、チャージの真似事をさせたり
CancelでA2ボタンを押すたび別なFreeSpecialに跳んで、A2を押した数だけ
べつな技を出す。なんてことが可能になります。
もちろん別な方の受け売りですが、Loopひとつで技のヴァリエーションが
増えるのはなかなか便利です。
354: 名前は開発中のものです。 [sage] 2022/05/10(火) 06:46:43.73 ID:ANAGzemE(1) AAS
Jenniferで思ったけれど
ゴオン・リーラ・ディ・ディオとか
グリズリーコークスクリューマグナム
みたいな巨大すぎる手だけの背景技が作りたいのと
バットルサーキットみたいにショップに入れたりしたら面白いのにね
355: 名前は開発中のものです。 [sage] 2022/05/11(水) 03:15:52.16 ID:5CHTfmx4(1) AAS
背景技に関してはどこまで凝るかによりますが
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: 名前は開発中のものです。 [sage] 2022/05/12(木) 03:20:11.72 ID:4lLWq45r(1) AAS
PlayAnim(うろ覚え) => X
Animation data/scenes/scene.gif 0 0 こちらが正しい表記 最後の 0 0 はXY座標
このコマンドでGIFアニメを再生できます。主にDEMOシーンなどに使います。
インゲーム中は普通に{Entity}を作ったほうが早そうです。
357: 名前は開発中のものです。 [sage] 2022/05/14(土) 02:02:26.01 ID:3oAON5YM(1/6) AAS
動画で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(1): 名前は開発中のものです。 [sage] 2022/05/14(土) 02:07:27.46 ID:3oAON5YM(2/6) AAS
動画の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: 名前は開発中のものです。 [sage] 2022/05/14(土) 02:32:09.60 ID:3oAON5YM(3/6) AAS
以前にも紹介しましたが
@cmd clearspawnentry();setspawnentry "name" "test"
@cmd bindentity spawn() getlocalvar("self") 60 1 40 1 0 1
こんな感じでたった2行でBindEntityが使えるので、
キャラクターと一緒に移動するエフェクトを表示したい場合などに便利です。
360: 名前は開発中のものです。 [sage] 2022/05/14(土) 02:37:55.00 ID:3oAON5YM(4/6) AAS
SpawnFrameと同様の動作をする
spawn(); ですがこの場合は座標の補正や向きなども指定しないとならないので
@ScriptやScriptsで定義したほうが使い勝手が良くなります。
361: 名前は開発中のものです。 [sage] 2022/05/14(土) 03:25:29.49 ID:oWC+YZhm(1) AAS
テラワロス
syodai.g3.xrea.com/ura/patch.htm
どうせならいつでもメニューを開けるようにできればPCゲームに負けないインパクトを出せそう
362: 名前は開発中のものです。 [sage] 2022/05/14(土) 14:26:04.17 ID:3oAON5YM(5/6) AAS
ポーズメニューで難易度や同士討ちの設定など出来るようになってるのが
ベア・ナックルX{#}で大元はChronoCrashでお馴染みクラタス氏だったような?
tekken何とかdemoやknights and dragonsの何作目だったかポーズメニューで
装備品を切り替えてプレイヤーの攻撃や防御を変化させてたような?
メニュー作りの基礎はRocketViper2やTMNTの何作目だったかBonus氏のMODが参考になるかと
363: 名前は開発中のものです。 [sage] 2022/05/14(土) 23:56:15.60 ID:3oAON5YM(6/6) AAS
RVGM set OprnBOR PACK
Open BoR Game Club
この辺で検索するとメージャーなMODがリンクと共に紹介されています。
それぞれモッダーさんによって標準コマンドのみであったり
そこまでスクリプト使わなくてもって感じに作成されています。
興味を持ったMODをアンパックしてDATAの中身を覗いてみれば
自分が作りたいMODの良いヒントが見つかるんじゃないでしょうか。
上下前次1-新書関写板覧索設栞歴
あと 295 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.023s