查看: 3801|回复: 10

[已经解决] 怎么限定技能每场战斗中的使用次数?

[复制链接]
梦石
0
星屑
50
在线时间
42 小时
注册时间
2009-7-7
回帖
9
发表于 2011-1-7 21:24:22 | 显示全部楼层 |阅读模式

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

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

×
就是比如说一个技能在第一次战斗中使用了一次以后就不能使用了,但是到了下一次战斗又可以使用,但还是只能在那次战斗中使用一次,也就是在每次战斗中只能使用一次,这要怎么样才可以做到阿?
梦石
0
星屑
211
在线时间
905 小时
注册时间
2010-9-6
回帖
3138
发表于 2011-1-7 21:59:52 | 显示全部楼层
在右上角搜索状态冷却的脚本,然后就可以做出你所需要的效果了。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
42 小时
注册时间
2009-7-7
回帖
9
 楼主| 发表于 2011-1-7 22:32:38 | 显示全部楼层
本帖最后由 bonnyhorse 于 2011-1-7 22:33 编辑

回复 stevenrock 的帖子

搜索不到状态冷却的脚本
回复

使用道具 举报

梦石
0
星屑
50
在线时间
189 小时
注册时间
2009-12-15
回帖
328
发表于 2011-1-8 10:01:55 | 显示全部楼层
使用特技后加一个状态A,同时在特技里增加公共事件判断,有状态A时就不能使用该特技,然后在状态A里设定战斗结束时解除
应该可以吧
第二部游戏 《求职大作战》http://rpg.blue/thread-165630-1-1.html
第一部游戏 《天宇传奇》http://rpg.blue/thread-140339-1-1.html
柳柳新人/进阶教程,视频全集 http://rpg.blue/thread-164472-1-1.html
回复

使用道具 举报

梦石
0
星屑
50
在线时间
42 小时
注册时间
2009-7-7
回帖
9
 楼主| 发表于 2011-1-8 18:58:13 | 显示全部楼层
回复 terry_zhp 的帖子
使用特技后加一个状态A,同时在特技里增加公共事件判断,有状态A时就不能使用该特技,
有状态A时就不能使用该特技,那个不能使用该特技要怎么设置呢?
回复

使用道具 举报

梦石
0
星屑
4209
在线时间
1870 小时
注册时间
2010-12-21
回帖
2166
发表于 2011-1-8 19:09:29 | 显示全部楼层
本帖最后由 黄亦天 于 2011-1-8 19:09 编辑

回复 bonnyhorse 的帖子

我倒是倾向于另一种方法,先设置一个同名,但是不能使用的技能,
原先的技能运行公共事件,某开关打开,某变量+1,条件分歧当此变量为XX时,习得那个不能使用的技能,忘记目前已有的那个技能。之后再设定一个公共事件,处理方式是并行处理,开关是刚才那个开关,内容是把那个变量带入0,忘记不能使用的那个技能,习得可以使用的那个技能,之后关闭这个开关。
这样就OK了~~
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
回帖
344
发表于 2011-1-8 20:48:39 | 显示全部楼层
本帖最后由 失去的记忆 于 2011-1-8 20:52 编辑

你们说的太复杂了....新人听不懂得啦...还是我来吧!
1.脚本Scene_Battle 4 (437行)
#--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 6 : 刷新)
  #--------------------------------------------------------------------------
  def update_phase4_step6
    @skill = $data_skills[@active_battler.current_action.skill_id]
    if @skill.id==57
      $一次性技能=true
    end

    # 清除强制行动对像的战斗者
    $game_temp.forcing_battler = nil
    # 公共事件 ID 有效的情况下
