扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 125|回复: 0

[转载发布] 转到事件的某事件页

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    昨天 18:01
  • 签到天数: 114 天

    连续签到: 4 天

    [LV.6]常住居民II

    2339

    主题

    404

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10635
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13406

    灌水之王

    发表于 2024-4-19 23:06:33 | 显示全部楼层 |阅读模式
    额,看起来好像没有这种功能的脚本。。。
    然后又被设置事件的开关弄迷糊了。所以有了这个。
    如果本脚本涉嫌侵权啊,抄袭啊,或者有bug啊,请告知。{:8_459:}
    额,不要在意奇特的变量名,不要在意奇特的方法名。请随便更改成更好的命名
    RUBY 代码
    1. class Game_Event < Game_Character
    2.   #--------------------------------------------------------------------------
    3.   # ● 定义实例变量
    4.   #--------------------------------------------------------------------------
    5.   attr_reader   :trigger                  # 目标
    6.   attr_reader   :list                     # 执行内容
    7.   attr_reader   :starting                 # 启动中标志
    8.   attr_accessor :pagenum          #事件页的编号
    9.   attr_accessor :startpage           #要转到的事件页编号
    10.   #--------------------------------------------------------------------------
    11.   # ● 初始化对像
    12.   #     map_id : 地图 ID
    13.   #     event  : 事件 (RPG::Event)
    14.   #--------------------------------------------------------------------------
    15.   def initialize(map_id, event)
    16.     super()
    17.     @map_id = map_id
    18.     @event = event
    19.     @id = @event.id
    20.     @erased = false
    21.     @starting = false
    22.     @through = true
    23.     # 初期位置的移动
    24.     moveto(@event.x, @event.y)
    25.     @pagenum = nil
    26.     @startpage = 0
    27.     refresh
    28.   end
    29.   #--------------------------------------------------------------------------
    30.   # ● 启动事件
    31.   #--------------------------------------------------------------------------
    32.   # 启动事件的某事件页
    33.   def start(num = nil)
    34.     @startpage = num if num != nil
    35.     refresh if num != nil
    36.     # 执行内容不为空的情况下
    37.     if@list != niland@list.size > 1
    38.       @starting = true
    39.     end
    40.   end
    41.   # 变成事件的某事件页
    42.   def stpage(num = nil)
    43.     @startpage = num if num != nil
    44.     refresh if num != nil
    45.   end
    46.   #--------------------------------------------------------------------------
    47.   # ● 刷新
    48.   #--------------------------------------------------------------------------
    49.   def refresh
    50.     # 初始化本地变量 new_page
    51.     new_page = nil
    52.     # 无法暂时消失的情况下
    53.     unless@erased
    54.       # 从编号大的事件页按顺序调查
    55.       @pagenum = @event.pages.size + 1
    56.       for page in@event.pages.reverse
    57.         @pagenum -= 1
    58.         new_page = page if@startpage == @pagenum
    59.         breakif@startpage == @pagenum
    60.         nextif@startpage != 0
    61.         # 可以参考事件条件 c
    62.         c = page.condition
    63.         # 确认开关条件 1
    64.         if c.switch1_valid
    65.           if$game_switches[c.switch1_id] == false
    66.             next
    67.           end
    68.         end
    69.         # 确认开关条件 2
    70.         if c.switch2_valid
    71.           if$game_switches[c.switch2_id] == false
    72.             next
    73.           end
    74.         end
    75.         # 确认变量条件
    76.         if c.variable_valid
    77.           if$game_variables[c.variable_id] < c.variable_value
    78.             next
    79.           end
    80.         end
    81.         # 确认独立开关条件
    82.         if c.self_switch_valid
    83.           key = [@map_id, @event.id, c.self_switch_ch]
    84.           if$game_self_switches[key] != true
    85.             next
    86.           end
    87.         end
    88.         # 设置本地变量 new_page
    89.         new_page = page
    90.         # 跳出循环
    91.         break
    92.       end
    93.     end
    94.     # 与上次同一事件页的情况下
    95.     if new_page == @page
    96.       # 过程结束
    97.       return
    98.     end
    99.     # @page 设置为现在的事件页
    100.     @page = new_page
    101.     # 清除启动中标志
    102.     clear_starting
    103.     # 没有满足条件的页面的时候
    104.     if@page == nil
    105.       # 设置各实例变量
    106.       @tile_id = 0
    107.       @character_name = ""
    108.       @character_hue = 0
    109.       @move_type = 0
    110.       @through = true
    111.       @trigger = nil
    112.       @list = nil
    113.       @interpreter = nil
    114.       # 过程结束
    115.       return
    116.     end
    117.     # 设置各实例变量
    118.     @tile_id = @page.graphic.tile_id
    119.     @character_name = @page.graphic.character_name
    120.     @character_hue = @page.graphic.character_hue
    121.     if@original_direction != @page.graphic.direction
    122.       @direction = @page.graphic.direction
    123.       @original_direction = @direction
    124.       @prelock_direction = 0
    125.     end
    126.     if@original_pattern != @page.graphic.pattern
    127.       @pattern = @page.graphic.pattern
    128.       @original_pattern = @pattern
    129.     end
    130.     @opacity = @page.graphic.opacity
    131.     @blend_type = @page.graphic.blend_type
    132.     @move_type = @page.move_type
    133.     @move_speed = @page.move_speed
    134.     @move_frequency = @page.move_frequency
    135.     @move_route = @page.move_route
    136.     @move_route_index = 0
    137.     @move_route_forcing = false
    138.     @walk_anime = @page.walk_anime
    139.     @step_anime = @page.step_anime
    140.     @direction_fix = @page.direction_fix
    141.     @through = @page.through
    142.     @always_on_top = @page.always_on_top
    143.     @trigger = @page.trigger
    144.     @list = @page.list
    145.     @interpreter = nil
    146.     # 目标是 [并行处理] 的情况下
    147.     if@trigger == 4
    148.       # 生成并行处理用解释器
    149.       @interpreter = Interpreter.new
    150.     end
    151.     # 自动事件启动判定
    152.     check_event_trigger_auto
    153.   end
    154. end
    复制代码



    新人求关照。
    {:8_457:}
                 本帖来自P1论坛作者汪汪,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=378375  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    本帖子中包含更多资源

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

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

    使用道具 举报

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

    本版积分规则

    关闭

    幸运抽奖

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

    立即查看

    聊天机器人
    Loading...

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

    GMT+8, 2025-3-15 15:39 , Processed in 0.061629 second(s), 54 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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