系统变量 (TeaScript)
< TeaScriptTeaScript/Sysval
跳转到导航
跳转到搜索
Sysval(中文名:系统变量)是系统内部调用的变量,一般无法修改其名字,但有一些是只读变量。
以下是常用例子:
1UP (sysval(player1health)) 或 (sysval(player2health))
Coin (sysval(coincount))
Score (sysval(score))
NPCCount (sysval(NCount))
在1.4.5版本下,系统变量无法进行自加(+=)和自减(-=)操作。
目前截止到 1.4.5,可用的系统变量如下:(标注粗体为原版脚本指南[1]未提及的,一些参数可能是后人发现并补充上去的。)
给对象调用
一般来说,有以下运行方式可以运行脚本:
- NPC属性里含有对应脚本名(你定义好了执行脚本)。
- 由事件、流体或NPC事件赋予脚本名。
SMBX 有3个参数可供使用。(param1
,param2
,param3
)
一些事件会传递给脚本特殊参数值。
事件名 | 物件 | Sysval(Param1) | Sysval(Param2) | Sysval(Param3) |
---|---|---|---|---|
Death | 方块 | 被破坏方块的原对象ID(?) | 方块破坏方式。 | 方块被破坏的ID。 |
Hit | 方块 | 源玩家或NPC的ID | 受到Hit之后的方块ID | 正数表示玩家击中方块,负数表示NPC击中方块,绝对值表示击中类型 |
No More Objects In Layer | 方块 | 原物体 ID | Destruction style | 0 |
On Screen | 方块 | Block ID | 0 | 0 |
Death | NPC | NPC ID | Player ID | 0 |
Active | NPC | NPC ID | 0 | 0 - 无
1 - 由生成器召唤的 NPC |
Talk | NPC | NPC ID | Player ID | 0 |
Grab | NPC | NPC ID | Player ID | 0 - 无
1 - 被抓起时 |
No More Objects In Layer | NPC | NPC ID | 0 | 0 |
Next Frame | NPC | NPC ID | 0 | 0 |
Touch | NPC | NPC ID | Player ID | 当被碰到时,根据方向给予不同的参数值:
0 - 无 1 - 上方 2 - 下方 3 - 左方 4 - 右方 |
Enter | 传送点 | 玩家 ID | 传送点 ID | 0 |
如果对某些物体执行对应传递返回值的脚本,输入以下脚本格式。(例如给NPC设置对应的脚本,Param1返回NPC的PermID。)
with npc(sysval(param1))
'...
end with
Sysval 函数
R/W栏中,(只能 Read 用 - 代表,只能 Write 用 + 代表,R/W 用 ±。)
其他栏里,可能是游戏当中不常用的,或者是发现该函数但效果未知,如果有知道效果的可以补充上去。
sysval(name) | 名称 | 返回数据类型 | R/W |
---|---|---|---|
NCount | 现存NPC数量 | Double | - |
BCount | 现存砖块数量 | Double | - |
BGOCount | 现存BGO数量 | Double | - |
WCount | 现存Warp数量 | Double | - |
LCount | 现存图层数量 | Double | - |
ECount | 现存效果数量 | Double | - |
Actncount | 当前屏幕上有多少NPC。 | Double | - |
Actbcount | 表示当前屏幕上有多少方块。 | Double | - |
sysval(name) | 名称 | 返回数据类型 | R/W |
---|---|---|---|
lvltimer | 当前关卡计时器。 | Double | ± |
GameMode | 游戏模式 0 单人, 1 双人, 2 对战 | Double | - |
Playerhealth | 玩家的1-up数 | Double | ± |
BPlayer1Health | 在战斗模式下第一位玩家的1-up数量。 | Double | ± |
BPlayer2Health | 在战斗模式下第二位玩家的1-up数量。 | Double | ± |
CoinCount | 当前金币数 | Double | ± |
Score | 当前分数 | Double | ± |
StarCount | 星星数量。 | Double | - |
Starcoincount | 获得的星币数量。 | Double | - |
WldInvCount | 大地图物品栏 (即 超级马力欧兄弟 3 的物品栏) 中的道具数量。 | Double | - |
Gametitle | 设置游戏窗口上方的标题。 | String | + |
sysval(name) | 名称 | 返回数据类型 | R/W |
---|---|---|---|
Gametime | 游戏计时器。表示运行该关卡过了多少帧。 | Double | - |
今日的游戏时间。 | Double | - | |
Second | 本机时间的秒。 | Double | - |
Minute | 本机时间的分钟。 | Double | - |
Hour | 本机时间的小时。 | Double | - |
Day | 本机时间的日。 | Double | - |
Month | 本机时间的月。 | Double | - |
Year | 本机时间的年。 | Double | - |
请注意,本机时间的系统变量不会受 Replay 模式的影响。
sysval(name) | 名称 | 返回数据类型 | R/W |
---|---|---|---|
ScrSplitstyle | 屏幕拆分状态。 | Double | - |
Player1scrX | player1的摄像机的左上角x坐标。 | Double | - |
Player1scrY | player1的摄像机的左上角y坐标。 | Double | - |
Player2scrX | player2的摄像机的左上角x坐标。 | Double | - |
Player2scrY | player2的摄像机的左上角y坐标。 | Double | - |
EnableLighting | 启用视线系统。 | Double | + |
Showhud | 是否显示HUD。 | Double | ± |
sysval(name) | 名称 | 返回数据类型 | R/W |
---|---|---|---|
Param1 | 从事件传输的第一个参数。 | Double | ± |
Param2 | 从事件传输的第二个参数。 | Double | ± |
Param3 | 从事件传输的第三个参数。 | Double | ± |
sysval(name) | 名称 | 返回数据类型 | R/W |
---|---|---|---|
壳类是否可以从上方举起(0=on;1=off)。
注意:在1.4.5里,该变量不可用。 |
Double | ? | |
Invtimewhenhurt | 当玩家受伤时的无敌时间。 | Double | ± |
Fluddrestorespeed | 水泵的蓄力时间。 | Double | ± |
Playerbasestatus | 玩家受伤时将拥有的状态以及再次受到伤害时将死亡的状态。 | Double | ± |
Spinjumpfloating | 玩家是否可以使用旋转跳像浣熊马里奥那样滞空。 | Double | ± |
Disablejump | 是否禁止跳跃。 | Double | ± |
Disablespinjump | 是否禁止旋转跳。 | Double | ± |
Disableduck | 是否禁止玩家下蹲。(企鹅形态下,滑行的判定大小存在BUG;林克无法向下斩击!) | Double | ± |
DisableShellDash | 是否禁用龟壳装的冲刺能力。 | Double | ± |
DisablePenguinDash | 是否禁用企鹅装的冲刺能力。 | Double | ± |
DisableHammerShield | 是否禁用锤子装的防御能力。 | Double | ± |
DisableLinkShield | 是否禁用林克护盾防御。 | Double | ± |
DisableLinkSword | 是否禁止林克剑击 (禁止后仍会播放攻击动画)。 | Double | ± |
Disableclimbing | 是否禁止玩家攀爬。 | Double | ± |
disablegrabtop | 是否禁止玩家在 NPC 的上面拾取(无论 GrabTop 是否为 true)。 | Double | ± |
disablegrabside | 是否禁止玩家在 NPC 的侧面拾取(无论 GrabSide 是否为 true)。 | Double | ± |
sysval(name) | 名称 | 返回数据类型 | R/W |
---|---|---|---|
Disablesave | 是否禁止玩家存档。 | Double | + |
Enablepause | 游戏是否可以暂停 | Double | ± |
Yoshiflyable | 是否启用耀西滞空。 | Double | ± |
Enablesmb3statussys | 是否启用SMB3的Power Up系统。 | Double | ± |
Enablewalljump | 是否开启踢墙跳。 | Double | ± |
Enableinertiafornpc | 当从可站立的npc上跳下来时,能产生动力。 | Double | ± |
Shellcanhitblockside | 龟壳是否可以反弹隐形的方块、 | Double | ± |
Coinsforextralife | 玩家可以存储的硬币数量,默认为100,最小值为1。 | Double | ± |
sysval(name) | 名称 | 返回数据类型 | R/W |
---|---|---|---|
Syslang | 系统语言ID | 返回当前系统的语言所对应的ID。
这里可以查询相关语言ID:https://www.science.co.il/language/Locale-codes.php 列举几个常用的:
|
- |
Machinecode | - | 未知变量,资料待考。 | - |
Disablesysconstreset | - | 未知变量,资料待考。 | ± |
Npcstyle | - | 未知变量,资料待考。 | ± |
Disablesharedfludd | - | 若设置为-1,不同水泵的容量将各自分配(?) | ± |
值得注意的是,一些系统变量也可以通过spevent(xxx)
修改。
特殊事件 | 对应的 sysval(name) |
---|---|
引用
https://wohlsoft.ru/pgewiki/Sysval_(TeaScript)
相关群文件的 Super Mario Bros.X 脚本帮助 (功能猎手版)。
- ↑ 不包括后来修改的VK版和功能猎手改进版。