酸甜苦辣咸 发表于 2014-9-27 20:39:06

怎样改变英雄的攻击状态?

本帖最后由 酸甜苦辣咸 于 2014-9-27 20:40 编辑

比如说我要改变一个英雄的攻击状态,从防御状态变为攻击状态,因为英雄一开始的攻击状态就是防御,只要我军的士兵逃到一定的范围,他就不会再继续追击,然后原路返回,而在战役中我想让他追挤我军的士兵,但不知道要怎么改成攻击状态,求各位赐教.                                                                  

四个圈 发表于 2014-9-27 20:44:31

什么意思不攻击状态变为攻击状态吗

酸甜苦辣咸 发表于 2014-9-27 20:45:56

0000`` 发表于 2014-9-27 20:44
什么意思不攻击状态变为攻击状态吗

是从防御状态变为攻击状态

四个圈 发表于 2014-9-27 20:46:57

https://www.hawkaoe.net/bbs/thread-117430-1-1.html          应该能解决你的问题@酸甜苦辣咸

酸甜苦辣咸 发表于 2014-9-27 20:53:44

0000`` 发表于 2014-9-27 20:46
https://www.hawkaoe.net/bbs/thread-117430-1-1.html          应该能解决你的问题@酸甜苦辣咸

那个帖子有点发杂,我看不懂,能说得清楚点吗?

羅傑 发表于 2014-9-27 20:57:17

用觸發是做不到的,必須使用翔鷹版的AI~~
但詳細我就不清楚了

16281527471 发表于 2014-9-27 21:00:52

换马甲了 要不然就三连了                他说的意思应该是用一个和主角一模一样的单位,

驻扎进入一个叫OLD那个单位要在重组资料库找到 然后让OLD持续跟着主角

当你想恢复攻击模式的时候就移除主角,并且移除OLD这样另一个主角就可以正常出现了
@酸甜苦辣咸

羅傑 发表于 2014-9-27 21:08:27

16281527471 发表于 2014-9-27 21:00
换马甲了 要不然就三连了                他说的意思应该是用一个和主角一模一样的单位,

驻扎进入一 ...

英雄生產出來還是英雄,狀態一樣還是防衛狀態
這個方法並不能解決LZ的問題,這只適用於一般單位,而不適用於英雄單位

四个圈 发表于 2014-9-27 21:16:03

本帖最后由 0000`` 于 2014-9-28 13:31 编辑

.

条顿武士 发表于 2014-9-27 22:05:00

在up环境下可以用下面这个语句来改变电脑玩家单位的进攻状态:

up-set-attack-stance
语法
up-set-attack-stance (in)(const)单位编号 类型操作符 (in)(op)进攻状态
功能
设置给定类型的单位的进攻状态。
示例
设置所有长矛兵进攻状态为“原地坚守”。
(defrule
      (true)
=>
      (up-set-attack-stance spearman-line c: stance-stand-ground)
      (disable-self)
)

——————————————————————————————————————————————
如果要改变英雄的进攻状态,可以对照单位编号表查找到英雄的编号:
https://www.hawkaoe.net/bbs/thread-3978-1-1.html   8楼

然后将对应电脑玩家的AI加入如下语句:

(defconst stance-aggressive 0) ;进攻状态
(defconst stance-defensive 1) ;防御状态
(defconst stance-stand-ground 2) ;坚守状态
(defconst stance-no-attack 3) ;不还击状态


(defrule
      (true)
=>
      (up-set-attack-stance 166 c: stance-aggressive) ;单位编号166为英雄骑士罗兰
      (disable-self)
)

这样进入游戏后,电脑玩家的所有罗兰骑士都会变为进攻状态。当然这里也可以灵活的加入一些条件,比如电脑的黄金数量大于一定数值后改变进攻状态,这样可以通过进贡触发来控制电脑改变单位进攻状态的时机。

影月骑士 发表于 2014-9-27 22:35:14

本帖最后由 影月骑士 于 2014-9-27 22:51 编辑

条顿武士 发表于 2014-9-27 22:05
在up环境下可以用下面这个语句来改变电脑玩家单位的进攻状态:

up-set-attack-stance

(defrule
         (true)
=>
         (up-set-attack-stance spearman-line c: stance-stand-ground)
         (disable-self)
)

问一下,实际编写时,要将stance-stand-ground替换为2,对吗?不然会
那么应该这样写吗?
(defrule
(true)
=>
(up-set-attack-stance spearman-line c: 2)
(disable-self)
)
——————————————————————————
好啦,经过实验,的确要把stance-stand-ground 改成2,其他的对应修改

那么有一问:此法可不可以修改比如,id为10的单位,的攻击状态?



影月骑士 发表于 2014-9-27 22:53:41

本帖最后由 影月骑士 于 2014-9-28 00:27 编辑

回答楼主一下,你可以搜索“userpatch1.3脚本编写参考”,里面就会有很详细的脚本编写教学:https://www.hawkaoe.net/bbs/forum.php?mod=viewthread&tid=112481。学会了这些,才能够看懂其他的教程,比如断幺平和的教程

条顿武士 发表于 2014-9-27 23:03:41

影月骑士 发表于 2014-9-27 22:53
回答楼主一下,你可以搜索“userpatch1.3脚本编写参考”,里面就会有很详细的脚本编写教学。学会了这些,才 ...

语法上是不可以按照单位ID修改状态的,而且通过一个玩家的AI修改其他玩家单位的数据有点越权的意思。

影月骑士 发表于 2014-9-27 23:04:56

本帖最后由 影月骑士 于 2014-9-28 00:00 编辑

条顿武士 发表于 2014-9-27 23:03
语法上是不可以按照单位ID修改状态的,而且通过一个玩家的AI修改其他玩家单位的数据有点越权的意思。
那么只可以按照ID读取单位数据吗?

另外,关于那个定义语句的意思是用stance-stand-ground直观地代表数字2吗?如果写成(defconst yuandi 2),那么后面也可以把stance-stand-ground替换成yuandi吧?
————————————————————————
实测,可以替换

老子是妖怪 发表于 2014-9-27 23:12:06

哎马,,好麻烦

影月骑士 发表于 2014-9-27 23:52:41

老子是妖怪 发表于 2014-9-27 23:12
哎马,,好麻烦
但是效果可以很惊人!!
比如这个:。这是我做的一个小战役,输入1可以定身敌人,输入2可以解除定身。

条顿武士 发表于 2014-9-28 21:54:34

回复楼主,自己在AI文件夹里新建一个***.per文件,用记事本打开然后写入代码。之后建立一个同名的***.ai空文件,就可以在编辑器的玩家选项卡里看到自己设计的AI了。

老子是妖怪 发表于 2014-10-5 14:23:12

的确。。。
页: [1]
查看完整版本: 怎样改变英雄的攻击状态?