查看: 3430|回复: 6

[已经解决] 要如何隨機取變數?

[复制链接]
梦石
0
星屑
50
在线时间
116 小时
注册时间
2012-10-4
回帖
173
发表于 2015-3-1 10:44:37 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
我想製作一個功能
就是用變數A決定其他變數的值
像每個變數不是有編號嗎?
我想首先用變數A在一個範圍內隨機取一個值
然後更改跟那個值同樣編號的變數的數值

例:A取得56的數值,然後就更改編號56變數的值

我在圖書館似乎沒看過這功能,如果有人能教導就太感謝了

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-3-1 10:50:36 | 显示全部楼层
请再仔细看看事件指令中的变量操作功能……

评分

参与人数 1星屑 +1 收起 理由
喵kano + 1 233

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
116 小时
注册时间
2012-10-4
回帖
173
 楼主| 发表于 2015-3-1 14:26:05 | 显示全部楼层
本帖最后由 brackwind 于 2015-3-1 14:49 编辑
喵呜喵5 发表于 2015-3-1 10:50
请再仔细看看事件指令中的变量操作功能……


看過了,不過變數操作功能裡頂多讓變數裡的數值作變化,條件分歧功能頂多讓兩個變數的值做比較,沒辦法做出[根據變數A隨機取得的數值(例如是25,當然下次取得的數值不一樣),讓該數值相同編號的變數(例如是25號的變數)的數值+100]這種功能

正確來說,我想做出這種事件:

插入標籤
變數A=1~100(隨機取數)
偵測變數A的數值對應編號的變數(所以要準備100個變數,變數A不算在內)
IF 該編號的變數數值<100
該編號的變數數值+100
ELSE
跳到標籤
END

類似這種感覺的事件
之後在別張地圖時,該編號變數超過100就會引發某事件,每個編號對應的事件不同

所以如果變數那邊可以處理的話,之後就好辦了
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-3-2 19:18:49 | 显示全部楼层
$game_variables[1]

获取变量1的值

$game_variables[$game_variables[1]]

获取变量$game_variables[1]的值(例如$game_variables[1]为2,则获取变量2的值)

点评

那麼事件要判斷的不就是$game_variables[$game_variables[1]](假設為變量B)嗎?而光靠事件應該無法判斷B是哪個,那麼是不是就要用腳本?  发表于 2015-3-2 22:44
變量1不是取得我那個變量A的隨機值,然後$game_variables[$game_variables[1]]是決定要動哪個編號的變量吧?  发表于 2015-3-2 22:41
有啥必要,你直接在脚本里令变量1等于要判断的量,之后用事件判断变量1不就好了  发表于 2015-3-2 22:24
這樣的話,判別$game_variables數值的分歧是否也要用腳本寫?  发表于 2015-3-2 21:21
意思是在事件指令中的腳本功能裡打這兩句指令嗎?  发表于 2015-3-2 20:59
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-3-3 01:44:56 | 显示全部楼层
本帖最后由 喵呜喵5 于 2015-3-3 01:48 编辑

事件指令 变量操作 脚本$game_variables[$game_variables[1]]
操作哪个变量随你便…………什么什么,你说操作变量1会影响xxx…………那直接换一个不会影响的变量不就结了


然后事件指令,条件分支刚才操作的变量

要给操作的变量加上100就用事件指令中的脚本这么写:

$game_variables[$game_variables[1]] += 100

点评

知道了,謝謝  发表于 2015-3-5 19:38
为了让之后有相同问题的人能够用论坛搜索功能搜索到答案,请再开新帖提问……  发表于 2015-3-5 14:30
可以再問兩個問題嗎?要在文章裡顯示給變量取的名稱,要用什麼語法?還有邊重複播放音效邊顯示文章該怎麼做?謝謝  发表于 2015-3-5 07:04
感謝,我終於明白了  发表于 2015-3-5 07:02
$game_variables[$game_variables[1]]已经取得“A取得56的數值,然後就更改編號56變數的值”这个效果。换句话说A就是1号变量,取得56数值,那么...你懂得。  发表于 2015-3-3 09:34

评分

