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

Project1

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

[已经解决] 图鉴脚本怎么设置指定敌人的类型

[复制链接]

Lv1.梦旅人

梦石
0
星屑
126
在线时间
21 小时
注册时间
2018-12-8
帖子
9
跳转到指定楼层
1
发表于 2018-12-9 11:07:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 VIPArcher 于 2019-1-9 00:06 编辑

图鉴脚本怎么设置指定敌人的类型
RUBY 代码复制
  1. module Snstar
  2.   module EnemyList
  3.     # 敌人类型      0       1       2       3       4
  4.     ENEMY_TYPE = ["动物", "怪物", "人形", "其他", "BOSS"]
  5.     ENEMY_TYPE_DEFAULT = 0       # 敌人的默认类型
  6.     ENCOUNTER_PERCENT = 5        # 敌人现身所提升的辨识度
  7.     DEFEAT_PERCENT = 5           # 敌人战败所提升的辨识度
  8.     TEST_PERCENT = 5             # 测试用调整的辨识度
  9.     INCLUDE_ALL_CATEGORY = false # 是否包含“全部”类型
  10.     ALL_CATEGORY_TEXT = "全部"   # “全部”类型的文字
  11.     ENEMY_MORE_INFO_BUTTON = :X  # 显示敌人更多资讯的按键
  12.     ENEMY_MORE_INFO = false      # 是否显示更多讯息(扩充用)
  13.  
  14.     DRAW_ENEMY_ICON = false # 需要使用绘制单张图标才能使用
  15.  
  16.     # 敌人图像大小限定
  17.     ENEMY_IMAGE_MAX_WIDTH = 170  # 敌人图像宽度限定
  18.     ENEMY_IMAGE_MAX_HEIGHT = 192 # 敌人图像高度限定
  19.     ENEMY_IMAGE_FOLDER = "Graphics/EnemyImages/" # 敌人指定图像资料夹
  20.     ENEMY_HUE_SYNC_DB = false # 敌人指定图像是否使用资料库设定的色相
  21.  
  22.     # 文字设定
  23.     ENEMY_LIST_COMMAND_TEXT = "图鉴" # 主选单命令用字
  24.     ENEMY_LIST_SWITCH_ID    = 0        # 主选单命令显示的控制开关
  25.     ENEMY_LIST_ENABLE_ID    = 0        # 主选单命令有效的控制开关
  26.  
  27.     ENEMY_PERCENT_VOCAB = "辨识度"   # 辨识度用字
  28.     ENEMY_PERCENT_BASE_COLOR = Color.new(0, 255, 0)#Color.new(0, 0, 0)
  29.     ENEMY_PERCENT_FILL_COLOR = Color.new(255, 255, 0)
  30.     NO_DISPLAY_MASK = "??"         # 无法显示时的替代文字
  31.     EST_DISPLAY_MASK = "大约是%s"    # 显示估算数值时的文字
  32.     DROP_GOLD_VOCAB  = "携带金钱"
  33.     DROP_ITEM_VOCAB  = "掉落物"
  34.     FEA_WEAK_ELE_RATE = "弱点"    # 属性有效度 > 100% 的文字
  35.     FEA_RES_ELE_RATE  = "抵抗"    # 属性有效度 < 100% 的文字
  36.     FEA_DEBUFF_RATE   = "弱化属性"    # 弱化属性的文字
  37.     FEA_ATK_ELEMENT   = "属性"    # 攻击附带属性的文字
  38.  
  39.     # 辨识度提升数值
  40.     PERCENTAGE_ON_ENCOUNTER = 10 # 敌人现身时提升辨识度
  41.     PERCENTAGE_ON_DEFEAT    = 10 # 敌人落败时提升辨识度
  42.  
  43.     # 辨识度显示参数数值
  44.     NAME_DISPLAY_PERC   = 1   # 名称显示百分比
  45.     HP_EST_DISPLAY_PERC = 5   # HP估算显示百分比
  46.     HP_DISPLAY_PERC     = 10  # HP显示百分比
  47.     MP_EST_DISPLAY_PERC = 10  # MP估算显示百分比
  48.     MP_DISPLAY_PERC     = 15  # MP显示百分比
  49.     ATK_DISPLAY_PERC    = 50  # 攻击力显示百分比
  50.     DEF_DISPLAY_PERC    = 50  # 防御力显示百分比
  51.     MAT_DISPLAY_PERC    = 75  # 魔法攻击显示百分比
  52.     MDF_DISPLAY_PERC    = 75  # 魔法防御显示百分比
  53.     AGI_DISPLAY_PERC    = 75  # 敏捷显示百分比
  54.     LUK_DISPLAY_PERC    = 75  # 幸运显示百分比
  55.     GOLD_DISPLAY_PERC   = 100 # 掉落金钱显示百分比
  56.     ITEM_DISPLAY_PERC   = 100 # 掉落物显示百分比
  57.     #TYPE_BOSS
  58.   end
  59. end
  60. class RPG::Enemy < RPG::BaseItem
  61.   include Snstar::EnemyList
  62.   def list_type
  63.     self.note.split(/[\r\n]+/).each{ |line|
  64.       if line =~ /\[(?:ltype) (\d+)\]/
  65.         return $1 ? $1.to_i : ENEMY_TYPE_DEFAULT
  66.       end}
  67.     return ENEMY_TYPE_DEFAULT
  68.   end
  69.   def list_image
  70.     self.note.split(/[\r\n]+/).each{ |line|
  71.       if line =~ /\[(?:limage) (\S+)\]/
  72.         return $1
  73.       end}
  74.     return nil # battler_name
  75.   end
  76.   def no_list?
  77.     self.note.split(/[\r\n]+/).each{ |line|
  78.       return true if line =~ /\[no_list\]/
  79.       }
  80.     return false
  81.   end
  82. end
  83. class Game_Party < Game_Unit
  84.   include Snstar::EnemyList
  85.   #--------------------------------------------------------------------------
  86.   # ● 初始化
  87.   #--------------------------------------------------------------------------
  88.   alias enemy_list_initialize initialize
  89.   def initialize
  90.     enemy_list_initialize
  91.     @enemy_know_percentage=[]
  92.     $data_enemies.each{ |e|
  93.       next unless e
  94.       set_enemy_percentage(e.id, 0)
  95.     }
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 设置敌人百分比
  99.   #--------------------------------------------------------------------------
  100.   def set_enemy_percentage(e_id, percentage=100)
  101.     temp_p = [[0, percentage].max ,100].min
  102.     @enemy_know_percentage[e_id] = temp_p
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 获取敌人百分比
  106.   #--------------------------------------------------------------------------
  107.   def enemy_percent(e_id)
  108.     return 0 unless seen_enemy?(e_id)
  109.     return @enemy_know_percentage[e_id]
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 提升敌人百分比
  113.   #--------------------------------------------------------------------------
  114.   def see_enemy(e_id, percentage = 1)
  115.     temp_p = @enemy_know_percentage[e_id] + percentage
  116.     set_enemy_percentage(e_id, temp_p)
  117.   end
  118.   def know_enemy(e_id)
  119.     set_enemy_percentage(e_id, 100)
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 判断是否见过敌人
  123.   #--------------------------------------------------------------------------
  124.   def seen_enemy?(e_id)
  125.     return @enemy_know_percentage[e_id] > 0
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● 判断是否熟知敌人
  129.   #--------------------------------------------------------------------------
  130.   def known_enemy?(e_id, percentage=100)
  131.     return false unless seen_enemy?(e_id)
  132.     return enemy_percent(e_id) == percentage
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 战斗开始提升辨识度
  136.   #--------------------------------------------------------------------------
  137.   alias enemy_list_on_battle_start on_battle_start
  138.   def on_battle_start
  139.     enemy_list_on_battle_start
  140.     $game_troop.members.each{ |m|
  141.       e_id = m.enemy.id
  142.       see_enemy(e_id, ENCOUNTER_PERCENT)
  143.     }
  144.   end
  145. end
  146. class Game_Enemy < Game_Battler
  147.   #--------------------------------------------------------------------------
  148.   # ● 敌人战败提升辨识度
  149.   #--------------------------------------------------------------------------
  150.   alias enemy_list_perform_collapse_effect perform_collapse_effect
  151.   def perform_collapse_effect
  152.     enemy_list_perform_collapse_effect
  153.     $game_party.see_enemy(@enemy_id, Snstar::EnemyList::DEFEAT_PERCENT)
  154.   end
  155. end
  156. class Game_Interpreter
  157.   #--------------------------------------------------------------------------
  158.   # ● 呼叫敌人图鉴场景
  159.   #--------------------------------------------------------------------------
  160.   def call_enemy_list
  161.     SceneManager.call(Scene_List)
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 提升敌人辨识度
  165.   #--------------------------------------------------------------------------
  166.   def gain_enemy_percentage(e_id, per)
  167.     $game_party.see_enemy(e_id, per)
  168.   end
  169. end

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

2
发表于 2018-12-9 15:18:52 | 只看该作者
在敌人的备注栏写[ltype i]
i的数字对应ENEMY_TYPE[i]的敌人类型

评分

参与人数 1星屑 +10 收起 理由
VIPArcher + 10 认可答案

查看全部评分

用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
126
在线时间
21 小时
注册时间
2018-12-8
帖子
9
3
 楼主| 发表于 2018-12-9 17:07:33 | 只看该作者
KB.Driver 发表于 2018-12-9 15:18
在敌人的备注栏写[ltype i]
i的数字对应ENEMY_TYPE的敌人类型

感谢,不过为什么是 ltype 呢,算了,对就行

点评

def list_type self.note.split(/[\r\n]+/).each{ |line| if line =~ /\[(?:ltype) (\d+)\]/  发表于 2018-12-9 17:12
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-25 03:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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