newtonerdai 发表于 2020-6-15 15:39:57

UserPatch 1.5 脚本编写参考 - 2020.12.25



1、特点:
它包含了所有Userpatch 1.5(也包括少量决定版新增条目)的事实、动作、常数、策略值。其中策略值部分顺带包含了征服者C版的策略值。

· 修改日志见二楼。
· 如果发现错误,请在楼下提出,我会加入下一个修改版本。
· 请时不时访问本贴,查看是否有新版本。



文档预览:




2、拓展阅读:
这里还有很多Userpatch时代的AI教程▼
决定版精品贴大索引(请拉到“4. AI 人工智能”部分)
(注:决定版的AI系统几乎完全沿用了Userpatch 1.5,就看这个贴即可)

帖子预览:






3、参考资料:

[*]UserPatch 1.3 脚本编写参考
[*]Scripting Guide - UserPatch v1.5
[*]UserPatchConst.per
[*]AI Scripting Encylopedia
[*]多位AI编写者、我自己的测试结论


4、鸣谢:
@yty (提供模板和巨人肩膀)
@Jack_Lin @Oracle_Ameth @blazefires @春田一九零三 (提供指导)
@troytroytroy @条顿武士 (提供教程)
@cxt @捕影侠 (帮助入门)

newtonerdai 发表于 2020-12-25 23:56:16


2020年12月25日版修改涉及内容:

无法归类的内容

[*]给未完全确定的内容重新加上了黄色高亮。
[*]全部语句的说明排版优化,更好的可读性

事实与动作
动作:

[*]up-create-group
[*]up-filter-* 所有语句说明扩充 + 一些新示例
[*]up-set-group 反人类文案修改成人类能看懂的 + 新增一则高级应用示例
[*]up-target-objects
[*]up-target-point
[*]up-filter-distance
[*]up-filter-garrison
[*]up-get-point-contains
[*]up-get-threat-data
[*]up-get-timer
[*]up-modify-flag 【说明大改!+ 示例2】
[*]up-modify-group-flag
[*]up-remove-objects 加示例2
[*]up-reset-search 加示例2
[*]up-reset-target-priorities
[*]up-retreat-to
[*]up-set-placement-data
[*]up-set-target-by-id
[*]up-set-target-object
[*]up-set-target-point

事实:

[*]up-allied-goal
[*]up-allied-resource-amount
[*]up-allied-resource-percent
[*]up-allied-sn
[*]up-can-train
[*]up-compare-flag
[*]up-compare-text
[*]up-defender-count
[*]up-gaia-type-count-total
[*]up-object-target-data
[*]up-object-type-count
[*]up-object-type-count-total
[*]up-path-distance
[*]up-point-contains
[*]up-timer-status
[*]up-unit-type-in-town

预定义常数:

[*](defconst object-data-formation-id 24)
[*](defconst object-data-base-attack 28)
[*](defconst object-data-garrison-id 30)
[*](defconst action-unload 9)
[*](defconst list-inactive 1)
[*](defconst search-remote 2)
[*]全套DE地形常数表(见 [常数清单] - [地形])

sn策略值:

[*]sn-do-not-scale-for-difficulty-level
[*]sn-number-tasked-units
[*]sn-focus-player-number

#load-if 符号扩展

[*]无

战斗的人生 发表于 2020-6-15 17:20:13

这东西实在太重要了,感谢楼主的辛勤工作{:155:}{:155:}{:155:}

期悦 发表于 2020-6-15 17:28:30

终于有教科书了

Papermanmmj 发表于 2020-6-15 17:34:54

感觉是系统学习AIの宝具,感谢新桶的制作劳动嗷!

龙鳞甲卫 发表于 2020-6-15 22:26:10

正好又可以看书了!!粗略浏览一下,126页!膜拜桶大师,感谢辛苦制作~

zbhcn 发表于 2020-6-16 03:44:31

支持,辛苦了

万里征战来封侯 发表于 2020-6-16 12:21:01

真的很有用哦。没想到大佬虽然在研究决定版的技术,也还能造福UP的技术玩家。

ageofdota 发表于 2020-6-16 12:52:30

决定版用不了userpatch吧

newtonerdai 发表于 2020-6-16 17:59:52

ageofdota 发表于 2020-6-16 12:52
决定版用不了userpatch吧

决定版沿用了UP1.5的AI系统,触发系统则只沿用了一部分。

newtonerdai 发表于 2020-7-1 11:58:04

7月1日更新。
把第一页的目录删掉了。因为它几乎没用,但又会造成严重卡顿。

修改了几个语句的表述。(忘了是哪几个了)

