水流行险 发表于 2021-3-21 23:00:17

【已解决】如何让驻城英雄的经验增加与等级挂钩?

本帖最后由 水流行险 于 2021-4-18 17:38 编辑

原文如是:希望第1级增加500,从第7级开始每天增加当前经验值的3%,大约一周升1级吧,最好就是那个升级经验差值除以7。这个经验计算挺有趣的。请版主和高手指点。
*******************************************************************
                         驻防英雄加经验
*******************************************************************

!#TM59:S1/999/1/1;这里改用TM59(采用变量平原未使用的TM变量)
!?TM59;
!!FU1800:P1799;          这里采用函数内触发函数的写法,保证不和任何的临时y变量也发生冲突
!?FU1800&x1=1799;
!!UN:U98/-1/?y1;
!!DO1800/1/y1/1&y1>0:P1800;
!?FU1800&x1=1800;
!!UN:U98/-1/x16/1;
!!CA1:H0/?y2;
!!FU&y2<0:E;
!!HEy2:Ed500;          这个你去看10,加500每天


而所需升级经验为:

2(1000)
3(2000)
4(3200)
5(4600)
6(6200)
7(8000)
8(10000)
9(12200)
10(14700)
11(17500)
12(20600)
13(24320)
14(28784)
15(34140)
16(40567)
17(48279)
18(57533)
19(68637)
20(81961)
21(97949)
22(117134)
23(140156)
24(167782)
25(200933)
26(240714)
27(288451)
28(345735)
29(414475)
30(496963)
31(595948)
32(714730)
33(857268)
34(1028313)
35(1233567)
36(1479871)
37(1775435)
38(2130111)
39(2555722)
40(3066455)
41(3679334)
42(4414788)
43(5297332)
44(6356384)
45(7627246)
46(9152280)
47(10982320)
48(13178368)
49(15813625)
50(18975933)
51(22770702)
52(27324424)
53(32788890)
54(39346249)
55(47215079)
56(56657675)
57(67988790)
58(81586128)
59(97902933)
60(117483099)
61(140979298)
62(169174736)
63(203009261)
64(243610691)
65(292332407)
66(350798466)
67(420957736)
68(505148860)
69(306178208)
70(727413425)
71(872895685)
72(1047474397)
73(1256968851)
74(1508362195)
75~88(1810034207)
89~100(2073739175)
101~108(2099639276)
109~868(2144641867)
868~3732(2146553679)
3733~5920(2146673313)
5921~6424(2147293156)
6425~?(2147400657)

Archer30 发表于 2021-4-18 06:30:17

楼主,我看走眼了,犯了很尴尬的错误,上一楼我说的是错的。
我不熟悉DO循环句法。既然都是ERA 3了,直接用新句法写吧。
ZVSE2
!?FU(OnEveryDay)&i^timerOnce^=(TRUE)/i^timerDay^>1;
!!FU(GarrisonHeroExpGain):P;

!?FU(GarrisonHeroExpGain);
!#VA(x:y) (y:y) (z:y);                  
!!VR(x):S-1;                           
!!re i;                                 
!!SN:F^FindNextObject^/(OBJ_TOWN)/(ANY_OBJ)/?(x)/?(y)/?(z)/-1;
!!br&v1=(FALSE);                     
!!CA(x)/(y)/(z):H0/?(hero:y);         
!!CA(x)/(y)/(z)&(hero)<=(NO_HERO):H1/?(hero:y);
!!co&(hero)<=(NO_HERO);               
!!HE(hero):E?(exp:y)/?(lv:y)/1;      
!!VR(expGain:y):S(exp) *3 :100 +500;
!!HE(hero):Ed(expGain);               
!!en;非常直接地遍历所有城镇 - 检测是否有英雄(先检测驻地,如驻地没有英雄,则检测来访) - 有英雄的话增加经验 - 没有就跳到下一个城镇




fhx 发表于 2021-3-22 08:54:47

又一个研究ERM的,论坛兴旺啊

水流行险 发表于 2021-3-23 15:25:24

@Archer30 @canary @XEricSin @贤知有您

canary 发表于 2021-3-23 17:20:07

这脚本就是每天固定500经验 并没有3%的说法

贤知有您 发表于 2021-3-23 17:50:10

楼主既然能看懂ERM,应该不难处理吧
HE:E?获取当前英雄的经验,再乘以 3%得到一个附加值就行了.

水流行险 发表于 2021-3-31 22:26:05

贤知有您 发表于 2021-3-23 17:50
楼主既然能看懂ERM,应该不难处理吧
HE:E?获取当前英雄的经验,再乘以 3%得到一个附加值就行了.

可以给我两行代码吗?

水流行险 发表于 2021-4-9 22:21:24

本帖最后由 水流行险 于 2021-4-12 14:55 编辑

