赞 | 0 |
VIP | 22 |
好人卡 | 0 |
积分 | 1 |
经验 | 467710 |
最后登录 | 2018-9-22 |
在线时间 | 17 小时 |
Lv1.梦旅人 邪恶小龙包
- 梦石
- 0
- 星屑
- 55
- 在线时间
- 17 小时
- 注册时间
- 2006-5-22
- 帖子
- 7006
  
|
以下引用自天干宝典。
不过貌似只能在移动路线的脚本中用……或许不是楼主所要的东西……
首先来诠释一下1=44,就是说在"移动路线"的设置里使用脚本可以实现另外44个按钮的全部功能,脚本写法如下:
1.向下移动: move_down
2.向左移动: move_left
3.向右移动: move_right
4.向上移动: move_up
5.左下移动: move_lower_left
6.左上移动: move_upper_left
7.右下移动: move_lower_right
8.右上移动: move_upper_right
9.随机移动: move_random
10.接近主角: move_toward_player
11.远离主角: move_away_from_player
12.前进一步: move_forward
13.后退一步: move_backward
14.跳跃: jump(x,y) x是水平跳跃距离,y是垂直跳跃距离,都是相对值,例如 jump(-5,7)
15.等待: @wait_count=f f是想等待的帧数,注意实际值会按f的一半计算,所以等待2帧要令f=4
16.面向下: turn_down
17.面向左: turn_left
18.面向右: turn_right
19.面向上: turn_up
20.右转90度: turn_right_90
21.左转90度: turn_left_90
22.旋转180度: turn_180
23.右或左转90度: turn_right_or_left_90
24.随机变换: turn_random
25.面向主角: turn_toward_player
26.背向主角: turn_away_from_player
27-28.开关操作:
$game_switches[开关id]=true/false
$game_map.need_refresh=true 注:加这一条是因为在地图上操作,需要刷新事件开关
29.更改移动速度: @move_speed=(1-6),1为最慢,6为最快,事件默认值3,角色默认值4
30.更改移动频率: @move_frequency=(1-6),1为最低,6为最高,事件默认值3,角色默认值6
31-32.移动动画开关: @walk_anime=true/false
33-34.停止动画开关: @step_anime=true/false
35-36.面向固定开关: @direction_fix=true/false
37-38.穿透开关: @through=true/false
39-40.总在最前开关: @always_on_top=true/false
41.更改图形:
@tile_id=0
@character_name=新的行走图文件名
@character_hue=新的行走图色相
@direction=新的朝向 取值2 4 6 8(下 左 右 上)
@pattern=新的步伐 取值0 1 2 3(对应行走图从左到右的4格)
42.更改不透明度: @opacity=(0-255)
43.更改合成方式: @blend_type=(0-2) 0为正常 1为加法 2为减法
44.演奏SE: $game_system.se_play(SE文件名,音量,节拍) 音量0-100默认80,节拍50-150默认100
1=44的意义在于,利用脚本的循环可以很方便的简化移动路线设置,比如有一个路线要让NPC上移11格,然后右移7格,再下移4格
用事件来做,移动路线会长达11+7+4=22条,用脚本来写,则可以:
n=11;n.times do move_up; end
n=7;n.times do move_right; end
n=4;n.times do move_down; end
你想把三条合并都可以……
不过需要注意的是,由于一句脚本是作为一个整体来执行的,并且判定上有别于移动事件,所以它不会受到"忽略不能移动的场合"影响,这意味着你必须确认NPC经过的路线畅通无阻才行。
移动路线脚本的其他用处:
属性类:
自身座标: self.x self.y self.z
自身移动中: self.moving?
自身跳跃中: self.jumping?
自身通行判定: self.passable?(x,y,方向) 方向为2 4 6 8 定义同前
自身地形标记: self.terrain_tag
动作类:
移动到指定地点: moveto(x,y)
更改角色的移动模式:
@move_type=0 更改移动模式为立定
@move_type=1 更改移动模式为随机
@move_type=2 更改移动模式为接近
@move_type=3 更改移动模式为自定义
另外,当移动模式设为自定义时,在移动路线里输入脚本可以仿真前两种移动模式
move_type_random 仿真随机移动
move_type_toward_player 仿真接近移动(我那个3行脚本的NPC视野系统就是利用了这个原理)
移动路线脚本只能写1行,但没有长度限制,所以在允许的范围内可以用分号来写一些较复杂的控制结构比如循环,但没法实现分歧结构
比如:当事件离主角6格时更改移动模式为接近,否则随机
事件的移动类型设为自定义
移动路线: 脚本: move_type_random if (self.x - $game_player.x).abs ** 2 + (self.y - $game_player.y).abs ** 2 < 36
脚本: move_type_toward_player if (self.x - $game_player.x).abs ** 2 + (self.y - $game_player.y).abs ** 2 >= 36 |
|