Jump to content

Recommended Posts

I've been working on this for a while. I'm giving up now. I think it will be better for me to get help. I'm making a weapon mod. I cannot add the sound file. 

This is my prefab.

 




local assets=

{ 

    Asset("ANIM", "anim/excalibur.zip"), 
    Asset("ANIM", "anim/swap_excalibur.zip"),  

    Asset("ATLAS", "images/inventoryimages/excalibur.xml"), 
    Asset("IMAGE", "images/inventoryimages/excalibur.tex"), 
	
	Asset("SOUNDPACKAGE", "sound/excalibur_sound.fev"),
	Asset("SOUND", "sound/excalibur_sound.fsb"),
}


local function IsValidVictim(victim)

    return victim ~= nil
	
        and not (victim:HasTag("sword") or
		
                victim:HasTag("kill") or
				
                victim:HasTag("king"))
				
        and victim.components.health ~= nil
		
        and victim.components.combat ~= nil
		
end

local function OnAttack(inst)

    inst.SoundEmitter:PlaySound("excalibur_sounds/sound/excalibur_attack")

	
end

local function OnTool(inst)

	inst.SoundEmitter:PlaySound("excalibur_sounds/sound/excalibur_tool")
	
    end


local function onattack(attacker, target)

	if not target:IsValid() then
	
		return
		
	end
	
		if target.components.combat ~= nil then
	 
			target.components.combat:SuggestTarget(attacker)
			
			
		end
	
			if target.components.sleeper ~= nil and target.components.sleeper:IsAsleep() then
	
				target.components.sleeper:WakeUp()
		
			end
	
	end

local function fn()

    local function OnEquip(inst, owner)
	
        owner.AnimState:OverrideSymbol("swap_object", "swap_excalibur", "excalibur")
		
        owner.AnimState:Show("ARM_carry") 
        owner.AnimState:Hide("ARM_normal") 
		inst.SoundEmitter:PlaySound("excalibur_sounds/sound/excalibur_equip")
		
    end

    local function OnUnequip(inst, owner) 
	
        owner.AnimState:Hide("ARM_carry") 
        owner.AnimState:Show("ARM_normal") 
		inst.SoundEmitter:PlaySound("excalibur_sounds/sound/excalibur_unequip")
		
    end

	local inst = CreateEntity()
	local trans = inst.entity:AddTransform()
    local anim = inst.entity:AddAnimState()
	local sound = inst.entity:AddSoundEmitter()
	
	inst.entity:AddTransform()
	inst.entity:AddAnimState()
    inst.entity:AddNetwork()	
	inst.entity:SetPristine()

	MakeInventoryPhysics(inst)
    MakeHauntableLaunch(inst)
	
    anim:SetBank("excalibur")
    anim:SetBuild("excalibur")
    anim:PlayAnimation("idle")
	
	if not TheWorld.ismastersim then
      
	return inst
	  
    end
    
	inst:AddComponent("weapon")
	inst.components.weapon:SetOnAttack(onattack)
	inst.components.weapon:SetDamage(50)
	inst.components.weapon.onattack = OnAttack
	
	inst:AddComponent("tool")
    inst.components.tool:SetAction(ACTIONS.CHOP)
	
	inst:AddComponent("finiteuses")
    inst.components.finiteuses:SetMaxUses(250)
    inst.components.finiteuses:SetUses(250)
    inst.components.finiteuses:SetOnFinished(inst.Remove)
	
	inst:AddComponent("inspectable")
	inst:AddComponent("lootdropper")
	inst:AddComponent("tradable")
	
    inst:AddComponent("equippable")
    inst.components.equippable:SetOnEquip( OnEquip )
    inst.components.equippable:SetOnUnequip( OnUnequip )
	
	inst:AddComponent("inventoryitem")
    inst.components.inventoryitem.imagename = "excalibur"
    inst.components.inventoryitem.atlasname = "images/inventoryimages/excalibur.xml"
	
	inst:ListenForEvent("equip", function(inst, data) onequip(inst, data) end)
	inst:ListenForEvent("unequip", function(inst, data) onunequip(inst, data) end)

    return inst
	
end

return  Prefab("common/inventory/excalibur", fn, assets, prefabs)

What am I doing wrong? 

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
×
  • Create New...