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

Project1

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

[已经过期] 同一状态效果叠加

[复制链接]

Lv1.梦旅人

梦石
0
星屑
180
在线时间
829 小时
注册时间
2010-6-26
帖子
671
跳转到指定楼层
1
发表于 2010-12-20 10:49:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
能否设置一些状态例如“攻击加强”之类的可以叠加使用。例如“蓄力”,第一回合攻击力150,第二回合200,第三回合500……之类的
新手们!不要被看扁了!我们也会用论坛搜索,我们也会自己找脚本,我们也会自己点击关闭按钮旁边的小问号!

Lv1.梦旅人

梦石
0
星屑
235
在线时间
158 小时
注册时间
2010-10-8
帖子
143
2
发表于 2010-12-20 11:23:48 | 只看该作者
我做过一个类似的,用的是公共事件,设置一个变量,使用蓄力功能时,变量+人物攻击力的50%,另一个“蓄力次数”的变量+1,当蓄力次数达到6时,不能再蓄力。
另一个技能是专门释放蓄力的,当此技能发动时,给予敌人伤害为此变量,很劲爆的一个技能……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
180
在线时间
829 小时
注册时间
2010-6-26
帖子
671
3
 楼主| 发表于 2010-12-20 12:00:44 | 只看该作者
回复 shua1125 的帖子

事件的确可以做到,除非是涉及到整个系统的东西,否则如果可以我都会尽量避免使用公用事件,因为涉及的变量、开关会很多。另外,蓄力的脚本貌似我有,用不着用事件……
p.s. 我很想知道你这个蓄力在战斗结束后次数会不会清零的?

点评

呃……不小心忽视掉了……回头我去改一改……  发表于 2010-12-20 12:26
新手们!不要被看扁了!我们也会用论坛搜索,我们也会自己找脚本,我们也会自己点击关闭按钮旁边的小问号!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
235
在线时间
158 小时
注册时间
2010-10-8
帖子
143
4
发表于 2010-12-20 12:43:40 | 只看该作者
本帖最后由 shua1125 于 2010-12-20 12:47 编辑

回复 企鹅达达 的帖子

我改了一下,使用蓄力技能时同时附加一个蓄力状态,0几率解除,战斗结束后解除,并开启某开关,使某并行公共事件执行:当人物处于蓄力状态时(空白),此外的情况,把那两个变量清零,关闭此开关。
使用释放蓄力的技能时也是清零,关闭此开关。

(我等是纯事件流啊……能用事件就用事件……)
(合成脚本被我舍弃后,我自己又在用纯事件做一个合成系统,真费变量啊,于是考虑是不是用简单脚本定义个变量……)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
180
在线时间
829 小时
注册时间
2010-6-26
帖子
671
5
 楼主| 发表于 2010-12-20 22:43:23 | 只看该作者
回复 shua1125 的帖子

使用了2个技能、1个状态、1个开关、3个公用事件、2个变量……
很浪费啊。纯不纯事件无所谓啦,如若脚本方便何不用脚本呢?
新手们!不要被看扁了!我们也会用论坛搜索,我们也会自己找脚本,我们也会自己点击关闭按钮旁边的小问号!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
235
在线时间
158 小时
注册时间
2010-10-8
帖子
143
6
发表于 2010-12-20 22:49:00 | 只看该作者
回复 企鹅达达 的帖子

问题就是不会怎么会用脚本啊……
脚本固然好,但是我看不懂更写不明白……
叫我情何以堪……
实在是事件做不到,必须需要脚本的时候,我才会用脚本……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
180
在线时间
829 小时
注册时间
2010-6-26
帖子
671
7
 楼主| 发表于 2010-12-20 23:00:42 | 只看该作者
回复 shua1125 的帖子

