Jump to content

Structure crash


Recommended Posts

That's my first time when I'm creating a structure. When I'm destroying prefab, game crashes with 

13: attempt to index field 'lootdropper' (a nil value)

I've looked into 'homesign' prefab, and it uses 

inst.components.lootdropper:DropLoot()

But for me i's isn't working. What am I doing wrong? myprefab.lua is here:

require "prefabutil"
require "recipe"
require "modutil"

local assets=
{
    Asset("ANIM", "anim/generator.zip"),
    Asset("ATLAS", "images/inventoryimages/generator.xml"),
    Asset("IMAGE", "images/inventoryimages/generator.tex"),
}

local function onhammered(inst, worker)
    inst.components.lootdropper:DropLoot()
    local fx = SpawnPrefab("collapse_big")
    fx.Transform:SetPosition(inst.Transform:GetWorldPosition())
    fx:SetMaterial("metal")
    inst:Remove()
end

local function onhit(inst, worker)
        inst.AnimState:PlayAnimation("hit")
        inst.AnimState:PushAnimation("idle_loop", true)
end

local function fuelupdatefn(inst, dt)
	
	if inst.components.bo_powered then
		local enmult = 0
		if TheWorld.state.phase == "dusk" then enmult = 0.35
		elseif TheWorld.state.phase == "night" then enmult = 0.35
		elseif TheWorld.state.phase == "day" then enmult = 0.35
		end
		if TheWorld.state.isfullmoon then enmult = enmult * 0.35
		elseif TheWorld.state.isnewmoon then enmult = enmult * 0.35
		end
		inst.components.bo_powered.rate = enmult
	end
end

local function fn()
    local inst = CreateEntity()
    inst.entity:AddTransform()
    inst.entity:AddAnimState()
    inst.entity:AddSoundEmitter()
    inst.entity:AddMiniMapEntity()
    inst.entity:AddNetwork()

    MakeObstaclePhysics(inst, 1)

    inst:AddTag("structure")

    local minimap = inst.entity:AddMiniMapEntity()
    minimap:SetIcon( "generator.tex" )

    inst.AnimState:SetBank("generator")
    inst.AnimState:SetBuild("generator")
    inst.AnimState:PlayAnimation("idle_loop", true)

    if not TheWorld.ismastersim then
        return inst
    end

    inst:AddComponent("inspectable")
    inst:AddComponent("workable")
    inst.components.workable:SetWorkAction(ACTIONS.HAMMER)
    inst.components.workable:SetWorkLeft(6)
    inst.components.workable:SetOnFinishCallback(onhammered)
    inst.components.workable:SetOnWorkCallback(onhit)
    MakeSnowCovered(inst)
	-----------------------
	inst:AddComponent("bo_powered")
	inst.components.bo_powered.type = "generator"
	inst.components.bo_powered.maxpower = 100
	inst.components.bo_powered.period = 1
	inst.components.bo_powered.rate = 0.1 -- figure out a good value for this
	inst.components.bo_powered:SetUpdateFn(fuelupdatefn)
	inst.components.bo_powered:StartConsuming()
	
	inst:AddComponent("talker")
    inst.components.talker.fontsize = 21
    inst.components.talker.font = TALKINGFONT
    inst.components.talker.colour = Vector3(0.7, 0.85, 1, 1)
    inst.components.talker.offset = Vector3(0,-550,0)
    inst.components.talker.symbol = "swap_object"
	inst.components.bo_powered:StartTalking()
	-------------------------------------
    return inst
end

return Prefab( "common/generator", fn, assets, prefabs),
    MakePlacer( "common/generator_placer", "generator", "generator", "idle_loop" ) 

 

Edited by makar5000
  • Like 1
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...