这文章是写给要节省变量,且略懂二进制与位元运算的玩家使用.
先谈二进制, 一般我们用的是十进制, 十进制可转成2进制,如下转换, 转换规则请自行查询关键字"二进制"
0 => 0
1 => 1
2 => 10
3 => 11
4 => 100
5 => 101
6 => 110
7 => 111
2进制表示的数是0和1的组合, 因此可以当开关来使用. 将下列二进制数字以白话文描述开关
0 => 全关
1 => 第一个开启
10 => 第一个关闭,第二个开启
11 => 第一个第二个开启
100 => 第三个开启,其他关闭
101 => 第一和第三个开启,第二个关闭
110 => 第二和第三个开启,第一个关闭
111 => 第一和第二个和第三个开启
把二进制数转回十进制也可以达到同样控制效果.
实作的通用写法:
假设您要控制第N个开关.一个变量var(40)是开关
令一个数k = 2的N次幂(N = 0,1,2....,16)
检测第N个开关有无开启的方式是
trigger1 = var(40) & k
开启第N个开关的方式是
var(40) = var(40) | k
关闭第N个开关的方式是
trigger1 = var(40) & k
var(40) = var(40) ^ k
&, |, ^ 是位元运算子, 请劳驾自行搜索
N我目前测到16是可以用的,理论上应该可以到32
实作测试一段用按鍵开关着色与半透明的代码如下,用第二和第十六个开关调整颜色和透明度
[State -1]
type = VarSet
trigger1 = roundstate = 1
v = 40
value = 0
[State -1]
type = VarSet
trigger1 = command = "x"
v = 40
value = var(40) | 2
[State -1]
type = VarSet
trigger1 = command = "y"
Trigger1 = var(40) & 2
v = 40
value = var(40) ^ 2
[State -1]
type = trans
Trigger1 = var(40) & 2
trans = addalpha
alpha = 50,50
[State -1]
type = VarSet
trigger1 = command = "a"
v = 40
value = var(40) | 65536
[State -1]
type = VarSet
trigger1 = command = "b"
Trigger1 = var(40) & 65536
v = 40
value = var(40) ^ 65536
[State -1]
type = palFX
Trigger1 = var(40) & 65536
time = 1
add = 60,0,0
先谈二进制, 一般我们用的是十进制, 十进制可转成2进制,如下转换, 转换规则请自行查询关键字"二进制"
0 => 0
1 => 1
2 => 10
3 => 11
4 => 100
5 => 101
6 => 110
7 => 111
2进制表示的数是0和1的组合, 因此可以当开关来使用. 将下列二进制数字以白话文描述开关
0 => 全关
1 => 第一个开启
10 => 第一个关闭,第二个开启
11 => 第一个第二个开启
100 => 第三个开启,其他关闭
101 => 第一和第三个开启,第二个关闭
110 => 第二和第三个开启,第一个关闭
111 => 第一和第二个和第三个开启
把二进制数转回十进制也可以达到同样控制效果.
实作的通用写法:
假设您要控制第N个开关.一个变量var(40)是开关
令一个数k = 2的N次幂(N = 0,1,2....,16)
检测第N个开关有无开启的方式是
trigger1 = var(40) & k
开启第N个开关的方式是
var(40) = var(40) | k
关闭第N个开关的方式是
trigger1 = var(40) & k
var(40) = var(40) ^ k
&, |, ^ 是位元运算子, 请劳驾自行搜索
N我目前测到16是可以用的,理论上应该可以到32
实作测试一段用按鍵开关着色与半透明的代码如下,用第二和第十六个开关调整颜色和透明度
[State -1]
type = VarSet
trigger1 = roundstate = 1
v = 40
value = 0
[State -1]
type = VarSet
trigger1 = command = "x"
v = 40
value = var(40) | 2
[State -1]
type = VarSet
trigger1 = command = "y"
Trigger1 = var(40) & 2
v = 40
value = var(40) ^ 2
[State -1]
type = trans
Trigger1 = var(40) & 2
trans = addalpha
alpha = 50,50
[State -1]
type = VarSet
trigger1 = command = "a"
v = 40
value = var(40) | 65536
[State -1]
type = VarSet
trigger1 = command = "b"
Trigger1 = var(40) & 65536
v = 40
value = var(40) ^ 65536
[State -1]
type = palFX
Trigger1 = var(40) & 65536
time = 1
add = 60,0,0
拳皇无















