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

Project1

 找回密码
 注册会员
搜索
楼主: 吸血鬼王族
打印 上一主题 下一主题

[已经解决] 如何制作效果扩散状态?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
45 小时
注册时间
2006-8-23
帖子
303
11
 楼主| 发表于 2009-8-29 23:23:12 | 只看该作者
不太懂,我是说“状态延续”是一招技能,使用了这招技能,现在角色的状态会延续几个回合这样。
比如说敌人“虚弱”了,按常理来说,过4个回合自动解除,而当他过了3个回合后,本该下一回合解除的,而我对他施放“状态延续”,他的“虚弱”状态要过多几个回合才能解除。
而以上脚本要放到哪里?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1535
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

12
发表于 2009-8-30 00:04:25 | 只看该作者
  1. class Game_Battler
  2.   TURN_PLUS = [3,5]  #——添加的范围,如果不随机,则将输入两个相同的数字。
  3.   PLUS_SKILL = [1,2] #——状态延续的技能编号
  4.   alias lv12_initialize initialize
  5.   def initialize
  6.     @states_plus_turn = {}
  7.     lv12_initialize
  8.   end
  9.   alias lv12_skill_effect skill_effect
  10.   def skill_effect(user, skill)
  11.     @jionglansan = true if PLUS_SKILL.include?(skill.id)
  12.     lv12_skill_effect(user, skill)
  13.     @jionglansan = false
  14.   end
  15.   alias lv12_add_state add_state
  16.   def add_state(state_id, force = false)
  17.     if @jionglansan
  18.       i = state_id
  19.       @states_plus_turn[i] = -$data_states[i].hold_turn if @states_plus_turn[i]== nil
  20.       @states_plus_turn[i] =  (rand(TURN_PLUS[1]-TURN_PLUS[0])+TURN_PLUS[0]) + @states_plus_turn[i]
  21.     end
  22.     b = @states_turn.clone
  23.     c = {}
  24.     for i in @states_turn.keys
  25.       if states_plus_turn(i) != 0
  26.         c[i] = true
  27.       end
  28.     end
  29.     a = lv12_add_state(state_id,force)
  30.     for i in @states_plus_turn.keys
  31.       @states_turn[i] = b[i] if c[i] == true
  32.     end
  33.     return a
  34.   end
  35.   alias lv12_states_minus states_minus
  36.   def states_minus(minus_state_set)
  37.     for i in minus_state_set
  38.       @states_plus_turn[i] = nil
  39.     end
  40.     return lv12_states_minus(minus_state_set)
  41.   end
  42.   def state_full?(state_id)
  43.     unless self.state?(state_id)
  44.       return false
  45.     end
  46.     if @states_turn[state_id] == -1
  47.       return true
  48.     end
  49.     return @states_turn[state_id] + states_plus_turn(state_id) == $data_states[state_id].hold_turn
  50.   end
  51.   def states_plus_turn(id)
  52.     @states_plus_turn[id] = 0 if @states_plus_turn[id] == nil or @states_plus_turn[id] < 0
  53.     if @states_plus_turn[id] == nil
  54.     return 0
  55.     else
  56.     return @states_plus_turn[id]
  57.     end
  58.   end
  59.   def remove_states_auto
  60.     for i in @states_turn.keys.clone
  61.       if @states_turn[i]+states_plus_turn(i) > 0
  62.         if states_plus_turn(i) > 0
  63.           @states_plus_turn[i] = states_plus_turn(i) - 1
  64.           return
  65.         end
  66.         @states_turn[i] -= 1
  67.       elsif rand(100) < $data_states[i].auto_release_prob
  68.         remove_state(i)
  69.       end
  70.     end
  71.   end
  72. end
复制代码
这个脚本直接插到Main前就可以了~这个是更新的,符合要求了~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
45 小时
注册时间
2006-8-23
帖子
303
13
 楼主| 发表于 2009-8-30 01:49:06 | 只看该作者
