(解決済み)【Skript】ArmorのChangeとLoreの読み取りについて

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

(解決済み)【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by Neko_S96S » 2017年12月12日(火) 15:15

防具を装備するときに装備のLoreを読み取り「防御力+<number>」っとあったとき<number>を{defense.%player%}に入れたいのですが防具を装備するときとLoreの読み取りがよくわかりません。
最終的に作りたいものは防具を装備するときに防御力を変数に入れダメージを受けるときに「敵の攻撃力-防御力=与えるダメージ」にしたいのです。
分かりにくかったらすいません
最後に編集したユーザー Neko_S96S [ 2017年12月14日(木) 00:23 ], 累計 1 回
RPG鯖制作中!参加可能!
画像
ビルダー募集アイディア募集しております(*- -)(*_ _)ペコリ
Discord: https://discord.gg/X8CqXXT
Skype: https://join.skype.com/F8lfNCvS6bIL
Neko_S96S
ID:7cd10949
木を殴ってる
 
記事: 39
登録日時: 2017年9月08日(金) 01:09

  • (PostNo.311309)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by mcgo » 2017年12月12日(火) 19:37

コード: 全て選択
on armor equip:
   wait 1 tick
   set {_lore1} to line 1 of lore of player's helmet
   set {_lore2} to line 1 of lore of player's chestplate
   set {_lore3} to line 1 of lore of player's leggings
   set {_lore4} to line 1 of lore of player's boots
   clear {defense.%player%}
   set {_n} to 1
   loop 4 times:
      replace "防御力+" with "" in {_lore%{_n}%}
      set {_lore%{_n}%} to {_lore%{_n}%} parsed as number
      add {_lore%{_n}%} to {defense.%player%}
      add 1 to {_n}


addon : SharpSK

このコードは「防御力+<number>」が特定の行に書かれていることが条件です。
特定の行のLoreを読み取りたい時は、line <number> of lore of player's helmetと書きます。
読み取ったLoreを変数に入れると、防御力+という文字列が邪魔なので、replaceで消してやります。
残った数字は文字として認識されてないので、parsed as numberで数字として認識させてプレイヤー毎の変数に格納します。
主にSkriptのトピックに出現中・・・
個人的に話したければプライベートメッセージいつでも送ってね♪
最近少しだけプラグイン開発に手を出し始めました^p^
どっかのサーバーでSkriptでお仕事したいなぁ~
【Skript自作コード公開中】
アバター
mcgo
ID:41fdeb47
鉄鉱掘り
 
記事: 276
登録日時: 2016年11月04日(金) 00:05
お住まい: Minecraft

  • (PostNo.311315)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by Neko_S96S » 2017年12月12日(火) 20:24

Loreには武器の説明文なども含まれるのでずれが起きてしまうので、一番下のLineを指定するにはどうすればいいでしょうか?
RPG鯖制作中!参加可能!
画像
ビルダー募集アイディア募集しております(*- -)(*_ _)ペコリ
Discord: https://discord.gg/X8CqXXT
Skype: https://join.skype.com/F8lfNCvS6bIL
Neko_S96S
ID:7cd10949
木を殴ってる
 
記事: 39
登録日時: 2017年9月08日(金) 01:09

  • (PostNo.311319)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by Neko_S96S » 2017年12月12日(火) 20:50

いろいろ試しらたやっぱりlineがすれてしまっているというか、Loreをすべて変数に入れてしまっているみたいです。Loreが防御力だけだと成功しました!
RPG鯖制作中!参加可能!
画像
ビルダー募集アイディア募集しております(*- -)(*_ _)ペコリ
Discord: https://discord.gg/X8CqXXT
Skype: https://join.skype.com/F8lfNCvS6bIL
Neko_S96S
ID:7cd10949
木を殴ってる
 
記事: 39
登録日時: 2017年9月08日(金) 01:09

  • (PostNo.311320)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by mcgo » 2017年12月12日(火) 20:57

code
コード: 全て選択
options:
   count : 30

on armor equip:
   wait 1 tick
   clear {defense.%player%}
   set {_line} to 1
   while {_line} is less than or equal to {@count}:
      if line {_line} of lore of player's helmet contains "防御力":
         set {_lore1} to line {_line} of lore of player's helmet
         stop loop
      add 1 to {_line}
   set {_line} to 1
   while {_line} is less than or equal to {@count}:
      if line {_line} of lore of player's chestplate contains "防御力":
         set {_lore2} to line {_line} of lore of player's chestplate
         stop loop
      add 1 to {_line}
   set {_line} to 1
   while {_line} is less than or equal to {@count}:
      if line {_line} of lore of player's leggings contains "防御力":
         set {_lore3} to line {_line} of lore of player's leggings
         stop loop
      add 1 to {_line}
   set {_line} to 1
   while {_line} is less than or equal to {@count}:
      if line {_line} of lore of player's boots contains "防御力":
         set {_lore4} to line {_line} of lore of player's boots
         stop loop
      add 1 to {_line}
   set {_n} to 1
   loop 4 times:
      replace "防御力+" with "" in {_lore%{_n}%}
      set {_lore%{_n}%} to {_lore%{_n}%} parsed as number
      add {_lore%{_n}%} to {defense.%player%}
      add 1 to {_n}
   broadcast "%{defense.%player%}%"

