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

Keydown Event E To Talk NPC?

Asked by 6 years ago

So i have been making this npc for a while now i got it to work in studio but not roblox can someone help me? This is the code

local UserInputService = game:GetService("UserInputService")
local Player = game.Players.LocalPlayer
local Character = Player.Character
local isinrageof = nil
local ischatting = false
local line = 1
local istalking = false
local dialouges = nil

local function onInputBegan(input,gameProcessed)
    if input.UserInputType == Enum.UserInputType.Keyboard then
        local keyPressed = input.KeyCode
        if keyPressed == Enum.KeyCode.E then
            if isinrageof ~= nil and not istalking then
                if ischatting == false then
                    line = 1
                    ischatting = true
                    dialouges = require(isinrageof.Lines)
                    Character.Humanoid.WalkSpeed = 0
                    script.Parent.DialougeHolder.Dialouge.Text = ""
                    script.Parent.DialougeHolder:TweenPosition(UDim2.new(.5,0,1,0),Enum.EasingDirection.Out,Enum.EasingStyle.Back,.5,true)
                    wait(.5)
                    local CurLine = dialouges[line]
                    istalking = true
                    for i = 1,#CurLine[1] do
                        script.Parent.DialougeHolder.Dialouge.Text = string.sub(CurLine[1],0,i)
                        wait(CurLine[2])
                    end
                    if CurLine[3] then
                        CurLine[3]()
                    end
                    istalking = false
                    line = line +1
                else
                    local CurLine = dialouges[line]
                    if line > #dialouges then
                        script.Parent.DialougeHolder:TweenPosition(UDim2.new(.5,0,1.5,0),Enum.EasingDirection.Out,Enum.EasingStyle.Back,.5,true)
                        Character.Humanoid.WalkSpeed = 16
                        dialouges = nil
                        ischatting = false
                    else
                        local CurLine = dialouges[line]
                        istalking = true
                        for i = 1,#CurLine[1] do
                            script.Parent.DialougeHolder.Dialouge.Text = string.sub(CurLine[1],0,i)
                            wait(CurLine[2])
                        end
                        if CurLine[3] then
                            CurLine[3]()
                        end
                        istalking = false
                        line = line +1
                    end
                end
            end
        end
    end
end

UserInputService.InputBegan:connect(onInputBegan)

while true do
    wait()
    if ischatting == false then
        isinrageof = nil
        for i,v in pairs(workspace.NPCS:GetChildren()) do
            if(Character.HumanoidRootPart.Position-v.HumanoidRootPart.Position).magnitude <= 5 then
                isinrageof = v
            end
        end
    end
end

0
maybe something to do with filtering enabled not making it work or something like that? LordOfWatermelons 27 — 6y
0
I know! Watch DutchDeveloper, I'll post a link. clrik 8 — 6y
0
I tried dutch developer but his doesn't work either awesomwkidd 11 — 6y
0
He does. Go to his discord :P clrik 8 — 6y
View all comments (2 more)
0
i did and it only worked in studio not the game itself awesomwkidd 11 — 6y
0
Did for me, but ok. Sorry for wasting your time ;( clrik 8 — 6y

1 answer

Log in to vote
0
Answered by
clrik 8
6 years ago

https://www.youtube.com/watch?v=c8rGfQp03oM

Ad

Answer this question