标本 发表于 2019-8-15 21:33:46

单位的附属关系和寄生关系。

由于最近某件事情的启发,怀疑帝国2里面的单位是不是也有某种奇妙的关系,最简单的,就是驻扎关系,无需赘言,另外还有两个容易被忽略的关系(附属关系和寄生关系)
附属关系其实是组合建筑实现的基础,TC的主体和三个装饰物,城门的主体和两个边。这种关系维持着游戏的正常运行,但是大家有没有想过,如果TC和他的装饰物变成了别的东西,并保留这种关系的话,会发生什么呢?在这个想法下,本人就做了些实验,本来想用1.5的,但是1.5有个画蛇添足的补丁,在地图上放一个TC,明明指定只改变主TC的所有权,结果他么的连装饰物都变色了,很不适合将单位分开观察。004的MOD,我试了下不了,如果依然有1.5的某些特性就蛋疼了,所以暂时还是用1.0C版来做,思路就是放一个TC,设法将TC的主体和三个装饰变成别的单位。本人的技术水平想到的办法就是将他们升级为打包的投石机,再将打包的投石机的拆包单位改成别的。虽然程序会几率性的当机。但是还是会有成功的时候,发现主单位和附属单位有如下关系:
1、附属单位是建筑或者投石机之类的时候不可选
2、通过改变所有权,主单位和附属单位,附属单位之间都可以互殴,当然也可以和别的单位互殴。伤害全部是按照主单位的护甲计算,都算主单位挨打,主单位挨一次打同步一次血量(如果主单位的当前血量大于属于单位的最大生命值,会爆血),主单位被打死(开始死亡动画),附属单位血条消失,不可控制,但不会停下现有动作。主单位死亡动画结束彻底消失,附属单位才跟着消失(无死亡动画)。僧侣的治疗,触发损坏,DEL再瞬间驻扎(血量为0但不死)对主单位血量的影响不会同步到附属单位身上。不过村民的修理会同步血量(如果主单位的当前血量大于属于单位的最大生命值,不会爆血)。附属单位可以被治疗,被触发损坏,DEL再瞬间驻扎影响当前血量,但一旦挨打血量又会重置。由于附属单位变成建筑不可选,暂时没有试过将附属单位变成攻城武器,船之类的,修理附属单位对血量的影响不明。
3、只有将主单位驻扎起来,附属单位才能在被打死的时候开始死亡动画,一个附属单位死了,别的也会死,想保命就驻扎起来等主单位加血加到大于0。如果主单位死亡并消失,还有附属单位驻扎着,那么执行卸载动作会让它直接消失。如果将主单位DEL再瞬间驻扎进运输船(不可回复血量),附属单位将无敌,不管怎么挨打都不会死了。
在附属关系里面,附属属单位似乎没什么独立性,就是附庸,但是寄生关系就不一样了,寄生关系和附属关系的区别就是,挨打对寄生单位的血量没有任何影响,只有主单位死亡消失后,寄生单位才会独立,正常挨打损血。我也是凑巧弄出的寄生关系,具体触发原理未知。目前只能间接实现附属和寄生关系,如果以后UP再升级,加上指定和取消附属关系和寄生关系的功能,那就有意思多了,目前尚不明确场景文件本身是否能直接保存单位之间的这种关系(驻扎关系能保存这点毫无疑问)

标本 发表于 2019-8-15 21:39:53

这是两个存档文件,可以看看区别,存档目前只能用C版打开,由于单位都是拿建筑改的,他们死亡的时候似乎会产生盖亚的随机编号的单位,如果这个编号不可用,就会当机,不过变成房屋地基的几率最高。这两个存档里,编队为1的单位就是主单位,另外两个同类别单位和城墙牢笼里面关着的玩家2的单位是附属单位或寄生单位。(城墙牢笼的左上方是个改权区域,将玩家1的单位变成玩家2的。),尚未被改权的单位升级有效。

标本 发表于 2019-8-16 19:48:26

troytroytroy 发表于 2019-8-16 17:04
順便記得搞清楚這些錯誤:

這件事並不會發生。推測你是把這個和增值城門的bug混在一起了。


