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

Project1

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

全局CP脚本的问题

 关闭 [复制链接]

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
95
在线时间
380 小时
注册时间
2006-10-16
帖子
4299

贵宾

跳转到指定楼层
1
发表于 2009-1-23 17:34:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. # ▼▲▼ XRXS65A. CP制御ターンシステム「シンセ・ゲージ」 ▼▲▼ built201202
  2. # by 桜雅 在土

  3. #==============================================================================
  4. # □ カスタマイズポイント
  5. #==============================================================================
  6. class XRXS65A
  7.   #--------------------------------------------------------------------------
  8.   # 「アイコン設定」
  9.   #--------------------------------------------------------------------------
  10.   DEFAULT = "046-Skill03" # ディフォルトアイコン
  11.   # アイコンハッシュ  記述方式 : アクターID=>アイコン名
  12.   ICONS = {
  13.     1=>"主角头",
  14.     2=>"香头",
  15.     3=>"奶妈头",
  16.     4=>"剪影头",
  17.     5=>"力头",
  18.     6=>"cr头",
  19.     7=>"姑头",
  20.     8=>"心灵头",
  21.     9=>"蓝雪头",
  22.     10=>"酷头",
  23.     11=>"兽头",
  24.     12=>"安吉头",
  25.     13=>"唯头",
  26.     14=>"SM头",
  27.     15=>"天朗头",
  28.     16=>"敌头",
  29.     17=>"牛妞头"
  30.   }
  31.   # アイコンハッシュE  記述方式 : エネミーID=>アイコン名
  32.   ICONE = {
  33.     1=>"敌头",
  34.     2=>"敌头",
  35.     3=>"敌头",
  36.     4=>"敌头",
  37.     5=>"敌头",
  38.     6=>"敌头",
  39.     7=>"敌头",
  40.     8=>"敌头"
  41.   }
  42.   #--------------------------------------------------------------------------
  43.   # 「シンセ・ゲージ」
  44.   #--------------------------------------------------------------------------
  45.   SKIN = "GTCP"  # スキン
  46.   X    =  49        # X 座標
  47.   Y    =  64        # Y 座標
  48. end
  49. #==============================================================================
  50. # --- CP メーターをまとめて管理するクラス、表示関係はすべてココ --- [再定義]
  51. #==============================================================================
  52. class CP_Meters
  53.   #--------------------------------------------------------------------------
  54.   # ○ オブジェクト初期化
  55.   #--------------------------------------------------------------------------
  56.   def initialize
  57.     # シンセゲージの生成
  58.     @base = Sprite.new
  59.     @base.bitmap = RPG::Cache.windowskin(XRXS65A::SKIN).dup
  60.     @base.x = XRXS65A::X
  61.     @base.y = XRXS65A::Y
  62.     @base.z = XRXS65A::X
  63.     @width  = @base.bitmap.width
  64.     @height = @base.bitmap.height
  65.     @icon_set = []
  66.     refresh
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ○ リフレッシュ
  70.   #--------------------------------------------------------------------------
  71.   def refresh
  72.     # 生成すべきバトラーの取得
  73.     need_initializes = []
  74.     for battler in $game_party.actors + $game_troop.enemies
  75.       exist = false
  76.       for set in @icon_set
  77.         exist |= (set[1] == battler)
  78.       end
  79.       need_initializes.push(battler) unless exist
  80.     end
  81.     for battler in need_initializes
  82.       iconname = nil
  83.       if battler.is_a?(Game_Actor)
  84.         iconname = XRXS65A::ICONS[battler.id]
  85.       else
  86.         iconname = XRXS65A::ICONE[battler.id]
  87.       end
  88.       if iconname == nil
  89.         iconname = XRXS65A::DEFAULT
  90.       end
  91.       sprite = Sprite.new
  92.       sprite.bitmap = RPG::Cache.icon(iconname).dup
  93.       sprite.y = XRXS65A::Y + @height / 2 - 12
  94.       @icon_set.push([sprite, battler])
  95.     end
  96.     # 更新
  97.     for set in @icon_set
  98.       set[0].x = XRXS65A::X + @width * set[1].cp / set[1].max_cp - 12
  99.       set[0].z = set[0].x
  100.       set[0].visible = false if set[1].dead? or !set[1].exist?
  101.     end
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ○ 可視状態
  105.   #--------------------------------------------------------------------------
  106.   def visible=(b)
  107.     @base.visible = b
  108.     @icon_set.each{|set| set[0].visible = b }
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ○ 解放
  112.   #--------------------------------------------------------------------------
  113.   def dispose
  114.     @base.dispose
  115.     @icon_set.each{|set| set[0].dispose }
  116.   end
  117. end

