Roblox Studio My script only works one time - lua

I made a gun shop website. When I try to buy a gun the first time it works but, when I delete the gun from my inventory and try again it wont work.
Please Help.
local ServerStorage = game:GetService("ServerStorage")
local Vendedor = script.Parent
local ClickDetector = game.Workspace.Lojadearmas.Vendedor.ClickDetector
local Glock = ServerStorage:WaitForChild("G17"):Clone()
ClickDetector.MouseClick:Connect(function(player)
print(player.name)
local Player = player
local Gui = player.PlayerGui.LojaArmas
Gui.Frame.Visible = true
Gui.Frame2.Visible = true
Gui.Glock.Visible = true
Gui.Fechar.Visible = true
Gui.Loja.Visible = true
Gui.Fechar.MouseButton1Click:Connect(function()
Gui.Frame.Visible = false
Gui.Frame2.Visible = false
Gui.Glock.Visible = false
Gui.Fechar.Visible = false
Gui.Loja.Visible = false
print(Player)
end)
Gui.Glock.MouseButton1Click:Connect(function()
if Player.leaderstats.Reais.Value >= 1000 then
Glock.Parent = Player.Backpack
print(Player.leaderstats.Reais.Value)
Player.leaderstats.Reais.Value = Player.leaderstats.Reais.Value - 1000
end
end)
end)

Its because you are cloning it once when you referenced the variable Glock. Try this:
local ServerStorage = game:GetService("ServerStorage")
local Vendedor = script.Parent
local ClickDetector = game.Workspace.Lojadearmas.Vendedor.ClickDetector
local Glock = ServerStorage:WaitForChild("G17")
ClickDetector.MouseClick:Connect(function(player)
print(player.name)
local Player = player
local Gui = player.PlayerGui.LojaArmas
Gui.Frame.Visible = true
Gui.Frame2.Visible = true
Gui.Glock.Visible = true
Gui.Fechar.Visible = true
Gui.Loja.Visible = true
Gui.Fechar.MouseButton1Click:Connect(function()
Gui.Frame.Visible = false
Gui.Frame2.Visible = false
Gui.Glock.Visible = false
Gui.Fechar.Visible = false
Gui.Loja.Visible = false
print(Player)
end)
Gui.Glock.MouseButton1Click:Connect(function()
if Player.leaderstats.Reais.Value >= 1000 then
Glock:Clone().Parent = Player.Backpack
print(Player.leaderstats.Reais.Value)
Player.leaderstats.Reais.Value = Player.leaderstats.Reais.Value - 1000
end
end)
end)
Let me know if you require any further assistance.

Related

Animation won't play

I've made a GUI that has a WorldModel and when a player joins their character shows up on that GUI. All this works well but when I try to add an idle animation to it, it just won't run. I've tried different ways, loading the animation with animator, humanoid, but it just doesn't work. No errors.
Server Script (Creating animator):
local play = game.StarterGui:WaitForChild("Menu").Play
local uis = game:GetService("UserInputService")
local remote = game:GetService("ReplicatedStorage"):WaitForChild("Events").AnimPlay
game.Players.PlayerAdded:Connect(function(player)
local gui = player.PlayerGui:WaitForChild("CharacterShow")
local viewportframe = gui:WaitForChild("ViewportFrame")
local ClonedChar = game.Players:CreateHumanoidModelFromUserId(player.UserId)
ClonedChar.Parent = game:GetService("ReplicatedStorage")
local animator = Instance.new("Animator")
animator.Parent = ClonedChar.Humanoid
remote:FireClient(player,ClonedChar)
play.MouseButton1Click:Connect(function()
gui:Destroy()
end)
end)
Local Script (Creating animation, animationtrack, playing it, also making the GUI work, it has a turning feature too):
local player = game.Players.LocalPlayer
local remote = game:GetService("ReplicatedStorage"):WaitForChild("Events").AnimPlay
local uis = game:GetService("UserInputService")
local currentX
local MouseInDisplay, HoldInDisplay = false, false
local play = player.PlayerGui:WaitForChild("Menu").Play
local gui = player.PlayerGui:WaitForChild("CharacterShow")
remote.OnClientEvent:Connect(function(ClonedChar)
print("received")
local viewportframe = gui:WaitForChild("ViewportFrame")
local VPFcam = Instance.new("Camera")
VPFcam.Parent = viewportframe
VPFcam.CFrame = CFrame.new(0,0,0)
viewportframe.CurrentCamera = VPFcam
ClonedChar.Parent = viewportframe.WorldModel
ClonedChar.Name = "Character"
ClonedChar.Humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
ClonedChar:SetPrimaryPartCFrame(CFrame.new(Vector3.new(0,0,-9.5),Vector3.new(0,0,0)))
local animator = ClonedChar.Humanoid.Animator
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://11282795546"
local animtrack = animator:LoadAnimation(animation)
animtrack.Looped = true
animtrack.Priority = Enum.AnimationPriority.Action
animtrack:Play()
uis.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
if MouseInDisplay == true then
HoldInDisplay = true
currentX = nil
end
end
end)
uis.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
HoldInDisplay = false
end
end)
viewportframe.MouseMoved:Connect(function(X,Y)
if HoldInDisplay == false then return end
if currentX then ClonedChar.PrimaryPart.CFrame *= CFrame.fromEulerAnglesXYZ(0,((X-currentX)*.025),0) end
currentX = X
end)
viewportframe.MouseEnter:Connect(function() MouseInDisplay = true end)
viewportframe.MouseLeave:Connect(function() MouseInDisplay = false end)
end)
The animation ID is valid, and the game's owner created it.

