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

Project1

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

[已经过期] 【简易转职系统】求改部分功能~

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
154
在线时间
664 小时
注册时间
2011-9-25
帖子
241
跳转到指定楼层
1
发表于 2011-10-23 21:07:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xuzhengchi 于 2011-10-23 21:13 编辑
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  2. #_/    ◆ 简易职业转职脚本 - FSL_JOB ◆ VX ◆

  3. #_/

  4. #_/    ◇ 项目分类 : 角色辅助

  5. #_/    ◇ 项目版本 : 1.6.826

  6. #_/    ◇ 建立日期 : 2010/8/23

  7. #_/    ◇ 最后更新 : 2010/8/26 ◇

  8. #_/----------------------------------------------------------------------------

  9. #_/  脚本作者:wangswz

  10. #_/============================================================================

  11. #_/ 【基本机能】方便职业转换和职业成长设置

  12. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/


  13. #$scene = Scene_Job.new(0,false)于事件中调用


  14. module FSL

  15.   module JOB

  16.     # ◆ 职业成长系数 初始化

  17.     JOB_MAX = []

  18.     # ◆ 设置      hp,mp,atk,def,spi,agi,职业图标号

  19.     JOB_MAX[1] =  [ 1, 0,  0,  0,  0,  0,      209]#普通人

  20.     JOB_MAX[2] =  [ 3, 0,  1,  0,  0,  1,      337]#猎人

  21.     JOB_MAX[3] =  [ 5, 0,  1,  1,  0,  1,      419]#初级武者

  22.     JOB_MAX[4] =  [10, 0,  1,  2,  0,  0,        3]#见习战士

  23.     JOB_MAX[5] =  [ 4, 4,  4,  4,  4,  4,        0]

  24.     JOB_MAX[6] =  [ 4, 4,  4,  4,  4,  4,        0]

  25.     JOB_MAX[7] =  [ 4, 4,  4,  4,  4,  4,        0]
  26.    
  27.    
  28.    
  29.    
  30.    
  31.    
  32.    
  33.    
  34.    
  35.    
  36.    
  37.    

  38.    
  39.     # ◆ 设置缺省职业成长系数

  40.     #当职业成长系数中未给出指定值时使用

  41.     JOB_Default = [15,15,  2,  2,  2,  2,        0]

  42.    
  43.     # ◆ 属性用语 初始化

  44.     JOB_text = []

  45.     # ◆ 设置

  46.     JOB_text[1] = ["体力增长"]

  47.     JOB_text[2] = ["魔力增长"]

  48.     JOB_text[3] = ["力量增长"]

  49.     JOB_text[4] = ["耐力增长"]

  50.     JOB_text[5] = ["精神增长"]

  51.     JOB_text[6] = ["敏捷增长"]

  52.    
  53.     # ◆ 职业窗口每行显示数

  54.     JOB_W = 3

  55.    
  56.     # ◆ 职业转职限制开关

  57.     #true  设置限制转职列表

  58.     #false 全职业可用

  59.     Advanced = true

  60.    
  61.     # ◆ 职业不可转职列表 Advanced = true时有效

  62.     JOB_Advanced = []

  63.     #设置

  64.     # <例> JOB_Advanced[1] = [4,5]

  65.     #      数据库1号职业 不可转职为4,5号职业


  66.    
  67.     JOB_Advanced[1] = [1]
  68.   
  69.     JOB_Advanced[2] = [2]
  70.    
  71.     JOB_Advanced[3] = [3]
  72.    
  73.     JOB_Advanced[4] = [4]
  74.    
  75.     JOB_Advanced[5] = [5]
  76.    
  77.    
  78.    
  79.    
  80.    
  81.    
  82.    

  83.    
  84.     # ◆ 职业转职列表显示开关

  85.     #true 灰色显示不可转职职业

  86.     #false不显示不可转职职业
  87.    
  88.     Advanced2 = true
  89.    

  90.     # ◆ 追加菜单

  91.     #在菜单窗口最下方增加转职窗口按钮

  92.     JOB_COMMAND = false

  93.    
  94.     # ◆ 追加菜单文字信息

  95.     JOB_MENU_VOCAB = "-转职列表-"

  96.    
  97.     # ◆ 转职命令文字信息

  98.     JOB_COMMAND_s1 = "-转职-"

  99.     JOB_COMMAND_s2 = "-取消-"

  100.   end

  101. end

  102. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  103. $fscript = {} if $fscript == nil

  104.                 $fscript["FSL_JOB"] = [ 1, 6, 826]

  105. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


  106. #==============================================================================

  107. # ■ Scene_Base

  108. #------------------------------------------------------------------------------

  109. #  处理转职画面的类

  110. #==============================================================================


  111. class Scene_Job < Scene_Base

  112.   #--------------------------------------------------------------------------

  113.   # * 初始化对象

  114.   #     actor_index : 角色位置

  115.   #--------------------------------------------------------------------------

  116.   def initialize(actor_index = 0, from_menu = true, job_index = 0)

  117.     @actor_index = actor_index

  118.     @from_menu = from_menu

  119.     @Job_menu_index = job_index

  120.   end

  121.   #--------------------------------------------------------------------------

  122.   # * 开始处理

  123.   #--------------------------------------------------------------------------

  124.   def start

  125.     super

  126. #~     @actor = $game_party.members[@actor_index]

  127.     create_menu_background

  128.     @actor = $game_party.members[@actor_index]

  129.     @class_status_window = Window_ClassStatus.new(@actor)

  130.     create_class_list

  131.     create_option_list

  132.     @command_window.active = false

  133.     @command_window2.active = true

  134.   end

  135.   #--------------------------------------------------------------------------

  136.   # * 创建选项列表

  137.   #--------------------------------------------------------------------------

  138.   def create_option_list

  139.     s1 = FSL::JOB::JOB_COMMAND_s1

  140.     s2 = FSL::JOB::JOB_COMMAND_s2

  141.     @command_window2 = Window_Command.new(544, [s1, s2], 2)

  142.     @command_window2.x = 0

  143.     @command_window2.y = 0

  144.     @command_window2.height = 56

  145.   end

  146.   #--------------------------------------------------------------------------

  147.   # * 创建职业列表

  148.   #--------------------------------------------------------------------------

  149.   def create_class_list

  150.     #生成职业列表

  151.     com = []

  152.      @com2 = []


  153.       for i in 1...$data_classes.size

  154.         

  155.         if FSL::JOB::Advanced == true && FSL::JOB::Advanced2 == false

  156.           if FSL::JOB::JOB_Advanced[@actor.class_id] != nil &&

  157.               FSL::JOB::JOB_Advanced[@actor.class_id].include?(i)

  158.             next

  159.           else

  160.             com << "  "+$data_classes[i].name if $data_classes[i].name != ""

  161.             @com2 << i

  162.           end

  163.         else

  164.           com << "  "+$data_classes[i].name if $data_classes[i].name != ""

  165.           @com2 << i

  166.         end

  167.       

  168.       end


  169. #~       for i in 1...$data_classes.size

  170. #~         com << "  "+$data_classes[i].name if $data_classes[i].name != ""

  171. #~       end


  172.    
  173.     @command_window = Window_Command.new(544, com, FSL::JOB::JOB_W)

  174.     #生成不可转职视觉效果

  175.     for i in 1..com.size

  176.       if FSL::JOB::Advanced == true && FSL::JOB::Advanced2 == true

  177.         if FSL::JOB::JOB_Advanced[@actor.class_id] != nil &&
  178.             FSL::JOB::JOB_Advanced[@actor.class_id].include?(i)

  179.           @command_window.draw_item(i-1, false)

  180.         end

  181.       end

  182.     end

  183.     #设置窗口数值

  184.     @command_window.x = 0

  185.     @command_window.y = 256

  186.     @command_window.height = 160

  187.    
  188.     x = 0

  189.     y = 0

  190.     i = 0

  191.     p = 0

  192.     if FSL::JOB::Advanced2 == false

  193.       for m in 1..(Integer($data_classes.size / FSL::JOB::JOB_W)+1)

  194.         for n in 1..FSL::JOB::JOB_W

  195.           i += 1

  196.           if FSL::JOB::JOB_MAX[i] != nil && FSL::JOB::JOB_MAX[i][6] != nil

  197.             if @com2.include?(i)

  198.               @command_window.draw_icon(FSL::JOB::JOB_MAX[i][6], x, y)

  199.               x += (544 / FSL::JOB::JOB_W)

  200.               p += 1

  201.               if p % FSL::JOB::JOB_W == 0

  202.                 x = 0

  203.                 y += 24

  204.               end

  205.             end

  206.           else

  207.             if FSL::JOB::Advanced2

  208.               @command_window.draw_icon(FSL::JOB::JOB_Default[6], x, y)

  209.               x += (544 / FSL::JOB::JOB_W)

  210.             end

  211.           end

  212.           break if i == ($data_classes.size - 1)

  213.         end

  214.       end

  215.     else

  216.       for m in 1..(Integer($data_classes.size / FSL::JOB::JOB_W)+1)

  217.         for n in 1..FSL::JOB::JOB_W

  218.           i += 1

  219.           if FSL::JOB::JOB_MAX[i] != nil && FSL::JOB::JOB_MAX[i][6] != nil

  220.             @command_window.draw_icon(FSL::JOB::JOB_MAX[i][6], x, y)

  221.           else

  222.             @command_window.draw_icon(FSL::JOB::JOB_Default[6], x, y)

  223.           end

  224.           x += (544 / FSL::JOB::JOB_W)

  225.           break if i == ($data_classes.size - 1)

  226.         end

  227.         x = 0

  228.         y += 24

  229.       end

  230.     end

  231.    
  232.   end  

  233.   #--------------------------------------------------------------------------

  234.   # * 终止处理

  235.   #--------------------------------------------------------------------------

  236.   def terminate

  237.     super

  238.     dispose_menu_background

  239.     @class_status_window.dispose

  240.     @command_window.dispose

  241.     @command_window2.dispose

  242.   end

  243.   #--------------------------------------------------------------------------

  244.   # * 切换到下一个角色

  245.   #--------------------------------------------------------------------------

  246.   def next_actor

  247.     @actor_index += 1

  248.     @actor_index %= $game_party.members.size

  249.     $scene = Scene_Job.new(@actor_index, @from_menu)

  250.   end

  251.   #--------------------------------------------------------------------------

  252.   # * 切换到上一个角色

  253.   #--------------------------------------------------------------------------

  254.   def prev_actor

  255.     @actor_index += $game_party.members.size - 1

  256.     @actor_index %= $game_party.members.size

  257.     $scene = Scene_Job.new(@actor_index, @from_menu)

  258.   end

  259.   #--------------------------------------------------------------------------

  260.   # * 更新选择窗口 >> 允许检查输入

  261.   #--------------------------------------------------------------------------

  262.   def update_class_selection

  263.     if Input.trigger?(Input::B)

  264.       Sound.play_cancel

  265.       @command_window2.active = true

  266.       @command_window.active = false

  267.     elsif Input.trigger?(Input::C)
  268.       
  269.       Sound.play_decision

  270.         if FSL::JOB::Advanced == true

  271.           if FSL::JOB::Advanced2 == true

  272.             if FSL::JOB::JOB_Advanced[@actor.class_id] != nil &&
  273.                 FSL::JOB::JOB_Advanced[@actor.class_id].include?(@command_window.index + 1)

  274.               Sound.play_buzzer

  275.             else

  276.               @actor.class_id = @command_window.index + 1

  277.               $scene = Scene_Job.new(@actor_index, @from_menu)

  278.             end

  279.           else

  280.               @actor.class_id = @com2[@command_window.index]

  281.               $scene = Scene_Job.new(@actor_index, @from_menu)
  282.             

  283.           end

  284.         else

  285.           @actor.class_id = @command_window.index + 1
  286.            
  287.           $scene = Scene_Job.new(@actor_index, @from_menu)

  288.          
  289.         #######################################
  290.         # $scene = Scene_Map.new
  291.         #######################################
  292.         end

  293.     end

  294.   end

  295.   #--------------------------------------------------------------------------

  296.   # * 更新选择窗口 >> 允许检查输出

  297.   #--------------------------------------------------------------------------

  298.   def update_option_selection

  299.     if Input.trigger?(Input::B)

  300.       Sound.play_cancel

  301.         if @from_menu == false

  302.           $scene = Scene_Map.new

  303.         else

  304.           $scene = Scene_Menu.new(@Job_menu_index)

  305.         end  

  306.     elsif Input.trigger?(Input::C)

  307.       Sound.play_decision

  308.       case @command_window2.index

  309.       when 0

  310.         Sound.play_decision

  311.         @command_window.active = true

  312.         @command_window2.active = false

  313.       when 1

  314.         Sound.play_decision

  315.         if @from_menu == false

  316.           $scene = Scene_Map.new

  317.         else

  318.           $scene = Scene_Menu.new(@Job_menu_index)

  319.         end        

  320.       end

  321.     end

  322.   end  

  323.   #--------------------------------------------------------------------------

  324.   # * 更新框架

  325.   #--------------------------------------------------------------------------

  326.   def update

  327.     update_menu_background

  328.     if @command_window2.active

  329.       update_option_selection

  330.     else

  331.       update_class_selection

  332.     end

  333.     @command_window.update

  334.     @command_window2.update

  335.     @class_status_window.update

  336.     if Input.trigger?(Input::R)

  337.       Sound.play_cursor

  338.       next_actor

  339.     elsif Input.trigger?(Input::L)

  340.       Sound.play_cursor

  341.       prev_actor

  342.     end

  343.     super

  344.   end

  345. end


  346. #==============================================================================

  347. # ■ Window_ClassStatus

  348. #------------------------------------------------------------------------------

  349. #  角色和职业状态信息的窗口

  350. #==============================================================================


  351. class Window_ClassStatus < Window_Base

  352.   #--------------------------------------------------------------------------

  353.   # * 初始化对象

  354.   #     actor : actor

  355.   #--------------------------------------------------------------------------

  356.   def initialize(actor)

  357.     super(0, 56, 544, 200)

  358.     @actor = actor

  359.     refresh

  360.   end

  361.   #--------------------------------------------------------------------------

  362.   # * 刷新

  363.   #--------------------------------------------------------------------------

  364.   def refresh

  365.     self.contents.clear

  366.     draw_actor_name(@actor, 10, 100)

  367.     draw_actor_class(@actor, 10, 124)

  368.     draw_actor_face(@actor, 0, 0)

  369.     draw_actor_graphic(@actor, 96, 96)

  370.     draw_basic_info(110, 0)

  371.   end

  372.   #--------------------------------------------------------------------------

  373.   # * 制定基本参数

  374.   #     x : 绘出X轴坐标

  375.   #     y : 绘出Y轴坐标

  376.   #--------------------------------------------------------------------------

  377.   def draw_basic_info(x, y)

  378.     draw_actor_level(@actor, x, y + WLH * 0)

  379.     draw_actor_hp(@actor, x, y + WLH * 1)

  380.     draw_actor_mp(@actor, x, y + WLH * 2)

  381.     draw_actor_parameter(@actor, x, y + WLH * 3,0)

  382.     draw_actor_parameter(@actor, x, y + WLH * 4,1)

  383.     draw_actor_parameter(@actor, x, y + WLH * 5,2)

  384.     draw_actor_parameter(@actor, x, y + WLH * 6,3)

  385.     self.contents.font.color = text_color(12)

  386.     for i in 1..6

  387.       self.contents.draw_text(x+200, y, 100, WLH * i*2-1,FSL::JOB::JOB_text[i])

  388.       if FSL::JOB::JOB_MAX[@actor.class_id] != nil

  389.         self.contents.draw_text(x+300, y, 100, WLH * i*2, FSL::JOB::JOB_MAX[@actor.class_id][i-1])

  390.       else

  391.         self.contents.draw_text(x+300, y, 100, WLH * i*2, FSL::JOB::JOB_Default[i-1])

  392.       end

  393.     end

  394.     self.contents.font.color = normal_color

  395.   end

  396.   #--------------------------------------------------------------------------

  397.   # * 经验信息

  398.   #     x : 绘出X轴坐标

  399.   #     y : 绘出Y轴坐标

  400.   #--------------------------------------------------------------------------

  401.   def draw_exp_info(x, y)

  402.     s1 = @actor.exp_s

  403.     s2 = @actor.next_rest_exp_s

  404.     s_next = sprintf(Vocab::ExpNext, Vocab::level)

  405.     self.contents.font.color = system_color

  406.     self.contents.draw_text(x, y + WLH * 0, 180, WLH, Vocab::ExpTotal)

  407.     self.contents.draw_text(x, y + WLH * 2, 180, WLH, s_next)

  408.     self.contents.font.color = normal_color

  409.     self.contents.draw_text(x, y + WLH * 1, 180, WLH, s1, 0)

  410.     self.contents.draw_text(x, y + WLH * 3, 180, WLH, s2, 0)

  411.   end

  412. end

  413. #==============================================================================

  414. # ■ Scene_Menu

  415. #------------------------------------------------------------------------------

  416. #  菜单改造窗口

  417. #==============================================================================


  418. class Scene_Menu < Scene_Base

  419.   if FSL::JOB::JOB_COMMAND

  420.   #--------------------------------------------------------------------------

  421.   # ● 创建命令窗口

  422.   #--------------------------------------------------------------------------

  423.   alias create_command_window_FSL_JOB create_command_window

  424.   def create_command_window

  425.     create_command_window_FSL_JOB

  426.     @command_FSL_JOB_index = @command_window.add_command(FSL::JOB::JOB_MENU_VOCAB)

  427.     if @command_window.oy > 0

  428.       @command_window.oy -= Window_Base::WLH

  429.     end

  430.     @command_window.index = @menu_index  

  431.   end

  432.   end

  433.   #--------------------------------------------------------------------------

  434.   # ● 更新命令选择

  435.   #--------------------------------------------------------------------------

  436.   alias update_command_selection_FSL_JOB update_command_selection

  437.   def update_command_selection

  438. #~     current_menu_index = @command_FSL_JOB_index

  439.     call_FSL_JOB_flag = false


  440.     if Input.trigger?(Input::C)

  441.       case @command_window.index

  442.       when @command_FSL_JOB_index

  443.         call_FSL_JOB_flag = true

  444.       end

  445.     end

  446.    
  447.     if call_FSL_JOB_flag

  448.       Sound.play_decision

  449.       $scene = Scene_Job.new( 0, true, @command_window.index)

  450.       return

  451.     end


  452.     update_command_selection_FSL_JOB

  453.   end

  454. end

  455. #==============================================================================

  456. # ■ Game_Actor

  457. #------------------------------------------------------------------------------

  458. #  处理角色的类。本类在 Game_Actors 类 ($game_actors) 的内部使用、

  459. # Game_Party 类请参考 ($game_party) 。

  460. #==============================================================================


  461. class Game_Actor < Game_Battler

  462.   #--------------------------------------------------------------------------

  463.   # ● 升级

  464.   #--------------------------------------------------------------------------

  465. #~   alias FSL_JOB_level_up level_up

  466.   def level_up

  467.     @level += 1

  468.     if FSL::JOB::JOB_MAX[@class_id] != nil

  469.       @maxhp_plus += FSL::JOB::JOB_MAX[@class_id][0]

  470.       @maxmp_plus += FSL::JOB::JOB_MAX[@class_id][1]

  471.       @atk_plus += FSL::JOB::JOB_MAX[@class_id][2]

  472.       @def_plus += FSL::JOB::JOB_MAX[@class_id][3]

  473.       @spi_plus += FSL::JOB::JOB_MAX[@class_id][4]

  474.       @agi_plus += FSL::JOB::JOB_MAX[@class_id][5]

  475.     else

  476.       @maxhp_plus += FSL::JOB::JOB_Default[0]

  477.       @maxmp_plus += FSL::JOB::JOB_Default[1]

  478.       @atk_plus += FSL::JOB::JOB_Default[2]

  479.       @def_plus += FSL::JOB::JOB_Default[3]

  480.       @spi_plus += FSL::JOB::JOB_Default[4]

  481.       @agi_plus += FSL::JOB::JOB_Default[5]

  482.     end

  483.     for learning in self.class.learnings

  484.       learn_skill(learning.skill_id) if learning.level == @level

  485.     end

  486.   end

  487. end

  488. #==============================================================================

  489. # ■ Window_Command

  490. #------------------------------------------------------------------------------

  491. #  一般的命令选择行窗口。

  492. #==============================================================================


  493. class Window_Command < Window_Selectable

  494.   unless method_defined?(:add_command)

  495.   #--------------------------------------------------------------------------

  496.   # ○ 添加一个命令

  497.   #    返回额外的位置

  498.   #--------------------------------------------------------------------------

  499.   def add_command(command)

  500.     @commands << command

  501.     @item_max = @commands.size

  502.     item_index = @item_max - 1

  503.     refresh_command

  504.     draw_item(item_index)

  505.     return item_index

  506.   end

  507.   #--------------------------------------------------------------------------

  508.   # ○ 刷新命令

  509.   #--------------------------------------------------------------------------

  510.   def refresh_command

  511.     buf = self.contents.clone

  512.     self.height = [self.height, row_max * WLH + 32].max

  513.     create_contents

  514.     self.contents.blt(0, 0, buf, buf.rect)

  515.     buf.dispose

  516.   end

  517.   #--------------------------------------------------------------------------

  518.   # ○ 插入命令

  519.   #--------------------------------------------------------------------------

  520.   def insert_command(index, command)

  521.     @commands.insert(index, command)

  522.     @item_max = @commands.size

  523.     refresh_command

  524.     refresh

  525.   end

  526.   #--------------------------------------------------------------------------

  527.   # ○ 删除命令

  528.   #--------------------------------------------------------------------------

  529.   def remove_command(command)

  530.     @commands.delete(command)

  531.     @item_max = @commands.size

  532.     refresh

  533.   end

  534.   end

  535. end