复制代码

不知道为什么我战斗之前用脚本remove了两个角色,可是这里还是照常显示
这个脚本是随手贴别人的。
工程如下。。。
http://rpg.blue/upload_program/d ... ��统_113148580.rar
版务信息:本贴由楼主自主结贴~

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
95
在线时间
380 小时
注册时间
2006-10-16
帖子
4299

贵宾

2
 楼主| 发表于 2009-1-23 18:19:14 | 只看该作者
自顶
回复 支持 反对

使用道具 举报

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
3
发表于 2009-1-23 18:33:00 | 只看该作者
这个类只做了显示方面的处理
你可以 看看有没有Game_Platy类嵌在其他脚本
↓这是啥-- [IMG][/IMG]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
95
在线时间
380 小时
注册时间
2006-10-16
帖子
4299

贵宾

4
 楼主| 发表于 2009-1-23 22:27:05 | 只看该作者
麻烦继续说下去。。。
因为注释是日文所以我也不知道哪一块是干嘛的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
5
发表于 2009-1-23 23:31:12 | 只看该作者
角色离队后并没发生这样的情况啊

  1. # ▼▲▼ XRXS65A. CP制御ターンシステム「シンセ・ゲージ」 ▼▲▼ built201202
  2. # by 桜雅 在土

  3. #==============================================================================
  4. # □ カスタマイズポイント
  5. #==============================================================================
  6. class XRXS65A
  7.   #--------------------------------------------------------------------------
  8.   # 「アイコン設定」
  9.   #--------------------------------------------------------------------------
  10.   DEFAULT = "head-test" # ディフォルトアイコン
  11.   # アイコンハッシュ  記述方式 : アクターID=>アイコン名
  12.   ICONS = {
  13.     1=>"head-1",
  14.     2=>"head-2",
  15.     7=>"head-3",
  16.     8=>"head-3"
  17.   }
  18.   # アイコンハッシュE  記述方式 : エネミーID=>アイコン名
  19.   ICONE = {
  20.     1=>"head-0",
  21.     2=>"head-0",
  22.   }
  23.   #--------------------------------------------------------------------------
  24.   # 「シンセ・ゲージ」
  25.   #--------------------------------------------------------------------------
  26.   SKIN = "cp2"  # スキン
  27.   X    =  0       # X 座標
  28.   Y    =  45        # 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  = 288#@base.bitmap.width
  45.     @height = @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.         exist |= (set[1] == battler)
  59.       end
  60.       need_initializes.push(battler) unless exist
  61.     end
  62.     for battler in need_initializes
  63.       iconname = nil
  64.       if battler.is_a?(Game_Actor)
  65.         iconname = XRXS65A::ICONS[battler.id]
  66.       else
  67.         iconname = XRXS65A::ICONE[battler.id]
  68.       end
  69.       if iconname == nil
  70.         iconname = XRXS65A::DEFAULT
  71.       end
  72.       sprite = Sprite.new
  73.       sprite.bitmap = RPG::Cache.icon(iconname).dup
  74.       sprite.y = XRXS65A::Y + @height / 2 - 32
  75.       @icon_set.push([sprite, battler])
  76.     end
  77.     # 更新
  78.     for set in @icon_set
  79.       set[0].x = XRXS65A::X + @width * set[1].cp / set[1].max_cp + 160
  80.       set[0].z = set[0].x
  81.      if set[1].dead? or !set[1].exist?
  82.    set[0].visible = false
  83.    else
  84.    set[0].visible = true
  85.    end

  86.     end
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ○ 可視状態
  90.   #--------------------------------------------------------------------------
  91.   def visible=(b)
  92.     @base.visible = b
  93.     @icon_set.each{|set| set[0].visible = b }
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ○ 解放
  97.   #--------------------------------------------------------------------------
  98.   def dispose
  99.     @base.dispose
  100.     @icon_set.each{|set| set[0].dispose }
  101.   end
  102. end


复制代码


你说的是设置不参战时头像仍然显示吧
这个我有注意到
因为根本就不是完全沾边的两个脚本...
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
↓这是啥-- [IMG][/IMG]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
95
在线时间
380 小时
注册时间
2006-10-16
帖子
4299

贵宾

6
 楼主| 发表于 2009-1-24 00:00:31 | 只看该作者
