Project1

标题: 關於腳本"帶入變量"的寫法? [打印本页]

作者: sakazaki    时间: 2013-3-10 19:17
标题: 關於腳本"帶入變量"的寫法?
本帖最后由 sakazaki 于 2013-3-11 14:41 编辑

關於腳本"帶入變量"的寫法?

我想在這個角本做改變,可以經由事件改變
"變量:0001"來改動作戰背景圖的顯示方式(紅色的N),
請問那個N我應該用何字串才對??

我試過:BB_TYPE = {$game_variables[0001]}
但是不行,跳錯誤。請各位前輩幫解!!

RUBY 代码复制
  1. module BattleBack
  2. #   选择战斗背景
  3. #   0:当前地图的战斗背景,为战斗背景(默认VX的样式)
  4. #   1:目前使用的地图作为战斗背景
  5. #   2:使用自己的图片,为战斗背景
  6. BB_TYPE = N  # 在这里输入上面提到的编号
  7.  
  8. # 显示战斗地面
  9. BT_FLOOR = false
  10.  
  11. # 使用的图片(如果你选择的编号为2)
  12. M_B_BACK = {
  13.    # 地图编号 => "(Graphics/System/图片名)"
  14.   1 => "戰鬥圖-英文符號",
  15.   2 => "戰鬥圖-英文符號",
  16. }
  17. end

作者: Password    时间: 2013-3-10 19:34
代入变量的语句:
$game_variables[变量ID] = 常数(整数)
作者: sakazaki    时间: 2013-3-10 19:51
Password 发表于 2013-3-10 19:34
代入变量的语句:
$game_variables[变量ID] = 常数(整数)

BB_TYPE = $game_variables[1] = 1

還是不行捏Q_Q
作者: Password    时间: 2013-3-10 19:57
sakazaki 发表于 2013-3-10 19:51
BB_TYPE = $game_variables[1] = 1

還是不行捏Q_Q


不要“BB_TYPE = ”,直接写我说的那句话……(虽然我不知道这个前缀是什么意思……)
作者: sakazaki    时间: 2013-3-10 20:02
Password 发表于 2013-3-10 19:57
不要“BB_TYPE = ”,直接写我说的那句话……(虽然我不知道这个前缀是什么意思……) ...

喔!!我想您誤會我的意思了

我要的是
BB_TYPE = [***********]

***這邊要加入變量1該怎麼寫??
作者: Password    时间: 2013-3-10 20:05
sakazaki 发表于 2013-3-10 20:02
喔!!我想您誤會我的意思了

我要的是

直接写“$game_variables[变量ID]”试试?(变量ID即你所希望的变量的编号)
作者: sakazaki    时间: 2013-3-10 20:19
本帖最后由 sakazaki 于 2013-3-10 20:34 编辑

還是會跑錯Q_Q

我想我重新說一下需求好了


#   选择战斗背景
#   0:当前地图的战斗背景,为战斗背景(默认VX的样式)
#   1:目前使用的地图作为战斗背景
#   2:使用自己的图片,为战斗背景
$game_variables[1] = 1
BB_TYPE = $game_variables[1]   # 在这里输入上面提到的编号

# 显示战斗地面
BT_FLOOR = false

# 使用的图片(如果你选择的编号为2)
M_B_BACK = {
   # 地图编号 => "(Graphics/System/图片名)"
  1 => "戰鬥圖-英文符號",
  2 => "戰鬥圖-英文符號",
}
end

作者: 黄亦天    时间: 2013-3-10 20:31
啊 这个没法变的 模块里面的变量的话 貌似从一开始就定下了
如果给出全脚本的话 倒是可以在事件里面修改
不过这段应该貌似可以改改试试?

这段在脚本编辑器里不能用系统变量的 因为系统变量默认是nil  不是0、1、2这三种里面的 所以会报错
另外也可能是这段脚本是在变量设定之前运行的 还没有成为数组就运行了这段 也会导致报错