参与人数 2星屑 +132 梦石 +1 收起 理由
taroxd + 1 认可答案
VIPArcher + 132 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
116 小时
注册时间
2012-10-4
回帖
173
 楼主| 发表于 2015-3-3 20:19:50 | 显示全部楼层
我大概了解了,是這樣製作事件嗎:

設置標籤
變量:[0001]=亂數(2,101) #從100個變數中隨機挑一個
變量:[0001]=$game_variables[$game_variables[1]] #把隨機挑到變量的值帶入變量1
條件分歧:變量[0001]<100
腳本:$game_variables[$game_variables[1]]+= 100 #把隨機挑到變量的值+100
:除此之外的情形
跳到標籤處
分歧結束


這樣嗎?有錯請糾正
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2015-3-3 21:25:06 | 显示全部楼层
制御文字拡張 VX Ace By 貪藻矢射妥
使用例
00004.png
[pre lang="ruby"]#==============================================================================
# ■ 制御文字拡張 VX Ace By 貪藻矢射妥←
#------------------------------------------------------------------------------
#  制御文字を拡張します。
#  
#  ※draw_text_exを拡張しています。
#
#  ※ルビ描画にてルビ、もしくは本文に半角スペースを入れないでください。
#   正しく表示できません。
#
#==============================================================================
#
# VX Ace 標準
# \v[n]         : 変数n番の値を表示
# \n[n]         : アクターn番目の名前を表示
# \p[n]         : パーティーn番目の名前を表示
# \g            : ゴールド表示
# \c[n]         : n番目の色に変更
# \i[n]         : n番目のアイコン表示
# \{            : 描画文字サイズを大きく
# \}            : 描画文字サイズを小さく
# \.            : 1/4 sec wait
# \|            : 1sec wait
# \!            : 入力待ち
# \>            : \< まで瞬間表示
# \<            : \> から瞬間表示
# \^            : 入力待ちなし
# 追加
# \nn[n]        : アクターn番目のニックネームを表示
# \e[n]         : エネミーn番目の名前を表示
# \m[n]         : マップn番目の名前を表示
# \md[n]        : マップn番目の表示名を表示
# \j[n]         : n番目の職業を表示
# \t[n]         : n番目の道具をアイコンつきで表示
# \w[n]         : n番目の武器をアイコンつきで表示
# \a[n]         : n番目の防具をアイコンつきで表示
# \s[n]         : n番目のスキルをアイコンつきで表示
# \r[text,ruby] : rubyをふりがなにtextを描画
# \rfix[text]   : 定型句が割り振られているルビつき文字を描画
#
#==============================================================================
# 更新っぽいもの
# 2012:01:15
# ・XP風アイコン描画 VX Aceに対応
# ・一度に複数回ルビを振ることが出来なかったバグを修正
#
# 2012:03:18
# ・VX Aceのミスだと思っていた convert_escape_characters の
#  $game_variablesが二つあるのを復帰。
#  \v[\v[n]]のために必要なんですね・・・
#
# 2012:10:01
# ・Ver.1.01aからData/MapInfos.rvdata2には表示名が存在しないためスクリプト変更
# ・アクター名などに制御文字が入っていた場合の制御文字にも対応

#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  ゲーム中の全てのウィンドウのスーパークラスです。
#==============================================================================

