Project1

标题: 话说这段rgss2专用的插件怎么用这一行会报错。。。求大... [打印本页]

作者: 幻想党    时间: 2023-1-16 16:56
标题: 话说这段rgss2专用的插件怎么用这一行会报错。。。求大...
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Game_Interpreter(分割定義)
  3. #------------------------------------------------------------------------------
  4. #  是执行事件命令的解释器。这个类是game_map类,
  5. # game_troop类,在game_event类内部使用。
  6. #==============================================================================
  7. class Game_Interpreter
  8. #■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  9. #                 ゲーム進行                =
  10. #□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
  11. #============================================================================
  12. # ◆ 脚本:用于脚本 ◆
  13. #============================================================================
  14.   #--------------------------------------------------------------------------
  15.   # ● 変数の操作(定制)
  16.   #--------------------------------------------------------------------------
  17.   #--------------------------------------------------------------------------
  18.   # ● 获取玩家的X坐标
  19.   #--------------------------------------------------------------------------
  20.   def get_player_x(variable_id = 0)
  21.     character = get_character(-1) #-1是玩家的意思。
  22.     if variable_id > 0
  23.       $game_variables[variable_id] = character.x
  24.     end
  25.     return character.x
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 获取玩家的Y坐标
  29.   #--------------------------------------------------------------------------
  30.   def get_player_y(variable_id = 0)
  31.     character = get_character(-1) #-1是玩家的意思。
  32.     if variable_id > 0
  33.       $game_variables[variable_id] = character.y
  34.     end
  35.     return character.y
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 获取这个事件的X坐标
  39.   #--------------------------------------------------------------------------
  40.   def get_this_event_x(variable_id = 0)
  41.     character = get_character(0) #0表示这个事件。
  42.     if variable_id > 0
  43.       $game_variables[variable_id] = character.x
  44.     end
  45.     return character.x
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 获取这个事件的Y坐标
  49.   #--------------------------------------------------------------------------
  50.   def get_this_event_y(variable_id = 0)
  51.     character = get_character(0) #0表示这个事件。
  52.     if variable_id > 0
  53.       $game_variables[variable_id] = character.y
  54.     end
  55.     return character.y
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 获取包含特定名称的事件的X坐标
  59.   #--------------------------------------------------------------------------
  60.   def get_name_event_x(name = "",variable_id = 0)
  61.     event_id = 0
  62.     # 搜索相应的事件
  63.     events   = $game_map.events.values.find_all { |e| e.x == x && e.y == y }
  64.     event_id = (events.max { |a, b| a.id <=> b.id }).id unless events.empty?
  65.     character = get_character(event_id)
  66.     # 変数に代入
  67.     if variable_id > 0
  68.       $game_variables[variable_id] = character.x
  69.       $game_map.need_refresh = true
  70.     end
  71.     return character.x
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 获取包含特定名称的事件的Y坐标
  75.   #--------------------------------------------------------------------------
  76.   def get_name_event_y(name = "",variable_id = 0)
  77.     event_id = 0
  78.     # 該当するイベントを検索
  79.     events   = $game_map.events.values.find_all { |e| e.x == x && e.y == y }
  80.     event_id = (events.max { |a, b| a.id <=> b.id }).id unless events.empty?
  81.     character = get_character(event_id)
  82.     # 変数に代入
  83.     if variable_id > 0
  84.       $game_variables[variable_id] = character.y
  85.     end
  86.     return character.y
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 开关的操作(自定义)
  90.   #--------------------------------------------------------------------------
  91.   def operate_switches(operate,value,value2=0)
  92.     if value >= value2
  93.       #开关单体操作
  94.       case operate
  95.       when 0
  96.         #operate = 0 #开关OFF
  97.         $game_switches[value] = false
  98.       when 1
  99.         #operate = 1 #开关ON
  100.         $game_switches[value] = true
  101.       when 2
  102.         #operate = 2 #ON/OFF逆转
  103.         $game_switches[value] ^= true #逆转
  104.       end
  105.     else
  106.       #スイッチ一括操作
  107.       case operate
  108.       when 0
  109.         #operate = 0 #尽出OFF
  110.         for i in value .. value2   # 批量操作循环
  111.           $game_switches[i] = false
  112.         end
  113.       when 1
  114.         #operate = 1 #スイッチをON
  115.         for i in value .. value2   # 批量操作循环
  116.           $game_switches[i] = true
  117.         end
  118.       when 2
  119.         #operate = 2 #ON/OFFを逆転
  120.         for i in value .. value2   # 批量操作循环
  121.           $game_switches[i] ^= true #逆転
  122.         end
  123.       end
  124.     end
  125.     $game_map.need_refresh = true
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● 开关的操作
  129.   #打开指定ID的开关
  130.   #--------------------------------------------------------------------------
  131.   def on_switche(switche_id)
  132.     if switche_id != nil
  133.       $game_switches[switche_id] = true
  134.     end
  135.     $game_map.need_refresh = true
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ● 开关的操作
  139.   #关闭指定ID的开关
  140.   #--------------------------------------------------------------------------
  141.   def off_switche(switche_id)
  142.     if switche_id != nil
  143.       $game_switches[switche_id] = false
  144.     end
  145.     $game_map.need_refresh = true
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ● 开关的操作
  149.   #指定ID的开关的ON/OFF逆转
  150.   #--------------------------------------------------------------------------
  151.   def change_switche(switche_id)
  152.     if switche_id != nil
  153.       $game_switches[switche_id] ^= true #スイッチの逆転
  154.     end
  155.     $game_map.need_refresh = true
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● 开关的操作
  159.   #打开指定ID的开关
  160.   #--------------------------------------------------------------------------
  161.   def on_multi_switches(value,value2)
  162.     if value > value2
  163.       sw_id = value2
  164.       sw_id2 = value
  165.     else
  166.       sw_id = value
  167.       sw_id2 = value2
  168.     end
  169.     for i in sw_id .. sw_id2
  170.       $game_switches[i] = true
  171.     end
  172.     $game_map.need_refresh = true
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● スイッチの一括操作
  176.   #关闭指定ID的开关
  177.   #--------------------------------------------------------------------------
  178.   def off_multi_switches(value,value2)
  179.     if value > value2
  180.       sw_id = value2
  181.       sw_id2 = value
  182.     else
  183.       sw_id = value
  184.       sw_id2 = value2
  185.     end
  186.     for i in sw_id .. sw_id2
  187.       $game_switches[i] = false
  188.     end
  189.     $game_map.need_refresh = true
  190.   end
  191.   #--------------------------------------------------------------------------
  192.   # ● スイッチの一括操作
  193.   #指定IDのスイッチのON/OFF逆転
  194.   #--------------------------------------------------------------------------
  195.   def change_multi_switches(value,value2)
  196.     if value > value2
  197.       sw_id = value2
  198.       sw_id2 = value
  199.     else
  200.       sw_id = value
  201.       sw_id2 = value2
  202.     end
  203.     for i in sw_id .. sw_id2
  204.       $game_switches[i] ^= true
  205.     end
  206.     $game_map.need_refresh = true
  207.     return true
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● 获取第一位参与者的ID
  211.   #--------------------------------------------------------------------------
  212.   def get_top_actor_id(variable_id = 0)
  213.     actor = $game_party.members[0]
  214.     # 変数に代入
  215.     if variable_id > 0
  216.       $game_variables[variable_id] = actor.id
  217.     end
  218.     return actor.id
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ● 取得最前面的演员的武器ID
  222.   #--------------------------------------------------------------------------
  223.   def get_top_actor_weapon_id(variable_id = 0)
  224.     actor = $game_party.members[0]
  225.     # 変数に代入
  226.     if variable_id > 0
  227.       $game_variables[variable_id] = actor.weapon_id
  228.     end
  229.     return actor.weapon_id
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● 取得第一位演员的名字
  233.   #演员的名字一般是字符串。变量的操作,除了代入以外的数量的增减
  234.   #进行操作的话会出错,请注意。
  235.   #--------------------------------------------------------------------------
  236.   def get_top_actor_name(variable_id = 0)
  237.     actor = $game_party.members[0]
  238.     # 変数に代入
  239.     if variable_id > 0
  240.       $game_variables[variable_id] = actor.name
  241.     end
  242.     return actor.name
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 取得第一位演员的HP
  246.   #--------------------------------------------------------------------------
  247.   def get_top_actor_hp(variable_id = 0)
  248.     actor = $game_party.members[0]
  249.     # 変数に代入
  250.     if variable_id > 0
  251.       $game_variables[variable_id] = actor.hp
  252.     end
  253.     return actor.hp
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ● 取得第一位演员的最大HP
  257.   #--------------------------------------------------------------------------
  258.   def get_top_actor_maxhp(variable_id = 0)
  259.     actor = $game_party.members[0]
  260.     # 変数に代入
  261.     if variable_id > 0
  262.       $game_variables[variable_id] = actor.maxhp
  263.     end
  264.     return actor.maxhp
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ● 取得第一位参与者的生命值比率(百分比)
  268.   #--------------------------------------------------------------------------
  269.   def get_top_actor_hp_ratio(variable_id = 0)
  270.     actor = $game_party.members[0]
  271.     if actor.maxhp != 0
  272.       hp_ratio =  100 * actor.hp / actor.maxhp
  273.     else
  274.       hp_ratio = 0
  275.     end
  276.     # 変数に代入
  277.     if variable_id > 0
  278.       $game_variables[variable_id] = hp_ratio
  279.     end
  280.     return hp_ratio
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● 获取首位参与者的MP
  284.   #--------------------------------------------------------------------------
  285.   def get_top_actor_mp(variable_id = 0)
  286.     actor = $game_party.members[0]
  287.     # 変数に代入
  288.     if variable_id > 0
  289.       $game_variables[variable_id] = actor.mp
  290.     end
  291.     return actor.mp
  292.   end
  293.   #--------------------------------------------------------------------------
  294.   # ● 先頭のアクターの最大MPを取得
  295.   #--------------------------------------------------------------------------
  296.   def get_top_actor_maxmp(variable_id = 0)
  297.     actor = $game_party.members[0]
  298.     # 変数に代入
  299.     if variable_id > 0
  300.       $game_variables[variable_id] = actor.maxmp
  301.     end
  302.     return actor.maxmp
  303.   end
  304.   #--------------------------------------------------------------------------
  305.   # ● 先頭のアクターの攻撃力を取得
  306.   #--------------------------------------------------------------------------
  307.   def get_top_actor_atk(variable_id = 0)
  308.     actor = $game_party.members[0]
  309.     # 変数に代入
  310.     if variable_id > 0
  311.       $game_variables[variable_id] = actor.atk
  312.     end
  313.     return actor.atk
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ● 先頭のアクターの防御力を取得
  317.   #--------------------------------------------------------------------------
  318.   def get_top_actor_def(variable_id = 0)
  319.     actor = $game_party.members[0]
  320.     # 変数に代入
  321.     if variable_id > 0
  322.       $game_variables[variable_id] = actor.def
  323.     end
  324.     return actor.def
  325.   end
  326.   #--------------------------------------------------------------------------
  327.   # ● アイテムの所持数取得
  328.   #--------------------------------------------------------------------------
  329.   def get_item_number(item_id,variable_id = 0)
  330.     if item_id == nil
  331.       print("アイテムIDを指定してください!IDは直接または変数で指定出来ます!")
  332.       exit
  333.     end
  334.     if item_id > $data_items.size
  335.       print("アイテムIDがデータベースで指定した範囲を超えました!")
  336.       exit
  337.     end
  338.     if variable_id > 0
  339.       #変数に代入
  340.       $game_variables[variable_id] = $game_party.item_number($data_items[item_id])
  341.     end
  342.     return $game_party.item_number($data_items[item_id])
  343.   end
  344.   #--------------------------------------------------------------------------
  345.   # ● 武器の所持数取得
  346.   #--------------------------------------------------------------------------
  347.   def get_weapon_number(weapon_id,variable_id = 0)
  348.     if weapon_id == nil
  349.       print("武器IDを指定してください!IDは直接または変数で指定出来ます!")
  350.       exit
  351.     end
  352.     if weapon_id > $data_weapons.size
  353.       print("武器IDがデータベースで指定した範囲を超えました!")
  354.       exit
  355.     end
  356.     if variable_id > 0
  357.       #変数に代入
  358.       $game_variables[variable_id] = $game_party.item_number($data_weapons[weapon_id])
  359.     end
  360.     return $game_party.item_number($data_weapons[weapon_id])
  361.   end
  362.   #--------------------------------------------------------------------------
  363.   # ● 防具の所持数取得
  364.   #--------------------------------------------------------------------------
  365.   def get_armor_number(armor_id,variable_id = 0)
  366.     if armor_id == nil
  367.       print("防具IDを指定してください!IDは直接または変数で指定出来ます!")
  368.       exit
  369.     end
  370.     if armor_id > $data_armors.size
  371.       print("防具IDがデータベースで指定した範囲を超えました!")
  372.       exit
  373.     end
  374.     if variable_id > 0
  375.       #変数に代入
  376.       $game_variables[variable_id] = $game_party.item_number($data_armors[armor_id])
  377.     end
  378.     return $game_party.item_number($data_armors[armor_id])
  379.   end
  380.   #--------------------------------------------------------------------------
  381.   # ● アイテムボックス内のアイテムの所持数取得
  382.   #--------------------------------------------------------------------------
  383.   def get_item_number_in_box(item_id,variable_id = 0)
  384.     if item_id == nil
  385.       print("アイテムIDを指定してください!IDは直接または変数で指定出来ます!")
  386.       exit
  387.     end
  388.     if item_id > $data_items.size
  389.       print("アイテムIDがデータベースで指定した範囲を超えました!")
  390.       exit
  391.     end
  392.     if variable_id > 0
  393.       #変数に代入
  394.       $game_variables[variable_id] = $game_party.keeping_item_number($data_items[item_id])
  395.     end
  396.     return $game_party.keeping_item_number($data_items[item_id])
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ● アイテムボックス内の武器の所持数取得
  400.   #--------------------------------------------------------------------------
  401.   def get_weapon_number_in_box(weapon_id,variable_id = 0)
  402.     if weapon_id == nil
  403.       print("武器IDを指定してください!IDは直接または変数で指定出来ます!")
  404.       exit
  405.     end
  406.     if weapon_id > $data_weapons.size
  407.       print("武器IDがデータベースで指定した範囲を超えました!")
  408.       exit
  409.     end
  410.     if variable_id > 0
  411.       #変数に代入
  412.       $game_variables[variable_id] = $game_party.keeping_item_number($data_weapons[weapon_id])
  413.     end
  414.     return $game_party.keeping_item_number($data_weapons[weapon_id])
  415.   end
  416.   #--------------------------------------------------------------------------
  417.   # ● アイテムボックス内の防具の所持数取得
  418.   #--------------------------------------------------------------------------
  419.   def get_armor_number_in_box(armor_id,variable_id = 0)
  420.     if armor_id == nil
  421.       print("防具IDを指定してください!IDは直接または変数で指定出来ます!")
  422.       exit
  423.     end
  424.     if armor_id > $data_armors.size
  425.       print("防具IDがデータベースで指定した範囲を超えました!")
  426.       exit
  427.     end
  428.     if variable_id > 0
  429.       #変数に代入
  430.       $game_variables[variable_id] = $game_party.keeping_item_number($data_armors[armor_id])
  431.     end
  432.     return $game_party.keeping_item_number($data_armors[armor_id])
  433.   end
  434.   #--------------------------------------------------------------------------
  435.   # ● プレイ時間の取得
  436.   #--------------------------------------------------------------------------
  437.   def get_playtime(variable_id1=0,variable_id2=0 ,variable_id3=0)
  438.     total_sec = Graphics.frame_count / Graphics.frame_rate
  439.     # 変数に代入
  440.     if variable_id1 > 0
  441.       #時間
  442.       $game_variables[variable_id1] = total_sec / 60 / 60
  443.     end
  444.     if variable_id2 > 0
  445.       #分
  446.       $game_variables[variable_id2] = total_sec / 60 % 60
  447.     end
  448.     if variable_id3 > 0
  449.       #秒
  450.       $game_variables[variable_id3] = total_sec % 60
  451.     end
  452.     return total_sec
  453.   end
  454.   #--------------------------------------------------------------------------
  455.   # ● タイマーの操作
  456.   #変数指定可能
  457.   #--------------------------------------------------------------------------
  458.   def set_timer(sec = 0)
  459.     if min > 0  # 始動
  460.       $game_system.timer = sec * Graphics.frame_rate
  461.       $game_system.timer_working = true
  462.     end
  463.     if min == 0  # 停止
  464.       $game_system.timer_working = false
  465.     end
  466.     return true
  467.   end
  468.   #--------------------------------------------------------------------------
  469.   # ● タイマー表示
  470.   #--------------------------------------------------------------------------
  471.   def timer_appear#タイマーの表示
  472.     $game_system.timer_hide = false #表示
  473.   end
  474.   #--------------------------------------------------------------------------
  475.   # ● タイマー非表示
  476.   #--------------------------------------------------------------------------
  477.   def timer_hide#タイマーの非表示
  478.     $game_system.timer_hide = true #非表示
  479.   end
  480.   #--------------------------------------------------------------------------
  481.   # ● タイマーの一時停止
  482.   #--------------------------------------------------------------------------
  483.   def stop_timer#タイマー一時停止
  484.     $game_system.timer_stop
  485.   end
  486.   #--------------------------------------------------------------------------
  487.   # ● タイマーの再スタート
  488.   #--------------------------------------------------------------------------
  489.   def restart_timer#タイマー再始動
  490.     $game_system.timer_start
  491.   end
  492.   #--------------------------------------------------------------------------
  493.   #■マップ画面でプレイヤーの操作強制無効 RGSS2 DAIpage■と連動
  494.   #--------------------------------------------------------------------------
  495.   # ● プレイヤーロックのON/OFF
  496.   #--------------------------------------------------------------------------
  497.   def player_lock_on_off
  498.     $game_player.player_lock
  499.   end
  500.   #--------------------------------------------------------------------------
  501.   # ● プレイヤーロックのON
  502.   #--------------------------------------------------------------------------
  503.   def player_lock_on#プレイヤーロック開始
  504.     $game_player.player_lock_on#プレイヤーロック開始
  505.   end
  506.   #--------------------------------------------------------------------------
  507.   # ● プレイヤーロックのOFF
  508.   #--------------------------------------------------------------------------
  509.   def player_lock_off#プレイヤーロック終了
  510.     $game_player.player_lock_off#プレイヤーロック終了
  511.   end
  512. end

