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

Project1

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

[已经解决] 如何在获得状态后习得技能

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
57 小时
注册时间
2011-1-28
帖子
30
跳转到指定楼层
1
发表于 2011-4-23 07:09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如何在主角获得某些状态之后习得技能
例如:
主角获得【中毒】状态 可习得(或者说是使用)技能【XX拳】

点评

啊喂- -问下,是自动雪会还是什么鬼?  发表于 2011-4-23 07:22

Lv3.寻梦者

梦石
0
星屑
1896
在线时间
896 小时
注册时间
2010-11-13
帖子
406
2
发表于 2011-4-23 07:16:38 | 只看该作者
我想说是自动还是什么……
想也一直在把精力放在自认为重要的事上,可能一会,可能一辈子不会填坑,失态
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
57 小时
注册时间
2011-1-28
帖子
30
3
 楼主| 发表于 2011-4-23 07:49:59 | 只看该作者
自动学会- -
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1641
在线时间
2205 小时
注册时间
2010-6-27
帖子
1299
4
发表于 2011-4-23 09:34:31 | 只看该作者
  1. module State_Skill
  2.   STATE_SKILL = [] if $data_skills.nil?
  3.   $data_skills        = load_data("Data/Skills.rxdata") if $data_skills.nil?
  4.   $data_states        = load_data("Data/States.rxdata") if $data_states.nil?
  5. #---------------------------------------------------------
  6. # @state_skill.push [狀態ID,技能ID]
  7. # “*” + 状态名 == 技能名
  8. #---------------------------------------------------------
  9.   for i in 1...$data_states.size
  10.     for i2 in 1...$data_skills.size
  11.       if "*" + $data_states[i].name ==  $data_skills[i2].name
  12.         STATE_SKILL.push [i,i2]
  13.       end
  14.     end
  15.   end
  16. end
  17. #==============================================================================
  18. # ■ Game_Battler (分割定义 2)
  19. #------------------------------------------------------------------------------
  20. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  21. # 超级类来使用。
  22. #==============================================================================

  23. class Game_Battler
  24.   include State_Skill
  25.   #--------------------------------------------------------------------------
  26.   # ● 附加状态
  27.   #     state_id : 状态 ID
  28.   #     force    : 强制附加标志 (处理自动状态时使用)
  29.   #--------------------------------------------------------------------------
  30.   def add_state(state_id, force = false)
  31.     # 无效状态的情况下
  32.     if $data_states[state_id] == nil
  33.       # 过程结束
  34.       return
  35.     end
  36.     # 无法强制附加的情况下
  37.     unless force
  38.       # 已存在的状态循环
  39.       for i in @states
  40.         # 新的状态和已经存在的状态 (-) 同时包含的情况下、
  41.         # 本状态不包含变化为新状态的状态变化 (-)
  42.         # (ex : 战斗不能与附加中毒同时存在的场合)
  43.         if $data_states[i].minus_state_set.include?(state_id) and
  44.            not $data_states[state_id].minus_state_set.include?(i)
  45.           # 过程结束
  46.           return
  47.         end
  48.       end
  49.     end
  50.     # 无法附加本状态的情况下
  51.     unless state?(state_id)
  52.       # 状态 ID 追加到 @states 序列中
  53.       @states.push(state_id)
  54.       # 选项 [当作 HP 0 的状态] 有效的情况下
  55.       if $data_states[state_id].zero_hp
  56.         # HP 更改为 0
  57.         @hp = 0
  58.       end
  59.       # 所有状态的循环
  60.       for i in 1...$data_states.size
  61.         # 状态变化 (+) 处理
  62.         if $data_states[state_id].plus_state_set.include?(i)
  63.           add_state(i)
  64.         end
  65.         # 状态变化 (-) 处理
  66.         if $data_states[state_id].minus_state_set.include?(i)
  67.           remove_state(i)
  68.         end
  69.       end
  70.       # 按比例大的排序 (值相等的情况下按照强度排序)
  71.       @states.sort! do |a, b|
  72.         state_a = $data_states[a]
  73.         state_b = $data_states[b]
  74.         if state_a.rating > state_b.rating
  75.           -1
  76.         elsif state_a.rating < state_b.rating
  77.           +1
  78.         elsif state_a.restriction > state_b.restriction
  79.           -1
  80.         elsif state_a.restriction < state_b.restriction
  81.           +1
  82.         else
  83.           a <=> b
  84.         end
  85.       end
  86.     end
  87.     # 强制附加的场合
  88.     if force
  89.       # 设置为自然解除的最低回数 -1 (无效)
  90.       @states_turn[state_id] = -1
  91.     end
  92.     # 不能强制附加的场合
  93.     unless  @states_turn[state_id] == -1
  94.       # 设置为自然解除的最低回数
  95.       @states_turn[state_id] = $data_states[state_id].hold_turn
  96.     end
  97.     # 无法行动的场合
  98.     unless movable?
  99.       # 清除行动
  100.       @current_action.clear
  101.     end
  102.     # 检查 HP 及 SP 的最大值
  103.     @hp = [@hp, self.maxhp].min
  104.     @sp = [@sp, self.maxsp].min
  105. #---------------------------------
  106. if self.is_a?(Game_Actor)
  107. if STATE_SKILL.size > 0
  108.     for i in STATE_SKILL
  109.       if i[0] == state_id
  110.         if i[1] != 0
  111.           learn_skill(i[1])
  112.           unless force
  113.             @states.delete(state_id)
  114.           end
  115.         end
  116.       end     
  117.     end
  118.   end
  119. end
  120. #---------------------------------
  121.   end
  122.   
  123.   #--------------------------------------------------------------------------
  124.   # ● 解除状态
  125.   #     state_id : 状态 ID
  126.   #     force    : 强制解除标志 (处理自动状态时使用)
  127.   #--------------------------------------------------------------------------
  128.   def remove_state(state_id, force = false)
  129.     # 无法附加本状态的情况下
  130.     if state?(state_id)
  131.       # 被强制附加的状态、并不是强制解除的情况下
  132.       if @states_turn[state_id] == -1 and not force
  133.         # 过程结束
  134.         return
  135.       end
  136.       # 现在的 HP 为 0 当作选项 [当作 HP 0 的状态]有效的场合
  137.       if @hp == 0 and $data_states[state_id].zero_hp
  138.         # 判断是否有另外的 [当作 HP 0 的状态]状态
  139.         zero_hp = false
  140.         for i in @states
  141.           if i != state_id and $data_states[i].zero_hp
  142.             zero_hp = true
  143.           end
  144.         end
  145.         # 如果可以解除战斗不能、将 HP 更改为 1
  146.         if zero_hp == false
  147.           @hp = 1
  148.         end
  149.       end
  150.       
  151.       
  152.        unless self.movable?
  153.         # ステート ID を @states 配列および @states_turn ハッシュから削除
  154.         @states.delete(state_id)
  155.         @states_turn.delete(state_id)
  156.         if self.movable?
  157.           self.at = 0
  158.         end
  159.       else
  160.         # ステート ID を @states 配列および @states_turn ハッシュから削除
  161.         @states.delete(state_id)
  162.         @states_turn.delete(state_id)
  163.       end
  164.       
  165.       
  166.       
  167.       
  168.       # 将状态 ID 从 @states 队列和 @states_turn hash 中删除
  169.       #@states.delete(state_id)
  170.       #@states_turn.delete(state_id)
  171.     end
  172.     # 检查 HP 及 SP 的最大值
  173.     @hp = [@hp, self.maxhp].min
  174.     @sp = [@sp, self.maxsp].min
  175. #---------------------------------
  176. if self.is_a?(Game_Actor)
  177. if STATE_SKILL.size > 0
  178.     for i in STATE_SKILL
  179.       if i[0] == state_id
  180.         if i[1] != 0
  181.           forget_skill(i[1])
  182.         end
  183.       end     
  184.     end
  185.   end
  186. end
  187. #---------------------------------
  188. end







  189. end
复制代码

点评

万分感谢…………  发表于 2011-4-23 10:03

评分

参与人数 1星屑 +700 收起 理由
「旅」 + 700

查看全部评分


于是我也广告下…
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 15:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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