Compare commits
No commits in common. "main" and "api-v1" have entirely different histories.
10
README.txt
10
README.txt
@ -1,3 +1,9 @@
|
||||
v3 正式版出了。
|
||||
sqrtools-pre
|
||||
|
||||
github.com/sqrt2802/sqrtools
|
||||
sqrtools 是开始于 2022 年的名字竞技场转换器项目。从 24m03a 开始,新版本将不再主要维护现有 REPL 转换器并以 "名竞算号代码打包" 作为其新的开发目标。
|
||||
|
||||
目前,sqrtools 的接口还处于测试阶段。此 repo 会更新一些 API 文档等内容。
|
||||
|
||||
请注意,sqrtools 的主要设计应用场合为日常战队管理与自制小工具,其代码未经任何优化,不适合用作测号器。本仓库不包含任何代码和有稳定性保证的可执行文件,请前往 sqrt2802.pages.dev/sqrtools/ 了解最新发布内容。
|
||||
|
||||
你可以在 sqrt2802.pages.dev/sqrtools/docs/ 查看本仓库中文档的线上版本。
|
||||
|
72
docs.md
72
docs.md
@ -2,16 +2,16 @@
|
||||
|
||||
sqrtools 的接口调用指南。
|
||||
|
||||
当前 API 版本:**4**
|
||||
当前 API 版本:**1**
|
||||
|
||||
------
|
||||
|
||||
#### 在代码中添加 sqrtools
|
||||
|
||||
[sqrtools 网页](https://sqrt2802.pages.dev/sqrtools/)提供的的 pyc 文件可以作为 python 库文件使用。把它和你的代码放在同一个文件夹(也可以是 `sys.path` 中的任意目录)中,使用一个合适的文件名,并直接在你的代码中导入即可:
|
||||
[sqrtools 网页](https://sqrt2802.pages.dev/sqrtools/)提供的的 pyc 文件可以作为 python 库文件使用。把它和你的代码放在同一个文件夹(也可以是 `sys.path` 中的任意目录)中,并直接在你的代码中导入即可:
|
||||
|
||||
```python
|
||||
import sqrtoolsfile as sqrtools #导入名为 sqrtoolsfile.pyc 的文件
|
||||
import sqrtoolsfile as sqrtools #导入 sqrtoolsfile.pyc 文件
|
||||
my_awesome_name=sqrtools.Name() #创建一个新的空白名字
|
||||
```
|
||||
|
||||
@ -23,47 +23,39 @@ sqrtools 的主要功能是名为 `Name` 的 python 类。
|
||||
|
||||
`Name` 中包含以下数值:
|
||||
|
||||
- `val`, `namebase` : 使用字符串生成的 int 数组,在其他算号器中可能被称为 `name_base` 等。`val` 长度为 256, `namebase` 长度为 128。
|
||||
- `namestr`, `teamstr`, `namelen`, `teamlen` : 编码存储名字和战队名字符串信息的数组,不建议手动调用。
|
||||
|
||||
- `nameprop` : 名字属性,也就是俗称的"八围"。是长度为 8 的 int 数组,从前到后分别为 \[HP, 攻, 防, 速, 敏, 魔, 抗, 智\] 数值。
|
||||
- `val`, `namebase` : 使用字符串生成的 hash-like 数组,在其他算号器中可能被称为 `name_base` 等。`val` 长度为 256,`namebase` 长度为 128。
|
||||
|
||||
- `nameskill` : 存储名字技能的 int 数组,由 40 个形如 (id, 熟练度) 的二元组组成。技能 id 与名称的对应关系如下:
|
||||
- `nameprop` : 名字属性,也就是俗称的"八围"。是长度为 8 的数组,从前到后分别为 \[攻, 防, 速, 敏, 魔, 抗, 智, HP\] 数值。
|
||||
|
||||
- `sklid`, `sklfreq` : 名字技能。`sklid` 与 `sklfreq` 一一对应,分别表示技能的名称与熟练度。技能 id 与名称的对应关系如下:
|
||||
|
||||
id|0|1|2|3|4|5|6|7|8|9|
|
||||
:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:
|
||||
技能|火球|冰冻|雷击|地裂|吸血|投毒|连击|会心|瘟疫|命轮
|
||||
技能|火球术|冰冻术|雷击术|地裂术|吸血攻击|投毒|连击|会心一击|瘟疫|生命之轮
|
||||
**id**|**10**|**11**|**12**|**13**|**14**|**15**|**16**|**17**|**18**|**19**
|
||||
技能|狂暴|魅惑|加速|减速|诅咒|治愈|苏生|净化|铁壁|蓄力
|
||||
技能|狂暴术|魅惑|加速术|减速术|诅咒|治愈魔法|苏生术|净化|铁壁|蓄力
|
||||
**id**|**20**|**21**|**22**|**23**|**24**|**25**|**26**|**27**|**28**|**29**
|
||||
技能|聚气|潜行|血祭|分身|幻术|防御|守护|反弹|护符|护盾
|
||||
技能|聚气|潜行|血祭|分身|幻术|防御|守护|伤害反弹|护身符|护盾
|
||||
**id**|**30**|**31**|**32**|**33**|**34**|**35**|**36**|**37**|**38**|**39**|
|
||||
技能|反击|吞噬|亡灵|垂死|隐匿|(空技能)|(空技能)|(空技能)|(空技能)|(空技能)
|
||||
技能|反击|吞噬|召唤亡灵|垂死抗争|隐匿|(空技能)|(空技能)|(空技能)|(空技能)|(空技能)
|
||||
|
||||
#### Name 类型方法
|
||||
|
||||
使用 `Name()` 可以创建一个新的空白名字。一个类型为 `Name` 的变量**不可以重复使用**。如果你想对同一个 Name 变量多次载入不同的名字,需要使用 reusable 模式,文档后面的部分有详细介绍。
|
||||
|
||||
在开始计算前,你需要使用 `check()` 方法将名字以字符串参数的形式传入。此函数会返回一个 int 数值,代表操作的完成状态:
|
||||
|
||||
- 0: 名字成功载入。
|
||||
|
||||
- 1: 对已加载的名字变量重复载入,操作失败。
|
||||
|
||||
- -1: 输入了空的字符串,载入失败。
|
||||
|
||||
- -2: 无法分割名字与战队名(可能是因为输入了过多的 @ 符号),载入失败。
|
||||
|
||||
- -3: 名字长度过长,载入失败。
|
||||
使用 `Name()` 可以创建一个新的空白名字。一个 `Name` 类型理论上可以多次使用,但我们不推荐这样做。
|
||||
|
||||
`Name` 类型包含以下用于算号的函数方法:
|
||||
|
||||
- `load()` : 计算 `val` 和 `namebase`。该操作只能进行一次。
|
||||
- `check(namein)` : 载入字符串 `namein`。如果报错,会自动用 `print()` 输出错误信息。
|
||||
|
||||
- `calcprops()` : 计算名字属性,执行前需要先使用 `load()`。
|
||||
- `load()` : 计算 `val` 和 `namebase`。在执行函数前,需要先使用 `check()` 载入。
|
||||
|
||||
- `calcskill()` : 计算名字技能,执行前需要先使用 `load()`。算技能操作只能进行一次。
|
||||
- `calcprops()` : 计算名字属性。在执行函数前,需要先使用 `check()` 和 `load()` 载入。
|
||||
|
||||
计算完成后,你需要手动调用 Name 变量下相关的属性数组查看结果。
|
||||
- `calcskill()` : 计算名字技能。在执行函数前,需要先使用 `check()` 和 `load()` 载入。
|
||||
|
||||
需要注意的是,以上函数均不会返回任何信息。计算完成后,你需要手动调用相关的属性变量查看结果。
|
||||
|
||||
以下是一个计算名字数值属性的示例程序:
|
||||
|
||||
@ -73,26 +65,8 @@ name=sqrtools.Name()
|
||||
name.check('1')
|
||||
name.load()
|
||||
name.calcprops()
|
||||
print(name.nameprop)
|
||||
print(name.nameprop[7],end=' ') #HP
|
||||
for i in range(7): #七围
|
||||
print(name.nameprop[i],end=' ')
|
||||
print()
|
||||
```
|
||||
|
||||
#### 名字加载锁与 Reusable 模式
|
||||
|
||||
`Name` 名字的加载过程是单向且不可重复的。如果你试图对未执行 `load()` 的名字算属性/技能,对名字重复载入、`load()` 和 `calcskill()`,或进行其他非法操作,那么你使用的函数将拒绝操作并返回 `False`。`Name` 类型表现的这种行为在下文中简称为**名字加载锁**。
|
||||
|
||||
如果你想重复加载名字,可以在操作前将名字的 `reusable` 属性设置为 `True` 以启用 Reusable 模式。例如:
|
||||
|
||||
```python
|
||||
name=sqrtools.Name()
|
||||
name.reusable=True
|
||||
```
|
||||
|
||||
Reusable 模式允许你重复使用一个 `Name` 变量,但名字加载锁仍然存在,非法操作会被自动阻止。在你对变量载入新的字符串后,名字加载锁会重置。
|
||||
|
||||
#### NameDev 扩展类
|
||||
|
||||
`NameDev` 是提供给有进阶需求玩家的扩展类型。此类型对外暴露更多的数据属性,并具有适配加成计算的 `namebonus` 和 `calcprops(info)`。`NameDev` 的 `calcprops(info)` 需要一个数组参数 `info`。对于单个号的计算,这一参数应为对应的 `namebase`;计算加成时,可根据需要传入其他名字的相关数值。
|
||||
|
||||
与 `Name` 相比,`NameDev` 不受名字加载锁的限制,但非法操作仍会造成未定义的行为或出现错误,请谨慎使用。
|
||||
|
||||
`NameDev` 的 `load()`, `calcprops()` 和 `calcskill()` 不会返回任何值。
|
||||
|
Reference in New Issue
Block a user