1番下のLineを指定するというコードはありません。
なので、今回は「防御力+<number>」という文字列が書かれた行を探せば良いので、while文を使って
Loreの1行目から「防御力」という文字列が含まれてるかをチェックして、見つかれば変数に格納するようにしました。
あとは先ほどと同様に「防御力+」という邪魔な文字列を削除し、それを数字として解析してプレイヤー毎の変数に格納するだけです。
防具を装備してその防御力の合計を読み取るわけですから、もちろん防具を外した時にもチェックしないといけないと思うので、
eventをon armor equipのものとon armor unequipの二つを用意する必要があります。
Loreのチェックする行数はoptionsの30の部分を変更すれば変えれます。
主にSkriptのトピックに出現中・・・
個人的に話したければプライベートメッセージいつでも送ってね♪
最近少しだけプラグイン開発に手を出し始めました^p^
どっかのサーバーでSkriptでお仕事したいなぁ~
【Skript自作コード公開中】
アバター
mcgo
ID:41fdeb47
鉄鉱掘り
 
記事: 276
登録日時: 2016年11月04日(金) 00:05
お住まい: Minecraft

  • (PostNo.311327)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by Neko_S96S » 2017年12月12日(火) 22:43

set {_lore1} to line 2 of lore of player's helmetでline 2を選択してもloreすべてが読み込まれてしまいます。
コード: 全て選択
while {_line} is less than or equal to {@count}:
      if line {_line} of lore of player's helmet contains "&9&l防御力+":
         set {_lore1} to line {_line} of lore of player's helmet
         stop loop

↑の時点でLoreのすべての行が入ってしまってるみたいです
装備に説明に「防御力」があると誤検知してしまうと思ったので一部書き換えました

↓テストしたアイテム
画像
RPG鯖制作中!参加可能!
画像
ビルダー募集アイディア募集しております(*- -)(*_ _)ペコリ
Discord: https://discord.gg/X8CqXXT
Skype: https://join.skype.com/F8lfNCvS6bIL
Neko_S96S
ID:7cd10949
木を殴ってる
 
記事: 39
登録日時: 2017年9月08日(金) 01:09

  • (PostNo.311329)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by mcgo » 2017年12月12日(火) 23:29

Neko_S96S さんが書きました:set {_lore1} to line 2 of lore of player's helmetでline 2を選択してもloreすべてが読み込まれてしまいます。
コード: 全て選択
while {_line} is less than or equal to {@count}:
      if line {_line} of lore of player's helmet contains "&9&l防御力+":
         set {_lore1} to line {_line} of lore of player's helmet
         stop loop


↑の時点でLoreのすべての行が入ってしまってるみたいです
装備に説明に「防御力」があると誤検知してしまうと思ったので一部書き換えました

lore全てが読み込まれるというのは、画像のアイテムでいうと『着心地がよく防御力もそこそこ』と『防御力+2』の2文が変数に格納されてしまうということでしょうか?
主にSkriptのトピックに出現中・・・
個人的に話したければプライベートメッセージいつでも送ってね♪
最近少しだけプラグイン開発に手を出し始めました^p^
どっかのサーバーでSkriptでお仕事したいなぁ~
【Skript自作コード公開中】
アバター
mcgo
ID:41fdeb47
鉄鉱掘り
 
記事: 276
登録日時: 2016年11月04日(金) 00:05
お住まい: Minecraft

  • (PostNo.311330)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by Neko_S96S » 2017年12月12日(火) 23:53

そうです。
コード: 全て選択
while {_line} is less than or equal to {@count}:
      if line {_line} of lore of player's helmet contains "&9&l防御力+":
         set {_lore1} to line {_line} of lore of player's helmet
         stop loop
message "%{_lore1}%"

とすると、2文ともが表示されます。
正常だったらすいません
RPG鯖制作中!参加可能!
画像
ビルダー募集アイディア募集しております(*- -)(*_ _)ペコリ
Discord: https://discord.gg/X8CqXXT
Skype: https://join.skype.com/F8lfNCvS6bIL
Neko_S96S
ID:7cd10949
木を殴ってる
 
