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

Project1

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

武器三合一腳本中如何筛选脚本

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2008-3-13
帖子
84
跳转到指定楼层
1
发表于 2008-3-20 20:56:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
武器隨機生成,强化,魔石添加,三合一腳本

这个脚本中,我就想要显示装备样子和随即生成选项,需要怎么做啊?

他的随即生成可以生成所有的装备,还带装备鉴定功能。
本来我想自己提炼的,不过他的脚本里面有太多的东西,确实找不准。
谢谢
版务信息:本贴由楼主自主结贴~

Lv3.寻梦者

酱油的

梦石
0
星屑
1035
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

2
发表于 2008-3-20 20:59:52 | 只看该作者
所以作者已經申請撤下教程,重製新版……囧rz
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2008-3-13
帖子
84
3
 楼主| 发表于 2008-3-20 21:10:14 | 只看该作者
hoho,你是作者啊?我刚看到你下面的签名。期待啊。禾大,你什么时候能出来新的?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1035
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

4
发表于 2008-3-20 21:26:13 | 只看该作者
不要太期望……按照禾西現在的龜爬速度……快則這個星期六之前,慢則兩個星期以後……
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2008-3-13
帖子
84
5
 楼主| 发表于 2008-3-20 21:32:18 | 只看该作者
。。。。。。。。。。。。。。。。。。。。。。。。怎么差这么多天?你就快点嘛!!!


要不你就先告诉我你以前的那个里面,如何提炼我要的几个脚本,谢谢
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1035
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

6
发表于 2008-3-20 21:47:13 | 只看该作者
显示装备样子:
新幫助·武器&裝備
新幫助·物品&技能

或者:
http://rpg.blue/web/htm/news957.htm

