I'm following the default roblox control script but my version isnt working for some reason
MasterModule:
local ZERO_VEC3 = Vector3.new(0, 0, 0)
local HUMANOID_STATES = {
JUMPING = Enum.HumanoidStateType.Jumping,
FALLING = Enum.HumanoidStateType.FallingDown,
LANDED = Enum.HumanoidStateType.Landed
}
local MASTER_INPUT_MODULE = {}
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
while not Players.LocalPlayer do
Players.PlayerAdded:wait()
end
local LOCAL_PLAYER = Players.LocalPlayer
local LOCAL_CHARACTER = LOCAL_PLAYER.Character
local CACHED_HUMANOID = nil
local IS_JUMPING = false
local MOVE_VALUE = Vector3.new(0, 0, 0)
local IS_JUMP_ENABLED = true
function MASTER_INPUT_MODULE.GET_HUMANOID() --Gets the Players Humanoid
if LOCAL_CHARACTER then
if CACHED_HUMANOID then
return CACHED_HUMANOID
else
CACHED_HUMANOID = LOCAL_CHARACTER:FindFirstChildOfClass("Humanoid")
return CACHED_HUMANOID
end
end
end
local CHARACTER_CHILD_REMVD_CONN = nil
local CHARACTER_ANCESTRY_CHANGED_CONN = nil
local function CHARACTER_ADDED(CHARACTER) --Gets the Character even if its changed Ancestry
if CHARACTER_ANCESTRY_CHANGED_CONN then
CHARACTER_ANCESTRY_CHANGED_CONN:disconnect()
end
if CHARACTER_CHILD_REMVD_CONN then
CHARACTER_CHILD_REMVD_CONN:disconnect()
end
LOCAL_CHARACTER = CHARACTER
CACHED_HUMANOID = LOCAL_CHARACTER:FindFirstChildOfClass("Humanoid")
CHARACTER_ANCESTRY_CHANGED_CONN = CHARACTER.AncestryChanged:connect(function()
if CHARACTER.Parent == nil then
LOCAL_CHARACTER = nil
else
LOCAL_CHARACTER = CHARACTER
end
end)
CHARACTER_CHILD_REMVD_CONN = CHARACTER.ChildRemoved:connect(function(CHILD)
if CHILD == CACHED_HUMANOID then
CACHED_HUMANOID = nil
end
end)
end
if LOCAL_CHARACTER then
CHARACTER_ADDED(LOCAL_CHARACTER)
end
LOCAL_PLAYER.CharacterAdded:connect(CHARACTER_ADDED)
local GET_HUMANOID = MASTER_INPUT_MODULE.GET_HUMANOID
local MOVE_FUNC = LOCAL_PLAYER.Move
local UPDATE_MOVEMENT = function()
local HUMANOID = GET_HUMANOID()
if not HUMANOID then return end
if IS_JUMP_ENABLED and IS_JUMPING and not HUMANOID.PlatformStand then
local STATE = HUMANOID:GetState()
if STATE ~= HUMANOID_STATES.JUMPING and STATE ~= HUMANOID_STATES.FREEFALL and STATE ~= HUMANOID_STATES.LANDED then
HUMANOID.Jump = IS_JUMPING
end
end
local ADJ_MOVE_VAL = MOVE_VALUE
MOVE_FUNC(LOCAL_PLAYER, ADJ_MOVE_VAL, true)
end
function MASTER_INPUT_MODULE:INIT() --Initializes Module
RunService:BindToRenderStep("MasterUpdate", Enum.RenderPriority.Input.Value, UPDATE_MOVEMENT)
end
function MASTER_INPUT_MODULE:ENABLE() --Internal Module Enable
IS_JUMP_ENABLED = true
end
function MASTER_INPUT_MODULE:DISABLE() --Internal Module Disable
UPDATE_MOVEMENT()
IS_JUMPING = false
end
function MASTER_INPUT_MODULE:ENABLE_JUMP()
IS_JUMP_ENABLED = true
end
function MASTER_INPUT_MODULE:DISABLE_JUMP()
IS_JUMP_ENABLED = false
end
function MASTER_INPUT_MODULE:ADD_TO_PLAYER_MOVEMENT(MOVE_VEC)
print(MOVE_VEC.X)
end
function MASTER_INPUT_MODULE:GET_MV_VEC()
return MOVE_VALUE
end
function MASTER_INPUT_MODULE:SET_IS_JUMPING(JUMPING)
if not IS_JUMP_ENABLED then return end
IS_JUMPING = JUMPING
local HUMANOID = self.GET_HUMANOID()
if HUMANOID and not HUMANOID.PlatformStand then
HUMANOID.Jump = IS_JUMPING
end
end
function MASTER_INPUT_MODULE:DO_JUMP()
if not IS_JUMP_ENABLED then return end
local HUMANOID = self.GET_HUMANOID()
if HUMANOID then
HUMANOID.Jump = true
end
end
return MASTER_INPUT_MODULE
KeyboardInputModule:
local UserInputService = game:GetService("UserInputService")
local ContextActionService = game:GetService("ContextActionService")
local Players = game:GetService("Players")
local INPUT = {}
local LOCAL_PLAYER = Players.LocalPlayer
local CACHED_HUMANOID = nil
local MASTER_INPUT = require(script.Parent)
local CURRENT_MOVEMENT_VECTOR = Vector3.new(0, 0, 0)
local function GET_HUMANOID()
local CHARACTER = LOCAL_PLAYER and LOCAL_PLAYER.Character
if CHARACTER then
if CACHED_HUMANOID and CACHED_HUMANOID.Parent == CHARACTER then
return CACHED_HUMANOID
else
CACHED_HUMANOID = nil
for _, CHILD in ipairs(CHARACTER:GetChildren())do
if CHILD:IsA("Humanoid") then
CACHED_HUMANOID = CHILD
return CACHED_HUMANOID
end
end
end
end
end
function INPUT:ENABLE()
local FORWARD = 0
local BACKWARD = 0
local LEFT = 0
local RIGHT = 0
local UPDATE_MOVEMENT = function(INPUT_STATE)
if INPUT_STATE == Enum.UserInputState.Cancel then
MASTER_INPUT.ADD_TO_PLAYER_MOVEMENT(-CURRENT_MOVEMENT_VECTOR)
CURRENT_MOVEMENT_VECTOR = Vector3.new(0, 0, 0)
else
MASTER_INPUT.ADD_TO_PLAYER_MOVEMENT(-CURRENT_MOVEMENT_VECTOR)
CURRENT_MOVEMENT_VECTOR = Vector3.new(LEFT + RIGHT, 0, FORWARD + BACKWARD)
MASTER_INPUT.ADD_TO_PLAYER_MOVEMENT(CURRENT_MOVEMENT_VECTOR)
end
print(CURRENT_MOVEMENT_VECTOR)
end
local MOVE_FORWARD_FUNC = function(ACTION, INPUT_STATE, INPUT_OBJECT)
if INPUT_STATE == Enum.UserInputState.Begin then
FORWARD = -1
elseif INPUT_STATE == Enum.UserInputState.End then
FORWARD = 0
end
UPDATE_MOVEMENT(INPUT_STATE)
end
local MOVE_BACKWARD_FUNC = function(ACTION, INPUT_STATE, INPUT_OBJECT)
if INPUT_STATE == Enum.UserInputState.Begin then
BACKWARD = 1
elseif INPUT_STATE == Enum.UserInputState.End then
BACKWARD = 0
end
UPDATE_MOVEMENT(INPUT_STATE)
end
local MOVE_LEFT_FUNC = function(ACTION, INPUT_STATE, INPUT_OBJECT)
if INPUT_STATE == Enum.UserInputState.Begin then
LEFT = -1
elseif INPUT_STATE == Enum.UserInputState.End then
LEFT = 0
end
UPDATE_MOVEMENT(INPUT_STATE)
end
local MOVE_RIGHT_FUNC = function(ACTION, INPUT_STATE, INPUT_OBJECT)
if INPUT_STATE == Enum.UserInputState.Begin then
RIGHT = 1
elseif INPUT_STATE == Enum.UserInputState.End then
RIGHT = 0
end
UPDATE_MOVEMENT(INPUT_STATE)
end
local JUMP_FUNC = function(ACTION, INPUT_STATE, INPUT_OBJECT)
MASTER_INPUT:SET_IS_JUMPING(INPUT_STATE == Enum.UserInputState.Begin)
end
ContextActionService:BindActionToInputTypes("MOVE_FORWARD", MOVE_FORWARD_FUNC, false, Enum.PlayerActions.CharacterForward)
ContextActionService:BindActionToInputTypes("MOVE_BACKWARD", MOVE_BACKWARD_FUNC, false, Enum.PlayerActions.CharacterBackward)
ContextActionService:BindActionToInputTypes("MOVE_LEFT", MOVE_LEFT_FUNC, false, Enum.PlayerActions.CharacterLeft)
ContextActionService:BindActionToInputTypes("MOVE_RIGHT", MOVE_RIGHT_FUNC, false, Enum.PlayerActions.CharacterRight)
ContextActionService:BindActionToInputTypes("MOVE_JUMP", JUMP_FUNC, false, Enum.PlayerActions.CharacterJump)
end
function INPUT:DISABLE()
ContextActionService:UnbindAction("MOVE_FORWARD")
ContextActionService:UnbindAction("MOVE_BACKWARD")
ContextActionService:UnbindAction("MOVE_LEFT")
ContextActionService:UnbindAction("MOVE_RIGHT")
MASTER_INPUT:ADD_TO_PLAYER_MOVEMENT( CURRENT_MOVEMENT_VECTOR)
CURRENT_MOVEMENT_VECTOR = Vector3.new(0, 0, 0)
MASTER_INPUT:SET_IS_JUMPING(false)
end
return INPUT
