|
26531| 123
|
[RMVA发布] 【VA】NIS-ARPG战斗系统 V 0.23【已弃坑,有缘再更新】 |
|
更新日志: 2015.8.3 v 0.1 发布 2015.8.4 v 0.11 补全了说明 范例有了小修改 修复了ARPG模式切换时的BUG, (具体是在 Scene_Base ,Scene_Map ,NIS_Entity ,NIS_Enemy 这四个脚本) 2015.8.6 v 0.12 鼠标指到血蓝条时鬼畜现象修正 一些比较短的脚本整合到一个脚本里 2015.8.7 v 0.13 解决场所移动的BUG(Game_Interpreter 脚本) 还有几个潜在的BUG(Game_Interpreter 脚本) 范例有了小修改 2015.8.8 v 0.14 解决无法进行商店处理等几个BUG(在 Game_Interpreter 脚本) 范例有了小修改 2015.8.14 v 0.2 支持 状态,BUFF和DEBUFF 功能 支持 命中失败和回避 好像支持了TP的样子【好不负责任的样子】 敌人属性采用数据库敌人的属性 重新设置了硬直的问题 修复了血条无法隐藏的BUG 大概是这些【好不负责任的样子】 2015.8.15 v 0.21 状态实现移动减速/加速效果 修改了整合版的一些BUG 2015.11.22 v 0.22 角色死亡后支持其他操作【比如回城之类的,可自行到公共事件里设置,当然也可以结束游戏】 可以自行隐藏或显示左上角的状态栏 修复了更改图像的BUG 2016.1.17 v 0.23 【补丁】 修复了掉落物品必定掉落的BUG 修复了拾起掉落物品时出现的BUG 【插件】 新增名字变色功能 新增升级动画功能 更新预告: 加入队友系统 不同武器不同动画 蛋疼的投掷功能还是删掉算了? 【只是预告而已hhhhhh】 [fold=介绍及说明(套用脚本的说明)] ------------------------------------------ NIS-ARPG战斗系统 - v 0.22 by 804173948 ------------------------------------------ Ps. 本脚本作者为 804173948 ,未经本人同意不得用于任何商业用途【以左纯属扯淡 脚本介绍: 特点: ARPG战斗,这个仍然是体验版(虽然成功进阶到 0.2) 当某个开关开启时进入 ARPG战斗模式(默认为100号开关) 然后,这个也是用我的新界面系统做的0.0【不要问我为什么总是在卖广告... 支持单持武器以及双持武器(如果拿了盾牌不会显示出来) 支持WASD键移动,可到 战斗设定 里关闭 战斗按键可以在 按键设定 里设置 默认为:J键 普通攻击 K键跳跃 M键投掷武器 U,I,O,L,Q,E键发动技能 1,2,3键使用物品 技能槽和物品槽的更改可以到 按键设定 里按指引修改 接着就是事件分为普通事件和实体,实体就是可以被攻击的或者可以主动攻击的 会主动攻击的实体称为敌人,其他就是普通实体 所有实体都要关联数据库里面的敌人,不然出错了不关我事... 本系统还有一些附带的功能, 附带功能如果不需要或者想修改可以联系我【加QQ,不然我可能会自动忽略 23333 要注意的是,要设置的内容可能会有点多(然而已经化简了很多0.0) 目前缺陷: 没有加入 队友 功能 一些用于攻击敌人的物品无法使用 一些设置会有些繁琐或者难懂 敌人的属性设置虽然是根据数据库的敌人,但是怪物技能的发动和掉落不是 可能会和一些与事件有关的脚本发生冲突 使用方法: 事件设置: 在事件-注释添加: <attackable> 这是会主动攻击的标志,简单来说就是敌人 <breakable> 这是可以被攻击的标志,就是普通实体 【注意,上面那两个只要有一个成立就表面这个事件是一个实体,记得要关联敌人!】 <enemy ID> 与这个实体关联的在数据库里面的敌人的ID <name 名称> 这个只适用于普通事件,就是在事件底下显示名字(实体的名字采用数据库所关联的敌人的名字) <hide_name> 适用于所有事件,可以隐藏事件的名字 <hide_hp> 适用于所有实体,这可以隐藏这个实体的HP显示条 <fixed> 适用于所有实体,这会固定事件的位置,不会因为执行操作而改变 <reborn> 适用于所有实体,这可以实现实体死亡后,人物场所转移之后重新出现 如果这个事件是实体,而且这个实体不会因为人物场所移动而重新出现的话 还要新建一个事件页,出现条件为 独立开关 A 开启, 这个事件页是实体死亡的事件页,执行内容可任意设定,再改事件的图像就能实现死亡图像了 (简单来说就是实体死亡之后 独立开关 A 开启) 角色设置: 在备注写上: <normal_speed 数值> 角色步行速度(默认是4,可不设置) <run_speed 数值> 角色跑步速度(默认是6,可不设置) 敌人设置: 在备注写上: <level 数值> 敌人的等级,这和最终人物获得的经验有关 <hs 数值> 敌人的行动速度,数值越小行动速度越大,大概30左右合适 <range 数值> 敌人的警戒范围,进入这个范围敌人就会靠近进行攻击 <skill 编号> 敌人的技能,编号对应 敌人设定 里 Enemy_Skill 的编号【敌人的普通攻击也是个技能,这个不设置的话敌人就不会攻击了】 <drop 编号> 敌人的掉落,编号对应 敌人设定 里 Enemy_Drop 的编号 <normal_speed 数值> 敌人步行速度(默认是4,可不设置) <run_speed 数值> 敌人跑步速度(默认是6,可不设置【虽然敌人不会跑步233,看看以后会不会做出来...) 技能设置: 在备注写上: <direction_fix> 可以固定这个技能的动画以及攻击范围的方向(不会因使用者朝向改变而发生改变) [target 数字] 该技能的目标,数字为 0 则目标是对敌人,为 1 目标是对己方,为 2 目标是自己,为 3 目标是所有实体,为 4 则无目标(默认为 0) [z_range 数值] 该技能在 z 方向的攻击范围,也就是高度,(默认为 5) [freeze 数值] 该技能的冷却时间(单位:帧)(默认为 60) 注意的是,敌人的技能同样也是有冷却时间 技能的范围等设置见 操作设定 以及 技能设定 物品设置: 在备注写上: [freeze 数值] 该技能的冷却时间(单位:帧)(默认为 60) 注意:使用攻击的物品没有效果(至少在这个版本) 武器设置: 在备注写上: <pick_pos x坐标, y坐标> 持该武器的位置坐标【好像不太好解释23333】 状态设置: 在备注写上: [color 红,绿,蓝] 该状态的颜色【提示颜色以及闪烁的颜色】 <normal_speed_plus 数值> 该状态的普通行走速度加成【简单来说就是速度增加多少(为负值就减少多少)】 <run_speed_plus 数值> 该状态的跑步行走速度加成【简单来说就是跑步时速度增加多少(为负值就减少多少)】 其他说明: 隐藏主角头上HP条:事件-脚本:$game_player.show_hp = false 显示主角头上HP条:事件-脚本:$game_player.show_hp = true 隐藏主角底下名字:事件-脚本:$game_player.show_name = false 显示主角底下名字:事件-脚本:$game_player.show_name = true 判断一个实体是否死亡:事件-条件分歧-脚本:get_character(实体ID【其实就是事件ID】).die? 获取一个实体的关联敌人:事件-脚本:get_character(实体ID【其实就是事件ID】).actor 强行装备技能:事件-脚本:equip_skill(技能槽ID,技能ID)【如果没有学会此技能不会被装备】 强行卸下技能:事件-脚本:del_skill(技能槽ID) 强行卸下技能(根据ID):事件-脚本:del_skill_by_id(技能ID) 强行装备物品:事件-脚本:equip_item(物品槽ID,物品ID)【如果不拥有此物品不会被装备】 强行卸下物品:事件-脚本:del_item(物品槽ID) 强行卸下物品(根据ID):事件-脚本:del_item_by_id(物品ID) 【能想到的就这么多...】 一些数据格式说明: 纯文字很难说明,我会把我能表达的写在6R上面的0.0 注意事项: 记住要复制第一个公共事件!!! 注意要确保每个技能都有对应的动画可以显示!!! 一定要确保每个实体都有关联的敌人!!! 同一地图有过多实体会变卡!!!【以我的电脑来看大概 20 个实体以内是合适的 与一些关于事件的脚本的冲突可能会较多,但是修改起来不会太难,所以有冲突可以加QQ或者到6R上问我0.0 【能想到的就这么多...】 本人QQ: 说了多少次了昵称就是我Q号.... 说明什么的就到这里吧... 最后如果有BUG的话欢迎提出来,我会尽我所能改好的0.0 [/fold] 补丁: PS. 以后一些小的BUG的修复就直接在补丁这里发了,补丁的内容在更新日志里。 只要有新的补丁都会在更新日志里写上【补丁】然后在下面写补丁的条目... 一般来说如果更新日期下一行紧接着就是“【补丁】”的话就表明不用下载范例了【因为更新内容都在补丁里面 补丁只要把脚本复制并放到"(请在此添加)"前就可使用。 [fold=补丁] 捡起道具名字颜色描绘补丁(修复了拾起时的BUG) [pre lang="ruby"]=begin ---------------------------------- 捡起道具名字颜色描绘补丁 by 804173948 ---------------------------------- 捡起掉落的道具时提示框的道具的名称颜色能描绘成相应的品质颜色 顺便修复了道具拾起时的BUG =end class NIS_Drop #-------------------------------------------------------------------------- # ● 更新拾起 #-------------------------------------------------------------------------- def update_pickup gain_drop if @status != :gain && check_player_approach end #-------------------------------------------------------------------------- # ● 得到物品 #-------------------------------------------------------------------------- def gain_drop $game_message2.text ||= "" case @type when :gold $game_party.gain_gold(@param) $game_message2.text += "\001[-1,-1,-1]拾起了 " + @param.to_s + " " + Vocab::currency_unit + "\n" when :item item = $data_items[@param] c = ItemLevelDrawer::ColorSet[[item.quality-1,0].max] c_text = "\001["+c[0].to_s+","+c[1].to_s+","+c[2].to_s+"]" $game_party.gain_item(item,1) $game_message2.text += "\001[-1,-1,-1]拾起了 " +c_text+item.name + "\001[-1,-1,-1]\n" when :weapon item = $data_weapons[@param] c = ItemLevelDrawer::ColorSet[[item.quality-1,0].max] c_text = "\001["+c[0].to_s+","+c[1].to_s+","+c[2].to_s+"]" $game_party.gain_item(item,1) $game_message2.text += "\001[-1,-1,-1]拾起了 " +c_text+item.name + "\001[-1,-1,-1]\n" if !$game_player.actor.weapons[0] $game_player.actor.change_equip(0,item) elsif !$game_player.actor.weapons[1] $game_player.actor.change_equip(1,item) end when :armor item = $data_armors[@param] c = ItemLevelDrawer::ColorSet[[item.quality-1,0].max] c_text = "\001["+c[0].to_s+","+c[1].to_s+","+c[2].to_s+"]" $game_party.gain_item(item,1) $game_message2.text += "\001[-1,-1,-1]拾起了 " +c_text+item.name + "\001[-1,-1,-1]\n" end @status = :gain end end[/pre] 掉落BUG修复补丁 [pre lang="ruby"]=begin ---------------------------------- 掉落BUG修复补丁 by 804173948 ---------------------------------- 修复了掉落道具几率的问题 =end class NIS_Entity #-------------------------------------------------------------------------- # ● 死亡 #-------------------------------------------------------------------------- def die @character.deal_die if @character.is_a?(Game_Entity) drop_data = EnemySetting::Enemy_Drop[@character.drop] gold_data = @character.gold if drop_data drop_data.each do |d| next if rand > d[2] @drop_items.add_object( NIS_Drop.new(self.x-self.ox+self.width/2+rand(50)-25, self.y-self.oy+self.height/2+rand(50)-25,d[1],d[0])) end end if gold_data > 0 @drop_items.add_object( NIS_Drop.new(self.x-self.ox+self.width/2+rand(50)-25, self.y-self.oy+self.height/2+rand(50)-25,:gold,gold_data)) end deal_die @status = :die end end end[/pre] [/fold] 插件: 一些附加的小功能将在这里给出,具体使用方法在注释里已经写明 直接放到"(请在此添加)"前即可 [fold=插件] 名字变色插件 效果图:
[pre lang="ruby"]=begin ---------------------------------- 名字变色插件 by 804173948 ---------------------------------- 人物在地图上的名字的颜色改变 使用方法: 对于NPC的颜色改变: 事件-注释:<color R,G,B> 对于玩家的颜色改变: 数据库-角色-备注:<color R,G,B> 游戏中修改: 第ID号角色名字颜色更改: 事件-脚本:$game_actors[ID].change_name_color(R,G,B) 第ID号队员名字颜色更改: 事件-脚本:$game_party.members[ID].change_name_color(R,G,B) 领队名字颜色更改: 事件-脚本:$game_party.leader.change_name_color(R,G,B) 对于敌人的颜色改变: 数据库-敌人-备注:<color R,G,B> =end class RPG::Event::Page def name_color ; @list.select{|i| i.code == 108 }.each{|i| return Color.new($1.to_i,$2.to_i,$3.to_i) if /<color (\d+)\,(\d+)\,(\d+)\>/i =~ i.parameters[0]};return Color.new(255,255,255); end end class RPG::Enemy def name_color return Color.new($1.to_i,$2.to_i,$3.to_i) if /<color (\d+)\,(\d+)\,(\d+)\>/i =~ @note return Color.new(255,255,255) end end class RPG::Actor def name_color return Color.new($1.to_i,$2.to_i,$3.to_i) if /<color (\d+)\,(\d+)\,(\d+)\>/i =~ @note return Color.new(255,255,255) end end #encoding:utf-8 #============================================================================== # ■ Game_Actor #------------------------------------------------------------------------------ # 管理角色的类。 # 本类在 Game_Actors 类 ($game_actors) 的内部使用。 # 具体使用请查看 Game_Party 类 ($game_party) 。 #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 定义实例变量 #-------------------------------------------------------------------------- attr_reader :name_color # 名字颜色 #-------------------------------------------------------------------------- # ● 设置 #-------------------------------------------------------------------------- alias old_804173948_ncc_setup setup def setup(actor_id) old_804173948_ncc_setup(actor_id) @name_color = actor.name_color end #-------------------------------------------------------------------------- # ● 更改名字颜色 #-------------------------------------------------------------------------- def change_name_color(r,g,b) @name_color = Color.new(r,g,b) end end #encoding:utf-8 #============================================================================== # ■ Game_Enemy #------------------------------------------------------------------------------ # 管理敌人的类。本类在 Game_Troop 类 ($game_troop) 的内部使用。 #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ● 定义实例变量 #-------------------------------------------------------------------------- attr_reader :name_color # 名字颜色 #-------------------------------------------------------------------------- # ● 初始化对象 #-------------------------------------------------------------------------- alias old_804173948_ncc_initialize initialize def initialize(index, enemy_id) old_804173948_ncc_initialize(index, enemy_id) @name_color = enemy.name_color end end #encoding:utf-8 #============================================================================== # ■ Game_Event #------------------------------------------------------------------------------ # 处理事件的类。拥有条件判断、事件页的切换、并行处理、执行事件等功能。 # 在 Game_Map 类的内部使用。 #============================================================================== class Game_Event < Game_Character attr_reader :name_color # 名字颜色 #-------------------------------------------------------------------------- # ● 设置事件页的设置 #-------------------------------------------------------------------------- alias old_804173948_ncc_setup_page_settings setup_page_settings def setup_page_settings old_804173948_ncc_setup_page_settings @name_color = @page.name_color end end class Game_Player def name_color ; actor.name_color ? actor.name_color : Color.new(255,255,255) ; end end class Game_Entity def name_color ; actor.name_color ? actor.name_color : Color.new(255,255,255) ; end end class Game_Follower def name_color ; actor.name_color ? actor.name_color : Color.new(255,255,255) ; end end class NIS_Character #-------------------------------------------------------------------------- # ● 更新名称 #-------------------------------------------------------------------------- def update_name @name_sprite.window.bitmap.clear unless @character.show_name if @name != @character.name @name_sprite.window.bitmap.clear @name = @character.name return if @name == "" @name_sprite.window.bitmap.font.size = 14 @name_sprite.window.bitmap.font.color = @character.name_color width = [get_width(@name,@name_sprite.window.bitmap)+4,@name_sprite.window.bitmap.width].min rect = Rect.new((@name_sprite.window.bitmap.width-width)/2,0,width,@name_sprite.window.bitmap.height) @name_sprite.window.ox = @name_sprite.window.bitmap.width / 2 @name_sprite.window.bitmap.fill_rect(rect, Color.new(0,0,0,176)) @name_sprite.window.bitmap.draw_text(rect, @name,1) end end end [/pre] 角色升级显示动画插件 效果图:
[pre lang="ruby"]=begin ---------------------------------- 角色升级显示动画插件 by 804173948 ---------------------------------- 升级显示动画 目前只有领队升级才显示 动画ID在18行设置 【其实还可以设置升级的动作之类的 这里的设置和技能操作的设置是相通的】 =end #encoding:utf-8 #======================================== # Module OperSetting #---------------------------------------- # 处理操作设定 #======================================== module OperSetting # 动画ID 别改 动画旋转角度 后面的都别改 LevelUpOper = [[0,"播放动画",[[132,false, 0, true,false,false]]]] end #encoding:utf-8 #============================================================================== # ■ Game_Actor #------------------------------------------------------------------------------ # 管理角色的类。 # 本类在 Game_Actors 类 ($game_actors) 的内部使用。 # 具体使用请查看 Game_Party 类 ($game_party) 。 #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 显示等级上升的信息 # new_skills : 学会的新技能的数组 #-------------------------------------------------------------------------- def display_level_up(new_skills) $game_player.level_up if $game_player.actor == self $game_message2.text ||= "" $game_message2.text += "\001[255,128,255]"+@name+"\001[128,255,128]升级了!\n\001[-1,-1,-1]" new_skills.each {|skill| $game_message2.text += "\001[128,255,128]习得了技能 \001[255,255,0]"+skill.name+" !\n\001[-1,-1,-1]"} end end class Game_Player < Game_Character attr_accessor :lu #-------------------------------------------------------------------------- # ● 等级上升 #-------------------------------------------------------------------------- def level_up ;@lu = true ;end end #============================================================================== # ■ NIS_Actor #------------------------------------------------------------------------------ # 游戏玩家基础 #============================================================================== class NIS_Actor < NIS_Entity #============================================================================== # 基本定义 #============================================================================== #-------------------------------------------------------------------------- # ● 更新画面 #-------------------------------------------------------------------------- alias old_804173948_window_update window_update def window_update old_804173948_window_update update_level_up end #-------------------------------------------------------------------------- # ● 更新角色升级 #-------------------------------------------------------------------------- def update_level_up if @character.lu Fiber.new {deal_skill_oper(OperSetting::LevelUpOper)}.resume @character.lu = nil end end end [/pre] [/fold] [fold=一些复杂数据的编辑方法(图文并茂)【以后一些编辑方法会在这里更新】] 技能范围编辑: 以第5号技能的范围为例【范围的代码在范例里】 技能范围的具体意义如下图所示:
关于武器备注:
[/fold] [fold=0.1版截图]
[/fold] [fold=0.2版截图]
[/fold] [fold=关于鼠标脚本] 可能你们使用的鼠标脚本不是我这一款,可以通过QQ把你的鼠标脚本发过来帮你修改,如果不需要鼠标也可以通过QQ跟我说0.0 [/fold] 最后说句题外话啦,就是希望大家支持然后感谢大家的支持0.0 【于是我很缺德地更新了】 然后...这个近期应该是不会更新了,如无意外下次更新应该就是两年后的高考之后了233333 范例:(百度什么盘) 【加了个整合版范例,把五十多个脚本整合成一个,并附带了事件防卡【不需要可以直接删掉 【五十多个脚本才7000+行....】 【由于为了方便设置所以模块的脚本没有整合】 【强烈不建议使用整合版!虽然要复制好多脚本但是!!!我修改起来容易!!!!←扯淡】
购买主题
已有 411 人购买
本主题需向作者支付 36 星屑 才能浏览
| |
|
undefined
|
|
|
| |
|
| |
|
| |
|
| |
| ||
|
| |
| ||
|
| |
| ||
|
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html 魔塔3: 制作中...MV |
||