|
| 17 Aug 2012 12:19 PM |
I'm trying to get an AI to lunge at me when he's close enough. Everything prints out even 'lunge'. But the AI doesn't do anything, even after the function 'lunge()' is executed. Is is something I'm doing? Or is it just not possible to do with AIs.
--[[ This section is in the 'SwordScript' ]]-- function ToolChanged(property) if property == "Parent" and Tool.Parent:IsA("Model") and Tool.Parent:findFirstChild("Humanoid") then print("Equipped") local char = Tool.Parent local atx = char.Attacks print(char.Name.." equipped sword") lungecon = atx.Lunge.Changed:connect(function(newval) print("atx.Lunge changed to "..newval) if newval then lunge() atx.Lunge.Value = false end end) else print("Unequipped") pcall(function() lungecon:disconnect() end) end end ToolChanged() Tool.Changed:connect(ToolChanged)
--[[ This section is in the 'Chase' script ]]--
while Humanoid.Health > 0 do wait(math.random(1,3)) target = findClosestPlayer() print(target.Name) print(calcDist(Torso,target.Character.Torso)) if target and target.Character.Humanoid.Health > 0 then Humanoid:MoveTo(target.Character.Torso.Position, target.Character.Torso) if calcDist(Torso,target.Character.Torso) < 10 then AI.Attacks.Lunge.Value = true print("lunge") end end end |
|
|
| Report Abuse |
|
|
|
| 17 Aug 2012 12:25 PM |
| Could we please see the lunge script? Oh, I love your work, lol. |
|
|
| Report Abuse |
|
|
|
| 17 Aug 2012 12:27 PM |
I'm not sure of the problem, but you can use the AncestryChanged event instead of your ToolChanged function.
† KMXD † |
|
|
| Report Abuse |
|
|
|
| 17 Aug 2012 12:33 PM |
| Try using the sword's properties... The SwordPos and all that. |
|
|
| Report Abuse |
|
|
|
| 17 Aug 2012 10:30 PM |
| I shouldn't have to do that though if it's already in the SwordScript, right? |
|
|
| Report Abuse |
|
|
|
| 17 Aug 2012 10:31 PM |
Here's the rest of the SwordScript.
-------- OMG HAX
r = game:service("RunService")
local damage = 5 local slash_damage = 10
sword = script.Parent.Handle Tool = script.Parent
local SlashSound = Instance.new("Sound") SlashSound.SoundId = "rbxasset://sounds\\swordslash.wav" SlashSound.Parent = sword SlashSound.Volume = .7
local UnsheathSound = Instance.new("Sound") UnsheathSound.SoundId = "rbxasset://sounds\\unsheath.wav" UnsheathSound.Parent = sword UnsheathSound.Volume = 1
function blow(hit) if (hit.Parent == nil) then return end -- happens when bullet hits sword
local humanoid = hit.Parent:findFirstChild("Humanoid") local vCharacter = Tool.Parent local vPlayer = game.Players:playerFromCharacter(vCharacter) local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character if humanoid~=nil and humanoid ~= hum and hum ~= nil then -- final check, make sure sword is in-hand
local right_arm = vCharacter:FindFirstChild("Right Arm") if (right_arm ~= nil) then local joint = right_arm:FindFirstChild("RightGrip") if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) then tagHumanoid(humanoid, vPlayer) humanoid:TakeDamage(damage) wait(1) untagHumanoid(humanoid) end end
end end
function tagHumanoid(humanoid, player) local creator_tag = Instance.new("ObjectValue") creator_tag.Value = player creator_tag.Name = "creator" creator_tag.Parent = humanoid end
function untagHumanoid(humanoid) if humanoid ~= nil then local tag = humanoid:findFirstChild("creator") if tag ~= nil then tag.Parent = nil end end end
function attack() damage = slash_damage SlashSound:play() local anim = Instance.new("StringValue") anim.Name = "toolanim" anim.Value = "Slash" anim.Parent = Tool print("did attack function") end
function lunge() damage = lunge_damage
LungeSound:play()
local anim = Instance.new("StringValue") anim.Name = "toolanim" anim.Value = "Lunge" anim.Parent = Tool force = Instance.new("BodyVelocity") force.velocity = Vector3.new(0,10,0) --Tool.Parent.Torso.CFrame.lookVector * 80 force.Parent = Tool.Parent.Torso wait(.25) swordOut() wait(.25) force.Parent = nil wait(.5) swordUp()
damage = slash_damage end
function swordUp() Tool.GripForward = Vector3.new(-1,0,0) Tool.GripRight = Vector3.new(0,1,0) Tool.GripUp = Vector3.new(0,0,1) end
function swordOut() Tool.GripForward = Vector3.new(0,0,1) Tool.GripRight = Vector3.new(0,-1,0) Tool.GripUp = Vector3.new(-1,0,0) end
function swordAcross() -- parry end
Tool.Enabled = true local last_attack = 0 function onActivated()
if not Tool.Enabled then return end
Tool.Enabled = false
local character = Tool.Parent; local humanoid = character.Humanoid if humanoid == nil then print("Humanoid not found") return end
t = r.Stepped:wait()
if (t - last_attack < .2) then lunge() else attack() end
last_attack = t
--wait(.5)
Tool.Enabled = true end
lungecon = nil
script.Parent.Activated:connect(onActivated) function ToolChanged(property) if property == "Parent" and Tool.Parent:IsA("Model") and Tool.Parent:findFirstChild("Humanoid") then print("Equipped") local char = Tool.Parent local atx = char.Attacks print(char.Name.." equipped sword") lungecon = atx.Lunge.Changed:connect(function(newval) if newval then lunge() atx.Lunge.Value = false end end) else print("Unequipped") pcall(function() lungecon:disconnect() end) end end ToolChanged() Tool.Changed:connect(ToolChanged) connection = sword.Touched:connect(blow) |
|
|
| Report Abuse |
|
|
|
| 18 Aug 2012 12:05 PM |
| Maybe combine the two scripts? |
|
|
| Report Abuse |
|
|
josh50000
|
  |
| Joined: 29 Nov 2009 |
| Total Posts: 697 |
|
|
| 18 Aug 2012 12:20 PM |
| hard to see with all the functions on the script, but are the swordUp and swordDown functions being called? |
|
|
| Report Abuse |
|
|
josh50000
|
  |
| Joined: 29 Nov 2009 |
| Total Posts: 697 |
|
| |
|
|
| 18 Aug 2012 07:24 PM |
@CeaselessSoul; lolno.
@josh50000; Yeah, they are. |
|
|
| Report Abuse |
|
|
| |
|
| |
|
| |
|
| |
|