并且即使在事件里修改了系统变量 也没法传达到这个模块的变量里 因为更改变量后只刷新了地图

如果要调用模块内的变量的话
  1. BattleBack::BB_TYPE = 数值
复制代码
事件脚本里写上这段试试看
不过不一定能行

作者: sakazaki    时间: 2013-3-10 20:40
黄亦天 发表于 2013-3-10 20:31
啊 这个没法变的 模块里面的变量的话 貌似从一开始就定下了
如果给出全脚本的话 倒是可以在事件里面修改
不 ...

還是不行Q_Q

我貼上全部腳本,看看哪位前輩能幫解!!

RUBY 代码复制
  1. #==============================================================================
  2. # ■ VX-RGSS2 改变战斗背景 [版本.1.0.0]     by Claimh
  3. #------------------------------------------------------------------------------
  4. # 英语翻译 By: Elemental Crisis [[url]http://www.rpgcrisis.net[/url]]
  5. # 中文翻译 By: zero2 [[url]http://www.66rpg.com[/url]]
  6. #------------------------------------------------------------------------------
  7. # 改变战斗的背景图.
  8. #==============================================================================
  9.  
  10.  
  11. module BattleBack
  12. #   选择战斗背景
  13. #   0:当前地图的战斗背景,为战斗背景(默认VX的样式)
  14. #   1:目前使用的地图作为战斗背景
  15. #   2:使用自己的图片,为战斗背景
  16. BB_TYPE = 1 # 在这里输入上面提到的编号
  17.  
  18. # 显示战斗地面
  19. BT_FLOOR = false
  20.  
  21. # 使用的图片(如果你选择的编号为2)
  22. M_B_BACK = {
  23.    # 地图编号 => "(Graphics/System/图片名)"
  24.   1 => "戰鬥圖-英文符號",
  25.   2 => "戰鬥圖-英文符號",
  26. }
  27. end
  28.  
  29.  
  30. #==============================================================================
  31. # ■ Spriteset_Battle
  32. #==============================================================================
  33. class Spriteset_Battle
  34. #--------------------------------------------------------------------------
  35. # ● Creating Battle Back Sprite
  36. #--------------------------------------------------------------------------
  37. def create_battleback
  38.   case BattleBack::BB_TYPE
  39.   when 0
  40.     source = $game_temp.background_bitmap
  41.     bitmap = Bitmap.new(640, 480)
  42.     bitmap.stretch_blt(bitmap.rect, source, source.rect)
  43.     bitmap.radial_blur(90, 12)
  44.     @battleback_sprite = Sprite.new(@viewport1)
  45.     @battleback_sprite.bitmap = bitmap
  46.     @battleback_sprite.ox = 320
  47.     @battleback_sprite.oy = 240
  48.     @battleback_sprite.x = 272
  49.     @battleback_sprite.y = 176
  50.     @battleback_sprite.wave_amp = 8
  51.     @battleback_sprite.wave_length = 240
  52.     @battleback_sprite.wave_speed = 120
  53.   when 1
  54.     source = $game_temp.background_bitmap
  55.     bitmap = Bitmap.new(640, 480)
  56.     bitmap.stretch_blt(bitmap.rect, source, source.rect)
  57.     @battleback_sprite = Sprite.new(@viewport1)
  58.     @battleback_sprite.bitmap = bitmap
  59.     @battleback_sprite.ox = 320
  60.     @battleback_sprite.oy = 240
  61.     @battleback_sprite.x = 272
  62.     @battleback_sprite.y = 176
  63.   when 2
  64.     @battleback_sprite = BattleBackSprite.new(@viewport1)
  65.   end
  66. end
  67. #--------------------------------------------------------------------------
  68. # ● Creating Battle Floor Sprite
  69. #--------------------------------------------------------------------------
  70.  
  71. def create_battlefloor
  72.   create_battlefloor_mbb if BattleBack::BT_FLOOR
  73. end
  74. #--------------------------------------------------------------------------
  75. # ● Delete Battle Floor Sprite
  76. #--------------------------------------------------------------------------
  77.  
  78. def dispose_battlefloor
  79.   dispose_battlefloor_mbb if BattleBack::BT_FLOOR
  80. end
  81. #--------------------------------------------------------------------------
  82. # ● Update Battle Floor Sprite
  83. #--------------------------------------------------------------------------
  84.  
  85. def update_battlefloor
  86.   update_battlefloor_mbb if BattleBack::BT_FLOOR
  87. end
  88. end
  89.  
  90.  
  91. #==============================================================================
  92. # ■ BattleBackSprite
  93. #==============================================================================
  94. class BattleBackSprite < Sprite
  95. # Background Screen Size
  96. WIDTH  = 544.00
  97. HEIGHT = 288.00
  98. #--------------------------------------------------------------------------
  99. # ● Object Initialization
  100. #     viewport : viewport
  101. #--------------------------------------------------------------------------
  102. def initialize(viewport = nil)
  103.   super(viewport)
  104.   self.bitmap = Cache.system(BattleBack::M_B_BACK[$game_map.map_id])
  105.   # Zoom is carried out according to picture size.
  106.   @x_zoom = WIDTH / self.bitmap.width
  107.   @y_zoom = HEIGHT / self.bitmap.height
  108.   [url=home.php?mod=space&uid=98379]@zoom[/url] = @x_zoom > @y_zoom ? @x_zoom : @y_zoom
  109.   # Zoom is carried out.
  110.   self.zoom_x = @zoom
  111.   self.zoom_y = @zoom
  112.   # Made into central display.
  113.   self.ox = self.bitmap.width / 2
  114.   self.oy = self.bitmap.height / 2
  115.   self.x = (self.bitmap.width / 2)  * @zoom
  116.   self.y = (self.bitmap.height / 2) * @zoom
  117. end
  118. end

