専用アップローダーにうpしたトララーテスト版の 覇王翔孔拳みたいなマターリノ塊で、 ver0.4〜0.5の本体でプレイするときには 飛び道具にはいくらでも貫通する代わりに 相手に当たると消える飛び道具にしたいのですけど、 相手に当たった時はcharacter.cpp内の DWORD CCharacter::TouchB(ATTACKINFO *info,BOOL hit) { //(中略) if(info->id == DMG_HAOU){ exhaohit=1;//(中略) } //(中略) return(0); } でexhaohitの変数を変えたにも関わらず、 同じcharacter.cpp内の int exhaods(int arara) { if(exhaohit==0)arara=0; else if(exhaohit==1)arara=1; return(arara); } ではreturnの変数は変わらず、 action.cppでvoid haouaction(LPVOID pinf)内の if(exhaods(0)){//exhaods()が発揮されてない・・・(未完成) pif->counter=0; pif->state=0; ashimatsu=0; (*katf->pf_destroybullet)(pif); } という式に逝くことができず、相手に当たっても消えません。 同じint ( )関数でも、int GetRandNum(int num){(中略)}は きちんとreturnの変数が変わって 登場シーンで返す変数と勝利シーンで返す変数を違わせることもできるのに、 ( その証拠に、登場シーンではモナーたちのような振り向きなのに 通常モードの勝利シーンでは振り向きピースじゃないポーズにもなる ) int exhaods(int arara)){(中略)}で返される変数を変えることが出来ません。
どうすれば、int exhaods(int arara){(中略)}で返す変数を変えれて、 action.cppのif(exhaods(0)){(中略)}が発揮できるでしょうか。 また、action.cppのif(exhaods(0)){(中略)}にどこかおかしい点はないでしょうか。 |
No.611 2005/03/25(Fri) 23:47
|
0.4ですか、懐かしいですねぇ あんまり仕様とか覚えてないんであれなんですが・・・
飛び道具の攻撃命中時はTouchBはキャラクター本体に送信されません、たしか。 なので、この場合だとexhaods(arara)がTRUEを返すことは永遠にありません。 対処方法としては、アダプターで1.0で動かすことを念頭に置かないのなら、 Action()内で相手の行動IDを把握しておき、相手が食らい動作に移ったら 自前で消滅させるのがひとつ、 もうひとつは飛び道具に攻撃回数を設定しておき、 物体に命中した(BULLETASTATE_ATTACKのフラグが消えた)回数が 規定回数を超えたら消滅させるという手があります。 アダプタを念頭に置くなら、やや仕様が変わってしまいますが 同キャラ対戦も考慮すると後者がオススメだと思います。 |
No.612 2005/03/26(Sat) 02:13
|
|
飛び道具でもTouchBは使えるっぽいです。 おにぎりフェスティバルで海苔が当たってから突進する、とか。 んで、ちょっとソースを見て0.48で自分でやってみました。
その結果、またーりの塊の飛び道具の shoa.atk.id= 0; となってるところを shoa.atk.id= 9; にすればDMG_HAOUを拾ってくれてTouchBが使えるようです。
実際に確認してみたところ、しぃのロケットランチャーを4発相殺後、そのまましぃに直撃して消滅しました。
少しはお役に立てたかな? |
No.613 2005/03/26(Sat) 23:55
|
|
お恥ずかしい話、void CCharacter::act_shoukouken()内の shoa.atk.idが0のままになっていました。 八歯さんのアドバイスに気づいて貫通技ができました。 ただ、これはアダプタを念頭に入れていない方法なので ver1dllがもし製作可能だったら白川さんが教えてくれた方法も行おうと思います。 いろいろ対処方法を教えて下さってありがとうございます。 |
No.614 2005/03/27(Sun) 07:46
|
|