Project1

标题: 求指定角色战斗不能后直接游戏结束脚本 [打印本页]

作者: 空の翼    时间: 2013-1-10 20:48
标题: 求指定角色战斗不能后直接游戏结束脚本
本帖最后由 空の翼 于 2013-1-11 13:22 编辑

想过个护送任务之类的
求个能指定某些角色,一旦有了战斗不能状态后,就直接游戏结束的脚本

P.S.在好多日站找了也看不到想要的,可能是这种脚本很简单吧,
      但是本人脚本小白啊{:2_271:}
作者: BellumMagicae    时间: 2013-1-10 20:57
...这用公共事件应该可以做到吧...
作者: 空の翼    时间: 2013-1-10 20:59
BellumMagicae 发表于 2013-1-10 20:57
...这用公共事件应该可以做到吧...

你要人一场场战斗还有各种战斗外的伤害都要设置一次吗{:2_271:}
作者: Sion    时间: 2013-1-10 21:10
  1. module BattleManager
  2.   
  3.   #--------------------------------------------------------------------------
  4.   # ● 判定胜败
  5.   #--------------------------------------------------------------------------
  6.   def self.judge_win_loss
  7.     if @phase
  8.       return process_defeat  if $game_actors[VIPid].state?(1)
  9.       return process_abort   if $game_party.members.empty?
  10.       return process_defeat  if $game_party.all_dead?
  11.       return process_victory if $game_troop.all_dead?
  12.       return process_abort   if aborting?
  13.     end
  14.     return false
  15.   end
  16.   
  17. end
复制代码
插入main前使用,里面的VIPid设置成你需要的角色ID,就是数据库里面角色的序号。
作者: Sion    时间: 2013-1-10 21:17
本帖最后由 Sion 于 2013-1-10 21:19 编辑

复数的话这样吧,你可以自己根据语法扩展呀。之前写错了,应该是其中一个挂了就结束吧。改成这样
  1. if $game_actors[1].state?(1) || $game_actors[2].state?(1) || $game_actors[3].state?(1)
复制代码

作者: Sion    时间: 2013-1-10 21:32
噢,真是个危险的游戏,走着走着就挂了- -b。那么就这样吧
  1. module BattleManager

  2.   def self.judge_win_loss
  3.     if @phase
  4.       return process_defeat  if $game_actors[VIPid].state?(1)
  5.       return process_abort   if $game_party.members.empty?
  6.       return process_defeat  if $game_party.all_dead?
  7.       return process_victory if $game_troop.all_dead?
  8.       return process_abort   if aborting?
  9.     end
  10.     return false
  11.   end
  12.   
  13. end

  14. class Scene_Base
  15.   
  16.   def check_gameover
  17.     SceneManager.goto(Scene_Gameover) if $game_party.all_dead? || $game_actors[VIP1id].state?(1) || game_actors[VIP2id].state?(1)
  18.   end
  19.   
  20. end
复制代码

作者: Sion    时间: 2013-1-10 21:39
经过测试我发现有一些问题,稍后我写好以后再把代码发上来。
作者: Sion    时间: 2013-1-10 22:14
本帖最后由 Sion 于 2013-1-29 18:17 编辑

RUBY 代码复制
  1. # Mini_Vip_System by Sion
  2. # 66rpg.com 转载请注明出处
  3. # 说明:在角色备注里加入<vip> 则当vip附加战斗不能状态时Gameover
  4.  
  5.  
  6. module BattleManager
  7.  
  8.   def self.judge_win_loss #覆盖默认方法
  9.     if @phase
  10.       return process_vip_dead  if $game_party.vip_dead?
  11.       return process_abort     if $game_party.members.empty?
  12.       return process_defeat    if $game_party.all_dead?
  13.       return process_victory   if $game_troop.all_dead?
  14.       return process_abort     if aborting?
  15.     end
  16.     return false   
  17.   end
  18.  
  19.   def self.process_vip_dead
  20.     $game_message.add(sprintf("VIP挂了,任务失败……"))
  21.     wait_for_message
  22.     SceneManager.goto(Scene_Gameover)
  23.     battle_end(2)
  24.     return true
  25.   end
  26.  
  27. end
  28.  
  29.  
  30. class Scene_Base
  31.  
  32.   def check_gameover #覆盖默认方法
  33.     SceneManager.goto(Scene_Gameover) if $game_party.all_dead?
  34.     SceneManager.goto(Scene_Gameover) if $game_party.vip_dead?
  35.   end
  36.  
  37. end
  38.  
  39.  
  40. class Game_Party
  41.  
  42.   def vip_dead?
  43.     $game_party.dead_members.each do |actor| actor.is_vip?
  44.       return true if actor.is_vip?
  45.     end
  46.     return false
  47.   end
  48.  
  49. end
  50.  
  51.  
  52. class Game_Actor
  53.  
  54.   def is_vip?
  55.     object = $data_actors[@actor_id]
  56.     object.note.each_line do |line|
  57.       return true if line.include?("<vip>")
  58.     end
  59.     return false
  60.   end
  61.  
  62. end

再次优化了代码,应该算是完成了吧。
作者: 空の翼    时间: 2013-1-10 22:24
Sion 发表于 2013-1-10 22:14

嗯,可以了。
虽然好像和这个脚本冲突了
http://rpg.blue/forum.php?mod=viewthread&tid=220462

但是还是感谢大大XD




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