Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
2

Why does my script not work when I use 'Activated'?

Asked by 7 years ago
local player = game.Players.LocalPlayer
local character = game.Workspace[player.Name].Humanoid
local inventory = player.PlayerGui.ScreenGui.Pages.Inventory
local itemsforinventory = game.ServerStorage.ItemsForInventory
local mouse = player:GetMouse()
local gathering = false
script.Parent.Activated:connect(function()  
    local target = mouse.Target
    local playerwalkspeed = character.WalkSpeed
    local range = player:DistanceFromCharacter(target.Position)
    if not gathering and script.Parent.Parent.Name == player.Name and target.Name == "FoliageLarge" or target.Name == "Apple" or target.Name == "WoodTree" or target.Name == "StoneLarge" or target.Name == "StoneMedium" or target.Name == "StoneSmall" or target.Name == "Orange" then
        if range <= 30 and player.PlayerGui.ScreenGui.Pages.Inventory.ItemsInInventory.Value < 40 then
            gathering = true
            script.Disabled = true
            character.WalkSpeed = 0

            wait(target.GatherTime.Value)

            target:Remove()
            player.PlayerGui.ScreenGui.Pages.Inventory.ItemsInInventory.Value = player.PlayerGui.ScreenGui.Pages.Inventory.ItemsInInventory.Value + 1
            print(player.Name.." has gathered a "..target.Name)
            script.Disabled = false
            character.WalkSpeed = playerwalkspeed
            local itemgui = itemsforinventory[target.Name][target.Name..'Gui']:Clone()
            itemgui.Parent = player.PlayerGui.ScreenGui.Pages.Inventory
            gathering = false
        end
    end
end)

I used to have a file with the working code but it was lost ;-; There's no error. Before, the player would click say an apple then they'd stop for the specified gather time, it'd go into their inventory, and that would be that. Nothing happens now. Help is much appreciated.

0
Once you disable a script (which I don't recommend doing), you can't enable it from that script. because it's disabled. connor12260311 383 — 7y
0
I'd put print statements to show when lines 6 and 8 are running (if at all). If both are running at the expected time, print out the value of relevant variables for line 11 and go from there. chess123mate 5873 — 7y
0
Why do I see print(player.name.." has gathered a "..target.Name) because I do not think that the 2 extra dots, next to the quotation marks would cause the error, instead of process the script itself creating an error. " script.Disabled = true " Why do you have all of those names? Why would you set the walkspeed to 0?? Removing the target prevents it from cloning... I think I see a lot of issues. KentrusWoW 0 — 5y

1 answer

Log in to vote
0
Answered by 5 years ago

I reccomend using Button1Down Ex:

local player = game.Players.LocalPlayer
local character = game.Workspace[player.Name].Humanoid
local inventory = player.PlayerGui.ScreenGui.Pages.Inventory
local itemsforinventory = game.ServerStorage.ItemsForInventory
local mouse = player:GetMouse()
local gathering = false

mouse.Button1Down:connect(function()
    local target = mouse.Target
    local playerwalkspeed = character.WalkSpeed
    local range = player:DistanceFromCharacter(target.Position)
    if not gathering and script.Parent.Parent.Name == player.Name and target.Name == "FoliageLarge" or target.Name == "Apple" or target.Name == "WoodTree" or target.Name == "StoneLarge" or target.Name == "StoneMedium" or target.Name == "StoneSmall" or target.Name == "Orange" then
        if range <= 30 and player.PlayerGui.ScreenGui.Pages.Inventory.ItemsInInventory.Value < 40 then

            gathering = true

            character.WalkSpeed = 0
            wait(target.GatherTime.Value)

            target:Remove()

            player.PlayerGui.ScreenGui.Pages.Inventory.ItemsInInventory.Value = player.PlayerGui.ScreenGui.Pages.Inventory.ItemsInInventory.Value + 1

            print(player.Name.." has gathered a "..target.Name)



            character.WalkSpeed = playerwalkspeed

            local itemgui = itemsforinventory[target.Name][target.Name..'Gui']:Clone()

            itemgui.Parent = player.PlayerGui.ScreenGui.Pages.Inventory

            gathering = false

        end

    end

end)

Also if you disable your script it wont run anything after it.

Ad

Answer this question