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

Project1

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

[已经过期] 求助!!求助!

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-8-11
帖子
15
跳转到指定楼层
1
发表于 2010-8-17 16:13:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 awssawsafr 于 2010-8-17 16:14 编辑

为什么弓箭手的前两个技能是远程的,而新弄的另外两个不是远程的呢?
  1. 用法:
  2. 在相应的脚本行加入武器/技能/道具的数据库id(id之间要用“,”来分开)
  3. 如果不要某些功能的话就随便填一个外太空id就行了(没有用到的id)
  4. 1)战斗动作(角色/行走图的动作)
  5. 脚本355行:  远程武器的id  (普通攻击时使用远程射击)
  6. 脚本357行:  回旋武器的id  (普通攻击时会飞回手上的武器,如:回力镖)
  7. 脚本370行:  远程技能的id  (使用技能时是远程射击)
  8. 脚本372行:  回旋技能的id  (使用技能时,飞出的武器会飞回手上)

  9. 2)战斗动画(显示‘对象方的动画’之前先显示‘飞行武器射去敌人身上’的动画)
  10. 脚本453行:  回旋武器的id  (攻击时会显示一段类似回力镖的动画)
  11. 脚本455行:  弓箭武器的id  (攻击时会显示箭射去敌人身上的动画)
  12. 脚本457行:  铳类武器的id  (攻击时会显示子弹射去敌人身上的动画)
  13. 脚本470行:  回旋技能的id  (技能使用时会显示一段类似回力镖的动画)
  14. 脚本472行:  弓箭技能的id  (技能使用时会显示箭射去敌人身上的动画)
  15. 脚本474行:  铳类技能的id  (技能使用时会显示子弹射去敌人身上的动画)
  16. 脚本486行:  抛击道具的id  (使用该道具时,道具被丢到敌人身上)

  17. 〉注意:
  18. 〉‘飞行武器射去敌人身上’的动画是在设定id之后的那句脚本里面设置
  19. 〉例子:(脚本第455和456行)
  20. 〉       when 17,18,19,20    #远程武器1(弓箭类)的id
  21. 〉       return [101,32,false,false]
  22. 〉这样,武器17~20(都是弓箭)在显示‘对象方的动画’之前会先显示第101号动画
  23. 〉而动画的轨道是从使用者身上直到敌人身上(实现子弹射出的效果)
  24.   
  25. 还有:
  26. 战斗队伍的画面位置已经被修改过,
  27. 让角色的位置与默认的战斗背景图不会有视觉上的冲突。
  28. 如果要更改请去脚本第113-116行改改就行了。

  29. 脚本‘Arrow_Enemy’和‘Arrow_Actor’被稍微修改过(可以无视)

  30. 这个范例附带了
  31. 一张经过修改的战斗背景图(027-castle03),其他的战斗背景图可以使用默认的。
  32. 一套横版的默认敌人的战斗图(从行走图改过来的)

  33. =end                                                        #modify by darkten
  34. ###############################################################################
  35.   
  36. module Side_view
  37.   #--------------------------------------------------------------------------
  38.   # ● 是否与RATB并用 ☆自动识别(这到是不错~省了~)
  39.   #    在Scene_Battle计算方法是否是方法synthe?
  40.   #    在自动不想认识的时候,请重写。
  41.   #--------------------------------------------------------------------------
  42.   if Scene_Battle.method_defined?("synthe?")
  43.     RTAB = true
  44.   else
  45.     RTAB = false
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 改正RATB中的位置误差 ☆自动识别
  49.   #    在自动不想认识的时候,请重写。
  50.   #--------------------------------------------------------------------------
  51.   def camera_correctness
  52.     return false if !RTAB
  53.     begin
  54.       return $scene.drive
  55.     rescue
  56.       return false
  57.     end
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 队伍中的最大人数
  61.   #--------------------------------------------------------------------------
  62.   Party_max = 4
  63.   #--------------------------------------------------------------------------
  64.   # ● 战斗图的扩大率(1.0的时候是保持原有大小)
  65.   #--------------------------------------------------------------------------
  66.   CHAR_ZOOM = 1.0
  67.   #--------------------------------------------------------------------------
  68.   # ● 光标的位置修正(基本不需要改~)
  69.   #--------------------------------------------------------------------------
  70.   ARROW_OX = 0
  71.   ARROW_OY = 64
  72.   #--------------------------------------------------------------------------
  73.   # ● 名状态作为飞行管理的排列(不知道什么意思....)
  74.   #--------------------------------------------------------------------------
  75.   FLY_STATES = ["飛行"]
  76.   #--------------------------------------------------------------------------
  77.   # ● 战斗画面的位置
  78.   #--------------------------------------------------------------------------
  79.   PARTY_X = 520     # 队伍 X 位置
  80.   PARTY_Y = 220     # 队伍 Y 位置
  81.   FORMATION_X = 20  # 各个角色之间的间隔 X
  82.   FORMATION_Y = 35  # 各个角色之间的间隔 Y
  83.   #--------------------------------------------------------------------------
  84.   # ● 自定义常数
  85.   #--------------------------------------------------------------------------
  86.   NORMAL   = "NORMAL"
  87.   WALK_R   = "WALK_R"
  88.   WALK_L   = "WALK_L"
  89.   ATTACK   = "ATTACK"
  90.   ATTACK_R = "ATTACK_R"
  91.   ATTACK_L = "ATTACK_L"
  92.   MAGIC    = "MAGIC"
  93.   ITEM     = "ITEM"
  94.   # 动画的设定
  95.   ANIME = {
  96.     # [画像ID,是否循环,アニメスピード,动画速度,不能指向动画,武器放在右手or左手]
  97.     NORMAL            => [1,true , 0,false, true ,""    ], # 通常待击
  98.     WALK_R            => [2,true , 2,false, false,""    ], # 右移动
  99.     WALK_L            => [1,true , 2,false, false,""    ], # 左移动
  100.     ATTACK_R          => [1,false, 2,true , false,"右手"], # 右手攻击
  101.     ATTACK_L          => [1,false, 2,true , false,"左手"], # 左手攻击
  102.     MAGIC             => [1,false, 2,false, false,""    ], # 右手攻击
  103.     ITEM              => [1,false, 2,false, false,""    ], # 左手攻击
  104.     }
  105.    
  106.   # 债务不履行声明价值的设定(一个字一个字翻译的,不知道啥意思)  
  107.   ANIME.default = [1,false,12,false,"",""]
  108.   
  109.   # 在行动设定的时候 右手攻击 or 左手攻击 辨别を(这个不知道什么意思)的ANIME
  110.   # "角色动画变更#ATTACK"在玩了と(还是不知道啥意思..)的时候,辨别ATTACK_R或者ATTACK_L
  111.   DUAL_WEAPONS_ANIME = [ATTACK]
  112.   
  113.   #--------------------------------------------------------------------------
  114.   # ● 摇晃的设定
  115.   #--------------------------------------------------------------------------
  116.   SHAKE_FILE = "摇晃"  # 文件名
  117.   SHAKE_POWER = 5          # 强度
  118.   SHAKE_SPEED = 5          # 速度
  119.   SHAKE_DURATION = 5      # 时间
  120.   #--------------------------------------------------------------------------
  121.   # ● 上下反转地的设定
  122.   #--------------------------------------------------------------------------
  123.   UPSIDE_DOWN_FILE = "上下反转" # 文件名
  124.   #--------------------------------------------------------------------------
  125.   # ● 左右反转地的设定
  126.   #--------------------------------------------------------------------------
  127.   REVERSE_FILE = "左右反转" # 文件名
  128.   #--------------------------------------------------------------------------
  129.   # ● 回转地的设定
  130.   #--------------------------------------------------------------------------
  131.   TURNING_FILE = "回转" # 文件名
  132.   TURNING_DIRECTION = 1 # 方向(1.逆时针,-1.顺时针)(|||-_-汗..怎么还有用-1做带入值的...)
  133.   TURNING_SPEED = 40    # 速度
  134.   TURNING_DURATION = 1  # 回转数
  135.   #--------------------------------------------------------------------------
  136.   # ● 移动的设定
  137.   #--------------------------------------------------------------------------
  138.   MOVE_FILE = "移动"             # 文件名
  139.   MOVE_RETURN = 1                # 回到原来的位置吗?(光写了个1,也不知道不回到该怎么写?0?)
  140.   MOVE_SPEED = 32                # 速度
  141.   MOVE_COORDINATES = [0,-640]    # 原来位置的相对坐标
  142.   #--------------------------------------------------------------------------
  143.   # ● 动画追加的设定
  144.   #--------------------------------------------------------------------------
  145.   ADD_ANIME_FILE = "动画追加"  # 文件名
  146.   ADD_ANIME_ID = 0               # 动画的ID
  147.   #--------------------------------------------------------------------------
  148.   # ● 债务不履行声明和RTAB的数据转换
  149.   #--------------------------------------------------------------------------
  150.   def convert_battler
  151.     return RTAB ? @active_actor : @active_battler
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● 债务不履行声明和RTAB的数据转换2
  155.   #--------------------------------------------------------------------------
  156.   def convert_battler2(*arg)
  157.     return RTAB ? arg[0] : @active_battler
  158.   end
  159. end

  160. #--------------------------------------------------------------------------
  161. # ● 行动設定
  162. #--------------------------------------------------------------------------
  163. module BattleActions
  164.   
  165.   # 下のものはあくまでも一例なので
  166.   # 独自に作ってください。

  167.   Actions = {

  168.   "通常攻撃" => [
  169.   
  170.   "閃きアニメ",
  171.   "アクターアニメ変更#WALK_L",
  172.   "移動#target,32,0,64,0",
  173.   "行動アニメ",
  174.   "アクターアニメ変更#ATTACK",
  175.   "遠距離アニメ",
  176.   "対象アニメ",
  177.   "アクターアニメ変更#WALK_L",
  178.   "SEの演奏#016-Jump02,80,100",
  179.   "移動#self,0,0,48,32",
  180.   "終了"
  181.   ],

  182.   "エネミー攻撃" => [
  183.   
  184.   "閃きアニメ",
  185.   "アクターアニメ変更#WALK_L",
  186.   "移動#self,-36,0,12,0",
  187.   "行動アニメ",
  188.   "アクターアニメ変更#ATTACK",
  189.   "遠距離アニメ",
  190.   "対象アニメ",
  191.   "アクターアニメ変更#WALK_L",
  192.   "移動#self,0,0,12,0",
  193.   "終了"
  194.   ],
  195.   
  196.   "術発動" => [
  197.   
  198.   "閃きアニメ",
  199.   "アクターアニメ変更#WALK_L",
  200.   "移動#self,-32,0,4,0",
  201.   "アクターアニメ変更#MAGIC",
  202.   "行動アニメ",
  203.   "ウエイト#15",
  204.   "遠距離アニメ",
  205.   "対象アニメ",
  206.   "アクターアニメ変更#WALK_L",
  207.   "移動#self,0,0,4,2",
  208.   "終了"
  209.   ],

  210.   "アイテム使用" => [
  211.   
  212.   "閃きアニメ",
  213.   "アクターアニメ変更#WALK_L",
  214.   "移動#self,-32,0,4,0",
  215.   "行動アニメ",
  216.   "アクターアニメ変更#ITEM",
  217.   "ウエイト#15",
  218.   "遠距離アニメ",
  219.   "対象アニメ",
  220.   "アクターアニメ変更#WALK_L",
  221.   "移動#self,0,0,4,2",
  222.   "終了"
  223.   ],
  224.   
  225.   "払い抜け" => [
  226.   
  227.   "閃きアニメ",
  228.   "アクターアニメ変更#WALK_L",
  229.   "移動#target_near,50,0,48,30",  
  230.   "左右反転",
  231.   "アクターアニメ固定#ATTACK#3",
  232.   "行動アニメ",
  233.   "SEの演奏#135-Light01,100,100",
  234.   "アニメーションの表示#self,48",
  235.   "ウエイト#15",
  236.   "左右反転",
  237.   "残像表示",
  238.   "移動#target_far,-50,0,48,0",
  239.   "対象アニメ",
  240.   "残像消去",
  241.   "アニメ固定解除",
  242.   "アクターアニメ変更#WALK_L",
  243.   "移動#self,0,0,48,1,0",
  244.   "終了"
  245.   ],

  246.   "弓箭攻撃" => [
  247.   
  248.   "閃きアニメ",
  249.   "アクターアニメ変更#WALK_L",
  250.   "移動#self,-32,0,4,0",
  251.   "行動アニメ",
  252.   "アクターアニメ変更#ATTACK",
  253.   "遠距離アニメ",
  254.   "対象アニメ",
  255.   "アクターアニメ変更#WALK_L",
  256.   "移動#self,0,0,4,2",
  257.   "終了"
  258.   ],

  259.   "回旋攻撃" => [
  260.   
  261.   "閃きアニメ",
  262.   "アクターアニメ変更#WALK_L",
  263.   "移動#self,-32,0,4,0",
  264.   "行動アニメ",
  265.   "アクターアニメ変更#STAND_L",  
  266.   "遠距離アニメ",
  267.   "対象アニメ",
  268.   "アクターアニメ変更#WALK_L",
  269.   "移動#self,0,0,4,2",
  270.   "終了"
  271.   ],
  272.   
  273.   "远距离発動" => [
  274.   
  275.   "閃きアニメ",
  276.   "アクターアニメ変更#WALK_L",
  277.   "移動#self,-32,0,4,0",
  278.   "アクターアニメ変更#MAGIC",
  279.   "行動アニメ",
  280.   "アクターアニメ変更#ATTACK",
  281.   "遠距離アニメ",
  282.   "対象アニメ",
  283.   "アクターアニメ変更#WALK_L",
  284.   "移動#self,0,0,4,2",
  285.   "終了"
  286.   ],
  287.   
  288.   "回旋発動" => [
  289.   
  290.   "閃きアニメ",
  291.   "アクターアニメ変更#WALK_L",
  292.   "移動#self,-32,0,4,0",
  293.   "アクターアニメ変更#MAGIC",
  294.   "行動アニメ",
  295.   "アクターアニメ変更#STAND_L",  
  296.   "遠距離アニメ",
  297.   "対象アニメ",
  298.   "アクターアニメ変更#WALK_L",
  299.   "移動#self,0,0,4,2",
  300.   "終了"
  301.   ],

  302.   } # ここで終わり 消さないでください

  303. end
  304.   
  305. module RPG
  306.   class Weapon
  307.     #--------------------------------------------------------------------------
  308.     # ● アクション設定
  309.     #--------------------------------------------------------------------------
  310.     def battle_actions
  311.       case @id
  312.       when 56,57,58,59,60,61,62,63,64,65,67  # 远程武器的id回旋攻撃
  313.         return BattleActions::Actions["弓箭攻撃"]
  314.       when 66                       # 回旋武器的id
  315.         return BattleActions::Actions["回旋攻撃"]
  316.       end
  317.       else
  318.       return BattleActions::Actions["通常攻撃"]
  319.     end
  320.   end
  321.   class Skill
  322.     #--------------------------------------------------------------------------
  323.     # ● アクション設定
  324.     #--------------------------------------------------------------------------
  325.     def battle_actions
  326.       case @id
  327.       when 43,41,47,48,49,66,37,38,65,68,70  # 远程技能的id
  328.         return BattleActions::Actions["远距离発動"]
  329.       when 37                       # 回旋技能的id
  330.         return BattleActions::Actions["回旋発動"]
  331.       end
  332.       else
  333.       if self.magic?
  334.         return BattleActions::Actions["術発動"]
  335.       else
  336.         return BattleActions::Actions["払い抜け"]
  337.       end
  338.     end
  339.   end
  340.   class Item
  341.     #--------------------------------------------------------------------------
  342.     # ● アクション設定
  343.     #--------------------------------------------------------------------------
  344.     def battle_actions
  345.       return BattleActions::Actions["アイテム使用"]
  346.     end
  347.   end
  348. end
  349. class Game_Enemy < Game_Battler
  350.   #--------------------------------------------------------------------------
  351.   # ● アクション設定
  352.   #--------------------------------------------------------------------------
  353.   def battle_actions
  354.     return BattleActions::Actions["エネミー攻撃"]
  355.   end
  356. end
  357. =begin
  358. #--------------------------------------------------------------------------
  359. # ● 遠距離アニメーション
  360. #--------------------------------------------------------------------------
  361.  ☆ 説明
  362.   
  363.    行動者から対象者にアニメを飛ばします。
  364.    飛ばすアニメを データベース‐アニメーション で作ります。
  365.     [アニメーションID, スピード, 往復するか?,直線(false)or曲線(true)] で指定します。


  366.   ● カスタマイズ方法
  367.    
  368.     case @id
  369.     when 17,18,19,20
  370.       return [101,32,false,false]
  371.     when 21,22,23,24
  372.       return [102,32,false,false]
  373.     end
  374.     return 0
  375.    
  376.     のように描くとID別に指定可能です。
  377.    
  378.    
  379.   ● アニメーションID
  380.   
  381.   飛ばすアニメーションIDです。短い場合は繰り返しで表示されます。
  382.   
  383.    
  384.   ● スピード
  385.   
  386.   大きいほうが早い(0だとアニメは移動しません)
  387.   
  388.   1 = 1フレームで1ドット進むと考えてください。
  389.   
  390.   ● 往復するか?
  391.   
  392.   true とした場合、ブーメランのようにアニメが戻ります。
  393.   
  394.   ● 直線(false)or曲線(true)
  395.   
  396.   true  = 対象に向かって曲線で、アニメが飛びます。(修正の余地ありですが・・・)
  397.   false = 対象に向かって直線で、アニメが飛びます。
  398.    
  399. =end
  400. module RPG
  401.   class Weapon
  402.     #--------------------------------------------------------------------------
  403.     # ● 遠距離アニメーション
  404.     #--------------------------------------------------------------------------
  405.     def flying_anime
  406.       # ID 指定 の例(武器的id,分类是根据飞行武器的动画id)
  407.       case @id
  408.       when 66             #回旋武器(类似回力镖)的id
  409.         return [130,32,true,true]
  410.       when 44,45,46,47,47,49,50,51,52    #远程武器1(弓箭类)的id
  411.         return [129,32,false,false]
  412.       when 67    #远程武器2(铳类)的id
  413.         return [130,32,false,false]
  414.       end
  415.       return [0,0,false,false]
  416.     end
  417.   end
  418.   class Skill
  419.     #--------------------------------------------------------------------------
  420.     # ● 遠距離アニメーション
  421.     #--------------------------------------------------------------------------
  422.     def flying_anime
  423.       # ID 指定 の例(技能的id,分类是根据飞行武器的动画id)
  424.       case @id
  425.       when 37            #回旋技能(类似回力镖)的id
  426.         return [130,32,true,true]
  427.       when 126,127    #远程技能1(弓箭类)的id
  428.         return [130,32,false,false]
  429.       when 100    #远程技能2(铳类)的id
  430.         return [130,32,false,false]
  431.       end
  432.       return [0,0,false,false]
  433.     end
  434.   end
  435.   class Item
  436.     #--------------------------------------------------------------------------
  437.     # ● 遠距離アニメーション
  438.     #--------------------------------------------------------------------------
  439.     def flying_anime
  440.       case @id
  441.       when 61,62,63,64,65,66,67,68,69,70,72,73,74,75,76,77    #抛击类道具(如炸弹一类)的id
  442.         return [130,32,false,true]
  443.       end
  444.       return [0,0,false,false]
  445.     end
  446.   end
  447. end

  448. class Game_Enemy < Game_Battler
  449.   #--------------------------------------------------------------------------
  450.   # ● 遠距離アニメーション
  451.   #--------------------------------------------------------------------------
  452.   def flying_anime
  453.     return [0,0,false,false]
  454.   end
  455. end
  456. #==============================================================================
  457. # ■ Game_Battler
  458. #==============================================================================
  459. class Game_Battler
  460.   include Side_view
  461.   #--------------------------------------------------------------------------
  462.   # ● 追加・公開インスタンス変数
  463.   #--------------------------------------------------------------------------
  464.   attr_accessor :height                  # 画像の高さ
  465.   attr_accessor :real_x                  # X座標補正
  466.   attr_accessor :real_y                  # Y座標補正
  467.   attr_accessor :real_zoom               # 拡大率
  468.   attr_accessor :wait_count              # アニメーション 待ち時間
  469.   attr_accessor :wait_count2             # アニメーション 待ち時間2
  470.   attr_accessor :pattern                 # アニメーション カウント(キャラ)
  471.   attr_accessor :shake                   # シェイク開始フラッグ
  472.   attr_accessor :reverse                 # 左右反転フラッグ
  473.   attr_accessor :shadow                  # 残像フラッグ
  474.   attr_accessor :flash_flag              # 閃きフラッグ
  475.   attr_reader   :ox                      # X座標補正
  476.   attr_reader   :oy                      # Y座標補正
  477.   attr_reader   :flying_x                # 遠距離アニメX座標
  478.   attr_reader   :flying_y                # 遠距離アニメY座標
  479.   attr_reader   :flying_anime            # 遠距離アニメ
  480.   attr_reader   :animation1_on           # 行動アニメ開始フラッグ
  481.   attr_reader   :animation2_on           # 対象アニメ開始フラッグ
  482.   #--------------------------------------------------------------------------
  483.   # ● デフォルトのアニメーション待ち時間を取得
  484.   #--------------------------------------------------------------------------
  485.   def animation_duration=(animation_duration)
  486.     @_animation_duration = animation_duration
  487.   end
  488.   #--------------------------------------------------------------------------
  489.   # ● バトル開始時のセットアップ
  490.   #--------------------------------------------------------------------------
  491.   def start_battle
  492.     @height = 0
  493.     @real_x = 0
  494.     @real_y = 0
  495.     @real_zoom = 1.0
  496.     @battler_condition = ""
  497.     @action = nil
  498.     @battle_actions = []
  499.     @battler_action = false
  500.     @step = 0
  501.     @anime_on = false
  502.     @wait_count = 0
  503.     @wait_count2 = 0
  504.     @ox = 0
  505.     @oy = 0
  506.     @pattern = 0
  507.     @pattern_log = true
  508.     @pattern_freeze = false
  509.     @condition_freeze = false
  510.     @active = false
  511.     @move_distance = nil
  512.     @move_wait = 0
  513.     @move_coordinates = [0,0,0,0]
  514.     @flying_distance = nil
  515.     @flying_wait = 0
  516.     @flying_x = 0
  517.     @flying_y = 0
  518.     @flash_flag = {}
  519.     self.flying_clear
  520.   end
  521.   #--------------------------------------------------------------------------
  522.   # ● 移動中判定
  523.   #--------------------------------------------------------------------------
  524.   def moving?
  525.     # X座標補正または、Y座標補正が0でなければ、移動中
  526.     return (@ox != 0 or @oy != 0)
  527.   end
  528.   #--------------------------------------------------------------------------
  529.   # ● 移動終了判定
  530.   #--------------------------------------------------------------------------
  531.   def move_end?
  532.     return (@ox == @move_coordinates[0] and @oy == @move_coordinates[1])
  533.   end
  534.   #--------------------------------------------------------------------------
  535.   # ● アクション開始設定
  536.   #--------------------------------------------------------------------------
  537.   def action(flag = true)
  538.     @battler_action = flag
  539.     @animation1_on = false
  540.     @animation2_on = false
  541.     @step = "setup"
  542.   end   
  543.   #--------------------------------------------------------------------------
  544.   # ● アクション中判定
  545.   #--------------------------------------------------------------------------
  546.   def action?
  547.     return @battler_action
  548.   end
  549.   #--------------------------------------------------------------------------
  550.   # ● 閃き判定
  551.   #--------------------------------------------------------------------------
  552.   def flash?
  553.     return @flash_flg
  554.   end
  555.   #--------------------------------------------------------------------------
  556.   # ● 戦闘不能判定
  557.   #--------------------------------------------------------------------------
  558.   def anime_dead?
  559.     if $game_temp.in_battle and !RTAB
  560.       if [2,3,4,5].include?($scene.phase4_step)
  561.         return @last_dead
  562.       end
  563.     end
  564.     return @last_dead = self.dead?
  565.   end
  566.   #--------------------------------------------------------------------------
  567.   # ● ピンチ状態判定
  568.   #--------------------------------------------------------------------------
  569.   def crisis?
  570.     if $game_temp.in_battle and !RTAB
  571.       if [2,3,4,5].include?($scene.phase4_step)
  572.         return @last_crisis
  573.       end
  574.     end
  575.     return @last_crisis = (self.hp <= self.maxhp / 4 or badstate?)
  576.   end
  577.   #--------------------------------------------------------------------------
  578.   # ● バッドステート判定
  579.   #--------------------------------------------------------------------------
  580.   def badstate?
  581.     for i in @states
  582.       unless $data_states[i].nonresistance
  583.         return true
  584.       end
  585.     end
  586.     return false
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # ● 飛行
  590.   #--------------------------------------------------------------------------
  591.   def fly
  592.     if @fly != nil
  593.       return @fly
  594.     end
  595.     for id in @states
  596.       if FLY_STATES.include?($data_states[id].name)
  597.         return 60
  598.       end
  599.     end
  600.     return 0
  601.   end
  602.   #--------------------------------------------------------------------------
  603.   # ● 遠距離アニメ目標座標の計算
  604.   #--------------------------------------------------------------------------
  605.   def flying_setup
  606.     # 二度目は実行しない
  607.     return if @flying_distance != nil && !camera_correctness
  608.     if RTAB
  609.       targets = @target
  610.     else
  611.       targets = $scene.target_battlers
  612.     end
  613.     # 目的座標を計算
  614.     @f_target_x = 0
  615.     @f_target_y = 0
  616.     for t in targets
  617.       @f_target_x += t.screen_x
  618.       @f_target_y += t.screen_y
  619.     end
  620.     if targets != []
  621.       @f_target_x /= targets.size
  622.       @f_target_y /= targets.size
  623.     else
  624.       @flying_distance = 0
  625.       return
  626.     end
  627.     # 距離の計算
  628.     @flying_distance = (self.screen_x - @f_target_x).abs + (self.screen_y - @f_target_y).abs
  629.   end
  630.   #--------------------------------------------------------------------------
  631.   # ● 遠距離アニメ
  632.   #--------------------------------------------------------------------------
  633.   def flying_animation
  634.     # 戻る
  635.     if @step != "flying" or @flying_distance.nil?
  636.       return [false,true]
  637.     end
  638.     # あらかじめ計算
  639.     self_x = self.screen_x
  640.     self_y = self.screen_y
  641.     @flying_distance = @flying_distance == 0 ? 1 : @flying_distance
  642.     n1 = @flying_wait / @flying_distance.to_f
  643.     if @flying_distance - @flying_wait > @flying_distance / 2
  644.       n2 = 1.0 + 10.0 * @flying_wait / @flying_distance.to_f
  645.     else
  646.       n2 = 1.0 + 10.0 * (@flying_distance - @flying_wait) / @flying_distance.to_f
  647.     end
  648.     if !@flying_anime[4]
  649.       # 直線移動
  650.       x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
  651.       y = (self_y + 1.0 * (@f_target_y - self_y) * n1).to_i
  652.     else
  653.       # 曲線移動
  654.       if !@flying_proceed_end
  655.         x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
  656.         y = (self_y + 1.0 * (@f_target_y - self_y) * n1 - n2**2).to_i
  657.       else
  658.         x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
  659.         y = (self_y + 1.0 * (@f_target_y - self_y) * n1 + n2**2).to_i
  660.       end
  661.     end
  662.     # 座標代入
  663.     @flying_x = x
  664.     @flying_y = y
  665.     # ウエイト
  666.     if !@flying_proceed_end
  667.       # 開始
  668.       @flying_proceed_start = @flying_wait == 0
  669.       @flying_wait += @flying_anime[1]
  670.       @flying_wait = [@flying_wait,@flying_distance].min
  671.       @flying_proceed_end = @flying_wait == @flying_distance
  672.     else
  673.       # 開始
  674.       @flying_return_start = @flying_wait == @flying_distance
  675.       @flying_wait -= @flying_anime[1]
  676.       @flying_wait = [@flying_wait,0].max
  677.       @flying_return_end = @flying_wait == 0
  678.     end
  679.     if @flying_anime[1] == 0
  680.       @flying_end = true
  681.     elsif !@flying_anime[2]
  682.       @flying_end = @flying_proceed_end
  683.     else
  684.       @flying_end = @flying_return_end
  685.     end
  686.     # 値を返す(アニメ開始,アニメ終了)
  687.     return [@flying_proceed_start,@flying_end]
  688.   end
  689.   #--------------------------------------------------------------------------
  690.   # ● 遠距離アニメ初期化
  691.   #--------------------------------------------------------------------------
  692.   def flying_clear
  693.     @flying_proceed_start = false
  694.     @flying_proceed_end = false
  695.     @flying_return_start = false
  696.     @flying_return_end = false
  697.     @flying_end = false
  698.     @flying_anime = [0,0,false]
  699.   end
  700.   #--------------------------------------------------------------------------
  701.   # ● 移動
  702.   #--------------------------------------------------------------------------
  703.   def move
  704.     # 距離の計算
  705.     @move_distance = (@move_coordinates[2] - @move_coordinates[0]).abs +
  706.                      (@move_coordinates[3] - @move_coordinates[1]).abs
  707.     if @move_distance > 0
  708.       return if @ox == @move_coordinates[0] and @oy == @move_coordinates[1]
  709.       array = @move_coordinates
  710.       # ジャンプ補正値の計算
  711.       if @move_distance - @move_wait > @move_distance / 2
  712.         jump = (@move_action[4] * @move_wait / @move_distance.to_f)**2
  713.       else
  714.         jump = (@move_action[4] * (@move_distance - @move_wait) / @move_distance.to_f)**2
  715.       end
  716.       jump = @move_action[4] > 0 ? -jump : jump
  717.       @ox = (array[2] + 1.0 * (array[0] - array[2]) * (@move_distance - @move_wait) / @move_distance.to_f).to_i
  718.       @oy = (array[3] + 1.0 * (array[1] - array[3]) * (@move_distance - @move_wait) / @move_distance.to_f + jump).to_i
  719.       # ウエイト
  720.       @move_wait -= @move_action[3]
  721.       @move_wait = [@move_wait,0].max
  722.     end
  723.   end
  724.   #--------------------------------------------------------------------------
  725.   # ● 移動アクションの取得
  726.   #--------------------------------------------------------------------------
  727.   def get_move_action
  728.     string = @action.split(/#/)[1]
  729.     string = string.split(/,/)
  730.     @move_action = [string[0],string[1].to_i,string[2].to_i,string[3].to_i,string[4].to_i,string[5].to_i]
  731.   end
  732.   #--------------------------------------------------------------------------
  733.   # ● アクションの取得
  734.   #--------------------------------------------------------------------------
  735.   def get_step
  736.     if @action.nil?
  737.       @step = "finish"
  738.       return
  739.     end
  740.     string = @action.split(/#/)[0]
  741.     if string =~ "移動"
  742.       @step = "moving_setup"
  743.     elsif string =~ "アクターアニメ実行"
  744.       @step = "action"
  745.     elsif string =~ "遠距離アニメ"
  746.       @step = "flying"
  747.     elsif string =~ "アクターアニメ変更"
  748.       @step = "change"
  749.     elsif string =~ "行動アニメ"
  750.       @step = "animation1"
  751.     elsif string =~ "対象アニメ"
  752.       @step = "animation2"
  753.     elsif string =~ "ウエイト"
  754.       @step = "wait"
  755.     elsif string =~ "左右反転"
  756.       @step = "reverse"
  757.     elsif string =~ "閃きアニメ"
  758.       @step = "flash"
  759.     elsif string =~ "残像表示"
  760.       @step = "shadow_on"
  761.     elsif string =~ "残像消去"
  762.       @step = "shadow_off"
  763.     elsif string =~ "アクターアニメ固定"
  764.       @step = "freeze"
  765.     elsif string =~ "アニメ固定解除"
  766.       @step = "freeze_lifting"
  767.     elsif string =~ "アニメーションの表示"
  768.       @step = "animation_start"
  769.     elsif string =~ "SEの演奏"
  770.       @step = "play_se"
  771.     else
  772.       @step = "finish"
  773.     end
  774.   end
复制代码

评分

参与人数 1星屑 -200 收起 理由
六祈 -200 发两帖同样的,有奖励~

查看全部评分

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

本版积分规则

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

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

GMT+8, 2025-1-4 13:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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