QQ截图20230116165412.png (25.2 KB, 下载次数: 11)

QQ截图20230116165412.png

QQ截图20230116165534.png (5.59 KB, 下载次数: 9)

QQ截图20230116165534.png

作者: 幻想党    时间: 2023-1-16 16:57
报错的是这几段

  1.   #--------------------------------------------------------------------------
  2.   # ● 获取包含特定名称的事件的X坐标
  3.   #--------------------------------------------------------------------------
  4.   def get_name_event_x(name = "",variable_id = 0)
  5.     event_id = 0
  6.     # 搜索相应的事件
  7.     events   = $game_map.events.values.find_all { |e| e.x == x && e.y == y }
  8.     event_id = (events.max { |a, b| a.id <=> b.id }).id unless events.empty?
  9.     character = get_character(event_id)
  10.     # 変数に代入
  11.     if variable_id > 0
  12.       $game_variables[variable_id] = character.x
  13.       $game_map.need_refresh = true
  14.     end
  15.     return character.x
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 获取包含特定名称的事件的Y坐标
  19.   #--------------------------------------------------------------------------
  20.   def get_name_event_y(name = "",variable_id = 0)
  21.     event_id = 0
  22.     # 該当するイベントを検索
  23.     events   = $game_map.events.values.find_all { |e| e.x == x && e.y == y }
  24.     event_id = (events.max { |a, b| a.id <=> b.id }).id unless events.empty?
  25.     character = get_character(event_id)
  26.     # 変数に代入
  27.     if variable_id > 0
  28.       $game_variables[variable_id] = character.y
  29.     end
  30.     return character.y
  31.   end