作者: 黄亦天    时间: 2013-3-10 20:52
本帖最后由 黄亦天 于 2013-3-10 20:54 编辑
  1. #==============================================================================
  2. # ■ VX-RGSS2 改变战斗背景 [版本.1.0.0]     by Claimh
  3. #------------------------------------------------------------------------------
  4. # 英语翻译 By: Elemental Crisis [[url]http://www.rpgcrisis.net[/url]]
  5. # 中文翻译 By: zero2 [[url]http://www.66rpg.com[/url]]
  6. #------------------------------------------------------------------------------
  7. # 改变战斗的背景图.
  8. #==============================================================================


  9. module BattleBack
  10. #   选择战斗背景
  11. #   0:当前地图的战斗背景,为战斗背景(默认VX的样式)
  12. #   1:目前使用的地图作为战斗背景
  13. #   2:使用自己的图片,为战斗背景
  14. BB_TYPE = 1 # 在这里输入上面提到的编号
  15. BB_TYPE_ID = 0001 # 在这里输入所需变量的ID

  16. # 显示战斗地面
  17. BT_FLOOR = false

  18. # 使用的图片(如果你选择的编号为2)
  19. M_B_BACK = {
  20.    # 地图编号 => "(Graphics/System/图片名)"
  21.   1 => "戰鬥圖-英文符號",
  22.   2 => "戰鬥圖-英文符號",
  23. }
  24. end


  25. #==============================================================================
  26. # ■ Spriteset_Battle
  27. #==============================================================================
  28. class Spriteset_Battle
  29. #--------------------------------------------------------------------------
  30. # ● Creating Battle Back Sprite
  31. #--------------------------------------------------------------------------
  32. def create_battleback
  33.   if $game_variables[BattleBack::BB_TYPE_ID] == nil
  34.     $game_variables[BattleBack::BB_TYPE_ID] = BattleBack::BB_TYPE
  35.   end
  36.   case $game_variables[BattleBack::BB_TYPE_ID]
  37.   when 0
  38.     source = $game_temp.background_bitmap
  39.     bitmap = Bitmap.new(640, 480)
  40.     bitmap.stretch_blt(bitmap.rect, source, source.rect)
  41.     bitmap.radial_blur(90, 12)
  42.     @battleback_sprite = Sprite.new(@viewport1)
  43.     @battleback_sprite.bitmap = bitmap
  44.     @battleback_sprite.ox = 320
  45.     @battleback_sprite.oy = 240
  46.     @battleback_sprite.x = 272
  47.     @battleback_sprite.y = 176
  48.     @battleback_sprite.wave_amp = 8
  49.     @battleback_sprite.wave_length = 240
  50.     @battleback_sprite.wave_speed = 120
  51.   when 1
  52.     source = $game_temp.background_bitmap
  53.     bitmap = Bitmap.new(640, 480)
  54.     bitmap.stretch_blt(bitmap.rect, source, source.rect)
  55.     @battleback_sprite = Sprite.new(@viewport1)
  56.     @battleback_sprite.bitmap = bitmap
  57.     @battleback_sprite.ox = 320
  58.     @battleback_sprite.oy = 240
  59.     @battleback_sprite.x = 272
  60.     @battleback_sprite.y = 176
  61.   when 2
  62.     @battleback_sprite = BattleBackSprite.new(@viewport1)
  63.   end
  64. end
  65. #--------------------------------------------------------------------------
  66. # ● Creating Battle Floor Sprite
  67. #--------------------------------------------------------------------------

  68. def create_battlefloor
  69.   create_battlefloor_mbb if BattleBack::BT_FLOOR
  70. end
  71. #--------------------------------------------------------------------------
  72. # ● Delete Battle Floor Sprite
  73. #--------------------------------------------------------------------------

  74. def dispose_battlefloor
  75.   dispose_battlefloor_mbb if BattleBack::BT_FLOOR
  76. end
  77. #--------------------------------------------------------------------------
  78. # ● Update Battle Floor Sprite
  79. #--------------------------------------------------------------------------

  80. def update_battlefloor
  81.   update_battlefloor_mbb if BattleBack::BT_FLOOR
  82. end
  83. end


  84. #==============================================================================
  85. # ■ BattleBackSprite
  86. #==============================================================================
  87. class BattleBackSprite < Sprite
  88. # Background Screen Size
  89. WIDTH  = 544.00
  90. HEIGHT = 288.00
  91. #--------------------------------------------------------------------------
  92. # ● Object Initialization
  93. #     viewport : viewport
  94. #--------------------------------------------------------------------------
  95. def initialize(viewport = nil)
  96.   super(viewport)
  97.   self.bitmap = Cache.system(BattleBack::M_B_BACK[$game_map.map_id])
  98.   # Zoom is carried out according to picture size.
  99.   @x_zoom = WIDTH / self.bitmap.width
  100.   @y_zoom = HEIGHT / self.bitmap.height
  101.   [url=home.php?mod=space&uid=98379]@zoom[/url] = @x_zoom > @y_zoom ? @x_zoom : @y_zoom
  102.   # Zoom is carried out.
  103.   self.zoom_x = @zoom
  104.   self.zoom_y = @zoom
  105.   # Made into central display.
  106.   self.ox = self.bitmap.width / 2
  107.   self.oy = self.bitmap.height / 2
  108.   self.x = (self.bitmap.width / 2)  * @zoom
  109.   self.y = (self.bitmap.height / 2) * @zoom
  110. end
  111. end

