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

Project1

 找回密码
 注册会员
搜索
查看: 2714|回复: 8

[已经解决] 如何做一个延时的伤害(回合制战斗)【已解决】

[复制链接]

Lv1.梦旅人

梦石
0
星屑
177
在线时间
9 小时
注册时间
2018-7-30
帖子
13
发表于 2018-10-4 00:47:10 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 bleach165 于 2018-10-4 11:47 编辑

如何用状态去做一个延时的伤害,比如几回合后造成伤害
要用到公共事件么,或者说用状态能不能触发技能效果

Lv4.逐梦者

梦石
1
星屑
14503
在线时间
2086 小时
注册时间
2017-9-28
帖子
662
发表于 2018-10-4 10:14:53 | 显示全部楼层
  1. #==============================================================================
  2. # 延时施放技能的状态
  3. # Version 1.1
  4. # By Szyu
  5. #
  6. # 介绍:
  7. # 可以创建一个延时施放技能的状态
  8. # 例如,一个定时炸弹的技能,对敌方附加“被安置炸弹”的状态,三回合后敌人会自动
  9. # 受到“爆破”技能的伤害。
  10. #
  11. # 安装方法:
  12. # - 放在"插件脚本"之下,"Main"之上.
  13. #
  14. # 使用方法:
  15. # - <延时技能: 技能id>
  16. # - <延时技能: 技能id1, 技能id2, ..., 技能idn>
  17. #  在状态备注中填入以上内容,则状态解除时将会依次触发所有技能
  18. #
  19. # 例子:
  20. #  <延时技能: 10, 50>
  21. #
  22. #
  23. # 需要:
  24. # - RPG Maker VX Ace
  25. #
  26. # 使用条款:
  27. # - 免费用于商业或非商业游戏.请署名我在制作名单中以支持我的作品。
  28. #
  29. # Pastebin:
  30. # http://pastebin.com/ye790Zsy
  31. #
  32. #
  33. #==============================================================
  34. #   * Game_Battler
  35. #==============================================================
  36. class Game_Battler < Game_BattlerBase
  37.   
  38.   alias sz_update_timed_states update_state_turns
  39.   def update_state_turns
  40.     sz_update_timed_states
  41.     update_timed_states
  42.   end
  43.   
  44.   def update_timed_states
  45.     states.each do |state|
  46.       if state.timed && @state_turns[state.id] == 0
  47.         state.triggered_skills.each do |s|
  48.           BattleManager.triggering_timed_states.push(RPG::EventCommand.new(339, 0, get_ts_params(s)))
  49.         end
  50.       end
  51.     end
  52.   end
  53.   
  54.   def get_ts_params(skill)
  55.     if self.is_a?(Game_Enemy)
  56.       return [0, self.index, skill, self.index]
  57.     elsif self.is_a?(Game_Actor)
  58.       return [1, self.character_index + 1, skill, self.index]
  59.     else
  60.       return [0, 0, 0, 0]
  61.     end
  62.   end
  63. end

  64. #==============================================================
  65. #   * BattleManager
  66. #==============================================================
  67. module BattleManager
  68.   class << self
  69.     attr_accessor :triggering_timed_states
  70.     alias sz_ts_setup setup
  71.     alias sz_ts_turn_end turn_end
  72.   end
  73.   
  74.   def self.setup(troop_id, can_escape = true, can_lose = false)
  75.     sz_ts_setup(troop_id, can_escape, can_lose)
  76.     @triggering_timed_states = []
  77.   end
  78.   
  79.   def self.turn_end
  80.     sz_ts_turn_end
  81.     if @triggering_timed_states.size > 0
  82.       $game_troop.interpreter.setup(@triggering_timed_states.clone)
  83.       @triggering_timed_states.clear
  84.     end
  85.   end
  86. end


  87. #==============================================================
  88. #   * Initialize BaseItems
  89. #==============================================================
  90. module DataManager
  91.   class << self
  92.     alias load_db_timer_notes load_database
  93.   end
  94.   
  95.   def self.load_database
  96.     load_db_timer_notes
  97.     load_sz_timer_items
  98.   end
  99.   
  100.   def self.load_sz_timer_items
  101.     groups = [$data_states]
  102.     for group in groups
  103.       for obj in group
  104.         next if obj.nil?
  105.         obj.load_sz_state_timer
  106.       end
  107.     end
  108.   end
  109. end

  110. #==============================================================
  111. #   * Notes
  112. #==============================================================
  113. class RPG::State < RPG::BaseItem
  114.   attr_accessor :timed
  115.   attr_accessor :triggered_skills
  116.   
  117.   def load_sz_state_timer
  118.     @timed = false
  119.     @triggered_skills = []
  120.    
  121.     self.note.split(/[\r\n]+/).each do |line|
  122.       scan_sz_timer_data(line)
  123.     end
  124.   end
  125.   
  126.   def scan_sz_timer_data(line)
  127.     return unless line =~ /<延时技能:\s*([\d+\s*,?\s*]+)>/i ? true : false
  128.     @timed = true
  129.     skills = $1.scan(/\s*,?\d+,?\s*/i)
  130.     skills.each do |skill|
  131.       @triggered_skills.push(skill.to_i)
  132.     end
  133.   end
  134.   
  135. end
复制代码

评分

参与人数 1星屑 +50 收起 理由
VIPArcher + 50 认可答案

查看全部评分

VA外站脚本汉化群:226308173   |    部分远古文件备份:https://wwzv.lanzoue.com/b02rac5pc  密码:acgm
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
177
在线时间
9 小时
注册时间
2018-7-30
帖子
13
 楼主| 发表于 2018-10-4 10:54:32 | 显示全部楼层
本帖最后由 bleach165 于 2018-10-4 11:11 编辑


谢谢大佬,之前没有用过脚本,这个脚本插件的使用方法可以稍微具体讲一下么?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
177
在线时间
9 小时
注册时间
2018-7-30
帖子
13
 楼主| 发表于 2018-10-4 11:35:46 | 显示全部楼层
本帖最后由 bleach165 于 2018-10-4 11:41 编辑

我把它复制到脚本里打不开游戏了,提示报错
Script °延时爆炸' line 26: SyntaxError occurred.
unexpected keyword. end, expecting Send
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4575
在线时间
457 小时
注册时间
2017-5-30
帖子
35
发表于 2018-10-6 20:17:18 | 显示全部楼层

大佬这个jio本设置的状态被驱散解除的时候能不能也触发伤害啊……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2323
在线时间
274 小时
注册时间
2017-7-25
帖子
163
发表于 2018-10-8 15:16:11 | 显示全部楼层
  1. class Game_Battler < Game_BattlerBase
  2.   def remove_state(state_id)
  3.     if state?(state_id)

  4.       if state_id == 800     #状态id
  5.         @hp -= 500            #受到伤害,也可以是MP等属性
  6.         self.add_state(3)     #附加状态
  7.       end
  8.                                       #仿造这一小段的内容可写多个
  9.       revive if state_id == death_state_id
  10.       erase_state(state_id)
  11.       refresh
  12.       @result.removed_states.push(state_id).uniq!
  13.     end
  14.   end
  15. end
复制代码

这里有个儿童版,状态结束时受到伤害/附加状态
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-18 15:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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