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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
打印 上一主题 下一主题

[已经解决] 求一句简单的脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
帖子
151
11
 楼主| 发表于 2015-11-27 19:34:09 | 只看该作者
枫の叶 发表于 2015-11-27 07:58

测试了,是可以的。
但这个效果是这样的,完成此任务时如果角色达到某等级就学会某技能。
可不可以做成完成这个任务后,如果角色还没达到某等级,那等达到等级后再学会该技能。
我想做的效果是直接在数据库的职业里新增一个技能,等于是那样的效果。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止访问)

梦石
0
星屑
88
在线时间
631 小时
注册时间
2014-8-4
帖子
3600
12
发表于 2015-11-27 20:01:57 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
帖子
151
13
 楼主| 发表于 2015-11-27 20:31:25 | 只看该作者
冷峻逸 发表于 2015-11-27 20:01
如果很少的话:
完成任务后转职成为另一个职业,其他一样只是技能不同

对,这样也能达到效果。
但自己想把这个功能灵活一些。要能直接用一段脚本来表达最好。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
451
在线时间
228 小时
注册时间
2015-2-23
帖子
241
14
发表于 2015-11-27 21:19:29 | 只看该作者
RUBY 代码复制
  1. #---------------------------------------------------------------------
  2. module Fy
  3.   #用开关关联技能,对应的开关未打开时,无论多少等级,所有角色对应技能都不能学会。
  4.   #包括用事件强制学也不能。
  5.   #下面设置格式是:技能ID=>开关ID 。需要更多的可以照格式添加。
  6.   Restricted_class_skills = {3=>10, 4=>11}
  7. end
  8. #---------------------------------------------------------------------
  9. class Game_Actor < Game_Battler
  10.   alias fy_learn_skill learn_skill
  11.   def learn_skill(skill_id)
  12.     return if Fy::Restricted_class_skills.keys.include?(skill_id) and
  13.      ! $game_switches[Fy::Restricted_class_skills[skill_id]]
  14.     fy_learn_skill(skill_id)
  15.   end
  16.   def skill_refresh
  17.     for i in 1..@level
  18.       for j in $data_classes[@class_id].learnings
  19.         if j.level == i
  20.           learn_skill(j.skill_id)
  21.         end
  22.       end
  23.     end
  24.   end
  25. end
  26. #---------------------------------------------------------------------
  27. class Game_Switches
  28.   def []=(switch_id, value)
  29.     if switch_id <= 5000
  30.       @data[switch_id] = value
  31.       if value and Fy::Restricted_class_skills.values.include?(switch_id)
  32.         $data_actors.size.times do |i|
  33.           next if $game_actors[i].nil?
  34.           $game_actors[i].skill_refresh
  35.         end
  36.       end
  37.     end
  38.   end
  39. end
  40. #---------------------------------------------------------------------

点评

谢谢层主哦,其实9楼已经把脚本写出来了。  发表于 2015-11-27 21:28

评分

参与人数 1星屑 +50 梦石 +1 收起 理由
RyanBern + 50 + 1 认可答案

查看全部评分

制作XP特效,找我。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

15
发表于 2015-11-27 22:41:21 | 只看该作者
本帖最后由 cinderelmini 于 2015-11-28 11:48 编辑

顺便把新游戏删除任务学到的职业技能相关写出来了,
这样配合窝⑨楼那段应该能做到楼主想要的效果了,就是下面这段脚本必须Main前。
(如果用了其他标题脚本导致没效果的话再另外整合吧,不过既然alias了除非标题用了别的scene啥的不然应该不会。)


  1. class Scene_Save < Scene_File
  2.   #--------------------------------------------------------------------------
  3.   # ● 确定时的处理
  4.   #--------------------------------------------------------------------------
  5.   alias ruok_on_decision on_decision
  6.   def on_decision(filename)
  7.     save_data($data_classes, "Data/Classes_#{filename}")
  8.     ruok_on_decision(filename)
  9.   end
  10. end

  11. class Scene_Load < Scene_File
  12.   #--------------------------------------------------------------------------
  13.   # ● 确定时的处理
  14.   #--------------------------------------------------------------------------
  15.   alias ruok_on_decision on_decision
  16.   def on_decision(filename)
  17.     if FileTest.exist?("Data/Classes_#{filename}")
  18.       $data_classes       = load_data("Data/Classes_#{filename}")
  19.     end
  20.     ruok_on_decision(filename)
  21.   end
  22. end

  23. class Scene_Title
  24.   #--------------------------------------------------------------------------
  25.   # ● 获取任务获得的技能列表
  26.   #--------------------------------------------------------------------------
  27.   def quest_skill
  28.     hash_temp = {
  29.     # 职业ID => [等级, 技能ID],
  30.     1 => [2, 5],
  31.     2 => [3, 7],
  32.     }
  33.     return hash_temp
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 从数据库里删除之前游戏里保存的任务技能
  37.   #--------------------------------------------------------------------------
  38.   def delete_quest_skill
  39.     for class_id in quest_skill.keys
  40.       level    = quest_skill[class_id][0]
  41.       skill_id = quest_skill[class_id][1]
  42.       learing = RPG::Class::Learning.new
  43.       learing.level = level
  44.       learing.skill_id = skill_id
  45.       for learn in $data_classes[class_id].learnings
  46.         if learn.level == learing.level && learn.skill_id == learing.skill_id
  47.           $data_classes[class_id].learnings.delete(learn)
  48.           next
  49.         end
  50.       end
  51.     end
  52.     save_data($data_classes, "Data/Classes.rxdata")
  53.     $data_classes       = load_data("Data/Classes.rxdata")
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 命令 : 新游戏
  57.   #--------------------------------------------------------------------------
  58.   alias ruok_command_new_game command_new_game
  59.   def command_new_game
  60.     delete_quest_skill
  61.     ruok_command_new_game
  62.   end
  63. end
复制代码
在【quest_skill】那段里面自己填任务学到的职业技能参数
格式就是注释里写的那样【职业ID => [学习等级. 技能ID],】这样,在大括号的范围内往下加,
(注意最后一个之前别漏掉半角逗号)
然后就可以用了,每次新游戏之前都会检查和删除掉之前通过任务给职业数据添加的技能,读存档的话不会删,
存档的时候会在Data文件夹里存一个备份的职业数据,读档的时候会读那个文件,
这样大概可以做到新游戏还原默认职业技能表,读档获取游戏职业技能表吧……
PS:测试模式的话,进行了职业技能添加之后,
数据库的职业技能列表还是打开工程的时候那样的不会变,
但是实际上数据文件已经变了,关掉工程再开就会看到变化,
如果不关工程去编辑职业信息并保存数据的话也会改变那个数据文件,
不过既然存档的时候备份了职业数据应该没什么问题了。

点评

嘴上说着不要,身体却把代码写出来了……总之……配合⑨楼的话基本做到了楼主要的效果吧……可惜这种事不是一句脚本能做到的就是了…………  发表于 2015-11-27 22:56

评分

参与人数 1星屑 +50 梦石 +1 收起 理由
RyanBern + 50 + 1 嘴上说着不要,身体却把好人卡发出去了.

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-22 21:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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