So im making this mind control script where if player1 presses "c" on player2, player2's controls will be disabled and player1's camera switches to player2's camera, at that point when player1 presses WASD then player2's character will move as so...
The localscript is inside StarterPack and a remotefunction "RemotePossess" is a child of that localscript, the receiver script being a server script is a child of the remotefunction
Localscript
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local Key = nil
local MoveKey = nil
local isTyping = false
local Enabled = true
local ButtonDown = true
local camera = game.Workspace.CurrentCamera
--make sure player isnt typing
game:GetService("UserInputService").InputBegan:connect(function(InputObj)
if InputObj.KeyCode == Enum.KeyCode.Slash then
local finishEvent = nil
isTyping = true
finishEvent = game:GetService("UserInputService").InputBegan:connect(function(InputObj)
if InputObj.KeyCode == Enum.KeyCode.Return or InputObj.UserInputType == Enum.UserInputType.MouseButton1 then
isTyping = false
finishEvent:disconnect()
end
end)
end
end)
--------------------------------------------------------
game:GetService("UserInputService").InputBegan:connect(function(Input, gameProcessedEvent)
if isTyping == true or Enabled == false then return end --checks if player is typing
if Input.KeyCode == Enum.KeyCode.C then Key = "C"
Enabled = false
ButtonDown = true
if mouse.Target.Parent:FindFirstChild("Humanoid") == nil then
if mouse.Target and mouse.Target.Parent then
print("not found")
print(mouse.Target.Parent)
end
end
if mouse.Target.Parent:FindFirstChild("Humanoid") ~= nil then --and doesnt contain "animal" stringvalue
print("Humanoid found")
local mousehit = mouse.Hit
local mouseTarget = mouse.Target
local possessedCheck = mouseTarget.Parent.Possessed.Value
script.RemotePossess:FireServer(player, Input.KeyCode)
camera.CameraSubject = mouseTarget.Parent.Humanoid
possessedCheck = true
--game:GetService("UserInputService").InputBegan:connect(function(InputObject, gameProcessedEvent)
--if InputObject.keyCode == Enum.KeyCode.W then MoveKey = "W"
--end
--end)
end
end
end)
Serverscript
local ButtonDown = false
local enabled = true
local plr = script:FindFirstAncestorWhichIsA("Player")
print(plr.Name)
local Mouse = plr:GetMouse()
script.Parent.OnServerEvent:Connect(function(player, Input, action, mouseTarget, mousehit)
local c = player.Character.Humanoid
print(Input)
if action == "Release" then ButtonDown = false end
if action == "Possess" and enabled == true then
spawn(function()
enabled = false ButtonDown = true
wait()
while ButtonDown == true and mouseTarget.Parent:FindFirstChild("Humanoid") ~= nil do
if Input.KeyCode == Enum.KeyCode.W then
mouseTarget.Parent.Humanoid:MoveTo(mousehit.Position)
end
--mouseTarget.Parent.Humanoid:MoveTo()
wait()
end
enabled = true ButtonDown = false
end)
end
if action == "Move" and enabled == false then
end
end)
it currently comes up with no errors but the npc that is posessed refuses to move when W is prompted within the OnServerEvent/receiver script, im pretty sure wasd/ player movement has something to do with the camera so I tried to use the position of where mousehit is and possibly get a cframe from that but it didnt work
I know it has something to do with where the camera is pointed and im gonna have to reference A, S and D unless theres a shortcut to doing that.
I know theres a command for like player.Humanoid.Jump = true and im not sure if theres something like that for walking.
