0

私は Lua を学ぼうとしていますが、最初のプロジェクトで壊れたスクリプトを修正しようと決めました。いくつかのバグを修正しましたが、今は立ち往生しています。手伝って頂けますか?

    function SWEP:PrimaryAttack()
     if( CurTime() < self.NextStrike ) then return; end
     self.Weapon:EmitSound("player/skick/sparta.mp3")
     self.NextStrike = ( CurTime() + 3.5 );
     timer.Simple( 1.80, function() self:AttackAnim() end)
                        -Next line broken-
         timer.Simple( 2.40, function() self.Weapon:SendWeaponAnim( ACT_VM_IDLE ) end);
     timer.Simple( 2.00, function() self.ShootBullets( self ) end)
     self.Owner:SetAnimation( PLAYER_ATTACK1 );
end 

function SWEP:ShootBullets()
    -Next line Broken-
         local trace =Owner:GetEyeTrace();
    if trace.HitPos:Distance(self.Owner:GetShootPos()) <= 130 then
        if( trace.Entity:IsPlayer() or trace.Entity:IsNPC() or trace.Entity:GetClass()=="prop_ragdoll" ) then
                timer.Simple(0, game.ConsoleCommand, "host_timescale 0.1\n")
                timer.Simple(0.5, game.ConsoleCommand, "host_timescale 1\n")
            self.Owner:EmitSound( self.FleshHit[math.random(1,#self.FleshHit)] );
        else
            self.Owner:EmitSound( self.Hit[math.random(1,#self.Hit)] );
        end
                bullet = {}
                bullet.Num    = 5
                bullet.Src    = self.Owner:GetShootPos()
                bullet.Dir    = self.Owner:GetAimVector()
                bullet.Spread = Vector(0.04, 0.04, 0.04)
                bullet.Tracer = 0
                bullet.Force  = 250
                bullet.Damage = 1000000
            self.Owner:FireBullets(bullet)
    end

というエラーが表示されますAttempting to index field 'Weapon' (a nil value)。誰でもこれを修正する方法を説明できますか?

私は画像を投稿することを許可されていませんこれは私がエラー画像を取得しているものです

4

1 に答える 1

0

このエラーが発生する理由は、「Weapon」(具体的には self.Weapon) が初期化されていないためです。self.Weapon は何も指していないため、関数を呼び出すことはできません。

エラーメッセージが参照している行を教えていただけますか? ファイルはshared.lua、84行目、85行目、90行目のようです。周囲のコードも参考になります。元の質問の一部として投稿したと思いますが、行番号がないと役に立ちません!

于 2012-12-30T20:24:54.107 に答える