修改了数学运算符里%*、%/和neg的表述。

newtonerdai 发表于 2020-8-12 11:46:19

本帖最后由 newtonerdai 于 2020-8-12 11:51 编辑

2020年8月12日版修改涉及内容:

无法归类的内容
增加“编者按”的用法指导(建议查看)
给未完全确定的内容重新加上了黄色高亮。


事实与动作
up-set-defense-priority
up-get-precise-time
up-get-victory-limit的例子更正
up-target-objects 添加重要注意事项
up-projectile-detected
寻的→寻敌
供直接寻的使用→供直接单位控制(DUC)使用
up-set-target-object

预定义常数:
object-data-ownership
object-data-capture-flag
object-data-idling
(defconst players-tribute 52)是支持黄金的
(defconst players-tribute-memory 53)是支持黄金的
(defconst object-data-to-precise 80)及与“距离”有关的另外几个物件数据
(defconst unit-count 24)
(defconst unit-type-count 25)
(defconst action-patrol 2)

sn策略值:
sn-attack-group-gather-spacing
sn-scale-minimum-attack-group-size
sn-minimum-attack-group-size
sn-scaling-frequency
sn-enable-patrol-attack
sn-zero-priority-distance
sn-defense-distance
sn-safe-town-size
“战略数字”全部改为了“策略值”

newtonerdai 发表于 2020-11-19 22:40:03


2020年11月19日版修改涉及内容:

无法归类的内容
给未完全确定的内容重新加上了黄色高亮。
默认防御优先级
默认进攻优先级
UserPatch 1.5相对于UserPatch 1.3的改进(策略值编号扩充)
(goal)点1 → (goal)点1-x   ;(goal)点2 → (goal)点2-x

事实与动作
up-set-attack-stance
up-set-offense-priority
up-get-threat-data
up-garrison

预定义常数:
搜索源 部分措辞修改
事实编号中的unit-count、unit-type-count
progress-type-train
80、81号资源
object-data-patrolling 结队巡逻时为0
orderid-patrol结队巡逻
actionid-patrol 结队巡逻
object-data-idling DE的逆转问题已修复
object-data-group-flag
object-data-dropsite

sn策略值:
sn-percent-attack-boat修正为了复数sn-percent-attack-boats
sn-number-attack-groups大量增加(关于NAG/GroupATK)
sn-maximum-town-size大量增加(关于TSA)
sn-minimum-town-size
sn-disable-defend-groups
sn-gate-type-for-wall(DE新增)

#load-if 符号扩展
DE-AVAILABLE 决定版

期悦 发表于 2021-1-17 21:08:35

本帖最后由 HudsonLee 于 2021-1-17 21:10 编辑

说一下一个关于up-modify-group-flag的情况:
当你想新单位循环从编队移除,如图,写成这样的。如果删掉第三行
(up-remove-objects search-local object-data-group-flag != 4)
会导致本地搜索的单位无法被编队,shift/ctrl+0~9都不行。
(defrule
    (true)
=>
    (up-full-reset-search)
    (up-find-local c: 75 c: 240)
    (up-remove-objects search-local object-data-group-flag != 4)
    (up-create-group 0 40 c: 4)
    (up-modify-group-flag 0 c: 4))




期悦 发表于 2021-1-23 10:18:42

策略值建议按类型分类,资源类、建造类、外交类…这样

newtonerdai 发表于 2021-1-29 15:48:52

HudsonLee 发表于 2021-1-17 21:08
说一下一个关于up-modify-group-flag的情况:
当你想新单位循环从编队移除,如图,写成这样的。如果删掉第 ...

没看太明白。
会导致本地搜索的单位无法被编队,shift/ctrl+0~9都不行
这句的意思是,Ctrl+Shift+Fx切换控制AI玩家,然后手动按shift+0~9或ctrl+0~9都无法更改某些单位的编队编号吗。

会不会是AI每0.33秒编队一次,而你只手动操作了几次,手动编队成功了但瞬间又被AI的编队语句给覆盖掉了呢

newtonerdai 发表于 2021-1-29 15:51:08

HudsonLee 发表于 2021-1-23 10:18
策略值建议按类型分类,资源类、建造类、外交类…这样

善用Ctrl+F搜索关键词,其实可以更精确地查找。
我会考虑给每个sn值都加一个[标签](如[资源] [建造] [外交]),届时可以通过搜索“[资源]”来快速定位。

爽身粉 发表于 2024-1-19 14:15:05

非常感谢新桶的分享,要是有决定版的就好了{:154:}
页: [1]
查看完整版本: UserPatch 1.5 脚本编写参考 - 2020.12.25