不行啊。这个MS只能使某个技能附加的状态延续多几个回合而已。
是我不懂的用这个脚本,还是说我还没说清楚。
我的意思是:想制造一招“状态延续”的技能。
目的是,我先制造一招“中毒”的技能,能使别人中毒,但是这招使别人中毒只能维持一个回合就消失效果了。
但是,我可以先将别人中毒,然后再给他放一招“状态延续”,这时,他中毒就可以维持多几个回合。
“中毒”的效果是使敌人附加中毒的状态,而“状态延续”是使得他现在的状态一直维持几个回合。两招是分开的,“状态延续”并不能附加任何状态。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1535
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

14
发表于 2009-8-30 14:29:04 | 只看该作者
本帖最后由 「旅」 于 2009-8-30 14:47 编辑
  1. class Game_Battler
  2.   TURN_PLUS = {1=>[1,5]}#——①:技能编号、②③:提高随机数范围。
  3.   alias lv12_initialize initialize
  4.   def initialize
  5.     @states_plus_turn = {}
  6.     lv12_initialize
  7.   end
  8.   alias lv12_skill_effect skill_effect
  9.   def skill_effect(user, skill)
  10.     if TURN_PLUS.keys.include?(skill.id)
  11.     for i in @states
  12.       z = TURN_PLUS[skill.id]
  13.       @states_plus_turn =  (rand(z[1]-z[0])+z[0]) + @states_plus_turn
  14.     end
  15.     end
  16.     lv12_skill_effect(user, skill)
  17.   end
  18.   alias lv12_add_state add_state
  19.   def add_state(state_id, force = false)
  20.     b = @states_turn.clone
  21.     c = {}
  22.     for i in @states_turn.keys
  23.       if states_plus_turn(i) != 0
  24.         c = true
  25.       end
  26.     end
  27.     a = lv12_add_state(state_id,force)
  28.     for i in @states_plus_turn.keys
  29.       @states_turn = b if c == true
  30.     end
  31.     return a
  32.   end
  33.   alias lv12_states_minus states_minus
  34.   def states_minus(minus_state_set)
  35.     for i in minus_state_set
  36.       @states_plus_turn = nil
  37.     end
  38.     return lv12_states_minus(minus_state_set)
  39.   end
  40.   def state_full?(state_id)
  41.     unless self.state?(state_id)
  42.       return false
  43.     end
  44.     if @states_turn[state_id] == -1
  45.       return true
  46.     end
  47.     return @states_turn[state_id] + states_plus_turn(state_id) == $data_states[state_id].hold_turn
  48.   end
  49.   def states_plus_turn(id)
  50.     @states_plus_turn[id] = 0 if @states_plus_turn[id] == nil or @states_plus_turn[id] < 0
  51.     if @states_plus_turn[id] == nil
  52.     return 0
  53.     else
  54.     return @states_plus_turn[id]
  55.     end
  56.   end
  57.   def remove_states_auto
  58.     for i in @states_turn.keys.clone
  59.       if @states_turn+states_plus_turn(i) > 0
  60.         if states_plus_turn(i) > 0
  61.           @states_plus_turn = states_plus_turn(i) - 1
  62.           return
  63.         end
  64.         @states_turn -= 1
  65.       elsif rand(100) < $data_states.auto_release_prob
  66.         remove_state(i)
  67.       end
  68.     end
  69.   end
  70. end
复制代码
12楼的那个写的太匆忙所以有点错误……这次应该可以了~~~
回复 支持 反对

使用道具 举报

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1535
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

