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: Badge Giving Script

Previous Thread :: Next Thread 
stroudie is not online. stroudie
Joined: 28 Nov 2008
Total Posts: 2556
01 Mar 2012 03:14 PM
Working on studio, tells me cannot award badge (due to being on studio and not a game server), yet online it won't work (yes, I tested with another person). Help finding the problem would be appreciated.

Script:

function BeKills()
if game.Players.LocalPlayer.leaderstats.KOs.Value >= 100 then
player = game.Players.LocalPlayer
game:GetService("BadgeService"):AwardBadge(player.userId, 73689948)
end
end

function InKills()
if game.Players.LocalPlayer.leaderstats.KOs.Value >= 500 then
player = game.Players.LocalPlayer
game:GetService("BadgeService"):AwardBadge(player.userId, 73689957)
end
end

function ExKills()
if game.Players.LocalPlayer.leaderstats.KOs.Value >= 1000 then
player = game.Players.LocalPlayer
game:GetService("BadgeService"):AwardBadge(player.userId, 73689972)
end
end

while true do
wait(0.1)
BeKills()
InKills()
ExKills()
end
Report Abuse
stroudie is not online. stroudie
Joined: 28 Nov 2008
Total Posts: 2556
01 Mar 2012 03:50 PM
Bump.
Report Abuse
stroudie is not online. stroudie
Joined: 28 Nov 2008
Total Posts: 2556
01 Mar 2012 04:26 PM
Is anyone going to bother to help?
Report Abuse
Navydev is not online. Navydev
Joined: 21 Feb 2012
Total Posts: 274
01 Mar 2012 04:29 PM
Want to know a few things, and first off is this script hanging out in the workspace, inside a player, or in a brick
Report Abuse
RoflBread is not online. RoflBread
Joined: 18 Jun 2009
Total Posts: 3803
01 Mar 2012 04:30 PM
I'm rusty, having not gone on the forum in a while, but don't you have to have that script inside the player, so as to make the .LocalPlayer accessible?
Report Abuse
Navydev is not online. Navydev
Joined: 21 Feb 2012
Total Posts: 274
01 Mar 2012 04:30 PM
First off, to access LocalPlayer, it has to be a Local Script, and it must reside in a character or tool, if it isnt, it wont work, nor would it say anything because it technically isn't an error.
Report Abuse
Navydev is not online. Navydev
Joined: 21 Feb 2012
Total Posts: 274
01 Mar 2012 04:31 PM
Secondly, it would be safer and less demanding on the server if the badges were awarded inside the leaderboard. You should insert all the giving scripts as "if's" after( for the default it's kills)
kills = kills + 1
if ....
awardbadge
Report Abuse
Seranok is not online. Seranok
Joined: 12 Dec 2009
Total Posts: 11083
01 Mar 2012 04:32 PM
Guys what happens if you try to award a badge to a Guest?
Report Abuse
Rob498 is not online. Rob498
Top 50 Poster
Joined: 05 Sep 2008
Total Posts: 42722
01 Mar 2012 04:32 PM
@Ser

Nothing, I assume.
Report Abuse
Navydev is not online. Navydev
Joined: 21 Feb 2012
Total Posts: 274
01 Mar 2012 04:35 PM
This is an example of my leader board, but it is modified to award players your badges:

stands = {}
CTF_mode = false


function onHumanoidDied(humanoid, player)
local stats = player:findFirstChild("leaderstats")
if stats ~= nil then
local deaths = stats:findFirstChild("WOs")
deaths.Value = deaths.Value + 1

-- do short dance to try and find the killer

local killer = getKillerOfHumanoidIfStillInGame(humanoid)

handleKillCount(humanoid, player)
end
end

function onPlayerRespawn(property, player)
-- need to connect to new humanoid

if property == "Character" and player.Character ~= nil then
local humanoid = player.Character.Humanoid
local p = player
local h = humanoid
humanoid.Died:connect(function() onHumanoidDied(h, p) end )
end
end

function getKillerOfHumanoidIfStillInGame(humanoid)
-- returns the player object that killed this humanoid
-- returns nil if the killer is no longer in the game

-- check for kill tag on humanoid - may be more than one - todo: deal with this
local tag = humanoid:findFirstChild("creator")

-- find player with name on tag
if tag ~= nil then

local killer = tag.Value
if killer.Parent ~= nil then -- killer still in game
return killer
end
end

return nil
end

function handleKillCount(humanoid, player)
local killer = getKillerOfHumanoidIfStillInGame(humanoid)
if killer ~= nil then
local stats = killer:findFirstChild("leaderstats")
if stats ~= nil then
local kills = stats:findFirstChild("Points")
if killer ~= player then
kills.Value = kills.Value + 2
if kills >= 100 then
game:GetService("BadgeService"):AwardBadge(killer.userId, 73689948)
elseif kills >= 500 then
game:GetService("BadgeService"):AwardBadge(player.userId, 73689957) ------BADGE AWARDER HERE
elseif kills > = 1000 then
game:GetService("BadgeService"):AwardBadge(player.userId, 73689972)
end


else
kills.Value = kills.Value - 0

end
end
end
end


-----------------------------------------------



function findAllFlagStands(root)
local c = root:children()
for i=1,#c do
if (c[i].className == "Model" or c[i].className == "Part") then
findAllFlagStands(c[i])
end
if (c[i].className == "FlagStand") then
table.insert(stands, c[i])
end
end
end

function hookUpListeners()
for i=1,#stands do
stands[i].FlagCaptured:connect(onCaptureScored)
end
end

function onPlayerEntered(newPlayer)

if CTF_mode == true then

local stats = Instance.new("IntValue")
stats.Name = "leaderstats"

local captures = Instance.new("IntValue")
captures.Name = "Captures"
captures.Value = 0


captures.Parent = stats

-- VERY UGLY HACK
-- Will this leak threads?
-- Is the problem even what I think it is (player arrived before character)?
while true do
if newPlayer.Character ~= nil then break end
wait(5)
end

stats.Parent = newPlayer

else

local stats = Instance.new("IntValue")
stats.Name = "leaderstats"

local kills = Instance.new("IntValue")
kills.Name = "Points"
kills.Value = 0

local deaths = Instance.new("IntValue")
deaths.Name = "WOs"
deaths.Value = 0

kills.Parent = stats
deaths.Parent = stats

-- VERY UGLY HACK
-- Will this leak threads?
-- Is the problem even what I think it is (player arrived before character)?
while true do
if newPlayer.Character ~= nil then break end
wait(5)
end

local humanoid = newPlayer.Character.Humanoid

humanoid.Died:connect(function() onHumanoidDied(humanoid, newPlayer) end )

-- start to listen for new humanoid
newPlayer.Changed:connect(function(property) onPlayerRespawn(property, newPlayer) end )


stats.Parent = newPlayer

end

end


function onCaptureScored(player)

local ls = player:findFirstChild("leaderstats")
if ls == nil then return end
local caps = ls:findFirstChild("Captures")
if caps == nil then return end
caps.Value = caps.Value + 1

end


findAllFlagStands(game.Workspace)
hookUpListeners()
if (#stands > 0) then CTF_mode = true end
game.Players.ChildAdded:connect(onPlayerEntered)
Report Abuse
Navydev is not online. Navydev
Joined: 21 Feb 2012
Total Posts: 274
01 Mar 2012 04:37 PM
It will check to award a badge every time a player KOs someone, through the value killer. Lines down from it, kills is used to award badges, because kills = player.leaderboard.Points, and so when the player(killer, or used in the If statement, kills,) has more than or equal to your set points, s/he will get the badge.

Ok?

Still don't know where you put that script.
Report Abuse
stroudie is not online. stroudie
Joined: 28 Nov 2008
Total Posts: 2556
01 Mar 2012 04:47 PM
Sorry for not mentioning. The parent of this script is the starterpack originally. It runs in the players backpack. As I have already said, it's working but not working :/
Report Abuse
Navydev is not online. Navydev
Joined: 21 Feb 2012
Total Posts: 274
01 Mar 2012 04:50 PM
Yea, but was it a local script? :P
Report Abuse
stroudie is not online. stroudie
Joined: 28 Nov 2008
Total Posts: 2556
01 Mar 2012 04:54 PM
Yes, it was.
Report Abuse
Navydev is not online. Navydev
Joined: 21 Feb 2012
Total Posts: 274
01 Mar 2012 04:56 PM
Cool cutscene :3, and the while true do loop was largly uneeded. .Changed() would work better X3
Report Abuse
stroudie is not online. stroudie
Joined: 28 Nov 2008
Total Posts: 2556
01 Mar 2012 05:01 PM
Alright, what should I do about the badges being given though?
Report Abuse
Navydev is not online. Navydev
Joined: 21 Feb 2012
Total Posts: 274
01 Mar 2012 11:41 PM
You got a leaderboard, right? Set up a little script that activates in it when ever a player's KOs value changes
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