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

[转载发布] Remember Event Position

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

    连续签到: 2 天

    [LV.7]常住居民III

    9068

    主题

    864

    回帖

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

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

    灌水之王

    发表于 3 天前 | 显示全部楼层 |阅读模式

    Remember Event Position








    Author: Shaz



    Introduction

    If you move an event on the map, then leave the map and return, the event, by default, goes back to its original place (where you put it when designing the map).  To get around that, you have to have another parallel process event run every time the map loads, to see if the event has been moved, and if so, put it in its correct position.  If you have a lot of these in your game, that's a lot of additional events just checking where events should be.  I dislike lots of "setup" events sitting around on maps, so devised this little script to let you tell an event to save its position, and go back to that position next time the map is loaded.

    How to Use

    Paste this script into its own slot in the Materials section.

    Script

    Spoiler                Code:       
    1. #--------------------------------------------------
    2. # Remember Event Position 1.0
    3. #--------------------------------------------------
    4. #
    5. # Author: Shaz
    6. #
    7. # Description: This script lets you set the position and direction
    8. #              where an event will appear next time the map is
    9. #              loaded.  Events will appear in this new position
    10. #              rather than the place they were put during design.
    11. #
    12. #--------------------------------------------------
    13. #
    14. # Installation:
    15. #
    16. # Copy into a new script slot in the Materials section
    17. #
    18. #--------------------------------------------------
    19. #
    20. # Use:
    21. #
    22. # Examples below show syntax for an Event Command on an Event Tab.
    23. #   You can use @event_id for the current event, or specify an event number.
    24. # To execute from within a Set Move Route command, omit the
    25. #   $game_map.events[@event_id]. part, and just use save_pos() and forget_pos().
    26. #
    27. # To tell an event to move to its current position the next time
    28. # the map is loaded, execute the following in a script call:
    29. #   $game_map.events[@event_id].save_pos()
    30. #
    31. # To tell an event to move to a particular position (not its
    32. # current position) the next time the map is loaded,
    33. # execute the following in a script call:
    34. #   $game_map.events[@event_id].save_pos(1, 2, 8)
    35. # - the above will move the event to x=1, y=2, facing up
    36. #
    37. # To tell an event to forget its previously remembered position
    38. # and go back to its default position the next time time map
    39. # is loaded, execute the following in a script call:
    40. #   $game_map.events[@event_id].forget_pos()
    41. #--------------------------------------------------
    42. class Game_System
    43.   alias shaz_mem_position_gs_init initialize
    44.   attr_accessor :event_positions
    45.   def initialize
    46.     shaz_mem_position_gs_init
    47.     @event_positions = {}
    48.   end
    49. end
    50. # Check to ensure $game_system.event_positions exists (save files created
    51. # prior to this script being added would not have it initialized)
    52. class Game_Map
    53.   alias shaz_mem_positions_gm_init initialize
    54.   def initialize
    55.     shaz_mem_positions_gm_init
    56.     $game_system.event_positions = {} if !$game_system.event_positions
    57.   end
    58. end
    59. class Game_CharacterBase
    60.   attr_accessor
    61. end
    62. class Game_Event
    63.   alias shaz_mem_position_gcb_init initialize
    64.   def initialize(map_id, event)
    65.     shaz_mem_position_gcb_init(map_id, event)
    66.     if $game_system.event_positions.has_key?([map_id, @id])
    67.       mvx, mvy, mvdir = $game_system.event_positions[[map_id, @id]]
    68.       moveto(mvx, mvy)
    69.       set_direction(mvdir) if mvdir
    70.       @stop_count = 0
    71.       refresh
    72.     end
    73.   end
    74.   def save_pos(x = @x, y = @y, dir = @direction)
    75.     $game_system.event_positions[[@map_id, @id]] = [x, y, dir]
    76.   end
    77.   def forget_pos
    78.     $game_system.event_positions.delete([@map_id, @id])
    79.   end
    80. end
    复制代码





    How to Call

    SpoilerTo save the current event's position after a move route:



                    Code:       
    1. Set Move Route: This event (Wait)
    2.               : $>Move away from Player
    3.               : $>Script: save_pos()
    复制代码

    To save the current event's position, but not within a move route:

    (Conditional branch only used as part of the example - only the last line is relevant)



                    Code:       
    1. Conditional Branch: Switch [0001: Move Away] == ON
    2.   Set Move Route: This event (Wait)
    3.                 : $>Move away from Player
    4. Else
    5.   Set Move Route: This event (Wait)
    6.                 : $>Move toward Player
    7. Branch End
    8. Script: $game_map.events[@event_id].save_pos()
    复制代码

    To make a different event move to a set position when the map is next loaded:



                    Code:       
    1. Script: $game_map.events[4].save_pos(15, 6)
    复制代码





    FAQ

    Conditions

    May be used freely in any game, commercial or otherwise.  Please give credit.

    Please do not copy and post to other forums.

    Credits

    Shaz


    本贴来自国际rpgmaker官方论坛作者:Shaz处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/remember-event-position.1853/
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

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

    本版积分规则

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

    幸运抽奖

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

    立即查看

    聊天机器人
    Loading...

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

    GMT+8, 2026-8-8 12:26 , Processed in 0.091696 second(s), 52 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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