Roblox Studio (Tried Gates) The Value doesn`t change

I tried a Gates Script but the script works fine but the 2nd Remote Event doesnt like to fire. It does nothing.
--This Works Fine
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local remoteEvent = ReplicatedStorage:WaitForChild("HalloweenGatesTakeMoney")
local Price = script.Parent:WaitForChild("Price").Value
script.Parent.MouseButton1Click:Connect(function(player)
script.Parent.Parent.Visible = false
script.Parent.Parent.Parent.Shadow.Visible = false
local GateName = script.Parent:WaitForChild("Gate").Value
GateName:Destroy()
remoteEvent:FireServer(Price)
end)
--But this does nothing
remoteEvent2.OnServerEvent:Connect(function(player, Price)
player.EventMoney.Sweets.Value = player.EventMoney.Sweets.Value - Price
wait(1)
if player.PlayerGui:WaitForChild("HalloweenGates").Frame.Buy.GateValueName == "HauntedEntrance" then
player:WaitForChild("HalloweenGates").HauntedEntrance.Value = true
elseif player.PlayerGui:WaitForChild("HalloweenGates").Frame.Buy.GateValueName == "PumpkinCave" then
player:WaitForChild("HalloweenGates").PumpkinCave.Value = true
elseif player.PlayerGui:WaitForChild("HalloweenGates").Frame.Buy.GateValueName == "HauntedBiome" then
player:WaitForChild("HalloweenGates").HauntedBiome.Value = true
elseif player.PlayerGui:WaitForChild("HalloweenGates").Frame.Buy.GateValueName == "GiantPumpkin" then
player:WaitForChild("HalloweenGates").GiantPumpkin.Value = true
end
end)
--Full script of above
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local remoteEvent = ReplicatedStorage:WaitForChild("HalloweenGates")
local remoteEvent2 = ReplicatedStorage:WaitForChild("HalloweenGatesTakeMoney")
remoteEvent.OnServerEvent:Connect(function(player, Price, GateName, GateValue)
if player.EventMoney.Sweets.Value >= Price then
player.PlayerGui.HalloweenGates.Frame.Visible = true
player.PlayerGui.HalloweenGates.Shadow.Visible = true
player.PlayerGui.HalloweenGates.Frame.Price.Text = "This Gate costs "..Price.." Sweets"
player.PlayerGui.HalloweenGates.Frame.Buy.Gate.Value = GateName
player.PlayerGui.HalloweenGates.Frame.Buy.Price.Value = Price
player.PlayerGui.HalloweenGates.Frame.Buy.GateValueName.Value = GateValue
end
end)
remoteEvent2.OnServerEvent:Connect(function(player, Price)
player.EventMoney.Sweets.Value = player.EventMoney.Sweets.Value - Price
wait(1)
if player.PlayerGui:WaitForChild("HalloweenGates").Frame.Buy.GateValueName == "HauntedEntrance" then
player:WaitForChild("HalloweenGates").HauntedEntrance.Value = true
elseif player.PlayerGui:WaitForChild("HalloweenGates").Frame.Buy.GateValueName == "PumpkinCave" then
player:WaitForChild("HalloweenGates").PumpkinCave.Value = true
elseif player.PlayerGui:WaitForChild("HalloweenGates").Frame.Buy.GateValueName == "HauntedBiome" then
player:WaitForChild("HalloweenGates").HauntedBiome.Value = true
elseif player.PlayerGui:WaitForChild("HalloweenGates").Frame.Buy.GateValueName == "GiantPumpkin" then
player:WaitForChild("HalloweenGates").GiantPumpkin.Value = true
end
end)
--Here's where I fire the remoteEvent2 event
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local remoteEvent = ReplicatedStorage:WaitForChild("HalloweenGatesTakeMoney")
local Price = script.Parent:WaitForChild("Price").Value
script.Parent.MouseButton1Click:Connect(function(player)
script.Parent.Parent.Visible = false
script.Parent.Parent.Parent.Shadow.Visible = false
local GateName = script.Parent:WaitForChild("Gate").Value
GateName:Destroy()
remoteEvent:FireServer(Price)
end)

How to get local player

I'm making a transformation script and I'm trying to get the LocalPlayer but this error appears:
13:54:03.806 ServerScriptService.SSJScript:2: attempt to index nil with 'GetMouse'  -  Server  -  SSJScript:2
How to fix?
This is my code:
local plr = game.Players.LocalPlayer
local mouse = plr:GetMouse()
local chr = plr.Character
local offence = {
"AAARGH!! I HATE YOU!!",
"FUS RO DAH!",
"I'M COMING FOR THE SAAUCE!",
"IT IS TIME TO PERISH!",
"POOTIS POOTIS POOTIS POOTIS!"
}
local transformcooldown = 10
local healthboost = 1000
local speedboost = 32
local aura = game.ReplicatedStorage.Aura
local hair = game.ReplicatedStorage.Hair
local anim = chr.Humanoid:LoadAnimation(game.ReplicatedStorage.Animation)
local iscooldown = false
local ison = plr.SSJOnOff.Value
local cooldown = 10
game.Players.PlayerAdded:Connect(function(plrjoin)
plr = plrjoin
end)
mouse.KeyDown:connect(function(key)
if iscooldown == false then
key = string.lower(key)
if string.byte(key) == 48 then
local indicator = plr.SSJOnOff
if indicator.Value == false then
chr.Humanoid.WalkSpeed = 0
ison = true
game:GetService("Chat"):Chat(plr.Head,offence[math.random(1,#offence)])
wait(1)
anim:Play()
wait(1.4)
aura:Clone().Parent = chr.HumanoidRootPart
hair:Clone().Parent = chr
wait(0.6)
chr.Humanoid.MaxHealth = healthboost
chr.Humanoid.Health = healthboost / 2
chr.Humanoid.WalkSpeed = chr.Humanoid.WalkSpeed + speedboost
else
ison = false
iscooldown = true
chr.Hair:destroy()
chr.HumanoidRootPart.Aura:destroy()
chr.Humanoid.WalkSpeed = chr.Humanoid.WalkSpeed - speedboost
chr.Humanoid.Health = 100
chr.Humanoid.MaxHealth = 100
wait(cooldown)
end
end
end
The code need to be in a LocalScript part.
The function GetMouse() is on the screen on the Player so the Server cant know where is your mouse.
PS: game.Players.LocalPlayer is nil because it's a ServerScript and not a LocalScript
Write this code in a localscript and NOT in ServerScriptService
local player = game.Players.LocalPlayer

Attempt to index nil with Position

I'm trying to do something like a spear throw and I'm so confused. It says:
ServerScriptService.FireMagic.FireSpear:16: attempt to index nil with 'Position'
Anyways, here's the LocalScript code:
wait(1)
local Player = game.Players.LocalPlayer
local Character = Player.Character
local Mouse = Player:GetMouse()
local rp = game:GetService("ReplicatedStorage")
local FireSpear = rp:WaitForChild("FireRemote")
local UIS = game:GetService("UserInputService")
local debounce = true
local cd = 10
UIS.InputBegan:Connect(function(input, isTyping)
if isTyping then
return
elseif input.KeyCode == Enum.KeyCode.E and debounce and Character then
debounce = false
FireSpear:FireServer()
wait(cd)
debounce = true
end
end)
and the Script:
wait(1)
local rp = game:GetService("ReplicatedStorage")
local ss = game:GetService("ServerStorage")
local Debris = game:GetService("Debris")
local ssFireSpear = ss.FireMagic:WaitForChild("ssFireSpear")
local FireRemote = rp:WaitForChild("FireRemote")
local UhTable = {}
local function LookatMouse(Mouse, RootPart)
local bodyG = Instance.new("BodyGyro")
bodyG.MaxTorque = Vector3.new(0, 500000, 0)
bodyG.P = 10000
bodyG.CFrame = CFrame.new(RootPart.Position, Mouse.Position)
bodyG.Parent = RootPart
Debris:AddItem(bodyG, 1)
end
local function MoveTowardsMouse(Mouse, Main)
local bodyV = Instance.new("BodyVelocity")
bodyV.MaxForce = Vector3.new(500000, 500000, 500000)
bodyV.Velocity = CFrame.new(Main.Position, Mouse.Position).LookVector * 100
bodyV.Parent = Main
local bodyG = Instance.new("BodyGyro")
bodyG.MaxTorque = Vector3.new(500000, 500000, 500000)
bodyG.P = 10000
bodyG.CFrame = CFrame.new(Main.Position, Mouse.Position)
bodyG.Parent = Main
end
FireRemote.OnServerEvent:Connect(function(Player, Mouse_CFrame)
if UhTable[Player.Name] == true then
return
end
UhTable[Player.Name] = true
local Character = Player.Character
local RootPart = Character:WaitForChild("HumanoidRootPart")
local folder = workspace:FindFirstChild("DebrisFolder") or Instance.new("Folder",workspace)
folder.Name = "DebrisFolder"
local RightHand = Character:WaitForChild("RightHand")
local FireSpear = ssFireSpear:Clone()
local Handle = FireSpear:WaitForChild("Handle")
local Hitbox = FireSpear:WaitForChild("Hitbox")
local Mesh = FireSpear:WaitForChild("Mesh")
FireSpear:SetPrimaryPartCFrame(RightHand.CFrame)
FireSpear.Parent = folder
local weld = Instance.new("Motor6D")
weld.Parent = Handle
weld.Part0 = RightHand
weld.Part1 = Handle
Hitbox:SetNetworkOwner(nil)
local function MakeStuffHappen()
spawn(function()
LookatMouse(Mouse_CFrame,RootPart)
wait(.6)
weld:Destroy()
MoveTowardsMouse(Mouse_CFrame,Hitbox)
end)
end
MakeStuffHappen()
end)
I'm following a tutorial but I don't know how the issue got there.
Your error is pointing to the fact that you are trying to reference fields on an object that doesn't exist. In this case, it's the ´Mouse´ object, which you never supplied from the client.
To fix this, pass the mouse information in when you call the RemoteEvent's FireServer() function.
UIS.InputBegan:Connect(function(input, isTyping)
if isTyping then
return
elseif input.KeyCode == Enum.KeyCode.E and debounce and Character then
debounce = false
local mouseCFrame = Mouse.Hit
FireSpear:FireServer(mouseCFrame)
wait(cd)
debounce = true
end
end)

script only working in Studio

//EDIT: yes i added the 2nd parameter GPE and if not gpe then return end in case someone nitpicks unnecessary details
Another problem is that it is quite long but if you read it and see something wrong then let me know. Also I have put this as a LocalScript in Startpack.
local uis = game:GetService("UserInputService")
local torso = script.Parent.Parent.Character.Torso or script.Parent.Parent.Character.UpperTorso
local TweenService = game:GetService("TweenService")
local db = true
function move(x)
local velocity = Instance.new("BodyVelocity")
velocity.Velocity = torso.CFrame.lookVector*50
velocity.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
velocity.Parent = x
end
uis.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.R and db then
db = false
local part = game:GetService("ReplicatedStorage").Union:Clone()
part.CFrame = torso.CFrame + torso.CFrame.lookVector*10
part.Parent = game.Workspace
local effect = game.ReplicatedStorage.Waterfall:Clone()
effect.CFrame = part.CFrame
local light = game:GetService("ReplicatedStorage").PointLight:Clone()
light.Parent = part
local weld = Instance.new("ManualWeld")
weld.Part0 = part
weld.Part1 = effect
weld.Parent = part
effect.Parent = part
local goal3 = {}
goal3.Size = Vector3.new(120,70,70)
local goal4 = {}
goal4.Size = goal3.Size
local tweenInfo = TweenInfo.new(2)
local tween3 = TweenService:Create(part, tweenInfo, goal3)
local tween4 = TweenService:Create(effect,tweenInfo, goal4)
tween3:Play(); tween4:Play()
game.Lighting.Blur.Enabled = true; game.Lighting.ColorCorrection.Enabled = true
move(part)
part.Anchored = false
effect.Anchored = false
move(effect)
local goal = {}
goal.Size = Vector3.new(30,7,7)
goal.Transparency = 0.4
local goal2 = {}
goal2.Size = goal.Size
local tweenInfo = TweenInfo.new(3)
local tween = TweenService:Create(part, tweenInfo, goal)
local tween2 = TweenService:Create(effect,tweenInfo, goal2)
tween:Play(); tween2:Play()
game:GetService("Debris"):AddItem(part,2)
game:GetService("Debris"):AddItem(effect,2)
wait(.5)
game.Lighting.Blur.Enabled = false; game.Lighting.ColorCorrection.Enabled = false
db = true
end
end)
The thing is pretty straightforward, It doesn't work when I publish the game and play it, but it only works in Roblox Studio.
It is not Filtering Enabled yet, and still doesn't work. I don't know exactly.
Fixed it lol i just moved the localscript from starterpack to startercharacter :D

Resources