Tesumoto Posted February 3, 2018 Share Posted February 3, 2018 (edited) Hello everyone! I have this code: local function onequip_friendship(inst, owner) owner.AnimState:OverrideSymbol("swap_body", "torso_amulets_custom", "greenamulet") if owner.components.combat ~= nil then owner.components.combat.canattack = false end end local function onunequip_friendship(inst, owner) owner.AnimState:ClearOverrideSymbol("swap_body") if owner.components.combat ~= nil then owner.components.combat.canattack = true end end This prohibits the item owner from attacking people and mobs. I want that a player not attack other players, but he could still attack mobs. Is it possible to implement? If this is too difficult, please tell me about it so that I do not expect help. Thank you for attention. Edited February 3, 2018 by Tezumoto Link to comment Share on other sites More sharing options...
pickleplayer Posted February 3, 2018 Share Posted February 3, 2018 This might be somewhat tricky to implement, It depends on what item this is you are equiping (is that an amulet? or a weapon? or a character trait?) if owner.components.combat ~= nil then This essentially means "if you have the ability to attack," which you always do, Essentially making it impossible to attack. The easiest way to tell if an enemy is another player is (object):HasTag("player") This might be something you can use if owner.components.combat.target:HasTag("player") then owner.components.combat.canattack = false else owner.components.combat.canattack = true --(THOUGH THIS MIGHT CAUSE PROBLEMS, NOT SURE) end However, you would need to find a way to run this right before each attack you make, before the actual swing comes out. Otherwise, it will never update who their target is. Link to comment Share on other sites More sharing options...
Tesumoto Posted February 4, 2018 Author Share Posted February 4, 2018 3 hours ago, pickleplayer said: This might be something you can use if owner.components.combat.target:HasTag("player") then owner.components.combat.canattack = false else owner.components.combat.canattack = true --(THOUGH THIS MIGHT CAUSE PROBLEMS, NOT SURE) end However, you would need to find a way to run this right before each attack you make, before the actual swing comes out. Otherwise, it will never update who their target is. I have already tried to use this code and many of its variations. But unfortunately did not find a working option. Link to comment Share on other sites More sharing options...
Aquaterion Posted February 4, 2018 Share Posted February 4, 2018 --modmain.lua AddComponentPostInit("combat", function(self) self.inst.replica.combat.oldCanBeAttacked = self.inst.replica.combat.CanBeAttacked function self.inst.replica.combat:CanBeAttacked(attacker) local oldReturn = self.inst.replica.combat:oldCanBeAttacked(attacker) if self.inst:HasTag("player") and oldReturn then return not attacker:HasTag("friendship") end return oldReturn end end) --youritem.lua local function onequip_friendship(inst, owner) owner.AnimState:OverrideSymbol("swap_body", "torso_amulets_custom", "greenamulet") owner:AddTag("friendship") end local function onunequip_friendship(inst, owner) owner.AnimState:ClearOverrideSymbol("swap_body") owner:RemoveTag("friendship") end Link to comment Share on other sites More sharing options...
Tesumoto Posted February 4, 2018 Author Share Posted February 4, 2018 (edited) 12 hours ago, Aquaterion said: --modmain.lua AddComponentPostInit("combat", function(self) self.inst.replica.combat.oldCanBeAttacked = self.inst.replica.combat.CanBeAttacked function self.inst.replica.combat:CanBeAttacked(attacker) local oldReturn = self.inst.replica.combat:oldCanBeAttacked(attacker) if self.inst:HasTag("player") and oldReturn then return not attacker:HasTag("friendship") end return oldReturn end end) --youritem.lua local function onequip_friendship(inst, owner) owner.AnimState:OverrideSymbol("swap_body", "torso_amulets_custom", "greenamulet") owner:AddTag("friendship") end local function onunequip_friendship(inst, owner) owner.AnimState:ClearOverrideSymbol("swap_body") owner:RemoveTag("friendship") end Oh my god, it works!!! Dude, you're the best, thank you for your help! Edited February 4, 2018 by Tezumoto 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