generic image
Processing...
  • Games
  • Catalog
  • Develop
  • Robux
  • Search in Players
  • Search in Games
  • Search in Catalog
  • Search in Groups
  • Search in Library
  • Log In
  • Sign Up
  • Games
  • Catalog
  • Develop
  • Robux
   
ROBLOX Forum » Game Creation and Development » Scripting Helpers
Home Search
 

Re: AI Sword Lunge

Previous Thread :: Next Thread 
epicfail22 is not online. epicfail22
Joined: 25 Sep 2009
Total Posts: 3739
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
CeaselessSoul is not online. CeaselessSoul
Joined: 03 Jul 2012
Total Posts: 7506
17 Aug 2012 12:25 PM
Could we please see the lunge script? Oh, I love your work, lol.
Report Abuse
KnightmareXD is not online. KnightmareXD
Joined: 14 Jul 2009
Total Posts: 11189
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
CeaselessSoul is not online. CeaselessSoul
Joined: 03 Jul 2012
Total Posts: 7506
17 Aug 2012 12:33 PM
Try using the sword's properties... The SwordPos and all that.
Report Abuse
epicfail22 is not online. epicfail22
Joined: 25 Sep 2009
Total Posts: 3739
17 Aug 2012 10:30 PM
I shouldn't have to do that though if it's already in the SwordScript, right?
Report Abuse
epicfail22 is not online. epicfail22
Joined: 25 Sep 2009
Total Posts: 3739
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
CeaselessSoul is not online. CeaselessSoul
Joined: 03 Jul 2012
Total Posts: 7506
18 Aug 2012 12:05 PM
Maybe combine the two scripts?
Report Abuse
josh50000 is not online. 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 is not online. josh50000
Joined: 29 Nov 2009
Total Posts: 697
18 Aug 2012 12:20 PM
i mean swordOut
Report Abuse
epicfail22 is not online. epicfail22
Joined: 25 Sep 2009
Total Posts: 3739
18 Aug 2012 07:24 PM
@CeaselessSoul; lolno.

@josh50000; Yeah, they are.
Report Abuse
CeaselessSoul is not online. CeaselessSoul
Joined: 03 Jul 2012
Total Posts: 7506
19 Aug 2012 08:21 AM
Don't know how?
Report Abuse
epicfail22 is not online. epicfail22
Joined: 25 Sep 2009
Total Posts: 3739
19 Aug 2012 04:56 PM
That wouldn't work.
Report Abuse
CeaselessSoul is not online. CeaselessSoul
Joined: 03 Jul 2012
Total Posts: 7506
20 Aug 2012 06:55 AM
Do you know what I mean?
Report Abuse
epicfail22 is not online. epicfail22
Joined: 25 Sep 2009
Total Posts: 3739
20 Aug 2012 12:27 PM
I believe so...
Report Abuse
Previous Thread :: Next Thread 
Page 1 of 1
 
 
ROBLOX Forum » Game Creation and Development » Scripting Helpers
   
 
   
  • About Us
  • Jobs
  • Blog
  • Parents
  • Help
  • Terms
  • Privacy

©2017 Roblox Corporation. Roblox, the Roblox logo, Robux, Bloxy, and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.



Progress
Starting Roblox...
Connecting to Players...
R R

Roblox is now loading. Get ready to play!

R R

You're moments away from getting into the game!

Click here for help

Check Remember my choice and click Launch Application in the dialog box above to join games faster in the future!

Gameplay sponsored by:
Loading 0% - Starting game...
Get more with Builders Club! Join Builders Club
Choose Your Avatar
I have an account
generic image