设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1483|回复: 7
打印 上一主题 下一主题

[已经解决] 如何让开关控制CP制御AX追加的显示头像

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
202 小时
注册时间
2010-12-16
帖子
156
跳转到指定楼层
1
发表于 2014-8-13 22:09:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想要这个代码能够实现“当某个开关开启时改变某一个人物的ICONS”,并且是在战斗中能够即时改变。请问可以做到吗?
如果事件可以做到的话,也请告诉我——!


RUBY 代码复制
  1. # ▼▲▼ XRXS65A. CP制御ターンシステム「シンセ・ゲージ」 ▼▲▼ built201202
  2. # by 桜雅 在土
  3.  
  4. #==============================================================================
  5. # □ カスタマイズポイント
  6. #==============================================================================
  7. class XRXS65A
  8.   #--------------------------------------------------------------------------
  9.   # 「アイコン設定」
  10.   #--------------------------------------------------------------------------
  11.   DEFAULT = "Enemy" # ディフォルトアイコン
  12.   # アイコンハッシュ  記述方式 : アクターID=>アイコン名
  13.   ICONS = {
  14.     1=>"SNOW",
  15.     2=>"SNOW",
  16.     3=>"SNOW",
  17.     4=>"SNOW",
  18.     5=>"z3",
  19.     6=>"z1",
  20.     }
  21.   # アイコンハッシュE  記述方式 : エネミーID=>アイコン名
  22.   ICONE = {1=>"z1副",2=>"z3副",3=>"SNOW副",4=>"Enemy紫",5=>"z3",8=>"z1",9=>"z1"}
  23.   #--------------------------------------------------------------------------
  24.   # 「シンセ・ゲージ」
  25.   #--------------------------------------------------------------------------
  26.   SKIN = "Line"  # スキン
  27.   X    =  16         # X 座標
  28.   Y    =  18 # Y 座標
  29. end
  30. #==============================================================================
  31. # --- CP メーターをまとめて管理するクラス、表示関係はすべてココ --- [再定義]
  32. #==============================================================================
  33. class CP_Meters
  34.   #--------------------------------------------------------------------------
  35.   # ○ オブジェクト初期化
  36.   #--------------------------------------------------------------------------
  37.   def initialize
  38.     # シンセゲージの生成
  39.     @base = Sprite.new
  40.     @base.bitmap = RPG::Cache.windowskin(XRXS65A::SKIN).dup
  41.     @base.x = XRXS65A::X
  42.     @base.y = XRXS65A::Y
  43.     @base.z = XRXS65A::X
  44.     @width  = @base.bitmap.width
  45.     [url=home.php?mod=space&uid=291977]@height[/url] = @base.bitmap.height
  46.     @icon_set = []
  47.     refresh
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ○ リフレッシュ
  51.   #--------------------------------------------------------------------------
  52.   def refresh
  53.     # 生成すべきバトラーの取得
  54.     need_initializes = []
  55.     for battler in $game_party.actors + $game_troop.enemies
  56.       exist = false
  57.       for set in @icon_set
  58.       set[0].visible = true if set[0].visible ==false
  59.         exist |= (set[1] == battler)
  60.       end
  61.       need_initializes.push(battler) unless exist
  62.     end
  63.     for battler in need_initializes
  64.       iconname = nil
  65.       if battler.is_a?(Game_Actor)
  66.         iconname = XRXS65A::ICONS[battler.id]
  67.       else
  68.         iconname = XRXS65A::ICONE[battler.id]
  69.       end
  70.       if iconname == nil
  71.         iconname = XRXS65A::DEFAULT
  72.       end
  73.       sprite = Sprite.new
  74.       sprite.bitmap = RPG::Cache.icon(iconname).dup
  75.       sprite.y = XRXS65A::Y + @height / 2 - 12
  76.       @icon_set.push([sprite, battler])
  77.     end
  78.     # 更新
  79.     for set in @icon_set
  80.       set[0].x = XRXS65A::X + @width * set[1].cp / set[1].max_cp - 12
  81.       set[0].z = set[0].x
  82.       set[0].visible = false if set[1].dead? or !set[1].exist?
  83.     end
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ○ 可視状態
  87.   #--------------------------------------------------------------------------
  88.   def visible=(b)
  89.     @base.visible = b
  90.     @icon_set.each{|set| set[0].visible = b }
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ○ 解放
  94.   #--------------------------------------------------------------------------
  95.   def dispose
  96.     @base.dispose
  97.     @icon_set.each{|set| set[0].dispose }
  98.   end
  99. end
