skriptで体温(?)のようなものを作りたい

溶岩や焚火に近づいたときに体温が上がるようなことをしたいのですがlightlevelなどを使おうと思いました。 でも太陽の光などでずっと15になってしまいます他にいい方法や案はありますでしょうか
20 Replies
月猫ch
月猫ch4w ago
まあそうなるかな 確か ブロックによる発行のlightlevelとskye light level みたいな二つのパラメータなかったっけ
rea
reaOP4w ago
なるほど
mokodate
mokodate4w ago
sunlight levelが日光の光、 block light levelで日光関係ない光レベルを指定できると思います。 たいまつに近づいても体温が上がるようになってしまいますけどね...
rea
reaOP4w ago
寒さを作るために
every 10 seconds:
loop all players:
loop all blocks in radius 10 around the loop-player:
if:
loop-block is a snow block
{temperature.%loop-player%} > 0
then:
add -1 to {temperature.%loop-player%}
every 10 seconds:
loop all players:
loop all blocks in radius 10 around the loop-player:
if:
loop-block is a snow block
{temperature.%loop-player%} > 0
then:
add -1 to {temperature.%loop-player%}
このようなものを作ったのですがこのままだとプレイヤーの半径10ブロックの中にある雪ブロックの数分だけ変数に加える値が変わってしまいます プレイヤーの半径10ブロックの中に雪ブロックがいくつあっても変数に加えられる値が変わらないようにするためにはどうすればいいでしょうか
月猫ch
月猫ch4w ago
まじでめちゃくちゃなほうほうを言うとすれば loopせずに、all blocks in radius 10 around the loop-playerをリストとして取得して それを文字列にします contains "snow" だったら、体温を下げる
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
半径10ブロック以内に1つでも雪ブロックあればいいの?
月猫ch
月猫ch4w ago
every 10 seconds:
loop all players:
set {_b::*} to all blocks in radius 10 around the loop-player
if "%{_b::*}%" contains "snow":
{temperature::%loop-player%} > 0
add -1 to {temperature::%loop-player%}
every 10 seconds:
loop all players:
set {_b::*} to all blocks in radius 10 around the loop-player
if "%{_b::*}%" contains "snow":
{temperature::%loop-player%} > 0
add -1 to {temperature::%loop-player%}
{temperature.%loop-player%}{temperature::%loop-player%} (ちなみに、このままだと1tickの間に大量のblockを取得する処理になるので、私は負荷が心配です)
rea
reaOP4w ago
はい
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
blocks in radius 10 around loop-player contain snow block loop blocksを消して上記conditionsを追記、その下に〜〜>0とadd -1 to 〜〜
月猫ch
月猫ch4w ago
『体温減少ブロックを増やす!』っていって if blocks in radius 10 around loop-player contain BLOCK if blocks in radius 10 around loop-player contain BLOCK2 if blocks in radius 10 around loop-player contain BLOCK3 とかやってそう
rea
reaOP4w ago
一つ一つ範囲と減少量変えたいのでそうしようと一応してます()
月猫ch
月猫ch4w ago
あ~(
tanoKun
tanoKun4w ago
圧倒的アホやな そう言う時の変数だろ あとそれだとバカ計算量あるから、もう少し工夫した方がいい ある程度mapが決まってるなら、事前にworldborderとかで設定しておくとか もしくは、その体温が変動するある程度の領域の中心にマーカーを置くか、変数にでも置いといて計算量を減らすとか 半径10blockの”球”やぞ それぞれのマーカーに “中心座標“,” 影響力(数値)”とかにでもしておいて、 中心座標から “0<プレイヤーの位置<影響力” までは計算に入れる。 1block離れるごとに体温の上昇は減っていくみたいにすれば 簡単なものが実装できる
月猫ch
月猫ch4w ago
条件分岐するたびに blocks in radius してそうで怖いって話ね(
tanoKun
tanoKun4w ago
そうしようとしてたんでしょ実際
月猫ch
月猫ch4w ago
たぶんそうだろうね
tanoKun
tanoKun4w ago
そうなると単純計算で1行のloppで多く見積もって1000回それがブロックごと アホやな サバ死ぬわ
月猫ch
月猫ch4w ago
正直block でやるんじゃなくて せめてバイオームとかで制御すればいいとおもった(
rea
reaOP4w ago
マップほぼ何もできてないですね()
tanoKun
tanoKun4w ago
固定なら
Want results from more Discord servers?
Add your server