系统变量 (TeaScript)

来自SMBX 中文百科
< 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 -
Systime 今日的游戏时间。 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
Grabshellinsmb3way 壳类是否可以从上方举起(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

列举几个常用的:

  • 0 - 万国统一码 - UTF-8
  • 1028 - 繁体中文(台湾) - zh-tw
  • 1033 - 英语(美国) - en-us
  • 1034 - 西班牙语(西班牙) - es-es
  • 1036 - 法语(法国) - fr-fr
  • 1040 - 意大利语(意大利) - it-it
  • 1041 - 日语(日本) - ja
  • 1042 - 韩语(韩国) - ko
  • 1049 - 俄语(俄罗斯) - ru
  • 2052 - 简体中文(中华人民共和国) - zh-cn
  • 2057 - 英语(英国) - en-gb
  • 3076 - 繁体中文(香港特别行政区) - zh-hk
  • 16393 - 英语(印度) - en-in
-
Machinecode - 未知变量,资料待考。 -
Disablesysconstreset - 未知变量,资料待考。 ±
Npcstyle - 未知变量,资料待考。 ±
Disablesharedfludd - 若设置为-1,不同水泵的容量将各自分配(?) ±

值得注意的是,一些系统变量也可以通过spevent(xxx)修改。

特殊事件 对应的 sysval(name)

引用

https://wohlsoft.ru/pgewiki/Sysval_(TeaScript)


相关群文件的 Super Mario Bros.X 脚本帮助 (功能猎手版)。

  1. 不包括后来修改的VK版和功能猎手改进版。