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

Project1

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

[原创发布] 耗魔减免 发布某脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2008-6-13
帖子
99
跳转到指定楼层
1
发表于 2010-10-6 11:33:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 lxczzzcxl 于 2010-10-6 14:30 编辑

上次有个同志问这个问题
我乱写了一段脚本 MS能用
结果那提问的同志MS去火星打酱油了
于是那帖MS要沉了
可是连帖MS是要扣分的
于是我就把这段东西贴上来
(不算重复发吧………………)

(总觉得模式2 MS有点问题)
  1. $scjm_mode = 1
  2. # 模式 1 乘法计算(1*(1-X)*(1-Y))
  3. # 模式 2 加法计算(1-X-Y)
  4. # 真是够傻瓜化了……

  5. $scjm = {
  6.   17 => 20 ,
  7.   18 => 100 ,
  8.   19 => 200 ,
  9.   20 => 200}
  10. # 17 号状态 20 %减免
  11. # 18 号状态 不耗魔
  12. # 19 20号状态 笑而不语
  13. # 在同时存在19 20号状态时 两种模式的区别就体现出来了。
  14. # ......
  15. $scis = [17, 18, 19, 20]
  16. # 17, 18, 19, 20 号状态带有减免效果
  17. # 别嫌烦! 我是脚本白痴!

  18. #==============================================================================
  19. # ■ Game_Battler 打酱油定义
  20. #------------------------------------------------------------------------------
  21. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  22. # 超级类来使用。
  23. #==============================================================================
  24. class Game_Battler
  25.   def skill_can_use?(skill_id)
  26.     jms = 1.0
  27.     if $scjm_mode = 1
  28.       $scis.each do |scn|
  29.         if state?(scn)
  30.           jms = jms * (100 - $scjm[scn]) / 100
  31.         end
  32.       end
  33.     else
  34.       $scis.each do |scn|
  35.         if state?(scn)
  36.           jms = jms - ($scjm[scn] / 100)
  37.         end
  38.       end  
  39.     end
  40.     # SP 不足的情况下不能使用
  41.     if ($data_skills[skill_id].sp_cost * jms).to_i > self.sp
  42.       return false
  43.     end
  44.     # 战斗不能的情况下不能使用
  45.     if dead?
  46.       return false
  47.     end
  48.     # 沉默状态的情况下、物理特技以外的特技不能使用
  49.     if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
  50.       return false
  51.     end
  52.     # 获取可以使用的时机
  53.     occasion = $data_skills[skill_id].occasion
  54.     # 战斗中的情况下
  55.     if $game_temp.in_battle
  56.       # [平时] 或者是 [战斗中] 可以使用
  57.       return (occasion == 0 or occasion == 1)
  58.     # 不是战斗中的情况下
  59.     else
  60.       # [平时] 或者是 [菜单中] 可以使用
  61.       return (occasion == 0 or occasion == 2)
  62.     end
  63.   end
  64. end

  65. #==============================================================================
  66. # ■ Scene_Battle 打酱油定义
  67. #------------------------------------------------------------------------------
  68. #  处理战斗画面的类。
  69. #==============================================================================

  70. class Scene_Battle
  71.   def make_skill_action_result
  72.     # 获取特技
  73.     @skill = $data_skills[@active_battler.current_action.skill_id]
  74.     # 如果不是强制行动
  75.     unless @active_battler.current_action.forcing
  76.       # 因为 SP 耗尽而无法使用的情况下
  77.       unless @active_battler.skill_can_use?(@skill.id)
  78.         # 清除强制行动对像的战斗者
  79.         $game_temp.forcing_battler = nil
  80.         # 移至步骤 1
  81.         @phase4_step = 1
  82.         return
  83.       end
  84.     end
  85.     jms = 1.0
  86.     if $scjm_mode = 1
  87.       $scis.each do |scn|
  88.         if @active_battler.state?(scn)
  89.           jms = jms * (100 - $scjm[scn]) / 100
  90.         end
  91.       end
  92.     else
  93.       $scis.each do |scn|
  94.         if @active_battler.state?(scn)
  95.           jms = jms - ($scjm[scn] / 100)
  96.         end
  97.       end  
  98.     end
  99.     # 消耗 SP
  100.     @active_battler.sp -= (@skill.sp_cost * jms).to_i
  101.     # 刷新状态窗口
  102.     @status_window.refresh
  103.     # 在帮助窗口显示特技名
  104.     @help_window.set_text(@skill.name, 1)
  105.     # 设置动画 ID
  106.     @animation1_id = @skill.animation1_id
  107.     @animation2_id = @skill.animation2_id
  108.     # 设置公共事件 ID
  109.     @common_event_id = @skill.common_event_id
  110.     # 设置对像侧战斗者
  111.     set_target_battlers(@skill.scope)
  112.     # 应用特技效果
  113.     for target in @target_battlers
  114.       target.skill_effect(@active_battler, @skill)
  115.     end
  116.   end
  117. end

  118. #==============================================================================
  119. # ■ Window_Skill 打酱油定义
  120. #------------------------------------------------------------------------------
  121. #  特技画面、战斗画面、显示可以使用的特技浏览的窗口。
  122. #==============================================================================

  123. class Window_Skill < Window_Selectable
  124.   def draw_item(index)
  125.     skill = @data[index]
  126.     if @actor.skill_can_use?(skill.id)
  127.       self.contents.font.color = normal_color
  128.     else
  129.       self.contents.font.color = disabled_color
  130.     end
  131.     jms = 1.0
  132.     if $scjm_mode = 1
  133.       $scis.each do |scn|
  134.         if @actor.state?(scn)
  135.           jms = jms * (100 - $scjm[scn]) / 100
  136.         end
  137.       end
  138.     else
  139.       $scis.each do |scn|
  140.         if @actor.state?(scn)
  141.           jms = jms - ($scjm[scn] / 100)
  142.         end
  143.       end  
  144.     end
  145.     x = 4 + index % 2 * (288 + 32)
  146.     y = index / 2 * 32
  147.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  148.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  149.     bitmap = RPG::Cache.icon(skill.icon_name)
  150.     opacity = self.contents.font.color == normal_color ? 255 : 128
  151.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  152.     self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
  153.     self.contents.draw_text(x + 232, y, 48, 32, (skill.sp_cost * jms).to_i.to_s, 2)
  154.   end
  155. end

  156. #==============================================================================
  157. # ■ Scene_Skill 打酱油定义
  158. #------------------------------------------------------------------------------
  159. #  处理特技画面的类。
  160. #==============================================================================

  161. class Scene_Skill
  162.   def update_skill
  163.     # 按下 B 键的情况下
  164.     if Input.trigger?(Input::B)
  165.       # 演奏取消 SE
  166.       $game_system.se_play($data_system.cancel_se)
  167.       # 切换到菜单画面
  168.       $scene = Scene_Menu.new(1)
  169.       return
  170.     end
  171.     # 按下 C 键的情况下
  172.     if Input.trigger?(Input::C)
  173.       # 获取特技窗口现在选择的特技的数据
  174.       @skill = @skill_window.skill
  175.       # 不能使用的情况下
  176.       if @skill == nil or not @actor.skill_can_use?(@skill.id)
  177.         # 演奏冻结 SE
  178.         $game_system.se_play($data_system.buzzer_se)
  179.         return
  180.       end
  181.       # 演奏确定 SE
  182.       $game_system.se_play($data_system.decision_se)
  183.       # 效果范围是我方的情况下
  184.       if @skill.scope >= 3
  185.         # 激活目标窗口
  186.         @skill_window.active = false
  187.         @target_window.x = (@skill_window.index + 1) % 2 * 304
  188.         @target_window.visible = true
  189.         @target_window.active = true
  190.         # 设置效果范围 (单体/全体) 的对应光标位置
  191.         if @skill.scope == 4 || @skill.scope == 6
  192.           @target_window.index = -1
  193.         elsif @skill.scope == 7
  194.           @target_window.index = @actor_index - 10
  195.         else
  196.           @target_window.index = 0
  197.         end
  198.       # 效果在我方以外的情况下
  199.       else
  200.         # 公共事件 ID 有效的情况下
  201.         if @skill.common_event_id > 0
  202.           # 预约调用公共事件
  203.           $game_temp.common_event_id = @skill.common_event_id
  204.           # 演奏特技使用时的 SE
  205.           $game_system.se_play(@skill.menu_se)
  206.           # 消耗 SP
  207.           jms = 1.0
  208.           if $scjm_mode = 1
  209.             $scis.each do |scn|
  210.               if @actor.state?(scn)
  211.                 jms = jms * (100 - $scjm[scn]) / 100
  212.               end
  213.             end
  214.           else
  215.             $scis.each do |scn|
  216.               if @actor.state?(scn)
  217.                 jms = jms - ($scjm[scn] / 100)
  218.               end
  219.             end  
  220.           end         
  221.           @actor.sp -= (@skill.sp_cost * jms).to_i
  222.           # 再生成各窗口的内容
  223.           @status_window.refresh
  224.           @skill_window.refresh
  225.           @target_window.refresh
  226.           # 切换到地图画面
  227.           $scene = Scene_Map.new
  228.           return
  229.         end
  230.       end
  231.       return
  232.     end
  233.     # 按下 R 键的情况下
  234.     if Input.trigger?(Input::R)
  235.       # 演奏光标 SE
  236.       $game_system.se_play($data_system.cursor_se)
  237.       # 移至下一位角色
  238.       @actor_index += 1
  239.       @actor_index %= $game_party.actors.size
  240.       # 切换到别的特技画面
  241.       $scene = Scene_Skill.new(@actor_index)
  242.       return
  243.     end
  244.     # 按下 L 键的情况下
  245.     if Input.trigger?(Input::L)
  246.       # 演奏光标 SE
  247.       $game_system.se_play($data_system.cursor_se)
  248.       # 移至上一位角色
  249.       @actor_index += $game_party.actors.size - 1
  250.       @actor_index %= $game_party.actors.size
  251.       # 切换到别的特技画面
  252.       $scene = Scene_Skill.new(@actor_index)
  253.       return
  254.     end
  255.   end
  256.   def update_target
  257.     # 按下 B 键的情况下
  258.     if Input.trigger?(Input::B)
  259.       # 演奏取消 SE
  260.       $game_system.se_play($data_system.cancel_se)
  261.       # 删除目标窗口
  262.       @skill_window.active = true
  263.       @target_window.visible = false
  264.       @target_window.active = false
  265.       return
  266.     end
  267.     # 按下 C 键的情况下
  268.     if Input.trigger?(Input::C)
  269.       # 因为 SP 不足而无法使用的情况下
  270.       unless @actor.skill_can_use?(@skill.id)
  271.         # 演奏冻结 SE
  272.         $game_system.se_play($data_system.buzzer_se)
  273.         return
  274.       end
  275.       # 目标是全体的情况下
  276.       if @target_window.index == -1
  277.         # 对同伴全体应用特技使用效果
  278.         used = false
  279.         for i in $game_party.actors
  280.           used |= i.skill_effect(@actor, @skill)
  281.         end
  282.       end
  283.       # 目标是使用者的情况下
  284.       if @target_window.index <= -2
  285.         # 对目标角色应用特技的使用效果
  286.         target = $game_party.actors[@target_window.index + 10]
  287.         used = target.skill_effect(@actor, @skill)
  288.       end
  289.       # 目标是单体的情况下
  290.       if @target_window.index >= 0
  291.         # 对目标角色应用特技的使用效果
  292.         target = $game_party.actors[@target_window.index]
  293.         used = target.skill_effect(@actor, @skill)
  294.       end
  295.       # 使用特技的情况下
  296.       if used
  297.         # 演奏特技使用时的 SE
  298.         $game_system.se_play(@skill.menu_se)
  299.         # 消耗 SP
  300.         jms = 1.0
  301.         if $scjm_mode = 1
  302.           $scis.each do |scn|
  303.             if @actor.state?(scn)
  304.               jms = jms * (100 - $scjm[scn]) / 100
  305.             end
  306.           end
  307.         else
  308.           $scis.each do |scn|
  309.             if @actor.state?(scn)
  310.               jms = jms - ($scjm[scn] / 100)
  311.             end
  312.           end  
  313.         end                  
  314.         @actor.sp -= (@skill.sp_cost * jms).to_i
  315.         # 再生成各窗口内容
  316.         @status_window.refresh
  317.         @skill_window.refresh
  318.         @target_window.refresh
  319.         # 全灭的情况下
  320.         if $game_party.all_dead?
  321.           # 切换到游戏结束画面
  322.           $scene = Scene_Gameover.new
  323.           return
  324.         end
  325.         # 公共事件 ID 有效的情况下
  326.         if @skill.common_event_id > 0
  327.           # 预约调用公共事件
  328.           $game_temp.common_event_id = @skill.common_event_id
  329.           # 切换到地图画面
  330.           $scene = Scene_Map.new
  331.           return
  332.         end
  333.       end
  334.       # 无法使用特技的情况下
  335.       unless used
  336.         # 演奏冻结 SE
  337.         $game_system.se_play($data_system.buzzer_se)
  338.       end
  339.       return
  340.     end
  341.   end  
  342. end
