ページ 11

データパックのマルチプレイ対応について

Posted: 2019年11月01日(金) 23:51
by CKenJa
エンティティを何らかの形(ユーザーIDをタグに入れるなど)で持ち主のプレイヤーを区別したいのですが、どうすればよいでしょうか。
試したこと
  • コード: 全て選択

    execute store result entity @e[tag=test,limit=1] Tags int 1 run data get entity @p CustomName
    execute store result entityを用いて、タグにユーザー名を入れようとしたが、CustomNameに一致する要素がないと怒られた
  • コード: 全て選択

    execute store result entity @e[tag=test,limit=1] Tags int 1 run data get entity @p UUIDMost
    execute store result entityを用いて、タグにUUIDを入れようとしたが、変化なし
  • コード: 全て選択

    execute store result score @p test_UUIDMost run data get entity @p UUIDMost
    execute store result scoreで、スコアボードにUUIDを入れようとしたが、スコアボードは2億くらいまでしか入らなかった。
  • その他いろいろググりましたが、ググり方が悪いのか、使えそうな情報は出てきませんでした。
また、その他データパックのマルチプレイ対応に役立つ知識や、
データパックについて勉強になるサイトなどを紹介していただけるとありがたいです。

Re: データパックのマルチプレイ対応について

Posted: 2019年11月07日(木) 19:33
by ちぇん
CKenJa さんが書きました: 2019年11月01日(金) 23:51 エンティティを何らかの形(ユーザーIDをタグに入れるなど)で持ち主のプレイヤーを区別したいのですが、どうすればよいでしょうか。
試したこと
  • コード: 全て選択

    execute store result entity @e[tag=test,limit=1] Tags int 1 run data get entity @p CustomName
    execute store result entityを用いて、タグにユーザー名を入れようとしたが、CustomNameに一致する要素がないと怒られた
  • コード: 全て選択

    execute store result entity @e[tag=test,limit=1] Tags int 1 run data get entity @p UUIDMost
    execute store result entityを用いて、タグにUUIDを入れようとしたが、変化なし
  • コード: 全て選択

    execute store result score @p test_UUIDMost run data get entity @p UUIDMost
    execute store result scoreで、スコアボードにUUIDを入れようとしたが、スコアボードは2億くらいまでしか入らなかった。
  • その他いろいろググりましたが、ググり方が悪いのか、使えそうな情報は出てきませんでした。
また、その他データパックのマルチプレイ対応に役立つ知識や、
データパックについて勉強になるサイトなどを紹介していただけるとありがたいです。
どのようなDatapackを作ろうとしているのかわからないので有効な方法かはわかりませんが参考程度に私がやっている方法を...

初回join時にプレイヤーに固有のIDをセットしておく

コード: 全て選択

scoreboard players add #global UserID 1
scoreboard players operation @s UserID = #global UserID
コピーはこいつ

コード: 全て選択

scoreboard players operation [コピー先Entity] UserID = [コピー元プレイヤー] UserID

Re: データパックのマルチプレイ対応について

Posted: 2019年11月08日(金) 17:07
by CKenJa
なるほど。エンティティのスコアボードを利用するんですね。
こんな不適切な質問に回答してくださり、ありがとうございます。

Re: データパックのマルチプレイ対応について

Posted: 2019年11月08日(金) 17:31
by ちぇん
書き忘れてましたがEntity側からプレイヤーを呼び出す方法は

コード: 全て選択

execute as @s at @s as [可能性のあるプレイヤー全員を対象に] if score @s UserID = @e[distance=0,limit=1,sort=nearest] UserID run ...
このコマンドでas = プレイヤー at = Entityの状態を作ってます。