1. ホーム
  2. lua

[解決済み] nil と文字列の連結を試みる Roblox

2022-02-09 21:49:25

質問

とても困っています。Robloxの"ProximityPrompt"でEを押し続けると、画面にGUIが表示され、テキストが表示されるようにしようと思っています。テキストが動作しないことを除けば、すべて動作します。また、クライアントスクリプト上で文字列を書いていません。サーバー・スクリプトにそのための変数があり、それが渡されます。しかし、出力にこのエラーが表示され続けています。

Players.ford200000.PlayerGui.BuyGui.Frame.TextInput.Text:2: attempt to concatenate nil with string - Client - (nilと文字列を連結しようとしました。

以下は、私のスクリプトで行っていることです。

local sp = script.Parent
sp.ProximityPrompt.Triggered:Connect(function(player)
    local name = sp.Name
    local ss = game.ServerStorage
    local item = ss.Hats:FindFirstChild(name)
    local price = item.Price
    game.ReplicatedStorage.ShopClickEvent:FireClient(player)
    game.ReplicatedStorage.ShopInfoEvent:FireClient(player)
end)

また、ShopInfoEventをリッスンするローカルスクリプトでは、以下のようになります。

game.ReplicatedStorage.ShopInfoEvent.OnClientEvent:Connect(function(player, price, item)
    script.Parent.Text = "Would you like to buy this ".. item.Name .." for ".. price.Value .."?"
end) 

助けてください、大変助かります。

解決方法は?

このエラーは、あなたが文字列に追加しようとしているオブジェクトが未定義であることを告げています。 これは、以下の可能性があります。 item.Name または price.Value が未定義であるため、この文字列の作成に失敗します。

をどのように定義しているかを見てみましょう。 itemprice を見ると、LocalScriptのコールバックでは、これらの値は両方とも未定義であることがわかります。を呼び出すと RemoteEventの FireClient関数 最初の引数はイベントの送信先をエンジンに伝え、その他の引数はコールバックの引数として渡されます。現在、あなたは引数を全く渡していません。

ですから、この問題を解決するには、スクリプトから正しい引数を渡す必要があります。

game.ReplicatedStorage.ShopInfoEvent:FireClient(player, price, item)

を作成し、LocalScript で適切にパースします。

game.ReplicatedStorage.ShopInfoEvent.OnClientEvent:Connect(function(price, item)
    script.Parent.Text = "Would you like to buy this ".. item.Name .." for ".. tostring(price.Value) .."?"
end)