是的……工程的话在另一个帖子那里,需要的话我贴来这里
CP脚本可能在Scene_Battle1执行之前就执行了,所以就会显示他吧…………
我试试吧判定式写在CP脚本上面。。。话说我家茅坑塞了1天终于修好了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
7
发表于 2009-1-24 00:07:28 | 只看该作者

  1. for battler in $game_party.actors + $game_troop.enemies
  2.       exist = false
  3.       for set in @icon_set
  4.         exist |= (set[1] == battler)
  5.       end
  6.       need_initializes.push(battler) unless exist
  7.     end
复制代码

56行这里判断了$game_party.actors队伍的人数
你找一下参战的人数替换成队伍的人数看看
↓这是啥-- [IMG][/IMG]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
95
在线时间
380 小时
注册时间
2006-10-16
帖子
4299

贵宾

8
 楼主| 发表于 2009-1-24 00:31:44 | 只看该作者
谢谢,不过我用其他方法解决了。
  1. #判定是否全员不参战,如是则将顺位HP不等于零的强制加入战斗。
  2.     if $gengetu + $gengetu1 + $gengetu2 + $gengetu3 + $gengetu4 + $gengetu5 == 0
  3.       if $game_party.actors[0].hp > 0
  4.         $gengetu = 1
  5.       elsif $game_party.actors[1].hp > 0
  6.         $gengetu1 = 1
  7.       elsif $game_party.actors[2].hp > 0
  8.         $gengetu2 = 1
  9.       elsif $game_party.actors[3].hp > 0
  10.         $gengetu3 = 1
  11.       elsif $game_party.actors[4].hp > 0
  12.         $gengetu4 = 1
  13.       elsif $game_party.actors[5].hp > 0
  14.         $gengetu5 = 1
  15.       end
  16.     end
  17.     #给角色赋值
  18.     $party = $game_party.actors[0].id
  19.     $party1 = $game_party.actors[1].id
  20.     $party2 = $game_party.actors[2].id
  21.     $party3 = $game_party.actors[3].id
  22.     $party4 = $game_party.actors[4].id
  23.     $party5 = $game_party.actors[5].id
  24.     #设置战斗角色
  25.     if $gengetu == 0
  26.     $game_party.remove_actor($party)
  27.     end
  28.     if $gengetu1 == 0
  29.     $game_party.remove_actor($party1)
  30.     end
  31.     if $gengetu2 == 0
  32.     $game_party.remove_actor($party2)
  33.     end
  34.     if $gengetu3 == 0
  35.     $game_party.remove_actor($party3)
  36.     end
  37.     if $gengetu4 == 0
  38.     $game_party.remove_actor($party4)
  39.     end
  40.     if $gengetu5 == 0
  41.     $game_party.remove_actor($party5)
  42.     end
复制代码

我把这个塞进CP脚本的class Scene_Battle的def mian之后,就好了。
他果然是先执行CP脚本,然后详细的定义再读取原来的脚本。
不过还是认可你吧。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
9
发表于 2009-1-24 00:36:01 | 只看该作者
●Scene_Map●这个是角色参战的判断
在类名下面添加一个全局变量
$actos_count = 0
然后在下面给他累加

  1. #-----------------------------------------------------------------
  2.     # 主循环
  3.     loop do
  4.       #-------------------------------------
  5.       # 当指定开关打开则角色必须加入战斗
  6.       #-------------------------------------
  7.       if $game_switches[$swiches1] == true
  8.         $actos_count+=1
  9.       $gengetu = 1
  10.       end
  11.       if $game_switches[$swiches2] == true
  12.         $actos_count+=1
  13.       $gengetu1 = 1
  14.       end
  15.       if $game_switches[$swiches3] == true
  16.         $actos_count+=1
  17.       $gengetu2 = 1
  18.       end
  19.       if $game_switches[$swiches4] == true
  20.          $actos_count+=1
  21.       $gengetu3 = 1
  22.       end
  23.       if $game_switches[$swiches5] == true
  24.         $actos_count+=1
  25.       $gengetu4 = 1
  26.       end
  27.       if $game_switches[$swiches6] == true
  28.         $actos_count+=1
  29.       $gengetu5 = 1
  30.       end
复制代码

之后在for battler in $actos_count + $game_troop.enemies
改成
for battler in $actos_count+ $game_troop.enemies
试试
总之我的方法是在参战判断时给全局变量+1
然后在战斗处理时直接拿出战的人数做判断
不知道行不行...
↓这是啥-- [IMG][/IMG]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
95
在线时间
380 小时
注册时间
2006-10-16
帖子
4299

贵宾

10
 楼主| 发表于 2009-1-24 02:35:58 | 只看该作者
我说…………已经解决了……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-19 03:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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