啊,我错了,因为角色一共有4个,估计你蓄力也要有4组变量记录吧?如果是只有一个主角用还好……要不你还是研究一下这个脚本好了……
  1. # Tension
  2. # 「テンションシステム」

  3. module TENSION
  4.   ELEMENT_ID = 10  # テンションが 0 でない場合に付加される攻撃属性(ID)

  5.   MESSAGE_FORMAT = "%sのテンションが %s になった!"
  6.   TENSON_DOWN    = "%sのテンションがもとにもどった!"
  7.   OVER_TENSION   = "%sはスーパーハイテンションになった!"
  8. end
  9. #____________________________________________________________________________

  10. class RPG::UsableItem < RPG::BaseItem
  11.   def tension_up?
  12.     return self.note.include?("<tension_up>")
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   def tension_clear?
  16.     return self.note.include?("<tension_clear>")
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   def tension_down?
  20.     return true if self.note.include?("<tension_down>")
  21.     return true if self.tension_clear?
  22.     return false
  23.   end
  24. end
  25. #____________________________________________________________________________

  26. class Game_Battler
  27.   attr_accessor :tension
  28.   attr_reader   :super_high_tension

  29.   alias tension_system_initialize initialize
  30.   def initialize
  31.     tension_system_initialize

  32.     @tension = 0
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   alias tension_system_claer_action_results clear_action_results
  36.   def claer_action_results
  37.     tension_system_claer_action_results

  38.     @super_high_tension = false
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   def tension_value
  42.     case @tension
  43.       when 0; return   0
  44.       when 1; return   5
  45.       when 2; return  20
  46.       when 3; return  50
  47.       when 4; return 100
  48.     end
  49.   end
  50.   #--------------------------------------------------------------------------
  51.   alias tension_system_make_attack_damage_value make_attack_damage_value
  52.   def make_attack_damage_value(attacker)
  53.     tension_system_make_attack_damage_value(attacker)

  54.     make_tension_damage_effect(attacker)
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   alias tension_system_make_obj_damage_value make_obj_damage_value
  58.   def make_obj_damage_value(user, obj)
  59.     tension_system_make_obj_damage_value(user, obj)

  60.     make_tension_damage_effect(user, obj)
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   def make_tension_damage_effect(user, obj = nil)
  64.     return if obj != nil and (obj.tension_up? or obj.tension_down?)
  65.     case user.tension
  66.       when 1; damage_rate = 170
  67.       when 2; damage_rate = 300
  68.       when 3; damage_rate = 500
  69.       when 4; damage_rate = 750
  70.       else  ; return
  71.     end
  72.     @hp_damage = @hp_damage * damage_rate / 100
  73.     @mp_damage = @mp_damage * damage_rate / 100
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   alias tension_system_skill_effect skill_effect
  77.   def skill_effect(user, skill)
  78.     original_element_set = nil
  79.     if user.tension > 0
  80.       original_element_set = skill.element_set.clone
  81.       skill.element_set += [TENSION::ELEMENT_ID]
  82.     end

  83.     tension_system_skill_effect(user, skill)

  84.     skill.element_set = original_element_set if original_element_set != nil
  85.     tension_up_effect(user, skill)   if skill.tension_up?
  86.     tension_down_effect(user, skill) if skill.tension_down?
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   alias tension_system_item_effect item_effect
  90.   def item_effect(user, item)
  91.     original_element_set = nil
  92.     if user.tension > 0
  93.       original_element_set = item.element_set.clone
  94.       skill.element_set += [TENSION::ELEMENT_ID]
  95.     end

  96.     tension_system_item_effect(user, item)

  97.     item.element_set = original_element_set if original_element_set != nil
  98.     tension_up_effect(user, item)   if item.tension_up?
  99.     tension_down_effect(user, item) if item.tension_down?
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   def tension_up_effect(user, obj)
  103.     unless @tension < 4
  104.       @missed = true
  105.       return
  106.     end
  107.     @tension += 1; @missed = false
  108.     @super_high_tension = true if @tension == 4
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   def tension_down_effect(user, obj)
  112.     if @tension == 0
  113.       @missed = true
  114.       return
  115.     end
  116.     obj.tension_clear? ?  @tension = 0 : @tension -= 1
  117.     @missed = false
  118.   end
  119. end

  120. class Game_Actor < Game_Battler
  121.   alias tension_system_element_set element_set
  122.   def element_set
  123.     return tension_system_element_set + [TENSION::ELEMENT_ID] if @tension != 0
  124.     return tension_system_element_set
  125.   end
  126. end

  127. class Game_Enemy < Game_Battler
  128.   def element_set
  129.     return super + [TENSION::ELEMENT_ID] if @tension != 0
  130.     return super
  131.   end
  132. end

  133. class Scene_Battle < Scene_Base
  134.   alias tension_system_battle_end battle_end
  135.   def battle_end(result)
  136.     $game_party.members.each{|member| member.tension = 0 }

  137.     tension_system_battle_end(result)
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   alias tension_system_execute_action_attack execute_action_attack
  141.   def execute_action_attack
  142.     last_tension = @active_battler.tension

  143.     tension_system_execute_action_attack

  144.     if last_tension != 0
  145.       @active_battler.tension = 0
  146.       @message_window.clear
  147.       text = sprintf(TENSION::TENSON_DOWN, @active_battler.name)
  148.       @message_window.add_instant_text(text); wait(30)
  149.     end
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   alias tension_system_execute_action_skill execute_action_skill
  153.   def execute_action_skill
  154.     last_tension = @active_battler.tension

  155.     tension_system_execute_action_skill

  156.     if last_tension != 0
  157.       return if @active_battler.action.skill.base_damage == 0
  158.       @active_battler.tension = 0
  159.       @message_window.clear
  160.       text = sprintf(TENSION::TENSON_DOWN, @active_battler.name)
  161.       @message_window.add_instant_text(text); wait(30)
  162.     end
  163.   end
  164.   #--------------------------------------------------------------------------
  165.   alias tension_system_execute_action_item execute_action_item
  166.   def execute_action_item
  167.     last_tension = @active_battler.tension

  168.     tension_system_execute_action_item

  169.     if last_tension != 0
  170.       return if @active_battler.action.item.base_damage != 0
  171.       @active_battler.tension = 0
  172.       @message_window.clear
  173.       text = sprintf(TENSION::TENSON_DOWN, @active_battler.name)
  174.       @message_window.add_instant_text(text); wait(30)
  175.     end
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   alias tension_system_display_action_effects display_action_effects
  179.   def display_action_effects(target, obj = nil)
  180.     tension_system_display_action_effects(target, obj)

  181.     display_tension_changes(target, obj)
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   alias tension_system_display_hp_damage display_hp_damage
  185.   def display_hp_damage(target, obj = nil)
  186.     return if target.hp_damage == 0 and
  187.               obj != nil and (obj.tension_up? or obj.tension_down?)

  188.     tension_system_display_hp_damage(target, obj)
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   alias tension_system_display_failure display_failure
  192.   def display_failure(target, obj)
  193.     return if obj != nil and (obj.tension_up? or obj.tension_down?)

  194.     tension_system_display_failure(target, obj)
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   def display_tension_changes(target, obj)
  198.     return if obj == nil
  199.     return unless (obj.tension_up? or obj.tension_down?)
  200.     @message_window.clear
  201.     if target.super_high_tension
  202.       format = TENSION::OVER_TENSION
  203.       text = sprintf(format, target.name)
  204.     elsif target.tension == 0
  205.       format = TENSION::TENSON_DOWN
  206.       text = sprintf(format, target.name)
  207.     else
  208.       format = TENSION::MESSAGE_FORMAT
  209.       text = sprintf(format, target.name, target.tension_value)
  210.     end
  211.     @message_window.add_instant_text(text); wait(30)
  212.   end
  213. end
复制代码
新手们!不要被看扁了!我们也会用论坛搜索,我们也会自己找脚本,我们也会自己点击关闭按钮旁边的小问号!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-30 05:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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