查看: 99|回复: 0

[转载发布] 【解谜游戏必备】简易使用物品事件。

[复制链接]
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 37 天

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元一千年八月六日(秋) | 显示全部楼层 |阅读模式
    以往我们制作特定物品在特定地点使用的时候,都会很麻烦,一般都是靠公共事件判断坐标或者在目标附近进行开关操作
    例如使用物品“钥匙”,打开面前的门,如何设置最方便?
    如果下面的图看不懂请翻到下面下载范例.



    设置如图
    使用详细
    当任何一件道具命中率为0的时候,该道具就会被归为任务类道具.
    事件设置方法,任何一个事件页行走图为空并且勾选了允许穿透选项,该事件页则
    无论如何都不会被执行,被归类为任务事件.
    使用方法,在任务事件页第一行必须是条件分歧,物品持有时(需要使用的道具物品)
    详细见本范例.
    当物品不满足使用条件,并且公共事件不为空的时候,执行公共事件.
    使用道具时需要面对或者站在事件上.
    以下范例


    以下代码
    1. =begin 脚本来自rpg.blue 当任何一件道具命中率为0的时候,该道具就会被归为任务类道具. 事件设置方法,任何一个事件页行走图为空并且勾选了允许穿透选项,该事件页则 无论如何都不会被执行,被归类为任务事件. 使用方法,在任务事件页第一行必须是条件分歧,物品持有时(需要使用的道具物品) 详细见本范例. 当物品不满足使用条件,并且公共事件不为空的时候,执行公共事件. 使用道具时需要面对或者站在事件上.=endmodule Fux2  D = {2=>[0,1],4=>[-1,0],6=>[1,0],8=>[0,-1]}endclass Scene_Item    include Fux2  alias uu update_item  def update_item    if Input.trigger?(Input::C)      xa = Fux2::D[$game_player.direction][0]      ya = Fux2::D[$game_player.direction][1]      @item = @item_window.item      if @item && @item.hit == 0        $game_map.events.values.each do |event|          if $game_player.x == event.x && $game_player.y == event.y            event.event.pages.each do |page|              if page.graphic.character_name == "" && page.through == true && page.list[0].code == 111 && page.list[0].parameters[1] == @item.id                $game_system.map_interpreter.setup(page.list,event.id)                $scene = Scene_Map.new                return              end            end          elsif $game_player.x+xa == event.x && $game_player.y+ya == event.y            event.event.pages.each do |page|              if page.graphic.character_name == "" && page.through == true && page.list[0].code == 111 && page.list[0].parameters[1] == @item.id                $game_system.map_interpreter.setup(page.list,event.id)                $scene = Scene_Map.new                return              end            end          end        end        if @item.common_event_id > 0          $game_temp.common_event_id = @item.common_event_id          $scene = Scene_Map.new          return        end        return      end    end    uu  end  endclass Game_System  attr_accessor:map_interpreter  endclass Game_Event < Game_Character    def parameters    return @parameters  end  def event    return @event  end  def code    return @code  end  def trigger    return @trigger  end  endclass Game_Event < Game_Character    def refresh    new_page = nil    unless @erased      for page in @event.pages.reverse        c = page.condition        if page.graphic.character_name == "" && page.through == true          next        end        if c.switch1_valid          if $game_switches[c.switch1_id] == false            next          end        end        if c.switch2_valid          if $game_switches[c.switch2_id] == false            next          end        end        if c.variable_valid          if $game_variables[c.variable_id] < c.variable_value            next          end        end        if c.self_switch_valid          key = [@map_id, @event.id, c.self_switch_ch]          if $game_self_switches[key] != true            next          end        end        new_page = page        break      end    end    if new_page == @page      return    end    @page = new_page    clear_starting    if @page == nil      @tile_id = 0      @character_name = ""      @character_hue = 0      @move_type = 0      @through = true      @trigger = nil      @list = nil      @interpreter = nil      return    end    @tile_id = @page.graphic.tile_id    @character_name = @page.graphic.character_name    @character_hue = @page.graphic.character_hue    if @original_direction != @page.graphic.direction      @direction = @page.graphic.direction      @original_direction = @direction      @prelock_direction = 0    end    if @original_pattern != @page.graphic.pattern      @pattern = @page.graphic.pattern      @original_pattern = @pattern    end    @opacity = @page.graphic.opacity    @blend_type = @page.graphic.blend_type    @move_type = @page.move_type    @move_speed = @page.move_speed    @move_frequency = @page.move_frequency    @move_route = @page.move_route    @move_route_index = 0    @move_route_forcing = false    @walk_anime = @page.walk_anime    @step_anime = @page.step_anime    @direction_fix = @page.direction_fix    @through = @page.through    @always_on_top = @page.always_on_top    @trigger = @page.trigger    @list = @page.list    @interpreter = nil    if @trigger == 4      @interpreter = Interpreter.new    end    check_event_trigger_auto  end  end#rpg.blue复制代码
    复制代码
                 本帖来自P1论坛作者烁灵,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=189882  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    本帖子中包含更多资源

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

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

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-5-14 07:45 , Processed in 0.062463 second(s), 44 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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