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: [ Achievement System Failure ]

Previous Thread :: Next Thread 
BogyMac is not online. BogyMac
Joined: 04 Nov 2011
Total Posts: 823
06 Mar 2014 01:57 PM
Say down below is ScriptB. If you were to create ScriptA with the same parent as ScriptB, and gave ScriptA this code: script.Parent.CompleteAchieve:Invoke("Hard", 0001) it should change the color of the ImageLabel "0001" and print "Player1 Completed Achievement 0001", but it doesn't for some reason.

Code:

repeat wait(1) until game.Players.LocalPlayer
player = game.Players.LocalPlayer
achievements = script.Parent:WaitForChild("Achievements")

function Achieve(type,number)
if type == "Easy" then
achieveNumber = Achievements.AchievementsScreen.Achievements:FindFirstChild(number)
if achieveNumber ~= nil then
achieveNumber.Image = "http://www.roblox.com/asset/?id=148670054"
print(player.Name.." Completed Achievement "..achieveNumber.."!")
else
print("[ ERROR ] - Could not find "..achieveNumber".")
end
elseif type == "Hard" then
achieveNumber = Achievements.AchievementsScreen.Achievements:FindFirstChild(number)
if achieveNumber ~= nil then
Achievements.AchievementsScreen.Achievements[number].Image = "http://www.roblox.com/asset/?id=148670076"
print(player.Name.." Completed Achievement "..achieveNumber.."!")
else
print("[ ERROR ] - Could not find "..achieveNumber".")
end
end
end

function script.Parent.CompleteAchieve.OnInvoke(type2,number2)
Achieve(type2,number2)
end
Report Abuse
AgentFirefox is not online. AgentFirefox
Top 100 Poster
Joined: 20 Jun 2008
Total Posts: 22404
06 Mar 2014 02:07 PM
Try putting quotes around the achievement number when calling Invoke.
Report Abuse
BogyMac is not online. BogyMac
Joined: 04 Nov 2011
Total Posts: 823
06 Mar 2014 02:30 PM
Nope, when using this script:

script.Parent.CompleteAchieve:Invoke("Hard", "0001")

Still doesn't work, comes up with this error:


12:29:37.868 - Players.Player1.PlayerGui.Achieve:15: attempt to index global 'Achievements' (a nil value)
12:29:37.868 - Script 'Players.Player1.PlayerGui.Achieve', Line 15 - global Achieve
12:29:37.869 - Script 'Players.Player1.PlayerGui.Achieve', Line 26
12:29:37.869 - stack end
12:29:37.869 - Players.Player1.PlayerGui.Achieve:15: attempt to index global 'Achievements' (a nil value)
12:29:37.870 - Script 'Players.Player1.PlayerGui.LocalScript', Line 1
12:29:37.870 - stack end
Report Abuse
AgentFirefox is not online. AgentFirefox
Top 100 Poster
Joined: 20 Jun 2008
Total Posts: 22404
06 Mar 2014 02:41 PM
Achievements.AchievementsScreen.Achievements:FindFirstChild(number)


Your variable at the top is 'achievements'
Is this intentional? If so, what is 'Achievements' supposed to be?
Report Abuse
BogyMac is not online. BogyMac
Joined: 04 Nov 2011
Total Posts: 823
06 Mar 2014 02:44 PM
Oh my god, what a stupid mistake! xD

Sorry, no, that was not intentional.

-Bogy
Report Abuse
BogyMac is not online. BogyMac
Joined: 04 Nov 2011
Total Posts: 823
06 Mar 2014 02:49 PM
Partially works, more errors though, I have no idea why o.o

repeat wait(1) until game.Players.LocalPlayer
player = game.Players.LocalPlayer
Achievements = script.Parent:WaitForChild("Achievements")

