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

Project1

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

[已经解决] 有关技能脚本(我乃脚本大白痴!!)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-7-13
帖子
12
跳转到指定楼层
1
发表于 2012-7-18 14:34:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 578438807 于 2012-7-18 15:31 编辑

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

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

我是新人大家就不要计较悬赏了……

Lv1.梦旅人

◇无限的妄想者◇

梦石
0
星屑
55
在线时间
1441 小时
注册时间
2012-7-14
帖子
2339
2
发表于 2012-7-18 15:44:25 | 只看该作者
本帖最后由 幻想中的鸡蛋 于 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为你想要的变量编号。

点评

该怎填哪A为84,B85,C86  发表于 2012-7-18 18:11

评分

参与人数 1梦石 +2 收起 理由
hcm + 2 认可答案

查看全部评分


————————————————————————————————————
新坑Dreamoon酝酿中,预计短篇⑨完工发布。
————————————————————————————————————
如何调戏橙光文字的 高级UI 系列教程:  鉴赏页制作篇背包系统制作篇
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-7-13
帖子
12
3
 楼主| 发表于 2012-7-18 16:05:26 | 只看该作者
谢谢,那个……main在哪?
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-7-13
帖子
12
4
 楼主| 发表于 2012-7-18 16:10:06 | 只看该作者
幻想中的鸡蛋 发表于 2012-7-18 15:44
不知道你这个职业有多少个角色,如果只有一个角色可以用以下简单脚本+事件解决。(多角色都是这个职业勿用 ...

谢谢,那个……main在哪?



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

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

’’

点评

脚本编辑器,左边列表最下面,main选中,右键,插入,然后再新的空白页粘贴脚本,保存。可以稍微命名一下以便管理。  发表于 2012-7-18 16:29
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-7-13
帖子
12
5
 楼主| 发表于 2012-7-18 17:09:37 | 只看该作者
578438807 发表于 2012-7-18 16:10
谢谢,那个……main在哪?

谢谢(为什么要十个字十个字)
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-7-13
帖子
12
6
 楼主| 发表于 2012-7-18 18:07:44 | 只看该作者
578438807 发表于 2012-7-18 16:10
谢谢,那个……main在哪?

该怎填哪A为84,B85,C86

点评

OKOKOKOKOKOKO  发表于 2012-7-19 13:40
19和21行>=号右边的数字代表你需要A级能储存的使用次数,这个变量的增减通过技能调用公共事件实现。  发表于 2012-7-19 08:13
你是说ABC技能的id分别为84、85、86么?A、C技能调用公共事件实现变量增减,BC技能的可用判定需要脚本15~26行之间的设定,具体就是18行when 85 20行when 86  发表于 2012-7-19 08:11
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-7-13
帖子
12
7
 楼主| 发表于 2012-7-18 18:11:54 | 只看该作者
@幻想中的鸡蛋该怎填哪A为84,B85,C86
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 04:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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