本帖最后由 灯笼菜刀王 于 2018-4-30 16:24 编辑 89444640 发表于 2018-4-30 10:55 无可奈何的连贴 发现个小BUG,普通攻击咱是用1弹来写的,虽然提供了复数方法, 不过没有针对复数的情况 修复BUG顺便加上用HELP窗口提示残弹, 最后面普通攻击那部分,把红色的替换成下面这段就好了 if @active_battler.残弹 >= 0 if @active_battler.残弹 < WEAPON_AMMO[@active_battler.weapon_id][1] $game_system.se_play($data_system.buzzer_se) @window_help.set_text("弹药不足",1) return else a = WEAPON_AMMO[@active_battler.weapon_id][0] $game_variables[a] -= WEAPON_AMMO[@active_battler.weapon_id][1] @window_help.set_text("还剩"+ $game_variables[a].to_s + "发",1) end end |
本帖最后由 灯笼菜刀王 于 2018-4-30 16:23 编辑 89444640 发表于 2018-4-30 10:55 厚颜无耻的连贴 咱采用的方法是 让你要子弹的武器和指定的变量相关联, 也就是说 ,这个变量就是你这把武器的装弹数,你可以给变量起武器的名字方便识别。 栗子,沙漠之鹰和11号变量关联,那这个11号变量就是沙漠之鹰的装弹数。给沙漠之鹰装弹的时候,子弹就已经消耗掉了,装到11号变量里了, 所以N把武器用同样的子弹也没影响,各自装自己的,碰到子弹不够的话,“满弹”是随机装填的=。=,因为哈希表没有顺序~ |
89444640 发表于 2018-4-30 10:55 只要不是“不同的人同时用相同ID的武器”就不会有问题,也就是说你枪械类武器一种只有一把的话就完全没有副作用。 相同弹药也没关系。 残弹变量 =>[装填上限,需要的道具ID] 只要这个需要道具的ID设置相同的就是用同一种弹药装填了。 |
本帖最后由 灯笼菜刀王 于 2018-4-30 01:44 编辑 理直气壮的连贴 其实SailCat前辈的技能依赖1.2里就已经可以实现你要的基本效果了 具体做法 : 第一步,先"填弹". 让技能和变量勾搭. 在你要填弹的技能备注#的后面补上 cv={1=>5} 表示使用这个技能要消耗1号变量5点.变量数值不够不让使用, 你的目标3就实现了. 这样1号变量就是这个技能/武器的残弹. --------------------------------------------------------------------------------- 然后就是把它显示出来, 到 window_skill, def draw_item(index) skill = @data[index] if @actor.skill_can_use?(skill.id) self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(skill.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y, bitmap, Rect.new(0, 0, 32, 32), opacity) self.contents.draw_text(x + 32, y, 204, 32, skill.name, 0) self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2) if skill._cv != nil a = skill._cv.keys[0] self.contents.draw_text(x + 200, y, 80, 32, "残弹" + $game_variables[a].to_s, 2) end end 填上红色的部分就OK, 位置可以自己调整, 只要有"填弹"的技能, 就会显示出这个, 没设置填弹不显示. 上面蓝色的那句是"SP消耗" 如果你的热兵器不消耗SP,那可以把上面红色句子改造下 if skill._cv != nil XXXXX else 蓝色句子移到这里来 end 这样显示残弹就不显示SP了. ------------------------------------------------------------------------------ 然后, 塞上这个脚本, 用汉字当做函数名的应该就不会冲突了吧~~~ RUBY 代码复制
WEAPON_AMMO = {10 => [1,1], 28 => [99,5]} # 武器ID => [残弹变量, 普通攻击消耗的子弹数量] MAX_AMMO = {1 =>[10,100], 2 =>[30,101]} # 残弹变量 =>[装填上限,需要的道具ID] 在这里设置武器对应的变量和要使用的弹药就可以了, 按格式, 把要新加的组合塞进大括号里 那个随便弹药都能用的炮先别管...... ----------------------------------------------------------- 然后就是用法 要补充满弹药, 就脚本写 满弹 就好了,注意别用繁体... 可以事件脚本用,也可以塞到任意脚本里. 比如战斗结束后, #-------------------------------------------------------------------------- # ● 战斗结束 # result : 結果 (0:胜利 1:失败 2:逃跑) #-------------------------------------------------------------------------- def battle_end(result) # 清除战斗中标志 $game_temp.in_battle = false # 清除全体同伴的行动 $game_party.clear_actions # 解除战斗用状态 for actor in $game_party.actors actor.remove_states_battle end # 清除敌人 $game_troop.enemies.clear # 调用战斗返回调用 if $game_temp.battle_proc != nil $game_temp.battle_proc.call(result) $game_temp.battle_proc = nil end # 切换到地图画面 满弹 $scene = Scene_Map.new end 这样战斗结束自动补满弹药. 要单独补子弹. 就用事件脚本 $game_actors[编号].上弹 这样就给装备的武器补子弹了. 提示用默认的50号变量, 要改的话就到脚本里改编号就行, 比如最简单最绿色的 显示对话: \V[50] $game_actors[编号].残弹, 这个可以用来得到所持武器的残弹量, 没子弹设置的话,得到的是 -1. 最后, 普通攻击消耗弹药, 没子弹的时候, 选择攻击会一直提示错误音效 找到这个地方, 默认脚本是在 scene battle3里 #-------------------------------------------------------------------------- # ● 刷新画面 (角色命令回合 : 基本命令) #-------------------------------------------------------------------------- def update_phase3_basic_command # 按下 B 键的情况下 if Input.trigger?(Input::B) # 演奏取消 SE $game_system.se_play($data_system.cancel_se) # 转向前一个角色的指令输入 phase3_prior_actor return end # 按下 C 键的情况下 if Input.trigger?(Input::C) # 角色指令窗口光标位置分之 case @actor_command_window.index when 0 # 攻击 if @active_battler.残弹 >= 0 if @active_battler.残弹 == 0 $game_system.se_play($data_system.buzzer_se) return else a = WEAPON_AMMO[@active_battler.weapon_id][0] $game_variables[a] -= WEAPON_AMMO[@active_battler.weapon_id][1] end end # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 设置行动 @active_battler.current_action.kind = 0 @active_battler.current_action.basic = 0 # 开始选择敌人 start_enemy_select when 1 # 特技 塞上红色部分即可 |
本帖最后由 灯笼菜刀王 于 2018-4-29 22:06 编辑 都没考虑UI就风风火火开搞了啊.... 参考咱的 咱是以装备来决定残弹量(弹耗就是SP啦), 炮的是耐久度(装备自身属性), 攻击会消耗耐久, 耐久会多方面耗损, 比如中破大破的时候,舰装会因此受损.可能导致炮报废,. 耐久不满的炮卸下来会直接消失=v=, 可以修理. 快修是消耗品, 使用会消耗持有数量. 装备的时候, 就是从仓库扣去最大携带数量, 如果数量不够,就是有多少装多少 舰载机和快修一样,区别是舰载机的消耗是看挨打方的防空能力和双方的制空权来决定耗损量, 装备后要消耗航空铝来补充数量, (数量根据角色装备格子的搭载量决定, 图上因为不是航母,所以舰载机很少,其实现实中驱逐舰也是搭不了舰载机的啦, 要测试咱就先允许驱逐舰拥有搭载量了 =.=) 以上就是咱的残弹系统 然后看你的, 1, 需要在战斗中切换武器才能使用不同类型的枪械技能,不消耗回合,若实现有难度可消耗回合。 这里可以用, 技能附带公共事件解决, 使用这个技能后,切换武器(至于武器的属性对技能影响, 因为武器是固定的,大可设置成这个技能不吃武器属性, 威力相应调整) 2,部分武器可装填多种类型子弹,主要针对榴弹发射器。若实现有难度就把这武器取消。 多种类型子弹如何体现? ①只要持有它可以用的子弹,那就可以使用它. 这个用or就能搞定. ②装备不同子弹有不同效果, 这个有两种方式,,一,战斗前决定武器装填, 用 子弹附带公共事件,菜单使用解决, 二,战斗中选择技能后,在选择子弹, 不同子弹释放不同技能. 这个效果比较麻烦些,考虑到你的全动画脚本不好兼容... 还是算了= =, 或者战斗中的公共事件能用"选择项"么? 能的话就弹个对话框, 选择项, 然后XX的时候放XX技能..... 3,没子弹了后者当前残弹量不够,技能不能选择,显示为灰色,普通攻击也不能选择,若选择普通攻击,则以文字“弹药不足”作为提示。 这个只需要到skill_can_use? 添加一下判断就行. 普通攻击的话, 两种都可以, 不过考虑到全动画脚本, 就用"不能选择"比较合适, 否则一边显示"弹药不足",一边放攻击动画就那啥了..... 4,子弹不满的情况下,战斗中可消耗回合装填。只填装当前所持武器的。没有该武器的子弹时候不装填,以文字“弹药不足”作为提示 这个只要做个技能, 战斗中使用, 引用公共事件就行 5,战斗结束后若有消耗会自动装填子弹到最大值,若数量不够装满,有多少装多少。 这个战斗结算的时候添加就行. ------------------------------------------ 最主要的是储存方法, 你是只有主角用到枪吧, 也就是不需要考虑"两个人都装备火箭筒, 残弹不同" . 那就用全局变量来保存残弹就好了. 省得什么属性能力上限脚本等来捣乱..... 然后是显示, 技能可以用我的方法, 到技能栏里追加描绘就行了, 主要是普通攻击..... 没地方显示干脆不显示了, 没子弹了就不能普攻, 想看残弹打开技能栏看. 后面的脑洞技能, 用加菲斑竹的那个"战斗5个地方公共事件调用"就可以实现不少~ 而且这个脚本也能实现你的第一个, 先换武器再用技能 以及第二个, 先选择子弹种类再用技能 |
本帖最后由 89444640 于 2018-4-28 16:09 编辑 灯笼菜刀王 发表于 2018-4-28 15:45 这个又要提到脚本问题来了,不是我没画,是程序不支持,就不用提供证据链吧,像素区翻我老帖子能翻出来,两段跳第二段完整动作8帧,比这个流畅多了,脚本要是修成其他帧数,副作用群体动作都得修成8帧包括npc,光默认npc就将近100个,只能缩帧了,还有就是跑动,同样8帧,无奈程序不能同时支持两种,只能缩成4帧。 而且你4帧就4帧吧,还不能好好给我顺序播放停到最后一帧…… 这个其实多少有点带血轮玛利亚的风格,翅膀有光点。血轮玛利亚的是第二段脚下四个光点然后前空翻,图形版月下,玛利亚是三段跳,恶魔城系列三段跳仅此一家,夏洛特是变出扫帚,夏姐是……用腿硬甩过去。 所以综合考虑还是 阿鲁卡多少爷的合适。这个磨导器地图有显示,是个4帧循环的大黑翅膀。 本来是预计程序能修成横向排列随便多少帧数都行的,结果冲突巨大,只能忍了。 两段跳后两个斜角一个直下的踩都画出来了,程序弄不出来,也是只能剧情看片用…… 还有个不想修的bug,空中接触金币什么的事件时候几率角色给刷没了,反正我也修不了,就这样吧,弄完了谁有本事给修好,该给钱给钱就行了。 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-14 23:41
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.