Cunning fox Posted December 27, 2016 Share Posted December 27, 2016 (edited) 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 December 27, 2016 by makar5000 1 Link to comment Share on other sites More sharing options...
Kzisor Posted December 27, 2016 Share Posted December 27, 2016 You failed to add the lootdropper component to the prefab. Add that, set loot, profit. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now