想成为触的渣一枚Or觉得自己是渣的渣一枚。

Lv3.寻梦者

梦石
0
星屑
1733
在线时间
484 小时
注册时间
2006-1-7
帖子
1073
2
发表于 2014-8-14 12:24:56 | 只看该作者

if $game_switches[XX] = true  #如果XX号开关打开

ICON有变化

理论上就是这样
你代码能不能重新发一下
这种模式复制下来没有换行
特别费劲

点评

了解。  发表于 2014-8-14 20:26
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
202 小时
注册时间
2010-12-16
帖子
156
3
 楼主| 发表于 2014-8-14 20:28:07 | 只看该作者
# ▼▲▼ XRXS65A. CP制御ターンシステム「シンセ・ゲージ」 ▼▲▼ built201202
# by 桜雅 在土

#==============================================================================
# □ カスタマイズポイント
#==============================================================================
class XRXS65A
  #--------------------------------------------------------------------------
  # 「アイコン設定」
  #--------------------------------------------------------------------------
  DEFAULT = "Enemy" # ディフォルトアイコン
  # アイコンハッシュ  記述方式 : アクターID=>アイコン名
  ICONS = {
    1=>"SNOW",
    2=>"SNOW",
    3=>"SNOW",
    4=>"SNOW",
    5=>"z3",
    6=>"z1",
    }
  # アイコンハッシュE  記述方式 : エネミーID=>アイコン名
  ICONE = {1=>"z1副",2=>"z3副",3=>"SNOW副",4=>"Enemy紫",5=>"z3",8=>"z1",9=>"z1"}
  #--------------------------------------------------------------------------
  # 「シンセ・ゲージ」
  #--------------------------------------------------------------------------
  SKIN = "Line"  # スキン
  X    =  16         # X 座標
  Y    =  18 # Y 座標
end
#==============================================================================
# --- CP メーターをまとめて管理するクラス、表示関係はすべてココ --- [再定義]
#==============================================================================
class CP_Meters
  #--------------------------------------------------------------------------
  # ○ オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    # シンセゲージの生成
    @base = Sprite.new
    @base.bitmap = RPG::Cache.windowskin(XRXS65A::SKIN).dup
    @base.x = XRXS65A::X
    @base.y = XRXS65A::Y
    @base.z = XRXS65A::X
    @width  = @base.bitmap.width
    @height = @base.bitmap.height
    @icon_set = []
    refresh
  end
  #--------------------------------------------------------------------------
  # ○ リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    # 生成すべきバトラーの取得
    need_initializes = []
    for battler in $game_party.actors + $game_troop.enemies
      exist = false
      for set in @icon_set
      set[0].visible = true if set[0].visible ==false
        exist |= (set[1] == battler)
      end
      need_initializes.push(battler) unless exist
    end
    for battler in need_initializes
      iconname = nil
      if battler.is_a?(Game_Actor)
        iconname = XRXS65A::ICONS[battler.id]
      else
        iconname = XRXS65A::ICONE[battler.id]
      end
      if iconname == nil
        iconname = XRXS65A::DEFAULT
      end
      sprite = Sprite.new
      sprite.bitmap = RPG::Cache.icon(iconname).dup
      sprite.y = XRXS65A::Y + @height / 2 - 12
      @icon_set.push([sprite, battler])
    end
    # 更新
    for set in @icon_set
      set[0].x = XRXS65A::X + @width * set[1].cp / set[1].max_cp - 12
      set[0].z = set[0].x
      set[0].visible = false if set[1].dead? or !set[1].exist?
    end
  end
  #--------------------------------------------------------------------------
  # ○ 可視状態
  #--------------------------------------------------------------------------
  def visible=(b)
    @base.visible = b
    @icon_set.each{|set| set[0].visible = b }
  end
  #--------------------------------------------------------------------------
  # ○ 解放
  #--------------------------------------------------------------------------
  def dispose
    @base.dispose
    @icon_set.each{|set| set[0].dispose }
  end