15
发表于 2009-8-30 17:02:45 | 只看该作者
  1. class Scene_Battle
  2.   All_全体攻击状态 = [1,2,3]
  3.   All_是否连自己也打 = true #正确——true、错误——false
  4.   def make_basic_action_result
  5.     if @active_battler.current_action.basic == 0
  6.       @animation1_id = @active_battler.animation1_id
  7.       @animation2_id = @active_battler.animation2_id
  8.       if @active_battler.is_a?(Game_Enemy)
  9.         if @active_battler.restriction == 3
  10.           target = $game_troop.random_target_enemy
  11.         elsif @active_battler.restriction == 2
  12.           target = $game_party.random_target_actor
  13.         else
  14.           index = @active_battler.current_action.target_index
  15.           target = $game_party.smooth_target_actor(index)
  16.         end
  17.       end
  18.       if @active_battler.is_a?(Game_Actor)
  19.         if @active_battler.restriction == 3
  20.           target = $game_party.random_target_actor
  21.         elsif @active_battler.restriction == 2
  22.           target = $game_troop.random_target_enemy
  23.         else
  24.           index = @active_battler.current_action.target_index
  25.           target = $game_troop.smooth_target_enemy(index)
  26.         end
  27.       end
  28.       @target_battlers = [target]
  29.       push_all
  30.       for target in @target_battlers
  31.         target.attack_effect(@active_battler)
  32.       end
  33.       return
  34.     end
  35.     if @active_battler.current_action.basic == 1
  36.       @help_window.set_text($data_system.words.guard, 1)
  37.       return
  38.     end
  39.     if @active_battler.is_a?(Game_Enemy) and
  40.        @active_battler.current_action.basic == 2
  41.       @help_window.set_text("逃跑", 1)
  42.       @active_battler.escape
  43.       return
  44.     end
  45.     if @active_battler.current_action.basic == 3
  46.       $game_temp.forcing_battler = nil
  47.       @phase4_step = 1
  48.       return
  49.     end
  50.   end
  51.   def make_skill_action_result
  52.     @skill = $data_skills[@active_battler.current_action.skill_id]
  53.     unless @active_battler.current_action.forcing
  54.       unless @active_battler.skill_can_use?(@skill.id)
  55.         $game_temp.forcing_battler = nil
  56.         @phase4_step = 1
  57.         return
  58.       end
  59.     end
  60.     @active_battler.sp -= @skill.sp_cost
  61.     @status_window.refresh
  62.     @animation1_id = @skill.animation1_id
  63.     @animation2_id = @skill.animation2_id
  64.     @common_event_id = @skill.common_event_id
  65.     set_target_battlers(@skill.scope)
  66.     push_all
  67.     for target in @target_battlers
  68.       target.skill_effect(@active_battler, @skill)
  69.     end
  70.   end
  71.   def push_all
  72.     for i in All_全体攻击状态
  73.       if @active_battler.states.include?(i)
  74.         a = true
  75.         break
  76.       end
  77.     end
  78.     if a
  79.       @target_battlers = []
  80.       for i in $game_party.actors
  81.         if i.exist? and (All_是否连自己也打 or i.id != @active_battler.id)
  82.           @target_battlers.push(i)
  83.         end
  84.       end
  85.       for i in $game_troop.enemies
  86.         if i.exist?
  87.           @target_battlers.push(i)
  88.         end
  89.       end
  90.     end
  91.   end
  92. end
复制代码
二楼的问题也解决了~~~II姐姐抱歉我抢了~~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
45 小时
注册时间
2006-8-23
帖子
303
16
 楼主| 发表于 2009-8-30 18:05:21 | 只看该作者
效果扩散和状态延续一样,也是一个招式来的。

状态延续的脚本,一附加状态就出错了。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
17
发表于 2009-8-30 18:21:45 | 只看该作者
实际上写脚本的也不要太迷信LZ说的,记得有一次
别人帮我写一个判断
我说如果A成立,那就执行A
B成立,那就执行B
他问那AB都成立呢?我说AB都执行
都不成立能?我说都不执行。
然后他写出来了4个条件判断……
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
18
发表于 2009-8-30 18:27:13 | 只看该作者
旅~ 辛苦了~ 捏捏~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
19
发表于 2009-8-30 18:47:12 | 只看该作者
这两条脚本值得发到主站上。

游客,本帖隐藏的内容需要积分高于 80 才可浏览,您当前积分为 0
我爱66RPG,但我讨厌66.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
45 小时
注册时间
2006-8-23
帖子
303
20
 楼主| 发表于 2009-8-31 14:03:32 | 只看该作者
楼上为何隐藏内容?说要积分80才可浏览
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 03:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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