Roblox's weapon kits Friendly fire doesn't work

I modified this function in the WeaponsSystem ModuleScript to keep players on the same team from shooting each other:

function WeaponsSystem.doDamage(target, amount, damageType, dealer, hitInfo, damageData)
	if not target or ancestorHasTag(target, "WeaponsSystemIgnore") then
		return
	end
	if IsServer then
		if target:IsA("Humanoid") and dealer:IsA("Player") and dealer.Character then
			local dealerHumanoid = dealer.Character:FindFirstChildOfClass("Humanoid")
			local targetPlayer = Players:GetPlayerFromCharacter(target.Parent)
			-- Jaxxon Jargon: added check so players on the same team can't kill each other.
			if WeaponsSystem.playersOnDifferentTeams(dealer, targetPlayer) then
				if dealerHumanoid and target ~= dealerHumanoid and targetPlayer then
					-- Trigger the damage indicator
					WeaponData:FireClient(targetPlayer, "HitByOtherPlayer", dealer.Character.HumanoidRootPart.CFrame.Position)
					targetPlayer.Character.Humanoid:TakeDamage(amount)
				end
			end
		end

		-- NOTE:  damageData is a more or less free-form parameter that can be used for passing information from the code that is dealing damage about the cause.
		-- .The most obvious usage is extracting icons from the various weapon types (in which case a weapon instance would likely be passed in)
		-- ..The default weapons pass in that data
		local handler = _damageCallback or _defaultDamageCallback
		handler(WeaponsSystem, target, amount, damageType, dealer, hitInfo, damageData)
	end
end

You’ll also need to modify the following function:

local function _defaultGetTeamCallback(player)
	return player.Team or 0
end

Let me know if this works for you or not.

4 Likes