QQ图片20180522095424.png (186.63 KB, 下载次数: 20)
soulsaga 发表于 2018-5-22 13:05
新增UI麻烦在释放..不懂脚本的萌新止步..
灯笼菜刀王 发表于 2018-5-22 14:38
咱歪了一个大大的楼
补上主楼的问题答案.....
LIN.png (181.66 KB, 下载次数: 21)
灯笼菜刀王 发表于 2018-5-22 18:57
你那堆脚本山, 还是直接做定制脚本,不做成插件了, 把昨天soulsaga君帮你改后的最终版本脚本发给 ...
581.25 KB, 下载次数: 43
灯笼菜刀王 发表于 2018-5-23 14:42
现在看昨天写的脚本就发现一堆愚蠢的问题.... emm昨天那肯定是我弟弟写的......
89444640 发表于 2018-5-23 15:39
使用道具增加能量槽可以,但是减少时候出现问题。无论敌人的还是自己的,技能减少还没试。
字体改大点字号 ...
89444640 发表于 2018-5-24 08:37
测试中,想起个事情,当年有个飞机游戏,就是流程特别特别长的哪个,如果通关能打大概2个小时以上,保险是 ...
def 攒必杀(actor,n) a = actor.tp $game_variables[MAX_TP_ID][0] = a if actor.is_a?(Game_Actor) b = $game_variables[MAX_TP_ID][actor.id] != nil ? $game_variables[MAX_TP_ID][actor.id] : 0 if actor.hp <= 0 and DEAD_CLEAN_TP actor.tp = 0 else if ZERO_TP and b == 0 actor.tp = 0 else if n != 0 actor.tp = [[a+n,b*1000+999].min,0].max else actor.tp = 0 end end end else if actor.hp <= 0 and DEAD_CLEAN_TP actor.tp = 0 else if n != 0 actor.tp = [[a+n,3999].min,0].max else actor.tp = 0 end end end if n == 0 p actor.name +"的TP归0" elsif n < 0 p actor.name +"增加"+ n.to_s + "TP" else n > 0 p actor.name +"减少"+ n.to_s + "TP" end end def 葵花宝典(n) a = $date_skills[n]._tp b = $date_skills[n]._kp p "TP是"+a.to_s+";KP是"+b.to_s end
#============================================================================== # ■ Scene_Battle (分割定义 4) #------------------------------------------------------------------------------ # 处理战斗画面的类。 #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● 开始主回合 #-------------------------------------------------------------------------- def start_phase4 # 转移到回合 4 @phase = 4 # 回合数计数 $game_temp.battle_turn += 1 # 搜索全页的战斗事件 for index in 0...$data_troops[@troop_id].pages.size # 获取事件页 page = $data_troops[@troop_id].pages[index] # 本页的范围是 [回合] 的情况下 if page.span == 1 # 设置已经执行标志 $game_temp.battle_event_flags[index] = false end end # 设置角色为非选择状态 @actor_index = -1 @active_battler = nil # 有效化同伴指令窗口 @party_command_window.active = false @party_command_window.visible = false # 无效化角色指令窗口 @actor_command_window.active = false @actor_command_window.visible = false # 设置主回合标志 $game_temp.battle_main_phase = true # 生成敌人行动 for enemy in $game_troop.enemies enemy.make_action end # 生成行动顺序 make_action_orders # 移动到步骤 1 @phase4_step = 1 end #-------------------------------------------------------------------------- # ● 生成行动循序 #-------------------------------------------------------------------------- def make_action_orders # 初始化序列 @action_battlers @action_battlers = [] # 添加敌人到 @action_battlers 序列 for enemy in $game_troop.enemies @action_battlers.push(enemy) end # 添加角色到 @action_battlers 序列 for actor in $game_party.actors @action_battlers.push(actor) end # 确定全体的行动速度 for battler in @action_battlers battler.make_action_speed end # 按照行动速度从大到小排列 @action_battlers.sort! {|a,b| b.current_action.speed - a.current_action.speed } end #-------------------------------------------------------------------------- # ● 刷新画面 (主回合) #-------------------------------------------------------------------------- def update_phase4 case @phase4_step when 1 update_phase4_step1 when 2 update_phase4_step2 when 3 update_phase4_step3 when 4 update_phase4_step4 when 5 update_phase4_step5 when 6 update_phase4_step6 end end #-------------------------------------------------------------------------- # ● 刷新画面 (主回合步骤 1 : 准备行动) #-------------------------------------------------------------------------- def update_phase4_step1 # 隐藏帮助窗口 @help_window.visible = false # 判定胜败 if judge # 胜利或者失败的情况下 : 过程结束 return end # 强制行动的战斗者不存在的情况下 if $game_temp.forcing_battler == nil # 设置战斗事件 setup_battle_event # 执行战斗事件中的情况下 if $game_system.battle_interpreter.running? return end end # 强制行动的战斗者存在的情况下 if $game_temp.forcing_battler != nil # 在头部添加后移动 @action_battlers.delete($game_temp.forcing_battler) @action_battlers.unshift($game_temp.forcing_battler) end # 未行动的战斗者不存在的情况下 (全员已经行动) if @action_battlers.size == 0 # 开始同伴命令回合 start_phase2 return end # 初始化动画 ID 和公共事件 ID @animation1_id = 0 @animation2_id = 0 @common_event_id = 0 # 未行动的战斗者移动到序列的头部 @active_battler = @action_battlers.shift # 如果已经在战斗之外的情况下 if @active_battler.index == nil return end # 连续伤害 if @active_battler.hp > 0 and @active_battler.slip_damage? @active_battler.slip_damage_effect @active_battler.damage_pop = true end # 自然解除状态 @active_battler.remove_states_auto # 刷新状态窗口 @status_window.refresh # 移至步骤 2 @phase4_step = 2 end #-------------------------------------------------------------------------- # ● 刷新画面 (主回合步骤 2 : 开始行动) #-------------------------------------------------------------------------- def update_phase4_step2 # 如果不是强制行动 unless @active_battler.current_action.forcing # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下 if @active_battler.restriction == 2 or @active_battler.restriction == 3 # 设置行动为攻击 @active_battler.current_action.kind = 0 @active_battler.current_action.basic = 0 end # 限制为 [不能行动] 的情况下 if @active_battler.restriction == 4 # 清除行动强制对像的战斗者 $game_temp.forcing_battler = nil # 移至步骤 1 @phase4_step = 1 return end end # 清除对像战斗者 @target_battlers = [] # 行动种类分支 case @active_battler.current_action.kind when 0 # 基本 make_basic_action_result when 1 # 特技 make_skill_action_result when 2 # 物品 make_item_action_result end # 移至步骤 3 if @phase4_step == 2 @phase4_step = 3 end end #-------------------------------------------------------------------------- # ● 生成基本行动结果 #-------------------------------------------------------------------------- def make_basic_action_result # 攻击的情况下 if @active_battler.current_action.basic == 0 # 设置攻击 ID @animation1_id = @active_battler.animation1_id @animation2_id = @active_battler.animation2_id # 行动方的战斗者是敌人的情况下 if @active_battler.is_a?(Game_Enemy) if @active_battler.restriction == 3 target = $game_troop.random_target_enemy elsif @active_battler.restriction == 2 target = $game_party.random_target_actor else index = @active_battler.current_action.target_index target = $game_party.smooth_target_actor(index) end end # 行动方的战斗者是角色的情况下 if @active_battler.is_a?(Game_Actor) if @active_battler.restriction == 3 target = $game_party.random_target_actor elsif @active_battler.restriction == 2 target = $game_troop.random_target_enemy else index = @active_battler.current_action.target_index target = $game_troop.smooth_target_enemy(index) end end # 设置对像方的战斗者序列 @target_battlers = [target] # 应用通常攻击效果 for target in @target_battlers target.attack_effect(@active_battler) 攒必杀(target,BEAT_TP) end 攒必杀(@active_battler,ATTACK_TP) return end # 防御的情况下 if @active_battler.current_action.basic == 1 攒必杀(@active_battler,DEFENSE_TP) # 帮助窗口显示"防御" @help_window.set_text($data_system.words.guard, 1) return end # 逃跑的情况下 if @active_battler.is_a?(Game_Enemy) and @active_battler.current_action.basic == 2 # 帮助窗口显示"逃跑" @help_window.set_text("逃跑", 1) # 逃跑 @active_battler.escape return end # 什么也不做的情况下 if @active_battler.current_action.basic == 3 # 清除强制行动对像的战斗者 $game_temp.forcing_battler = nil # 移至步骤 1 @phase4_step = 1 return end end #-------------------------------------------------------------------------- # ● 设置物品或特技对像方的战斗者 # scope : 特技或者是物品的范围 #-------------------------------------------------------------------------- def set_target_battlers(scope) # 行动方的战斗者是敌人的情况下 if @active_battler.is_a?(Game_Enemy) # 效果范围分支 case scope when 1 # 敌单体 index = @active_battler.current_action.target_index @target_battlers.push($game_party.smooth_target_actor(index)) when 2 # 敌全体 for actor in $game_party.actors if actor.exist? @target_battlers.push(actor) end end when 3 # 我方单体 index = @active_battler.current_action.target_index @target_battlers.push($game_troop.smooth_target_enemy(index)) when 4 # 我方全体 for enemy in $game_troop.enemies if enemy.exist? @target_battlers.push(enemy) end end when 5 # 我方单体 (HP 0) index = @active_battler.current_action.target_index enemy = $game_troop.enemies[index] if enemy != nil and enemy.hp0? @target_battlers.push(enemy) end when 6 # 我方全体 (HP 0) for enemy in $game_troop.enemies if enemy != nil and enemy.hp0? @target_battlers.push(enemy) end end when 7 # 使用者 @target_battlers.push(@active_battler) end end # 行动方的战斗者是角色的情况下 if @active_battler.is_a?(Game_Actor) # 效果范围分支 case scope when 1 # 敌单体 index = @active_battler.current_action.target_index @target_battlers.push($game_troop.smooth_target_enemy(index)) when 2 # 敌全体 for enemy in $game_troop.enemies if enemy.exist? @target_battlers.push(enemy) end end when 3 # 我方单体 index = @active_battler.current_action.target_index @target_battlers.push($game_party.smooth_target_actor(index)) when 4 # 我方全体 for actor in $game_party.actors if actor.exist? @target_battlers.push(actor) end end when 5 # 我方单体 (HP 0) index = @active_battler.current_action.target_index actor = $game_party.actors[index] if actor != nil and actor.hp0? @target_battlers.push(actor) end when 6 # 我方全体 (HP 0) for actor in $game_party.actors if actor != nil and actor.hp0? @target_battlers.push(actor) end end when 7 # 使用者 @target_battlers.push(@active_battler) end end end #-------------------------------------------------------------------------- # ● 生成特技行动结果 #-------------------------------------------------------------------------- def make_skill_action_result # 获取特技 @skill = $data_skills[@active_battler.current_action.skill_id] # 如果不是强制行动 unless @active_battler.current_action.forcing # 因为 SP 耗尽而无法使用的情况下 unless @active_battler.skill_can_use?(@skill.id) # 清除强制行动对像的战斗者 $game_temp.forcing_battler = nil # 移至步骤 1 @phase4_step = 1 return end end # 消耗 SP @active_battler.sp -= @skill.sp_cost 攒必杀(@active_battler,@skill._tp) if @skill._tp != nil # 刷新状态窗口 @status_window.refresh # 在帮助窗口显示特技名 #@help_window.set_text(@skill.name, 1) if @active_battler.is_a?(Game_Enemy) @help_window.set_text(@skill.name, 1) end # 设置动画 ID @animation1_id = @skill.animation1_id @animation2_id = @skill.animation2_id # 设置公共事件 ID @common_event_id = @skill.common_event_id # 设置对像侧战斗者 set_target_battlers(@skill.scope) # 应用特技效果 a = @skill._kp != nil ? @skill._kp : B_SKILL_TP for target in @target_battlers target.skill_effect(@active_battler, @skill) 攒必杀(target,a) end end #-------------------------------------------------------------------------- # ● 生成物品行动结果 #-------------------------------------------------------------------------- def make_item_action_result # 获取物品 @item = $data_items[@active_battler.current_action.item_id] # 因为物品耗尽而无法使用的情况下 unless $game_party.item_can_use?(@item.id) # 移至步骤 1 @phase4_step = 1 return end # 消耗品的情况下 if @item.consumable # 使用的物品减 1 $game_party.lose_item(@item.id, 1) end # 在帮助窗口显示物品名 @help_window.set_text(@item.name, 1) # 设置动画 ID @animation1_id = @item.animation1_id @animation2_id = @item.animation2_id # 设置公共事件 ID @common_event_id = @item.common_event_id # 确定对像 index = @active_battler.current_action.target_index target = $game_party.smooth_target_actor(index) # 设置对像侧战斗者 set_target_battlers(@item.scope) # 应用物品效果 for target in @target_battlers target.item_effect(@item) end end #-------------------------------------------------------------------------- # ● 刷新画面 (主回合步骤 3 : 行动方动画) #-------------------------------------------------------------------------- def update_phase4_step3 # 行动方动画 (ID 为 0 的情况下是白色闪烁) if @animation1_id == 0 @active_battler.white_flash = true else @active_battler.animation_id = @animation1_id @active_battler.animation_hit = true end # 移至步骤 4 @phase4_step = 4 end #-------------------------------------------------------------------------- # ● 刷新画面 (主回合步骤 4 : 对像方动画) #-------------------------------------------------------------------------- def update_phase4_step4 # 对像方动画 for target in @target_battlers target.animation_id = @animation2_id target.animation_hit = (target.damage != "Miss") end # 限制动画长度、最低 8 帧 @wait_count = 8 # 移至步骤 5 @phase4_step = 5 end #-------------------------------------------------------------------------- # ● 刷新画面 (主回合步骤 5 : 显示伤害) #-------------------------------------------------------------------------- def update_phase4_step5 # 隐藏帮助窗口 @help_window.visible = false # 刷新状态窗口 @status_window.refresh # 显示伤害 for target in @target_battlers if target.damage != nil target.damage_pop = true end end # 移至步骤 6 @phase4_step = 6 end #-------------------------------------------------------------------------- # ● 刷新画面 (主回合步骤 6 : 刷新) #-------------------------------------------------------------------------- def update_phase4_step6 # 清除强制行动对像的战斗者 $game_temp.forcing_battler = nil # 公共事件 ID 有效的情况下 if @common_event_id > 0 # 设置事件 common_event = $data_common_events[@common_event_id] $game_system.battle_interpreter.setup(common_event.list, 0) end # 移至步骤 1 @phase4_step = 1 end end
#============================================================================== # ■ Scene_Title #------------------------------------------------------------------------------ # 处理标题画面的类。 #============================================================================== class Scene_Title #-------------------------------------------------------------------------- # ● 住处理 #-------------------------------------------------------------------------- def main # 战斗测试的情况下 if $BTEST battle_test return end # 载入数据库 $data_actors = load_data("Data/Actors.rxdata") $data_classes = load_data("Data/Classes.rxdata") $data_skills = load_data("Data/Skills.rxdata") $data_items = load_data("Data/Items.rxdata") $data_weapons = load_data("Data/Weapons.rxdata") $data_armors = load_data("Data/Armors.rxdata") $data_enemies = load_data("Data/Enemies.rxdata") $data_troops = load_data("Data/Troops.rxdata") $data_states = load_data("Data/States.rxdata") $data_animations = load_data("Data/Animations.rxdata") $data_tilesets = load_data("Data/Tilesets.rxdata") $data_common_events = load_data("Data/CommonEvents.rxdata") $data_system = load_data("Data/System.rxdata") # 生成系统对像 $game_system = Game_System.new # 生成标题图形 @sprite = Sprite.new @sprite.bitmap = RPG::Cache.title($data_system.title_name) $game_variables[MAX_TP_ID] = [] # 生成命令窗口 s1 = "新游" s2 = "继续" s3 = "退出" @command_window = Window_Command.new(192, [s1, s2, s3]) @command_window.back_opacity = 160 @command_window.x = 320 - @command_window.width / 2 @command_window.y = 288 # 判定继续的有效性 # 存档文件一个也不存在的时候也调查 # 有効为 @continue_enabled 为 true、無効为 false @continue_enabled = false for i in 0..3 if FileTest.exist?("Save#{i+1}.rxdata") @continue_enabled = true end end # 继续为有效的情况下、光标停止在继续上 # 无效的情况下、继续的文字显示为灰色 if @continue_enabled @command_window.index = 1 else @command_window.disable_item(1) end # 演奏标题 BGM $game_system.bgm_play($data_system.title_bgm) # 停止演奏 ME、BGS Audio.me_stop Audio.bgs_stop # 执行过渡 Graphics.transition # 主循环 loop do # 刷新游戏画面 Graphics.update # 刷新输入信息 Input.update # 刷新画面 update # 如果画面被切换就中断循环 if $scene != self break end end # 装备过渡 Graphics.freeze # 释放命令窗口 @command_window.dispose # 释放标题图形 @sprite.bitmap.dispose @sprite.dispose end #-------------------------------------------------------------------------- # ● 刷新画面 #-------------------------------------------------------------------------- def update # 刷新命令窗口 @command_window.update # 按下 C 键的情况下 if Input.trigger?(Input::C) # 命令窗口的光标位置的分支 case @command_window.index when 0 # 新游戏 command_new_game when 1 # 继续 command_continue when 2 # 退出 command_shutdown end end end #-------------------------------------------------------------------------- # ● 命令 : 新游戏 #-------------------------------------------------------------------------- def command_new_game # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 停止 BGM Audio.bgm_stop # 重置测量游戏时间用的画面计数器 Graphics.frame_count = 0 # 生成各种游戏对像 $game_temp = Game_Temp.new $game_system = Game_System.new $game_switches = Game_Switches.new $game_variables = Game_Variables.new $game_self_switches = Game_SelfSwitches.new $game_screen = Game_Screen.new $game_actors = Game_Actors.new $game_party = Game_Party.new $game_troop = Game_Troop.new $game_map = Game_Map.new $game_player = Game_Player.new # 设置初期同伴位置 $game_party.setup_starting_members # 设置初期位置的地图 $game_map.setup($data_system.start_map_id) # 主角向初期位置移动 $game_player.moveto($data_system.start_x, $data_system.start_y) # 刷新主角 $game_player.refresh # 执行地图设置的 BGM 与 BGS 的自动切换 $game_map.autoplay # 刷新地图 (执行并行事件) $game_map.update $game_variables[MAX_TP_ID] = [] # 切换地图画面 $scene = Scene_Map.new end #-------------------------------------------------------------------------- # ● 命令 : 继续 #-------------------------------------------------------------------------- def command_continue # 继续无效的情况下 unless @continue_enabled # 演奏无效 SE $game_system.se_play($data_system.buzzer_se) return end # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 切换到读档画面 $scene = Scene_Load.new end #-------------------------------------------------------------------------- # ● 命令 : 退出 #-------------------------------------------------------------------------- def command_shutdown # 演奏确定 SE $game_system.se_play($data_system.decision_se) # BGM、BGS、ME 的淡入淡出 Audio.bgm_fade(800) Audio.bgs_fade(800) Audio.me_fade(800) # 退出 $scene = nil end #-------------------------------------------------------------------------- # ● 战斗测试 #-------------------------------------------------------------------------- def battle_test # 载入数据库 (战斗测试用) $data_actors = load_data("Data/BT_Actors.rxdata") $data_classes = load_data("Data/BT_Classes.rxdata") $data_skills = load_data("Data/BT_Skills.rxdata") $data_items = load_data("Data/BT_Items.rxdata") $data_weapons = load_data("Data/BT_Weapons.rxdata") $data_armors = load_data("Data/BT_Armors.rxdata") $data_enemies = load_data("Data/BT_Enemies.rxdata") $data_troops = load_data("Data/BT_Troops.rxdata") $data_states = load_data("Data/BT_States.rxdata") $data_animations = load_data("Data/BT_Animations.rxdata") $data_tilesets = load_data("Data/BT_Tilesets.rxdata") $data_common_events = load_data("Data/BT_CommonEvents.rxdata") $data_system = load_data("Data/BT_System.rxdata") # 重置测量游戏时间用的画面计数器 Graphics.frame_count = 0 # 生成各种游戏对像 $game_temp = Game_Temp.new $game_system = Game_System.new $game_switches = Game_Switches.new $game_variables = Game_Variables.new $game_self_switches = Game_SelfSwitches.new $game_screen = Game_Screen.new $game_actors = Game_Actors.new $game_party = Game_Party.new $game_troop = Game_Troop.new $game_map = Game_Map.new $game_player = Game_Player.new # 设置战斗测试用同伴 $game_party.setup_battle_test_members $game_variables[MAX_TP_ID] = [] # 设置队伍 ID、可以逃走标志、战斗背景 $game_temp.battle_troop_id = $data_system.test_troop_id $game_temp.battle_can_escape = true $game_map.battleback_name = $data_system.battleback_name # 演奏战斗开始 BGM $game_system.se_play($data_system.battle_start_se) # 演奏战斗 BGM #$game_system.bgm_play($game_system.battle_bgm) # 切换到战斗画面 $scene = Scene_Battle.new end end
灯笼菜刀王 发表于 2018-5-24 11:46
是你设置问题~~
增加怒气值1000点#TP=1000;@蓄力 ←要用小写
89444640 发表于 2018-5-24 15:14
#tp=-1000;@招式名称 脚本 葵花宝典(86) 是跳[] nil
这样算设置正常吧?进去测试时到是确实是不能选择 ...
89444640 发表于 2018-5-24 17:01
添字(actor.hp.to_s,actor_x+81,48,2,20,72,16)#( 描绘的字,x,y, 对齐,字体大小,显示字体矩形的长,显示字体 ...
FMBS1.png (466.48 KB, 下载次数: 39)
FMBS2.png (797.44 KB, 下载次数: 35)
FMBS3.png (133.52 KB, 下载次数: 32)
灵梦假.png (57.05 KB, 下载次数: 39)
灯笼菜刀王 发表于 2018-5-24 21:56
动态槽搞定~~ 分两个脚本替换掉就OK.
动态槽为竖向排列N祯的图片, N任意. 最后一祯之后会循 ...
89444640 发表于 2018-5-25 07:25
测试汇报
我现改怒气槽去
89444640 发表于 2018-5-25 11:26
更新Scene_Battle 1
重新搜索 tp_show
46 @tp_show = Window_tpshow.new if $game_switches[TP_VISIBLE]
灯笼菜刀王 发表于 2018-5-25 12:06
,其他人不显示是因为忘记乘160了... 给i后面加上 *160就OK
添动槽("动态TP条",actor.tp%1000, ...
89444640 发表于 2018-5-25 14:20
上面为显示效果,
下面为我想要的效果。怎么调一下呢?歪了这个我调过来了但是遮挡,我想让它跟调好的H ...
FMBS1.png (323.24 KB, 下载次数: 36)
FMBS2.png (552.42 KB, 下载次数: 31)
FMBS3.png (548.59 KB, 下载次数: 28)
FMBS4.png (391.25 KB, 下载次数: 30)
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |