水流行险 发表于 2021-2-3 06:25:34

【已解决】如何取消裸奔及裸城?

本帖最后由 水流行险 于 2021-6-1 02:22 编辑

战斗胜利后,胜利的一方没有部队只剩下宠物后,随机增加几个低级部队,如英雄招募时带的部队。这样避免守城的英雄战胜后没有部队了,但下一个电脑的连续攻击会直接占领城市,因为没有部队的英雄视为不存在的“幽灵状态”。请版主和高手指点?

逻辑应该是:

战后生成
检查胜利一方1234567的部队
如果为0
检查英雄所属种族
则增加1级2级的兵随机数量1-10个

Archer30 发表于 2021-3-10 22:14:02

水流行险 发表于 2021-3-10 01:04
@Archer30
还是搞不定!我的脚本就剩下这个地方就完美了
我写了个脚本上来。战后以及过天如果裸奔的话,会强行塞一个同族1级兵。这个脚本仅适用于ERA 3ZVSE2
; Author:   Archer30
; Engine:   ERM 2.0+
; Requires: ERA 3.4+, Era Erm Framework, WoG Scripts (80 base)

; This script gives a 1st level creature native to the hero if a hero is with no creatue at the end of a battle/turn.


; ============== SETTINGS ==============
!#VRi^armedhero_on^:S(TRUE);            
; ============ END SETTINGS ============


!?FU(armedhero_RestrainValues);
!!VRi^armedhero_on^:F(FALSE)/(TRUE);

!#FU(armedhero_RestrainValues):P;

!?FU(OnGameEnter)&i^armedhero_on^;
!!UN:C5102718/4/?(dismissLast:y);      
!!UN:C5968130/4/?(transferLast:y);      
!!VRi^armedhero_on^|(dismissLast)<>2114058371/(transferLast)<>14844943:S(FALSE);

!?FU(OnAfterBattleUniversal)&i^armedhero_on^;
!!BA:H0/?(heroLeft:y) H1/?(heroRight:y);
!!FU(armedhero_EnsureHeroesHaveArmies)&(heroLeft)>(NO_HERO):P(heroLeft);
!!FU(armedhero_EnsureHeroesHaveArmies)&(heroRight)>(NO_HERO):P(heroRight);

!?FU(WOG_EndOfTurn)&i^armedhero_on^;
!!OW:C?(player:y);

!!re i/(HERO_FIRST)/(HERO_LAST_WOG);
!!HEi:O?(heroOwner:y);
!!FU(armedhero_EnsureHeroesHaveArmies)&(heroOwner)=(player):Pi;
!!en;

!?FU(armedhero_EnsureHeroesHaveArmies);
!#VA(hero:x);
!#VA(firstLevelMons:y);

!!VR(firstLevelMons):C(MON_PIKEMAN)/(MON_CENTAUR)/(MON_GREMLIN)/(MON_IMP)/(MON_SKELETON)/(MON_TROGLODYTE)/(MON_GOBLIN)/(MON_GNOLL)/(MON_PIXIE);

!!re i/(ARMY_SLOT_FIRST)/(ARMY_SLOT_LAST);
!!HE(hero):C0/i/?(monType:y)/?(monCount:y);

!!FU&(monType)<>(NO_MON):E;
!!en;

!!HE(hero):B2/?(class:y);               
!!VR(townType:y):S(class) :2;
!!HE(hero):C2/(firstLevelMons)/1/0;

Archer30 发表于 2021-6-1 01:41:28

水流行险 发表于 2021-5-31 17:33
还有一个问题?同样,防止裸城,应该改哪里?
裸城也不行了?
那我写一下。每回合遍历所有城镇,如果裸城就添加对应的一级兵。战后也会检查。不过有驻守城镇的英雄或者来访英雄都会跳过检查。ZVSE2
; Author:   Archer30
; Engine:   ERM 2.0+
; Requires: ERA 3.4+, Era Erm Framework, WoG Scripts (80 base)

; Give a 1st level creature native to the town if a town has no creatue at the end of a battle/turn.


; ============== SETTINGS ==============
!#VRi^townguards_on^:S(TRUE);         
; ============ END SETTINGS ============


!?FU(townguards_RestrainValues);
!!VRi^townguards_on^:F(FALSE)/(TRUE);

!#FU(townguards_RestrainValues):P;

!?FU(WOG_EndOfTurn)&i^townguards_on^;
!#VA(x:y) (y:y) (z:y);

!!OW:C?(player:y);
!!VR(x):S-1;

!!re i;                                 
!!UN:U(OBJ_TOWN)/(ANY_OBJ)/-1/(x)/(y)/(z);
!!br&(x)<0;

!!CA(x)/(y)/(z):O?(owner:y);
!!CA(x)/(y)/(z):H0/?(garrisonHero:y) H1/?(visitingHero:y);
!!FU(townguards_EnsureTownsAreGuarded)&(player)=(owner)/(garrisonHero)=(NO_HERO)/(visitingHero)=(NO_HERO):P(x)/(y)/(z);
!!en;

!?FU(OnAfterBattleUniversal)&i^townguards_on^;
!!OBi^battle_x^/i^battle_y^/i^battle_z^:T?(type:y);

!!if&(type)=(OBJ_TOWN);
!!CAi^battle_x^/i^battle_y^/i^battle_z^:H0/?(garrisonHero:y) H1/?(visitingHero:y);
!!FU(townguards_EnsureTownsAreGuarded)&(garrisonHero)=(NO_HERO)/(visitingHero)=(NO_HERO):Pi^battle_x^/i^battle_y^/i^battle_z^;
!!en;

!?FU(townguards_EnsureTownsAreGuarded);
!#VA(x:x) (y:x) (z:x);
!#VA(firstLevelMons:y);

!!VR(firstLevelMons):C(MON_PIKEMAN)/(MON_CENTAUR)/(MON_GREMLIN)/(MON_IMP)/(MON_SKELETON)/(MON_TROGLODYTE)/(MON_GOBLIN)/(MON_GNOLL)/(MON_PIXIE);

!!re (slotInd:y)/(ARMY_SLOT_FIRST)/(ARMY_SLOT_LAST);
!!CA(x)/(y)/(z):M2/(slotInd)/?(monType:y)/?(monCount:y);

!!FU&(monType)<>(NO_MON):E;
!!en;

!!CA(x)/(y)/(z):T?(townType:y);      
!!CA(x)/(y)/(z):M2/(ARMY_SLOT_FIRST)/(firstLevelMons)/1;


fhx 发表于 2021-2-3 08:26:24

没看明白呢,封魔里面开始经常裸奔啊

lztzero123 发表于 2021-2-3 09:52:53

fhx 发表于 2021-2-3 08:26
没看明白呢,封魔里面开始经常裸奔啊

封魔好像不能裸奔哪,至少带个凤凰放末日吧;mad;

iq7paradise 发表于 2021-2-3 14:45:01

还不如给魔法塔添加复活、英雄添加中土来的简单呢……

圣战骑兵 发表于 2021-2-8 09:49:09

出城不就没这事了嘛;cn;

水流行险 发表于 2021-2-8 18:45:03

圣战骑兵 发表于 2021-2-8 09:49
出城不就没这事了嘛

电脑的回合,两个电脑连续攻城,第二次的时候没有兵了,只有追随者和指挥官。

水流行险 发表于 2021-2-20 16:24:07

@canary @XEricSin @贤知有您

XEricSin 发表于 2021-2-20 21:27:08

我这里有英雄没兵的城也会触发战斗,你的情况我复现不了。
如果你实在想用erm实现你的想法,可以考虑
!?BG1;
!!BU:C=1;[战斗是否结束]
!!BA&1:M..[设置英雄部队]

水流行险 发表于 2021-2-21 00:31:16

XEricSin 发表于 2021-2-20 21:27
我这里有英雄没兵的城也会触发战斗,你的情况我复现不了。
如果你实在想用erm实现你的想法,可以考虑
!?B ...

!?BG1;
!!BU:C=1;[战斗是否结束]
检查部队是否为0
如果为0则
检查英雄所属城镇
!!BA&1:M#1/#2/$1/$2;[设置英雄部队]设置战斗中的怪物.
   #1 = 攻击方的怪物(0)或防守方的怪物(1) 见 格式 C
   #2 = 位置编号 (0..6)
   $1 = 怪物类型 (使用 -1 为某一位置无)
   $2 = 怪物数量

XEricSin 发表于 2021-2-21 12:19:41

水流行险 发表于 2021-2-21 00:31
!?BG1;
!!BU:C=1;[战斗是否结束]
检查部队是否为0


具体你自己设条件吧,注意那个&1的位置,BU:C=1是获取结束状态到标记1。

水流行险 发表于 2021-2-21 19:00:01

XEricSin 发表于 2021-2-21 12:19
具体你自己设条件吧,注意那个&1的位置,BU:C=1是获取结束状态到标记1。

要帮忙!因为BA:M的第一项就分攻击方和防守方的了!如何和等级相挂钩?

XEricSin 发表于 2021-2-21 21:45:17

什么等级?

水流行险 发表于 2021-2-21 23:45:26

XEricSin 发表于 2021-2-21 21:45
什么等级?

加英雄所属城镇的1级兵

XEricSin 发表于 2021-2-22 00:20:23

水流行险 发表于 2021-2-21 23:45
加英雄所属城镇的1级兵

你直接按生物编号加吧,比如0号枪兵是天使城

水流行险 发表于 2021-3-10 01:04:01

XEricSin 发表于 2021-2-22 00:20
你直接按生物编号加吧,比如0号枪兵是天使城

@Archer30
还是搞不定!我的脚本就剩下这个地方就完美了;sw;

水流行险 发表于 2021-3-10 23:27:49

Archer30 发表于 2021-3-10 22:14
我写了个脚本上来。战后以及过天如果裸奔的话,会强行塞一个同族1级兵。

ZVSE2


哇!就是这样!可是怎么没有函数填上去呢?;jx;

Archer30 发表于 2021-3-10 23:29:17

水流行险 发表于 2021-3-10 23:27
哇!就是这样!可是怎么没有函数填上去呢?
ERA 3(ERM 2)函数和变量都可以用名词表示

水流行险 发表于 2021-3-10 23:30:25

本帖最后由 水流行险 于 2021-3-10 23:33 编辑

Archer30 发表于 2021-3-10 23:29
这是ERA 3(ERM 2)的语法,函数都是用字符表示的
我放进去了,没有反应啊?;hi;我看了80,是这样的啊!真奇怪!我把这个脚本放到80里面吗?

Archer30 发表于 2021-3-10 23:31:59

水流行险 发表于 2021-3-10 23:30
我放进去了,没有反应啊?
你必须新建一个ERM文件,然后把我的脚本贴进去。

注意,最前面必须是ZVSE2。。必须用ERA 3.3+。如果开启了允许裸奔的选项或插件的话,脚本就不会生效。
页: [1] 2 3
查看完整版本: 【已解决】如何取消裸奔及裸城?

捐赠