Project1
标题:
【原创】飞吧小鸟!【2.0 移植自XP版】
[打印本页]
作者:
各种压力的猫君
时间:
2011-11-6 02:00
标题:
【原创】飞吧小鸟!【2.0 移植自XP版】
本帖最后由 各种压力的猫君 于 2011-11-26 23:51 编辑
2.jpg
(54.45 KB, 下载次数: 11)
下载附件
保存到相册
2011-11-6 01:58 上传
应精灵要求移植自XP版(
点我
)
和XP版同步维护。
脚本:
#==============================================================================
# ■ 小鸟 2.0 (FOR RMVX) by 各种压力的猫君
#------------------------------------------------------------------------------
# 小鸟会在主角一定距离之内飞行……
#------------------------------------------------------------------------------
# 使用说明:
# 将本脚本插入Game_Character和Main之间,
# 然后设置小鸟事件的移动路线为:(重复动作)
# ◇脚本:BIRD1("1"为小鸟的「种类」,可省略;"BIRD"可以在下面自定义)
#------------------------------------------------------------------------------
# 定义小鸟的「种类」,可以设定出不同远近的鸟儿(27行开始)
# 注意:「种类」只可使用整数!
#------------------------------------------------------------------------------
# 2011-11-06 2.0 初版(移植自XP版,为维护方便版本号统一)
#==============================================================================
module Bird_Config
# 自定义识别符
SCRIPT_CODE = "BIRD"
# 设置小鸟和主角最近的距离(仅当未定义种类时使用该值)
BIRD_MIN_DISTANCE = 4
# 设置小鸟和主角最远的距离(仅当未定义种类时使用该值)
BIRD_MAX_DISTANCE = 10
end
class Game_Character
#------------------------------------------------------------------------------
# 最近的距离
def bird_min_distance(type)
# 第1种
if type == 1
return 7
# 第2种
elsif type == 2
return 1
end
# 若未设定返回默认值
return Bird_Config::BIRD_MIN_DISTANCE
end
#------------------------------------------------------------------------------
# 最远的距离
def bird_max_distance(type)
# 第1种
if type == 1
return 12
# 第2种
elsif type == 2
return 2
end
# 若未设定返回默认值
return Bird_Config::BIRD_MAX_DISTANCE
end
#------------------------------------------------------------------------------
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"
"┃ 自定义内容到此结束,以下内容请谨慎修改! ┃"
"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"
def move_type_custom
if stopping?
command = @move_route.list[@move_route_index] # Get movement command
@move_failed = false
if command.code == 0 # End of list
if @move_route.repeat # [Repeat Action]
@move_route_index = 0
elsif @move_route_forcing # Forced move route
@move_route_forcing = false # Cancel forcing
@move_route = @original_move_route # Restore original
@move_route_index = @original_move_route_index
@original_move_route = nil
end
else
case command.code
when 1 # 往下移动
move_down
when 2 # 往左移动
move_left
when 3 # 往右移动
move_right
when 4 # 往上移动
move_up
when 5 # 往左下移动
move_lower_left
when 6 # 往右下移动
move_lower_right
when 7 # 往左上移动
move_upper_left
when 8 # 往右上移动
move_upper_right
when 9 # 随机移动
move_random
when 10 # 接近主角
move_toward_player
when 11 # 远离主角
move_away_from_player
when 12 # 前进一步
move_forward
when 13 # 後退一步
move_backward
when 14 # 跳跃
jump(command.parameters[0], command.parameters[1])
when 15 # 等待
@wait_count = command.parameters[0] - 1
when 16 # 面向下
turn_down
when 17 # 面向左
turn_left
when 18 # 面向右
turn_right
when 19 # 面向上
turn_up
when 20 # 向右转 90 度
turn_right_90
when 21 # 向左转 90 度
turn_left_90
when 22 # 旋转 180 度
turn_180
when 23 # 随机转 90 度
turn_right_or_left_90
when 24 # 随机转换方向
turn_random
when 25 # 面向主角
turn_toward_player
when 26 # 背向主角
turn_away_from_player
when 27 # 开启开关
$game_switches[command.parameters[0]] = true
$game_map.need_refresh = true
when 28 # 关闭开关
$game_switches[command.parameters[0]] = false
$game_map.need_refresh = true
when 29 # 更改移动速度
@move_speed = command.parameters[0]
when 30 # 更改移动频度
@move_frequency = command.parameters[0]
when 31 # 开启步行动画
@walk_anime = true
when 32 # 关闭步行动画
@walk_anime = false
when 33 # 开启踏步动画
@step_anime = true
when 34 # 关闭踏步动画
@step_anime = false
when 35 # 开启面向固定
@direction_fix = true
when 36 # 关闭面向固定
@direction_fix = false
when 37 # 允许穿透
@through = true
when 38 # 不允许穿透
@through = false
when 39 # 开启透明状态
@transparent = true
when 40 # 关闭透明状态
@transparent = false
when 41 # 更改角色图像
set_graphic(command.parameters[0], command.parameters[1])
when 42 # 更改透明度
@opacity = command.parameters[0]
when 43 # 更改合成方式
@blend_type = command.parameters[0]
when 44 # 播放音效
command.parameters[0].play
when 45 # 脚本
#==============================================================================
# 如果脚本内容含有识别符,则开始计算鸟的飞行路线
if command.parameters[0].slice(Bird_Config::SCRIPT_CODE) != nil
# 计算距离(公式 by orzfly)
$event_distance = Proc.new{|e1, e2|Math.sqrt((e2.x-e1.x)**2+(e2.y-e1.y)**2)}
# 变量处理
$bird_event_type = command.parameters[0].clone
$bird_event_type.slice!(Bird_Config::SCRIPT_CODE)
# 计算
@bird_distance = $event_distance.call($game_map.events[@event.id.to_i], $game_player)
# 根据种类判断距离
@bird_distance_min = bird_min_distance($bird_event_type.to_i)
@bird_distance_max = bird_max_distance($bird_event_type.to_i)
# 若当前距离在最近距离以内
if @bird_distance <= @bird_distance_min
# 远离主角
move_away_from_player
else
# 若当前距离在最远距离以外
if @bird_distance >= @bird_distance_max
# 接近主角
move_toward_player
# 除此之外的情况
else
# 随机移动
move_random
end
end
else
eval(command.parameters[0])
end
#==============================================================================
end
if not @move_route.skippable and @move_failed
return # 非[跳过不能移动的场合] 并且移动失败
end
@move_route_index += 1
end
end
end
end
复制代码
范例:
小鸟 2.0VX.zip
(250.68 KB, 下载次数: 662)
2011-11-6 02:00 上传
点击文件名下载附件
作者:
小白玩家
时间:
2011-11-6 12:28
换地图也会跟着吗
作者:
精灵使者
时间:
2011-11-7 09:24
OK,游游人生随机的移动物体这个就用这个脚本了呐……
作者:
退屈£无聊
时间:
2011-11-7 19:49
{:nm_1:}不知道为什么想不出在一定范围内移动这样的NPC的具体用场……敌人么是一直接近,友人么是一直接近,鸟么是一直远离……
哦……妖梦的幽灵半边体=v=|||
作者:
凡尘过客
时间:
2011-11-25 08:21
厉害。。。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1