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

Project1

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

如何用开关(求助)

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2007-8-10
帖子
284
跳转到指定楼层
1
发表于 2008-3-28 09:53:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
比如攻击力波动如何用一个开关开控制是否运行(RUYB脚本非事件脚本)
只要开关控制不要其他方法 是如何作到的呢??谢谢了
此贴于 2008-4-3 0:23:04 被版主水迭澜提醒,请楼主看到后对本贴做出回应。


----------------版务----------------
如果问题未解决,请继续提问
如果问题已解决,请结贴
若到末贴发贴时间后一周仍未结贴
管理员会自动为你过期帖子、结贴或强行认可答案(好人卡-1)

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

2
发表于 2008-3-28 11:14:09 | 只看该作者
在腳本開頭加上if $game_variables[開關ID] == true
最後加上一個end不知道行不行的通
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2007-8-10
帖子
284
3
 楼主| 发表于 2008-3-28 11:15:03 | 只看该作者
还有别的吗
回复 支持 反对

使用道具 举报

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

4
发表于 2008-3-28 18:57:48 | 只看该作者
你试用了不行么
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2007-8-10
帖子
284
5
 楼主| 发表于 2008-3-28 19:57:38 | 只看该作者
放那里都暴错
错误:if $game_variables[1] == true
回复 支持 反对

使用道具 举报

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

6
发表于 2008-3-28 20:00:14 | 只看该作者
我……我白癡了

if $game_switches[1]==true

記得加end
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2007-8-10
帖子
284
7
 楼主| 发表于 2008-3-28 20:06:40 | 只看该作者