隨機生成:
  1. class Radom_Creation
  2.   attr_reader :t
  3.   attr_reader :l_t
  4.   attr_reader :level_set
  5.   attr_reader :worst_level_set
  6.   attr_reader :best_quality
  7.   attr_reader :identified_control
  8.   attr_reader :ident_rate
  9.   attr_reader :cost
  10.   attr_reader :f_atk
  11.   attr_reader :f_mdef
  12.   attr_reader :f_pdef
  13.   attr_reader :state_set
  14.   attr_reader :element_set
  15.   attr_reader :f_duration
  16.   def initialize
  17.   #?/1000
  18.   @t = 300  # 中品(質量總在水平三份之一至二之間)
  19.   @l_t = 100 # 上品(質量總在水平三份之二以上)
  20.   # 1000 - S -LS #下品(質量總在水平三份之一以下)
  21. #--------------------#
  22.   @best_quality = 0  #
  23. #----------------#---#
  24.   @level_set = []    #
  25. #--------------------#
  26. # 生成屬性,狀態,自動狀態等消耗的基準值
  27.   @cost = 5
  28.   # 屬性組
  29.   @element_set = [1,2,3,4,5,6,7]
  30.   # 狀態組
  31.   @state_set = [2,3,4,5,6,7,8]
  32. # 1基準值對應的攻擊力附加
  33.   @f_atk = 2
  34. # 1基準值對應的物理防禦力附加
  35.   @f_pdef = 2
  36. # 1基準值對應的魔法防禦力附加
  37.   @f_mdef = 2
  38. # 總基準與耐久度的關係
  39.   @f_duration = 300

  40. # @level_set.push [品質基準, 顔色, 前序,後序]
  41. # 出現機率 = 基準/總基準
  42. # 品質爲越先越好
  43.   @level_set.push [5, 14, "傳說的"] # 特等
  44.   @level_set.push [10, 13, "罕有的"] # 次等
  45.   @level_set.push [15, 12,"珍貴的"] # 低等
  46.   @level_set.push [10, 11,"不錯的"] # 劣等
  47.   @level_set.push [10, 11,"良好的"] # 劣等
  48.   @level_set.push [15, 10,"微好的"] # 劣等
  49.   @level_set.push [15, 10,"一般的"] # 劣等
  50.   @level_set.push [16, 0] # 劣等
  51.   # 失去效用中
  52.   # 質量爲0以下的等級[顔色, 最差質, 前序,後序]
  53.   @worst_level_set = [9,-10]
  54.   # 是否開啓鑒定系統?
  55.   # 0=否,1=是
  56.   @identified_control = 1
  57.   @ident_rate = 0.5 #鑒定費用,原價的?倍
  58. #-------------------------#
  59.   if @level_set.size > 0  #
  60.     for i in @level_set   #
  61. #-------------------------#
  62.       @best_quality += i[0]
  63. #-------#
  64.     end #
  65.   end   #
  66.   end   #
  67. end     #
  68. #-------#
  69. module RPG
  70.   class Weapon
  71. #---------------------------#
  72.     attr_accessor :needed   # 判斷需要
  73. #---------------------------#------------#
  74.     def needed                           #
  75.       needed = @needed                   #
  76.       return needed != nil ? @needed : true #
  77.     end                                  #
  78. #----------------------------------------#
  79. #--------------------------#
  80.     attr_accessor :color   # 随機生成
  81.     attr_accessor :quality #
  82. #--------------------------#-------------#
  83.     def color                            #
  84.       color = @color                     #
  85.       return color != nil ? @color : 0   # 随機生成
  86.     end                                  #
  87. #----------------------------------------#-#
  88.     def quality                            #
  89.       quality = @quality                   #
  90.       return quality != nil ? @quality : 0 # 随機生成
  91.     end                                    #
  92. #------------------------------------------#
  93. #-----------------------------#
  94.     attr_accessor :identified #
  95. #-----------------------------#------------------------#
  96.     def identified                                     #
  97.       identified = @identified                         #
  98.       return identified != nil ? @identified : true    # 武器鑒定
  99.     end                                                #
  100. #------------------------------------------------------#
  101. #-----------------------------------------#
  102.     attr_accessor :max_duration           # 耐久度
  103.     attr_accessor :current_duration       #
  104.     def max_duration                      #
  105.       max_duration = @duration            #------------#
  106.       return max_duration !=nil ? @max_duration : 1000 #
  107.     end                                                #
  108.     def current_duration                               #
  109.       current_duration = @current_duration             #--------#
  110.       return current_duration !=nil ? @current_duration : 1000  #
  111.     end                                                         #
  112. #------------------------------#--------------------------------#
  113.   end
  114.   class Armor
  115. #---------------------------#
  116.     attr_accessor :needed   # 判斷需要
  117. #---------------------------#------------#
  118.     def needed                           #
  119.       needed = @needed                   #
  120.       return needed != nil ? @needed : true #
  121.     end                                  #
  122.     attr_accessor :color   # 随機生成
  123.     attr_accessor :quality #
  124.     def color                            #
  125.       color = @color                     #
  126.       return color != nil ? @color : 0   # 随機生成
  127.     end                                  #
  128.     def quality                            #
  129.       quality = @quality                   #
  130.       return quality != nil ? @quality : 0 # 随機生成
  131.     end                                    #
  132.     attr_accessor :identified #
  133.     def identified                                     #
  134.       identified = @identified                         #
  135.       return identified != nil ? @identified : true    # 武器鑒定
  136.     end                                                #
  137.     attr_accessor :max_duration           # 耐久度
  138.     attr_accessor :current_duration       #
  139.     def max_duration                      #
  140.       max_duration = @duration            #------------#
  141.       return max_duration !=nil ? @max_duration : 1000 #
  142.     end                                                #
  143.     def current_duration                               #
  144.       current_duration = @current_duration             #--------#
  145.       return current_duration !=nil ? @current_duration : 1000  #
  146.     end                                                         #
  147.   end
  148. end
  149. # 重點:quality
  150. class Game_Party
  151.   def gain_weapon(weapon_id, n)
  152.     setting = Radom_Creation.new
  153.     identified_control = setting.identified_control
  154.     if weapon_id > 0
  155. #--------------
  156. # 装备栏中卸下的武器不进行随机处理
  157. #
  158.       if $scene.is_a?(Scene_Equip)
  159.         get_weapon(weapon_id, n)
  160.         return
  161. # -------------
  162. # 或者「真の窗口風格·に·Step2」
  163. #
  164.       elsif $scene.is_a?(Deatwo_Smith_Shop2)
  165.         get_weapon(weapon_id, n)
  166.         return
  167. #--------------
  168. # 商店购买 則原版複製
  169. #
  170.       elsif $scene.is_a?(Scene_Shop)
  171.         gain_weapon_f_shop(weapon_id, n)
  172.         return
  173. #--------------   
  174. # 此外 皆隨機生成
  175. #
  176.       else
  177.         # 鑒定系統開啓
  178.         if identified_control == 1 and $data_weapons[weapon_id].identified == true and rand(50)<40
  179.           #-生成沒有鉴定的武器
  180.           unidentify_weapon(weapon_id, n)
  181.         else
  182.           # 自動生成武器
  183.           for j in 0...n
  184.             # 取得設定
  185.             t = setting.t
  186.             l_t =setting.l_t
  187.             best_quality = setting.best_quality
  188.             level_set = setting.level_set
  189.             worst_level_set = setting.worst_level_set
  190.             #------------------
  191.             a = rand(1000)
  192.             b = 1000 - t - l_t # 上下分岐
  193.             b2 = 1000 - t # 上中分岐
  194.             if a > b # 成功
  195.               if a > b2 # 中品
  196.                 s = 1
  197.               else # 上品
  198.                 s = 2
  199.               end
  200.             else #下品
  201.               s = 0
  202.             end
  203.             b = (best_quality * 1/3).round
  204.             case s
  205.             when 0
  206.               vid = 0
  207.               new_slots = rand(2)+3
  208.             when 1
  209.               vid = (best_quality * 1/3).round
  210.               new_slots = rand(3)+2
  211.             when 2
  212.               vid = (best_quality * 2/3).round
  213.               new_slots = rand(5)
  214.             end
  215.             # 初始化new值
  216.             weapon = $data_weapons[weapon_id]
  217.             new_name = weapon.name.split(/(未鑑定)/)[0]
  218.             new_des = weapon.description
  219.             
  220.             new_price = weapon.price
  221.             
  222.             new_atk = weapon.atk
  223.             new_pdef = weapon.pdef
  224.             new_mdef = weapon.mdef
  225.             
  226.             new_str = weapon.str_plus
  227.             new_dex = weapon.dex_plus
  228.             new_agi = weapon.agi_plus
  229.             new_int = weapon.int_plus
  230.             
  231.             new_element = weapon.element_set.clone
  232.             new_state = weapon.plus_state_set.clone
  233.             new_duration = weapon.max_duration
  234.             
  235.             # 取得quality總量
  236.             xio = rand(b)+vid
  237. =begin
  238.             #--再折損值
  239.             if worst_level_set!=nil
  240.               if worst_level_set[1]!=nil
  241.                 xio -= rand(worst_level_set[1])
  242.               end
  243.             end
  244. =end
  245.             # 初始化quality
  246.             quality = 0
  247.             # 如果設定增加屬性以及狀態:
  248.             if setting.element_set.size > 0 and setting.state_set.size > 0
  249.               kind = rand(3)
  250.             # 否則
  251.             else
  252.               kind = rand(2)
  253.             end
  254.             for i in 1..10
  255.               if xio < 2
  256.                 break
  257.               end
  258.               case kind
  259.               when 0
  260.                 # 附加一攻兩防
  261.                 a_a = rand(xio/3).round
  262.                 a_p = rand(xio/3).round
  263.                 a_m = rand(xio/3).round
  264.                 new_atk += a_a * setting.f_atk
  265.                 new_pdef += a_p * setting.f_pdef
  266.                 new_mdef  += a_m * setting.f_mdef
  267.                 xio -= (a_a + a_p + a_m)
  268.                 quality += (a_a + a_p + a_m)
  269.                 # 附加四參數
  270.               when 1
  271.                 a_s = rand(xio/4).round
  272.                 a_d = rand(xio/4).round
  273.                 a_g = rand(xio/4).round
  274.                 a_i = rand(xio/4).round
  275.                 new_str += a_s
  276.                 new_dex += a_d
  277.                 new_agi += a_g
  278.                 new_int += a_i
  279.                 xio -= (a_s + a_d + a_g +a_i)
  280.                 quality +=(a_s + a_d + a_g +a_i)
  281.                 # 附加屬性以及狀態
  282.               when 2
  283. #錯誤報告-------
  284. p "未曾設定element_set於隨機武器·基本定義" if setting.element_set.size < 1
  285. p "未曾設定state_set於隨機武器·基本定義" if setting.state_set.size < 1
  286. p "請修改「隨機武器·核心」" unless setting.element_set.size > 0 and setting.state_set.size > 0
  287. #---------------
  288.                 dio = rand(xio/2).round
  289.                 cost = setting.cost
  290.                 if xio >= cost
  291.                   sc_kind = rand(2)
  292.                   case sc_kind
  293.                   when 0
  294.                     n_el = setting.element_set[rand(setting.element_set.size)]
  295.                     new_element = new_element|[n_el]
  296.                     quality += cost
  297.                     xio -= cost
  298.                   when 1
  299.                     n_st = setting.state_set[rand(setting.state_set.size)]
  300.                     new_state = new_state|[n_st]
  301.                     quality += cost
  302.                     xio -= cost
  303.                   end
  304.                 end
  305.               end
  306.             end
  307.             #---------
  308.             # p quality
  309.             if new_element.include?(8)
  310.               new_name = "闇之"+ new_name
  311.             elsif new_element.include?(8)
  312.               new_name = "光之"+ new_name
  313.             end
  314.               
  315.               
  316.             # 新的顔色 及 名字
  317.             q = best_quality
  318.             new_color = 0
  319.             if level_set !=nil
  320.               for i in level_set
  321.                 if i[0] != nil
  322.                   q -= i[0]
  323.                   # p q
  324.                   if quality > q
  325.                     if i [1]!= nil
  326.                       new_color = i[1]
  327.                     end
  328.                     if i[2]!=nil
  329.                       new_name = i[2] + new_name
  330.                     end
  331.                     if i[3]!=nil
  332.                       new_name = new_name + i[3]
  333.                     end
  334.                     break
  335.                   end
  336.                 end
  337.               end
  338.             end
  339.             if quality < 0
  340.               if worst_level_set!=nil
  341.                 new_color = worst_level_set[0]
  342.                 if worst_level_set[2]!=nil
  343.                   new_name = new_name + worst_level_set[2]
  344.                 end
  345.                 if worst_level_set[3]!=nil
  346.                   new_name = new_name + worst_level_set[3]
  347.                 end
  348.               end
  349.             end
  350.             new_duration = quality*setting.f_duration
  351.           #------------------
  352.         
  353.          
  354.             if $data_weapons[weapon_id].identified == true
  355.               # 母本數據複製
  356.               new_weapon = $data_weapons[weapon_id].clone
  357.               # 産生新Id
  358.               need = 0
  359.               for x in 1...$data_weapons.size
  360.                 if $data_weapons[x].needed == false
  361.                   need = x
  362.                   break
  363.                 end
  364.               end
  365.               if need == 0
  366.                 new_weapon.id = $data_weapons.size
  367.               else
  368.                 new_weapon.id = need
  369.               end
  370.               # 更新數據
  371.               new_weapon.name = new_name
  372.               new_weapon.description = new_des
  373.               new_weapon.atk = new_atk
  374.               new_weapon.pdef = new_pdef
  375.               new_weapon.mdef = new_mdef
  376.               new_weapon.price = new_price
  377.               new_weapon.str_plus = new_str
  378.               new_weapon.dex_plus = new_dex
  379.               new_weapon.agi_plus = new_agi
  380.               new_weapon.int_plus = new_int
  381.               new_weapon.color = new_color
  382.               new_weapon.quality = quality
  383.               new_weapon.slots = new_slots
  384.               new_weapon.element_set = new_element
  385.               new_weapon.plus_state_set = new_state
  386.               new_weapon.max_duration = new_duration
  387.               new_weapon.current_duration = new_duration
  388.               new_weapon.needed = true
  389.               # 添加入數據库
  390.               $data_weapons.push(new_weapon)
  391.               # 职业可裝備武器數組更新
  392.               renew_weapon_f_classes(weapon_id, new_weapon.id)
  393.               # 增加武器
  394.               get_weapon(new_weapon.id, 1)
  395.             else
  396.               # 更新數據
  397.               weapon.name = new_name
  398.               weapon.description = new_des
  399.               weapon.atk = new_atk
  400.               weapon.pdef = new_pdef
  401.               weapon.mdef = new_mdef
  402.               weapon.price = new_price
  403.               weapon.str_plus = new_str
  404.               weapon.dex_plus = new_dex
  405.               weapon.agi_plus = new_agi
  406.               weapon.int_plus = new_int
  407.               weapon.color = new_color
  408.               weapon.quality = quality
  409.               weapon.slots = new_slots
  410.               weapon.element_set = new_element
  411.               weapon.plus_state_set = new_state
  412.               weapon.max_duration = new_duration
  413.               weapon.current_duration = new_duration
  414.               weapon.needed = true
  415.               # 取消未鑒定標志
  416.               weapon.identified = true
  417.               # 增加武器
  418.               get_weapon(weapon.id, 1)
  419.             end
  420.           end
  421.         end
  422.       end
  423.     end
  424.   end
  425. #--------------  
  426. # 生成沒有鉴定的武器
  427. #
  428.   def unidentify_weapon(weapon_id, n)
  429.     for j in 0...n
  430.       weapon = $data_weapons[weapon_id].clone
  431.       weapon.id = $data_weapons.size
  432.       weapon.name +="(未鑑定)"
  433.       weapon.identified =false
  434.       weapon.needed = true
  435.       $data_weapons.push(weapon)
  436.       # 职业可装备武器数组更新~
  437.       renew_weapon_f_classes(weapon_id, weapon.id)
  438.       # 增加武器
  439.       get_weapon(weapon.id, 1)
  440.     end
  441.   end
  442. #--------------  
  443. # 职业可装备武器组更新
  444. #
  445.   def renew_weapon_f_classes(weapon_id, new_weapon_id)
  446.     for i in 1...$data_classes.size
  447.       if $data_classes[i].weapon_set.include?(weapon_id)
  448.         $data_classes[i].weapon_set.push(new_weapon_id)
  449.       end
  450.     end
  451.   end
  452. #--------------  
  453. # 增加武器
  454. #
  455.   def get_weapon(weapon_id, n)
  456.     @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  457.   end
  458. #--------------  
  459. # 失去武器
  460. #
  461.   def lose_weapon(weapon_id, n)   
  462.     if weapon_id > 0
  463.       @weapons[weapon_id] = [[weapon_number(weapon_id) - n, 0].max, 99].min
  464.     end
  465.   end
  466. #--------------  
  467. # 消除武器
  468. #
  469.   def detele_weapon(weapon_id, n)
  470.     if weapon_id > 0
  471.       @weapons[weapon_id] = [[weapon_number(weapon_id) - n, 0].max, 99].min
  472.       $data_weapons[weapon_id].needed == false
  473.     end
  474.   end
  475. end
  476. # 重點:quality
  477. class Game_Party
  478.   def gain_armor(armor_id, n)
  479.     setting = Radom_Creation.new
  480.     identified_control = setting.identified_control
  481.     if armor_id > 0
  482. #--------------
  483. # 装备栏中卸下的武器不进行随机处理
  484. #
  485.       if $scene.is_a?(Scene_Equip)
  486.         get_armor(armor_id, n)
  487.         return
  488. # -------------
  489. # 或者「真の窗口風格·に·Step2」
  490. #
  491.       elsif $scene.is_a?(Deatwo_Smith_Shop2)
  492.         get_armor(armor_id, n)
  493.         return
  494. #--------------
  495. # 商店购买 則原版複製
  496. #
  497.       elsif $scene.is_a?(Scene_Shop)
  498.         gain_armor_f_shop(armor_id, n)
  499.         return
  500. #--------------   
  501. # 此外 皆隨機生成
  502. #
  503.       else
  504.         # 鑒定系統開啓
  505.         if identified_control == 1 and $data_armors[armor_id].identified == true and rand(50)<40
  506.           #-生成沒有鉴定的武器
  507.           unidentify_armor(armor_id, n)
  508.         elsif
  509.           for j in 1..n
  510.             # 取得設定
  511.             t = setting.t
  512.             l_t =setting.l_t
  513.             best_quality = setting.best_quality
  514.             level_set = setting.level_set
  515.             worst_level_set = setting.worst_level_set
  516.             #---------------
  517.             a = rand(1000)
  518.             b = 1000 - t - l_t # 上下分岐
  519.             b2 = 1000 - t # 上中分岐
  520.             if a > b # 成功
  521.               if a > b2 # 中品
  522.                 s = 1
  523.               else # 上品
  524.                 s = 2
  525.               end
  526.             else #下品
  527.               s = 0
  528.             end
  529.             b = (best_quality * 1/3).round
  530.             case s
  531.             when 0
  532.               vid = 0
  533.               new_slots = rand(2)+3
  534.             when 1
  535.               vid = (best_quality * 1/3).round
  536.               new_slots = rand(3)+2
  537.             when 2
  538.               vid = (best_quality * 2/3).round
  539.               new_slots = rand(5)
  540.             end
  541.               
  542.             armor = $data_armors[armor_id]
  543.             new_name = armor.name.split(/(未鑑定)/)[0]
  544.             new_des = armor.description
  545.             new_price = armor.price
  546.             new_str = armor.str_plus
  547.             new_dex = armor.dex_plus
  548.             new_agi = armor.agi_plus
  549.             new_int = armor.int_plus
  550.             new_pdef = armor.pdef
  551.             new_mdef = armor.mdef
  552.             new_element = armor.guard_element_set
  553.             new_state = armor.guard_state_set
  554.             new_duration = armor.max_duration

  555.             # 取得quality總量
  556.             xio = rand(b)+vid
  557. =begin
  558.             #--再折損值
  559.             if worst_level_set!=nil
  560.               if worst_level_set[1]!=nil
  561.                 xio -= rand(worst_level_set[1])
  562.               end
  563.             end
  564. =end
  565.             # 初始化quality
  566.             quality = 0
  567.             # 如果設定增加屬性以及狀態:
  568.             if setting.element_set.size > 0 and setting.state_set.size > 0
  569.               kind = rand(3)
  570.             # 否則
  571.             else
  572.               kind = rand(2)
  573.             end
  574.             for i in 1..10
  575.               if xio < 2
  576.                 break
  577.               end
  578.               case kind
  579.               when 0
  580.                 # 附加兩防
  581.                 a_p = rand(xio/3).round
  582.                 a_m = rand(xio/3).round
  583.                 new_pdef += a_p * setting.f_pdef
  584.                 new_mdef  += a_m * setting.f_mdef
  585.                 xio -= (a_p + a_m)
  586.                 quality += (a_p + a_m)
  587.                 # 附加四參數
  588.               when 1
  589.                 a_s = rand(xio/4).round
  590.                 a_d = rand(xio/4).round
  591.                 a_g = rand(xio/4).round
  592.                 a_i = rand(xio/4).round
  593.                 new_str += a_s
  594.                 new_dex += a_d
  595.                 new_agi += a_g
  596.                 new_int += a_i
  597.                 xio -= (a_s + a_d + a_g +a_i)
  598.                 quality +=(a_s + a_d + a_g +a_i)
  599.                 # 附加屬性以及狀態
  600.               when 2
  601. #錯誤報告-------
  602. p "未曾設定element_set於隨機裝備·基本定義" if setting.element_set.size < 1
  603. p "未曾設定state_set於隨機裝備·基本定義" if setting.state_set.size < 1
  604. p "請修改「隨機裝備·核心」" unless setting.element_set.size > 0 and setting.state_set.size > 0
  605. #---------------
  606.                 dio = rand(xio/2).round
  607.                 cost = setting.cost
  608.                 if xio >= cost
  609.                   sc_kind = rand(2)
  610.                   case sc_kind
  611.                   when 0
  612.                     n_el = setting.element_set[rand(setting.element_set.size)]
  613.                     new_element = new_element|[n_el]
  614.                     quality += cost
  615.                     xio -= cost
  616.                   when 1
  617.                     n_st = setting.state_set[rand(setting.state_set.size)]
  618.                     new_state = new_state|[n_st]
  619.                     quality += cost
  620.                     xio -= cost
  621.                   end
  622.                 end
  623.               end
  624.             end
  625.             #
  626.             if new_element.include?(8)
  627.               new_name = "闇之"+ new_name
  628.             elsif new_element.include?(8)
  629.               new_name = "光之"+ new_name
  630.             end
  631.             q = best_quality
  632.             new_color = 0
  633.             if level_set !=nil
  634.               for i in level_set
  635.                 if i[0] != nil
  636.                   q -= i[0]
  637.                   # p q
  638.                   if quality > q
  639.                     if i [1]!= nil
  640.                       new_color = i[1]
  641.                     end
  642.                     if i[2]!=nil
  643.                       new_name = i[2] + new_name
  644.                     end
  645.                     if i[3]!=nil
  646.                       new_name = new_name + i[3]
  647.                     end
  648.                     break
  649.                   end
  650.                 end
  651.               end
  652.             end
  653.             if quality < 0
  654.               if worst_level_set!=nil
  655.                 new_color = worst_level_set[0]
  656.                 if worst_level_set[2]!=nil
  657.                   new_name = new_name + worst_level_set[2]
  658.                 end
  659.                 if worst_level_set[3]!=nil
  660.                   new_name = new_name + worst_level_set[3]
  661.                 end
  662.               end
  663.             end
  664.             new_duration = quality*setting.f_duration
  665.             #------------------
  666.         
  667.             if $data_armors[armor_id].identified == true
  668.               new_armor = $data_armors[armor_id].clone
  669.               need = 0
  670.               for x in 1...$data_armors.size
  671.                 if $data_armors[x].needed == false
  672.                   need = x
  673.                   break
  674.                 end
  675.               end
  676.               if need == 0
  677.                 new_armor.id = $data_armors.size
  678.               else
  679.                 new_armor.id = need
  680.               end
  681.               new_armor.name = new_name
  682.               new_armor.description = new_des
  683.               new_armor.price = new_price
  684.               new_armor.pdef = new_pdef
  685.               new_armor.mdef = new_mdef
  686.               new_armor.str_plus = new_str
  687.               new_armor.dex_plus = new_dex
  688.               new_armor.agi_plus = new_agi
  689.               new_armor.int_plus = new_int
  690.               new_armor.color = new_color
  691.               new_armor.quality = quality
  692.               new_armor.slots = new_slots
  693.               new_armor.guard_element_set = new_element
  694.               new_armor.guard_state_set = new_state
  695.               new_armor.max_duration = new_duration
  696.               new_armor.current_duration = new_duration
  697.               new_armor.needed = true
  698.               
  699.               # 添加入數據库
  700.               $data_armors.push(new_armor)
  701.               # 职业可裝備武器數組更新
  702.               renew_armor_f_classes(armor_id, new_armor.id)
  703.               # 增加武器
  704.               get_armor(new_armor.id, 1)
  705.             else
  706.               armor.name = new_name
  707.               armor.description = new_des
  708.               armor.price = new_price
  709.               armor.pdef = new_pdef
  710.               armor.mdef = new_mdef
  711.               armor.str_plus = new_str
  712.               armor.dex_plus = new_dex
  713.               armor.agi_plus = new_agi
  714.               armor.int_plus = new_int
  715.               armor.color = new_color
  716.               armor.quality = quality
  717.               armor.slots = new_slots
  718.               armor.guard_element_set = new_element
  719.               armor.guard_state_set = new_state
  720.               armor.max_duration = new_duration
  721.               armor.current_duration = new_duration
  722.               armor.needed = true
  723.               # 取消未鑒定標志
  724.               armor.identified = true
  725.               # 增加武器
  726.               get_armor(armor.id, 1)
  727.             end
  728.           end
  729.         end
  730.       end
  731.     end
  732.   end
  733. #--------------  
  734. # 生成沒有鉴定的裝備
  735. #
  736.   def unidentify_armor(armor_id, n)
  737.     for j in 0...n
  738.       armor = $data_armors[armor_id].clone
  739.       armor.id = $data_armors.size
  740.       armor.name +="(未鑑定)"
  741.       armor.identified =false
  742.       armor.needed = true
  743.       $data_armors.push(armor)
  744.       # 职业可装备武器数组更新~
  745.       renew_armor_f_classes(armor_id, armor.id)
  746.       # 增加武器
  747.       get_armor(armor.id, 1)
  748.     end
  749.   end
  750. #--------------  
  751. # 职业可装备武器组更新
  752. #
  753.   def renew_armor_f_classes(armor_id, new_armor_id)
  754.     for i in 1...$data_classes.size
  755.       if $data_classes[i].armor_set.include?(armor_id)
  756.         $data_classes[i].armor_set.push(new_armor_id)
  757.       end
  758.     end
  759.   end
  760. #--------------  
  761. # 增加武器
  762. #
  763.   def get_armor(armor_id, n)
  764.     @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  765.   end
  766. #--------------  
  767. # 失去裝備
  768. #
  769.   def lose_armor(armor_id, n)   
  770.     if armor_id > 0
  771.       @armors[armor_id] = [[armor_number(armor_id) - n, 0].max, 99].min
  772.     end
  773.   end
  774. end  
  775. class Game_Party
  776. #--------------   
  777. # 商店購買武器 則原版本複製
  778. #
  779.   def gain_weapon_f_shop(weapon_id, n)
  780.     if weapon_id > 0
  781.       # 商店购买
  782.       if $scene.is_a?(Scene_Shop)
  783.         for j in 1..n
  784.           weapon = $data_weapons[weapon_id].clone
  785.           weapon.id = $data_weapons.size
  786.           weapon.needed = true
  787.           $data_weapons.push(weapon)
  788.           # 职业可装备武器数组更新~
  789.           for i in 1...$data_classes.size
  790.             if $data_classes[i].weapon_set.include?(weapon_id)
  791.               $data_classes[i].weapon_set.push(weapon.id)
  792.             end
  793.           end
  794.           @weapons[weapon.id] = [[weapon_number(weapon.id) + 1, 0].max, 99].min
  795.         end
  796.       end
  797.     end
  798.   end
  799. #--------------   
  800. # 商店購買裝備 則原版本複製
  801. #
  802.   def gain_armor_f_shop(armor_id, n)
  803.     if armor_id > 0
  804.       # 商店购买
  805.       if $scene.is_a?(Scene_Shop)
  806.         for j in 1..n
  807.           armor = $data_armors[armor_id].clone
  808.           armor.id = $data_armors.size
  809.           armor.needed = true
  810.           $data_armors.push(armor)
  811.           # 职业可装备裝備数组更新~
  812.           for i in 1...$data_classes.size
  813.             if $data_classes[i].armor_set.include?(armor_id)
  814.               $data_classes[i].armor_set.push(armor.id)
  815.             end
  816.           end
  817.           @armors[armor.id] = [[armor_number(armor.id) + 1, 0].max, 99].min
  818.         end
  819.       end
  820.     end
  821.   end
  822. end
