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

Project1

 找回密码
 注册会员
搜索
查看: 1162|回复: 4
打印 上一主题 下一主题

[已经过期] 如果是当前领导者=无 将画面聚焦=map.x值最大的同伴上

[复制链接]

Lv4.逐梦者

梦石
0
星屑
6286
在线时间
1103 小时
注册时间
2015-8-15
帖子
658
跳转到指定楼层
1
发表于 2023-4-10 09:04:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 金芒芒 于 2023-4-10 09:06 编辑

@current_leader.kds if @current_leader != nil

Lv5.捕梦者

梦石
24
星屑
7017
在线时间
247 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

2
发表于 2023-4-10 14:19:16 | 只看该作者
@current_leader 貌似又是一个非原XP默认变量,把mod脚本发出来吧
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6286
在线时间
1103 小时
注册时间
2015-8-15
帖子
658
3
 楼主| 发表于 2023-4-10 14:22:32 | 只看该作者
纯属小虫 发表于 2023-4-10 14:19
@current_leader 貌似又是一个非原XP默认变量,把mod脚本发出来吧
  1. class Scene_Map
  2.   #=======================================================
  3.   # EFS 战斗模式
  4.   # 1 : 混战 (阵形不可用,默认全军冲锋,默认出生点)
  5.   # 2 : 正常阵形状 (正常有阵形,默认推进,默认出生点)
  6.   # 3 : 伏击战 (守军士气大跌,被夹击包围,伏击出生点)
  7.   # 4 : 攻城战  (守军站在墙上指定位置,攻方默认出生点,守军城墙点)
  8.   # 5 : 巷战    (有居民助战和乱窜,攻方默认出生点,守方分队出生点)
  9.   # 6 : 扫荡战  (抽取部分攻方打守方(每队5人内),混战,默认出生点)
  10.   
  11.   #=======================================================
  12.   attr_accessor :player_controll
  13.   attr_accessor :lisenter
  14.   attr_accessor :group_lisenter
  15.   attr_accessor :current_leader
  16.   attr_accessor :efs_mode
  17.   #attr_accessor :efs_winner
  18.   attr_reader  :efs_after_battle_level
  19.   #--------------------------------------------------------
  20.   # 开始EFS   _update_efs
  21.   #--------------------------------------------------------   
  22.   def start_efs(attacker,defender,mode = 1)
  23.     #$game_system.bgm_memorize
  24.    
  25.      
  26.     $game_screen.start_tone_change(Tone.new(-255,-255,-255), 20)
  27.    
  28.     play_anime(attacker,attacker.event.character_name + "-atk-1")
  29.     play_anime(defender,defender.event.character_name + "-def")
  30.    
  31.     @efs_mode = mode
  32.     @attacker = attacker
  33.     @defender = defender
  34.     #等待一会儿
  35.     wait_a_moment(true)
  36.    
  37.     # 设置主角的透明状态
  38.     $game_player.transparent = true

  39.     #清除地图切换状态
  40.     @map_changed = false
  41.     #战略界面
  42.     $game_switches[3] = false
  43.     #刷新板子
  44.     @winstatus.clean_my_actor
  45.    
  46.     update_windows
  47.    
  48.    
  49. =begin
  50.     #交战(切换地图)
  51.     load_or_map_data #记录旧的地图信息
  52.     set_new_map_info(attacker,map_id)
  53.     change_map   #开始切换地图


  54. =end
  55.    
  56.     #交战(切换地图)
  57.     engage(attacker,defender)
  58.     #更新直到切换地图
  59.     $game_system.update
  60.     $game_screen.update
  61.     $game_map.update
  62.      change_map
  63.     #切换地图
  64.     transfer_player
  65.    
  66.    
  67.     #设置对手
  68.     attacker.set_target(defender)
  69.     defender.set_target(attacker)
  70.     #开始初始化
  71.     #如果地图更改,则efs主初始化(攻击者、防御者、@efs模式)
  72.     efs_main_initialize(attacker,defender,@efs_mode) if @map_changed
  73.    
  74.     #是否由玩家控制
  75.     @player_controll =  check_player_controll
  76.    
  77.    
  78.     #根据战斗模式设置
  79.    
  80.    
  81.     #初始队列 将它们分组
  82.     group_them_up

  83.    
  84.     #各种刷新
  85.     Graphics.update
  86.     Input.update
  87.     _update_efs
  88.     #将画面聚焦到领导者
  89.    # @现任领导人。kds如果是当前领导者!=无
  90.     @current_leader.kds if @current_leader != nil
  91.     #改变画面颜色
  92.     $game_screen.start_tone_change(Tone.new(@efs_tone_R,@efs_tone_G,@efs_tone_B), 20)
  93.     #等待一会儿   
  94.     wait_a_moment(true)
  95.     #开启消息
  96.     Notification.show
  97.     #显示提示
  98.     Graphics.tips("消灭敌人!")
  99.     #$game_switches[10] = true

  100.     #角色信息
  101.     #@efs_character_bar.visible = true
  102.     #@efs_character_bar.display_or_not
  103.     #@efs_item_bar.visible = true
  104.    
  105.     #主循环Main loop for efs
  106.     loop do  #===============================↑战斗前
  107.       #提示消息更新
  108.       Notification.update
  109.       #画面与输入的更新
  110.       Graphics.update                        
  111.       Input.update
  112.       #更新EFS系统
  113.       _update_efs                           #←战斗中
  114.       #如果不在EFS就中断循环
  115.       break unless $game_temp.inefs
  116.     end    #================================ ↓战斗后
  117.    

  118.    # @efs_character_bar.visible = false
  119.    # @efs_item_bar.visible = false
  120.    
  121.     #改变画面颜色
  122.     $game_screen.start_tone_change(Tone.new(@efs_tone_R,@efs_tone_G,@efs_tone_B), 20)
  123.    
  124.     #$game_system.bgm_restore
  125.    
  126.      #等待一会儿
  127.     wait_a_moment(true)
  128.    
  129.    
  130.     #战斗结束总评
  131.     p "战斗结束总评 to be added"
  132.    
  133.     #@efs_winner =
  134.    
  135.    
  136.     $game_system.bgm_play($game_system.battle_bgm)
  137.    
  138.    
  139.     #清除双方的死亡士兵
  140.     attacker.delete_all_dead
  141.     defender.delete_all_dead
  142.     #玩家控制 = false
  143.     @player_controll = false
  144.     #清空对手
  145.     attacker.set_target(nil)
  146.     defender.set_target(nil)
  147.    
  148.     # 设置主角的透明状态
  149.     $game_player.transparent = false
  150.     #开启战略菜单
  151.     $game_switches[3] = true
  152.     #更新窗口
  153.     update_windows
  154.     #更新画面
  155.     Graphics.update
  156.     $game_system.update
  157.     $game_screen.update
  158.     $game_map.update
  159.    
  160.     # 演奏战斗 BGM
  161.     #$game_system.bgm_play($game_system.battle_bgm)
  162.    
  163.   end  
  164.   #--------------------------------------------------------
  165.   # 开始EFS 在非SLG情况下   _update_efs
  166.   #--------------------------------------------------------   
  167.   def start_efs_nonslg(attacker,defender,map_id,mode = 2,bool = false,for_titile = false)
  168.     @efs_story_mode = bool
  169.     if bool
  170.       $game_switches[3] = false
  171.       $game_switches[6] = true
  172.       $game_switches[10] = false
  173.       #Notification.pause = true
  174.     end  

  175.        # 记忆主角行走图
  176.     @role_walk_graphic = $game_player.character_name
  177.     # 生成光标
  178.     $game_player.character_name = Wzj::CURSOR
  179.    
  180.    
  181.     $game_screen.start_tone_change(Tone.new(-255,-255,-255), 20)
  182.     @efs_mode = mode
  183.     @attacker = attacker
  184.     @defender = defender
  185.    
  186.     # 设置主角的透明状态
  187.     $game_player.transparent = true
  188.    
  189.     #清除地图切换状态
  190.     @map_changed = false

  191.     #交战(切换地图)
  192.     load_or_map_data #记录旧的地图信息
  193.     set_new_map_info(attacker,map_id)
  194.     change_map   #开始切换地图
  195.     #更新直到切换地图
  196.     $game_system.update
  197.     $game_screen.update
  198.     $game_map.update
  199.     change_map
  200.     #切换地图
  201.     transfer_player
  202.     #设置对手
  203.     attacker.set_target(defender)
  204.     defender.set_target(attacker)
  205.     #开始初始化
  206.     efs_main_initialize(attacker,defender,@efs_mode) if @map_changed
  207.    
  208.     #是否由玩家控制
  209.     @player_controll =  check_player_controll
  210.     group_them_up #注意是否是战斗移动部分

  211.     #各种刷新
  212.     Graphics.update
  213.     Input.update
  214.     _update_efs
  215.     #将画面聚焦到领导者
  216.     @current_leader.kds if @current_leader != nil
  217.     #改变画面颜色
  218.     $game_screen.start_tone_change(Tone.new(@efs_tone_R,@efs_tone_G,@efs_tone_B), 20)
  219.     #等待一会儿   
  220.     wait_a_moment(true)
  221.     #开启消息
  222.     Notification.hide if @efs_story_mode


  223.    
  224.     #主循环Main loop for efs
  225.     loop do  #===============================↑战斗前
  226.       #提示消息更新
  227.       Notification.update
  228.       #画面与输入的更新
  229.       Graphics.update                        
  230.       Input.update
  231.       #更新EFS系统
  232.       _update_efs                           #←战斗中
  233.       #如果不在EFS就中断循环
  234.       break if ! $game_temp.inefs or $scene != self  
  235.     end    #================================ ↓战斗后
  236.    
  237.    
  238.     #改变画面颜色
  239.     $game_screen.start_tone_change(Tone.new(@efs_tone_R,@efs_tone_G,@efs_tone_B), 20)
  240.    
  241.     #等待一会儿
  242.     wait_a_moment(true)
  243.    

  244.     #清除双方的死亡士兵
  245.     attacker.delete_all_dead
  246.     defender.delete_all_dead
  247.     #玩家控制 = false
  248.     @player_controll = false
  249.     #清空对手
  250.     attacker.set_target(nil)
  251.     defender.set_target(nil)
  252.    
  253.     # 设置主角的透明状态
  254.     $game_player.transparent = false
  255.    
  256.     $game_player.character_name = @role_walk_graphic
  257.    
  258.    
  259.     #更新画面
  260.     Graphics.update
  261.     $game_system.update
  262.     $game_screen.update
  263.     $game_map.update
  264.   
  265.     @efs_story_mode = false

  266.    
  267.   end
  268.   #--------------------------------------------------------
  269.   # 设置新地图信息
  270.   #--------------------------------------------------------
  271.   def set_new_map_info(attacker,new_map)
  272.     #计算各种坐标
  273.     b = load_data("Data/MapInfos.rxdata")[new_map].name.split(";")
  274.     o0 = [b[1].split(",")[0].to_i,b[1].split(",")[1].to_i]
  275.     o1 = [b[2].split(",")[0].to_i,b[2].split(",")[1].to_i]   
  276.     e0 = [b[3].split(",")[0].to_i,b[3].split(",")[1].to_i]
  277.     e1 = [b[4].split(",")[0].to_i,b[4].split(",")[1].to_i]
  278.     if attacker.player_team
  279.     @target_x = (o0[0]+o1[0])/2
  280.     @target_y = (o0[1]+o1[1])/2
  281.     @e_target_x = (e0[0]+e1[0])/2
  282.     @e_target_y = (e0[1]+e1[1])/2
  283.     else
  284.     @e_target_x = (o0[0]+o1[0])/2
  285.     @e_target_y = (o0[1]+o1[1])/2
  286.     @target_x = (e0[0]+e1[0])/2
  287.     @target_y = (e0[1]+e1[1])/2
  288.     end
  289.     #目标地图
  290.     @target_map_id = new_map
  291.     #计算方向
  292.    
  293.    
  294.     @target_d = get_d_toward(@target_x,@target_y,@e_target_x,@e_target_y)
  295.     @e_target_d = get_d_toward(@e_target_x,@e_target_y,@target_x,@target_y)
  296.    
  297.    
  298.   end
  299.   #--------------------------------------------------------
  300.   # EFS系统:刷新游戏
  301.   #--------------------------------------------------------
  302.   def _update_efs   
  303.     #-----------------------------------------------
  304.     #UI更新
  305.     #@efs_character_bar.update
  306.     #@efs_item_bar.update
  307.    
  308.     #画面、地图刷新
  309.     $game_system.update
  310.     $game_screen.update
  311.     $game_map.update
  312.     #各种刷新
  313.     @spriteset.update
  314.     @message_window.update
  315.    

  316.     #各种场合
  317.     if @efs_victory or @efs_all_dead or @efs_escape
  318.       efs_battle_end
  319.       return
  320.     end
  321.    
  322.     #---------------------------------------------------
  323.     # @@@@↓主内容↓@@@@@
  324.     #---------------------------------------------------
  325.    
  326.     @group_think_counter += 1
  327.     #我军群组s思考
  328.     efs_team_think
  329.     #敌军群组s思考
  330.     efs_enermy_think
  331.    
  332.    
  333.    
  334.    
  335.    
  336.     #---------------------------------------------------
  337.     #如果有窗户显示啥也不做
  338.     return if $game_temp.message_window_showing or $game_temp.inefs == false
  339.     # 事件解释器在执行则返回
  340.    # return if @xn_srpg_interpreter.running?
  341.     #---------------------------------------------------
  342.    
  343.     # 刷新EFS输入
  344.     _update_efs_input
  345.    
  346.    
  347.   end  
  348.   
  349.   
  350.   #--------------------------------------------------------
  351.   # EFS系统:己方思考
  352.   #--------------------------------------------------------  
  353.   #暂时使用最近的敌人当作目标
  354.   def efs_team_think
  355.    
  356.     return if @group_think_counter < @group_think_period
  357.     for team in @team_groups
  358.       next if team.captain==nil
  359.       team.update_morale
  360.       zhansun = team.get_zhansun_inbattle
  361.       #next if team.group_move_type == 4
  362.        next if team.group_move_type == 3 or team.group_move_type == 4

  363.       
  364.       return if @player_controll
  365.       
  366.       
  367.       list = []
  368.       for enermy in @enermy_groups
  369.         next if enermy.captain == nil
  370.         x1=team.captain.x
  371.         y1=team.captain.y
  372.         x2=enermy.captain.x
  373.         y2=enermy.captain.y
  374.         list.push juli(x1,y1,x2,y2)
  375.       end
  376.       team.set_target(@enermy_groups[list.index(list.min)])
  377.    
  378.       arrow_hit_num = team.get_num_hit_by_missile
  379.       reach_arrow_limit = arrow_hit_num > 5
  380.    
  381.       
  382.       case team.group_type
  383.       when 0
  384.         if team.check_engage(list.min) or zhansun <= 0.8 or reach_arrow_limit
  385.           team.charge     
  386.         else  
  387.           team.advance_forward
  388.         end
  389.       when 1
  390.         if team.check_engage(list.min) or zhansun <= 0.8 or reach_arrow_limit
  391.           team.charge     
  392.         else  
  393.           team.advance_forward
  394.         end
  395.       when 2  
  396.       if zhansun <= 0.5 or reach_arrow_limit
  397.         team.charge     
  398.       else  
  399.         team.advance_forward
  400.       end
  401.       when 3  
  402.       if zhansun <= 0.65 or reach_arrow_limit
  403.         team.charge     
  404.       else  
  405.         team.advance_forward
  406.       end  
  407.       when 4   
  408.        if team.check_engage(list.min) or reach_arrow_limit
  409.         team.charge     
  410.       else  
  411.         team.advance_forward
  412.       end
  413.       when 5
  414.       if team.check_engage(list.min)
  415.         #team.charge     
  416.       elsif zhansun <= 0.8   or reach_arrow_limit
  417.         team.charge
  418.       else  
  419.         team.advance_forward
  420.       end
  421.       else
  422.         if team.check_engage(list.min) or zhansun <= 0.8 or reach_arrow_limit
  423.           team.charge     
  424.         else  
  425.           team.advance_forward
  426.         end
  427.       end
  428.       
  429.       
  430.       
  431.     end  
  432.    
  433.    
  434.    
  435.    
  436.   end
  437.   #--------------------------------------------------------
  438.   # EFS系统:敌人方思考
  439.   #--------------------------------------------------------  
  440.   def efs_enermy_think
  441.     return if @group_think_counter < @group_think_period
  442.     @group_think_counter = 0
  443.    
  444.     for team in @enermy_groups
  445.       
  446.       next if team.captain==nil
  447.       
  448.       team.update_morale
  449.       
  450.       arrow_hit_num = team.get_num_hit_by_missile
  451.       reach_arrow_limit = arrow_hit_num > 5
  452.       #team.reduce_num_hit_by_missile
  453.       
  454.       
  455.       
  456.       zhansun = team.get_zhansun_inbattle

  457.       next if team.group_move_type == 3 or team.group_move_type == 4
  458.      #next if team.group_move_type == 4
  459.       list = []
  460.       for enermy in @team_groups
  461.         next if enermy.captain == nil
  462.         x1=team.captain.x
  463.         y1=team.captain.y
  464.         x2=enermy.captain.x
  465.         y2=enermy.captain.y
  466.         list.push juli(x1,y1,x2,y2)
  467.       end
  468.       
  469.       
  470.       team.set_target(@team_groups[list.index(list.min)])
  471.       
  472.       
  473.      # if team.check_engage(list.min) or zhansun <= 0.8
  474.      #p team.group_type
  475.      
  476.      case team.group_type
  477.      when 0
  478.        if team.check_engage(list.min) or zhansun <= 0.8 or reach_arrow_limit
  479.         team.charge     
  480.       else  
  481.         team.advance_forward
  482.       end  
  483.      when 1
  484.        if team.check_engage(list.min) or zhansun <= 0.8 or reach_arrow_limit
  485.         team.charge     
  486.       else  
  487.         team.advance_forward
  488.       end  
  489.      when 2  
  490.       if zhansun <= 0.5 or reach_arrow_limit
  491.         team.charge     
  492.       else  
  493.         team.advance_forward
  494.       end  
  495.      when 3
  496.       if zhansun <= 0.65 or reach_arrow_limit
  497.         team.charge     
  498.       else  
  499.         team.advance_forward
  500.       end  
  501.      when 4  
  502.       
  503.        if team.check_engage(list.min) or reach_arrow_limit
  504.         team.charge     
  505.       else  
  506.         team.advance_forward
  507.       end
  508.       
  509.      when 5
  510.       
  511.       if team.check_engage(list.min) or reach_arrow_limit
  512.         #team.charge     
  513.       elsif zhansun <= 0.8   
  514.         team.charge
  515.       else  
  516.         team.advance_forward
  517.       end
  518.      
  519.      end
  520.      

  521.       
  522.       
  523.       
  524.     end  
  525.    
  526.    
  527.   end  

  528.    
  529.   #--------------------------------------------------------------------------
  530.   # ● 判断全灭
  531.   #--------------------------------------------------------------------------
  532.   def check_losing
  533.     @team_groups.each do |team|
  534.         team.fighter.each do |f|
  535.           return unless f.dead? or f.removed
  536.         end  
  537.     end
  538.     @efs_all_dead = true
  539.   end
  540.   #--------------------------------------------------------------------------
  541.   # ● 判断胜利
  542.   #--------------------------------------------------------------------------
  543.   def check_winning
  544.     @enermy_groups.each do |e|
  545.         e.fighter.each do |f|
  546.           return unless f.dead? or f.removed
  547.         end  
  548.     end
  549.     @efs_victory = true
  550.   end     
  551.    
  552.   def change_fighter_move_type
  553.     @team_groups.each do |team|
  554.         team.fighter.each do |f|
  555.           next if f.dead?
  556.           f.move_type = 5
  557.           f.move_frequency = 3
  558.         end  
  559.     end
  560.     @enermy_groups.each do |e|
  561.         e.fighter.each do |f|
  562.            next if f.dead?
  563.            f.move_type = 5
  564.            f.move_frequency = 3
  565.         end  
  566.     end
  567.    
  568.   end
  569.   
  570.   
  571.   def display_battle_end_message
  572.     if @efs_victory
  573.       Notification.post("战斗胜利... 按下Tab键返回")
  574.       #$game_system.me_play($game_system.battle_end_me)
  575.     elsif @efs_all_dead
  576.       Notification.post("战斗失败... 按下Tab键返回")
  577.       #$game_system.me_play($data_system.gameover_me)
  578.     else
  579.       Notification.post("全军撤退... 按下Tab键返回")
  580.        #$game_system.se_play($game_system.escape_se)
  581.     end  
  582.   end
  583.   #--------------------------------------------------------
  584.   # EFS系统:战后处理
  585.   #--------------------------------------------------------  
  586.   def efs_battle_end
  587.    
  588.     #unless $game_temp.inslg
  589.           if @efs_story_mode or $强制返回 != nil
  590.       efs_battle_end_nonslg
  591.       return
  592.     end  
  593.     #Audio.me_play(filename[, volume[, pitch]])
  594.    

  595.    
  596.     counter_message = 0
  597.    
  598.      #displaying message
  599.     display_battle_end_message
  600.     if @efs_victory
  601.       $game_system.me_play($game_system.battle_end_me)
  602.     elsif @efs_all_dead
  603.       $game_system.me_play($data_system.gameover_me)
  604.     else
  605.        $game_system.se_play($game_system.escape_se)
  606.     end  
  607.                
  608.                
  609.     change_fighter_move_type
  610.    
  611.     loop do
  612.       #updating every thing
  613.       $game_system.update
  614.       $game_screen.update
  615.       $game_map.update
  616.       Notification.update
  617.       Graphics.update
  618.       Input.update
  619.       _update_efs_input
  620.       @spriteset.update
  621.       @message_window.update
  622.       #displaying message
  623.       counter_message+=1
  624.     if  counter_message >= 40*7
  625.       display_battle_end_message
  626.       counter_message = 0
  627.     end
  628.     #if Tab is pressed
  629.       if Kboard.keyboard($R_Key_TAB)
  630.       
  631.         
  632.         
  633.       #p  "战斗结束界面 to be added"
  634.       
  635.      @efs_after_battle_level =  judge_battle_level
  636.      p Wzj::EFS_AFTER_BATTLE_TEXT[@efs_after_battle_level]
  637.      
  638.      
  639.       after_battle_statistics

  640.       
  641.       $game_screen.start_tone_change(Tone.new(-255,-255,-255), 20)
  642.          wait_a_moment(true)
  643.         $game_switches[5] = false
  644.         $game_switches[6] = false
  645.         back_to_map
  646.         $game_temp.inefs = false
  647.         break
  648.       end
  649.    
  650.     end
  651.    
  652.    
  653.   end   
  654.   
  655.   #--------------------------------------------------------
  656.   # EFS系统:战后处理
  657.   #--------------------------------------------------------  
  658.   def efs_battle_end_nonslg
  659.     change_fighter_move_type
  660.    
  661.     #loop do
  662.       $game_system.update
  663.       $game_screen.update
  664.       $game_map.update
  665.       Notification.update
  666.       Graphics.update
  667.       Input.update
  668.       _update_efs_input
  669.       @spriteset.update
  670.       @message_window.update
  671.    
  672.     #end
  673.       $game_screen.start_tone_change(Tone.new(-255,-255,-255), 20)
  674.       wait_a_moment
  675.         $game_switches[5] = false
  676.         $game_switches[6] = false
  677.        #$game_switches[10] = false
  678.         back_to_map
  679.         $game_temp.inefs = false
  680.   end
  681.       
  682.       
  683.       
  684.   #--------------------------------------------------------
  685.   # 判断胜利级别
  686.   # 0 一败涂地
  687.   # 1 一败涂地
  688.   # 2 一败涂地
  689.   # 3 寡不敌众
  690.   # 4 血战惜败
  691.   # 5 不相上下
  692.   # 6 血战险胜
  693.   # 7 战果辉煌
  694.   # 8 史诗大捷
  695.   # 9 史诗大捷
  696.   # 10史诗大捷
  697.   #--------------------------------------------------------
  698.   

  699.   
  700.   
  701.   def judge_battle_level
  702.     team_sum = 0
  703.     enermy_sum = 0
  704.     @team_groups.each do |groups|
  705.       team_sum += groups.alive_while_starting
  706.     end
  707.     @enermy_groups.each do |groups|
  708.       enermy_sum += groups.alive_while_starting
  709.     end   
  710.     team_down = 0
  711.     enermy_down = 0
  712.     for f in $game_map.fighters.values
  713.       if f.team == 1
  714.         if f.dead?
  715.          team_down += 1
  716.         end  
  717.       else#========
  718.         if f.dead?
  719.          enermy_down += 1
  720.         end  
  721.       end #if team
  722.     end  #do
  723.     team_r = team_down.to_f/team_sum
  724.     enermy_r = enermy_down.to_f/enermy_sum
  725.     if @efs_victory
  726.       score =  (5-team_r*5+enermy_r*5).round
  727.       score = [[score,6].max,10].min
  728.     else
  729.       
  730.       score = 10 - (team_r*5+ 5-enermy_r*5).round
  731.       score = [[score,0].max,4].min
  732.     end  
  733.     return score
  734.   end  
  735.       
  736.       
  737.   #--------------------------------------------------------
  738.   # 功能函数 :战后统计  实用度:★★
  739.   #--------------------------------------------------------
  740.   def after_battle_statistics
  741.     team_dead = 0
  742.     enermy_dead = 0
  743.     team_wound = 0
  744.     enermy_wound = 0
  745.     team_retreat = 0
  746.     enermy_retreat = 0
  747.    
  748.     for f in $game_map.fighters.values
  749.       if f.team == 1
  750.         if f.removed
  751.           team_retreat+=1
  752.           next
  753.         elsif f.dead?
  754.           if f.killed
  755.             team_dead += 1
  756.           else
  757.             team_wound += 1
  758.           end  
  759.           next
  760.         end  
  761.       else#========
  762.         if f.removed
  763.           enermy_retreat+=1
  764.           next
  765.         elsif f.dead?
  766.           if f.killed
  767.             enermy_dead += 1
  768.           else
  769.             enermy_wound += 1
  770.           end  
  771.           next
  772.         end  
  773.       end #if team
  774.     end  #do
  775.     Notification.post("我军阵亡:"+team_dead.to_s)
  776.     Notification.post("我军受伤:"+team_wound.to_s)
  777.     Notification.post("我军撤退:"+team_retreat.to_s)
  778.     Notification.post("敌军阵亡:"+enermy_dead.to_s)
  779.     Notification.post("敌军受伤:"+enermy_wound.to_s)
  780.     Notification.post("敌军撤退:"+enermy_retreat.to_s)
  781.    
  782.   end#def
  783.   #--------------------------------------------------------
  784.   # 移除死亡士兵      ★★★★★
  785.   #--------------------------------------------------------
  786.   def delete_dead_fighter
  787.    
  788.    
  789.    
  790.    
  791.   end
  792.   
  793.   #--------------------------------------------------------
  794.   # 功能函数 :求两点间的距离  实用度:★★★★★
  795.   #--------------------------------------------------------
  796.   def juli(x1, y1, x2, y2)
  797.     return (x1 - x2).abs + (y1 - y2).abs
  798.   end  
  799.   
  800.   
  801.   
  802.   
  803.   #--------------------------------------------------------
  804.   # 自动战斗  实用度:★★★
  805.   #--------------------------------------------------------
  806.   def efs_auto_battle(attacker, defender)
  807.     #战前补充
  808.     attacker.refill
  809.     defender.refill
  810.    
  811.     a_hp=0
  812.     a_shd=0
  813.     a_armor=0
  814.     a_a_skill=0
  815.     a_d_skill=0
  816.     a_base_atk=0
  817.     a_bro_atk=0
  818.     a_anti_cav=0
  819.     a_anti_inf=0
  820.     a_charge=0
  821.    
  822.     a_num_inf=0
  823.     a_num_cav=0
  824.    
  825.    
  826.    
  827.     attacker.member.each do |group|
  828.       group.fighter.each do |f|
  829.         
  830.         a_hp += f.hp
  831.         a_shd += f.shd_hp
  832.         a_armor += f.armor_hp
  833.         a_a_skill+= f.atk_skill
  834.         a_d_skill+= f.def_skill

  835.         a_anti_cav+= f.anti_cav
  836.         a_anti_inf+= f.anti_inf
  837.         a_charge+= f.charge_boun
  838.         
  839.         case f.class
  840.         when EFS_Hero
  841.         a_num_inf+=1  
  842.         a_base_atk+= f.base_atk
  843.         a_bro_atk+= f.bro_atk
  844.         when EFS_Infantry
  845.           a_num_inf+=1
  846.         a_base_atk+= f.base_atk
  847.         a_bro_atk+= f.bro_atk
  848.         when EFS_Missile_Infantry
  849.           a_num_inf+=1
  850.         a_base_atk+= f.s_base_atk
  851.         a_bro_atk+= f.s_bro_atk
  852.         when EFS_Horseman
  853.           a_num_cav+=1
  854.         a_base_atk+= f.base_atk
  855.         a_bro_atk+= f.bro_atk
  856.         when EFS_Missile_Horse
  857.           a_num_cav+=1
  858.         a_base_atk+= f.s_base_atk
  859.         a_bro_atk+= f.s_bro_atk
  860.         when EFS_Object  
  861.          
  862.         end
  863.         
  864.       end  
  865.     end
  866.     attacker_hp=a_hp
  867.     attacker_shd=a_shd
  868.     attacker_armor=a_armor
  869.     attacker_a_skill=a_a_skill
  870.     attacker_d_skill=a_d_skill
  871.     attacker_base_atk=a_base_atk
  872.     attacker_bro_atk=a_bro_atk
  873.     attacker_anti_cav=a_anti_cav
  874.     attacker_anti_inf=a_anti_inf
  875.     attacker_charge=a_charge
  876.    
  877.     attacker_num_inf=a_num_inf
  878.     attacker_num_cav=a_num_cav
  879.    
  880.     a_hp=0
  881.     a_shd=0
  882.     a_armor=0
  883.     a_a_skill=0
  884.     a_d_skill=0
  885.     a_base_atk=0
  886.     a_bro_atk=0
  887.     a_anti_cav=0
  888.     a_anti_inf=0
  889.     a_charge=0
  890.    
  891.     a_num_inf=0
  892.     a_num_cav=0
  893.    
  894.    
  895.    
  896.     defender.member.each do |group|
  897.       group.fighter.each do |f|
  898.         
  899.         a_hp += f.hp
  900.         a_shd += f.shd_hp
  901.         a_armor += f.armor_hp
  902.         a_a_skill+= f.atk_skill
  903.         a_d_skill+= f.def_skill

  904.         a_anti_cav+= f.anti_cav
  905.         a_anti_inf+= f.anti_inf
  906.         a_charge+= f.charge_boun
  907.         
  908.         case f.class
  909.         when EFS_Hero
  910.         a_num_inf+=1  
  911.         a_base_atk+= f.base_atk
  912.         a_bro_atk+= f.bro_atk
  913.         when EFS_Infantry
  914.           a_num_inf+=1
  915.         a_base_atk+= f.base_atk
  916.         a_bro_atk+= f.bro_atk
  917.         when EFS_Missile_Infantry
  918.           a_num_inf+=1
  919.         a_base_atk+= f.s_base_atk
  920.         a_bro_atk+= f.s_bro_atk
  921.         when EFS_Horseman
  922.           a_num_cav+=1
  923.         a_base_atk+= f.base_atk
  924.         a_bro_atk+= f.bro_atk
  925.         when EFS_Missile_Horse
  926.           a_num_cav+=1
  927.         a_base_atk+= f.s_base_atk
  928.         a_bro_atk+= f.s_bro_atk
  929.         when EFS_Object  
  930.          
  931.         end
  932.         
  933.       end  
  934.     end
  935.     defender_hp=a_hp
  936.     defender_shd=a_shd
  937.     defender_armor=a_armor
  938.     defender_a_skill=a_a_skill
  939.     defender_d_skill=a_d_skill
  940.     defender_base_atk=a_base_atk
  941.     defender_bro_atk=a_bro_atk
  942.     defender_anti_cav=a_anti_cav
  943.     defender_anti_inf=a_anti_inf
  944.     defender_charge=a_charge
  945.    
  946.     defender_num_inf=a_num_inf
  947.     defender_num_cav=a_num_cav
  948. =begin
  949.     attacker_hp=a_hp
  950.     attacker_shd=a_shd
  951.     attacker_armor=a_armor
  952.     attacker_a_skill=a_a_skill
  953.     attacker_d_skill=a_d_skill
  954.     attacker_base_atk=a_base_atk
  955.     attacker_bro_atk=a_bro_atk
  956.     attacker_anti_cav=a_anti_cav
  957.     attacker_anti_inf=a_anti_inf
  958.     attacker_charge=a_charge
  959.    
  960.     attacker_num_inf=a_num_inf
  961.     attacker_num_cav=a_num_cav      
  962.    
  963.    
  964. =end   
  965.     attacker_damge_reduce = attacker_a_skill/(attacker_a_skill+defender_d_skill)
  966.     defender_defende_reduce = defender_d_skill/(attacker_a_skill+defender_d_skill)
  967.     sum_damage = attacker_bro_atk*attacker_damge_reduce
  968.    
  969.     sum_damage += (attacker_base_atk + attacker_charge)*attacker_damge_reduce
  970.    
  971.     sum_damage -= (defender_shd+defender_armor)*defender_defende_reduce
  972.     result = sum_damage/(defender_num_inf+defender_num_cav)
  973.     p result
  974.    
  975.    
  976.   end
  977.   
  978.   
  979.   
  980.   
  981.   
  982.   
  983.   
  984.   
  985. end  
复制代码
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6286
在线时间
1103 小时
注册时间
2015-8-15
帖子
658
4
 楼主| 发表于 2023-4-10 14:27:27 | 只看该作者
本帖最后由 金芒芒 于 2023-4-10 14:29 编辑
纯属小虫 发表于 2023-4-10 14:19
@current_leader 貌似又是一个非原XP默认变量,把mod脚本发出来吧


https://pan.baidu.com/s/1i4tdmXB
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6286
在线时间
1103 小时
注册时间
2015-8-15
帖子
658
5
 楼主| 发表于 2023-4-10 14:31:39 | 只看该作者
纯属小虫 发表于 2023-4-10 14:19
@current_leader 貌似又是一个非原XP默认变量,把mod脚本发出来吧

https://pan.baidu.com/s/1i4tdmXB
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 00:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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