スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【VXメダル】表示順ID指定

※このスクリプトは、ひきも記様で配布されているメダルの拡張スクリプトです。

メダル一覧では、メダルを入手した順番で表示されていましたが、これをメダルのID順で表示するようにします。
メダル表示順ID指定
メダルのスクリプトより下に挿入してください。

使用法
デフォルトではメダル獲得のスクリプトは
medal("新参者のメダル","サンプルテストを開始した", 0)でしたが、
medal("新参者のメダル","サンプルテストを開始した", 0, 1)
という風に最後に数値を付け加えてください。
この数値がメダルのIDとなり、メダル画面ではこの順番で表示されます。
IDには整数だけでなく小数も指定できます。
スポンサーサイト

【カード2】負けるとカードを取られる

※このスクリプトは、ひきも記様で配布されているシンプルカードゲーム2の拡張スクリプトです。

カードゲームで負けると、使用したデッキの中から1枚カードを奪われるようにできます。
負けるとカードを取られる シンプルカードゲーム2

使用法
スクリプトを導入したら、コモンイベントを作ってください。中身は

・スクリプト
n = rand(3)
item_id = $game_party.deck($use_deck)[n]
p "勝負したデッキの番号",$use_deck + 1,
  "デッキのカードのID",$game_party.deck($use_deck),
  "取られたカードのデッキ中での順番",n + 1,
  "取られたカードのアイテムID",item_id,
  "取られたカードの名前",$data_items[item_id].name
$game_variables[100]=$data_items[item_id].name
$game_party.lose_card($use_deck, n)
・文章の表示
「\V[100]」を奪われた・・・
・変数の操作
[0100] = 0

この3つです。このコモンイベントを負けた場合の分岐に突っ込んでやればOKです。
スクリプトコマンドのp "勝負したデッキの番号"からの5行は動作確認用の表示なので、いらなくなったら消してください。




↓解説
# ● アクティブデッキを設定する
def set_active_deck(index)
@active_deck = index
$use_deck = index
end
元からあったメソッドですが再定義で$use_deck = indexを追加しました。
これにより、ゲームに使ったデッキの番号を取得します。
# ● 装備カードの消去
def lose_card(index, equip_type)
@deck[index][equip_type] = 0
end
デッキ編集の時に使うchange_card(index, equip_type, item)を利用しました。カードスロットの指定した装備部位を「装備無し」にする機能しかありません。そこに装備していたアイテムは消えます。

・スクリプト
n = rand(3)
item_id = $game_party.deck($use_deck)[n]
p "勝負したデッキの番号",$use_deck + 1
p "デッキのカードのID",$game_party.deck($use_deck)
p "取られたカードのデッキ中での順番",n + 1
p "取られたカードのアイテムID",item_id
p "取られたカードの名前",$data_items[item_id].name
$game_variables[100]=$data_items[item_id].name
$game_party.lose_card($use_deck, n)
pはテスト用の表示です。
n = rand(3) nに0~2の数をランダムで代入します。3つのカードスロットのどれかを選ぶためです。
$game_variables[100]=$data_items[item_id].name 変数100番に、取られたカードのアイテム名(文字列)を代入します。
$game_party.lose_card($use_deck, n) $use_deck(使ったデッキ)のn(ランダムなカードスロット)を装備無しにします。そこにあったカードは消滅します。

・文章の表示 「\V[100]」を奪われた・・・
さっき変数に格納したカード名を表示します。

・変数の操作 変数ID100 = 0
デフォルトのデバッグ画面(F9キーで出てくるやつ)では、変数に文字列が入っているとエラーになります。それを防止するために数字を代入しておきます。

【SRPG2】移動不可スキル敵対応

※このスクリプトは、ひきも記様で配布されているSRPG2の拡張スクリプトです。

移動済みのユニットは移動不可スキルを使用できないはずなのですが、なぜか敵ユニットは使ってきます。
これを解決するスクリプトです。拡張というより不具合修正ですが、ひきも記はサイト更新を停止中なのでここに。

移動不可スキル敵対応
※「敵ユニット行動順指定・ランダム化」スクリプトより上に入れてください。

注意:敵の行動決定は、行動テーブル内の「行動優先度の最高値」から2つ下までのもの から選ばれます。
つまり最高の行動優先度が10なら10,9,8の行動しか選ばれません。
しかしこのスクリプトだと、移動済みだった場合はそもそも移動不可スキルをテーブルに入れないので、
移動不可スキルの行動優先度が最高だと、移動済みかそうでないかで行動決定に影響が出てきます。
移動不可スキルの行動優先度だけが最高になる事態はやめましょう。どうなるか分かりません。
例:条件「HP20%以下の時だけ」 移動不可スキル優先度10

通常攻撃 5
移動不可スキル 5
のように移動不可スキルが抜けても影響がないようになっていれば問題ありません。

【SRPG2】武器攻撃力除外スキル・アイテム SRPG2対応

※このスクリプトは、ひきも記様で配布されているSRPG2の拡張スクリプトです。
武器攻撃力除外スキル・アイテムのSRPG2対応バージョンです。SRPGやSRPG3Dにもたぶん対応しています。

装備している武器の攻撃力を無視するスキル、アイテムを作ります。
エクスカリバー装備しても石投げの威力は上がらないだろう、ってことです。
需要は分かりませんが・・・

武器攻撃力除外スキル・アイテム SRPG2
使用法:スキル、アイテムのメモ欄に <武器不使用> と入れてください。

【小ネタ】防御力と精神力

スキル、アイテムの防御力と精神力によるダメージ軽減は、物理関係度と精神関係度を利用しています。
物理関係度が100なら通常通り「防御力×2」の軽減ですが、物理関係度が10なら「防御力×2÷10」20%の軽減です。
デフォルトデータのファイアのように精神関係度が30なら「精神力×1×30/100」つまり精神力の30%です。
少ないです。これでは精神力を上げてもなかなか魔法ダメージは減りません。100上げてもたったの30ダメージです。
まあそれはそういうバランスでいいように作るなら問題ないんですが、個人的に違和感を覚えたので。

Game_Battlerの657行目から。
  def make_obj_damage_value(user, obj)
    damage = obj.base_damage # 基本ダメージを取得
    if damage > 0 # ダメージが正の数
      damage += user.atk * 4 * obj.atk_f / 100 #打撃関係度: 使用者
      damage += user.spi * 2 * obj.spi_f / 100 # 精神関係度: 使用者
      unless obj.ignore_defense # 防御力無視以外視以外
        damage -= self.def * 2 * obj.atk_f / 100 # 打撃関係度: 対象者
        damage -= self.spi * 1 * obj.spi_f / 100 # 精神関係度: 対象者
      end

damage -= self.def * 2 * obj.atk_f / 100が問題です。
受け側の防御力 × 2 × スキルの物理関係度÷100 をダメージから減らすことになっています。
というわけで、これとこの下の行を頭に#をつけてコメントアウトして、別の式を入れてやりましょう。
        damage -= self.def * 2 if obj.physical_attack
        damage -= self.spi * 1 unless obj.physical_attack
さっきの2行の代わりです。
physical_attackというのは物理攻撃。つまり
物理攻撃ならば、防御力の2倍を引く 物理攻撃でない(精神攻撃)ならば、精神力の1倍を引く
となります。これでそれっぽくなりました。

self.spi * 2にしてやれば精神力の2倍を引くようになって、さらに魔法ダメージを減らせるようになります。精神力のありがたみが増します。

【小ネタ】アイテムドロップ率

手に入ったら超ラッキーみたいな感じで1/400とか1/1000とかのドロップアイテムを作りたいと・・・思った人がいるかどうかは分かりませんが。

Game_Troopの235行目から251行目、
  def make_drop_items
    drop_items = []
    for enemy in dead_members
      for di in [enemy.drop_item1, enemy.drop_item2]
        ########
        next if di.kind == 0
        next if rand(di.denominator) != 0
        if di.kind == 1
          drop_items.push($data_items[di.item_id])
        elsif di.kind == 2
          drop_items.push($data_weapons[di.weapon_id])
        elsif di.kind == 3
          drop_items.push($data_armors[di.armor_id])
        end
      end
    end
    return drop_items
  end

この########の部分を
di.denominator = 400 if di.denominator == 199
とすると、ドロップ率1/199と設定したものは1/400として扱われることになります。199分の1なんて普通使わないし別にいいよね

denominatorはドロップ率、drop_items.pushというのがドロップアイテム入手です。
next if rand(di.denominator) != 0
rand(そのアイテムのドロップ率)が0でなければnext次の処理に移る。
ドロップ率が1/100ならrand(100)つまり0~99のランダムな数値が0と同値になればnextは起こらずドロップ成功です。

di.kindはアイテムの種類。1が道具、2が武器、3が防具です。

drop_items.push($data_weapons[di.weapon_id])
ドロップアイテムの配列.加える(データベース:武器[ID])
つまりそのIDの武器が入手ドロップアイテムのリストに加わります。
ここでリストに加わったアイテムが、この後の処理で「~を手に入れた!」と表示され、持ち物に入ります。

【小ネタ】エンカウント歩数算出

デフォルトではエンカウント歩数は
1~(マップで設定した歩数の2倍-1)
になってます。つまり0%~200%です。振れ幅がやたら大きいですね。

