Jump to content

Problem with nightvision


Recommended Posts

I've been trying to figure out this problem for a while but due to *cough* lack of programming skill *cough*

I've had issues.

 

Basically i want my character to have night vision so I've basically took the night vision code from Woodie and put it on my character but added a bit so it fits what i want it to do.

 

This is the night vision code (Not the entire script):

local MONSTERVISION_COLOURCUBES ={    day = "images/colour_cubes/beaver_vision_cc.tex",    dusk = "images/colour_cubes/beaver_vision_cc.tex",    night = "images/colour_cubes/beaver_vision_cc.tex",    full_moon = "images/colour_cubes/beaver_vision_cc.tex",}local function NightVision(inst)if not TheWorld.ismastersim then	inst.components.playervision:ForceNightVision(true) 	inst.components.playervision:SetCustomCCTable(MONSTERVISION_COLOURCUBES)endendlocal function NightVision2(inst)if not TheWorld.ismastersim then	inst.components.playervision:ForceNightVision(false) 	inst.components.playervision:SetCustomCCTable(nil)	endendinst:WatchWorldState("startnight", NightVision)inst:WatchWorldState("startday", NightVision2)

The code seems to work fine but according to a friend I've messed up the porting of my mod to DST as whenever my character comes into vision of another player on a dedicated server, it crashes with this error: "[00:05:09]: [string "scripts/components/playervision.lua"]:43: attempt to index field 'inventory' (a nil value)"

 

I just don't know what to do sadly and i was wondering if someone could help me?

Link to comment
Share on other sites

@codelyoko373, the following is the relevant section of code.

 

local function OnEquipChanged(inst)
    local self = inst.components.playervision
    if self.nightvision == not inst.replica.inventory:EquipHasTag("nightvision") then
        self.nightvision = not self.nightvision
        if not self.forcenightvision then
            self:UpdateCCTable()
            inst:PushEvent("nightvision", self.nightvision)
        end
    end
end

 

I have no idea why or how it didn't crash for you, but this code pre-assumes the instance has a replica of inventory.

 

This function probably shouldn't run under the circumstances you described. Again, I have no idea why equipment-related code would have anything to do with player proximity, so this is actually a very likely point.

 

What crashes? You, the other player, or the whole server?

Link to comment
Share on other sites

@codelyoko373, the following is the relevant section of code.

 

local function OnEquipChanged(inst)

    local self = inst.components.playervision

    if self.nightvision == not inst.replica.inventory:EquipHasTag("nightvision") then

        self.nightvision = not self.nightvision

        if not self.forcenightvision then

            self:UpdateCCTable()

            inst:PushEvent("nightvision", self.nightvision)

        end

    end

end

 

I have no idea why or how it didn't crash for you, but this code pre-assumes the instance has a replica of inventory.

 

This function probably shouldn't run under the circumstances you described. Again, I have no idea why equipment-related code would have anything to do with player proximity, so this is actually a very likely point.

 

What crashes? You, the other player, or the whole server?

The person that is playing my character on a dedicated server as the host crashes when they come into the view of another player. I'm not sure if this also effects a client though.

Edited by codelyoko373
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
  • Create New...