NPC (TeaScript)
< TeaScriptTeaScript/NPC
跳转到导航
跳转到搜索
npc(id).index
,使用它可以调整 NPC 的属性。
如果想创建自定义NPC,可以使用以下代码:
with npc(sysval(param1))
'executes, sysval(param1)返回NPC的PermID?
end with
sysval(param1))
参数代表该 NPC 的 PermID。
index参数名 | 数据类型 | 模式 | 描述 |
---|---|---|---|
X | Double | R/W | NPC 的横向坐标。 |
Y | Double | R/W | NPC 的纵向坐标。 |
prX | Double | R/W | NPC 的初始位置的横向坐标。 |
prY | Double | R/W | NPC 的初始位置的纵向坐标。 |
Xsp | Double | R/W | NPC 的横向速度。 |
Ysp | Double | R/W | NPC 的纵向速度。 |
ID | Integer | R/W | NPC 的 ID,例如这个值为 10 时该 NPC 为 SMB3 金币。 |
addvx | Double | R/W | NPC 的横向平台加速度。 |
addvy | Double | R/W | NPC 的纵向平台加速度。 |
facing | Double | R/W | NPC 的朝向,0是左,1是右。 |
friendly | Byte | R/W | NPC 是否为友好状态。(该状态下 NPC 和玩家无法进行除对话外的交互) |
NoMove | Byte | R/W | NPC 是否为不移动状态。(该状态下 NPC 的横向速度为0,朝向始终面向玩家的方向) |
curframe | Integer | R/W | NPC 当前播放的动画帧的编号。 |
health | Integer | R/W | NPC 当前的血量。 |
advSet | Integer | R/W | 附加数据 |
permID | Double | R | NPC 的永久 ID。(每个 NPC 都有自己独有的永久 ID,不与其它 NPC 的永久 ID 重复) |
alive | Byte | R/W | NPC 是否处于存活状态(0 为死亡状态,1 为存活状态) |
Name | String | R/W | NPC 的附加名称。 |
ivala | Integer | R/W | 自定义变量A(每个NPC的自定义变量含义:Ival) |
ivalb | Integer | R/W | 自定义变量B |
ivalc | Integer | R/W | 自定义变量C |
width | Integer | R/W | NPC 的判定宽度。 |
height | Integer | R/W | NPC 的判定高度。 |
bkupx | Double | R/W | NPC 的备用横坐标。表示 NPC 生成时所处的横坐标。 |
bkupy | Double | R/W | NPC 的备用纵坐标。表示 NPC 生成时所处的纵坐标。 |
curtimer | Double | R/W | NPC 的自定义计时器。用于表示 NPC 播放动画帧的计时。在游戏中每过一帧数值会加 1,当到达 NPC 自身的帧速时将会重置为 1 且开始播放下一个动画帧。设置为 0 来使 NPC 停止播放动画。(不适用于具有复杂动画帧系统的 NPC) |
scount | Double | R/W | 表示在同一位置有多少个 NPC。在 1.4.5 中不再生效。 |
zpos | Double | R/W | 表示 NPC 的 z 坐标。(即渲染优先级,数值越小,渲染层就会在最前面。) |
inwater | Double | R/W | 表示 NPC 是否处于水中。 |
forecolor | Integer | R/W | 前景色。表示 NPC 的颜色,使用 rgba 方式设置颜色。你可以使用rgba(红,绿,蓝,透明度 或一个整数来设置。
|
Hide | Double | R/W | 表示 NPC 是否为隐藏状态。 |
extx | Double | R/W | NPC 所使用的拓展素材的横向位置。(例如设置为 0,则为拓展素材中的第一列) |
exty | Double | R/W | NPC 所使用的拓展素材的纵向位置。(例如设置为 1,则为拓展素材中的第二行) |
forecolor_r | Integer | R/W | NPC 的 rgba 前景色中的红色通道的数值。 |
forecolor_g | Integer | R/W | NPC 的 rgba 前景色中的绿色通道的数值。 |
forecolor_b | Integer | R/W | NPC 的 rgba 前景色中的蓝色通道的数值。 |
forecolor_a | Integer | R/W | NPC 的 rgba 前景色中的 alpha(即透明度) 通道的数值。 |
Stand | Double | R/W | NPC 是否处于站立状态。(即是否站在地面上或站在可以站立的其它 NPC 上) |
langle | Double | R/W | 暂不了解其实际用途,可以当做自定义变量使用。 |
stimer | Double | R/W | 暂不了解其实际用途,若设置为正数则该参数的数值每帧会减少 1,直到降低到 0。设置为负数则不会有变化。可以用于作为 NPC 内置的计时器,也可以设置为负数,作为 NPC 的另一个自定义变量使用。 |
target | Double | R/W | NPC 的目标。(值为的玩家ID) |
Dtcplayer | Double | R/W | NPC 是否可以和玩家互动。(0 为是,1 为否) |
Dtcliquid | Double | R/W | NPC 是否可以和流体互动。(0 为是,1 为否) |
Dtcself | Double | R/W | NPC 是否可以和其它 NPC 互动。(0 为是,1 为否) |
Extset | Double | R/W | NPC的外部设置。对于泡泡和 SMW 朱盖木,该值将决定它们所包含/投掷的 NPC。 |
Talkevent | String | R/W | 表示和 NPC 谈话时所触发的事件的名称。 |
Deathevent | String | R/W | 表示 NPC 死亡时所触发的事件的名称。 |
Touchevent | String | R/W | 表示玩家和 NPC 接触时所触发的事件的名称。 |
Activeevent | String | R/W | 表示 NPC 进入屏幕时所触发的事件的名称。 |
Nextframeevent | String | R/W | 表示 NPC 的动画帧播放到下一帧时所触发的事件的名称。 |
Grabedevent[1] | String | R/W | 表示 NPC 被玩家抓取时所触发的事件的名称。 |
Layerclearedevent | String | R/W | 表示 NPC 所在的图层内的对象全部被清除时所触发的事件的名称。 |
Haswing | Integer | R/W | 决定了NPC是否拥有翅膀,值如下:
|
由于 NPC 很高的自由度,甚至可以以此开发其他玩法,这使得自定义变量尤其重要。
目前可用的自定义变量列表如下:
index 参数名 | 描述 | 数据 | 原因 |
---|---|---|---|
advSet | 附加数据 | Integer | 不必多说,NPC的高级值用得好板栗仔都能成神(doge) |
ivala | 自定义变量A | Integer | 内置变量,一般用于操控一些逻辑程序的运行。 |
ivalb | 自定义变量B | Integer | 同上 |
ivalc | 自定义变量C | Integer | 同上 |
langle | 暂不了解其实际用途。 | Double | 目前这个值对NPC的是没有任何影响,可以作为另一个自定义变量使用。 |
stimer | 可以用于作为 NPC 内置的计时器 | Double | 由于是每帧-1,所以可以用作倒计时装置。 |
Name | NPC 的附加名称。 | String | Object Name,按字面意思是标记该物件的名称,但这个变量也可以当做判断某些程序的字符串。,或者拿来当做数字使用。 |
Talkevent | 表示和 NPC 谈话时所触发的事件的名称。 | String | 事件触发名,如果没有事件也可以不用浪费这些参数,这些参数也可以充当自定义变量使用,另外由于是事件名,所以尽量避免特定事件名。(例如尽量不用纯数字名称创建事件等等。) |
Deathevent | 表示 NPC 死亡时所触发的事件的名称。 | String | |
Touchevent | 表示玩家和 NPC 接触时所触发的事件的名称。 | String | |
Activeevent | 表示 NPC 进入屏幕时所触发的事件的名称。 | String | |
Nextframeevent | 表示 NPC 的动画帧播放到下一帧时所触发的事件的名称。 | String | |
Grabedevent | 表示 NPC 被玩家抓取时所触发的事件的名称。 | String | |
Layerclearedevent | 表示 NPC 所在的图层内的对象全部被清除时所触发的事件的名称。 | String |
- ↑ 值得一提的是,
.grabedevent
这个参数虽然在英语语法中存在错误(grab 的过去式是 grabbed。) ,但确实是一个参数名。