说明白点吧谁帮我加个开关谢谢 意思是说用开关决定这脚本是否运行. . .
  1. ===================================================================
  2. module DUR

  3.   DATA_WEAPON_SIZE = 32 # 原数据库武器最大id
  4.   DATA_ARMOR_SIZE = 32 # 原数据库防具最大id
  5.   DUR_SET_MAX = 999 # 最大耐久度
  6. end
  7. #==============================================================================

  8. class Game_Actor < Game_Battler
  9.   #--------------------------------------------------------------------------
  10.   def base_str
  11.     n = $data_actors[@actor_id].parameters[2, @level]
  12.     weapon = $data_weapons[@weapon_id]
  13.     armor1 = $data_armors[@armor1_id]
  14.     armor2 = $data_armors[@armor2_id]
  15.     armor3 = $data_armors[@armor3_id]
  16.     armor4 = $data_armors[@armor4_id]
  17.     n += (weapon != nil and weapon.dur > 0) ? weapon.str_plus : 0
  18.     n += (armor1 != nil and armor1.dur > 0) ? armor1.str_plus : 0
  19.     n += (armor2 != nil and armor2.dur > 0) ? armor2.str_plus : 0
  20.     n += (armor3 != nil and armor3.dur > 0) ? armor3.str_plus : 0
  21.     n += (armor4 != nil and armor4.dur > 0) ? armor4.str_plus : 0
  22.     return [[n, 1].max, 999].min
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   def base_dex
  26.     n = $data_actors[@actor_id].parameters[3, @level]
  27.     weapon = $data_weapons[@weapon_id]
  28.     armor1 = $data_armors[@armor1_id]
  29.     armor2 = $data_armors[@armor2_id]
  30.     armor3 = $data_armors[@armor3_id]
  31.     armor4 = $data_armors[@armor4_id]
  32.     n += (weapon != nil and weapon.dur > 0) ? weapon.dex_plus : 0
  33.     n += (armor1 != nil and armor1.dur > 0) ? armor1.dex_plus : 0
  34.     n += (armor2 != nil and armor2.dur > 0) ? armor2.dex_plus : 0
  35.     n += (armor3 != nil and armor3.dur > 0) ? armor3.dex_plus : 0
  36.     n += (armor4 != nil and armor4.dur > 0) ? armor4.dex_plus : 0
  37.     return [[n, 1].max, 999].min
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   def base_agi
  41.     n = $data_actors[@actor_id].parameters[4, @level]
  42.     weapon = $data_weapons[@weapon_id]
  43.     armor1 = $data_armors[@armor1_id]
  44.     armor2 = $data_armors[@armor2_id]
  45.     armor3 = $data_armors[@armor3_id]
  46.     armor4 = $data_armors[@armor4_id]
  47.     n += (weapon != nil and weapon.dur > 0) ? weapon.agi_plus : 0
  48.     n += (armor1 != nil and armor1.dur > 0) ? armor1.agi_plus : 0
  49.     n += (armor2 != nil and armor2.dur > 0) ? armor2.agi_plus : 0
  50.     n += (armor3 != nil and armor3.dur > 0) ? armor3.agi_plus : 0
  51.     n += (armor4 != nil and armor4.dur > 0) ? armor4.agi_plus : 0
  52.     return [[n, 1].max, 999].min
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   def base_int
  56.     n = $data_actors[@actor_id].parameters[5, @level]
  57.     weapon = $data_weapons[@weapon_id]
  58.     armor1 = $data_armors[@armor1_id]
  59.     armor2 = $data_armors[@armor2_id]
  60.     armor3 = $data_armors[@armor3_id]
  61.     armor4 = $data_armors[@armor4_id]
  62.     n += (weapon != nil and weapon.dur > 0) ? weapon.int_plus : 0
  63.     n += (armor1 != nil and armor1.dur > 0) ? armor1.int_plus : 0
  64.     n += (armor2 != nil and armor2.dur > 0) ? armor2.int_plus : 0
  65.     n += (armor3 != nil and armor3.dur > 0) ? armor3.int_plus : 0
  66.     n += (armor4 != nil and armor4.dur > 0) ? armor4.int_plus : 0
  67.     return [[n, 1].max, 999].min
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   def base_atk
  71.     weapon = $data_weapons[@weapon_id]
  72.     return (weapon != nil and weapon.dur > 0) ? weapon.atk : 0
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   def base_pdef
  76.     weapon = $data_weapons[@weapon_id]
  77.     armor1 = $data_armors[@armor1_id]
  78.     armor2 = $data_armors[@armor2_id]
  79.     armor3 = $data_armors[@armor3_id]
  80.     armor4 = $data_armors[@armor4_id]
  81.     pdef1 = (weapon != nil and weapon.dur > 0) ? weapon.pdef : 0
  82.     pdef2 = (armor1 != nil and armor1.dur > 0) ? armor1.pdef : 0
  83.     pdef3 = (armor2 != nil and armor2.dur > 0) ? armor2.pdef : 0
  84.     pdef4 = (armor3 != nil and armor3.dur > 0) ? armor3.pdef : 0
  85.     pdef5 = (armor4 != nil and armor4.dur > 0) ? armor4.pdef : 0
  86.     return pdef1 + pdef2 + pdef3 + pdef4 + pdef5
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   def base_mdef
  90.     weapon = $data_weapons[@weapon_id]
  91.     armor1 = $data_armors[@armor1_id]
  92.     armor2 = $data_armors[@armor2_id]
  93.     armor3 = $data_armors[@armor3_id]
  94.     armor4 = $data_armors[@armor4_id]
  95.     mdef1 = (weapon != nil and weapon.dur > 0) ? weapon.mdef : 0
  96.     mdef2 = (armor1 != nil and armor1.dur > 0) ? armor1.mdef : 0
  97.     mdef3 = (armor2 != nil and armor2.dur > 0) ? armor2.mdef : 0
  98.     mdef4 = (armor3 != nil and armor3.dur > 0) ? armor3.mdef : 0
  99.     mdef5 = (armor4 != nil and armor4.dur > 0) ? armor4.mdef : 0
  100.     return mdef1 + mdef2 + mdef3 + mdef4 + mdef5
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   def base_eva
  104.     armor1 = $data_armors[@armor1_id]
  105.     armor2 = $data_armors[@armor2_id]
  106.     armor3 = $data_armors[@armor3_id]
  107.     armor4 = $data_armors[@armor4_id]
  108.     eva1 = (armor1 != nil and armor1.dur > 0) ? armor1.eva : 0
  109.     eva2 = (armor2 != nil and armor2.dur > 0) ? armor2.eva : 0
  110.     eva3 = (armor3 != nil and armor3.dur > 0) ? armor3.eva : 0
  111.     eva4 = (armor4 != nil and armor4.dur > 0) ? armor4.eva : 0
  112.     return eva1 + eva2 + eva3 + eva4
  113.   end
  114. end
  115. #==============================================================================

  116. class Game_Party
  117.   #--------------------------------------------------------------------------
  118.   attr_accessor   :weapons
  119.   attr_accessor   :armors
  120.   #--------------------------------------------------------------------------
  121.   def weapon_number(weapon_id)
  122.     return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # 以下修改于<<武器攻击力波动>>(灼眼的夏娜)
  126.   def gain_weapon(weapon_id, n)
  127.     if weapon_id > 0
  128.       if n > 0 # 增加武器的情况
  129.         n = 1
  130.         # 装备栏中使用的武器不处理~
  131.         if $scene.is_a?(Scene_Equip)
  132.           @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  133.         else
  134.           new_weapon = $data_weapons[weapon_id].clone
  135.           new_weapon.dur_set = $data_weapons[weapon_id].dur_set
  136.           new_weapon.dur = $data_weapons[weapon_id].dur_set
  137.           new_weapon.id = $data_weapons.size
  138.           #数据库扩容
  139.           $data_weapons.push(new_weapon)
  140.           # 职业可装备武器数组更新~
  141.           for i in 1...$data_classes.size
  142.             if $data_classes[i].weapon_set.include?(weapon_id)
  143.               $data_classes[i].weapon_set.push(new_weapon.id)
  144.             end
  145.           end
  146.           # 增加武器~
  147.           @weapons[new_weapon.id] = [[weapon_number(new_weapon.id) + n, 0].max, 99].min
  148.         end
  149.       else # n < 0 减少武器的情况(未定的情况: n = 0)
  150.         n = -1
  151.         # 装备栏中卸下的武器不处理~
  152.         if $scene.is_a?(Scene_Equip)
  153.           @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  154.         else
  155.           lose_name = $data_weapons[weapon_id].name
  156.           dur_min = DUR::DUR_SET_MAX
  157.           for i in DUR::DATA_WEAPON_SIZE+1...$data_weapons.size
  158.             # 重新确定weapon_id,必定在原武器数据库之外
  159.             # 减少同名武器中耐久度最低的
  160.             if $data_weapons[i].name == lose_name and $data_weapons[i].dur < dur_min
  161.               weapon_id = i
  162.             end
  163.           end
  164.           # 已不存在的不做操作
  165.           if weapon_number(weapon_id) <= 0
  166.             return
  167.           end
  168.           # 减少武器
  169.           @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  170.           # 删除行囊拥有的武器id,后id补进
  171.           @weapons.delete(weapon_id)
  172.           weapon_keys = @weapons.keys.sort!
  173.           for i in weapon_keys
  174.             if i > weapon_id
  175.               @weapons[i-1] = @weapons[i]
  176.               @weapons.delete(i)
  177.             end
  178.           end
  179.           # 更改角色使用中的武器id
  180.           for i in [email protected]
  181.             if @actors[i].weapon_id != nil and @actors[i].weapon_id > weapon_id
  182.               @actors[i].weapon_id -= 1
  183.             end
  184.           end
  185.           if weapon_id > DUR::DATA_WEAPON_SIZE
  186.             # 删除数据库武器id,后补进
  187.             for i in weapon_id+1...$data_weapons.size
  188.               $data_weapons[i].id -= 1
  189.             end
  190.             $data_weapons.delete_at(weapon_id)
  191.             # 职业可装备武器数组更新
  192.             for i in 1...$data_classes.size
  193.               if $data_classes[i].weapon_set.include?(weapon_id)
  194.                 $data_classes[i].weapon_set.delete(weapon_id)
  195.               end
  196.               for j in $data_classes[i].weapon_set
  197.                 if j > weapon_id
  198.                   $data_classes[i].weapon_set.delete(j)
  199.                   j -= 1
  200.                   $data_classes[i].weapon_set.push(j)
  201.                 end
  202.               end
  203.             end
  204.           end
  205.         end
  206.       end
  207.     end
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   def gain_armor(armor_id, n)
  211.     if armor_id > 0
  212.       if n > 0 # 增加防具的情况
  213.         n = 1
  214.         # 装备栏中使用的防具不处理~
  215.         if $scene.is_a?(Scene_Equip)
  216.           @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  217.         else
  218.           new_armor = $data_armors[armor_id].clone
  219.           new_armor.dur_set = $data_armors[armor_id].dur_set
  220.           new_armor.dur = $data_armors[armor_id].dur_set
  221.           new_armor.id = $data_armors.size
  222.           #数据库扩容
  223.           $data_armors.push(new_armor)
  224.           # 职业可装备防具数组更新~
  225.           for i in 1...$data_classes.size
  226.             if $data_classes[i].armor_set.include?(armor_id)
  227.               $data_classes[i].armor_set.push(new_armor.id)
  228.             end
  229.           end
  230.           # 增加防具
  231.           @armors[new_armor.id] = [[armor_number(new_armor.id) + n, 0].max, 99].min
  232.         end
  233.       else # n < 0 减少防具的情况(未定的情况: n = 0)
  234.         n = -1
  235.         # 装备栏中卸下的防具不处理
  236.         if $scene.is_a?(Scene_Equip)
  237.           @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  238.         else
  239.           lose_name = $data_armors[armor_id].name
  240.           dur_min = DUR::DUR_SET_MAX
  241.           for i in DUR::DATA_ARMOR_SIZE+1...$data_armors.size
  242.             # 重新确定armor_id,必定在原防具数据库之外
  243.             # 减少同名防具中耐久度最低的
  244.             if $data_armors[i].name == lose_name and $data_armors[i].dur < dur_min
  245.               armor_id = i
  246.             end
  247.           end
  248.           # 已不存在的不做操作
  249.           if armor_number(armor_id) <= 0
  250.             return
  251.           end
  252.           # 减少防具
  253.           @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  254.           # 删除行囊拥有的防具id,后id补进
  255.           @weapons.delete(armor_id)
  256.           armor_keys = @armors.keys.sort!
  257.           for i in armor_keys
  258.             if i > armor_id
  259.               @armors[i-1] = @armors[i]
  260.               @armors.delete(i)
  261.             end
  262.           end
  263.           # 更改角色使用中的防具id
  264.           for i in [email protected]
  265.             if @actors[i].armor1_id != nil and @actors[i].armor1_id > armor_id
  266.               @actors[i].armor1_id -= 1
  267.             end
  268.             if @actors[i].armor2_id != nil and @actors[i].armor2_id > armor_id
  269.               @actors[i].armor2_id -= 1
  270.             end
  271.             if @actors[i].armor3_id != nil and @actors[i].armor3_id > armor_id
  272.               @actors[i].armor3_id -= 1
  273.             end
  274.             if @actors[i].armor4_id != nil and @actors[i].armor4_id > armor_id
  275.               @actors[i].armor4_id -= 1
  276.             end
  277.           end
  278.           if armor_id > DUR::DATA_ARMOR_SIZE
  279.             # 删除数据库防具id,后补进
  280.             for i in armor_id+1...$data_armors.size
  281.               $data_armors[i].id -= 1
  282.             end
  283.             $data_armors.delete_at(armor_id)
  284.             # 职业可装备防具数组更新
  285.             for i in 1...$data_classes.size
  286.               if $data_classes[i].armor_set.include?(armor_id)
  287.                 $data_classes[i].armor_set.delete(armor_id)
  288.               end
  289.               for j in $data_classes[i].armor_set
  290.                 if j > armor_id
  291.                   $data_classes[i].armor_set.delete(j)
  292.                   j -= 1
  293.                   $data_classes[i].armor_set.push(j)
  294.                 end
  295.               end
  296.             end
  297.           end
  298.         end
  299.       end
  300.     end
  301.   end
  302. end
  303. # ===========================================================================

  304. class Window_Item < Window_Selectable
  305.   #--------------------------------------------------------------------------
  306.   def update_help
  307.     description = ""
  308.     if self.item != nil
  309.       description = self.item.description
  310.       if !self.item.is_a? RPG::Item
  311.         dur_set = item.dur_set
  312.         dur = item.dur
  313.         description = description + " 耐久度: #{dur}/#{dur_set}"
  314.       end
  315.     end
  316.     @help_window.set_text(description)
  317.   end
  318. end
  319. # ===========================================================================

  320. class Window_EquipItem < Window_Selectable
  321.   #--------------------------------------------------------------------------
  322.   def update_help
  323.     description = ""
  324.     if self.item != nil
  325.       description = self.item.description
  326.       dur_set = item.dur_set
  327.       dur = item.dur
  328.       description = description + " 耐久度: #{dur}/#{dur_set}"
  329.     end
  330.     @help_window.set_text(description)
  331.   end
  332. end
  333. # ===========================================================================

  334. class Window_EquipRight < Window_Selectable
  335.   #--------------------------------------------------------------------------
  336.   def update_help
  337.     description = ""
  338.     if self.item != nil
  339.       description = self.item.description
  340.       dur_set = item.dur_set
  341.       dur = item.dur
  342.       description = description + " 耐久度: #{dur}/#{dur_set}"
  343.     end
  344.     @help_window.set_text(description)
  345.   end
  346. end
  347. #==============================================================================

  348. class Window_ShopBuy < Window_Selectable
  349.   #--------------------------------------------------------------------------
  350.   def update_help
  351.     description = ""
  352.     if self.item != nil
  353.       description = self.item.description
  354.       if !self.item.is_a? RPG::Item
  355.         dur_set = item.dur_set
  356.         dur = item.dur
  357.         description = description + " 耐久度: #{dur}/#{dur_set}"
  358.       end
  359.     end
  360.     @help_window.set_text(description)
  361.   end
  362. end
  363. #==============================================================================

  364. class Window_ShopSell < Window_Selectable
  365.   #--------------------------------------------------------------------------
  366.   def update_help
  367.     description = ""
  368.     if self.item != nil
  369.       description = self.item.description
  370.       if !self.item.is_a? RPG::Item
  371.         dur_set = item.dur_set
  372.         dur = item.dur
  373.         description = description + " 耐久度: #{dur}/#{dur_set}"
  374.       end
  375.     end
  376.     @help_window.set_text(description)
  377.   end
  378. end
  379. #==============================================================================

  380. class Scene_Title
  381.   #--------------------------------------------------------------------------
  382.   alias main_add_dur main
  383.   def main
  384.     main_add_dur
  385.     # 战斗测试的情况下
  386.     if $BTEST
  387.       battle_test
  388.       return
  389.     end
  390.     $data_weapons = load_data("Data/Weapons.rxdata")
  391.     $data_armors = load_data("Data/Armors.rxdata")
  392.     # 初始化耐久度
  393.     for i in 1...$data_weapons.size
  394.       $data_weapons[i].dur = $data_weapons[i].dur_set
  395.     end
  396.     for i in 1...$data_armors.size
  397.       $data_armors[i].dur = $data_armors[i].dur_set
  398.     end
  399.   end
  400. end
  401. #==============================================================================

  402. class Scene_Shop
  403.   #--------------------------------------------------------------------------
  404.   def update_buy
  405.     @status_window.item = @buy_window.item
  406.     if Input.trigger?(Input::B)
  407.       $game_system.se_play($data_system.cancel_se)
  408.       # 窗口状态转向初期模式
  409.       @command_window.active = true
  410.       @dummy_window.visible = true
  411.       @buy_window.active = false
  412.       @buy_window.visible = false
  413.       @status_window.visible = false
  414.       @status_window.item = nil
  415.       @help_window.set_text("")
  416.       return
  417.     end
  418.     if Input.trigger?(Input::C)
  419.       @item = @buy_window.item
  420.       if @item == nil or @item.price > $game_party.gold
  421.         $game_system.se_play($data_system.buzzer_se)
  422.         return
  423.       end
  424.       case @item
  425.       when RPG::Item
  426.         number = $game_party.item_number(@item.id)
  427.       when RPG::Weapon
  428.         number = $game_party.weapon_number(@item.id)
  429.       when RPG::Armor
  430.         number = $game_party.armor_number(@item.id)
  431.       end
  432.       if number == 99
  433.         $game_system.se_play($data_system.buzzer_se)
  434.         return
  435.       end
  436.       $game_system.se_play($data_system.decision_se)
  437.       max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  438.       max = [max, 99 - number].min
  439.       if @item.is_a? RPG::Item # 除物品外直接买进1件
  440.         @buy_window.active = false
  441.         @buy_window.visible = false
  442.         @number_window.set(@item, max, @item.price)
  443.         @number_window.active = true
  444.         @number_window.visible = true
  445.       else
  446.         update_number
  447.       end
  448.     end
  449.   end
  450.   #--------------------------------------------------------------------------
  451.   def update_sell
  452.     if Input.trigger?(Input::B)
  453.       $game_system.se_play($data_system.cancel_se)
  454.       @command_window.active = true
  455.       @dummy_window.visible = true
  456.       @sell_window.active = false
  457.       @sell_window.visible = false
  458.       @status_window.item = nil
  459.       @help_window.set_text("")
  460.       return
  461.     end
  462.     if Input.trigger?(Input::C)
  463.       @item = @sell_window.item
  464.       @status_window.item = @item
  465.       if @item == nil or @item.price == 0
  466.         $game_system.se_play($data_system.buzzer_se)
  467.         return
  468.       end
  469.       $game_system.se_play($data_system.decision_se)
  470.       case @item
  471.       when RPG::Item
  472.         number = $game_party.item_number(@item.id)
  473.       when RPG::Weapon
  474.         number = $game_party.weapon_number(@item.id)
  475.       when RPG::Armor
  476.         number = $game_party.armor_number(@item.id)
  477.       end
  478.       max = number
  479.       if @item.is_a? RPG::Item # 除物品外直接卖出1件
  480.         @sell_window.active = false
  481.         @sell_window.visible = false
  482.         @number_window.set(@item, max, @item.price / 2)
  483.         @number_window.active = true
  484.         @number_window.visible = true
  485.         @status_window.visible = true
  486.       else
  487.         update_number
  488.       end
  489.     end
  490.   end
  491. end
  492. #==============================================================================

  493. class Game_Battler
  494.   #--------------------------------------------------------------------------
  495.   def attack_effect(attacker)
  496.     self.critical = false
  497.     hit_result = (rand(100) < attacker.hit)
  498.     if hit_result == true
  499.       atk = [attacker.atk - self.pdef / 2, 0].max
  500.       self.damage = atk * (20 + attacker.str) / 20
  501.       self.damage *= elements_correct(attacker.element_set)
  502.       self.damage /= 100
  503.       if self.damage > 0
  504.         if rand(100) < 4 * attacker.dex / self.agi
  505.           self.damage *= 2
  506.           self.critical = true
  507.         end
  508.         if self.guarding?
  509.           self.damage /= 2
  510.         end
  511.       end
  512.       if self.damage.abs > 0
  513.         amp = [self.damage.abs * 15 / 100, 1].max
  514.         self.damage += rand(amp+1) + rand(amp+1) - amp
  515.       end
  516.       eva = 8 * self.agi / attacker.dex + self.eva
  517.       hit = self.damage < 0 ? 100 : 100 - eva
  518.       hit = self.cant_evade? ? 100 : hit
  519.       hit_result = (rand(100) < hit)
  520.     end
  521.     if hit_result == true
  522.       remove_states_shock
  523.       self.hp -= self.damage
  524.       @state_changed = false
  525.       states_plus(attacker.plus_state_set)
  526.       states_minus(attacker.minus_state_set)
  527.     else
  528.       self.damage = "Miss"
  529.       self.critical = false
  530.     end
  531.     # 耐久度判断
  532.     if hit_result == true
  533.       if self.is_a?(Game_Actor) # 如果挨打的是角色,减防具耐久度
  534.         armor_kind =  1 + rand(4)
  535.         case armor_kind
  536.         when 1
  537.           if self.armor1_id != nil and self.armor1_id > 0
  538.             if rand(2) == 0 and $data_armors[self.armor1_id].dur > 0
  539.               $data_armors[self.armor1_id].dur -= 1
  540.             end
  541.           end
  542.         when 2
  543.           if self.armor2_id != nil and self.armor2_id > 0
  544.             if rand(2) == 0 and $data_armors[self.armor2_id].dur > 0
  545.               $data_armors[self.armor2_id].dur -= 1
  546.             end
  547.           end
  548.         when 3
  549.           if self.armor3_id != nil and self.armor3_id > 0
  550.             if rand(2) == 0 and $data_armors[self.armor3_id].dur > 0
  551.               $data_armors[self.armor3_id].dur -= 1
  552.             end
  553.           end
  554.         when 4
  555.           if self.armor4_id != nil and self.armor4_id > 0
  556.             if rand(2) == 0 and $data_armors[self.armor4_id].dur > 0
  557.               $data_armors[self.armor4_id].dur -= 1
  558.             end
  559.           end
  560.         end
  561.       else  # 角色打人,减武器耐久度
  562.         if attacker.weapon_id != nil and attacker.weapon_id > 0
  563.           if rand(8) == 0 and $data_weapons[attacker.weapon_id].dur > 0
  564.             $data_weapons[attacker.weapon_id].dur -= 1
  565.           end
  566.         end
  567.       end
  568.     end
  569.     # 过程结束
  570.     return true
  571.   end
  572.   #--------------------------------------------------------------------------
  573.   def skill_effect(user, skill)
  574.     self.critical = false
  575.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  576.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  577.       return false
  578.     end
  579.     effective = false
  580.     effective |= skill.common_event_id > 0
  581.     hit = skill.hit
  582.     if skill.atk_f > 0
  583.       hit *= user.hit / 100
  584.     end
  585.     hit_result = (rand(100) < hit)
  586.     effective |= hit < 100
  587.     if hit_result == true
  588.       power = skill.power + user.atk * skill.atk_f / 100
  589.       if power > 0
  590.         power -= self.pdef * skill.pdef_f / 200
  591.         power -= self.mdef * skill.mdef_f / 200
  592.         power = [power, 0].max
  593.       end
  594.       rate = 20
  595.       rate += (user.str * skill.str_f / 100)
  596.       rate += (user.dex * skill.dex_f / 100)
  597.       rate += (user.agi * skill.agi_f / 100)
  598.       rate += (user.int * skill.int_f / 100)
  599.       self.damage = power * rate / 20
  600.       self.damage *= elements_correct(skill.element_set)
  601.       self.damage /= 100
  602.       if self.damage > 0
  603.         if self.guarding?
  604.           self.damage /= 2
  605.         end
  606.       end
  607.       if skill.variance > 0 and self.damage.abs > 0
  608.         amp = [self.damage.abs * skill.variance / 100, 1].max
  609.         self.damage += rand(amp+1) + rand(amp+1) - amp
  610.       end
  611.       eva = 8 * self.agi / user.dex + self.eva
  612.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  613.       hit = self.cant_evade? ? 100 : hit
  614.       hit_result = (rand(100) < hit)
  615.       effective |= hit < 100
  616.     end
  617.     if hit_result == true
  618.       if skill.power != 0 and skill.atk_f > 0
  619.         remove_states_shock
  620.         effective = true
  621.       end
  622.       last_hp = self.hp
  623.       self.hp -= self.damage
  624.       effective |= self.hp != last_hp
  625.       @state_changed = false
  626.       effective |= states_plus(skill.plus_state_set)
  627.       effective |= states_minus(skill.minus_state_set)
  628.       if skill.power == 0
  629.         self.damage = ""
  630.         unless @state_changed
  631.           self.damage = "Miss"
  632.         end
  633.       end
  634.     else
  635.       self.damage = "Miss"
  636.     end
  637.     unless $game_temp.in_battle
  638.       self.damage = nil
  639.     end
  640.     # 耐久度判断
  641.     if hit_result == true
  642.       if self.is_a?(Game_Actor) # 如果挨打的是角色,减防具耐久度
  643.         armor_kind =  1 + rand(4)
  644.         case armor_kind
  645.         when 1
  646.           if self.armor1_id != nil and self.armor1_id > 0
  647.             if rand(2) == 0 and $data_armors[self.armor1_id].dur > 0
  648.               $data_armors[self.armor1_id].dur -= 1
  649.             end
  650.           end
  651.         when 2
  652.           if self.armor2_id != nil and self.armor2_id > 0
  653.             if rand(2) == 0 and $data_armors[self.armor2_id].dur > 0
  654.               $data_armors[self.armor2_id].dur -= 1
  655.             end
  656.           end
  657.         when 3
  658.           if self.armor3_id != nil and self.armor3_id > 0
  659.             if rand(2) == 0 and $data_armors[self.armor3_id].dur > 0
  660.               $data_armors[self.armor3_id].dur -= 1
  661.             end
  662.           end
  663.         when 4
  664.           if self.armor4_id != nil and self.armor4_id > 0
  665.             if rand(2) == 0 and $data_armors[self.armor4_id].dur > 0
  666.               $data_armors[self.armor4_id].dur -= 1
  667.             end
  668.           end
  669.         end
  670.       else  # 角色打人,减武器耐久度
  671.         if user.weapon_id != nil and user.weapon_id > 0
  672.           if rand(8) == 0 and $data_weapons[user.weapon_id].dur > 0
  673.             if skill.atk_f == 0 # 非物理技能不损武器耐久度
  674.               $data_weapons[user.weapon_id].dur -= 1
  675.             end
  676.           end
  677.         end
  678.       end
  679.     end
  680.     # 过程结束
  681.     return effective
  682.   end
  683. end
  684. #==============================================================================

  685. class Window_Dur < Window_Base
  686.   #--------------------------------------------------------------------------
  687.   def initialize
  688.     super(0,0,320,480)
  689.     self.opacity = 0
  690.     self.contents = Bitmap.new(width - 32, height - 32)
  691.     @text_dur_old = [0]
  692.     @text_dur = []
  693.     refresh
  694.   end
  695.   #--------------------------------------------------------------------------
  696.   def draw_text_dur(index,y)
  697.     text = @text_dur[index]
  698.     tx = 0
  699.     ty = index * 24 + y
  700.     self.contents.font.color = normal_color
  701.     self.contents.draw_text(tx, ty, 320-32, 24, text)
  702.   end
  703.   #--------------------------------------------------------------------------
  704.   def refresh
  705.     # 节省内存
  706.     if @text_dur_old == @text_dur
  707.       return
  708.     end
  709.     @text_dur.clear
  710.     # 取得空耐久度的装备名
  711.     for i in $game_party.actors
  712.       if $data_weapons[i.weapon_id] != nil and $data_weapons[i.weapon_id].dur == 0
  713.         @text_dur.push(i.name + "-" + $data_weapons[i.weapon_id].name)
  714.       end
  715.       if $data_armors[i.armor1_id] != nil and $data_armors[i.armor1_id].dur == 0
  716.         @text_dur.push(i.name + "-" + $data_armors[i.armor1_id].name)
  717.       end
  718.       if $data_armors[i.armor2_id] != nil and $data_armors[i.armor2_id].dur == 0
  719.         @text_dur.push(i.name + "-" + $data_armors[i.armor2_id].name)
  720.       end
  721.       if $data_armors[i.armor3_id] != nil and $data_armors[i.armor3_id].dur == 0
  722.         @text_dur.push(i.name + "-" + $data_armors[i.armor3_id].name)
  723.       end
  724.       if $data_armors[i.armor4_id] != nil and $data_armors[i.armor4_id].dur == 0
  725.         @text_dur.push(i.name + "-" + $data_armors[i.armor4_id].name)
  726.       end
  727.     end
  728.     @text_dur_old = @text_dur
  729.     y = 448 - @text_dur.size * 24
  730.     self.contents.clear
  731.     self.contents.font.size = 14
  732.     if @text_dur != []
  733.       self.contents.font.color = Color.new(255, 0, 0) # 红色显示
  734.       self.contents.draw_text(0, y - 24, 320 - 32, 24, "装备损坏:")
  735.     end
  736.     for i in 0... @text_dur.size
  737.       draw_text_dur(i,y)
  738.     end
  739.     self.contents.font.size = Font.default_size
  740.   end
  741. end
  742. #==============================================================================

  743. class Scene_Map
  744.   #--------------------------------------------------------------------------
  745.   def main
  746.     @spriteset = Spriteset_Map.new
  747.     @message_window = Window_Message.new
  748.     @dur_window = Window_Dur.new
  749.     Graphics.transition
  750.     loop do
  751.       Graphics.update
  752.       Input.update
  753.       update
  754.       if $scene != self
  755.         break
  756.       end
  757.     end
  758.     Graphics.freeze
  759.     @spriteset.dispose
  760.     @message_window.dispose
  761.     @dur_window.dispose
  762.     if $scene.is_a?(Scene_Title)
  763.       Graphics.transition
  764.       Graphics.freeze
  765.     end
  766.   end
  767.   #--------------------------------------------------------------------------
  768.   def update
  769.     loop do
  770.       $game_map.update
  771.       $game_system.map_interpreter.update
  772.       $game_player.update
  773.       $game_system.update
  774.       $game_screen.update
  775.       unless $game_temp.player_transferring
  776.         break
  777.       end
  778.       transfer_player
  779.       if $game_temp.transition_processing
  780.         break
  781.       end
  782.     end
  783.     @spriteset.update
  784.     @message_window.update
  785.     @dur_window.update
  786.     if $game_temp.gameover
  787.       $scene = Scene_Gameover.new
  788.       return
  789.     end
  790.     if $game_temp.to_title
  791.       $scene = Scene_Title.new
  792.       return
  793.     end
  794.     if $game_temp.transition_processing
  795.       $game_temp.transition_processing = false
  796.       if $game_temp.transition_name == ""
  797.         Graphics.transition(20)
  798.       else
  799.         Graphics.transition(40, "Graphics/Transitions/" +
  800.           $game_temp.transition_name)
  801.       end
  802.     end
  803.     if $game_temp.message_window_showing
  804.       return
  805.     end
  806.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  807.       unless $game_system.map_interpreter.running? or
  808.              $game_system.encounter_disabled
  809.         n = rand($game_map.encounter_list.size)
  810.         troop_id = $game_map.encounter_list[n]
  811.         if $data_troops[troop_id] != nil
  812.           $game_temp.battle_calling = true
  813.           $game_temp.battle_troop_id = troop_id
  814.           $game_temp.battle_can_escape = true
  815.           $game_temp.battle_can_lose = false
  816.           $game_temp.battle_proc = nil
  817.         end
  818.       end
  819.     end
  820.     if Input.trigger?(Input::B)
  821.       unless $game_system.map_interpreter.running? or
  822.              $game_system.menu_disabled
  823.         $game_temp.menu_calling = true
  824.         $game_temp.menu_beep = true
  825.       end
  826.     end
  827.     if $DEBUG and Input.press?(Input::F9)
  828.       $game_temp.debug_calling = true
  829.     end
  830.     unless $game_player.moving?
  831.       if $game_temp.battle_calling
  832.         call_battle
  833.       elsif $game_temp.shop_calling
  834.         call_shop
  835.       elsif $game_temp.name_calling
  836.         call_name
  837.       elsif $game_temp.menu_calling
  838.         call_menu
  839.       elsif $game_temp.save_calling
  840.         call_save
  841.       elsif $game_temp.debug_calling
  842.         call_debug
  843.       end
  844.     end
  845.   end
  846. end
  847. #==============================================================================

  848. class Scene_Save < Scene_File
  849.   #--------------------------------------------------------------------------
  850.   def write_save_data(file)
  851.     characters = []
  852.     for i in 0...$game_party.actors.size
  853.       actor = $game_party.actors[i]
  854.       characters.push([actor.character_name, actor.character_hue])
  855.     end
  856.     Marshal.dump(characters, file)
  857.     Marshal.dump(Graphics.frame_count, file)
  858.     $game_system.save_count += 1
  859.     $game_system.magic_number = $data_system.magic_number
  860.     Marshal.dump($game_system, file)
  861.     Marshal.dump($game_switches, file)
  862.     Marshal.dump($game_variables, file)
  863.     Marshal.dump($game_self_switches, file)
  864.     Marshal.dump($game_screen, file)
  865.     Marshal.dump($game_actors, file)
  866.     Marshal.dump($game_party, file)
  867.     Marshal.dump($game_troop, file)
  868.     Marshal.dump($game_map, file)
  869.     Marshal.dump($game_player, file)
  870.     Marshal.dump($data_weapons, file)
  871.     Marshal.dump($data_armors, file)
  872.     Marshal.dump($data_classes, file)
  873.   end
  874. end
  875. #==============================================================================

  876. module RPG
  877.   class Weapon
  878.     attr_accessor :dur_set
  879.     attr_accessor :dur
  880.     def name
  881.       name = @name.split(/,/)[0]
  882.       return name != nil ? name : ''
  883.     end
  884.     def dur_set
  885.       dur_set = @name.split(/,/)[1]
  886.       return dur_set != nil ? dur_set.to_i : 0
  887.     end
  888.   end
  889.   class Armor
  890.     attr_accessor :dur_set
  891.     attr_accessor :dur
  892.     def name
  893.       name = @name.split(/,/)[0]
  894.       return name != nil ? name : ''
  895.     end
  896.     def dur_set
  897.       dur_set = @name.split(/,/)[1]
  898.       return dur_set != nil ? dur_set.to_i : 0
  899.     end
  900.   end
  901. end
  902. end