复制代码
不知道可不可行

BB_TYPE 这个是默认的模式
BB_TYPE_ID 这个 填上你所需要的变量ID
然后你再修改这个系统变量在0~2试试
嘛 不一定好使 再不好使的话就需要工程了   
作者: sakazaki    时间: 2013-3-10 22:17
黄亦天 发表于 2013-3-10 20:52
不知道可不可行

BB_TYPE 这个是默认的模式



看不懂錯在哪Q_Q
作者: Sion    时间: 2013-3-10 23:12
本帖最后由 Sion 于 2013-3-10 23:18 编辑

把常量换成变量,这是一个例子:
  1. module Test
  2.   @fuck_number = 1
  3.   def self.get_number # 获取@fuck_number
  4.     @fuck_number
  5.   end
  6.   def self.number=(arg) # 修改@fuck_number
  7.     @fuck_number = arg
  8.   end
  9. end

  10. p Test.get_number #=> 1
  11. Test.number = 5
  12. p Test.get_number #=> 5
复制代码

作者: sakazaki    时间: 2013-3-10 23:20
Sion 发表于 2013-3-10 23:12
把常量换成变量,这是一个例子:

可否請問,這該如何套用到那個戰鬥背景腳本?
作者: sakazaki    时间: 2013-3-10 23:55
sakazaki 发表于 2013-3-10 23:20
可否請問,這該如何套用到那個戰鬥背景腳本?

