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

Project1

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

武器升级用的脚本如何让某装备不可已升级

 关闭 [复制链接]

Lv1.梦旅人

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

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

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

x
这个是武器升级用的脚本  如何让某装备不可已升级
因为要做特效装备
  1. class Basic_Works_F_Upgrade
  2.   def smith_weapon(weapon_id, n)
  3. #==============================================================================
  4.     # 正體
  5. #==============================================================================
  6.     if weapon_id > 0
  7.       # 取得ID
  8.       weapon = $data_weapons[weapon_id]
  9.     else
  10.       return
  11.     end
  12.     # 取得設定
  13.     if @control_8 == 1
  14.       setting = Radom_Creation.new
  15.       best_quality = setting.best_quality
  16.       level_set = setting.level_set
  17.       worst_level_set = setting.worst_level_set
  18.     end
  19.     #=====>最終等級
  20.     max_lv = @max_f_weapon
  21.     a = rand(1000)
  22.     exlent_add = @atk_s +  @pdef_s + @mdef_s + @str_s + @dex_s + @agi_s + @int_s
  23.     worst_add = 0 - @atk_f -  @pdef_f - @mdef_f - @str_f - @dex_f - @agi_f - @int_f
  24.     # p exlent_add
  25.     # p worst_add
  26.     s_rate = @proportion_s
  27.     r_rate = @proportion_r
  28.     ex_rate = @proportion_ex
  29.     if @control_14 == 1
  30.       s_rate -= @up_rate * weapon.lv
  31.       r_rate += @up_rate/2.round * weapon.lv
  32.       if  @control_1 == 1
  33.         ex_rate -= @up_rate/2.round * weapon.lv
  34.       end
  35.     end
  36.    
  37.     case @control_1 # 可能高低等變化嗎?
  38.     when 0 # 不可能
  39.       b = 1000 - s_rate # 成敗分岐
  40.       b2 = b - r_rate # 下降與否分岐
  41.       if a > b # 成功
  42.         s = 1
  43.       else
  44.         if a > b2
  45.           #還原
  46.           s = 3
  47.         else
  48.           #失敗
  49.           s = 0
  50.         end
  51.       end
  52.     when 1 # 可能
  53.       # p ""
  54.       b = 1000 - s_rate - ex_rate# 成敗空白分岐
  55.       b2 = b + s_rate # 優劣分岐
  56.       b3 = b - r_rate
  57.       if a > b # 成功
  58.         if a > b2 # 劣質提昇
  59.           s = 2 # ex
  60.         else # 優質提昇
  61.           s = 1 # s
  62.         end
  63.       else #失敗
  64.         if a > b3
  65.           s = 3
  66.         else
  67.           s = 0
  68.         end
  69.       end
  70.     end
  71.     # 卑鄙地爆掉 Q Q
  72.     if s== 0 and @control_10 == 1
  73.       if @proportion_b > rand(1000)
  74.         return
  75.       end
  76.     end
  77.     # 還原 ~.~
  78.     if s == 3
  79.       $game_party.weapons[weapon.id] = [[$game_party.weapon_number(weapon.id) + n, 0].max, 99].min
  80.       return
  81.     end
  82.     # 取得附加值
  83.     case s
  84.     when 0 # 當失敗時
  85.       add_atk = -@atk_f
  86.       add_pdef = -@pdef_f
  87.       add_mdef = -@mdef_f
  88.       add_str = -@str_f
  89.       add_dex = -@dex_f
  90.       add_agi = -@agi_f
  91.       add_int = -@int_f
  92.       p_rate = 1/@pri_f
  93.       if @control_2 == 1
  94.         r_n = -@discount_f
  95.         
  96.       end
  97.       add_lv = -1
  98.     when 1 # 當劣質提昇成功時
  99.       add_atk = @atk_s
  100.       add_pdef = @pdef_s
  101.       add_mdef = @mdef_s
  102.       add_str = @str_s
  103.       add_dex = @dex_s
  104.       add_agi = @agi_s
  105.       add_int = @int_s
  106.       p_rate = 1/@pri_s
  107.       if @control_2 == 1
  108.         r_n = @discount_s
  109.       end
  110.       add_lv = 1
  111.     when 2 # 當優質提昇成功時
  112.       add_atk = @atk_ex
  113.       add_pdef = @pdef_ex
  114.       add_mdef = @mdef_ex
  115.       add_str = @str_ex
  116.       add_dex = @dex_ex
  117.       add_agi = @agi_ex
  118.       add_int = @int_ex
  119.       p_rate = 1/@pri_ex
  120.       if @control_2 == 1
  121.         r_n = @discount_ex
  122.       end
  123.       add_lv = 1
  124.     end
  125.     # p s
  126.     # p "L" if add_int == 5
  127.     case @control_2 # 會隨即折損嗎?
  128.     when 1 # 會
  129.       add_atk -= rand(r_n)
  130.       add_pdef -= rand(r_n)
  131.       add_mdef -= rand(r_n)
  132.       add_str -= rand(r_n)
  133.       add_dex -= rand(r_n)
  134.       add_agi -= rand(r_n)
  135.       add_int -= rand(r_n)
  136.     end
  137.    
  138.     if $data_weapons[weapon_id].lv < max_lv
  139.       # 取得原生數據
  140.       main_atk = weapon.atk # 原生atk_plus
  141.       main_name = weapon.name # 原生name
  142.       main_des = weapon.description # 原生description
  143.       main_str = weapon.str_plus # 原生str_plus
  144.       main_dex = weapon.dex_plus # 原生dex_plus
  145.       main_agi = weapon.agi_plus # 原生agi_plus
  146.       main_int = weapon.int_plus # 原生int_plus
  147.       main_pdef = weapon.pdef # 原生物防
  148.       main_mdef = weapon.mdef # 原生魔防
  149.       main_price = weapon.price # 原生price
  150.       main_element = weapon.element_set # 附加屬性組
  151.       main_lv = weapon.lv
  152.       # 當與隨即物品生成結合時,取得原本品質
  153.       if @control_8 == 1
  154.         new_quality = weapon.quality
  155.       end
  156.       # 當等級等於0而失敗時,等級不再下降
  157.       if $data_weapons[weapon_id].lv == 0 and s == 0
  158.         $game_party.weapons[weapon_id] = [[$game_party.weapon_number(weapon_id) + n, 0].max, 99].min
  159.         return
  160.       end
  161.       new_atk = add_atk + main_atk # 新的atk_plus
  162.       # 當等級等於0時,取消lv加序
  163.       if $data_weapons[weapon_id].lv == 0
  164.         new_name = main_name
  165.       else
  166.         if @control_3 == 1 and  @control_12 == 2
  167.             new_name = main_name.split(/級/)[1]
  168.             # p "yes"
  169.         else
  170.           new_name = main_name.split(/+/)[0] # 新的name
  171.         end
  172.       end
  173.       # p new_name
  174.       # 取得新的數據
  175.       new_des = main_des # 新的description
  176.       new_str = add_str + main_str# 新的str_plus
  177.       new_dex = add_dex + main_dex # 新的dex_plus
  178.       new_agi = add_agi + main_agi # 新的agi_plus
  179.       new_int = add_int + main_int # 新的int_plus
  180.       new_pdef = add_pdef + main_pdef # 新的物防
  181.       new_mdef = add_mdef + main_mdef # 新的魔防
  182.       new_price = p_rate * main_price # 新的價格
  183.       # 當與隨即物品生成結合時,取得新的品質
  184.       if @control_8 == 1
  185.         new_quality += add_atk + add_str + add_dex + add_agi + add_int + add_pdef + add_mdef
  186.       end
  187.       
  188.       new_lv = add_lv + main_lv # 新的等級
  189.     elsif $data_weapons[weapon_id].lv == max_lv # 當等級達到最高,返回
  190.       $game_party.weapons[weapon_id] = [[$game_party.weapon_number(weapon_id) + n, 0].max, 99].min
  191.       return
  192.     else # 當等級超過最高,修正
  193.       $game_party.weapons[weapon_id] = [[$game_party.weapon_number(weapon_id) + n, 0].max, 99].min
  194.       if @control_3 == 1 and @control_12 == 2
  195.         new_name = max_lv.to_s + "級" + main_name.split(/級/)[1] # 新的name
  196.       else
  197.         new_name = main_name.split(/+/)[0] + "+" + max_lv.to_s # 新的name
  198.       end
  199.       $data_weapons[weapon_id].lv = max_lv  # 修正lv
  200.       return
  201.     end
  202.    
  203.     new_element = main_element   
  204.     # 當可能附加新的屬性時
  205.     if @control_3 == 1
  206.       exlent_add += exlent_add / 5
  207.       # 錯誤追踪
  208.       p "check「@element_plus」in 武器昇級·基本定義! It cannot be empty!" if @element_plus.size == 0
  209.       if @proportion_ep > rand(1000) and s > 0 and @element_plus.size > 0
  210.         # 隨即挑選屬性
  211.         r_element = @element_plus[rand(@element_plus.size)]
  212.         element_text = $data_system.elements[r_element]
  213.         # 如果與已有屬性相符則無效
  214.         if main_element.include? r_element
  215.           new_name += ""
  216.           new_des += ""
  217.           # p "include"
  218.         else
  219.           # p "not-include"
  220.           new_element = [r_element] | main_element
  221.           # 修正新的價格
  222.           new_price = new_price * @pri_ep
  223.           if @control_8 == 1
  224.             # 取得新的品質
  225.             new_quality += @str_s/2
  226.           end
  227.           if @control_11 == 1
  228.             new_ori_record = weapon.ori_record2.clone
  229.             new_ori_record[0].push r_element
  230.           end
  231.           # 附加前後序
  232.           case @control_12
  233.           when 1 # 名字前面加東東
  234.             case @control_13
  235.             when 0
  236.               new_name = @b_name + new_name
  237.             when 1
  238.               new_name = element_text + @b_name + new_name
  239.             when 2
  240.               new_name =  @b_name + element_text + new_name
  241.             end
  242.           when 2 # 名字後面加東東
  243.             case @control_13
  244.             when 0
  245.               new_name = new_name + @p_name
  246.             when 1
  247.               new_name = new_name + element_text + @p_name
  248.             when 2
  249.               new_name =  new_name + @p_name + element_text
  250.             end
  251.           when 3 # 描述前面加西西
  252.             case @control_13
  253.             when 0
  254.               new_des = @b_text + new_des
  255.             when 1
  256.               new_des = element_text + @b_text + new_des
  257.             when 2
  258.               new_des =  @b_text + element_text + new_des
  259.             end
  260.           when 4 # 描述後面加西西
  261.             case @control_13
  262.             when 0
  263.               new_des = new_des + @p_text
  264.             when 1
  265.               new_des = new_des + element_text + @p_text
  266.             when 2
  267.               new_des =  new_des + @p_text + element_text
  268.             end
  269.         # when 0 # 我不喜歡有描述!
  270.           end
  271.         end
  272.       end
  273.     end
  274.     # 更正新的名字
  275.     if $data_weapons[weapon_id].lv == 1 and s == 0
  276.     else
  277.       if @control_3 == 1 and @control_12 == 2
  278.         # p new_name
  279.         new_name = new_lv.to_s + "級" + new_name # 新的new_name
  280.       else
  281.         new_name = new_name + "+" + new_lv.to_s # 新的new_name
  282.       end
  283.     end
  284.     # 修正名字顔色
  285.     if @control_8 == 1
  286.       q = best_quality
  287.     end
  288.     if @control_8 == 1
  289.       if level_set.empty? == true
  290.         new_color = 0
  291.       else
  292.         for i in level_set
  293.           if i[0] != nil
  294.             q -= i[0]
  295.             # p q
  296.             if new_quality > q
  297.               if i [1] != nil
  298.                 new_color = i[1]
  299.                 break
  300.               end
  301.             end
  302.           end
  303.         end
  304.       end
  305.     end
  306.     if @control_8 == 1
  307.       if new_quality < 0
  308.         new_color = worst_level_set[0]
  309.         if worst_level_set[2]!=nil
  310.           new_name = new_name + worst_level_set[2]
  311.         end
  312.         if worst_level_set[3]!=nil
  313.           new_name = new_name + worst_level_set[3]
  314.         end
  315.       end
  316.     end
  317.    
  318.     weapon.max_duration *= 1.1
  319.     weapon.name = new_name
  320.     weapon.description = new_des
  321.     weapon.price = new_price.round
  322.     weapon.atk = new_atk
  323.     weapon.pdef = new_pdef
  324.     weapon.mdef = new_mdef
  325.     weapon.str_plus = new_str
  326.     weapon.dex_plus = new_dex
  327.     weapon.agi_plus = new_agi
  328.     weapon.int_plus = new_int
  329.     weapon.element_set = new_element
  330.     weapon.lv = new_lv
  331.    
  332.     if @control_8 == 1
  333.       weapon.quality = new_quality
  334.       weapon.color = new_color
  335.     end
  336.     if @control_11 == 1
  337.       weapon.ori_record = new_ori_record
  338.     end
  339.     $game_party.weapons[weapon.id] = [[$game_party.weapon_number(weapon.id) + n, 0].max, 99].min
  340.    
  341. =begin
  342.     # 更新武器數據库
  343.     save_data($data_weapons, "Data/Weapons.rxdata")
  344.     save_data($data_classes, "Data/Classes.rxdata")
  345.     $data_weapons = load_data("Data/Weapons.rxdata")
  346.     $data_classes = load_data("Data/Classes.rxdata")
  347.    

  348. =end
  349.   end
  350. end
复制代码

此贴于 2008-12-21 13:28:48 被版主darkten提醒,请楼主看到后对本贴做出回应。
版务信息:本贴由楼主自主结贴~
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-6-24
帖子
70
2
发表于 2008-12-21 05:41:33 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-20 07:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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