3个不稳定版本
使用旧的Rust 2015
0.2.0 | 2017年5月25日 |
---|---|
0.1.1 | 2017年4月21日 |
0.1.0 | 2017年4月6日 |
#41 in #extended
在 poe-superfilter 中使用
8KB
154 行
暗黑破坏神:超滤器
Path of Exile 财富过滤器的前处理程序,它向GGG的财富过滤器语法添加变量、混入、算术和许多其他有用功能,并将使用扩展语法的过滤器编译成纯财富过滤器,可以在游戏中使用。
您可以在本存储库的发行页面上下载当前版本。
语法
混入
混入是可以包含在任何地方的指令块的可重复使用的代码块。它们可以用于最小化过滤器重复部分的重复。
Mixin FlaskMagic($type)
Class Flask
Rarity Magic
BaseType $type
SetTextColor 100 100 255 255
SetBorderColor 100 100 100
SetFontSize 38
Show
+FlaskMagic("Small")
ItemLevel <= 5
Show
+FlaskMagic("Medium")
ItemLevel <= 8
ItemLevel >= 3
这编译成
Show
Class Flask
Rarity Magic
BaseType "Small"
SetTextColor 100 100 255 255
SetBorderColor 100 100 100
SetFontSize 38
ItemLevel <= 5
Show
Class Flask
Rarity Magic
BaseType "Medium"
SetTextColor 100 100 255 255
SetBorderColor 100 100 100
SetFontSize 38
ItemLevel <= 8
ItemLevel >= 3
变量
您可以这样定义变量
$var = "value"
$var2 = "this" "is" "a" "test"
$num = 10
它们可以包含任何可以传递给过滤器指令的值,包括值列表。
变量定义允许在两个地方进行
-
第一个块之前
这里定义的变量将是全局可见的。
-
在块内部
如果放置在块内部,该变量将只在该块及其嵌套块中可见,并且只对变量定义之后的指令可见。
算术
您基本上可以在任何地方使用简单的数学表达式。
$scale = 1.2
Show
SetFontSize 38 * $scale
请注意,虽然您可以使用非整数数字,但所有计算的结果在渲染期间都会四舍五入为整数,因为GGG的财富过滤器语法仅支持整数。
这同样也是有效的语法,但是您可能想添加一些澄清括号。
Show
SetTextColor 100 * $foo 100 255 + $bar 255
# Probably better like that:
SetTextColor (100 * $foo) 100 (255 + $bar) 255
导入
您可以使用导入语句导入其他Superfilter文件。那里定义的混入和全局变量也将可用于包含的文件。
Import "some_file.sf"
条件块
您可以根据条件包含或排除块。要表示条件,您可以使用简单的相等和比较检查或布尔值。
$yes = True
$no = 1 > 2
Show if True # This block will be included
SetStatement 123
Show if False # this won't
SetStatement 234
Show if 2 > 3
SetStatement 345
Show if 3 > 2
SetStatement 456
Show if $yes
SetStatement 567
Show if $no
SetStatement 678
注释
根据您的使用情况,您可能希望将注释传递到输出或保留。您可以使用--comments
选项更改此行为。如果指定了该选项,则注释将传递到输出,否则将丢弃。
如果要在输出中正确格式化,对于在Show/Hide块之前的注释存在一个小警告
Show
# comment
Class Flask
# another comment
# comments for this following block
# more comments
Show
Class Flask
---- This will actually produce the following output:
Show
# comment
Class Flask
# another comment
# comments for this following block
# more comments
Show
Class Flask
为了避免这种行为,您可以使用特殊的“块注释”语法
Show
# comment
Class Flask
# another comment
#! comment for this following block
#! more comments
Show
Class Flask
----- Output:
Show
# comment
Class Flask
# another comment
# comments for this following block
# more comments
Show
Class Flask
这样做的目的是为了使语法更清晰 - 没有明确的块注释,就无法在块的末尾添加注释行,因为无法将其与旨在描述下一个块的注释行区分开来。
命令行使用方法
USAGE:
superfilter.exe [FLAGS] [OPTIONS] <PATH>
FLAGS:
-c, --comments Include comments in the output
-h, --help Prints help information
-p, --pretty Include indentation and other formatting in the output
-V, --version Prints version information
OPTIONS:
-l, --line-endings <LINE_ENDING> Type of line ending used (LF OR CRLF) defaults to the platform line ending
[values: lf, crlf]
-o, --output <FILE> Output file. If this option is omitted, the output will be printed to the
console.
ARGS:
<PATH> Path of the input file
为脚本创建者提供的注意事项
如果您打算将您创建的过滤器分发给其他玩家,您可能希望为他们提供一个简单的重新编译您的脚本的方法,以便他们修改您的过滤器。
您如何做完全取决于您,但有一个PowerShell脚本(compile-script.ps1)可以帮助您在存储库中进行修改并包含在您的过滤器中。它简单地编译指定的文件,但也会检查Superfilter是否已安装以及是否为足够新的版本。如果没有,它会打印错误消息并指导用户到下载页面安装工具。要使用脚本,只需更改其中的文件名以匹配您的过滤器需求,然后执行它以重新编译您的过滤器。
路线图
如果您有建议,请随时创建一个问题,告诉我所有关于它的情况!
已经计划好的事情,没有特定的顺序
- 改进布尔表达式的支持(在布尔值上添加和/或操作)
lib.rs
:
这是poe-superfilter的支持库,它包含其中需要的程序宏。
依赖关系
~1.5MB
~41K SLoC