會跳錯誤Q_Q

@fuck_number = 1 # 在这里输入上面提到的编号
module Test
  @fuck_number = 1
  def self.get_number # 获取@fuck_number
    @fuck_number
  end
  def self.number= $game_variables[16]  # 修改@fuck_number
    @fuck_number = $game_variables[16]
  end
end

p Test.get_number #=> 1
Test.number = 5
p Test.get_number #=> 5

作者: 黄亦天    时间: 2013-3-11 06:21
sakazaki 发表于 2013-3-10 22:17
看不懂錯在哪Q_Q

嘛 如果能发工程作为参考的话就比较好办了

作者: 0newing    时间: 2013-3-11 07:49
本帖最后由 0newing 于 2013-3-11 13:02 编辑

我也来说两句吧,你把第37行的case BB_TYPE改成case $game_variables[BattleBack::BB_TYPE]
这样的话原先你想改的那个数字就是第X号变量的数字(具体几号变量在第16行进行定义)表示之前也遇到过相同问题。。。
你最好再检查下我单词有没有拼错。。。

------------------------------------------------------------不能连帖,我就编辑了------------------------------------------------------------------
  1. #==============================================================================
  2. # ■ VX-RGSS2 改变战斗背景 [版本.1.0.0]     by Claimh
  3. #------------------------------------------------------------------------------
  4. # 英语翻译 By: Elemental Crisis [[url]http://www.rpgcrisis.net[/url]]
  5. # 中文翻译 By: zero2 [[url]http://www.66rpg.com[/url]]
  6. #------------------------------------------------------------------------------
  7. # 改变战斗的背景图.
  8. #==============================================================================


  9. module BattleBack
  10. #   选择战斗背景
  11. #   0:当前地图的战斗背景,为战斗背景(默认VX的样式)
  12. #   1:目前使用的地图作为战斗背景
  13. #   2:使用自己的图片,为战斗背景
  14. BB_TYPE = 1 # 在这里输入上面提到的编号

  15. # 显示战斗地面
  16. BT_FLOOR = false

  17. # 使用的图片(如果你选择的编号为2)
  18. M_B_BACK = {
  19.    # 地图编号 => "(Graphics/System/图片名)"
  20.   1 => "2",
  21.   2 => "2",
  22. }
  23. end


  24. #==============================================================================
  25. # ■ Spriteset_Battle
  26. #==============================================================================
  27. class Spriteset_Battle
  28. #--------------------------------------------------------------------------
  29. # ● Creating Battle Back Sprite
  30. #--------------------------------------------------------------------------
  31. def create_battleback
  32.   case $game_variables[BattleBack::BB_TYPE]
  33.   when 0
  34.     source = $game_temp.background_bitmap
  35.     bitmap = Bitmap.new(640, 480)
  36.     bitmap.stretch_blt(bitmap.rect, source, source.rect)
  37.     bitmap.radial_blur(90, 12)
  38.     @battleback_sprite = Sprite.new(@viewport1)
  39.     @battleback_sprite.bitmap = bitmap
  40.     @battleback_sprite.ox = 320
  41.     @battleback_sprite.oy = 240
  42.     @battleback_sprite.x = 272
  43.     @battleback_sprite.y = 176
  44.     @battleback_sprite.wave_amp = 8
  45.     @battleback_sprite.wave_length = 240
  46.     @battleback_sprite.wave_speed = 120
  47.   when 1
  48.     source = $game_temp.background_bitmap
  49.     bitmap = Bitmap.new(640, 480)
  50.     bitmap.stretch_blt(bitmap.rect, source, source.rect)
  51.     @battleback_sprite = Sprite.new(@viewport1)
  52.     @battleback_sprite.bitmap = bitmap
  53.     @battleback_sprite.ox = 320
  54.     @battleback_sprite.oy = 240
  55.     @battleback_sprite.x = 272
  56.     @battleback_sprite.y = 176
  57.   when 2
  58.     @battleback_sprite = BattleBackSprite.new(@viewport1)
  59.   end
  60. end
  61. #--------------------------------------------------------------------------
  62. # ● Creating Battle Floor Sprite
  63. #--------------------------------------------------------------------------

  64. def create_battlefloor
  65.   create_battlefloor_mbb if BattleBack::BT_FLOOR
  66. end
  67. #--------------------------------------------------------------------------
  68. # ● Delete Battle Floor Sprite
  69. #--------------------------------------------------------------------------

  70. def dispose_battlefloor
  71.   dispose_battlefloor_mbb if BattleBack::BT_FLOOR
  72. end
  73. #--------------------------------------------------------------------------
  74. # ● Update Battle Floor Sprite
  75. #--------------------------------------------------------------------------

  76. def update_battlefloor
  77.   update_battlefloor_mbb if BattleBack::BT_FLOOR
  78. end
  79. end


  80. #==============================================================================
  81. # ■ BattleBackSprite
  82. #==============================================================================
  83. class BattleBackSprite < Sprite
  84. # Background Screen Size
  85. WIDTH  = 544.00
  86. HEIGHT = 288.00
  87. #--------------------------------------------------------------------------
  88. # ● Object Initialization
  89. #     viewport : viewport
  90. #--------------------------------------------------------------------------
  91. def initialize(viewport = nil)
  92.   super(viewport)
  93.   self.bitmap = Cache.system(BattleBack::M_B_BACK[$game_map.map_id])
  94.   # Zoom is carried out according to picture size.
  95.   @x_zoom = WIDTH / self.bitmap.width
  96.   @y_zoom = HEIGHT / self.bitmap.height
  97.   [url=home.php?mod=space&uid=98379]@zoom[/url] = @x_zoom > @y_zoom ? @x_zoom : @y_zoom
  98.   # Zoom is carried out.
  99.   self.zoom_x = @zoom
  100.   self.zoom_y = @zoom
  101.   # Made into central display.
  102.   self.ox = self.bitmap.width / 2
  103.   self.oy = self.bitmap.height / 2
  104.   self.x = (self.bitmap.width / 2)  * @zoom
  105.   self.y = (self.bitmap.height / 2) * @zoom
  106. end
  107. end
复制代码
这样应该就没问题了吧?测试过可以了……
还是不行吗?那我再贴上范例?!
Project1.zip (266.9 KB, 下载次数: 41)
注意脚本的第24、25行,那两行选择背景图片,范例里的是我临时涂鸦的……
还有在第16行选择由第几号变量来决定战斗背景……
还有脚本的第108行,直接用应该可能会出错……不知道为什么,本来是对的,一传上来就错了
要改成  (@zoom = @x_zoom > @y_zoom ? @x_zoom : @y_zoom)
@protosssonny   给糖吧……   
作者: sakazaki    时间: 2013-3-11 14:41
0newing 发表于 2013-3-11 07:49
我也来说两句吧,你把第37行的case BB_TYPE改成case $game_variables
这样的话原先你想改的那个数字就是第 ...

終於OK鳥!!感恩!!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1