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

Project1

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

战棋的冷却

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-17
帖子
115
跳转到指定楼层
1
发表于 2008-9-7 02:23:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-8-3
帖子
976
2
发表于 2008-9-7 03:09:27 | 只看该作者
刚试了一下,用叶子发明的状态法也适用于这个战棋系统

具体做法:
把 ▼ Materials中的Game_Battler 拷贝到所有其他块下面、MAIN上面(以防止改错,所以拷贝出来再改!)
在1438行(佩服下脚本作者,能写这么长= =)开始有个* Determine Usable Skills部分,(中文版的话就是  判断技能是否可用)里面加入判断语句就可以。

比如:你要使ID为100的技能冷却3回合,就在数据库新建一个3回合的状态,ID比如是120,
然后ID=100的技能要设置触发这个ID=120状态,
然后在判断技能是否可用的函数skill_can_use?(skill)里加入
    return false if ( skill.id == 100 and self.state?(120) )

像这样:

  1.   #--------------------------------------------------------------------------
  2.   # * Determine Usable Skills
  3.   #     skill : skill
  4.   #--------------------------------------------------------------------------
  5.   def skill_can_use?(skill)
  6.     return false unless skill.is_a?(RPG::Skill)
  7.     return false unless movable?

  8.     return false if ( skill.id == 100 and self.state?(120) ) #冷却语句

  9.     return false if silent? and skill.spi_f > 0
  10.     return false if calc_mp_cost(skill) > mp
  11.     if $game_temp.in_battle
  12.       sum = GTBS::is_summon?(skill.id)
  13.       if sum > 0
  14.         name = $game_actors[sum].name.to_s
  15.         is = false
  16.         for bat in $game_system.tactics_actors + $game_system.tactics_enemies + $game_system.tactics_neutral
  17.           if bat.name.to_s == name
  18.             is = true
  19.           end
  20.         end
  21.         return false if is
  22.       end
  23.       return skill.battle_ok?
  24.     else
  25.       return skill.menu_ok?
  26.     end
  27.   end
复制代码

回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-17
帖子
115
3
 楼主| 发表于 2008-9-8 07:04:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-8-3
帖子
976
4
发表于 2008-9-8 19:01:49 | 只看该作者
以下引用月狂神于2008-9-7 23:04:59的发言:

3回合的状态?```怎么搞?````
是不是在状态里搞一个状态``限制选什么(无)?选项选(不能抵抗)?解除条件3回合后100%解除?

我是不是要把你这段脚本覆盖去原来的那段就可以了?````100=技能```120=3回合的状态?
如果我想搞多个技能````编号是101```是不是再加多一句
return false if ( skill.id == 101 and self.state?(120) )  
就可以了?````


要3回合只要状态解除条件3回合后100%解除,还有不能抵抗,其他无任何效果(除非你想人物用完了技能有什么不能行动等副作用也可以啊)

上面忘了说了如果是仅对自身使用的技能,可以直接触发冷却状态的
如果要对别人用这个技能,请在技能里设置触发公共事件,给使用者加上这个冷却状态
可以参考叶子的原贴,是XP的不过思路一样,语法稍微有点不一样
http://rpg.blue/web/htm/news403.htm


你把原来脚本备份一下,然后改只要在正确位置插入判断语句就可以了
技能编号100和状态编号120都是举例,只要和自己设在数据库里的编号一致就行
如果想搞多个技能````编号是101```加多一句
return false if ( skill.id == 101 and self.state?(120) )  
就是101的技能也是冷却3回合,而且用了101后,连100技能也一起在冷却中了
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-17
帖子
115
5
 楼主| 发表于 2008-9-9 02:56:27 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-8-3
帖子
976
6
发表于 2008-9-9 05:07:28 | 只看该作者
这个没办法帮你一次搞定,你每多设一个冷却技能就要自己多写一行,
引用雪姐的话就是,不要做SSD!

我当初刚玩RM的时候就是把这个XP的脚本搬到VX里自己试着改了下通过了!
http://rpg.blue/viewthread.php?t ... D9%2D8+21%3A06%3A13

战棋模式下我实验过了,没问题!

A和B分开就比如下面的,自己改做记号的地方
  1. #--------------------------------------------------------------------------
  2.   # * Determine Usable Skills
  3.   #     skill : skill
  4.   #--------------------------------------------------------------------------
  5.   def skill_can_use?(skill)
  6.     return false unless skill.is_a?(RPG::Skill)
  7.     return false unless movable?
  8. #===================================在这下面自己修改!=========================
  9. # 比如技能A ID为100,技能B ID为101,
  10. # 数据库中A设公共事件触发冷却状态120,B设公共事件触发冷却状态111,
  11.     return false if ( skill.id == 100 and self.state?(120) )
  12.     return false if ( skill.id == 101 and self.state?(111) )
  13. #如果再多做一个技能C ID为120,触发冷却状态133,就是
  14.     return false if ( skill.id == 120 and self.state?(133) )
  15. #这样说总该懂了吧?
  16. #===================================在这上面自己修改!=========================
  17.     return false if silent? and skill.spi_f > 0
  18.     return false if calc_mp_cost(skill) > mp
  19.     if $game_temp.in_battle
  20.       sum = GTBS::is_summon?(skill.id)
  21.       if sum > 0
  22.         name = $game_actors[sum].name.to_s
  23.         is = false
  24.         for bat in $game_system.tactics_actors + $game_system.tactics_enemies + $game_system.tactics_neutral
  25.           if bat.name.to_s == name
  26.             is = true
  27.           end
  28.         end
  29.         return false if is
  30.       end
  31.       return skill.battle_ok?
  32.     else
  33.       return skill.menu_ok?
  34.     end
  35.   end
复制代码

系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-17
帖子
115
7
 楼主| 发表于 2008-9-9 05:47:58 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-8-3
帖子
976
8
发表于 2008-9-9 06:48:51 | 只看该作者
以下引用月狂神于2008-9-8 21:47:58的发言:

好``谢谢你```其实这个方法我知道的```不过我怕说出来你们说我笨```
我还打算设置上百种技能```又要设置上百种状态啊`````
如果多个人物同时使用A技能```应该不会出错吧?````
随便问问什么叫SSD?


SSD就是伸手党……

多个人物同时使用A技能```不行——因为公共事件里设的是指定角色获得状态……

不管谁用A技能,都只会给你所指定的角色加上状态!

如果有高手写出个事件指令脚本使得能给用技能的人加状态就好了!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-8-5
帖子
23
9
发表于 2009-8-7 11:06:18 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 20:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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