Roblox: ServerScriptService.DamagableManager: 48: попытка индексировать локальную «мышь» (нулевое значение) - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь получить положение мыши игрока. Но я получаю ServerScriptService.DamagableManager: 48: попытка проиндексировать локальную ошибку 'mouse' (значение nil).

LocalScript, который я пытаюсь подключиться к сценарию сервера:

local function onMousedClicked(actionName,inputState, inputObject)
    if inputState == Enum.UserInputState.Begin then 
        CheckIfDamagable:InvokeServer()
        print("MouseClicked")
    end
end

Серверный сценарий чтобы получить информацию о мыши:

function CheckIfDamagableObject(player) 
     local mouse = player:GetMouse()

     --Unrelated codes here
end

CheckIfDamagable.OnServerInvoke = CheckIfDamagableObject

1 Ответ

1 голос
/ 06 марта 2020

Как вы обнаружили, когда вы передаете объект мыши серверу, он становится равным нулю. Согласно документам Player: GetMouse () :

Этот элемент должен использоваться в LocalScript для нормальной работы в режиме онлайн.

You следует просто установить положение мыши на клиенте и передать результат на сервер с помощью функции RemoteFunction.

LocalScript

-- get the mouse object
local mouse = game.Players.LocalPlayer:GetMouse()

local function onMousedClicked(actionName,inputState, inputObject)
    if inputState == Enum.UserInputState.Begin then
        -- pass the mouse position and any other information to the server
        local result = CheckIfDamagable:InvokeServer(mouse.Hit)
        print("Mouse Clicked : ", result)
    end
end

Script

function CheckIfDamagableObject(player, mousePos)
    print("Mouse CFrame : ", mousePos)

    -- Unrelated codes here
end

CheckIfDamagable.OnServerInvoke = CheckIfDamagableObject
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...