class Window_Base < Window
  # ルビ定型句セット
  FIX_RUBY = {
    "赤眉"               => "チーメイ",
    "傾奇"               => "かぶき",
    "明殺"               => "みょうさつ",
    "開封"               => "かいほう",
    "綺羅神無"           => "らじんきむ",
    "応龍"               => "おうりゅう",
    "齎"                 => "もたら",
    "麒麟"               => "キリン",
    "霊龜"               => "れいき",
    "素盞嗚尊"           => "スサノオノミコト",
    "燭龍"               => "しょくりゅう",
    "月陽歳刑"           => "つきかげさいぎょう",
    "歳星黄幡"           => "さいせいおうばん",
    "天下太陰"           => "てんげだいおん",
    "元屠歳殺"           => "げんとさいさつ" ,
    "天蓋流剣鞘"         => "てんがいりゅうけんしょう",
    "絳征"               => "こうせい",
    "炎一刀"             => "ほむらいっとう",
    "虹影"               => "にじかげ",
    "誘薙双剣"           => "いざなぎそうけん",
    "天狼碎牙"           => "てんろうさいが",
    "天狼真牙"           => "てんろうしんが",
    "穀蔵院一刀"         => "こくぞういんいっとう",
    "愛染"               => "あいぜん",
    "舞雅"               => "むげ",
    "雅閃"               => "がせん",
    "秘雅閃"             => "ひがせん",
    "極雅閃"             => "きょくがせん",
    "終雅閃"             => "しゅうがせん",
    "黎淵夢"             => "くろきふちのゆめ",
    "夢刃"               => "むじん",
    "示現流瞬槍"         => "じげんりゅうしゅんそう",
    "黎杭打刳撃"         => "パイルドライバー",
    "逆転黎杭打刳撃"     => "リバース・パイルドライバー",
    "回転黎杭打刳撃"     => "スピニング・パイルドライバー",
    "跳躍黎杭打刳撃"     => "ジャンピング・パイルドライバー",
    "旋抉黎杭打刳撃"     => "スクリュー・パイルドライバー",
    "削岩錐穴黎杭打刳撃" => "ドリル・ア・ホール・パイルドライバー",
    "被覆鋼弾"           => "フルメタルジャケット",
    "撤甲弾"             => "アーマーピアシング",
    "炸 裂 弾"         => "エクスプロージョンブリット",
    "黒き猛禽の爪"       => "ブラックタロン",
    "鵺帛主"             => "ヤヌス",
    "王宮一級品"         => "ロイヤルコレクション",
    "零道漓"             =>"プルウィウス",
    " 真 "             => "チェンジ!!",
    "殺形刀"             => "サルヒヨンド",
    " S  D "         => "SEED DESTINY",
    "天国"               => "あまくに",
    "碧聖刃"             => "シアンセイクレド",
    "  S   T  "   => "シャイニング・トラペゾヘドロン",
    "保護陰盾"           => "プロテクトシェード",
    "蘭花"               => "ランファ",
    " A T "           => "アナザータイプ",
    "夢龍"               => "モンリョン",
    "春香"               => "チュンヒャン",
    "文秀"               => "ムンス",
    "元述"               => "ウォンスル",
    "英實"               => "ヨンシル",
    "暗行御史"           => "アメンオサ",
    "山道"               => "サンド",
    "朱羅姫"             => "シュラキ",
    "奠夷瑪"             => "ディーヴァ",
    "女王禍"             => "ジョーカー",
    "茜瑙哭"             => "セドナ",
    "爾幽樟"             => "ニュクス",
    "刺舞鴉"             => "シヴァ",
    "逢喇且雫"           => "アフラ・マズダ",
    "槃導邏"             => "パンドラ",
    "霹瓏婚枢"           => "ペルクナス",
    "炳佩鍍嵩"           => "ヘパイトス",
    "宕瓏牙"             => "ドゥルガー",
    "微朱主"             => "ヴィシュヌ",
    "魔血玉"             => "デモンブラッド",
    "呪符"               => "タリズマン",
    "閣氏"               => "カクシ",
    "歳殺陽天"           => "さいさつようてん",
    "歳刑星天"           => "さいぎょうせいてん",
    "黄幡暗天"           => "おうばんあんてん",
    "太陰邪天"           => "だいおんじゃてん",
    "陰轟留牡鴉"         => "アンゴルモア",
    "緋々色金"           => "ヒヒイロカネ",
    "青生生魂"           => "アボイタカラ",
  }
  #--------------------------------------------------------------------------
  # ● 制御文字の事前変換
  #    実際の描画を始める前に、原則として文字列に変わるものだけを置き換える。
  #    文字「\」はエスケープ文字(\e)に変換。
  #--------------------------------------------------------------------------
  def convert_escape_characters(text)
    result = text.to_s.clone
    # 既存
    result.gsub!(/\\/)            { "\e" }
    result.gsub!(/\e\e/)          { "\\" }
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
    result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
    result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
    result.gsub!(/\eG/i)          { Vocab::currency_unit }
    # 追加
    result.gsub!(/\eNN\[(\d+)\]/i) { actor_nickname($1.to_i) }
    result.gsub!(/\eE\[(\d+)\]/i)  { enemy_name($1.to_i) }
    result.gsub!(/\eM\[(\d+)\]/i)  { map_name($1.to_i) }
    result.gsub!(/\eMD\[(\d+)\]/i) { map_display_name($1.to_i) }
    result.gsub!(/\eJ\[(\d+)\]/i)  { job_name($1.to_i) }
    result
  end
  #--------------------------------------------------------------------------
  # ● アクター n 番の名前を取得
  #--------------------------------------------------------------------------
  def actor_name(n)
    actor = n >= 1 ? $game_actors[n] : nil
    actor ? convert_escape_characters(actor.name) : ""
  end
  #--------------------------------------------------------------------------
  # ● アクター n 番のニックネームを取得
  #--------------------------------------------------------------------------
  def actor_nickname(n)
    actor = n >= 1 ? $game_actors[n] : nil
    actor ? convert_escape_characters(actor.nickname) : ""
  end
  #--------------------------------------------------------------------------
  # ● パーティメンバー n 番の名前を取得
  #--------------------------------------------------------------------------
  def party_member_name(n)
    actor = n >= 1 ? $game_party.members[n - 1] : nil
    actor ? convert_escape_characters(actor.name) : ""
  end
  #--------------------------------------------------------------------------
  # ● エネミー n 番の名前を取得
  #--------------------------------------------------------------------------
  def enemy_name(n)
    enemy = n >= 1 ? $data_enemies[n] : nil
    enemy ? convert_escape_characters(enemy.name) : ""
  end
  #--------------------------------------------------------------------------
  # ● 職業 n 番の名前を取得
  #--------------------------------------------------------------------------
  def job_name(n)
    job = n >= 1 ? $data_classes[n] : nil
    job ? convert_escape_characters(job.name) : ""
  end
  #--------------------------------------------------------------------------
  # ● マップ n 番の名前を取得
  #--------------------------------------------------------------------------
  def map_name(n)
    map = load_data(sprintf("Data/MapInfos.rvdata2"))[n]
    map ? convert_escape_characters(map.name) : ""
  end
  #--------------------------------------------------------------------------
  # ● マップ n 番の表示名を取得
  #--------------------------------------------------------------------------
  def map_display_name(n)
    map = load_data(sprintf("Data/Map%03d.rvdata2", n))
    map ? convert_escape_characters(map.display_name) : ""
  end
  #--------------------------------------------------------------------------
  # ● 制御文字の処理
  #     code : 制御文字の本体部分(「\C[1]」なら「C」)
  #--------------------------------------------------------------------------
  def process_escape_character(code, text, pos)
    case code.upcase
    # 既存
    when 'C'
      change_color(text_color(obtain_escape_param(text)))
    when 'I'
      process_draw_icon(obtain_escape_param(text), pos)
    when '{'
      make_font_bigger
    when '}'
      make_font_smaller
    # 追加
    when 'T'    # 道具
      process_draw_item(obtain_escape_param(text), pos)
    when 'W'    # 武器
      process_draw_weapon(obtain_escape_param(text), pos)
    when 'A'    # 防具
      process_draw_armor(obtain_escape_param(text), pos)
    when 'S'    # スキル
      process_draw_skill(obtain_escape_param(text), pos)
    when 'R'    # ルビ
      process_draw_ruby(obtain_escape_param2(text), pos)
    when "RFIX" # 定型句ルビ
      process_draw_ruby_fix(obtain_escape_param2(text), pos)
    end
  end
  #--------------------------------------------------------------------------
  # ● 制御文字の引数を破壊的に取得 文字列編
  #--------------------------------------------------------------------------
  def obtain_escape_param2(text)
    text.slice!(/^\[(.+?)\]/)[/\S+/] rescue 0
  end
  #--------------------------------------------------------------------------
  # ● 制御文字によるルビ描画の処理
  #--------------------------------------------------------------------------
  def process_draw_ruby(str, pos)
    str.gsub!(/\[(.+?),(.+?)\]/, "")
    text = $1
    ruby = $2
    process_draw_ruby_root(text, ruby, pos)
  end
  #--------------------------------------------------------------------------
  # ● 制御文字によるルビ定型句描画の処理
  #--------------------------------------------------------------------------
  def process_draw_ruby_fix(str, pos)
    str.gsub!(/\[(.+?)\]/, "")
    text = $1
    ruby = FIX_RUBY[$1]
    process_draw_ruby_root(text, ruby, pos)
  end
  #--------------------------------------------------------------------------
  # ● 制御文字によるルビ描画の処理 おおもと
  #--------------------------------------------------------------------------
  def process_draw_ruby_root(text, ruby, pos)
    text_w = text_size(text).width
    text_h = text_size(text).height
    f_size_back = contents.font.size
    ruby_size = [(f_size_back + 66) / 8, f_size_back * 2 / 3].min
    contents.font.size = ruby_size
    draw_text(pos[:x], pos[:y] + 8 - ruby_size, text_w,     ruby_size, ruby, 1)
    contents.font.size = f_size_back
    draw_text(pos[:x], pos[:y] + 6,             text_w + 4, text_h,    text)
    pos[:x] += text_w
  end
  #--------------------------------------------------------------------------
  # ● 制御文字によるアイテム描画の処理
  #--------------------------------------------------------------------------
  def process_draw_item(id, pos)
    item = id.to_i >= 1 ? $data_items[id.to_i] : nil
    process_draw_data(item, pos)
  end
  #--------------------------------------------------------------------------
  # ● 制御文字による武器描画の処理
  #--------------------------------------------------------------------------
  def process_draw_weapon(id, pos)
    weapon = id.to_i >= 1 ? $data_weapons[id.to_i] : nil
    process_draw_data(weapon, pos)
  end
  #--------------------------------------------------------------------------
  # ● 制御文字による防具描画の処理
  #--------------------------------------------------------------------------
  def process_draw_armor(id, pos)
    armor = id.to_i >= 1 ? $data_armors[id.to_i] : nil
    process_draw_data(armor, pos)
  end
  #--------------------------------------------------------------------------
  # ● 制御文字によるスキル描画の処理
  #--------------------------------------------------------------------------
  def process_draw_skill(id, pos)
    skill = id.to_i >= 1 ? $data_skills[id.to_i] : nil
    process_draw_data(skill, pos)
  end
  #--------------------------------------------------------------------------
  # ● 制御文字によるアイテム、武器、防具、スキル描画の処理 おおもと
  #--------------------------------------------------------------------------
  def process_draw_data(data, pos)
    if data != nil
      data_name = data.name
      data_icon = data.icon_index
      
      if $OuterFlgs["Icon_Extend"]
        text = data.note.clone
        @icon_name = text =~ /ICON#{DIA_IC::STT}(\S+)#{DIA_IC::FIN}/ ? $1 : nil
        if  @icon_name != nil
          draw_icon_XP(@icon_name, pos[:x], pos[:y])
        else
          draw_icon(data_icon, pos[:x], pos[:y])
        end
      else
        draw_icon(data_icon, pos[:x], pos[:y])
      end
      pos[:x] += 24
      text_width = text_size(data_name).width
      #draw_text(pos[:x], pos[:y], text_width, pos[:height], data_name)
      draw_text_ex(pos[:x], pos[:y], data_name)
      pos[:x] += text_width
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 名前の描画
  #--------------------------------------------------------------------------
  def draw_actor_name(actor, x, y, width = 112)
    change_color(hp_color(actor))
    draw_text_ex(x, y, actor.name)
  end
  #--------------------------------------------------------------------------
  # ● 職業の描画
  #--------------------------------------------------------------------------
  def draw_actor_class(actor, x, y, width = 112)
    change_color(normal_color)
    draw_text_ex(x, y, actor.class.name)
  end
  #--------------------------------------------------------------------------
  # ● 二つ名の描画
  #--------------------------------------------------------------------------
  def draw_actor_nickname(actor, x, y, width = 180)
    change_color(normal_color)
    draw_text_ex(x, y, actor.nickname)
  end
end[/pre]

点评

呃......所以說這個腳本是有用到我想要的功能囉?看得有點眼花  发表于 2015-3-3 23:28

评分

参与人数 1星屑 -10 收起 理由
VIPArcher -10 别当我看不懂脚本。

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部