Hello everyone, I have problem with script in gun. I want to change humanoid on zombie, becouse monsters hitting other monsters, so it's anoying. When i change in monster humanoid on zombie - i can't hurt them... It's not my script. Weapon created by WIJ. It's not all script, becouse max characters are 10,000, but i think in these lines. Here is script, if someone can show/write me where should i change :
------------------------------------------------------------------------------------Raycasting functions
function raycast(startp, endp, ign)
local vec=(endp-startp)
if vec.magnitude<1000 then
local hit,pos=game.Workspace:FindPartOnRay(Ray.new(startp,vec),ign)
if hit and pos then
if hit.Parent.className=="Tool" or hit.Parent.className=="Hat" then
if hit.Parent.Parent ~= nil then
if hit.Parent.Parent:findFirstChild("Humanoid")~=nil then
return hit.Parent, pos
end
end
elseif string.lower(hit.Name)=="glass" then
local vec=(endp-pos)
hit,pos=raycast(pos,vec,ign)
elseif string.lower(hit.Name)=="water" then
local vec=(endp-pos)
hit,pos=raycast(pos,vec,ign)
elseif hit.Transparency==1 or hit.Name=="Bullet" or hit.Name=="BulletTexture" then
local vec=(endp-pos)
hit,pos=raycast(pos,vec,hit)
end
end
return hit,pos
end
return nil
end
-------------------------------------------------------------------------------
function tagHumanoid(humanoid)
local plr=game.Players:playerFromCharacter(sp.Parent)
if plr~=nil then
local tag=Instance.new("ObjectValue")
tag.Value=plr
tag.Name="creator"
tag.Parent=humanoid
delay(2,function()
if tag~=nil then
tag.Parent=nil
end
end)
end
end
function onKeyDown(key,mouse)
key=key:lower()
--[[if key=="r" and not reloading then
reload(mouse)
end]]
end
function movecframe(p,pos)
p.Parent=game.Lighting
p.Position=pos
p.Parent=game.Workspace
end
function checkAllyWIJ(killer, victim)
if game:findFirstChild("Teams")~=nil then
if killer ~= victim then
if killer.TeamColor==BrickColor.new("Bright blue") and victim.TeamColor==BrickColor.new("Bright green") then
return true
elseif killer.TeamColor==BrickColor.new("Bright green") and victim.TeamColor==BrickColor.new("Bright blue") then
return true
elseif killer.TeamColor == victim.TeamColor then
return true
else
return false
end
return false
else
return true
end
return false
else
return false
end
end
function takeDamage(dm, pl)
if pl:findFirstChild("Shield")~=nil then
sh=pl:findFirstChild("Shield")
if sh.Value==0 then
pl.Humanoid:TakeDamage(dm)
elseif sh.Value<dm then
newdm=dm-sh.Value
sh.Value=0
pl.Humanoid:TakeDamage(newdm)
elseif sh.Value>dm then
sh.Value=sh.Value-dm
elseif sh.Value==dm then
sh.Value=0
end
else
pl.Humanoid:TakeDamage(dm)
end
end
function fire(aim)
script.Parent.Handle.Fire.Pitch=(math.random(-5,-1)/10)+1
sp.Handle.Fire:Play()
local bullet=Bullet:clone()
--[[local bt2=game.Lighting.BulletTexture:clone()
bt2.BrickColor=BrickColor.new("Bright red")
bt2.Mesh.Scale=Vector3.new(.5,.5,2)]]--
local totalDist=0
Lengthdist=-RayLength/.5
local startpoint=sp.Handle.CFrame*BarrlePos
local direction=(aim-startpoint)
local cfrm=CFrame.new(startpoint, direction+startpoint)
local vector=startpoint+(direction.Unit*999)
if (startpoint-vector).magnitude<1000 then
if game.Workspace:FindPartOnRay(Ray.new(player.Character.Head.Position,startpoint-player.Character.Head.Position),player.Character)==nil then
local hit,pos=raycast(startpoint,vector,player.Character)
bullet.Parent=game.Workspace
--bt2.Parent=game.Workspace
if hit~=nil then
if hit.Parent:FindFirstChild("VecHealth")~=nil then
vech=hit.Parent:FindFirstChild("VecHealth")
vech.Value=vech.Value-VehicleDamage
end
if hit.Parent:FindFirstChild("HealthStatus")~=nil then
fo=hit.Parent:FindFirstChild("HealthStatus")
fo.Value=fo.Value-BaseDamage
end
local humanoid=hit.Parent:FindFirstChild("Humanoid")
if humanoid~=nil then
local damage=math.random(BaseDamage-(BaseDamage*.25),BaseDamage+(BaseDamage*.25))
if hit.Name=="Head" then
damage=damage*1.25
elseif hit.Name=="Torso" then
else
damage=damage*.75
end
if humanoid.Health>0 then
local eplr=game.Players:playerFromCharacter(humanoid.Parent)
local plr=game.Players:playerFromCharacter(sp.Parent)
if eplr~=nil and plr~=nil then
if (checkAllyWIJ(plr, eplr)==false) then
if hit.Parent:findFirstChild("ForceField")==nil then
tagHumanoid(humanoid)
takeDamage(damage, humanoid.Parent)
sX=sfx:clone()
sX.Parent=player
sX:play()
end
end
else
if hit.Parent:findFirstChild("ForceField")==nil then
tagHumanoid(humanoid)
takeDamage(damage, humanoid.Parent)
sX=sfx:clone()
sX.Parent=player
sX:play()
end
end
end
end
distance=(startpoint-pos).magnitude
bullet.CFrame=cfrm*CFrame.new(0,0,-distance/2)
bullet.Mesh.Scale=Vector3.new(.15,.15,distance)
else
bullet.CFrame=cfrm*CFrame.new(0,0,-RayLength/2)
bullet.Mesh.Scale=Vector3.new(.15,.15,RayLength)
end
if pos~=nil then
--bt2.CFrame=bullet.CFrame
--movecframe(bt2,pos)
end
local deb=game:FindFirstChild("Debris")
if deb==nil then
local debris=Instance.new("Debris")
debris.Parent=game
end
check()
game.Debris:AddItem(bullet,.05)
game.Debris:AddItem(sX, .3)
--game.Debris:AddItem(bt2,.5)
end
end
end
function onButton1Up(mouse)
down=false
end
function onButton1Down(mouse)
h=sp.Parent:FindFirstChild("Humanoid")
if not enabled or reloading or down or h==nil then
return
end
if Charge.Value<MaxCharge and h.Health>0 and overheated==false and battery==true then
--[[if sp.Ammo.Value<=0 then
if not reloading then
reload(mouse)
end
return
end]]
down=true
enabled=false
while down do
if Charge.Value>=MaxCharge or sp.Parent:FindFirstChild("Humanoid")==nil or overheated == true then
break
end
sfd=sfd+1
if sfd>=shotsForDepl then
sfd=0
batteryLife.Value=batteryLife.Value-math.random(minDepletion, maxDepletion)
end
if burst then
local startpoint=sp.Handle.CFrame*BarrlePos
local mag=(mouse.Hit.p-startpoint).magnitude
local rndm=Vector3.new(math.random(-(Spread/10)*mag,(Spread/10)*mag),math.random(-(Spread/10)*mag,(Spread/10)*mag),math.random(-(Spread/10)*mag,(Spread/10)*mag))
fire(mouse.Hit.p+rndm)
Charge.Value=Charge.Value+math.random(chargeperfireMIN, chargeperfireMAX)
if Charge.Value>=MaxCharge then
break
end
wait(.05)
local startpoint=sp.Handle.CFrame*BarrlePos
local mag2=((mouse.Hit.p+rndm)-startpoint).magnitude
local rndm2=Vector3.new(math.random(-(.1/10)*mag2,(.1/10)*mag2),math.random(-(.1/10)*mag2,(.1/10)*mag2),math.random(-(.1/10)*mag2,(.1/10)*mag2))
fire(mouse.Hit.p+rndm+rndm2)
Charge.Value=Charge.Value+math.random(chargeperfireMIN, chargeperfireMAX)
if Charge.Value>=MaxCharge then
break
end
wait(.05)
fire(mouse.Hit.p+rndm+rndm2+rndm2)
Charge.Value=Charge.Value+math.random(chargeperfireMIN, chargeperfireMAX)
elseif shot then
Charge.Value=Charge.Value+math.random(chargeperfireMIN, chargeperfireMAX)
local startpoint=sp.Handle.CFrame*BarrlePos
local mag=(mouse.Hit.p-startpoint).magnitude
local rndm=Vector3.new(math.random(-(Spread/10)*mag,(Spread/10)*mag),math.random(-(Spread/10)*mag,(Spread/10)*mag),math.random(-(Spread/10)*mag,(Spread/10)*mag))
fire(mouse.Hit.p+rndm)
local mag2=((mouse.Hit.p+rndm)-startpoint).magnitude
local rndm2=Vector3.new(math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2))
fire(mouse.Hit.p+rndm+rndm2)
local rndm3=Vector3.new(math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2))
fire(mouse.Hit.p+rndm+rndm3)
local rndm4=Vector3.new(math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2))
fire(mouse.Hit.p+rndm+rndm4)
else
Charge.Value=Charge.Value+math.random(chargeperfireMIN, chargeperfireMAX)
local startpoint=sp.Handle.CFrame*BarrlePos
local mag=(mouse.Hit.p-startpoint).magnitude
local rndm=Vector3.new(math.random(-(Spread/10)*mag,(Spread/10)*mag),math.random(-(Spread/10)*mag,(Spread/10)*mag),math.random(-(Spread/10)*mag,(Spread/10)*mag))
fire(mouse.Hit.p+rndm)
end
wait(Firerate)
if not automatic or battery==false then
break
end
if down==true then
wait(.06)
end
end
enabled=true
else
sp.Handle.Trigger:Play()
end
end
function onEquippedLocal(mouse)
if mouse==nil then
print("Mouse not found")
return
end
script.GunGui:clone().Parent=player.PlayerGui
mouse.Icon=Cursors[1]
mouse.KeyDown:connect(function(key) onKeyDown(key,mouse) end)
mouse.Button1Down:connect(function() onButton1Down(mouse) end)
mouse.Button1Up:connect(function() onButton1Up(mouse) end)
equiped=true
down=false
check()
end
function onUnequippedLocal(mouse)
if player.PlayerGui:FindFirstChild("GunGui")~=nil then
player.PlayerGui:FindFirstChild("GunGui").Parent=nil
end
equiped=false
reloading=false
down=false
sp.Name = OriginalToolName
end
sp.Equipped:connect(onEquippedLocal)
sp.Unequipped:connect(onUnequippedLocal)
check()
