Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Keydown Event E To Talk NPC?

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
 

6 comments

0

maybe something to do with filtering enabled not making it work or something like that?

0

I know! Watch DutchDeveloper, I'll post a link.

0

I tried dutch developer but his doesn't work either

0

He does. Go to his discord :P

0

i did and it only worked in studio not the game itself

0

Did for me, but ok. Sorry for wasting your time ;(

1 answer

This discussion is preserved as it was. New answers, comments, and votes are closed.