【已解决】如何取消裸奔及裸城?
本帖最后由 水流行险 于 2021-6-1 02:22 编辑战斗胜利后,胜利的一方没有部队只剩下宠物后,随机增加几个低级部队,如英雄招募时带的部队。这样避免守城的英雄战胜后没有部队了,但下一个电脑的连续攻击会直接占领城市,因为没有部队的英雄视为不存在的“幽灵状态”。请版主和高手指点?
逻辑应该是:
战后生成
检查胜利一方1234567的部队
如果为0
检查英雄所属种族
则增加1级2级的兵随机数量1-10个
水流行险 发表于 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;
水流行险 发表于 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
没看明白呢,封魔里面开始经常裸奔啊
封魔好像不能裸奔哪,至少带个凤凰放末日吧;mad; 还不如给魔法塔添加复活、英雄添加中土来的简单呢…… 出城不就没这事了嘛;cn; 圣战骑兵 发表于 2021-2-8 09:49
出城不就没这事了嘛
电脑的回合,两个电脑连续攻城,第二次的时候没有兵了,只有追随者和指挥官。 @canary @XEricSin @贤知有您 我这里有英雄没兵的城也会触发战斗,你的情况我复现不了。
如果你实在想用erm实现你的想法,可以考虑
!?BG1;
!!BU:C=1;[战斗是否结束]
!!BA&1:M..[设置英雄部队] 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 = 怪物数量 水流行险 发表于 2021-2-21 00:31
!?BG1;
!!BU:C=1;[战斗是否结束]
检查部队是否为0
具体你自己设条件吧,注意那个&1的位置,BU:C=1是获取结束状态到标记1。 XEricSin 发表于 2021-2-21 12:19
具体你自己设条件吧,注意那个&1的位置,BU:C=1是获取结束状态到标记1。
要帮忙!因为BA:M的第一项就分攻击方和防守方的了!如何和等级相挂钩? 什么等级?
XEricSin 发表于 2021-2-21 21:45
什么等级?
加英雄所属城镇的1级兵 水流行险 发表于 2021-2-21 23:45
加英雄所属城镇的1级兵
你直接按生物编号加吧,比如0号枪兵是天使城 XEricSin 发表于 2021-2-22 00:20
你直接按生物编号加吧,比如0号枪兵是天使城
@Archer30
还是搞不定!我的脚本就剩下这个地方就完美了;sw; Archer30 发表于 2021-3-10 22:14
我写了个脚本上来。战后以及过天如果裸奔的话,会强行塞一个同族1级兵。
ZVSE2
哇!就是这样!可是怎么没有函数填上去呢?;jx; 水流行险 发表于 2021-3-10 23:27
哇!就是这样!可是怎么没有函数填上去呢?
ERA 3(ERM 2)函数和变量都可以用名词表示 本帖最后由 水流行险 于 2021-3-10 23:33 编辑
Archer30 发表于 2021-3-10 23:29
这是ERA 3(ERM 2)的语法,函数都是用字符表示的
我放进去了,没有反应啊?;hi;我看了80,是这样的啊!真奇怪!我把这个脚本放到80里面吗?
水流行险 发表于 2021-3-10 23:30
我放进去了,没有反应啊?
你必须新建一个ERM文件,然后把我的脚本贴进去。
注意,最前面必须是ZVSE2。。必须用ERA 3.3+。如果开启了允许裸奔的选项或插件的话,脚本就不会生效。