2.脚本Scene_Battle 1 (131行)
#--------------------------------------------------------------------------
  # ● 战斗结束
  #     result : 結果 (0:胜利 1:失败 2:逃跑)
  #--------------------------------------------------------------------------
  def battle_end(result)
    # 清除战斗中标志
    $game_temp.in_battle = false
    # 清除全体同伴的行动
    $game_party.clear_actions
    # 解除战斗用状态
    for actor in $game_party.actors
      actor.remove_states_battle
    end
    # 清除敌人
    $game_troop.enemies.clear
    # 调用战斗返回调用
    if $game_temp.battle_proc != nil
      $game_temp.battle_proc.call(result)
      $game_temp.battle_proc = nil
    end
    # 切换到地图画面
    $一次性技能=false
    $scene = Scene_Map.new
  end
3.脚本Game_Battler 3 (22行)
# 沉默状态的情况下、物理特技以外的特技不能使用
    if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
      return false
    end
    if $data_skills[skill_id].id==57 and $一次性技能
      return false
    end

    # 获取可以使用的时机

OK!搞定 不懂得问我...这个太简单了 不要把它想复杂了啊:loveliness:
PS:那个57就是技能ID 自己改.. 自己找相应的地方添加红色的代码即可

点评

而且不用全局变量吧?  发表于 2011-1-8 21:22
而且不用变量吧?  发表于 2011-1-8 21:21
的确,这样可以,但是如果LZ要使用多次或有多个技能呢?  发表于 2011-1-8 21:21

评分

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

查看全部评分

做一个游戏也用这么长时间........
PS:说我自己呢
回复

使用道具 举报

梦石
0
星屑
50
在线时间
42 小时
注册时间
2009-7-7
回帖
9
 楼主| 发表于 2011-1-8 21:32:45 | 显示全部楼层
本帖最后由 bonnyhorse 于 2011-1-8 21:36 编辑

回复 失去的记忆 的帖子

恩,明白了,很感谢,但是我这样的技能有好几个,要怎么搞?
另外,这个原理你可不可以告诉我呀
回复

使用道具 举报

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
回帖
344
发表于 2011-1-10 14:18:29 | 显示全部楼层
bonnyhorse 发表于 2011-1-8 21:32
回复 失去的记忆 的帖子

恩,明白了,很感谢,但是我这样的技能有好几个,要怎么搞?

有好几个?? 这好办!
你把那个57变成一个数组,然后想添加多少就添加多少!
PS:一个帖子只能发一个问题,要想继续问请继续发帖!
做一个游戏也用这么长时间........
PS:说我自己呢
回复

使用道具 举报

梦石
0
星屑
1094
在线时间
170 小时
注册时间
2008-10-29
回帖
399
发表于 2011-1-10 15:37:28 | 显示全部楼层
本帖最后由 clap_pl 于 2011-1-10 15:49 编辑

有个简单一点的方法
你找到 def skill_can_use?(skill_id) 这个方法
比如你的1号技能(技能数据库中的第一个)
使用次数用变量1(变量列表中的第一个)来控制,
当使用次数大于5时,就不能使用了。

在 def skill_can_use?(skill_id) 加入以下语句
#================================
if skill_id == 1
return false if $game_variables[1]>=5
end
#================================
同理 如果是第二号技能 次数是6次 用第二个变量控制 就再加上一句
#=======================================
if skill_id == 2
return false if $game_variables[2]>=6
end
#=========================================
以此类推
当然 你需要在这种技能的设定时 附带一个公共事件 让相应的变量+1
如第一个技能 使用后 要附带一个公共事件 让变量1 增加1


#=========================================

最后 你需要在战斗前 将所有这种变量清零
你可以用事件做 比如每场战斗前都让这些变量清零
不过对于随机地雷战 就麻烦了
#=======================================

最简单有效而且一劳永逸的办法 就是在
Scene_Battle
里加上一句
找到如下内容
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
在后面加上一句
$game_variables[1] = 0 #清0第一个变量
$game_variables[2] = 0 #清0第二个变量

#============================
如果你的变量是连续的一系列变量 比如3到99 都是用来控制使用次数的,那就简单了
你写上
for i in 3..99 #注意 是2个点
$game_variable=0
end
#=============================
以此类推




回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部