复制代码
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1035
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

7
发表于 2008-3-20 21:48:38 | 只看该作者
  1. #==============================================================================
  2. # ■ Materia_Command_Zero
  3. #------------------------------------------------------------------------------
  4. #  选择的窗口
  5. #==============================================================================

  6. class Confirm_Identification < Window_Selectable
  7.   attr_accessor :price
  8.   
  9.   #--------------------------------------------------------------------------
  10.   # ● 初始化对像
  11.   #--------------------------------------------------------------------------
  12.   def initialize
  13.     super(230, 200, 240, 200)
  14.     self.contents = Bitmap.new(width - 32, height - 32)
  15.     self.opacity = 255
  16.     @item_max = 2
  17.     @commands = ["哇塞林良!", "你黑!我付!"]
  18.     refresh
  19.     self.index =0
  20.     @price = 0
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 刷新
  24.   #--------------------------------------------------------------------------
  25.   def refresh
  26.     a = @price.to_s
  27.     text = "鑒定這個要#{a}G的哦!"
  28.     self.contents.clear
  29.     self.contents.font.color = system_color
  30.     self.contents.draw_text(5, -5, 240, 45,text )
  31.     self.contents.font.color = normal_color
  32.     for i in 0...@item_max
  33.       draw_item(i)
  34.     end
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 描绘项目
  38.   #     index : 项目编号
  39.   #--------------------------------------------------------------------------
  40.   def draw_item(index)
  41.     y =  (index+1) * 30 - 5
  42.     self.contents.draw_text(5, y, 240, 45, @commands[index])
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 刷新光标矩形
  46.   #--------------------------------------------------------------------------
  47.   def update_cursor_rect
  48.     if @index < 0
  49.       self.cursor_rect.empty
  50.     else
  51.       self.cursor_rect.set( 5, (@index+1) * 30, (self.width-35), (self.height/3-35))
  52.     end
  53.   end
  54. end
  55. #==============================================================================
  56. # ■ Window_Item
  57. #------------------------------------------------------------------------------
  58. #  物品画面、战斗画面、显示浏览物品的窗口。
  59. #==============================================================================

  60. class Item_Identification < Window_Selectable
  61.   #--------------------------------------------------------------------------
  62.   # ● 初始化对像
  63.   #--------------------------------------------------------------------------
  64.   def initialize
  65.     super(0, 64-64, 640, 416+64)
  66.     @column_max = 2
  67.     @price_rate = Radom_Creation.new.ident_rate
  68.     refresh
  69.     self.index = 0
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 获取物品
  73.   #--------------------------------------------------------------------------
  74.   def item
  75.     return @data[self.index]
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● 刷新
  79.   #--------------------------------------------------------------------------
  80.   def refresh
  81.     if self.contents != nil
  82.       self.contents.dispose
  83.       self.contents = nil
  84.     end
  85.     @data = []
  86.     for i in 1...$data_weapons.size
  87.       if $game_party.weapon_number(i) > 0
  88.         @data.push($data_weapons[i])
  89.       end
  90.     end
  91.     for i in 1...$data_armors.size
  92.       if $game_party.armor_number(i) > 0
  93.         @data.push($data_armors[i])
  94.       end
  95.     end
  96.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  97.     @item_max = @data.size
  98.     if @item_max > 0
  99.       self.contents = Bitmap.new(width - 32, row_max * 32)
  100.       for i in 0...@item_max
  101.         draw_item(i)
  102.       end
  103.     end
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 描绘项目
  107.   #     index : 项目编号
  108.   #--------------------------------------------------------------------------
  109.   def draw_item(index)
  110.     item = @data[index]
  111.     case item
  112.     when RPG::Weapon
  113.       number = $game_party.weapon_number(item.id)
  114.     when RPG::Armor
  115.       number = $game_party.armor_number(item.id)
  116.     end
  117.     cost_price = item.price*@price_rate
  118.     if $game_party.gold >= (cost_price.round) and item.identified == false
  119.       self.contents.font.color = normal_color
  120.     else
  121.       self.contents.font.color = disabled_color
  122.     end
  123.     x = 4 + index % 2 * (288 + 32)
  124.     y = index / 2 * 32
  125.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  126. =begin
  127. # 照樣子是取消討厭的圖標------------------------------------------------------#
  128.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  129.     bitmap = RPG::Cache.icon(item.icon_name)
  130.     opacity = self.contents.font.color == normal_color ? 255 : 128
  131.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  132. =end
  133.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  134.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  135.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ● 刷新帮助文本
  139.   #--------------------------------------------------------------------------
  140.   def update_help
  141. # -------------------
  142. # 修改開始
  143.     @help_window.set_text(item)
  144.     #校正帮助窗口位置
  145.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  146. # 修改終了
  147. # -------------------
  148.   end
  149. end
  150. class Main_Identification
  151.   #--------------------------------------------------------------------------
  152.   # ● 主处理
  153.   #--------------------------------------------------------------------------
  154.   def main
  155.     @price_f_ident = Radom_Creation.new.ident_rate
  156.     # 生成幫助窗口
  157.     @help_window = Window_Help_Self.new
  158.     @help_window.visible =true
  159.     # 生成物品窗口
  160.     @items_window = Item_Identification.new
  161.     @items_window.active = true
  162.     @items_window.help_window = @help_window
  163.     # 生成選項窗口
  164.     @command_window = Confirm_Identification.new
  165.     @command_window.active = false
  166.     @command_window.visible = false
  167.     # 在界面留白(黑)处生成地图画面(需对应释放)
  168.     # @spriteset = Spriteset_Map.new
  169.     #
  170.     # 执行过渡
  171.     Graphics.transition
  172.     # 主循环
  173.     loop do
  174.       # 刷新游戏画面
  175.       Graphics.update
  176.       # 刷新输入信息
  177.       Input.update
  178.       # 刷新画面
  179.       update
  180.       # 如果画面切换的话就中断循环
  181.       if $scene != self
  182.         break
  183.       end
  184.     end
  185.     # 准备过渡
  186.     Graphics.freeze
  187.     #
  188.     # 释放窗口
  189.     @items_window.dispose
  190.     @help_window.dispose
  191.     @command_window.dispose
  192.     # 释放留白处之地图背景图
  193.     # @spriteset.dispose
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● 刷新画面
  197.   #--------------------------------------------------------------------------
  198.   def update
  199.     # 刷新窗口
  200.     @items_window.update
  201.     @help_window.update
  202.     @command_window.update
  203.     # 人物窗口激活的情况下:調用 update_actor
  204.     if @items_window.active
  205.       update_items
  206.       return
  207.     end
  208.     # 選項窗口激活的情况下:調用 update_command
  209.     if @command_window.active
  210.       update_command
  211.       return
  212.     end
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # ● 画面更新 (人物窗口激活的情况下)
  216.   #--------------------------------------------------------------------------
  217.   def update_items
  218.     # 按下 B or Esc 键的情况下
  219.     if Input.trigger?(Input::B)
  220.       # 演奏确定 SE
  221.       $game_system.se_play($data_system.decision_se)
  222.       # 切换到地图画面
  223.       $scene = Scene_Map.new
  224.       return
  225.     end
  226.     # 按下 C or Space 键的情况下
  227.     if Input.trigger?(Input::C)
  228.       @item = @items_window.item
  229.       if @item == nil or @item.identified == true
  230.         # 演奏冻结 SE
  231.         $game_system.se_play($data_system.buzzer_se)
  232.         return
  233.       end
  234.       # 演奏确定 SE
  235.       $game_system.se_play($data_system.decision_se)
  236.       @items_window.active = false
  237.       @help_window.visible = false
  238.       @command_window.price = (@item.price*@price_f_ident).round
  239.       @command_window.refresh
  240.       @command_window.active = true
  241.       @command_window.visible = true
  242.       @command_window.index = 0
  243.     end
  244.   end
  245.   #--------------------------------------------------------------------------
  246.   # ● 画面更新 (選項窗口激活的情况下)
  247.   #--------------------------------------------------------------------------
  248.   def update_command
  249.     # 按下 B or Esc 键的情况下
  250.     if Input.trigger?(Input::B)
  251.       # 演奏确定 SE
  252.       $game_system.se_play($data_system.decision_se)
  253.       # 切换到人物窗口
  254.       @items_window.active = true
  255.       @help_window.visible = true
  256.       @command_window.visible = false
  257.       @command_window.active = false
  258.       @command_window.index = -1
  259.       return
  260.     end
  261.     # 按下 C or Space 键的情况下
  262.     if Input.trigger?(Input::C)
  263.       case @command_window.index
  264.       when 0
  265.         @items_window.active = true
  266.         @command_window.visible = false
  267.         @command_window.active = false
  268.         @command_window.index = -1
  269.       when 1
  270.       # 演奏确定 SE
  271.         if $game_party.gold < (@item.price*@price_f_ident).round or
  272.           @item.identified == true
  273.           #
  274.           # 演奏冻结 SE
  275.           $game_system.se_play($data_system.buzzer_se)
  276.           return
  277.         end
  278.         # 演奏确定 SE
  279.         $game_system.se_play($data_system.decision_se)
  280.         $game_party.lose_gold((@item.price*@price_f_ident).round)
  281.         case @item
  282.         when RPG::Item
  283.         when RPG::Weapon
  284.           $game_party.lose_weapon(@item.id, 1)
  285.           $game_party.gain_weapon(@item.id, 1)
  286.         when RPG::Armor
  287.           $game_party.lose_armor(@item.id, 1)
  288.           $game_party.gain_armor(@item.id, 1)
  289.         end
  290.         @help_window.non_auto_update # 手動更新畫面=.=
  291.         # 切换到人物窗口
  292.         @command_window.visible = false
  293.         @command_window.active = false
  294.         @command_window.index = -1
  295.         @help_window.visible = true
  296.         @items_window.active = true
  297.         @items_window.refresh
  298.       end
  299.     end
  300.   end
  301. end#==============================================================================
  302. # ■ Window_EquipItem
  303. #------------------------------------------------------------------------------
  304. #  装备画面、显示浏览变更装备的候补物品的窗口。
  305. #==============================================================================

  306. class Window_EquipItem < Window_Selectable
  307.   #--------------------------------------------------------------------------
  308.   # ● 项目的描绘
  309.   #     index : 项目符号
  310.   #--------------------------------------------------------------------------
  311.   def draw_item(index)
  312.     item = @data[index]
  313.     x = 4
  314.     y = index * 32
  315.     case item
  316.     when RPG::Weapon
  317.       number = $game_party.weapon_number(item.id)
  318.     when RPG::Armor
  319.       number = $game_party.armor_number(item.id)
  320.     end
  321.     if item.identified == false
  322.       self.contents.font.color = disabled_color
  323.     else
  324.       self.contents.font.color = normal_color
  325.     end
  326.     self.contents.draw_text(x + 28-28, y, 212, 32, item.name, 0)
  327.     self.contents.draw_text(x + 240-28, y, 16, 32, ":", 1)
  328.     self.contents.draw_text(x + 256-28, y, 24, 32, number.to_s, 2)
  329.   end
  330. endclass Scene_Equip
  331.   #--------------------------------------------------------------------------
  332.   # ● 刷新画面 (物品窗口被激活的情况下)
  333.   #--------------------------------------------------------------------------
  334.   def update_item
  335.     # 按下 B 键的情况下
  336.     if Input.trigger?(Input::B)
  337.       # 演奏取消 SE
  338.       $game_system.se_play($data_system.cancel_se)
  339.       # 激活右侧窗口
  340.       @right_window.active = true
  341.       @item_window.active = false
  342.       @item_window.index = -1
  343.       return
  344.     end
  345.     # 按下 C 键的情况下
  346.     if Input.trigger?(Input::C)
  347.       # 获取物品窗口现在选择的装备数据
  348.       item = @item_window.item
  349. #----------------------------------#
  350. if item!=nil
  351.       if item.identified == false
  352.         # 演奏冻结 SE
  353.         $game_system.se_play($data_system.buzzer_se)
  354.         return
  355.       end
  356.     end
  357. #----------------------------------#
  358.       # 演奏装备 SE
  359.       $game_system.se_play($data_system.equip_se)
  360.       # 变更装备
  361.       @actor.equip(@right_window.index, item == nil ? 0 : item.id)
  362.       # 再生成右侧窗口、物品窗口的内容
  363.       @right_window.refresh
  364.       @item_window.refresh
  365.       @item_window.index = -1
  366.       # 激活右侧窗口
  367.       @right_window.active = true
  368.       @item_window.active = false
  369.       return
  370.     end
  371.   end
  372. end
复制代码
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1035
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

8
发表于 2008-3-20 21:53:26 | 只看该作者
最初的時候,腳本寫得太過冗長了……新版會减少一點功能與代碼。
(魔石系統由4000行縮少到1800行……大囧)
之所以差那么多是因爲如果星期六之前不完成,下次回到家就是兩個星期以後……
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2008-3-13
帖子
84
9
 楼主| 发表于 2008-3-20 22:00:43 | 只看该作者
哦,嗬嗬,禾大辛苦,我用你给的代码先作着,以后有了在替换,期待禾大新的脚本
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2008-3-13
帖子
84
10
 楼主| 发表于 2008-3-20 22:03:02 | 只看该作者
ps。问个地球问题,你们火星人总是喜欢说:“大囧”,请问那个“囧”是什么字?怎么念?什么意思?hoho
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 12:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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