skript ダメージでのプレイヤー指定方法

サーバー運用される方はこちらで情報交換されてはいかがでしょうか?
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.309789)

skript ダメージでのプレイヤー指定方法

投稿記事by 丸丸もり » 2017年11月01日(水) 12:53

こんにちは。
skriptで少しわからなかった場所があるので質問させていただきます。
loopして周りの検索したentityにダメージを与えるっていうのをよく使うのですが、
それのダメージを 「damage loop-entity by 3」のようにすると被害者はプレイヤーからダメージを受けたわけじゃなく
不明な何かに固定ダメージを受けるので「経験値を貰えない+誰が倒したかわからない」っていう風になってしまうんです。
なので自分的にはdamage loop-entity by 3 from playerのような感じでダメージを誰から受けたか指定できる文にしたいんですが、書き方を知ってる方いますでしょうか?
丸丸もり
ID:a8c40334
 

  • (PostNo.309799)

Re: skript ダメージでのプレイヤー指定方法

投稿記事by mcgo » 2017年11月01日(水) 19:06

こんにちは、丸丸もりさん。
確かに[damage loop-entity by 3]と書けば、attackerの指定が無いため誰が攻撃したのかがnoneになります。
その場合、SkQueryというアドオンのここにある書き方ならattackerを指定することが可能です。
以下のコードは自分が作った例です。
コード: 全て選択
on right click:
   held item is stone
   loop entities in radius 5 around player:
      type of loop-entity is not player
      make player damage loop-entity by 20

自分から半径5ブロック以内にいるプレイヤー以外のエンティティに20ダメージを与え、attackerはイベントプレイヤーとするというコードです。
参考になれば幸いです。
何かありましたらまた返信下さい。

使用したSkQuery : https://www.spigotmc.org/resources/unofficial-skquery-fork-1-6-1-12.36631/
サーバー関係の分からないことは英語で検索したら案外出ててくるで!
だってMinecraftって海外生まれやで!
最近はSkriptを使って色々自作してサーバー作ってます。
もしよければSkript作成してもいいゾ(激ムズは拒否するかも・・・)
詳しくはPMで!
【Skript自作コード公開中】
アバター
mcgo
ID:84def908
石炭掘り
 
記事: 234
登録日時: 2016年11月04日(金) 00:05

  • (PostNo.309803)

Re: skript ダメージでのプレイヤー指定方法

投稿記事by 丸丸もり » 2017年11月01日(水) 21:21

mcgoさん
返信ありがとうございます!
おかげさまでattackerの指定ができるようになりました。

skriptに詳しそうなのでもう2つ質問してもよろしいでしょうか?
お時間がある時で構いませんので良ければお願いします。

1つ目:
ある武器(A)を構えて左クリックしたとき(A)の見た目を変える。というのを実現したいのですが、
giveでやると必ず左詰めになってしまって一回持ち替えなければいけなくなってしまいset slotだと指定したスロットにしか入れ替えられないんです。
なので、構えている武器がどこのスロットにあるか特定して そこに違うアイテムを差し替えるという方法を知りたいです。

2つ目:
指定した相手を全く動けなく(移動とマウスカーソルの移動ができなくなる)する方法。
飛行してるmobの動きも静止させる方法等はあるでしょうか?
丸丸もり
ID:a8c40334
 

  • (PostNo.309809)

Re: skript ダメージでのプレイヤー指定方法

投稿記事by mcgo » 2017年11月02日(木) 00:37

1つ目:
ある武器(A)を構えて左クリックしたとき(A)の見た目を変える。というのを実現したいのですが、
giveでやると必ず左詰めになってしまって一回持ち替えなければいけなくなってしまいset slotだと指定したスロットにしか入れ替えられないんです。
なので、構えている武器がどこのスロットにあるか特定して そこに違うアイテムを差し替えるという方法を知りたいです。

コード: 全て選択
on left click:
   if held item is wooden sword:
      set player's held item to diamond sword named "%name of held item%" with lore "%lore of held item%"

持っているアイテムを別のアイテムにしたい場合はset player's held item~~~と書けば持っているアイテムを別のものに入れ替えることが出来ます。
上記のコードは木の剣を持って左クリックすると、nameとloreは木の剣のもので、アイテムがダイヤの剣に変わるだけのものです。

2つ目:
指定した相手を全く動けなく(移動とマウスカーソルの移動ができなくなる)する方法。
飛行してるmobの動きも静止させる方法等はあるでしょうか?

コード: 全て選択
command /stop-player <text> <player>:
   trigger:
      if arg-1 is "true":
         set {stop-player%arg-2%} to "true"
      else if arg-1 is "false":
         set {stop-player%arg-2%} to "false"

on any move:
   {stop-player%player%} is "true"
   cancel event

プレイヤーのフリーズは可能です。
Umbasakaというアドオンのon any moveというイベントはマウスを動かしただけで発生するイベントです。
なので、コマンドか何かで変数をいじってプレイヤーをフリーズさせることが出来ます。

on any moveはプレイヤーが動いた時にしか発生しないので、MOBには使えません。
また、MOBが動いた時というイベントも自分の調べた限り存在しませんし、検索すればいくつか方法はありますが、あまりオススメ出来ません。
パッと思いつくやり方は、常にその場にテレポートさせ続けることです。
しかし、相当な負荷になると予想がつくのでやらない方が良いでしょう。
他の人の回答を待つか、MOBのフリーズを諦めるかのどっちかだと思います。
サーバー関係の分からないことは英語で検索したら案外出ててくるで!
だってMinecraftって海外生まれやで!
最近はSkriptを使って色々自作してサーバー作ってます。
もしよければSkript作成してもいいゾ(激ムズは拒否するかも・・・)
詳しくはPMで!
【Skript自作コード公開中】
アバター
mcgo
ID:84def908
石炭掘り
 
記事: 234
登録日時: 2016年11月04日(金) 00:05


Return to 質問:マルチサーバー運用

x