Project1

标题: 如何在脚本中添加技能的效果?比如,脚本中编写添加状态 [打印本页]

作者: A.actor    时间: 2012-2-8 03:13
标题: 如何在脚本中添加技能的效果?比如,脚本中编写添加状态

就像:
  1.       if skill.element_set.include?(45)
  2.        if rand(100) < 75
  3.          self.damage *= 10 / 5
  4.        else
  5.          self.damage /= - 2 / 1
  6.         end
  7.       end
复制代码
这样。有75%几率造成双倍伤害。有25%几率给敌人回复双倍血量。

我的问题是:如果我要做:75%给敌人添加1号状态,且造成伤害固定 100   ;25%几率 给敌人添加 2号 状态 ,且造成固定伤害100。

其实,看着很复杂,造成固定伤害很简单啊。
是不是就这样?
  1.       if skill.element_set.include?(45)
  2.        if rand(100) < 75
  3.          self.damage = 100      
  4.              else
  5.          self.damage = 200
  6.         end
  7.       end
复制代码
问题就是如何在脚本中编写添加状态呢??

最后感谢每一位有心帮助我的人!
dsu_plus_rewardpost_czw
作者: zjd540921697    时间: 2012-2-8 13:04
$data_states[编号]
作者: Wind2010    时间: 2012-2-8 14:40
  1.   #--------------------------------------------------------------------------
  2.   # ● 附加状态
  3.   #     state_id : 状态 ID
  4.   #     force    : 强制附加标志 (处理自动状态时使用)
  5.   #--------------------------------------------------------------------------
  6.   def add_state(state_id, force = false)
复制代码

作者: A.actor    时间: 2012-2-8 16:19
Wind2010 发表于 2012-2-8 14:40

大神可否说的详细一点。。比如 1号属性,75%给敌人+1号状态,25%无效果。。感恩。。
作者: awyb3110    时间: 2012-2-8 20:53
  1. def add_state(state_id, force = false)
  2.     if rand(99)<25 and state_id == 1
  3.       return
  4.     end  
  5.     # 无效状态的情况下
  6.     if $data_states[state_id] == nil
  7.       # 过程结束
  8.       return
  9.     end
  10.     # 无法强制附加的情况下
  11.     unless force
  12.       # 已存在的状态循环
  13.       for i in @states
  14.         # 新的状态和已经存在的状态 (-) 同时包含的情况下、
  15.         # 本状态不包含变化为新状态的状态变化 (-)
  16.         # (ex : 战斗不能与附加中毒同时存在的场合)
  17.         if $data_states[i].minus_state_set.include?(state_id) and
  18.            not $data_states[state_id].minus_state_set.include?(i)
  19.           # 过程结束
  20.           return
  21.         end
  22.       end
  23.     end
  24.     # 无法附加本状态的情况下
  25.     unless state?(state_id)
  26.       # 状态 ID 追加到 @states 序列中
  27.       @states.push(state_id)
  28.       # 选项 [当作 HP 0 的状态] 有效的情况下
  29.       if $data_states[state_id].zero_hp
  30.         # HP 更改为 0
  31.         @hp = 0
  32.       end
  33.       # 所有状态的循环
  34.       for i in 1...$data_states.size
  35.         # 状态变化 (+) 处理
  36.         if $data_states[state_id].plus_state_set.include?(i)
  37.           add_state(i)
  38.         end
  39.         # 状态变化 (-) 处理
  40.         if $data_states[state_id].minus_state_set.include?(i)
  41.           remove_state(i)
  42.         end
  43.       end
  44.       # 按比例大的排序 (值相等的情况下按照强度排序)
  45.       @states.sort! do |a, b|
  46.         state_a = $data_states[a]
  47.         state_b = $data_states[b]
  48.         if state_a.rating > state_b.rating
  49.           -1
  50.         elsif state_a.rating < state_b.rating
  51.           +1
  52.         elsif state_a.restriction > state_b.restriction
  53.           -1
  54.         elsif state_a.restriction < state_b.restriction
  55.           +1
  56.         else
  57.           a <=> b
  58.         end
  59.       end
  60.     end
  61.     # 强制附加的场合
  62.     if force
  63.       # 设置为自然解除的最低回数 -1 (无效)
  64.       @states_turn[state_id] = -1
  65.     end
  66.     # 不能强制附加的场合
  67.     unless  @states_turn[state_id] == -1
  68.       # 设置为自然解除的最低回数
  69.       @states_turn[state_id] = $data_states[state_id].hold_turn
  70.     end
  71.     # 无法行动的场合
  72.     unless movable?
  73.       # 清除行动
  74.       @current_action.clear
  75.     end
  76.     # 检查 HP 及 SP 的最大值
  77.     @hp = [@hp, self.maxhp].min
  78.     @sp = [@sp, self.maxsp].min
  79.   end
复制代码

作者: A.actor    时间: 2012-2-9 22:12
不知道为什么,我的想说的是,一个技能属性
  1. if skill.element_set.include?(45)

  2.        if rand(100) < 75

  3.          self.damage *= 10 / 5

  4.        else

  5.          self.damage /= - 2 / 1

  6.         end

  7.       end
复制代码
就像这样,在75%那里给敌人添加属性。。就是这么个意思。。咋写这段脚本。。




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