设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 108|回复: 0

[转载发布] Resident Evil ECG

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    2026-7-12 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    9071

    主题

    864

    回帖

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    58883
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    68848

    灌水之王

    发表于 2026-8-2 18:28:37 | 显示全部楼层 |阅读模式
    Want to have an ECG showing your health like Resident Evil? Well, now you can!
    This script creates a little window with just that at the corner of your screen.

    You need this image named "ECG" in the System folder:




    Script:
                    Ruby:       
    1. #==============================================================================
    2. # Resident Evil ECG v1.1
    3. # by R_Valkyrie
    4. #------------------------------------------------------------------------------
    5. # Free to use for non-commercial and commercial.
    6. #------------------------------------------------------------------------------
    7. # Turn ON switch[SWITCH_ID] to show and OFF to hide.
    8. # FINE    = above 50% hp
    9. # CAUTION = 25% - 50% hp
    10. # DANGER  = below 25% hp
    11. # POISON  = when inflicted with state(POISON_ID)
    12. #==============================================================================
    13. module ECG_Options
    14.   WINDOW_POSITION = 0  # 0 = top, 1 = bottom
    15.   WINDOW_SLIDE    = 24 # sliding speed for the window. set to 0 for instant.
    16.   SWITCH_ID       = 1
    17.   POISON_ID       = 2
    18. end
    19. class Window_ECG < Window_Base
    20.   include ECG_Options
    21.   def initialize
    22.     y = WINDOW_POSITION == 0 ? 0 : Graphics.height - 72
    23.     super(0, y, 104, 72)
    24.     @bitmap = Bitmap.new("Graphics/System/ECG")
    25.     @ecg_frame = 160
    26.   end
    27.   def draw_health(x, y)
    28.     bitmap = @bitmap
    29.     rect = Rect.new(ecg_status * 80, 0, 80, 48)
    30.     contents.blt(x, y, bitmap, rect)
    31.     draw_mask(x, y, 80, 48)
    32.     change_color(ecg_color)
    33.     draw_text(x + 2, y + 28, 100, line_height, actor_status)
    34.   end
    35.   def draw_mask(x, y, width, height)
    36.     actor = $game_party.leader
    37.     bitmap = @bitmap
    38.     if @ecg_frame <= 0
    39.       @ecg_frame = 80
    40.     else
    41.       @ecg_frame -= 1
    42.     end
    43.     rect = Rect.new(@ecg_frame, height, width, height)
    44.     contents.blt(x, y, bitmap, rect)
    45.   end
    46.   def ecg_color
    47.     actor = $game_party.leader
    48.     color = 3
    49.     color = 20 if actor.hp <= actor.mhp / 2
    50.     color = 18 if actor.hp <= actor.mhp / 4
    51.     color = 30 if actor.state?(POISON_ID)
    52.     return text_color(color)
    53.   end
    54.   def ecg_status
    55.     actor = $game_party.leader
    56.     state = 0
    57.     state = 1 if actor.hp <= actor.mhp / 2
    58.     state = 2 if actor.hp <= actor.mhp / 4
    59.     state = 3 if actor.state?(POISON_ID)
    60.     return state
    61.   end
    62.   def actor_status
    63.     actor = $game_party.leader
    64.     frame = @ecg_frame < 40 || @ecg_frame > 80 && @ecg_frame < 120
    65.     state = "FINE"
    66.     state = "CAUTION" if actor.hp <= actor.mhp / 2
    67.     state = "DANGER!" if actor.hp <= actor.mhp / 4
    68.     state = ""        if actor.hp <= actor.mhp / 4 && frame
    69.     state = "POISON"  if actor.state?(POISON_ID)
    70.     return state
    71.   end
    72.   def refresh
    73.     @ecg_frame = 160 if $game_switches[SWITCH_ID] == false
    74.     contents.clear
    75.     actor = $game_party.leader
    76.     contents.font.outline = false
    77.     contents.font.size = 18
    78.     draw_health(0, 0)
    79.   end
    80. end
    81. class Scene_Map < Scene_Base
    82.   include ECG_Options
    83.   alias create_all_windows_and_ecg create_all_windows
    84.   def create_all_windows
    85.     create_ecg_window
    86.     create_all_windows_and_ecg
    87.   end
    88.   def create_ecg_window
    89.     @ecg_viewport = Viewport.new
    90.     @ecg_window = Window_ECG.new
    91.     @ecg_window.viewport = @ecg_viewport
    92.     @ecg_window.viewport.ox = @ecg_window.width
    93.   end
    94.   def move_ecg_viewport(ox)
    95.     speed = WINDOW_SLIDE == 0 ? @ecg_window.width : WINDOW_SLIDE
    96.     current_ox = @ecg_viewport.ox
    97.     @ecg_viewport.ox = [ox, current_ox + speed].min if current_ox < ox
    98.     @ecg_viewport.ox = [ox, current_ox - speed].max if current_ox > ox
    99.   end
    100.   alias update_ecg update
    101.   def update
    102.     @ecg_window.refresh
    103.     new_ox = $game_switches[SWITCH_ID] == true ? 0 : @ecg_window.width
    104.     move_ecg_viewport(new_ox)
    105.     update_ecg
    106.   end
    107. end
    复制代码




    本贴来自国际rpgmaker官方论坛作者:R_Valkyrie处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/resident-evil-ecg.140980/

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-8-17 09:31 , Processed in 0.090734 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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