@Archer30 @XEricSin @贤知有您 贤知有您 发表于 2021-3-23 17:50
楼主既然能看懂ERM,应该不难处理吧
HE:E?获取当前英雄的经验,再乘以 3%得到一个附加值就行了.
*******************************************************************
                         驻防英雄加经验
*******************************************************************

!#TM59:S1/999/1/1;这里改用TM59(采用变量平原未使用的TM变量)
!?TM59;
!!FU1800:P1799;          这里采用函数内触发函数的写法,保证不和任何的临时y变量也发生冲突
!?FU1800&x1=1799;
!!UN:U98/-1/?y1;          检查塔楼/-1任意/数量
!!DO1800/1/y1/1&y1>0:P1800;
!?FU1800&x1=1800;
!!UN:U98/-1/x16/1;
!!CA1:H0/?y2;         检查守城英雄编号,-1是没有
!!FU&y2<0:E;          如果没有英雄就结束
!!HEy2:E/?y3;                   检查该英雄的经验值
!!HEy2:Ed500&y3<5000;          如果经验值小于5000,这个你去看10,加500每天
!!HEy2:Edy3 *3 :100&y3>5000;   如果经验值大于5000,则加3%




水流行险 发表于 2021-4-17 00:07:37

贤知有您 发表于 2021-3-23 17:50
楼主既然能看懂ERM,应该不难处理吧
HE:E?获取当前英雄的经验,再乘以 3%得到一个附加值就行了.!!HEy2:E/?y3;                   检查该英雄的经验值
!!HEy2:Ed(y3 *3 :100 +500);   每天加当前经验值的3%+500


这如何实现呢?
@Archer30 @canary @XEricSin

Archer30 发表于 2021-4-17 00:46:11

楼主,HE:E命令或者任意其他命令都不适用于计算,计算请采用VR:S

以上一楼为例,按你的思路,应该是这样写:

!!HEy2:E/?y3;                   检查该英雄的经验值
!!VRy30:Sy3 :100 *3 +500; 【计算y30英雄获得的经验值 = 当前经验值的3%+500】
!!HEy2:Edy30;   增加经验值

水流行险 发表于 2021-4-17 04:05:19

Archer30 发表于 2021-4-17 00:46
楼主,HE:E命令或者任意其他命令都不适用于计算,计算请采用VR:S

以上一楼为例,按你的思路,应该是这样 ...

*******************************************************************
                         驻防英雄加经验
*******************************************************************
!#TM59:S1/999/1/1;这里改用TM59(采用变量平原未使用的TM变量)
!?TM59;
!!FU1800:P1799;          这里采用函数内触发函数的写法,保证不和任何的临时y变量也发生冲突
!?FU1800&x1=1799;
!!UN:U98/-1/?y1;          检查塔楼/-1任意/数量
!!DO1800/1/y1/1&y1>0:P1800;
!?FU1800&x1=1800;
!!UN:U98/-1/x16/1;
!!CA1:H0/?y2;         检查守城英雄编号,-1是没有
!!FU&y2<0:E;          如果没有英雄就结束
!!HEy2:E/?y3;                   检查该英雄的经验值
!!VRy30:Sy3 :100 *3 +500; 【计算y30英雄获得的经验值 = 当前经验值的3%+500】
!!HEy2:Edy30;   增加经验值

结果是第一天固定了500的经验值,之后不再增长。;om; 真是奇怪啊?

Archer30 发表于 2021-4-17 12:37:02

楼主,你的ERA版本是?

如果是ERA 3的话,把
!#TM59:S1/999/1/1;这里改用TM59(采用变量平原未使用的TM变量)
!?TM59;
替换为
!?FU(OnEveryDay)&i^timerOnce^=(TRUE);
我不熟悉ERM 1的陈旧语法,不过一眼看过去是TM59触发器没有每天运行吧。

请在代码的结尾加入
!!IIF:M^TM59 has been triggered!^; 【如果弹窗,则说明TM59触发器运行了一次】以便你判断到底是TM59没有运行,还是代码中有其他问题导致经验值没有加上

水流行险 发表于 2021-4-17 14:34:02

本帖最后由 水流行险 于 2021-4-17 14:35 编辑

Archer30 发表于 2021-4-17 12:37
楼主,你的ERA版本是?

如果是ERA 3的话,把

!?FU(OnEveryDay)&i^timerOnce^=(TRUE);
这个是1.

感觉TM问题函数没有问题,问题应该是:
!!HEy2:Edy30;   增加经验值
这里的d500与dy3,500是数字,而y3是变量。

Archer30 发表于 2021-4-17 15:24:06

水流行险 发表于 2021-4-17 14:34
!?FU(OnEveryDay)&i^timerOnce^=(TRUE);
这个是1.



i 就是integer的缩写,1是啥?

