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

Why does my commands not function properly?

Asked by
KenUSM 53
5 years ago

A weird thing happens when I put the function :help or :Help it Skips it's own command and does the command of the one with the similar name :RemoveHelp, Kinda the same thing happens with the DisableDefaultChat Command on the first attempt it works properly but when I try EnableDefaultChat on the second attempt it does both commands when I only commanded it to do only 1 command. Is there anything wrong with my script that's causing this cause I'm starting to think this is a roblox glitch.

Here's the full script, you can test the :help and :remove Help functions without the Remote function part that :DisableDefaultChat uses. Also Btw this is a custom chat i'm making.

local MainPlayer = game.Players.LocalPlayer
local TextChatBox = script.Parent
local MainChatBox = TextChatBox.Parent
local Chat = MainChatBox.Parent
local ScrollingChatFrame = MainChatBox.ScrollingChatFrame
local TextBox = TextChatBox.TextBox
local TextLabel = ScrollingChatFrame.TextLabel
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local KenChatFolder = ReplicatedStorage:FindFirstChild("KenChatFolder")
local UserIndex = MainChatBox.Parent:FindFirstChild("UserIndex")
local ChatSource = KenChatFolder.ChatSource
local FunctsFolder = ChatSource.FunctsFolder
local ConfirmMessage = UserIndex.ConfirmMessage
local TextMessage = ConfirmMessage.TextMessage
local MainPlayerName = "[" .. MainPlayer.Name .. "]: "
local ChatBox 
local TextChanging = true


function CommandLine(Text, ExecutedText, bool)
    if Text == ExecutedText then 
        if ExecutedText == ":help" or ":Help" then 
            SystemCommandChat("help", true)
        end
        if ExecutedText == ":RemoveHelp" or ":Removehelp" then 
            SystemCommandChat("RemoveHelp", true)
        end
        if ExecutedText == ":DisableDefaultChat" then 
            SystemCommandChat("DisableDefaultChat", true)
        end
        if ExecutedText == ":EnableDefaultChat" then 
            SystemCommandChat("EnableDefaultChat", true)
        end
        SystemCommandChat("",false) -- I did this to see if it would fix my problem
        print(ExecutedText)
    end
end

function SystemCommandChat(Command, bool)
    local DefaultChatEnablement = FunctsFolder.DefaultChatEnablement
    if Command == "help" and bool == true then 
        TextLabel.Text = "You need Help?"
        bool = false
    end
    if Command == "RemoveHelp" and bool == true then 
        TextLabel.Text = "Ken's Chat"
        bool = false
    end
    if Command == "DisableDefaultChat" and bool == true then
        TextMessage.TypeOfMessageid.Value = 5 
        if TextMessage.TypeOfMessageid.Value == 5 then 
            TextMessage.TypeOfMessageid.Value = 0 
            UserIndex.Visible = true
            ConfirmMessage.Visible = true
            TextMessage.Text = "Are you sure you want to disable the Default Chat?"
            TextMessage.Confirm.MouseButton1Click:connect(function() 
                print(Command)
                DefaultChatEnablement:InvokeServer(false)
            end)
        end
        bool = false
    end
    if Command == "EnableDefaultChat" and bool == true then
        TextMessage.TypeOfMessageid.Value = 6 
        if TextMessage.TypeOfMessageid.Value == 6 then 
            TextMessage.TypeOfMessageid.Value = 0 
            UserIndex.Visible = true
            ConfirmMessage.Visible = true
            TextMessage.Text = "Are you sure you want to enable the Default Chat?"
            TextMessage.Confirm.MouseButton1Click:connect(function() 
                print(Command)
                DefaultChatEnablement:InvokeServer(true)
            end)
        end
        bool = false
    end
end

UserInputService.InputBegan:connect(function(key, bool)
    if bool == false and key.KeyCode == Enum.KeyCode.Period then 
        TextBox.Text = ""
    end
    ChatBox = TextBox.Text
    if bool == false and key.KeyCode == Enum.KeyCode.Return then
        if TextChanging == true then
            local FinishedText = ChatBox 
            local AllSCF = MainPlayer.PlayerGui.KenChat.MainChatBox.ScrollingChatFrame
            local NewTextLabel = TextLabel:Clone()
            NewTextLabel.Parent = AllSCF
            NewTextLabel.Name = "UniqueTextLabel"
            NewTextLabel.Text = MainPlayerName .. FinishedText
            CommandLine(ChatBox, FinishedText)
            print(ChatBox)
        end
    end
end)

-- needs a serverside fix

1 answer

Log in to vote
0
Answered by 5 years ago
Edited 5 years ago

I noticed a mistake on lines 23 and lines 26.

On line 23, you're checking if ExecutedText is equal to ":help", which is correct, but you're checking if the string ":Help" exists/equals true, not checking if ExecutedText equals ":Help". Values that are not nil or not false are considered "truthy" in Lua, and since a string cannot be nil/false it's like saying if ExecutedText == ":help" or true then.

To fix this:

if ExecutedText == ":help" or ExecutedText == ":Help" 

And for line 26, do the same with ":RemoveHelp".

if ExecutedText == ":RemoveHelp" or ExecutedText == ":Removehelp" then
0
That did fix the first portion of my answer, but the second one still can't figure out what goes wrong KenUSM 53 — 5y
0
i figured out the problem i tried using :SetCoreGuiEnabled on a script not a local script. thanks KenUSM 53 — 5y
Ad

Answer this question