Game_Playerの195行目から200行目、
  def make_encounter_count
    if $game_map.map_id != 0
      n = $game_map.encounter_step
      @encounter_count = rand(n) + rand(n) + 1 # サイコロを 2 個振るイメージ
    end
  end

これを
  def make_encounter_count
    if $game_map.map_id != 0
      n = $game_map.encounter_step
      @encounter_count = n - n / 5 + rand(n * 2 / 5)
    end
    end
これで80%~120%になります。

$game_map.encounter_stepというのがマップで設定した歩数です。これをnに代入して計算に使っています。
@encounter_countが結果のエンカウント歩数。
歩数を30にしたと仮定して計算してみます。
rand()というのは0から「()内の数値-1」までの数をランダムで出します。

rand(n) + rand(n) + 1は
(0~29)+(0~29)+1ということです。1~59です。

で、さっきのn - n / 5 + rand(n * 2 / 5)は
30 - 30/5 + rand(30*2/5)
30 - 6 + rand(12)
24 + (0~11)
24~35です。80%~120%の値になります。

50%~150%にしたければ、
@encounter_count = n / 2 + rand(n)
15 + (1~30)
こんな感じです。

【RGSS2】属性修正値改造

属性修正値の計算を改造します。
いろいろややこしくなってますがまあそれっぽくなってるつもりです。
(それっぽくても需要があるかどうかは別問題・・・)
詳しくはスクリプト内のコメントを見てください。

属性修正値改造

2倍が2つで300%、半減が2つで25%、吸収が入っていれば2倍がいくつあろうと100%が最高値、無効や半減がいくら重なっても吸収にはならない、150%と半減なら75%、2倍2倍半減なら150%、2倍と無効なら50%
例としてはこんな感じです。中身はだいぶ面倒なことになってます。

【RGSS2】ゲームオーバー後指定位置に移動

サンプルプロジェクト
ゲームオーバーになった後、文章を表示させたりダンジョンの入り口に戻されたりといった演出が可能になります。
文章には制御文字の使用も可能です。
ボス戦の負けた場合の分岐などに。
ゲームオーバー画面の表示&音楽が流れる の後に文章が表示され、その後場所移動という風になります。
詳しくはサンプルプロジェクトを見てください。

あまり使い勝手のよくないものに仕上がった気がする。
 

【RGSS2】マップ移動してもエンカウント歩数を引継ぐ1.01

デフォルトのスクリプトでは、マップを移動するたびに新しくエンカウントまでの歩数が更新されましたが、
マップを移動してもそれまでの歩数が引き継がれるようになります。

これで小さいマップを移動しまくるような場所でもちゃんと戦闘が起こるようになります。
また、場所移動した瞬間に戦闘開始ということにはならないようにしてあります。

感覚としては、
デフォルト:マップ移動時に「エンカウントまでの歩数」を算出、「エンカウント用歩数(それまで歩いた歩数)」を0に戻す
この素材:マップ移動時に「エンカウントまでの歩数」を算出、「エンカウント用歩数(それまで歩いた歩数)」はそのまま引き継ぐ
エンカウント用歩数=エンカウントまでの歩数 になればエンカウント
という感じです。

「エンカウント用歩数」を初期化するには、イベントコマンドのスクリプトで
$encount_new_flag = true
と入れてください。ダンジョンの入り口など。これを忘れるとダンジョンに入って一歩歩いただけで戦闘になったりします。

ver1.01更新 不具合修正テスト
マップ移動してもエンカウント歩数を引継ぐ1.01
 
about
管理人:トリス

RPGツクールVX、VXAceのスクリプト素材を作ってます。
VXAceはATBやテストプレー高速化、VXはひきも記様のSRPG2拡張、アクション拡張 などがあります。

簡易利用規約
素材を使用した作品に著作権表記(このブログの名前)をお願いします。

作品公開時の利用報告は任意です。

サポート,リンク,共同制作などその他の詳しい規約はこちら
カテゴリ
リンク
ゲーム紹介
協力したゲームとか素材利用してくれたゲームとか

アスガル騎士団
アルカナリッター
 (VX)SRPG
 作品ページ  DLページ

チキチキボーンの骨
TimeLeaper -タイムリーパー-
 (VXAce)ATB
 作品ページ  DLページ
明日へのデュナミス
 (VXAce)ATB_XP
 作品ページ  DLページ


レンガの創作小屋
Dimension Warriors 間章
 (VXAce)
 作品ページ

なかぱー更新記
CRYSTALDestiny
 (VXAce)ATBサイドビュー
 DLページ
リンク用バナー

リンクフリーです。相互リンクは受け付けていません。
画像への直リンクは禁止です。
アクセスカウンター
リクエスト・質問掲示板
最新記事
月別アーカイブ
最新コメント
RSSリンクの表示
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。