function Achieve(type,number)
if type == "Easy" then
achieveNumber = Achievements.AchievementsScreen.Achievements:FindFirstChild(number)
if achieveNumber ~= nil then
achieveNumber.Image = "http://www.roblox.com/asset/?id=148670054"
print(player.Name.." Completed Achievement "..achieveNumber.."!")
else
print("[ ERROR ] - Could not find "..achieveNumber".")
end
elseif type == "Hard" then
achieveNumber = Achievements.AchievementsScreen.Achievements:FindFirstChild(number)
if achieveNumber ~= nil then
Achievements.AchievementsScreen.Achievements[number].Image = "http://www.roblox.com/asset/?id=148670076"
print(player.Name.." Completed Achievement "..achieveNumber.."!")
else
print("[ ERROR ] - Could not find "..achieveNumber".")
end
end
end

function script.Parent.CompleteAchieve.OnInvoke(type2,number2)
Achieve(type2,number2)
end

Report Abuse
BogyMac is not online. BogyMac
Joined: 04 Nov 2011
Total Posts: 823
06 Mar 2014 02:49 PM
Errors:

12:47:57.178 - Players.Player1.PlayerGui.Achieve:18: attempt to concatenate global 'achieveNumber' (a userdata value)
12:47:57.179 - Script 'Players.Player1.PlayerGui.Achieve', Line 18 - global Achieve
12:47:57.179 - Script 'Players.Player1.PlayerGui.Achieve', Line 26
12:47:57.179 - stack end
12:47:57.180 - Players.Player1.PlayerGui.Achieve:18: attempt to concatenate global 'achieveNumber' (a userdata value)
12:47:57.180 - Script 'Players.Player1.PlayerGui.LocalScript', Line 1
12:47:57.180 - stack end
Report Abuse
AgentFirefox is not online. AgentFirefox
Top 100 Poster
Joined: 20 Jun 2008
Total Posts: 22404
06 Mar 2014 02:51 PM
What are the errors?
Report Abuse
AgentFirefox is not online. AgentFirefox
Top 100 Poster
Joined: 20 Jun 2008
Total Posts: 22404
06 Mar 2014 02:51 PM
Oh.
Use tostring() when concatenating objects.
Report Abuse
BogyMac is not online. BogyMac
Joined: 04 Nov 2011
Total Posts: 823
06 Mar 2014 03:27 PM
Darn, errors out AGAIN!

repeat wait(1) until game.Players.LocalPlayer
player = game.Players.LocalPlayer
Achievements = script.Parent:WaitForChild("Achievements")

function Achieve(type,number)
if type == "Easy" then
achieveNumber = Achievements.AchievementsScreen.Achievements:FindFirstChild(number)
if achieveNumber ~= nil then
achieveNumber.Image = "http://www.roblox.com/asset/?id=148670054"
m1 = tostring(player.Name.." Completed Achievement "..achieveNumber.."!")
print(m1)
else
m2 = tostring("[ ERROR ] - Could not find "..achieveNumber".")
print(m2)
end
elseif type == "Hard" then
achieveNumber = Achievements.AchievementsScreen.Achievements:FindFirstChild(number)
if achieveNumber ~= nil then
Achievements.AchievementsScreen.Achievements[number].Image = "http://www.roblox.com/asset/?id=148670076"
m3 = tostring(player.Name.." Completed Achievement "..achieveNumber.."!")
print(m3)
else
m4 = tostring("[ ERROR ] - Could not find "..achieveNumber..".")
print(m4)
end
end
end

function script.Parent.CompleteAchieve.OnInvoke(type2,number2)
Achieve(type2,number2)
end


Errors:

13:27:32.677 - Players.Player1.PlayerGui.Achieve:20: attempt to concatenate global 'achieveNumber' (a userdata value)
13:27:32.677 - Script 'Players.Player1.PlayerGui.Achieve', Line 20 - global Achieve
13:27:32.678 - Script 'Players.Player1.PlayerGui.Achieve', Line 30
13:27:32.678 - stack end
13:27:32.679 - Players.Player1.PlayerGui.Achieve:20: attempt to concatenate global 'achieveNumber' (a userdata value)
13:27:32.679 - Script 'Players.Player1.PlayerGui.LocalScript', Line 1
13:27:32.679 - stack end
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