원격 이벤트를 사용하여 Roblox에서 사람들을 구금하는 것이 제대로 작동하지 않는 것 같습니다.

KillerFrog11

여기에 거래가 있습니다. 내 게임에서 체포되면 감옥에 보내집니다. 빠져 나가려면 반드시 구제를 받아야합니다. 클라이언트는 그들을 구제하기 위해 서버에 요청을 보냅니다. 내가 믿는이 부분을 제외하고 다른 모든 부분이 작동하는 것처럼 보이지만 클라이언트 측 스크립트 일 수 있습니다. 이 스크립트에 대해 잘못된 것이 있습니까? 나에게 명백한 오류가 있는지 확인했습니다.

local replicatedStorage = game:GetService('ReplicatedStorage')
local createSystemMessage = replicatedStorage:WaitForChild('CreateSystemMessage')

game.ReplicatedStorage.Bail.OnServerEvent:Connect(function(Player,PlayerToBail)
        Player = game.Players:FindFirstChild(Player)

        local tab = nil
    for i,v in pairs(_G.GlobalData) do
        if v.Name == Player.Name then
            tab = v
        end
    end
    if PlayerToBail.Team == game.Teams:FindFirstChild("Criminal") then
        local Bounty = PlayerToBail.leaderstats.Bounty.Value * 2
     if tab.Bank <= Bounty then
        tab.Bank -= Bounty
            PlayerToBail.leaderstats.Bounty.Value = 0
            PlayerToBail.Prisoner.Value = false
            PlayerToBail.Team = game.Teams:FindFirstChild("Civilian")
            createSystemMessage:FireAllClients((Player.Name .. ' has Bailed ' .. PlayerToBail.Name), Color3.fromRGB(0, 250, 0))



end
end
    
end)

다음은 클라이언트 용 스크립트입니다. 이것은 마지막에 인쇄 기능을 보낼 때 작동합니다.

script.Parent.AcceptButton.MouseButton1Click:Connect(function()
            local PlayerName = script.Parent.TargetName.Text
            game.ReplicatedStorage.Bail:FireServer(PlayerName)
            print ("Bail Requested")
end)
아킴

원격 이벤트에 전달하는 인수로 문제가 발생한다고 생각합니다. 클라이언트 스크립트에서 PlayerName을 인수로 전달합니다. 나는 이것이 플레이어 이름의 문자열이라고 가정하고 있습니다.

game.ReplicatedStorage.Bail:FireServer(PlayerName)

PlayerName은 실제로 "PlayerToBail"매개 변수로 전송되며, 플레이어 개체라고 가정합니다. Roblox의 RemoteEvents는 원격 이벤트를 발생시킨 플레이어를 첫 번째 인수로 자동으로 전달합니다. 따라서 원격 이벤트에 연결된 함수의 "Player"매개 변수는 원격 이벤트를 발생시킨 로컬 스크립트가있는 실제 플레이어 개체입니다.

대신 다음과 같이 원격 이벤트를 시작합니다.

game.ReplicatedStorage.Bail:FireServer()

보석금을 내고자하는 플레이어가 자동으로 인수로 전달되므로 FireServer에 인수를 추가 할 필요가 없습니다. 또한 서버 스크립트에서 "PlayerToBail"매개 변수를 제거합니다.

또한 서버 스크립트에 다음 코드 줄이 필요하지 않습니다.

Player = game.Players:FindFirstChild(Player)

플레이어는 이미 게임의 개체를 참조하고 있습니다. 또한 Player는 문자열이 아니라 객체입니다. 그래서 이것은 작동하지 않습니다. 목적에 맞게 Player를 그대로 사용할 수 있습니다.

원격 이벤트에 대한 추가 정보 : https://developer.roblox.com/en-us/articles/Remote-Functions-and-Events

여전히 문제가있는 경우 언제든지 후속 조치를 취하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관