私は実際に2000年の元のDeus Exゲームを使用しています.「DeusEx.Flare」の子クラスを作成し、「rflare」と呼び、独自のパッケージに保存しました. コンパイルに成功しましたが、動作しますが、意図したとおりではありません。関数「LifeSpan = 30」をオーバーライドして、「LifeSpan = 120」にします。問題はドキュメントです。実際にはありません。そして、私が一般的に見つけることができるドキュメントは混乱しすぎており、私がやろうとしていることの十分な例を示していません. これがコードです。「スーパー」表現を使用することになっていることはわかっていますが、それを使用する方法を知っているすべての方法を使い果たしました。私は単にそれを機能させることができません。ただし、通常のフレア (30 秒で消える) と自分のフレアの両方を投げることを気にしない場合は、動作させることができます。音もなく地面に落ちるだけですが、実際には 120 秒間持続します。したがって、私のコードは 2 つのフレアをスローすることになります。30秒で消えるノーマルフレア1発。もう1つは120持続しますが、通常のフレアのように投げられません.
これは、変更しようとしている DeusEx.Flare スクリプトのコードです。
function LightFlare()
{
local Vector X, Y, Z, dropVect;
local Pawn P;
if (gen == None)
{
LifeSpan = 30;
}
}
私の最初の試みは、これをコピーして、自分のパッケージで変更することでした。それは機能しましたが、再び、2 つのフレアを発射しました。一つだけやりたい。だからここにコードを修正する私の試みがあります。
function LightFlare()
{
Super(Flare).LightFlare();
if (gen == None)
{
LifeSpan = 120;
}
}
これは通常のフレアをスポーンするだけで、持続時間に違いはありません。誰か助けてくれませんか?