复制代码
美工是什么?我没听说过。
音乐是什么?我没听说过。
动画设计是什么?我没听说过。
地图修饰是什么?我没听说过。
横版战斗是什么?我没听说过。
属性平衡是什么?我没听说过。
我所做的只是用我这整天只考及格的语文水平写剧本而已。

Lv1.梦旅人

水土火风重逢处

梦石
0
星屑
229
在线时间
691 小时
注册时间
2010-7-17
帖子
3042
2
发表于 2010-10-6 11:36:42 | 只看该作者
连贴是三小时连续回帖才算

点评

………………我认为同志们可能更愿意看现成的而不是提问的回答呵呵  发表于 2010-10-6 11:38
独坐望城,望断天涯
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6645
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

3
发表于 2010-10-6 17:30:33 | 只看该作者
可以确定冲突无比的大= =

点评

原和新搞的我头疼。  发表于 2010-10-7 11:46
alias 原 新?  发表于 2010-10-7 11:24
可以去查查F1.给别人写脚本的时候经常会用到.(这句是接着下面那个点评没完全显示出来的.)  发表于 2010-10-6 21:10
你所写的都是重定义.自己给自己写脚本的话那就没啥了.但是给别人写的话.就不知道别人已经用了什么脚本和以后要用什么脚本.这样直接重定义.就意味着要让别人的脚本来兼容你的脚本.如果你还不会alias的用法的话.可以去   发表于 2010-10-6 21:08
数字显示伤害……技能图鉴……还有啥?  发表于 2010-10-6 20:04











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

尽头

梦石
0
星屑
119
在线时间
278 小时
注册时间
2010-6-20
帖子
1280
4
发表于 2010-10-6 17:33:33 | 只看该作者
我想知道MS是何物...

点评

貌似是“貌似”吧 拼音头一位  发表于 2010-10-6 21:55
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
87
在线时间
303 小时
注册时间
2006-7-12
帖子
958
5
发表于 2010-10-6 23:42:27 | 只看该作者
本帖最后由 嫁衣 于 2010-10-6 23:44 编辑

挺好的,不过直接在原装的基础上修改一下就好啦~支持地水一下
回复 支持 反对

使用道具 举报

Lv1.梦旅人

剑仙·影羽

梦石
0
星屑
172
在线时间
224 小时
注册时间
2010-3-20
帖子
1580
6
发表于 2010-10-7 09:38:36 | 只看该作者
看来LZ脚本比我牛 也就那么点

——至今为止,谁也没能分析出他们为什么会因为说了这些话而死。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-14 04:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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