Project1

标题: 有关技能脚本(我乃脚本大白痴!!) [打印本页]

作者: 578438807    时间: 2012-7-18 14:34
标题: 有关技能脚本(我乃脚本大白痴!!)
本帖最后由 578438807 于 2012-7-18 15:31 编辑

我想做一个职业,这个职业某一技能(A)是使用其他技能的前提,就是使用这个技能之后才能使用其他技能,这个职业的其他技能对A的需要如下(举例):技能B需要A使用1次(A使用次数不变)C需要A使用2次(变更A使用次数为0,此时B也不能使用)

请问怎么做(详细一点,如题)

我是新人大家就不要计较悬赏了……dsu_plus_rewardpost_czw
作者: 幻想中的鸡蛋    时间: 2012-7-18 15:44
本帖最后由 幻想中的鸡蛋 于 2012-7-19 08:34 编辑

不知道你这个职业有多少个角色,如果只有一个角色可以用以下简单脚本+事件解决。(多角色都是这个职业勿用)
先设定一个统计A技能使用次数的变量。(与脚本关联,脚本中用的是第20号变量),然后A技能调用公共事件(比如公共事件1)里面执行变量20自加1
C技能调用另一公共事件(比如公共事件2),里面执行变量20自减2
然后main前面插入下面脚本,15到26行之间要你自己设定一下。
  1. class Game_Battler  
  2. #--------------------------------------------------------------------------
  3.   # ● 可以使用特技的判定
  4.   #     skill_id : 特技 ID
  5.   #--------------------------------------------------------------------------
  6.   def skill_can_use?(skill_id)
  7.     # SP 不足的情况下不能使用
  8.     if $data_skills[skill_id].sp_cost > self.sp
  9.       return false
  10.     end
  11.     # 战斗不能的情况下不能使用
  12.     if dead?
  13.       return false
  14.     end
  15.   #==============================================
  16.     #技能A使用次數不夠的情況下不能使用。
  17.     case skill_id
  18.     when 10 #B skill的id
  19.        return $game_variables[20] >= 1 #(使用A技能1次则可以使用B)
  20.     when 11 #C skill的id
  21.        return $game_variables[20] >= 2 #(使用A技能2次则可以使用C)
  22.        #↓按照上面模板随便添加
  23.       
  24.        #↑====================
  25.     end
  26.   #=================================================
  27.     # 沉默状态的情况下、物理特技以外的特技不能使用
  28.     if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
  29.       return false
  30.     end
  31.     # 获取可以使用的时机
  32.     occasion = $data_skills[skill_id].occasion
  33.     # 战斗中的情况下
  34.     if $game_temp.in_battle
  35.       # [平时] 或者是 [战斗中] 可以使用
  36.       return (occasion == 0 or occasion == 1)
  37.     # 不是战斗中的情况下
  38.     else
  39.       # [平时] 或者是 [菜单中] 可以使用
  40.       return (occasion == 0 or occasion == 2)
  41.     end
  42.   end
  43. end
复制代码
每场战斗结束后要将A技能使用清零再补上这个
  1. class Scene_Battle
  2.   #--------------------------------------------------------------------------
  3.   # ● 战斗结束
  4.   #     result : 結果 (0:胜利 1:失败 2:逃跑)
  5.   #--------------------------------------------------------------------------
  6.   def battle_end(result)
  7.     #清除A技能使用次数
  8.     $game_variables[20] =0
  9.     # 清除战斗中标志
  10.     $game_temp.in_battle = false
  11.     # 清除全体同伴的行动
  12.     $game_party.clear_actions
  13.     # 解除战斗用状态
  14.     for actor in $game_party.actors
  15.       actor.remove_states_battle
  16.     end
  17.     # 清除敌人
  18.     $game_troop.enemies.clear
  19.     # 调用战斗返回
  20.     if $game_temp.battle_proc != nil
  21.       $game_temp.battle_proc.call(result)
  22.       $game_temp.battle_proc = nil
  23.     end
  24.     # 切换到地图画面
  25.     $scene = Scene_Map.new
  26.   end
  27. end
复制代码
如果是多个角色都是这个职业的话,会稍微有些麻烦……(要写N多脚本……)(也可能是我太笨了,想不到简化多角色脚本的方法……)

虽然我感觉应该不至于不懂技能A、C调用公共事件的方法,不过还是给一下图片吧
给A技能选定调用公共事件(这里调用的是第一个公共事件)

给A技能调用的公共事件设定上每次变量20自增1(A技能累计使用次数增加1)


以此类推,C技能调用公共事件2,公共事件2内设定变量20自减2(A技能累计使用次数消耗2)
这里注意A技能只需要调用公共事件,其本身跟脚本没有联系,不用在脚本中设置A技能id
另外,如果不想用默认的变量20,请将脚本中$game_variables[20]全部替换为$game_variables[x] 其中x为你想要的变量编号。
作者: 578438807    时间: 2012-7-18 16:05
谢谢,那个……main在哪?
作者: 578438807    时间: 2012-7-18 16:10
幻想中的鸡蛋 发表于 2012-7-18 15:44
不知道你这个职业有多少个角色,如果只有一个角色可以用以下简单脚本+事件解决。(多角色都是这个职业勿用 ...

谢谢,那个……main在哪?



‘‘──578438807于2012-7-18 16:10补充以下内容:

[@]幻想中的鸡蛋[/@]谢谢,那个……main在哪?

’’
作者: 578438807    时间: 2012-7-18 17:09
578438807 发表于 2012-7-18 16:10
谢谢,那个……main在哪?

谢谢(为什么要十个字十个字)
作者: 578438807    时间: 2012-7-18 18:07
578438807 发表于 2012-7-18 16:10
谢谢,那个……main在哪?

该怎填哪A为84,B85,C86
作者: 578438807    时间: 2012-7-18 18:11
@幻想中的鸡蛋该怎填哪A为84,B85,C86




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