这个的确是我错 了,我已经很久没在地图编辑器上放TC和城门这两种单位了,靠着以前模糊的印象得出的结论,至于附属单位有没有ID,004已经说了,不过我还是也放一个1.5的档案证明下吧,测试的时候不要对这个档案进行任何修改,可以用触发工作室看看这个档案到底写的啥。

newtonerdai 发表于 2019-8-15 22:06:50

嘤缺斯汀。
附属单位变成人之后可以互殴,这已经很诱人了。
或许可以做成奇幻电影里,一个建筑两个蛇头互相对骂的情景{:162:}

我是谁004 发表于 2019-8-15 22:22:46

您好像没有提到“寄生关系”是个什么概念{:157:}

troytroytroy 发表于 2019-8-16 02:18:41

你能解釋一下怎麼改變所謂附屬單位的所有權的嗎?如果是用觸發改變所有權,我想你這個製作過程應該100%會是有問題的。主要原因是附屬單位並沒有所謂的地圖ID ( 和ID正負無關,它們是完全沒有自己的ID),一個沒有地圖ID的東西是沒法用觸發去改變所有權的。我建議你把製作步驟也寫出來,這樣其他人比較能清楚看出你的做法。

troytroytroy 发表于 2019-8-16 12:32:53

troytroytroy 发表于 2019-8-16 02:18
你能解釋一下怎麼改變所謂附屬單位的所有權的嗎?如果是用觸發改變所有權,我想你這個製作過程應該100%會是 ...

附屬單位是沒有地圖ID,這個放個城門打開aokts就可以驗證了。

不過我剛剛驗證了一下,的確在1.0c版本的改權與1.5的改權效果不同。換句話說附屬單位這種無ID單位在1.0c裡是可以和主體單位擁有不同所有者的。這件事挺有趣。

troytroytroy 发表于 2019-8-16 12:49:27

troytroytroy 发表于 2019-8-16 02:18
你能解釋一下怎麼改變所謂附屬單位的所有權的嗎?如果是用觸發改變所有權,我想你這個製作過程應該100%會是 ...

有個想法你可以試試,這樣或許就可以用up1.5實現了。
先用up1.5升級附屬單位,進行區域改權時,試試看能不能利用"類別"將這些附屬單位獨立改權。

标本 发表于 2019-8-16 14:33:33

troytroytroy 发表于 2019-8-16 12:49
有個想法你可以試試,這樣或許就可以用up1.5實現了。
先用up1.5升級附屬單位,進行區域改權時,試試看能 ...

试过了,改一个别的都改了,有点多余的优化。但是C版里就可以独立改权。所以才在主楼那样说。存档我放在2楼,只要没有单位死亡就暂时不会当机。当机的原因和附属没什么关系,拿建筑改成兵的导致的。使用的方法依然是升级附属单位,只不过C版不支持UP语句,只能改DATA自定义科技效果了。

标本 发表于 2019-8-16 14:49:59

troytroytroy 发表于 2019-8-16 12:32
附屬單位是沒有地圖ID,這個放個城門打開aokts就可以驗證了。

不過我剛剛驗證了一下,的確在1.0c版本的 ...

有ID的,只是保存场景SCX文件时不会保存附属建筑的信息,地图编辑器每次载入场景文件的时候重新生成附属建筑,比如你放一个城门,ID为0,同时就会生成ID为1,2的两个边,保存退出,ID为1,2的两个边被忽略了,用aokts看就只有有一个城门,再用游戏程序载入这个剧本。就给这个城门自动生成ID为3,4的两个边(事实上,可以听到声音),你新放上去的单位ID就是5。下一个新单位的ID是累加的。同时也可以解释,存在TC和城门等组合建筑的场景文件,你直接打开没有任何修改再退出都提示已经修改是否要保存。

troytroytroy 发表于 2019-8-16 15:43:48

标本 发表于 2019-8-16 14:49
有ID的,只是保存场景SCX文件时不会保存附属建筑的信息,地图编辑器每次载入场景文件的时候重新生成附属 ...

你可以告訴我你怎麼"證明"這些附屬單位有ID嗎?假設aokts無法檢測出來,但是遊戲中會加上這些單位ID的話,你就必須給出一個可以檢測出"附屬單位有ID"的程式出來才能證明它有ID。

troytroytroy 发表于 2019-8-16 15:46:49