end
想成为触的渣一枚Or觉得自己是渣的渣一枚。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1733
在线时间
484 小时
注册时间
2006-1-7
帖子
1073
4
发表于 2014-8-14 20:40:35 | 只看该作者
第13行 到 第22行
替换成以下
  if $game_switches[XX] = true  #如果XX号开关打开
    #以下是第一套方案
    ICONS = {
      1=>"SNOW",
      2=>"SNOW",
      3=>"SNOW",
      4=>"SNOW",
      5=>"z3",
      6=>"z1",
      }
    # アイコンハッシュE  記述方式 : エネミーID=>アイコン名
    ICONE = {1=>"z1副",2=>"z3副",3=>"SNOW副",4=>"Enemy紫",5=>"z3",8=>"z1",9=>"z1"}

  else
    #以下是第二套方案,我没改,你自己来弄素材还有重命名。
    ICONS = {
      1=>"SNOW",
      2=>"SNOW",
      3=>"SNOW",
      4=>"SNOW",
      5=>"z3",
      6=>"z1",
      }
    # アイコンハッシュE  記述方式 : エネミーID=>アイコン名
    ICONE = {1=>"z1副",2=>"z3副",3=>"SNOW副",4=>"Enemy紫",5=>"z3",8=>"z1",9=>"z1"}

   end


应该能看懂吧?
你可以先改一个,试试效果看
应该是在这里的

点评

BUG……似乎不能在这里着手。  发表于 2014-8-14 21:48
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
202 小时
注册时间
2010-12-16
帖子
156
5
 楼主| 发表于 2014-8-14 21:47:01 | 只看该作者
这个问题……因为是定义区所以不能使用分歧?

BUG尼嚎.jpg (15.85 KB, 下载次数: 1)

BUG尼嚎.jpg
想成为触的渣一枚Or觉得自己是渣的渣一枚。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1733
在线时间
484 小时
注册时间
2006-1-7
帖子
1073
6
发表于 2014-8-14 21:56:55 | 只看该作者
本帖最后由 白鬼 于 2014-8-14 21:57 编辑

这个错误提示的意思是:
【NoMethodError】
调用了未定义的方法。

undefined method‵ []=' for nil:NilClass
nil(Nil类)中没有定义这些符号的使用
比如:
nil - 0
nil * 0
nil < 0

错误不是你说的那样。你还是上工程吧

点评

这些简单的我也明白,所以一开始我就知道我肯定是找错方向了……不管怎么说谢谢你们啦~  发表于 2014-8-15 10:58
而且即使要判断的话,也应该用"=="啊,啥时候改成"="了?  发表于 2014-8-14 22:45
分歧放在这里是不可以的,因为ICONS属于常量,因此在编译的时候就要确定它的值了。但是编译的时候$game_switches没有定义,所以爆NoMethodError  发表于 2014-8-14 22:44
嗯。  发表于 2014-8-14 21:58
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
202 小时
注册时间
2010-12-16
帖子
156
7
 楼主| 发表于 2014-8-14 22:07:24 | 只看该作者
这一个……就三个脚本,看一下问题在什么地方。

Project1.rar

228.16 KB, 下载次数: 53

点评

效果是角色使用技能,战斗图和行走图变更(事件已解决),同时头像变更。  发表于 2014-8-15 12:32
你具体是想达到怎样的效果?角色变身,还是敌人变身?  发表于 2014-8-15 12:30
但实际上是不行的。因为刷新部分只是在战斗开始的时候进行?  发表于 2014-8-15 12:26
你在设置技能的时候,添加一个公共事件,用公共事件来打开或者关闭开关试试。因为是定义在刷新部分,所以理论上是直接就会变化的。  发表于 2014-8-15 11:49
想成为触的渣一枚Or觉得自己是渣的渣一枚。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1733
在线时间
484 小时
注册时间
2006-1-7
帖子
1073
8
发表于 2014-8-14 22:41:56 | 只看该作者
Project1.rar (237.6 KB, 下载次数: 74)

弄好了。
我要纠正一下我的错误
开关判断应该是 ==  ,而不是  =
也就是说,应该是:
if $game_switches[XX] == true

我在下面用到ICONS的位置上进行了判断,原理是一样的。

在定义部分,追加了ICONS2和ICOE2的定义

你可以搜索  白鬼  
来看我修改了哪里
建议对照你原来的脚本,这样才能学到。

点评

嗯……请问有没有可能战斗中即时更换呢?就是说战斗的时候使用技能打开开关,然后马上刷新图像。  发表于 2014-8-15 11:38

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 认可答案

查看全部评分

初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-5 21:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表