127 Replies
RPGのプラグインを作りたいのに 有料買うってどういうことです?
自分で1から作るかMMOcoreなどを用意るかですかね?
RPGって言っても、広すぎるので少し案だししてまとめたほうがいいと思います
mythicmobsとの連携などもいろいろあるので
案というのは例えばどのような感じですか?
そもそも RPGの何をまず作りたいんですか?
って考えると、level、mob、ダンジョン、魔法いろいろ出てる来るんですけど
この中で外部に頼るべきもの、自分で作るべきものをしっかり考えて
一応全部なんですけど…
mobとNPC等は既存のプラグインを使う予定で
戦闘システム クエスト 武器 防具 レベルシステム(戦闘レベル 採掘レベル 釣りレベル 採取レベル 技の固有レベル) 職業 固有のダメージ計算式などですかね…
って出てくるじゃないですか、この中で使えそうなプラグインを調べたり、ここは自分で実装したいってのを決めてくんですよ
大きな枠組みであるRPGっていうのはただの総称にしか過ぎなくて、そこからが大変なんです
既存のPLで、自分オリジナルのレベルシステムなどを組むのは難しいので
大体の人は自作してます
MOb系に関してはかなり深い知識がいるので、さっき上げたmythicmobsとの連携をするのが多いです
MOB系に関しては一応私の担当ではないのでまぁ多分大丈夫です()
まぁ自分でやってみたほうが発見が多いと思います
武器 防具等なんですけど
普通に左クリック攻撃 右クリックスキルとかなら簡単にできるんですけどそこから効果的なの乗せることできますかね?
例えば この武器を持っている状態で攻撃した場合攻撃力+10 最大3層まで 10秒間攻撃をしていないと効果クリア的な
自作でってことです? その程度ならskriptでもjavaでも行けますよ
Una_Nancy_Owen
YouTube
【Minecraft】Special Melee Weapons - [Skript]
前作っていたSkriptの近接武器を割と扱えるようにしました
通常→3段攻撃(薙ぎ払い×2 突き×1)
シフト→突き
空中攻撃下→叩きつけ
空中攻撃上→上方薙ぎ払い
左クリック→10連突き
それぞれ先端判定あり
ふむふむ
丁度この前3段攻撃でスキル付きの武器作ってました
で一番今悩んでるのが
地図と独自のダメージ計算式なんですけど
地図は地図MOD的なものなんですけど地図出すだけならGUI使ってできると思うんですけど地図上から設定された場所などへワープ等はできるでしょうか?
ワープ時にどのような操作をしたいかにもよりますが、地図のGUI部分をクリックしたときに、そのエリア内に含まれているTPポイントを一括で表示して、その中から選択するって感じでできると思います
他ゲームになってしまうんですけどまぁこのような地図にワープポイントが置かれていてカーソル合わせてクリックといったところでしょうか
ちょっとキツイ
ほぼ無理
大きくワープポイント同士が離れてるならわんちゃん
流石にここまでは密集してないです()
200×200に1個くらいでしょうか?
MinecraftのGUIで表示するなら9×6に分割してGUIにアイテムとして設置した時が最大になると思うんですけど
まずこの枠1マスごとの表示だけするアイテムをtextureで作ります
そしてクリックしたときにその枠の中に含まれているワープポイント一覧を表示します
その中から選択したポイントに飛ばします
言いたいこと言ってくれた
ふむふむ
逆にGUIでない場合他の方法はどのようなものがありますか?
textureは手元に詳細画像がないので具体的な例を示せないのですけど、3Dmodel
[map1.json]
を作って
[map1.properties]
を作って
に入れるって感じです
ふむふむ
GUIでない方法となるとまた難しくなるんですけど、まず/teleportとか打ったとして考えます
打った瞬間にプレイヤーを移動できないようにさせます
また同時にプレイヤーのyawとpitchを取得して、その視点の方向にNoAI、NoGravityエンティティを召喚します
このエンティティはCustom Entity Modelでマップを表現した姿をしています
その後視点を移動させてクリックを行います
この際召喚した瞬間とクリックした瞬間のyawとpitchの差から見ていると考えられるポイントに「~に飛びますか?」的なメッセージを表示させます
chatでそのメッセージをクリックしたらそのポイントに飛ぶ
とかどうでしょう?
ポイント一つ一つのtextureとSkriptでの座標を対応させないといけないので、私は作りたくないですけど雰囲気はかなり出ると思います
マップの広さが制限される問題に関しては、マップ自体をいくつかに分割してシフトを押したら見るマップを切り替えるとかで対応できると思います
マップの広さの制限ってどのくらいですか?
現実的なのはGUI方式で、今書いた上の奴は雰囲気を極端に重視し過ぎて作る側の負担とか一切考えられてないです、理論上可能ってだけです
ふむふむ
ならGUIの方がいいですね
目の前にエンティティを用いて地図を表示するということは、取得できるyawとpitchの値に限界があります
ただこれも理論上の限界であって、実際に視点移動で取得するならプレイヤーが位置を移動せずとも問題なく地図を見られる5×5程度のサイズが限界になると思います
ただ地図の縮尺を自由に変更することが出来るので、ポイントの密度にもよりますが1000×1000とかでも使えるとは思います
私もGUIをお勧めします
👍
あと独自のダメージ計算式などは作れますか?
on damage:
dmg(damage ,attacker ,victim)
cancel event
とかのfunctionを用いる方法で完全にdmg計算を独立させてはどうでしょうか?
話を聞く限りだとかなり細かいところまで作りそうなので、HPもMinecraft既存の物を用いるのでなく数値で管理して、そこからプラスマイナスすればいいと思います
数値式にする際は元のHPバーはtextureを変更して別の数値として用いるか、完全に消去してしまってもいいかもですね
(基礎攻撃力+武器攻撃力)×攻撃力%×(ダメージバフ%+属性ダメージ%)×(クリティカルダメージ×マイクラ内クリティカルダメージ1.5)×(弱点攻撃乗算ダメージ×弱点ダメージ増加効果%)×[(1×mobの防御補正)×(1×mobの属性耐性補正)]×防御無視効果%
一応これなんですけど
function dmg(dmg:number ,attacker:entity ,victim:entity):
みたいなfunctionの中に計算式を詰めてしまえばできると思います
持っている武器や防具の計算に関しては
set {_atkweapon} to tool of {_attacker}
や
set {_vichelmet} to helmet of {_victim}
で取得して
弱点系や属性はloreやnbt管理なら上の変数から数値を抜き取る
変数管理ならそのまま読み込む
マイクラ内クリティカルは
function dmg(dmg:number ,attacker:entity ,victim:entity):
を
function dmg(dmg:number ,attacker:entity ,victim:entity ,crit:number):
で{_crit} is 1なら有効とかにするか、velocity of {_attacker}から下方向に移動してるかを確認
って感じになると思います
だいぶ仕様が複雑みたいなので、さすがに計算式は仕様に詳しい方で組んでもらうしかないですね...
後なるべく
左から計算されるようにできるといいんですけどね…
そこは組み方次第ですね...
って感じで、1個1個組み立てていけば問題ないと思います
ふむふむ
ありがとうございます!
夕食のため離席します。
まだ質問したいことはあるのでプラグインも新参者ですがよろしくお願いします!
👍
RPG頑張ってください
たぶん原神のやつですよねこれ
まぁRPGなので半分以上以上は被ります()
とりあえずの試作ですし
絞ってもどっちにしろ攻撃力×クリティカルor会心ですし
(ちなみに原神は楽しくやらせてもらってますガチャイガイ)
[(基礎攻撃力+武器攻撃力)+(技力レベル1ד0.1”)+(レベル固定ダメージ30ד1”)]×(ダメージバフ%)×(クリティカルダメージ×マイクラ内クリティカルダメージ1.5)×(貫通乗算ダメージ1+“0.1”)×(弱点攻撃乗算ダメージ×弱点ダメージ増加効果%)×[(1-mobの防御数値)+防御無視効果%]×(mobとのレベル差×1%)
これでどうかな🤔
ちょっと聞き流してもらってもいい話なんですけど、私のフレンドにかなり詳しい人がいましてその人のいい話を共有しますね。
よくゲーム(原神)などに出ている計算式というのは、それを意図して作ったわけではなくて、上に重ねていく手法で調整したらその計算式になったが正しいらしいんです
計算式をひとつづつ作ったとして、各魔法の属性、通常攻撃、魔法攻撃などいろいろな種類の計算式が増えていき調整、修正ともに難しくなるんですよね
なのでよくあるのが、"式"に依存させるのではなく、武器や装備に値を渡してどんどん"計算してもらう"っていう方法があります
一応ここに入ってるのは作るステータスとして用意したものなので式としては1年くらいかけて少しずつ修正していくのは目に見えてるのでただ独立したダメージの合算方法が知りたいだけですね
ダメージの相殺システムってプラグインで作れますかね?
どういう回答を求めてますか?
自分の攻撃の攻撃判定と相手の攻撃判定がぶつかった際にそのダメージを軽減する感じですね
Minecraftだとクリックした瞬間に攻撃判定が発生しちゃうので、通常攻撃の発生から作らないと難しいですね
私が上に貼ってるYoutubeの奴が丁度それが可能な仕様してるんですけど、クリックしてから武器や攻撃段階に応じたディレイを1tickとか2tick入れて、その間に攻撃を受けたらダメージを軽減って形にするといいと思います
お互いに相殺って形にするなら、上の攻撃を受けた時に犠牲者がダメージを軽減するってのが発生したら、ディレイが終了した瞬間に発生する攻撃のダメージを減少するって形にすると見た目上打ち合ってダメージが軽減されたって感じになるかと
後ろから殴られても軽減しちゃうってのをなくしたいなら、攻撃者のyawとpitchから視点の向きを取って、攻撃者-犠牲者間のvectorと比較してあれこれすれば前にいるときだけ有効とか行けると思います
ふむふむ
レベルについてなんですけど独自になんか作るより経験値バーいじった方がいいですかね?
それもどういう要素をどういう形で作りたいかによりますね
レベルのバーをMPとかCDとして使ったりするなら別で作った方がいいですし、そういう予定がないならそのまま経験値バーをレベルに使ってもいいかもですね
MPは他でいいかなっていうのとCDとかはアイテムとか武器自体につける予定です
であれば経験値バーをそのまま使用してもよいと思います
ただ経験値とレベルの調整で不都合が生じると思うので経験値オーブは削除して、経験値の取得からレベルアップまで作って、表示だけ既存の経験値バーを利用するのがよいと思います
ふむふむ
Fast Travelについてさっと紹介程度に
WynnCraftの補助用Modでワールドマップにワープポイント等が表示される機能があった気はします(テレポートが出来たかは分からないです 工夫次第でどうにか?)
難易度はかなり高いと思われますが、Fabric等を用いてみる手法が一つあるかもとだけ、、
MODが無理なんですよねぇ…
ある一定の範囲を雪の降る地域に変更ってできたりします?
各質問ごとにスレッド分けてもらってもいいですか?
一応質問への返答としては
WorldEditに//setbiomeがあったと思うので/biomelistでバイオームの名前を確認して変更すれば可能です
この方法で雪以外のバイオームに変更することも可能です
後から色々確認したいならばスレッドのタイトルに「RPG:バイオームの変更について」のようにRPGという共通ワードを入れれば検索で引っ掛けやすくなると思います
かなり前のことで申し訳ないんですがこの武器のテキストを見せてもらうことはできないでしょうか?…
これのコードは複数の別プロジェクトのfunctionをそのまま流用してたり、私の環境で動かす前提で作ってるのでこれのコードだけそのまま渡すっていうのがちょっと難しいんですよね...
攻撃を発生させる機構には特にそれが多いんですけど、発生させた後の命中判定部とダメージ判定部は分離できるので、その部分だけでも大丈夫ならいいですよ
それだけでも充分ありがたいです
パーティクル等は無理ですか?
particle部がその別プロジェクトのfunctionなんですよね...
ふむふむ
https://www.youtube.com/watch?v=v6LXu9CEsMY
こういう感じのparticleを簡単に作れるfunction群がありまして、それの一部になります
何時かはどっかで配布しようかなとは思ってますが、今のとこ公開予定がないので...
Una_Nancy_Owen
YouTube
【Minecraft】Magic Circle Particles Like Great Magic - [Skript]
https://youtu.be/RL460nlqUbI
上の動画の続きです
waitとか挟んでそれっぽい感じになりました
ふむふむ
武器をノリで作ろうとしたら見事にパーティクル死亡(
あらら...まぁparticle難しいですよね...
MM気分で行けるかなと思ったら全然いけなかった()
生成パターン1個作れたらあとはそれの経験で割と何とかなりますよ
その1個ができたらいいんですけどねぇ()
最初は円と線の生成パターンがおすすめです
斜めに切る様なparticleは円のやつの応用で行けるので、頑張ってください
動画の武器の攻撃判定部とダメージ発生部はこれです
https://pastebin.com/Ab1trqJw
一応動かせるように書き換えてますが、試してはないのであしからず
鉄の斧を右クリックすれば扇状?のダメージ判定が前方に発生するはずなので、参考になれば
Pastebin
#{_player}=攻撃者#{_radious}=最大射程#{_trueyaw}=yaw範囲#{_uppitch}=pitchの上の...
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
ふむふむ
あと一応経験値バーをMPにようかなとやっぱり思ったんですけど
living(loop-entity) is setを抜くの忘れてました、試すときは消しておいてください
経験値数がMP量で経験値バーがMP量の割合にできます?
経験値バーは弄ったことないのであれですが、実際にやってるサーバーは見たことあるので可能だと思います
ただし経験値オーブ取得で数値がずれると思うので、経験値オーブを発生しないようにするか、拾ったときにcancelする必要があると思います
あとは変数にプレイヤーの最大MPを設定して、それを超えないように制御するのを忘れずに
こちらをとりあえずコピペして使わせてもらったのですが
make 20 of block particle using nether wart block at block 1 meters above loop-entity
でloop-entity is not direction
エラーが出てしまうのですがどのようにすればいいですか
そこはcrit時の赤particleなので正直消しちゃっても動作に支障はないです
OKです
できたのですが
あと開発環境がMcPaper1.20.6 Skript2.9.1で、Addonもそれに合わせてるので、古いverで動くかは不明です
当たり判定はあるのですがパーティクルが()
まぁparticleないと地味ですよね...()
なんかすごい(?)
初心者すぎてあれなんですが
{_なんとか}ってどういう意味ですか?()
ローカル変数
とりあえず要素を減らして クリティカルダメージと与ダメージ増加(%)だけ作っていきたいんですが特にクリティカルの仕組みをどう作るかがわからなくて…
10%で+10Dmgの作り方
chance of X%:の後にダメージの追加処理すれば完成です
ふむふむ
%の場合って
×ですよね?
かけるってなんの文字ですか?…()
*
って書いたら10%で1.5倍(15Dmg)になります
ふむふむ
与ダメージ(%)の場合はチャンスを無くせばOKって感じですか?
「与ダメージ(%)の場合」という表現がよく分かりません
これを翻訳すると
という意味になるので、文を組み替えて色々試してみるのをお勧めします
なるほど中身を変えないと全て同じものにカウントされてしまうんですね
ちなみに与ダメージ(%)が割合ダメージを指すのであれば、victimの最大HPと現在HPを取得して、直接操作する必要があるので、また違う処理になります
ふむふむ
あと攻撃力とかもそうなんですけど同じ武器でも攻撃力とかクリティカル率とかをランダムにすることはできますか?
可能ですよ
random integer between X and Xという部分ですね
このコードであれば攻撃力は10から30の間の整数からランダムで選択されます
また20~50%の確率で攻撃力がさらに1.5倍になります
仮にクリティカル倍率までランダムにするならば
とすることで、クリティカル倍率を1.1倍から2倍の間でランダムに選択されます
ランダムを多用する場合は必然的にローカル変数({_なんとか}のこと)が増えるので、変数名は見てすぐ理解できるような名前を付けるのがおすすめです
なるほど!
あと話は変わってしまうのですが…
武器にスキルなどをつけずにスキルツリーをGUIで作るつもりなんですが
wynncraftの画像をお借りするんですが
こういうのってテクスチャだと思うんですけどどういうので作れますか?
テクスチャを専門にしているわけではないので、詳細までは理解しかねますが、これがプレイヤーインベントリと6行のチェスト型インベントリを使用していると仮定して回答しますね
まずは下側の画面(プレイヤーインベントリ)の領域を使用するために、このインベントリを開いた際にインベントリ内のアイテムを変数に保存した上で一度削除する必要があると思います
その際保存した変数に関しては、インベントリを閉じた、またはログインした際に呼び出しを行い、呼び出しを行った時点で変数は削除するようにする必要があります
ログインの際に呼び出す仕組みを作る理由は、インベントリを開いた状態でサーバーから落ちた場合の対策です
次に背景となるテクスチャを作成する必要があります
この画像の場合は石板の灰色部分ですね
これは少々説明が難しいのですが、BlockBench等で3Dmodelを最大サイズで作成した後、インベントリ上の表示を拡大して作成することが出来ます
このサイズ感であると恐らく背景用テクスチャのために4マス分アイテムスロットを消費すると思います
また、背景用にインベントリスロットのZ軸を-70程度にしておくと他のアイテムが上に表示されるので、完全に背景として扱うことが出来ます
次にアイコン部分ですが、これはシンプルにアイコン用テクスチャを適用したアイテムを適当な場所に設置すれば完了です、アイコン同士をつなぐ空色の線も同じように作成できます
途中で送信しちゃったので付け足しました
Una_Nancy_Owen
YouTube
【Minecraft】 Gacha system like social game v1.0 - [Skript]
途中で閉じても大丈夫になったり、PickUpがちゃんと機能するようになりました
背景部(石板)のテクスチャに関しては、シュルカーのインベントリ用テクスチャを使用したりすることで、単なるテクスチャとして実装することが出来るため、正直そちらがおすすめです
ふむふむ
また、CITのような形式で特定のテクスチャインベントリを呼び出す方法も、探せば存在するとは思うのですが、残念ながらテクスチャ系統は専門ではないので私では方法が分かりません...
全然大丈夫です!ありがとうございます!
私の場合かなり特殊な手法を用いているので長くなってしまいましたが、とりあえずwynnのあれを参考に実装する場合、背景が最もネックになると思うので、そこに関しては詳しい方に再度伺ったほうが良いかと思います
これ確かparticle扱い始めて1日くらいで作ったやつなので多分すぐできるようになると思いますよ
案外マイクラは便利なもので、カスタムフォントというものを用いることで簡単に実装可能です
この機能を用いることで文字に画像を割り当てることが出来、使わない文字にインベントリの画像を割り当てた上でインベントリのタイトルにその文字を含めるだけで背景を作成できます
使わない文字と言っても適当なアルファベットを消費しろという訳ではなく、Unicodeで未割り当て領域のものに設定すればよいです
https://youtu.be/w0Zraz-o8yE?si=iFQgHfEp2RpitidX
まっしゅ
YouTube
カスタムフォントの創造的な使い方【マイクラリソパ解説】
配布マップを作る全ての方に知ってほしいカスタムフォント(Custom Font)というリソースパック要素の応用的な、創造的な使い方を解説しました。複雑めなものを駆け足で解説したので、何かわからない点があればコメントで教えていただきたいです。
━━━━━━━━━━━━━━━━━━━━
◆ ダウンロードページ
カスタムフォントリソースパック:https://ux.getuploader.com/hamash/download/11
テキストエディタ (VS Code):https://code.visualstudio.com/
NegativeSpaceFont:https://github.com/AmberWat/NegativeSpaceFont
Copyright (c) 2...
そういえばそんなのあった()
思ったより自由度高いのね...
えぇ………レベルが違いすぎる(((
見ての通り特殊な処理は線と円だけなので、ある程度コード書けるようになったらすぐできますよ
ただ話を聞いている限りだと、まずはSkriptの基本的な仕組みから理解していったほうが良いと思われるので、functionを扱うあたりになったら挑戦してもよいかと
はい()まだプラグイン自体初めて1ヶ月経ってない未熟な人です(?)
Skript見てもわかってない状態でいきなりプラグインはなかなかチャレンジングだね
気合いとノリでなんとかする人です(?)
なおさらにここに英語が苦手がのしかかります(笑)
すみません
武器とかの説明にある
手に持ったとき
とか攻撃速度とかのどうやって消せますか?
https://games.tigeroakes.com/minecraft-tools/hideflags/
HideFlagsに63(1.12.2なら)指定で全部消える。
あとできれば質問ごとにスレッド分けてほしいかな。
このスレッドちょっと太り過ぎかも。
初歩的すぎてあれなんですけどどういう風にセットすればいいんですか?()
この助言通りに基礎からやったらどうなの
https://qiita.com/meoto2408/items/a44335d24d4ea3e75b73
on damage:
if name of attacker's tool is "A":
set {_dmg} to 10
chance of 80%:
set {_dmg} to {_dmg} + 10
make {_attacker} damage {_victim} by {_dmg}
エラーは出てないのですがダメージが変動しません...
makeの上に
send "%{_dmg}, {_attacker}, {_victim}%" to attacker
を追加して何が表示されるか見て
その結果から何が起きてるのか、どうすればいいのか考えて
①{_なんとか}自体は数値やエンティティを保管するための箱であり、それ単体では何も意味を持ちません
[ポイント] {_dmg}や{_attacker}というのも名前が違うだけの箱と考えましょう
②半角スペース4マスあるいは(Tab)によって段を分ける行為は「:」によって条件付けしたコードの処理を連続させる効果を持ちます
[ポイント] 今回の処理であると、if name of attacker's tool is "A":の条件を満たしていない場合でもmake {_attacker} damage {_victim} by {_dmg}が発生することになります
③on damage:のイベント内にはdamage、attacker、victimという固有のtypes(playerやevent-item、target blockといった特定のイベント内で指定できる対象)が存在します
[ポイント] damageにこちらで用意した数値をセットすることで、ダメージ処理をこのイベント内で完結させることが出来るかもしれません
[注意点] on damage:イベント内で無条件のmake {_attacker} damage {_victim} by {_dmg}を利用すると無限ループが発生します
以上の3つのポイントを押さえた上で内容を書き換えてみてください
また2名の方からスレッドを分けるように言われてますので、ダメージの変動を行えるようになったらここのスレッドを終了し、別のスレッドを開始しましょう(同じ疑問を持った方が解決策を見つけやすくなります)
ヒントを与えすぎですよ
本人が必要とする以上の情報を与えると無能感や無力感を与えてしまう可能性がある
質問者の読解力も考慮して長文は避けたほうがいい
また「ふむふむ」とか言って話変えますよ
能動的にやらせればeffectがイベントを呼び出す仕様やexpressionの使い方を自分で理解させることができたかもしれないのに...
変数を箱のメタファーで示すなら{_dmg}と{_attacker}も箱のメタファーで示した方がいい
りんご箱とみかん箱は違う果物だけど同じ箱だから同じように何でも入れられるとかね
一応こちらの内容を読んでいればできる範囲だとは思っているのですが...
長文は私の癖ですね...
50分で熟読できるほどスレ主の学習能力は高くないと思うけど🤔
そうですね
年齢も低いし
一応私のメッセージが送信されるまでの間に2時間半はあるので、自分で調べながら返信待ちしてたらそれなりに時間はあるのですが...
ああ確かにそうだね
でも「できる範囲」だと思ってるなら本人がそれについてヒントを求めるまでは示すべきではなかったね
読んでいたとして、すべての内容を把握できているとは思ってないので、問題を解決する上で注目すべき(再度読んでみるべき)ポイントを示す意図で3点を挙げています
まぁさすがに私も情報載せ過ぎかなとは思っていたので、そこはすみません
一応 {_dmg}をdamageにすればできたのですが{_dmg}出ないといけないことなどはないですか?
ダメージにプラスしたり割ったりする場合は{_dmg}を使用して計算を行い、最終的にset damage to {_dmg}でセットしたほうがやりやすいです
あとは最終ダメージのdamageを直接操作よりも{_dmg}で操作した方が処理の面でも軽いと思います
わからないときにどうするかで 最初から"人に聞く" しかない人は才能内からやめたほうがいい
未経験そうなので助言しておくと「最初から大規模なRPGを作ってやるんだ!」はほぼ確実に失敗・挫折する。大事なのは「一旦簡単な作品を作り上げる」こと。スクラップアンドビルドを繰り返すことで、目指していくRPG制作のノウハウも技術もついてくると思います。頑張ってください。
はい...
ごめんなさい
よろしい😉
そこまで大規模な物作るつもりないですけどプラグインはずっと改良してくつもりです。
ちなみにRPGの建築だけならワールドボツ作品が4個くらいあります()
最初はとりあえず動くものを作ろう
そこから改良