不需要感觉,直接插入代码检测TM59是不是每天运行就行。d+变量不会有问题

水流行险 发表于 2021-4-17 15:49:03

Archer30 发表于 2021-4-17 15:24
i 就是integer的缩写,1是啥?

不需要感觉,直接插入代码检测TM59是不是每天运行就行。d+变量不会有问 ...
哈哈,把1改回来i
脚本如下,还是不运行!;wy;

*******************************************************************
                         驻防英雄加经验
*******************************************************************
! #TM59:S1/999/1/1;这里改用TM59(采用变量平原未使用的TM变量)
! ?TM59;

!?FU(OnEveryDay)&i^timerOnce^=(TRUE);

!!FU1800:P1799;          这里采用函数内触发函数的写法,保证不和任何的临时y变量也发生冲突
!?FU1800&x1=1799;
!!UN:U98/-1/?y1;          检查塔楼/-1任意/数量
!!DO1800/1/y1/1&y1>0:P1800;
!?FU1800&x1=1800;
!!UN:U98/-1/x16/1;
!!CA1:H0/?y2;         检查守城英雄编号,-1是没有
!!FU&y2<0:E;          如果没有英雄就结束
! !HEy2:Ed500;          加500每天

!!HEy2:E/?y3;                   检查该英雄的经验值
!!VRy30:Sy3 :100 *3 +500; 【计算y30英雄获得的经验值 = 当前经验值的3%+500】
!!HEy2:Edy30;   增加经验值

!!IF:M^TM59 has been triggered!^; 【测试用,如果弹窗,则说明TM59触发器运行了一次】

Archer30 发表于 2021-4-17 16:10:19

水流行险 发表于 2021-4-17 15:49
哈哈,把1改回来i
脚本如下,还是不运行!


这是ERA 3的触发器,要是用ERA 2.46就老老实实用TM59,检测一下是不是每天运行了

水流行险 发表于 2021-4-17 17:10:52

Archer30 发表于 2021-4-17 16:10
这是ERA 3的触发器,要是用ERA 2.46就老老实实用TM59,检测一下是不是每天运行了

我就是用您的ERA3

Archer30 发表于 2021-4-17 18:38:59

水流行险 发表于 2021-4-17 17:10
我就是用您的ERA3
你的代码不会运行这里的IF:M
!?FU(OnEveryDay)&i^timerOnce^=(TRUE);【每天运行一次】
!!FU1800:P1799; 【运行FU1800,并且FU1800的x1=1799
!?FU1800&x1=1799;【FU1800,x1=1799时运行】——这里会被!!FU1800:P1799;触发
!!UN:U98/-1/?y1;          检查塔楼/-1任意/数量
!!DO1800/1/y1/1&y1>0:P1800;
!?FU1800&x1=1800;【FU1800,x1=1800时运行】——这里不会被!!FU1800:P1799;触发,因为x1的值不符合
...
把!?FU1800后边的&x1=xxxx去掉就行

水流行险 发表于 2021-4-17 21:42:01

Archer30 发表于 2021-4-17 18:38
你的代码不会运行这里的IF:M

把!?FU1800后边的&x1=xxxx去掉就行

这样也没有反应啊!;wy;
*******************************************************************
                         驻防英雄加经验
*******************************************************************
!?FU(OnEveryDay)&i^timerOnce^=(TRUE);【每天运行一次】
!!FU1800:P1799;                     【运行FU1800,并且FU1800的x1=1799
!?FU1800&x1=1799;                  【FU1800,x1=1799时运行】——这里会被 FU1800:P1799;触发
!!UN:U98/-1/?y1;          检查塔楼/-1任意/数量
!!DO1800/1/y1/1&y1>0:P1800;
!?FU1800;                【FU1800,x1=1800时运行】——这里不会被 FU1800:P1799;触发,因为x1的值不符合
!!UN:U98/-1/x16/1;
!!CA1:H0/?y2;             检查守城英雄编号,-1是没有
!!FU&y2<0:E;            如果没有英雄就结束
!!HEy2:E/?y3;             检查该英雄的经验值
!!VRy30:Sy3 :100 *3 +500; 【计算y30英雄获得的经验值 = 当前经验值的3%+500】
!!HEy2:Edy30;            增加经验值
!!IF:M^TM59 has been triggered!^; 【测试用,如果弹窗,则说明TM59触发器运行了一次】

水流行险 发表于 2021-4-18 17:37:48

Archer30 发表于 2021-4-18 06:30
楼主,我看走眼了,犯了很尴尬的错误,上一楼我说的是错的。我不熟悉DO循环句法。既然都是ERA 3了,直接用 ...

搞定! 老板的意思是让我们多学习,时代淘汰我们是连招呼都不打的……:nianjing:
页: [1] 2
查看完整版本: 【已解决】如何让驻城英雄的经验增加与等级挂钩?

捐赠