記事: 39
登録日時: 2017年9月08日(金) 01:09

  • (PostNo.311331)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by Neko_S96S » 2017年12月13日(水) 00:00

コード: 全て選択
command /check:
   trigger:
      set {test} to line 1 of lore of player's helmet
      message "%{test}%"

さっきの帽子を装備した状態で/checkすると2文表示されます。
Line指定が仕事していないのでしょうか・・・
RPG鯖制作中!参加可能!
画像
ビルダー募集アイディア募集しております(*- -)(*_ _)ペコリ
Discord: https://discord.gg/X8CqXXT
Skype: https://join.skype.com/F8lfNCvS6bIL
Neko_S96S
ID:7cd10949
木を殴ってる
 
記事: 39
登録日時: 2017年9月08日(金) 01:09

  • (PostNo.311332)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by mcgo » 2017年12月13日(水) 00:09

1.10.X~1.12.Xのバージョンでテストしたところ正常に動作しました。
ちなみにバージョンはいくつですか?
主にSkriptのトピックに出現中・・・
個人的に話したければプライベートメッセージいつでも送ってね♪
最近少しだけプラグイン開発に手を出し始めました^p^
どっかのサーバーでSkriptでお仕事したいなぁ~
【Skript自作コード公開中】
アバター
mcgo
ID:41fdeb47
鉄鉱掘り
 
記事: 276
登録日時: 2016年11月04日(金) 00:05
お住まい: Minecraft

  • (PostNo.311333)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by Neko_S96S » 2017年12月13日(水) 00:22

そういえば書いていませんでしたすいません
spigot 1.8.8 skript 2.1.2です
RPG鯖制作中!参加可能!
画像
ビルダー募集アイディア募集しております(*- -)(*_ _)ペコリ
Discord: https://discord.gg/X8CqXXT
Skype: https://join.skype.com/F8lfNCvS6bIL
Neko_S96S
ID:7cd10949
木を殴ってる
 
記事: 39
登録日時: 2017年9月08日(金) 01:09

  • (PostNo.311355)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by mcgo » 2017年12月13日(水) 21:00

解決策としてはリスト変数を使った方法はどうでしょうか。
コード: 全て選択
set {_lore::*} to {_lore} split at "-"

これは{_lore}の値をハイフン毎に区切ってリスト変数に格納するものです。
今回はハイフン毎ではなく『防御力+』毎に区切れば良いと思います。
コード: 全て選択
set {_lore} to lore of player's helmet
   set {_lore::*} to {_lore} split at "防御力+"
   loop {_lore::*}:
      set {_value} to loop-value
   set {_value} to {_value} parsed as number
   add {_value} to {defense.%player%}

ただし、最後の行に書くのが条件ですがNeko_S96Sさんの思っていることは出来ると思います。

提案
自分も前にRPGを運営している時は1.8.8でやっていましたが、Skriptがあまり安定していないことが多々あるので、
個人的には1.10以降のバージョンにサーバーをアップデートすることをおすすめします。
Skriptもそのaddonもだいぶ1.10以降に対応してきて、1.8よりもSkriptがかなり安定しています。
武器のクールダウンやオフハンドスロットが嫌というのであれば公開されてるプラグインで無効化することも可能ですし、
ブロックも増えて建築の幅が広がるのではないかと考えています。
自分は今1.12.2でSkriptを使っていますが、addonも定番のものは対応してるのでおすすめです。
主にSkriptのトピックに出現中・・・
個人的に話したければプライベートメッセージいつでも送ってね♪
最近少しだけプラグイン開発に手を出し始めました^p^
どっかのサーバーでSkriptでお仕事したいなぁ~
【Skript自作コード公開中】
アバター
mcgo
ID:41fdeb47
鉄鉱掘り
 
記事: 276
登録日時: 2016年11月04日(金) 00:05
お住まい: Minecraft

  • (PostNo.311367)

Re: 【Skript】ArmorのChangeとLoreの読み取りについて

投稿記事by Neko_S96S » 2017年12月14日(木) 00:18

Lore読み取りのとこがエラー吐いてましたが簡単に直せた上にちゃんと動きました!本当にありがとうございました
バージョンアップの件は鯖民達と相談になると思います(*- -)(*_ _)ペコリ
RPG鯖制作中!参加可能!
画像
ビルダー募集アイディア募集しております(*- -)(*_ _)ペコリ
Discord: https://discord.gg/X8CqXXT
Skype: https://join.skype.com/F8lfNCvS6bIL
Neko_S96S
ID:7cd10949
木を殴ってる
 
記事: 39
登録日時: 2017年9月08日(金) 01:09


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

x