NPC (TeaScript)

来自SMBX 中文百科
TeaScript/NPC
跳转到导航 跳转到搜索


npc(id).index,使用它可以调整 NPC 的属性。

如果想创建自定义NPC,可以使用以下代码:

with npc(sysval(param1))
    'executes, sysval(param1)返回NPC的PermID?
end with

sysval(param1))参数代表该 NPC 的 PermID。

npc(id).index
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是否拥有翅膀,值如下:
0:无翅膀
1:跳跃
2 :左右悬浮
3 :上下悬浮
4 :追踪玩家
5 :前进悬浮
6 :使用朱盖木的 AI 在空中飞行
7 :由 NPC-308 控制(方向与速度)
8 :由 SMW 轨道线控制

由于 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
  1. 值得一提的是,.grabedevent这个参数虽然在英语语法中存在错误(grab 的过去式是 grabbed。) ,但确实是一个参数名。