Project1

标题: 随即装备系统 我晕 高手来救命啊~~~~ [打印本页]

作者: 卓越大白痴    时间: 2008-8-23 05:03
标题: 随即装备系统 我晕 高手来救命啊~~~~
我这样做的在
#--------------
# 装备栏中卸下的武器不进行随机处理
#
      if $scene.is_a?(Scene_Equip) #(报错在这里第11行)

        get_armor(armor_id, n)
        return
---------------------------------------------
看帖子修改后
or $data_weapons[weapon_id].element_set.include?(19)#(我添加了这里在if $scene.is_a?(Scene_Equip)后面结果武器可以防具就不行 了)
防具的话应该怎摸加呢??   求解啊


  1. # 重點:quality
  2. class Game_Party
  3.   def gain_armor(armor_id, n)
  4.     setting = Radom_Creation.new
  5.     identified_control = setting.identified_control
  6.     if armor_id > 0
  7. #--------------
  8. # 装备栏中卸下的武器不进行随机处理
  9. #
  10.       if $scene.is_a?(Scene_Equip)
  11.         get_armor(armor_id, n)
  12.         return
  13. # -------------
  14. # 或者「真の窗口風格·に·Step2」
  15. #
  16.       elsif $scene.is_a?(Deatwo_Smith_Shop2)
  17.         get_armor(armor_id, n)
  18.         return
  19. #--------------
  20. # 商店购买 則原版複製
  21. #
  22.       elsif $scene.is_a?(Scene_Shop)
  23.         gain_armor_f_shop(armor_id, n)
  24.         return
  25. #--------------   
  26. # 此外 皆隨機生成
  27. #
  28.       else
  29.         # 鑒定系統開啓
  30.         if identified_control == 1 and $data_armors[armor_id].identified == true and rand(50)<40
  31.           #-生成沒有鉴定的武器
  32.           unidentify_armor(armor_id, n)
  33.         elsif
  34.           for j in 1..n
  35.             # 取得設定
  36.             t = setting.t
  37.             l_t =setting.l_t
  38.             best_quality = setting.best_quality
  39.             level_set = setting.level_set
  40.             worst_level_set = setting.worst_level_set
  41.             #---------------
  42.             a = rand(1000)
  43.             b = 1000 - t - l_t # 上下分岐
  44.             b2 = 1000 - t # 上中分岐
  45.             if a > b # 成功
  46.               if a > b2 # 中品
  47.                 s = 1
  48.               else # 上品
  49.                 s = 2
  50.               end
  51.             else #下品
  52.               s = 0
  53.             end
  54.             b = (best_quality * 1/3).round
  55.             case s
  56.             when 0
  57.               vid = 0
  58.               new_holes = rand(2)+3
  59.             when 1
  60.               vid = (best_quality * 1/3).round
  61.               new_holes = rand(3)+2
  62.             when 2
  63.               vid = (best_quality * 2/3).round
  64.               new_holes = rand(5)
  65.             end
  66.               
  67.             armor = $data_armors[armor_id]
  68.             new_name = armor.name.split(/(未鑑定)/)[0]
  69.             new_des = armor.description
  70.             new_price = armor.price
  71.             new_str = armor.str_plus
  72.             new_dex = armor.dex_plus
  73.             new_agi = armor.agi_plus
  74.             new_int = armor.int_plus
  75.             new_pdef = armor.pdef
  76.             new_mdef = armor.mdef
  77.             new_element = armor.guard_element_set
  78.             new_state = armor.guard_state_set
  79.             new_duration = armor.max_duration

  80.             # 取得quality總量
  81.             xio = rand(b)+vid
  82. =begin
  83.             #--再折損值
  84.             if worst_level_set!=nil
  85.               if worst_level_set[1]!=nil
  86.                 xio -= rand(worst_level_set[1])
  87.               end
  88.             end
  89. =end
  90.             # 初始化quality
  91.             quality = 0
  92.             # 如果設定增加屬性以及狀態:
  93.             if setting.element_set.size > 0 and setting.state_set.size > 0
  94.               kind = rand(3)
  95.             # 否則
  96.             else
  97.               kind = rand(2)
  98.             end
  99.             for i in 1..10
  100.               if xio < 2
  101.                 break
  102.               end
  103.               case kind
  104.               when 0
  105.                 # 附加兩防
  106.                 a_p = rand(xio/3).round
  107.                 a_m = rand(xio/3).round
  108.                 new_pdef += a_p * setting.f_pdef
  109.                 new_mdef  += a_m * setting.f_mdef
  110.                 xio -= (a_p + a_m)
  111.                 quality += (a_p + a_m)
  112.                 # 附加四參數
  113.               when 1
  114.                 a_s = rand(xio/4).round
  115.                 a_d = rand(xio/4).round
  116.                 a_g = rand(xio/4).round
  117.                 a_i = rand(xio/4).round
  118.                 new_str += a_s
  119.                 new_dex += a_d
  120.                 new_agi += a_g
  121.                 new_int += a_i
  122.                 xio -= (a_s + a_d + a_g +a_i)
  123.                 quality +=(a_s + a_d + a_g +a_i)
  124.                 # 附加屬性以及狀態
  125.               when 2
  126. #錯誤報告-------
  127. p "未曾設定element_set於隨機裝備·基本定義" if setting.element_set.size < 1
  128. p "未曾設定state_set於隨機裝備·基本定義" if setting.state_set.size < 1
  129. p "請修改「隨機裝備·核心」" unless setting.element_set.size > 0 and setting.state_set.size > 0
  130. #---------------
  131.                 dio = rand(xio/2).round
  132.                 cost = setting.cost
  133.                 if xio >= cost
  134.                   sc_kind = rand(2)
  135.                   case sc_kind
  136.                   when 0
  137.                     n_el = setting.element_set[rand(setting.element_set.size)]
  138.                     new_element = new_element|[n_el]
  139.                     quality += cost
  140.                     xio -= cost
  141.                   when 1
  142.                     n_st = setting.state_set[rand(setting.state_set.size)]
  143.                     new_state = new_state|[n_st]
  144.                     quality += cost
  145.                     xio -= cost
  146.                   end
  147.                 end
  148.               end
  149.             end
  150.             #
  151.             if new_element.include?(8)
  152.               new_name = "闇之"+ new_name
  153.             elsif new_element.include?(8)
  154.               new_name = "光之"+ new_name
  155.             end
  156.             q = best_quality
  157.             new_color = 0
  158.             if level_set !=nil
  159.               for i in level_set
  160.                 if i[0] != nil
  161.                   q -= i[0]
  162.                   # p q
  163.                   if quality > q
  164.                     if i [1]!= nil
  165.                       new_color = i[1]
  166.                     end
  167.                     if i[2]!=nil
  168.                       new_name = i[2] + new_name
  169.                     end
  170.                     if i[3]!=nil
  171.                       new_name = new_name + i[3]
  172.                     end
  173.                     break
  174.                   end
  175.                 end
  176.               end
  177.             end
  178.             if quality < 0
  179.               if worst_level_set!=nil
  180.                 new_color = worst_level_set[0]
  181.                 if worst_level_set[2]!=nil
  182.                   new_name = new_name + worst_level_set[2]
  183.                 end
  184.                 if worst_level_set[3]!=nil
  185.                   new_name = new_name + worst_level_set[3]
  186.                 end
  187.               end
  188.             end
  189.             new_duration = quality*setting.f_duration
  190.             #------------------
  191.         
  192.             if $data_armors[armor_id].identified == true
  193.               new_armor = $data_armors[armor_id].clone
  194.               need = 0
  195.               for need in 1...$data_armors.size
  196.                 if $data_armors[need].needed == false
  197.                   break
  198.                 end
  199.               end
  200.               if need = 0
  201.                 new_armor.id = $data_armors.size
  202.               else
  203.                 new_armor.id = need
  204.               end
  205.               new_armor.name = new_name
  206.               new_armor.description = new_des
  207.               new_armor.price = new_price
  208.               new_armor.pdef = new_pdef
  209.               new_armor.mdef = new_mdef
  210.               new_armor.str_plus = new_str
  211.               new_armor.dex_plus = new_dex
  212.               new_armor.agi_plus = new_agi
  213.               new_armor.int_plus = new_int
  214.               new_armor.color = new_color
  215.               new_armor.quality = quality
  216.               new_armor.holes = new_holes
  217.               new_armor.guard_element_set = new_element
  218.               new_armor.guard_state_set = new_state
  219.               new_armor.max_duration = new_duration
  220.               new_armor.current_duration = new_duration
  221.               new_armor.needed = true
  222.               
  223.               # 添加入數據库
  224.               $data_armors.push(new_armor)
  225.               # 职业可裝備武器數組更新
  226.               renew_armor_f_classes(armor_id, new_armor.id)
  227.               # 增加武器
  228.               get_armor(new_armor.id, 1)
  229.             else
  230.               armor.name = new_name
  231.               armor.description = new_des
  232.               armor.price = new_price
  233.               armor.pdef = new_pdef
  234.               armor.mdef = new_mdef
  235.               armor.str_plus = new_str
  236.               armor.dex_plus = new_dex
  237.               armor.agi_plus = new_agi
  238.               armor.int_plus = new_int
  239.               armor.color = new_color
  240.               armor.quality = quality
  241.               armor.holes = new_holes
  242.               armor.guard_element_set = new_element
  243.               armor.guard_state_set = new_state
  244.               armor.max_duration = new_duration
  245.               armor.current_duration = new_duration
  246.               armor.needed = true
  247.               # 取消未鑒定標志
  248.               armor.identified = true
  249.               # 增加武器
  250.               get_armor(armor.id, 1)
  251.             end
  252.           end
  253.         end
  254.       end
  255.     end
  256.   end
  257. #--------------  
  258. # 生成沒有鉴定的裝備
  259. #
  260.   def unidentify_armor(armor_id, n)
  261.     armor = $data_armors[armor_id].clone
  262.     for j in 1..n
  263.       armor.id = $data_armors.size
  264.       armor.name +="(未鑑定)"
  265.       armor.identified =false
  266.       armor.needed = true
  267.       $data_armors.push(armor)
  268.       # 职业可装备武器数组更新~
  269.       renew_armor_f_classes(armor_id, armor.id)
  270.       # 增加武器
  271.       get_armor(armor.id, 1)
  272.     end
  273.   end
  274. #--------------  
  275. # 职业可装备武器组更新
  276. #
  277.   def renew_armor_f_classes(armor_id, new_armor_id)
  278.     for i in 1...$data_classes.size
  279.       if $data_classes[i].armor_set.include?(armor_id)
  280.         $data_classes[i].armor_set.push(new_armor_id)
  281.       end
  282.     end
  283.   end
  284. #--------------  
  285. # 增加武器
  286. #
  287.   def get_armor(armor_id, n)
  288.     @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  289.   end
  290. #--------------  
  291. # 失去裝備
  292. #
  293.   def lose_armor(armor_id, n)   
  294.     if armor_id > 0
  295.       @armors[armor_id] = [[armor_number(armor_id) - n, 0].max, 99].min
  296.       $data_armors[armor_id].needed == false
  297.     end
  298.   end
  299. end  
