| 赞 | 168 |
| VIP | |
| 好人卡 | |
| 积分 | 229 |
| 经验 | |
| 最后登录 | 2025-4-1 |
| 在线时间 | 8598 小时 |
- 梦石
- 0
- 星屑
- 22879
- 在线时间
- 8598 小时
- 注册时间
- 2011-12-31
- 回帖
- 3270
|
发表于 2015-9-18 22:31:26
|
显示全部楼层
使用方法:
check_region_events_size(區域ID, 關鍵字)
例:捉猫
check_region_events_size(1,"grab")
返回區域1中有關鍵字grab的事件数目
掴めるイベント.rar
(1.46 MB, 下载次数: 63)
掴めるイベント[pre lang="ruby"]=begin
掴めるイベント ver0.90
特定の文字列をイベント名に含むイベントを掴んで運搬できるようになります。
イベントは離すと指定したセルフスイッチがオンになります。
付記
※現在掴んでいるイベントのIDを変数に入れる
掴んでいなければ、変数の値は0になる
変数の操作→スクリプト:$game_player.grab
※特定のリージョンIDにいる特定のキーワードを含むイベントの数を変数に入れる
変数の操作→スクリプト:check_region_events_size(リージョンID, キーワード)
ver0.90:公開
=end
module GrabEvent
# 掴めるイベントとして認識するためのタグ
# この文字列がイベント名に入っているイベントは掴めるようになります
Keyword = "grab"
# イベントをリリースした時にオンにするセルフスイッチ
OnSelfSwitch = 'A'
end
class Game_Map
alias __grab_event_setup setup
def setup(map_id)
__grab_event_setup(map_id)
$game_player.grab = nil
end
alias __grab_event_update_events update_events
def update_events
__grab_event_update_events
@events.each{|event|
if event[0] == $game_player.grab
event[1].moveto($game_player.x,$game_player.y)
event[1].real_x = $game_player.real_x
event[1].real_y = $game_player.real_y
event[1].set_direction($game_player.direction)
end
}
end
def id_event(event_id)
@events.find{|event| event[0] == event_id }[1]
end
end
class Game_CharacterBase
def grabed?
false
end
alias __grab_event_screen_x screen_x
def screen_x
dir = $game_player.direction
sup = self.is_a?(Game_Event) && grabed? && dir == 4 ? -10 : 0
sup = self.is_a?(Game_Event) && grabed? && dir == 6 ? 10 : sup
__grab_event_screen_x + sup
end
alias __grab_event_screen_y screen_y
def screen_y
dir = $game_player.direction
sup = self.is_a?(Game_Event) && grabed? && dir == 8 ? -16 : 0
sup = self.is_a?(Game_Event) && grabed? && dir == 2 ? 8 : sup
sup = self.is_a?(Game_Event) && grabed? && dir == 4 ? -2 : sup
sup = self.is_a?(Game_Event) && grabed? && dir == 6 ? -2 : sup
__grab_event_screen_y + sup
end
alias __grab_event_screen_z screen_z
def screen_z
dir = $game_player.direction
sup = self.is_a?(Game_Event) && grabed? && dir == 2 ? 1 : 0
sup = self.is_a?(Game_Event) && grabed? && dir == 4 ? 1 : sup
sup = self.is_a?(Game_Event) && grabed? && dir == 6 ? 1 : sup
__grab_event_screen_z + sup
end
end
class Game_Event
attr_writer :real_x
attr_writer :real_y
def name
@event.name
end
def grabed?
$game_player.grab == self.id
end
end
class Game_Player
attr_accessor :grab
#--------------------------------------------------------------------------
# ● 正面のイベント起動判定
#--------------------------------------------------------------------------
alias __grab_event_cett check_event_trigger_there
def check_event_trigger_there(triggers)
__grab_event_cett(triggers)
grab_event_there
end
def grab_event_there
x2 = $game_map.round_x_with_direction(@x, @direction)
y2 = $game_map.round_y_with_direction(@y, @direction)
if grabed?
event = $game_map.id_event(@grab)
if event.passable?(@x,@y,@direction)
event.moveto(x2,y2)
$game_self_switches[[$game_map.map_id,event.id,GrabEvent::OnSelfSwitch]] = true
@grab = nil
end
else
$game_map.events_xy(x2,y2).each{|event|
@grab = event.id if event.is_a?(Game_Event) && event.name.include?(GrabEvent::Keyword)
}
end
end
def grabed?
@grab
end
end
class Game_Interpreter
# 指定したIDのリージョン内に指定したキーワードを含むイベントを検出する
def check_region_events(region_id, keyword)
result = []
$game_map.events.each{|event|
if event[1].region_id == region_id && event[1].name.include?(keyword)
result.push(event[1])
end
}
result
end
# 指定したIDのリージョン内に指定したキーワードを含むイベントの数を取得する
def check_region_events_size(region_id, keyword)
check_region_events(region_id, keyword).size
end
end[/pre] |
评分
-
查看全部评分
|