复制代码

作者: 百里_飞柳    时间: 2023-1-16 20:08
这写的什么东西…… 方法名和备注都是说事件名字,里面判定居然是指定位置……

先把这两个方法修改了

  1.   #--------------------------------------------------------------------------
  2.   # ● 获取包含特定名称的事件的X坐标
  3.   #--------------------------------------------------------------------------
  4.   def get_name_event_x(name = "",variable_id = 0)
  5.     event_id = 0
  6.     # 搜索相应的事件
  7.     events   = $game_map.events.values.find_all { |e| e.name.include?(name) }  # 这一行改了
  8.     event_id = (events.max { |a, b| a.id <=> b.id }).id unless events.empty?
  9.     character = get_character(event_id)
  10.     # 変数に代入
  11.     if variable_id > 0
  12.       $game_variables[variable_id] = character.x
  13.       $game_map.need_refresh = true
  14.     end
  15.     return character.x
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 获取包含特定名称的事件的Y坐标
  19.   #--------------------------------------------------------------------------
  20.   def get_name_event_y(name = "",variable_id = 0)
  21.     event_id = 0
  22.     # 該当するイベントを検索
  23.     events   = $game_map.events.values.find_all { |e| e.name.include?(name) }  # 这一行改了
  24.     event_id = (events.max { |a, b| a.id <=> b.id }).id unless events.empty?
  25.     character = get_character(event_id)
  26.     # 変数に代入
  27.     if variable_id > 0
  28.       $game_variables[variable_id] = character.y
  29.     end
  30.     return character.y
  31.   end
复制代码


然后在整个脚本的最后加上一段,来获取事件名称
  1. class Game_Event
  2.   def name
  3.     @event.name
  4.   end
  5. end
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1