复制代码
[LINE]1,#dddddd[/LINE]此贴于 2008-8-25 23:54:19 被版主darkten提醒,请楼主看到后对本贴做出回应。
作者: 卓越大白痴    时间: 2008-8-23 06:08
我用的是三合一
研究了一下改成这样$data_weapons[armor_id].element_set.include?(19)
结果前几个装备能禁止随即后面的就不行了  晕
第一个防具 不做随即 其他的都做随机处理
后来经过研究改成这样
     if $scene.is_a?(Scene_Equip)or
        $data_armors[armor_id].element_set.include?(19)
        get_armor(armor_id, n)
        return
还是不行. . .
可要是武器的话这样就可以 这句是什么weapons武器的意思吗?
        if $scene.is_a?(Scene_Equip)or
        $data_weapons[weapon_id].element_set.include?(19)
        get_weapon(weapon_id, n)
        return
#============================================================
随便说的什么好不好 不要让我失去希望
或者有创意的想法也可以 (给个方法吧)
大概的意思是说
我用随即装备脚本后在得到的装备都自动被随即掉了 这样的话套装系统什么的都
用不了了 急啊~~~~~~
试过用脚本获得物品ID然后得到该ID物品 也不行 虽然
$data_weapons[weapon_id].element_set.include?(19)这句有点用但只针对武器
防具方面不灵,      
http://rpg.blue/viewthread.php?t ... D8%2D24+1%3A56%3A11                              

作者: 卓越大白痴    时间: 2008-8-24 10:00
.....................




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1