复制代码

版主对此帖的评论:『贴脚本要框起来--冰』,积分『-5』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

茄孓

梦石
0
星屑
72
在线时间
140 小时
注册时间
2007-5-29
帖子
956
8
发表于 2008-3-28 20:38:58 | 只看该作者
25号开关开启就生效吧


  1. module DUR

  2. DATA_WEAPON_SIZE = 32 # 原数据库武器最大id
  3. DATA_ARMOR_SIZE = 32 # 原数据库防具最大id
  4. DUR_SET_MAX = 999 # 最大耐久度
  5. end
  6. #==============================================================================

  7. class Game_Actor < Game_Battler
  8. #--------------------------------------------------------------------------
  9. def base_str
  10.    n = $data_actors[@actor_id].parameters[2, @level]
  11.    weapon = $data_weapons[@weapon_id]
  12.    armor1 = $data_armors[@armor1_id]
  13.    armor2 = $data_armors[@armor2_id]
  14.    armor3 = $data_armors[@armor3_id]
  15.    armor4 = $data_armors[@armor4_id]
  16.    n += (weapon != nil and weapon.dur > 0) ? weapon.str_plus : 0
  17.    n += (armor1 != nil and armor1.dur > 0) ? armor1.str_plus : 0
  18.    n += (armor2 != nil and armor2.dur > 0) ? armor2.str_plus : 0
  19.    n += (armor3 != nil and armor3.dur > 0) ? armor3.str_plus : 0
  20.    n += (armor4 != nil and armor4.dur > 0) ? armor4.str_plus : 0
  21.    return [[n, 1].max, 999].min
  22. end
  23. #--------------------------------------------------------------------------
  24. def base_dex
  25.    n = $data_actors[@actor_id].parameters[3, @level]
  26.    weapon = $data_weapons[@weapon_id]
  27.    armor1 = $data_armors[@armor1_id]
  28.    armor2 = $data_armors[@armor2_id]
  29.    armor3 = $data_armors[@armor3_id]
  30.    armor4 = $data_armors[@armor4_id]
  31.    n += (weapon != nil and weapon.dur > 0) ? weapon.dex_plus : 0
  32.    n += (armor1 != nil and armor1.dur > 0) ? armor1.dex_plus : 0
  33.    n += (armor2 != nil and armor2.dur > 0) ? armor2.dex_plus : 0
  34.    n += (armor3 != nil and armor3.dur > 0) ? armor3.dex_plus : 0
  35.    n += (armor4 != nil and armor4.dur > 0) ? armor4.dex_plus : 0
  36.    return [[n, 1].max, 999].min
  37. end
  38. #--------------------------------------------------------------------------
  39. def base_agi
  40.    n = $data_actors[@actor_id].parameters[4, @level]
  41.    weapon = $data_weapons[@weapon_id]
  42.    armor1 = $data_armors[@armor1_id]
  43.    armor2 = $data_armors[@armor2_id]
  44.    armor3 = $data_armors[@armor3_id]
  45.    armor4 = $data_armors[@armor4_id]
  46.    n += (weapon != nil and weapon.dur > 0) ? weapon.agi_plus : 0
  47.    n += (armor1 != nil and armor1.dur > 0) ? armor1.agi_plus : 0
  48.    n += (armor2 != nil and armor2.dur > 0) ? armor2.agi_plus : 0
  49.    n += (armor3 != nil and armor3.dur > 0) ? armor3.agi_plus : 0
  50.    n += (armor4 != nil and armor4.dur > 0) ? armor4.agi_plus : 0
  51.    return [[n, 1].max, 999].min
  52. end
  53. #--------------------------------------------------------------------------
  54. def base_int
  55.    n = $data_actors[@actor_id].parameters[5, @level]
  56.    weapon = $data_weapons[@weapon_id]
  57.    armor1 = $data_armors[@armor1_id]
  58.    armor2 = $data_armors[@armor2_id]
  59.    armor3 = $data_armors[@armor3_id]
  60.    armor4 = $data_armors[@armor4_id]
  61.    n += (weapon != nil and weapon.dur > 0) ? weapon.int_plus : 0
  62.    n += (armor1 != nil and armor1.dur > 0) ? armor1.int_plus : 0
  63.    n += (armor2 != nil and armor2.dur > 0) ? armor2.int_plus : 0
  64.    n += (armor3 != nil and armor3.dur > 0) ? armor3.int_plus : 0
  65.    n += (armor4 != nil and armor4.dur > 0) ? armor4.int_plus : 0
  66.    return [[n, 1].max, 999].min
  67. end
  68. #--------------------------------------------------------------------------
  69. def base_atk
  70.    weapon = $data_weapons[@weapon_id]
  71.    return (weapon != nil and weapon.dur > 0) ? weapon.atk : 0
  72. end
  73. #--------------------------------------------------------------------------
  74. def base_pdef
  75.    weapon = $data_weapons[@weapon_id]
  76.    armor1 = $data_armors[@armor1_id]
  77.    armor2 = $data_armors[@armor2_id]
  78.    armor3 = $data_armors[@armor3_id]
  79.    armor4 = $data_armors[@armor4_id]
  80.    pdef1 = (weapon != nil and weapon.dur > 0) ? weapon.pdef : 0
  81.    pdef2 = (armor1 != nil and armor1.dur > 0) ? armor1.pdef : 0
  82.    pdef3 = (armor2 != nil and armor2.dur > 0) ? armor2.pdef : 0
  83.    pdef4 = (armor3 != nil and armor3.dur > 0) ? armor3.pdef : 0
  84.    pdef5 = (armor4 != nil and armor4.dur > 0) ? armor4.pdef : 0
  85.    return pdef1 + pdef2 + pdef3 + pdef4 + pdef5
  86. end
  87. #--------------------------------------------------------------------------
  88. def base_mdef
  89.    weapon = $data_weapons[@weapon_id]
  90.    armor1 = $data_armors[@armor1_id]
  91.    armor2 = $data_armors[@armor2_id]
  92.    armor3 = $data_armors[@armor3_id]
  93.    armor4 = $data_armors[@armor4_id]
  94.    mdef1 = (weapon != nil and weapon.dur > 0) ? weapon.mdef : 0
  95.    mdef2 = (armor1 != nil and armor1.dur > 0) ? armor1.mdef : 0
  96.    mdef3 = (armor2 != nil and armor2.dur > 0) ? armor2.mdef : 0
  97.    mdef4 = (armor3 != nil and armor3.dur > 0) ? armor3.mdef : 0
  98.    mdef5 = (armor4 != nil and armor4.dur > 0) ? armor4.mdef : 0
  99.    return mdef1 + mdef2 + mdef3 + mdef4 + mdef5
  100. end
  101. #--------------------------------------------------------------------------
  102. def base_eva
  103.    armor1 = $data_armors[@armor1_id]
  104.    armor2 = $data_armors[@armor2_id]
  105.    armor3 = $data_armors[@armor3_id]
  106.    armor4 = $data_armors[@armor4_id]
  107.    eva1 = (armor1 != nil and armor1.dur > 0) ? armor1.eva : 0
  108.    eva2 = (armor2 != nil and armor2.dur > 0) ? armor2.eva : 0
  109.    eva3 = (armor3 != nil and armor3.dur > 0) ? armor3.eva : 0
  110.    eva4 = (armor4 != nil and armor4.dur > 0) ? armor4.eva : 0
  111.    return eva1 + eva2 + eva3 + eva4
  112. end
  113. end
  114. #==============================================================================

  115. class Game_Party
  116. #--------------------------------------------------------------------------
  117. attr_accessor   :weapons
  118. attr_accessor   :armors
  119. #--------------------------------------------------------------------------
  120. def weapon_number(weapon_id)
  121.    return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
  122. end
  123. #--------------------------------------------------------------------------
  124. # 以下修改于<<武器攻击力波动>>(灼眼的夏娜)
  125. def gain_weapon(weapon_id, n)
  126.   if $game_switches[25] == false #25号开关开启时,生效
  127.    else
  128.    if weapon_id > 0
  129.      if n > 0 # 增加武器的情况
  130.        n = 1
  131.        # 装备栏中使用的武器不处理~
  132.        if $scene.is_a?(Scene_Equip)
  133.          @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  134.        else
  135.          new_weapon = $data_weapons[weapon_id].clone
  136.          new_weapon.dur_set = $data_weapons[weapon_id].dur_set
  137.          new_weapon.dur = $data_weapons[weapon_id].dur_set
  138.          new_weapon.id = $data_weapons.size
  139.          #数据库扩容
  140.          $data_weapons.push(new_weapon)
  141.          # 职业可装备武器数组更新~
  142.          for i in 1...$data_classes.size
  143.            if $data_classes[i].weapon_set.include?(weapon_id)
  144.              $data_classes[i].weapon_set.push(new_weapon.id)
  145.            end
  146.          end
  147.          # 增加武器~
  148.          @weapons[new_weapon.id] = [[weapon_number(new_weapon.id) + n, 0].max, 99].min
  149.        end
  150.      else # n < 0 减少武器的情况(未定的情况: n = 0)
  151.        n = -1
  152.        # 装备栏中卸下的武器不处理~
  153.        if $scene.is_a?(Scene_Equip)
  154.          @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  155.        else
  156.          lose_name = $data_weapons[weapon_id].name
  157.          dur_min = DUR::DUR_SET_MAX
  158.          for i in DUR::DATA_WEAPON_SIZE+1...$data_weapons.size
  159.            # 重新确定weapon_id,必定在原武器数据库之外
  160.            # 减少同名武器中耐久度最低的
  161.            if $data_weapons[i].name == lose_name and $data_weapons[i].dur < dur_min
  162.              weapon_id = i
  163.            end
  164.          end
  165.          # 已不存在的不做操作
  166.          if weapon_number(weapon_id) <= 0
  167.            return
  168.          end
  169.          # 减少武器
  170.          @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  171.          # 删除行囊拥有的武器id,后id补进
  172.          @weapons.delete(weapon_id)
  173.          weapon_keys = @weapons.keys.sort!
  174.          for i in weapon_keys
  175.            if i > weapon_id
  176.              @weapons[i-1] = @weapons[i]
  177.              @weapons.delete(i)
  178.            end
  179.          end
  180.          # 更改角色使用中的武器id
  181.          for i in [email protected]
  182.            if @actors[i].weapon_id != nil and @actors[i].weapon_id > weapon_id
  183.              @actors[i].weapon_id -= 1
  184.            end
  185.          end
  186.          if weapon_id > DUR::DATA_WEAPON_SIZE
  187.            # 删除数据库武器id,后补进
  188.            for i in weapon_id+1...$data_weapons.size
  189.              $data_weapons[i].id -= 1
  190.            end
  191.            $data_weapons.delete_at(weapon_id)
  192.            # 职业可装备武器数组更新
  193.            for i in 1...$data_classes.size
  194.              if $data_classes[i].weapon_set.include?(weapon_id)
  195.                $data_classes[i].weapon_set.delete(weapon_id)
  196.              end
  197.              for j in $data_classes[i].weapon_set
  198.                if j > weapon_id
  199.                  $data_classes[i].weapon_set.delete(j)
  200.                  j -= 1
  201.                  $data_classes[i].weapon_set.push(j)
  202.                end
  203.              end
  204.            end
  205.          end
  206.        end
  207.      end
  208.    end
  209. end
  210. end
  211. #--------------------------------------------------------------------------
  212. def gain_armor(armor_id, n)
  213.    if armor_id > 0
  214.      if n > 0 # 增加防具的情况
  215.        n = 1
  216.        # 装备栏中使用的防具不处理~
  217.        if $scene.is_a?(Scene_Equip)
  218.          @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  219.        else
  220.          new_armor = $data_armors[armor_id].clone
  221.          new_armor.dur_set = $data_armors[armor_id].dur_set
  222.          new_armor.dur = $data_armors[armor_id].dur_set
  223.          new_armor.id = $data_armors.size
  224.          #数据库扩容
  225.          $data_armors.push(new_armor)
  226.          # 职业可装备防具数组更新~
  227.          for i in 1...$data_classes.size
  228.            if $data_classes[i].armor_set.include?(armor_id)
  229.              $data_classes[i].armor_set.push(new_armor.id)
  230.            end
  231.          end
  232.          # 增加防具
  233.          @armors[new_armor.id] = [[armor_number(new_armor.id) + n, 0].max, 99].min
  234.        end
  235.      else # n < 0 减少防具的情况(未定的情况: n = 0)
  236.        n = -1
  237.        # 装备栏中卸下的防具不处理
  238.        if $scene.is_a?(Scene_Equip)
  239.          @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  240.        else
  241.          lose_name = $data_armors[armor_id].name
  242.          dur_min = DUR::DUR_SET_MAX
  243.          for i in DUR::DATA_ARMOR_SIZE+1...$data_armors.size
  244.            # 重新确定armor_id,必定在原防具数据库之外
  245.            # 减少同名防具中耐久度最低的
  246.            if $data_armors[i].name == lose_name and $data_armors[i].dur < dur_min
  247.              armor_id = i
  248.            end
  249.          end
  250.          # 已不存在的不做操作
  251.          if armor_number(armor_id) <= 0
  252.            return
  253.          end
  254.          # 减少防具
  255.          @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  256.          # 删除行囊拥有的防具id,后id补进
  257.          @weapons.delete(armor_id)
  258.          armor_keys = @armors.keys.sort!
  259.          for i in armor_keys
  260.            if i > armor_id
  261.              @armors[i-1] = @armors[i]
  262.              @armors.delete(i)
  263.            end
  264.          end
  265.          # 更改角色使用中的防具id
  266.          for i in [email protected]
  267.            if @actors[i].armor1_id != nil and @actors[i].armor1_id > armor_id
  268.              @actors[i].armor1_id -= 1
  269.            end
  270.            if @actors[i].armor2_id != nil and @actors[i].armor2_id > armor_id
  271.              @actors[i].armor2_id -= 1
  272.            end
  273.            if @actors[i].armor3_id != nil and @actors[i].armor3_id > armor_id
  274.              @actors[i].armor3_id -= 1
  275.            end
  276.            if @actors[i].armor4_id != nil and @actors[i].armor4_id > armor_id
  277.              @actors[i].armor4_id -= 1
  278.            end
  279.          end
  280.          if armor_id > DUR::DATA_ARMOR_SIZE
  281.            # 删除数据库防具id,后补进
  282.            for i in armor_id+1...$data_armors.size
  283.              $data_armors[i].id -= 1
  284.            end
  285.            $data_armors.delete_at(armor_id)
  286.            # 职业可装备防具数组更新
  287.            for i in 1...$data_classes.size
  288.              if $data_classes[i].armor_set.include?(armor_id)
  289.                $data_classes[i].armor_set.delete(armor_id)
  290.              end
  291.              for j in $data_classes[i].armor_set
  292.                if j > armor_id
  293.                  $data_classes[i].armor_set.delete(j)
  294.                  j -= 1
  295.                  $data_classes[i].armor_set.push(j)
  296.                end
  297.              end
  298.            end
  299.          end
  300.        end
  301.      end
  302.    end
  303. end
  304. end
  305. # ===========================================================================

  306. class Window_Item < Window_Selectable
  307. #--------------------------------------------------------------------------
  308. def update_help
  309.    description = ""
  310.    if self.item != nil
  311.      description = self.item.description
  312.      if !self.item.is_a? RPG::Item
  313.        dur_set = item.dur_set
  314.        dur = item.dur
  315.        description = description + " 耐久度: #{dur}/#{dur_set}"
  316.      end
  317.    end
  318.    @help_window.set_text(description)
  319. end
  320. end
  321. # ===========================================================================

  322. class Window_EquipItem < Window_Selectable
  323. #--------------------------------------------------------------------------
  324. def update_help
  325.    description = ""
  326.    if self.item != nil
  327.      description = self.item.description
  328.      dur_set = item.dur_set
  329.      dur = item.dur
  330.      description = description + " 耐久度: #{dur}/#{dur_set}"
  331.    end
  332.    @help_window.set_text(description)
  333. end
  334. end
  335. # ===========================================================================

  336. class Window_EquipRight < Window_Selectable
  337. #--------------------------------------------------------------------------
  338. def update_help
  339.    description = ""
  340.    if self.item != nil
  341.      description = self.item.description
  342.      dur_set = item.dur_set
  343.      dur = item.dur
  344.      description = description + " 耐久度: #{dur}/#{dur_set}"
  345.    end
  346.    @help_window.set_text(description)
  347. end
  348. end
  349. #==============================================================================

  350. class Window_ShopBuy < Window_Selectable
  351. #--------------------------------------------------------------------------
  352. def update_help
  353.    description = ""
  354.    if self.item != nil
  355.      description = self.item.description
  356.      if !self.item.is_a? RPG::Item
  357.        dur_set = item.dur_set
  358.        dur = item.dur
  359.        description = description + " 耐久度: #{dur}/#{dur_set}"
  360.      end
  361.    end
  362.    @help_window.set_text(description)
  363. end
  364. end
  365. #==============================================================================

  366. class Window_ShopSell < Window_Selectable
  367. #--------------------------------------------------------------------------
  368. def update_help
  369.    description = ""
  370.    if self.item != nil
  371.      description = self.item.description
  372.      if !self.item.is_a? RPG::Item
  373.        dur_set = item.dur_set
  374.        dur = item.dur
  375.        description = description + " 耐久度: #{dur}/#{dur_set}"
  376.      end
  377.    end
  378.    @help_window.set_text(description)
  379. end
  380. end
  381. #==============================================================================

  382. class Scene_Title
  383. #--------------------------------------------------------------------------
  384. alias main_add_dur main
  385. def main
  386.    main_add_dur
  387.    # 战斗测试的情况下
  388.    if $BTEST
  389.      battle_test
  390.      return
  391.    end
  392.    $data_weapons = load_data("Data/Weapons.rxdata")
  393.    $data_armors = load_data("Data/Armors.rxdata")
  394.    # 初始化耐久度
  395.    for i in 1...$data_weapons.size
  396.      $data_weapons[i].dur = $data_weapons[i].dur_set
  397.    end
  398.    for i in 1...$data_armors.size
  399.      $data_armors[i].dur = $data_armors[i].dur_set
  400.    end
  401. end
  402. end
  403. #==============================================================================

  404. class Scene_Shop
  405. #--------------------------------------------------------------------------
  406. def update_buy
  407.    @status_window.item = @buy_window.item
  408.    if Input.trigger?(Input::B)
  409.      $game_system.se_play($data_system.cancel_se)
  410.      # 窗口状态转向初期模式
  411.      @command_window.active = true
  412.      @dummy_window.visible = true
  413.      @buy_window.active = false
  414.      @buy_window.visible = false
  415.      @status_window.visible = false
  416.      @status_window.item = nil
  417.      @help_window.set_text("")
  418.      return
  419.    end
  420.    if Input.trigger?(Input::C)
  421.      @item = @buy_window.item
  422.      if @item == nil or @item.price > $game_party.gold
  423.        $game_system.se_play($data_system.buzzer_se)
  424.        return
  425.      end
  426.      case @item
  427.      when RPG::Item
  428.        number = $game_party.item_number(@item.id)
  429.      when RPG::Weapon
  430.        number = $game_party.weapon_number(@item.id)
  431.      when RPG::Armor
  432.        number = $game_party.armor_number(@item.id)
  433.      end
  434.      if number == 99
  435.        $game_system.se_play($data_system.buzzer_se)
  436.        return
  437.      end
  438.      $game_system.se_play($data_system.decision_se)
  439.      max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  440.      max = [max, 99 - number].min
  441.      if @item.is_a? RPG::Item # 除物品外直接买进1件
  442.        @buy_window.active = false
  443.        @buy_window.visible = false
  444.        @number_window.set(@item, max, @item.price)
  445.        @number_window.active = true
  446.        @number_window.visible = true
  447.      else
  448.        update_number
  449.      end
  450.    end
  451. end
  452. #--------------------------------------------------------------------------
  453. def update_sell
  454.    if Input.trigger?(Input::B)
  455.      $game_system.se_play($data_system.cancel_se)
  456.      @command_window.active = true
  457.      @dummy_window.visible = true
  458.      @sell_window.active = false
  459.      @sell_window.visible = false
  460.      @status_window.item = nil
  461.      @help_window.set_text("")
  462.      return
  463.    end
  464.    if Input.trigger?(Input::C)
  465.      @item = @sell_window.item
  466.      @status_window.item = @item
  467.      if @item == nil or @item.price == 0
  468.        $game_system.se_play($data_system.buzzer_se)
  469.        return
  470.      end
  471.      $game_system.se_play($data_system.decision_se)
  472.      case @item
  473.      when RPG::Item
  474.        number = $game_party.item_number(@item.id)
  475.      when RPG::Weapon
  476.        number = $game_party.weapon_number(@item.id)
  477.      when RPG::Armor
  478.        number = $game_party.armor_number(@item.id)
  479.      end
  480.      max = number
  481.      if @item.is_a? RPG::Item # 除物品外直接卖出1件
  482.        @sell_window.active = false
  483.        @sell_window.visible = false
  484.        @number_window.set(@item, max, @item.price / 2)
  485.        @number_window.active = true
  486.        @number_window.visible = true
  487.        @status_window.visible = true
  488.      else
  489.        update_number
  490.      end
  491.    end
  492. end
  493. end
  494. #==============================================================================

  495. class Game_Battler
  496. #--------------------------------------------------------------------------
  497. def attack_effect(attacker)
  498.    self.critical = false
  499.    hit_result = (rand(100) < attacker.hit)
  500.    if hit_result == true
  501.      atk = [attacker.atk - self.pdef / 2, 0].max
  502.      self.damage = atk * (20 + attacker.str) / 20
  503.      self.damage *= elements_correct(attacker.element_set)
  504.      self.damage /= 100
  505.      if self.damage > 0
  506.        if rand(100) < 4 * attacker.dex / self.agi
  507.          self.damage *= 2
  508.          self.critical = true
  509.        end
  510.        if self.guarding?
  511.          self.damage /= 2
  512.        end
  513.      end
  514.      if self.damage.abs > 0
  515.        amp = [self.damage.abs * 15 / 100, 1].max
  516.        self.damage += rand(amp+1) + rand(amp+1) - amp
  517.      end
  518.      eva = 8 * self.agi / attacker.dex + self.eva
  519.      hit = self.damage < 0 ? 100 : 100 - eva
  520.      hit = self.cant_evade? ? 100 : hit
  521.      hit_result = (rand(100) < hit)
  522.    end
  523.    if hit_result == true
  524.      remove_states_shock
  525.      self.hp -= self.damage
  526.      @state_changed = false
  527.      states_plus(attacker.plus_state_set)
  528.      states_minus(attacker.minus_state_set)
  529.    else
  530.      self.damage = "Miss"
  531.      self.critical = false
  532.    end
  533.    # 耐久度判断
  534.    if hit_result == true
  535.      if self.is_a?(Game_Actor) # 如果挨打的是角色,减防具耐久度
  536.        armor_kind =  1 + rand(4)
  537.        case armor_kind
  538.        when 1
  539.          if self.armor1_id != nil and self.armor1_id > 0
  540.            if rand(2) == 0 and $data_armors[self.armor1_id].dur > 0
  541.              $data_armors[self.armor1_id].dur -= 1
  542.            end
  543.          end
  544.        when 2
  545.          if self.armor2_id != nil and self.armor2_id > 0
  546.            if rand(2) == 0 and $data_armors[self.armor2_id].dur > 0
  547.              $data_armors[self.armor2_id].dur -= 1
  548.            end
  549.          end
  550.        when 3
  551.          if self.armor3_id != nil and self.armor3_id > 0
  552.            if rand(2) == 0 and $data_armors[self.armor3_id].dur > 0
  553.              $data_armors[self.armor3_id].dur -= 1
  554.            end
  555.          end
  556.        when 4
  557.          if self.armor4_id != nil and self.armor4_id > 0
  558.            if rand(2) == 0 and $data_armors[self.armor4_id].dur > 0
  559.              $data_armors[self.armor4_id].dur -= 1
  560.            end
  561.          end
  562.        end
  563.      else  # 角色打人,减武器耐久度
  564.        if attacker.weapon_id != nil and attacker.weapon_id > 0
  565.          if rand(8) == 0 and $data_weapons[attacker.weapon_id].dur > 0
  566.            $data_weapons[attacker.weapon_id].dur -= 1
  567.          end
  568.        end
  569.      end
  570.    end
  571.    # 过程结束
  572.    return true
  573. end
  574. #--------------------------------------------------------------------------
  575. def skill_effect(user, skill)
  576.    self.critical = false
  577.    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  578.       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  579.      return false
  580.    end
  581.    effective = false
  582.    effective |= skill.common_event_id > 0
  583.    hit = skill.hit
  584.    if skill.atk_f > 0
  585.      hit *= user.hit / 100
  586.    end
  587.    hit_result = (rand(100) < hit)
  588.    effective |= hit < 100
  589.    if hit_result == true
  590.      power = skill.power + user.atk * skill.atk_f / 100
  591.      if power > 0
  592.        power -= self.pdef * skill.pdef_f / 200
  593.        power -= self.mdef * skill.mdef_f / 200
  594.        power = [power, 0].max
  595.      end
  596.      rate = 20
  597.      rate += (user.str * skill.str_f / 100)
  598.      rate += (user.dex * skill.dex_f / 100)
  599.      rate += (user.agi * skill.agi_f / 100)
  600.      rate += (user.int * skill.int_f / 100)
  601.      self.damage = power * rate / 20
  602.      self.damage *= elements_correct(skill.element_set)
  603.      self.damage /= 100
  604.      if self.damage > 0
  605.        if self.guarding?
  606.          self.damage /= 2
  607.        end
  608.      end
  609.      if skill.variance > 0 and self.damage.abs > 0
  610.        amp = [self.damage.abs * skill.variance / 100, 1].max
  611.        self.damage += rand(amp+1) + rand(amp+1) - amp
  612.      end
  613.      eva = 8 * self.agi / user.dex + self.eva
  614.      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  615.      hit = self.cant_evade? ? 100 : hit
  616.      hit_result = (rand(100) < hit)
  617.      effective |= hit < 100
  618.    end
  619.    if hit_result == true
  620.      if skill.power != 0 and skill.atk_f > 0
  621.        remove_states_shock
  622.        effective = true
  623.      end
  624.      last_hp = self.hp
  625.      self.hp -= self.damage
  626.      effective |= self.hp != last_hp
  627.      @state_changed = false
  628.      effective |= states_plus(skill.plus_state_set)
  629.      effective |= states_minus(skill.minus_state_set)
  630.      if skill.power == 0
  631.        self.damage = ""
  632.        unless @state_changed
  633.          self.damage = "Miss"
  634.        end
  635.      end
  636.    else
  637.      self.damage = "Miss"
  638.    end
  639.    unless $game_temp.in_battle
  640.      self.damage = nil
  641.    end
  642.    # 耐久度判断
  643.    if hit_result == true
  644.      if self.is_a?(Game_Actor) # 如果挨打的是角色,减防具耐久度
  645.        armor_kind =  1 + rand(4)
  646.        case armor_kind
  647.        when 1
  648.          if self.armor1_id != nil and self.armor1_id > 0
  649.            if rand(2) == 0 and $data_armors[self.armor1_id].dur > 0
  650.              $data_armors[self.armor1_id].dur -= 1
  651.            end
  652.          end
  653.        when 2
  654.          if self.armor2_id != nil and self.armor2_id > 0
  655.            if rand(2) == 0 and $data_armors[self.armor2_id].dur > 0
  656.              $data_armors[self.armor2_id].dur -= 1
  657.            end
  658.          end
  659.        when 3
  660.          if self.armor3_id != nil and self.armor3_id > 0
  661.            if rand(2) == 0 and $data_armors[self.armor3_id].dur > 0
  662.              $data_armors[self.armor3_id].dur -= 1
  663.            end
  664.          end
  665.        when 4
  666.          if self.armor4_id != nil and self.armor4_id > 0
  667.            if rand(2) == 0 and $data_armors[self.armor4_id].dur > 0
  668.              $data_armors[self.armor4_id].dur -= 1
  669.            end
  670.          end
  671.        end
  672.      else  # 角色打人,减武器耐久度
  673.        if user.weapon_id != nil and user.weapon_id > 0
  674.          if rand(8) == 0 and $data_weapons[user.weapon_id].dur > 0
  675.            if skill.atk_f == 0 # 非物理技能不损武器耐久度
  676.              $data_weapons[user.weapon_id].dur -= 1
  677.            end
  678.          end
  679.        end
  680.      end
  681.    end
  682.    # 过程结束
  683.    return effective
  684. end
  685. end
  686. #==============================================================================

  687. class Window_Dur < Window_Base
  688. #--------------------------------------------------------------------------
  689. def initialize
  690.    super(0,0,320,480)
  691.    self.opacity = 0
  692.    self.contents = Bitmap.new(width - 32, height - 32)
  693.    @text_dur_old = [0]
  694.    @text_dur = []
  695.    refresh
  696. end
  697. #--------------------------------------------------------------------------
  698. def draw_text_dur(index,y)
  699.    text = @text_dur[index]
  700.    tx = 0
  701.    ty = index * 24 + y
  702.    self.contents.font.color = normal_color
  703.    self.contents.draw_text(tx, ty, 320-32, 24, text)
  704. end
  705. #--------------------------------------------------------------------------
  706. def refresh
  707.    # 节省内存
  708.    if @text_dur_old == @text_dur
  709.      return
  710.    end
  711.    @text_dur.clear
  712.    # 取得空耐久度的装备名
  713.    for i in $game_party.actors
  714.      if $data_weapons[i.weapon_id] != nil and $data_weapons[i.weapon_id].dur == 0
  715.        @text_dur.push(i.name + "-" + $data_weapons[i.weapon_id].name)
  716.      end
  717.      if $data_armors[i.armor1_id] != nil and $data_armors[i.armor1_id].dur == 0
  718.        @text_dur.push(i.name + "-" + $data_armors[i.armor1_id].name)
  719.      end
  720.      if $data_armors[i.armor2_id] != nil and $data_armors[i.armor2_id].dur == 0
  721.        @text_dur.push(i.name + "-" + $data_armors[i.armor2_id].name)
  722.      end
  723.      if $data_armors[i.armor3_id] != nil and $data_armors[i.armor3_id].dur == 0
  724.        @text_dur.push(i.name + "-" + $data_armors[i.armor3_id].name)
  725.      end
  726.      if $data_armors[i.armor4_id] != nil and $data_armors[i.armor4_id].dur == 0
  727.        @text_dur.push(i.name + "-" + $data_armors[i.armor4_id].name)
  728.      end
  729.    end
  730.    @text_dur_old = @text_dur
  731.    y = 448 - @text_dur.size * 24
  732.    self.contents.clear
  733.    self.contents.font.size = 14
  734.    if @text_dur != []
  735.      self.contents.font.color = Color.new(255, 0, 0) # 红色显示
  736.      self.contents.draw_text(0, y - 24, 320 - 32, 24, "装备损坏:")
  737.    end
  738.    for i in 0... @text_dur.size
  739.      draw_text_dur(i,y)
  740.    end
  741.    self.contents.font.size = Font.default_size
  742. end
  743. end
  744. #==============================================================================

  745. class Scene_Map
  746. #--------------------------------------------------------------------------
  747. def main
  748.    @spriteset = Spriteset_Map.new
  749.    @message_window = Window_Message.new
  750.    @dur_window = Window_Dur.new
  751.    Graphics.transition
  752.    loop do
  753.      Graphics.update
  754.      Input.update
  755.      update
  756.      if $scene != self
  757.        break
  758.      end
  759.    end
  760.    Graphics.freeze
  761.    @spriteset.dispose
  762.    @message_window.dispose
  763.    @dur_window.dispose
  764.    if $scene.is_a?(Scene_Title)
  765.      Graphics.transition
  766.      Graphics.freeze
  767.    end
  768. end
  769. #--------------------------------------------------------------------------
  770. def update
  771.    loop do
  772.      $game_map.update
  773.      $game_system.map_interpreter.update
  774.      $game_player.update
  775.      $game_system.update
  776.      $game_screen.update
  777.      unless $game_temp.player_transferring
  778.        break
  779.      end
  780.      transfer_player
  781.      if $game_temp.transition_processing
  782.        break
  783.      end
  784.    end
  785.    @spriteset.update
  786.    @message_window.update
  787.    @dur_window.update
  788.    if $game_temp.gameover
  789.      $scene = Scene_Gameover.new
  790.      return
  791.    end
  792.    if $game_temp.to_title
  793.      $scene = Scene_Title.new
  794.      return
  795.    end
  796.    if $game_temp.transition_processing
  797.      $game_temp.transition_processing = false
  798.      if $game_temp.transition_name == ""
  799.        Graphics.transition(20)
  800.      else
  801.        Graphics.transition(40, "Graphics/Transitions/" +
  802.          $game_temp.transition_name)
  803.      end
  804.    end
  805.    if $game_temp.message_window_showing
  806.      return
  807.    end
  808.    if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  809.      unless $game_system.map_interpreter.running? or
  810.             $game_system.encounter_disabled
  811.        n = rand($game_map.encounter_list.size)
  812.        troop_id = $game_map.encounter_list[n]
  813.        if $data_troops[troop_id] != nil
  814.          $game_temp.battle_calling = true
  815.          $game_temp.battle_troop_id = troop_id
  816.          $game_temp.battle_can_escape = true
  817.          $game_temp.battle_can_lose = false
  818.          $game_temp.battle_proc = nil
  819.        end
  820.      end
  821.    end
  822.    if Input.trigger?(Input::B)
  823.      unless $game_system.map_interpreter.running? or
  824.             $game_system.menu_disabled
  825.        $game_temp.menu_calling = true
  826.        $game_temp.menu_beep = true
  827.      end
  828.    end
  829.    if $DEBUG and Input.press?(Input::F9)
  830.      $game_temp.debug_calling = true
  831.    end
  832.    unless $game_player.moving?
  833.      if $game_temp.battle_calling
  834.        call_battle
  835.      elsif $game_temp.shop_calling
  836.        call_shop
  837.      elsif $game_temp.name_calling
  838.        call_name
  839.      elsif $game_temp.menu_calling
  840.        call_menu
  841.      elsif $game_temp.save_calling
  842.        call_save
  843.      elsif $game_temp.debug_calling
  844.        call_debug
  845.      end
  846.    end
  847. end
  848. end
  849. #==============================================================================

  850. class Scene_Save < Scene_File
  851. #--------------------------------------------------------------------------
  852. def write_save_data(file)
  853.    characters = []
  854.    for i in 0...$game_party.actors.size
  855.      actor = $game_party.actors[i]
  856.      characters.push([actor.character_name, actor.character_hue])
  857.    end
  858.    Marshal.dump(characters, file)
  859.    Marshal.dump(Graphics.frame_count, file)
  860.    $game_system.save_count += 1
  861.    $game_system.magic_number = $data_system.magic_number
  862.    Marshal.dump($game_system, file)
  863.    Marshal.dump($game_switches, file)
  864.    Marshal.dump($game_variables, file)
  865.    Marshal.dump($game_self_switches, file)
  866.    Marshal.dump($game_screen, file)
  867.    Marshal.dump($game_actors, file)
  868.    Marshal.dump($game_party, file)
  869.    Marshal.dump($game_troop, file)
  870.    Marshal.dump($game_map, file)
  871.    Marshal.dump($game_player, file)
  872.    Marshal.dump($data_weapons, file)
  873.    Marshal.dump($data_armors, file)
  874.    Marshal.dump($data_classes, file)
  875. end
  876. end
  877. #==============================================================================

  878. module RPG
  879. class Weapon
  880.    attr_accessor :dur_set
  881.    attr_accessor :dur
  882.    def name
  883.      name = @name.split(/,/)[0]
  884.      return name != nil ? name : ''
  885.    end
  886.    def dur_set
  887.      dur_set = @name.split(/,/)[1]
  888.      return dur_set != nil ? dur_set.to_i : 0
  889.    end
  890. end
  891. class Armor
  892.    attr_accessor :dur_set
  893.    attr_accessor :dur
  894.    def name
  895.      name = @name.split(/,/)[0]
  896.      return name != nil ? name : ''
  897.    end
  898.    def dur_set
  899.      dur_set = @name.split(/,/)[1]
  900.      return dur_set != nil ? dur_set.to_i : 0
  901.    end
  902. end
  903. end
  904. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2007-8-10
帖子
284
9
 楼主| 发表于 2008-3-30 20:07:21 | 只看该作者
根本就不行
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
27 小时
注册时间
2008-2-13
帖子
1740
10
发表于 2008-3-30 20:12:21 | 只看该作者
以下引用卓越大白痴于2008-3-28 11:57:38的发言:


放那里都暴错\r\n错误:if $game_variables[1] == true


变量怎么可能是true或false呢?????当然会暴错
应该是:if $game_switches[1] == true
好吧,果然换个签名就没人认识我了。我承认我被时间埋没了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-1 19:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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