标本 发表于 2019-8-16 14:33
试过了,改一个别的都改了,有点多余的优化。但是C版里就可以独立改权。所以才在主楼那样说。存档我放在2 ...

話說你都改.dat了為什麼還要用升級轉換?直接改變附屬單位難道有什麼問題嗎?

标本 发表于 2019-8-16 16:49:06

troytroytroy 发表于 2019-8-16 15:46
話說你都改.dat了為什麼還要用升級轉換?直接改變附屬單位難道有什麼問題嗎? ...

如果附属单位是建筑之类的话就不可选,如果附属单位不是建筑的话,在编辑器里面放主单位会当机(不知道为什么会这样,哪里弄的不对),不过游戏中生成地基却又不会,也会发生一些奇妙的事情,这个被忽略了。

标本 发表于 2019-8-16 16:50:44

troytroytroy 发表于 2019-8-16 15:43
你可以告訴我你怎麼"證明"這些附屬單位有ID嗎?假設aokts無法檢測出來,但是遊戲中會加上這些單位ID的話 ...

我已经想到一个证明的办法了,不过现在还有点忙,晚点传一个1.5的scx档案。

troytroytroy 发表于 2019-8-16 17:04:31

标本 发表于 2019-8-16 14:49
有ID的,只是保存场景SCX文件时不会保存附属建筑的信息,地图编辑器每次载入场景文件的时候重新生成附属 ...

順便記得搞清楚這些錯誤:
再用游戏程序载入这个剧本。就给这个城门自动生成ID为3,4的两个边
這件事並不會發生。推測你是把這個和增值城門的bug混在一起了。
同时也可以解释,存在TC和城门等组合建筑的场景文件,你直接打开没有任何修改再退出都提示已经修改是否要保存。
這句話也是錯的,你可以直接放一個城門,保存退出再進去。不管進去幾次都不會有提示要你保存修改的。你之所以會有這個錯誤認知也是因為在測試的時候誤觸了城門增值的bug。

我是谁004 发表于 2019-8-16 19:11:10

troytroytroy 发表于 2019-8-16 15:43
你可以告訴我你怎麼"證明"這些附屬單位有ID嗎?假設aokts無法檢測出來,但是遊戲中會加上這些單位ID的話 ...

确实是不同的单位。刚才用OllyDbg经过测试,给玩家2放了一个城镇中心后玩家2拥有四个单位(RTWC、RTWC1A、RTWC1B、RTWC1C)而且有各自独立的ID,不过后三个单位都有一个属性指向第一个。
1.5版确实无法让一个有附属单位的单位部分改变所有权,因为只要一改其中一个,其他所有部分也都会变成那个玩家的。以前我做过这样的实验,可以让城镇中心对着自己射箭

troytroytroy 发表于 2019-8-16 19:33:37

我是谁004 发表于 2019-8-16 19:11
确实是不同的单位。刚才用OllyDbg经过测试,给玩家2放了一个城镇中心后玩家2拥有四个单位(RTWC、RTWC1A ...

那就真的很有趣了。所以這些附屬單位的屬性指向包含哪些?生命值?攻防係數?

标本 发表于 2019-8-16 19:44:40

我是谁004 发表于 2019-8-16 19:11
确实是不同的单位。刚才用OllyDbg经过测试,给玩家2放了一个城镇中心后玩家2拥有四个单位(RTWC、RTWC1A ...

流弊啊,不错不错不错,如果那个属性是可以通过UP语句修改的,很有可能有希望在场景中直接制定附属关系。

troytroytroy 发表于 2019-8-16 20:10:35

标本 发表于 2019-8-16 19:44
流弊啊,不错不错不错,如果那个属性是可以通过UP语句修改的,很有可能有希望在场景中直接制定附属关系。 ...

其實我覺得004應該反過來思考。既然不同ID單位能夠有屬性指向,那應該把這種屬性指向寫成一個新觸發才對。

troytroytroy 发表于 2019-8-16 20:13:33

标本 发表于 2019-8-16 16:49
如果附属单位是建筑之类的话就不可选,如果附属单位不是建筑的话,在编辑器里面放主单位会当机(不知道为 ...

我還是覺得可以直接改,我記得以前密鋪帝就有改過附屬單位是四個士兵的。你可以搜尋一下他的帖子。
页: [1] 2
查看完整版本: 单位的附属关系和寄生关系。