复制代码
这个是wangswz前辈的简易转职系统,求高手帮我修改部分功能:
1、角色达到10级可转职为A职业,达到20级可转职为B职业,且A为B的前置。类似口袋怪兽进化。
2、每次转职成功后等级变为1。

试着自己修改了几次都不成功,求高手指点!!~~

若有其他更好的转职脚本也可以~~


xuzhengchi于2011-10-27 00:38补充以下内容:
四天了,一个回帖的都没有吗。。。

Lv3.寻梦者

虚空人形

梦石
0
星屑
4604
在线时间
2037 小时
注册时间
2011-8-11
帖子
3398

贵宾

2
发表于 2011-10-27 16:07:15 | 只看该作者
      一定要脚本吗?推荐使用事件。用变数设主角等级,在转职处设条件分歧,当XX等级到??时转职
     或一事件块的条件为变数??以上,在事件块里设转职事件。

点评

事件木有窗口啊。。。  发表于 2011-10-27 20:03
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
105
在线时间
5250 小时
注册时间
2011-10-7
帖子
1885

开拓者贵宾

3
发表于 2011-10-27 16:57:52 | 只看该作者
同意楼上…有时脚本确实没事件方便…要例程的话搜一下就好…
回复

使用道具 举报

Lv3.寻梦者

虚空人形

梦石
0
星屑
4604
在线时间
2037 小时
注册时间
2011-8-11
帖子
3398

贵宾

4
发表于 2011-10-27 23:07:56 | 只看该作者
     在地图角落加一个。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-6 20:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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