| 主题贴:【 物品合成系统物品分类增强版 v1.1 [8月17日更新] 】(原帖)(目录) 叶子 (2005-12-31 14:28:32) [B]物品合成系统完美版[/B]原作者:Deke (-_-||)废话不多说...介绍一下这个系统的功能(抑或是这个增强版扩展的功能?) 原来的完美版脚本的制作界面是把所有东西都放在同一个界面。 这个完美版增强版脚本可以自定义不同分类界面,召唤特定界面时只会显示特定分类的成品。 例如可以把物品分成裁缝成品,制皮成品等几类,召唤特定界面,就只会显示本分类成品。 当然也可以召唤全物品界面,显示全部成品。 v1.1更新说明: 修正了返回界面时不显示成品的BUG 修正了材料大于8个不显示的BUG 描绘物品美化 自动检测能否合成 使用方法: 复制全部脚本内容,在Main脚本之前按insert,插入此脚本全部内容 设置方法: 看脚本注释说明 冲突可能: [B]物品合成系统完美版[/B],都用了这个就不用那个了吧◎_◎ 其余未知,冲突可能不大 [HTML]#============================================================================== # 本脚本来自www.66RPG.com,使用和转载请保留此信息 # 欢迎访问www.66RPG.com # 梦想世界,在你手中 #============================================================================== # # Sample master list for crafting script (物品分类增强版) v1.1 # written by Deke # 增强:叶子 # # 12-30-2005 v1.0 # 8-17-2006 v1.1 # 修正了返回界面时不显示成品的BUG # 修正了材料大于8个不显示的BUG # 描绘物品美化 # 自动检测能否合成 #============================================================================================ # 简介: # 这是一个很不错的合成物品系统,可以通过游戏的过程,不断学习可以合成的 # 物品方法。 # ------ # 增强版补充说明: # 在这个增强版中,可以对成品进行手动分类。 # 成品增加了一个分类属性。 # 这个分类纯粹是按自己的意愿,没有规定第几类必须是什么。 # 召唤特定分类的界面,就只会看到特定分类的成品。 # # 例如: # 使用脚本$scene = Scene_Craft.new(1), # 出来的界面就只会显示成品分类为1的东西 # 同样道理,使用脚本$scene = Scene_Craft.new(2), # 出来的界面就只会显示成品分类为2的东西 # # 如果使用脚本$scene = Scene_Craft.new或$scene = Scene_Craft.new(0)来召唤界面 # 就可以看到所有成品。 # # 注意:不要弄混淆“成品种类”和“成品分类” # 成品种类是指成品是普通物品(0),防具(1)或武器(2) # 成品分类是指此物品的自定义分类 # # # 使用方法: # 1、召唤界面:使用脚本$scene = Scene_Craft.new(分类的数字) # 例如:使用脚本$scene = Scene_Craft.new(1),出来分类1的界面 # # 2、学习合成:$game_party.learn_recipe(合成项目) # # 2.1、其实这个脚本可以使同一成品有不同配方 # # 就这样说可能解释得不清楚,先来解释一下脚本学习配方的原理: # $game_party.learn_recipe(合成项目)的处理过程并不是直接学习这个配方, # 而是在配方库中找到和合成项目成品相同的配方。 # # 如果配方库中有两个配方成品相同的话,配方版本就变得重要。 # $game_party.learn_recipe(合成项目,配方版本) # 配方版本为1的话,学到的配方就是@recipe_list[xx]中与合成项目成品相同且数字最小的配方 # 配方版本为2的话,学到的配方就是数字第二小的配方 # 在上面这个脚本语句中,不填配方版本的话就默认为1 # # 2.2、忘记配方:$game_party.forget_recipe(合成项目) # 2.21、同样道理,这个语句也可以写配方版本 # $game_party.forget_recipe(合成项目,配方版本) # 配方版本定义见2.1 # # 2.3、配方版本不能乱填!例如游戏中某一个配方的成品是唯一的,与所有其它配方的成品都不相同 # 那么学习的时候就不用填配方版本。 # 如果这时在配方版本填了2的话,就有可能学不到或者忘不了(-_-||) # # # 3、合成定义: # 这个合成脚本可以定义两种合成物品。一种是预先定义好了的,就像下面这样, # 直接写在这里就可以,另一种是在学习之前现场定义。 # # 4、举例 # 4.1、学会recipe_list[1]定义的合成:$game_party.learn_recipe($game_temp.recipe_list[1]) # 注意,一行如果输入不下,在(的后面或[的后面按回车换行,否则可能出错 # # 4.2、在游戏中临时定义一种合成,让玩家学会。使用事件中的脚本如下, # 脚本: # 材料 = [$game_variables[1],$game_variables[2]] #——材料编号是变量1、2的编号 # 材料种类 = [0,0] #——材料是物品 # 材料数量 = [$game_variables[3],$game_variables[4]] #——需要材料数量是变量3、4的编号 # 成品 = $game_variables[5] #——获得结果编号是5 # 成品种类 = 1 #——成品是防具类 # 成品分类 = 1 #——这一项不写的话默认为0 # $game_party.learn_recipe(Game_Recipe.new(材料,材料种类,材料数量,成品,成品种类,成品分类)) # 上面这条语句的成品分类这一项不写也行,这样它就默认为0了。 # (也就是此物品没有分类,不会在分类菜单中出现) # 省略成品分类的脚本语句可以像下面这样写: # $game_party.learn_recipe(Game_Recipe.new(材料,材料种类,材料数量,成品,成品种类)) # #=========================================================================================== …… 长篇帖子,完整版请原地址查看 |
叶子 :[b]以下引用[u]golden124于2007-9-26 11:30:58[/u]的发言:[/b] 见自由提问区回答.. >golden124 : 紧急求助!! 有问题!!!! 测试的时候提示: [CODE] #---------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 0...$game_party.recipes.size #@craft_type为0时就显示全部物品 #不为0时就显示对应物品 if @craft_type == 0 @data.push($game_party.recipes[i]) elsif $game_party.recipes[i].craft_type == @craft_type @data.push($game_party.recipes[i]) end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = "黑体" # = "黑体" self.contents.font.size = 18 # = 18 for i in 0...@item_max x = 16 y = i * 32 able = true for ingredient in 0...@data[i].ingredients.size case @data[i].ingredient_types[ingredient] when 0 count = $game_party.item_number(@data[i].ingredients[ingredient]) when 1 count = $game_party.armor_number(@data[i].ingredients[ingredient]) when 2 count = $game_party.weapon_number(@data[i].ingredients[ingredient]) end if count < @data[i].quantities[ingredient] able = false break end end draw_item_name(@data[i].item, x, y, able) end end end[/CODE] 里面的方式SIZE未定义,应该是指for i in 0...$game_party.recipes.size >gpra8764 : 不明白的人飘过! >as15 : 397行发生了NoMethodError 我用了:任务窗口、敌我血槽、得失物品提示、菜单存档、显示地图名字 >叶子 : [b]以下引用[u]Dark乾坤于2007-4-7 15:57:25[/u]的发言:[/b] 测试了一下,能显示不止5个o.o 看一下是不是没有学习到那个配方?只有学习到的配方才显示 >Dark乾坤 : 为什么只能显示5个配方[B][/B] >幻の飞鱼 : 开始还说是谁在挖坟- - 看了一下 原来是我自己挖的 不过这东西满好用 PS:有一个小问题 材料全部用完的时候不会立刻刷新成灰色 尤其是用了鼠标系统以后 偶稍微修改以下刷新就完美 >白起 : 为什么没范例? >幻の飞鱼 : 研究注释了许久 终于在漏了的地方发现怎么用的 - -1 >cyzy1987 : 一个很郁闷的问题 叶子把 # 2 号合成物品设定表中的[成品分类][成]字写成了[物] 好像会引起分类混乱吧 >z391xyrs : 哦哦.. 原来如此.. 抱歉抱歉, 原来我把原本的合成完美版和这个搞混了.. 真的很不好意思^^" 谢谢大大~ >叶子 : [b]以下引用[i]z391xyrs于2006-1-5 18:29:38[/i]的发言:[/b]例如: $scene = Scene_Craft.new(10) 召唤出来的界面只会显示成品分类(注意!不是种类)为10的物品。 成品分类你分多少类也可以,没有限制。 >沉默的米饭团 : 有的.你在显示后面不加括号和数字就行了 >z391xyrs : 请问有没有能够单独显示类型1(道具)的状态呢? 本脚本似乎只有全部.防具.武器这三种单独形式的物品分类状态。 >ZhengMC : 个人验证,这套脚本运行现在已经没有问题。很实用! 至今暂未见脚本冲突。 谢谢叶子为我们提供如此好的脚本。 >叶子 : (-_-||) 非常不好意思............ 那是我为了测试DEBUG用的东东............. 立刻编辑一下主题..改回正确的 >ZhengMC : 可以用!谢谢楼主! 但有一个问题。在每次调用合成窗口会出现类似的对话框 http://bbs.boxbbs.com/PostAttachment.aspx?PostID=2269094&AttachmentID=119279&guid=95bc4f83 http://bbs.boxbbs.com/PostAttachment.aspx?PostID=2269096&AttachmentID=119280&guid=41139fc3 如果是分类的也是差不多这类提示会闪现一下再进入窗口。有什么办法解决吗? >叶子 : [b]以下引用[i]orochi2k于2005-12-31 15:18:00[/i]的发言:[/b] 这个脚本的冲突可能性貌似很小...只是Game_Temp和Game_Party的初始化方法用了别名,其余都是新类.. 整合也应该很容易... >orochi2k : 偶依旧冲突着...继续郁闷地自己造脚本中-_-0 |