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

Project1

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

[已经解决] 希望可以帮我把这个VX脚本改为VA的

[复制链接]

Lv1.梦旅人

梦石
0
星屑
86
在线时间
99 小时
注册时间
2011-3-13
帖子
33
跳转到指定楼层
1
发表于 2016-2-11 16:02:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
因为想做个游戏,这个脚本可以实现自己想要的一个功能,不知道哪位大神能帮忙修改一下这个脚本 么么哒
RUBY 代码复制
  1. =begin
  2. ================================================================================
  3. 使用方法:
  4.     1. 敌人等级直接设定
  5.     
  6.     在敌人的备注栏里打上
  7.     
  8.     [等级 n]
  9.     
  10.     例如:[等级 25]
  11.     n 为该敌人等级。(「等级」二字简繁体皆可,也可以打成英文的 level)
  12.     
  13.     2. 敌人等级与角色队伍平均等级相同
  14.     
  15.     在敌人的备注栏里打上
  16.  
  17.     [主角等级]
  18.     
  19.     则自动依队伍平均等级计算该敌人等级
  20.     (「主角等级」四字可以为简繁体,或是英文的 player_level)
  21.  
  22.     3. 敌人等级为角色队伍平均等级的差距
  23.     
  24.     在敌人的备注栏里打上
  25.  
  26.     [强度 X]
  27.     
  28.     例如:[强度 很弱]
  29.     X 为下面的哈希表所设置的强度,可以自己修改,
  30.     (「强度」二字可以为简繁体,或是英文的 strength)
  31.     
  32.     强度标签单独使用时,是使用主角队伍平均等级计算
  33.     若是与等级标签同用,则是以该等级计算
  34.     详细看下面的范例设定。
  35.     
  36.     4. 敌人类型
  37.       (其实是参考了小幽的战斗AI脚本,可以配合该脚本使用
  38.         在战斗AI里设定好的类型,这里就不用再设定一次了
  39.         如果读取到了战斗AI脚本的敌人类型,就会忽略数据库里的设定。)
  40.       
  41.     在敌人的备注栏里打上
  42.  
  43.     [类型 X]
  44.     
  45.     例如:[类型 巫师]
  46.     X 为下面的哈希表所设置的强度,可以自己修改,
  47.     (「类型」二字可以为简繁体,或是英文的 type)
  48.     
  49.     5. 经验值系数设定
  50.       EXPERIENCE 是设定一般敌人经验值
  51.         0.1 表示所得经验值为角色队伍在该等级所需升级的经验值数的十分之一
  52.       BOSS_EXP   是设定BOSS敌人经验值
  53.         3 表示计算经验值後再加值计算的经验值
  54.     
  55.     6. 哈希表设置部分说明
  56.       ENEMY_TYPE 哈希表
  57.         字符部分为类型,可以修改,数字部分为类型代号,不要修改
  58.  
  59.       STRENGTH 哈希表
  60.         字符部分为强度,数字部分为与主角平均等级差
  61.        
  62.       例如:"很弱" =>  -3
  63.     
  64.       表示当敌人强度设为「很弱」时,该敌人等级为队伍等级-3
  65.     
  66.       例如:
  67.         1 角色  等级:3
  68.         2 角色  等级:4
  69.         3 角色  等级:8
  70.         4 角色  等级:6
  71.          怪物1设为 [强度 弱]
  72.          怪物2设为 [很强 很强] [等级 1]
  73.     
  74.         那麽怪物1等级就是:
  75.           (3+4+8+6)/4 = 5.25 <= 取整为5
  76.           5 - 2 = 3          <= 怪物等级为3
  77.           
  78.         那麽怪物2等级就是:
  79.           1 + 3 = 4          <= 怪物等级为4
  80.        
  81.       要注意的是,当等级为0或以下时则自动修正为1
  82.       若无法在哈希表中找到相对应的key,就会将该敌人设置为与主角队伍平均等级相同
  83.     
  84.     配合使用方法:
  85.     
  86.     一般敌人建议用第一种方法,设立(伪)绝对等级,主角成长後依然为弱怪的敌人。
  87.     头目敌人可以直接指定其类型为 BOSS,但是其能力值增值方面就比较死板,
  88.       若是想做成巫师型的血低魔高的BOSS,可以用下面的方法
  89.       
  90.       用第二、三种方法,设立相对等级,主角成长也会跟着成长的敌人。
  91.           设立为「弱」时,虽然对主角来说依然是弱怪,
  92.           但是会随着主角成长,HP、MP、经验值会随着增加,
  93.           可以用来做练级用的怪。
  94.        
  95.        
  96.     调用敌人图鉴方式:
  97.     在调用前先执行脚本 make_enemy_database
  98.     只要 WRITE_2_DATABASE 设为 false
  99.     就不会覆写数据库的资料,而是在游戏中调用而已。
  100.     不过说明方面就会有点问题了
  101.     
  102.     覆写数据库方法:
  103.     将WRITE_2_DATABASE 设为 true
  104.     随意在地图上用一个事件执行 make_enemy_database
  105.     再回到脚本将WRITE_2_DATABASE 设为 false(以免在运行中误操作)
  106.     
  107. =end
  108.  
  109. # 设置部分:
  110. module Auto_Enemy
  111.  
  112.   # 是否写入数据库
  113.   WRITE_2_DATABASE = false
  114.  
  115.   # 是否自動設置屬性有效度
  116.   AUTO_SET_ELEMENT = true
  117.  
  118.   # 是否自動設定狀態抵禦度
  119.   AUTO_SET_STATES  = true
  120.  
  121.   # 经验值计算系数
  122.   EXPERIENCE = 0.1
  123.   BOSS_EXP   = 3
  124.  
  125.   STRENGTH = {
  126.       "很弱" =>  -3,
  127.       "弱"   =>  -2,
  128.       "同"   =>   1,
  129.       "强"   =>   2,
  130.       "很强" =>   3,
  131.       "default" => 0  # 这行不要修改,除错用的
  132.   }
  133.  
  134.   # 敌人类型设定
  135.   ENEMY_TYPE = {
  136.  
  137.       "普通"   => 0,  # 普通敌人,能力值依队伍平均计算
  138.       "武士"   => 1,  # 武士型敌人,物理攻击等偏高
  139.       "法师"   => 2,  # 法师型敌人,魔法攻击偏高
  140.       "牧师"   => 3,  # 牧师型敌人,魔力值偏高
  141.       "巫师"   => 4,  # 巫师型敌人,命中率偏高
  142.       "挡箭牌" => 5,  # 挡箭牌型敌人,血高肉厚
  143.       "BOSS"   => 6,  # BOSS型敌人,各项能力值都增强
  144.       # 以上的数值可以在下面的数组变更
  145.  
  146.       "随机"   => -1, # 随机,看看它的运气,加值在 1~1.99
  147.       "default"=> 0   # 这行不要修改,除错用,默认为普通
  148.   }
  149.  
  150.   # 敌人能力值加值参数,对应上放哈希表的敌人类型。不会改的话就别改了。
  151.   #                 普通 武士  法师  牧师  巫师  档箭  BOSS
  152.   ENEMY_TYPE_HP  = [1,   1.5,  0.75, 0.6,  0.8,  2,    4]  # 体力最大值
  153.   ENEMY_TYPE_MP  = [1,   0.75, 1.5,  3,    1.4,  1.1,  4]  # 魔力最大值
  154.   ENEMY_TYPE_ATK = [1,   2,    0.75, 0.5,  0.6,  1.1,  4]  # 攻击力
  155.   ENEMY_TYPE_DEF = [1,   1.25, 0.5,  0.75, 0.7,  3,    4]  # 防御力
  156.   ENEMY_TYPE_SPI = [1,   0.1,  2,    1.75, 1.5,  0,    2]  # 精神力
  157.   ENEMY_TYPE_AGI = [1,   1.2,  2,    0.8,  1.1,  0.2,  2]  # 敏捷
  158.   ENEMY_TYPE_HIT = [1,   1.3,  1.1,  1.5,  1.8,  1 ]       # 命中率
  159.   ENEMY_TYPE_EVA = [1,   1,    1,    0.9,  1.1,  0 ]       # 闪躲率
  160.                                # BOSS的命中率和闪躲率为默认最高的95%
  161.  
  162. end
  163.  
  164. class Game_Party
  165.   def avg_number(number, level=nil)
  166.     average = 0
  167.     for i in @actors
  168.       actor = level ? $data_actors[i] : $game_actors[i]
  169.       case number
  170.       when "level"
  171.         average += $game_actors[i].level
  172.       when "exp"
  173.         average += $game_actors[i].next_exp_s
  174.       when "hp"
  175.         if level
  176.           average += actor.parameters[0, level]
  177.         else
  178.           average += actor.maxhp
  179.         end
  180.       when "mp"
  181.         if level
  182.           average += actor.parameters[1, level]
  183.         else
  184.           average += actor.maxmp
  185.         end
  186.       when "atk"
  187.         if level
  188.           average += actor.parameters[2, level]
  189.         else
  190.           average += actor.atk
  191.         end
  192.       when "def"
  193.         if level
  194.           average += actor.parameters[3, level]
  195.         else
  196.           average += actor.def
  197.         end
  198.       when "spi"
  199.         if level
  200.           average += actor.parameters[4, level]
  201.         else
  202.           average += actor.spi
  203.         end
  204.       when "agi"
  205.         if level
  206.           average += actor.parameters[5, level]
  207.         else
  208.           average += actor.agi
  209.         end
  210.       when "hit"
  211.         average += $game_actors[i].hit
  212.       when "eva"
  213.         average += $game_actors[i].eva
  214.       end
  215.     end
  216.     average /= members.size
  217.     return average
  218.   end
  219.  
  220.   # 獲取平均等級
  221.   def avg_level
  222.     return avg_number("level")
  223.   end
  224.  
  225.   # 獲取平均升級經驗
  226.   def avg_exp_needed
  227.     return avg_number("exp")
  228.   end
  229.  
  230.   def avg_hp_max(level=nil)
  231.     return avg_number("hp", level)
  232.   end
  233.  
  234.   def avg_mp_max(level=nil)
  235.     return avg_number("mp", level)
  236.   end
  237.  
  238.   def avg_atk(level=nil)
  239.     return avg_number("atk", level)
  240.   end
  241.  
  242.   def avg_def(level=nil)
  243.     return avg_number("def", level)
  244.   end
  245.  
  246.   def avg_spi(level=nil)
  247.     return avg_number("spi", level)
  248.   end
  249.  
  250.   def avg_agi(level=nil)
  251.     return avg_number("agi", level)
  252.   end
  253.  
  254.   def avg_hit
  255.     return avg_number("hit")
  256.   end
  257.  
  258.   def avg_eva
  259.     return avg_number("eva")
  260.   end
  261. end
  262.  
  263. class RPG::Enemy
  264.   # 获取等级
  265.   def get_level
  266.     elevel = 0
  267.     self.note.split(/[\r\n]+/).each { |line|
  268.       if line =~ /\[(level|等級|等级) {1,2}\]/
  269.         a = line.split(/ /)[1]
  270.         elevel += a.to_i
  271.       elsif line =~ /\[player_level|主角等級|主角等级\]/
  272.         elevel += $game_party.avg_level
  273.       end
  274.     }
  275.     return elevel==0 ? nil : elevel
  276.   end
  277.  
  278.   # 获取强度
  279.   def get_str
  280.     self.note.split(/[\r\n]+/).each { |line|
  281.       if line =~ /\[(strength|強度|强度) \w+\]/
  282.         a = line.split(/ /)[1]
  283.         d = ""
  284.         while ((c = a.slice!(/./m)) != nil)
  285.           d += c if c != "]"
  286.         end
  287.         return d
  288.       end
  289.     }
  290.     return "default"
  291.   end
  292.  
  293.   def get_enemy_type
  294.     self.note.split(/[\r\n]+/).each { |line|
  295.       if line =~ /\[(type|類型|类型) \w+\]/
  296.         a = line.split(/ /)[1]
  297.         d = ""
  298.         while ((c = a.slice!(/./m)) != nil)
  299.           d += c if c != "]"
  300.         end
  301.         return d
  302.       end
  303.     }
  304.     return "default"
  305.   end
  306.  
  307.   # 计算等级
  308.   def level
  309.     if auto_level?
  310.       if auto_str?
  311.         return [get_level + str, 1].max
  312.       else
  313.         return get_level
  314.       end
  315.     elsif auto_str?
  316.       elevel = $game_party.avg_level + str
  317.       return [elevel, 1].max
  318.     end
  319.   end
  320.  
  321.   def str
  322.     estr = Auto_Enemy::STRENGTH[get_str]
  323.     if estr != nil
  324.       return estr
  325.     else
  326.       return Auto_Enemy::STRENGTH["default"]
  327.     end
  328.   end
  329.  
  330.   def type
  331.     if $enemies_class != nil
  332.       return $enemies_class[@enemy_id] if $enemies_class[@enemy_id]!=nil
  333.     end
  334.     return Auto_Enemy::ENEMY_TYPE[get_enemy_type]
  335.   end
  336.  
  337.   def auto_level?
  338.     return get_level
  339.   end
  340.   def auto_str?
  341.     return get_str
  342.   end
  343.   def auto_setup?
  344.     return (auto_level? or auto_str?)
  345.   end
  346. end
  347.  
  348. #==============================================================================
  349. # ■ Game_Enemy
  350. #------------------------------------------------------------------------------
  351. #  处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的 内部使用。
  352. #==============================================================================
  353.  
  354. class Game_Enemy < Game_Battler
  355.   #--------------------------------------------------------------------------
  356.   # ● 获取基本体力最大值
  357.   #--------------------------------------------------------------------------
  358.   def base_maxhp
  359.     if enemy.auto_setup?
  360.       enemy_maxhp = $game_party.avg_hp_max(enemy.level)
  361.       if enemy.type == -1
  362.         enemy_maxhp *= (1 + rand(0))
  363.       else
  364.         enemy_maxhp *= Auto_Enemy::ENEMY_TYPE_HP[enemy.type]
  365.       end
  366.       enemy_maxhp = enemy_maxhp.to_i
  367.       enemy_maxhp += rand(10)
  368.       return enemy_maxhp
  369.     else
  370.       return enemy.maxhp
  371.     end
  372.   end
  373.   #--------------------------------------------------------------------------
  374.   # ● 获取基本魔力最大值
  375.   #--------------------------------------------------------------------------
  376.   def base_maxmp
  377.     if enemy.auto_setup?
  378.       enemy_maxmp = $game_party.avg_mp_max(enemy.level)
  379.       if enemy.type == -1
  380.         enemy_maxmp *= (1 + rand(0))
  381.       else
  382.         enemy_maxmp *= Auto_Enemy::ENEMY_TYPE_MP[enemy.type]
  383.       end
  384.       enemy_maxmp = enemy_maxmp.to_i
  385.       enemy_maxmp += rand(5)
  386.       return enemy_maxmp
  387.     else
  388.       return enemy.maxmp
  389.     end
  390.   end
  391.   #--------------------------------------------------------------------------
  392.   # ● 获取基本攻击力
  393.   #--------------------------------------------------------------------------
  394.   def base_atk
  395.     if enemy.auto_setup?
  396.       enemy_atk = $game_party.avg_atk(enemy.level)
  397.       if enemy.type == -1
  398.         enemy_atk *= (1 + rand(0))
  399.       else
  400.         enemy_atk *= Auto_Enemy::ENEMY_TYPE_ATK[enemy.type]
  401.       end
  402.       enemy_atk = enemy_atk.to_i
  403.       enemy_atk += rand(5)
  404.       return enemy_atk
  405.     else
  406.       return enemy.atk
  407.     end
  408.   end
  409.   #--------------------------------------------------------------------------
  410.   # ● 获取基本防御力
  411.   #--------------------------------------------------------------------------
  412.   def base_def
  413.     if enemy.auto_setup?
  414.       enemy_def = $game_party.avg_def(enemy.level)
  415.       if enemy.type == -1
  416.         enemy_def *= (1 + rand(0))
  417.       else
  418.         enemy_def *= Auto_Enemy::ENEMY_TYPE_DEF[enemy.type]
  419.       end
  420.       enemy_def = enemy_def.to_i
  421.       enemy_def += rand(5)
  422.       return enemy_def
  423.     else
  424.       return enemy.def
  425.     end
  426.   end
  427.   #--------------------------------------------------------------------------
  428.   # ● 获取基本精神力
  429.   #--------------------------------------------------------------------------
  430.   def base_spi
  431.     if enemy.auto_setup?
  432.       enemy_spi = $game_party.avg_spi(enemy.level)
  433.       if enemy.type == -1
  434.         enemy_spi *= (1 + rand(0))
  435.       else
  436.         enemy_spi *= Auto_Enemy::ENEMY_TYPE_SPI[enemy.type]
  437.       end
  438.       enemy_spi = enemy_spi.to_i
  439.       enemy_spi += rand(5)
  440.       return enemy_spi
  441.     else
  442.       return enemy.spi
  443.     end
  444.   end
  445.   #--------------------------------------------------------------------------
  446.   # ● 获取基本敏捷
  447.   #--------------------------------------------------------------------------
  448.   def base_agi
  449.     if enemy.auto_setup?
  450.       enemy_agi = $game_party.avg_agi(enemy.level)
  451.       if enemy.type == -1
  452.         enemy_agi *= (1 + rand(0))
  453.       else
  454.         enemy_agi *= Auto_Enemy::ENEMY_TYPE_AGI[enemy.type]
  455.       end
  456.       enemy_agi = enemy_agi.to_i
  457.       enemy_agi += rand(5)
  458.       return enemy_agi
  459.     else
  460.       return enemy.agi
  461.     end
  462.   end
  463.   #--------------------------------------------------------------------------
  464.   # ● 获取命中率
  465.   #--------------------------------------------------------------------------
  466.   def hit
  467.     if enemy.auto_setup?
  468.       enemy_hit = $game_party.avg_hit
  469.       if enemy.type == -1
  470.         enemy_hit *= (1 + rand(0))
  471.       elsif enemy.type == 6
  472.         enemy_hit = 95
  473.       else
  474.         enemy_hit *= Auto_Enemy::ENEMY_TYPE_HIT[enemy.type]
  475.       end
  476.       return [[enemy_hit.to_i, 95].min, 50].max
  477.     else
  478.       return enemy.hit
  479.     end
  480.   end
  481.   #--------------------------------------------------------------------------
  482.   # ● 获取闪躲率
  483.   #--------------------------------------------------------------------------
  484.   def eva
  485.     if enemy.auto_setup?
  486.       enemy_eva = $game_party.avg_eva
  487.       if enemy.type == -1
  488.         enemy_eva *= (1 + rand(0))
  489.       elsif enemy.type == 6
  490.         enemy_eva = 95
  491.       else
  492.         enemy_eva *= Auto_Enemy::ENEMY_TYPE_EVA[enemy.type]
  493.       end
  494.       return [[enemy_eva.to_i, 95].min, 0].max
  495.     else
  496.       return enemy.eva
  497.     end
  498.   end
  499.   #--------------------------------------------------------------------------
  500.   # ● 获取经验值
  501.   #--------------------------------------------------------------------------
  502.   def exp
  503.     if enemy.auto_setup?
  504.       exp = ($game_party.avg_exp_needed * Auto_Enemy::EXPERIENCE).to_i
  505.       exp =* enemy.type == 6 ? Auto_Enemy::BOSS_EXP : 1
  506.       exp += rand(10)
  507.       return exp
  508.     else
  509.       return enemy.exp
  510.     end
  511.   end  
  512. end
  513.  
  514. class Game_Interpreter
  515.   def make_enemy_database
  516.     for i in 1...$data_enemies.size
  517.       game_enemy = Game_Enemy.new(1, i)
  518.       if $data_enemies[i].auto_setup?
  519.         $data_enemies[i].maxhp      = game_enemy.base_maxhp
  520.         $data_enemies[i].maxmp      = game_enemy.base_maxmp
  521.         $data_enemies[i].atk        = game_enemy.base_atk
  522.         $data_enemies[i].def        = game_enemy.base_def
  523.         $data_enemies[i].spi        = game_enemy.base_spi
  524.         $data_enemies[i].agi        = game_enemy.base_agi
  525.         $data_enemies[i].hit        = game_enemy.hit
  526.         $data_enemies[i].eva        = game_enemy.eva
  527.         $data_enemies[i].exp        = game_enemy.exp
  528.         if $lazy_item_setup
  529.           $data_enemies[i].drop_item1 = game_enemy.drop_item1
  530.           $data_enemies[i].drop_item2 = game_enemy.drop_item2
  531.         end
  532.       end
  533.     end
  534.     save_data($data_enemies,"Data/Enemies.rvdata") if Auto_Enemy::WRITE_2_DATABASE
  535.   end
  536. end


源引用https://rpg.blue/forum.php?mod=viewthread&tid=81930

Lv3.寻梦者

梦石
0
星屑
1293
在线时间
995 小时
注册时间
2014-12-14
帖子
3016

开拓者

2
发表于 2016-2-16 16:15:18 | 只看该作者
好像没人回答了。试试这样吧:
1.将该脚本复制于va工程内
2.运行测试,根据提示修改脚本
3.调用脚本内各种功能,测试有无其他bug

方法2:
高分悬赏或联系大触解决这个问题。

目测这是个非常耗时间的事情,因此很可能不会有人来回答了。快快选择在下的答案,结贴吧!


点评

thanks么么哒  发表于 2016-2-19 16:48
【RMVA教程】
---------------------
欲买桂花同载酒,终不似,少年游.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-6 13:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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