king200101 发表于 2012-1-9 21:00:44

请高手写一下作战术(炮术、弹道、医疗术三合一)的脚本,谢谢!

各路高手,我一直在努力把script64.erm中关于作战术(炮术、弹道、医疗术三合一)的脚本弄到不允许wog化的地图事件中,可是一进地图就会出错,请各位高手帮忙,提出一个把《加强战争机器II、辅助技能强化、宝物(保括指挥官宝物)强化、作战术(炮术、弹道、医疗术三合一)》和根据英雄等级召唤帐蓬(不仅是圣师宠物)能召唤多帐蓬的一系列脚本事件方案吧,这是我在script64.erm中提取的脚本,请参考一下:



** FIRST AID ENHANCED (2005 Aug 25)                            (for WoG v3.58f)
** by Tobyn
**
** This script greatly enhances First Aid skill and hero specialty.
** - First Aid skill summons and gives control over additional First Aid
**   Tents (# of tents = hero level).
**   The one warmachine Tent and Hierophant Commander Tents are added.
** - Casts a Cure spell each healing, based on First Aid expertise (Expert
**   First Aid will give Mass Cure) and spellpower equal to number of tents.
**   Tent Healing Cursor upon two-hex-creatures gives Cure only if the left
**   hex (position) is targetted, the right hex only gives standard healing.
** - First Aid Specialty gives 2 Tents per hero level and temporary knowledge
**   of three spells during that combat (Cure, Animate Dead and Resurrection)
**   First Aid Specialty will also restore First Aid Tent Warmachine *if*
**   hero had one before battle began, even if it was destroyed in battle.
**
** uses vars v2301..23
** uses vars v2398..99 (99/98 attacking/defending hero)
** ONLY ACTIVE if v2364=1 (wogify option 190)

INIT SKILL DESCRIPTION moved to script75.erm (skill descriptions)
BATTLE AFFAIRS BELOW
v2301=hero level, v2302=spellpower, v2303=1 if specialty, v2304=First Aid expertise,
v2305=1 if Tent warmachine present, v2306 amount of warmachine/Hierophant Tents
v2307=Cure, v2308=Resurrection and v2309=Animate Dead (=1 each if known by hero)
v2311..v2319 same for defender (if present)

BEFORE BATTLE
!?BA52&v2364=1;                  start combat trigger for both sides (if script active)
!!BA:H0/?v2399 H1/?v2398;            store attacking/defending hero numbers
!!VRv2301:C0/0/0/0/0/0/0/0/0/0/0;    init v2301..11
!!VRv2312:C0/0/0/0/0/0/0/0/0/0/0/0;init v2312..23
!!HEv2399:         Ed/?v2301 Fd/d/?v2302/d S27/?v2304 A2/6/?v2305/d M37/?v2307 M38/?v2308 M39/?v2309;
!!HEv2398&v2398>-1:Ed/?v2311 Fd/d/?v2312/d S27/?v2314 A2/6/?v2315/d M37/?v2317 M38/?v2318 M39/?v2319;
First Aid Specialty
!!HEv2399:X?y-1/?y-2/d/d/d/d/d;    get Attacker skill specialty
!!VRv2303&y-1=0/y-2=27:S1;         set indicator if First Aid spec
!!HEv2399&v2303=1:M37/1;             hero temp gets Cure spell during battle if specialist (even w/o First Aid skill)
!!HEv2399&v2303=1/v2304>1:M38/1;   hero temp gets Animate Dead if Advanced or Expert specialist
!!HEv2399&v2303=1/v2304>2:M39/1;   hero temp gets Resurrection if Expert specialist
!!VRv2301&v2303=1:*2;                specialty gives 2 Tents per hero level
!!HEv2398&v2398>-1:X?y-3/?y-4/d/d/d/d/d; get Defender skill specialty
!!VRv2313&v2398>-1/y-3=0/y-4=27:S1;set indicator if First Aid spec
!!HEv2398&v2313=1:M37/1;             temp Cure spell during battle
!!HEv2398&v2313=1/v2314>1:M38/1;   temp Animate Dead if Advanced or Expert
!!HEv2398&v2313=1/v2314>2:M39/1;   temp Resurrection if Expert
!!VRv2311&v2313=1:*2;                specialty gives 2 Tents per hero level

IN BATTLE (summon Tents and apply Cure spell)
!?BF&v2364=1;                      start battlefield trigger (if script active)
!!BU&v2304>0:E153/?v2306;            check if attacker already has tents
!!BU&v2314>0:E168/?v2316;            check if defender already has tents
!!BMv2306&v2304>0/v2306>0:Ndv2301;   add Tents for attacker
!!BMv2316&v2314>0/v2316>0:Ndv2311;   add Tents for defender
!!BU&v2304>0/v2306=-1:S147/v2301/153/0/-1/0; summons Tents for attacker
!!BU&v2314>0/v2316=-1:S147/v2311/168/1/-1/0; summons Tents for defender
!?BG&v2364=1;                      battleground action (useable by both sides) (if script active)
!!BG:A?v2320;                        get current action (wait for Tent Healing)
!!BG&v2320=11:N?v2321 D?v2322 Q?v2310; get Tent number, destination position, owner
!!BMv2321&v2320=11:N?v2323;            get current amount of Tents
!!BMv2321&v2320=11/v2310=0/v2304>0:C37/v2322/v2304/v2323/1; cast Cure on destination (left side)
!!BMv2321&v2320=11/v2310=1/v2314>0:C37/v2322/v2314/v2323/1; cast Cure on destination (right side)

AFTER BATTLE (restore values given by First Aid Specialty)
!?BG1&v2364=1;                     post-action trigger, if script active
!!BU:C?y-1;                        check if combat has ended this turn
!!FU&y-1=0:E;                        exit if it hasn't
attacker
!!HEv2399&v2303=1/v2305>0:A1/6/15;   restore Tent if given and hero specialty
!!HEv2399&v2303=1:M37/v2307 M38/v2308 M39/v2309; remove Cure, Res, AnDead spells if only given by Specialty
defender
!!HEv2398&v2313=1/v2315>0:A1/6/15;   restore Tent if given and hero specialty
!!HEv2398&v2313=1/v2398>-1:M37/v2317 M38/v2318 M39/v2319; remove Cure, Res, AnDead spells if only given by Specialty
******************************************************************************************
** WARFARE (2004 September 19)                                  (for WoG v3.58)
** by Tobyn
**
** This script combines the three war machine skills Artillery, Ballistics
** and First Aid and treats them as one skill. This new Warfare "skill"
** gives you control over all three War Machines and standard SoD abilities
** from all three skills.
**
** First Aid Tents get 750 HPs (only if no other First Aid enhancements active).
**
** Whenever a hero has one or more of the skills and a battle starts,
** the hero will get all three skills at the highest expertise available.
** Similar if clicked on any warfare skill in hero screen, but:
** - if clicked on icon of any Warfare skill, you get standard skill description
** - if clicked on text (name or expertise), you get another msgbox instead
**   (left-click lets you choose, right-click cycles the displayed Warfare skill)
**
** Hero might temporarily have diverging expertises in the three Warfare
** skills while on adventure map (e.g. via Witch Huts or through other ERM),
** but this and display will adjust with the next click, levelup or battle.
**
** NOTE:
** - side effect with Arstahd's Enhanced Commander Artifacts (give hero skills)
**   As soon as an artifact with one of the three skills is obtained, player may
**   get instant Expert Warfare with just a few mouse clicks and without further
**   need for the Artifact thereafter
**   (by toggling the Warfare skills while repeatedly equipping the artifact).
**   Three free Expert skills for just temporarily having one artifact equipped. WOW!
**   And you can always give it to another hero or to a commander afterwards...
**
** uses vars (v248)
** uses vars v2398..99 (Tobyn universal vars, v2399/v2398 attacking/defending hero)
** uses fcts FU2340,2341
** uses strings z237..239 for skill names
** uses Universal Timer TM1/2 (day1)
** ONLY ACTIVE if v2365=1 (wogify option 193)

INIT SKILL NAMES (leaves descriptions unchanged)
!?TM2&$day$=1/$once$=1/v2365=1;      triggers for first active color on day 1 only (if script active)
;                                    (will trigger after script03.erm skill enhancement)
!!UN:P54/?y-1;                         check if War Machines I is active (Overlord, script54, war machine levels)
!!UN:P55/?y-2;                         check if War Machines II is active (Arstahd, script55, Tent mid-battle Resurrection)
!!UN:P204/?y-3;                        check if First Aid I is active (Arstahd, script48, Tent post-battle Resurrection)
!!UN:P190/?y-4;                        check if First Aid II is active (Tobyn, script64 see above, Tent Cure spell)
!!UN:P201/?y-5;                        check if Artillery I is active (Arstahd, script48, pre-battle damage)
!!MA&y-1=0/y-2=0/y-3=0/y-4=0:P147/750; all First Aid Tents will have 750 HPs (if neither First Aid skill nor the Tent war machine itself are enhanced)
!!VRz237:Sz164039;                     if no warfare relevant skills were enhanced
!!VRz238:Sz164040;                      .
!!VRz239:Sz164041;                      .
!!VRz237|y-1=1/y-2=1:Sz164042;         if Ballistics enhanced by script 54 or 55
!!VRz238|y-5=1:Sz164043;               if Artillery enhanced by script 48
!!VRz239|y-3=1/y-4=1:Sz164044;         if First Aid enhanced by script 48 or 64
!!UN:G0/10/0/237 G0/20/0/238 G0/27/0/239;set skill names to Warfare

MANUALLY SET WARFARE MAIN SKILL
!?CM2&v2365=1;                     right-clicked at hero screen
!!CM:I?y-1;                            get right-click number (y-1) (79..102 is skill area)
!!CM:S?y-2;                            check left/right-click (=12 left click, =14 right click)
!!FU2345:Py-1/-1/?y-3/?y-4/?y-5;       call skill click function (in: click number and hero number, out: skill (y-3), area (y-4) and slot (y-5))
!!VRy-6|y-3=10/y-3=20/y-3=27:S1;       y-6 = 1 means either Bal, Art or FA was clicked
!!CM&y-1>78/y-1<103/y-6=1/y-4>1:R0;    if clicked text area of a Warfare skill, disable standard skill click reaction
!!FU2340&y-6=1:Py-4/y-2/y-3;         .. and call Warfare display function (in: skill area, left/right-click, skill)
!?FU2340;                            Warfare skill display and determination (x1=skill area, x2=click type, x3=skill)
!!VRy4&x2=12:S10;                      if left-clickthen init y4:=10 (OK/Cancel buttons with three pics, two of them selectable)
!!VRy4&x2=14:S4;                     if right-click then init y4:=4 (no button)
!!CM&y4=0:R1;                        enable standard reaction if unidentified click and exit
!!FU&y4=0:E;       BUG COUNTERMEASURE (clicking non-functional-areas after Estates (with disabled std reaction) erroneously gives another msgbox and nasty side effects)
!!IF:W-1;                              set w var reference to current hero
!!VRy5:S0;                           init y5
!!VRy5&x1>1/x2=14:S1;                  set cycling "flag" y5 if right-clicked on text field (name or expertise)
!!FU2341:P-1/x3/y5;                  determine and set Warfare expertise (highest of all three skills) on current hero (-1)
!!HE-1:Sx3/?y6;                        get Warfare expertise
!!VRy1|w48<>10:S32 +y6;                (calculate correct display for type 10 message below...)
!!VRy1|w48=10:S62 +y6;               (... which stores result (=1 left, =2 middle, =0 cancel)
!!VRy2|w48=0/w48=27:S62 +y6;         (... in v var instead of normally used dialogue flag)
!!VRy2|w48=10/w48=20:S83 +y6;         .
!!VRy3|w48=0/w48=27:S83 +y6;            .
!!VRy3|w48=10:S32 +y6;                  .
!!VRy3|w48=20:S62 +y6;                  .
!!VRv248:S0;                           init v248
!!VRz-1&v2360>0:Sz164045;            msgbox text if short skill description (script75) active
!!VRz-1&v2360=0:Sz164046;            if standard skill description (script75 inactive)
!!IF&x1>1:Q248/20/y1/20/y2/20/y3/y4^%Z-1^;msg each time Warfare skill text field (name or expertise) is clicked
!!VRy7:S0;
!!VRy7&v248=1/w48=27:S10;                   v248 |1   2   0
!!VRy7&v248=2/w48=27:S20;               -------+-----------
!!VRy7&v248=1/w48=20:S10;               w48=10 | 202710
!!VRy7&v248=2/w48=20:S27;                     20 | 102720
!!VRy7&v248=1/w48=10:S20;                     27 | 102027
!!VRy7&v248=2/w48=10:S27;
!!FU2341&v248>0:P-1/y7/0;            determine and set Warfare expertise (highest of all three skills) on current hero (-1)
!!UN:R3/-1;                            redraw hero screen

GET WARFARE MAIN SKILL AND EXPERTISE
!?FU2341;                  set Warfare main skill and expertise (x1=hero, x2= w48 or clicked Warfare skill, x3=if cycling)
!!FU&x2<>0/x2<>10/x2<>20/x2<>27:E; exit if skill parameter invalid (neither none, Bal, Art nor FA)
!!IF:Wx1;                  set w var reference to that hero
!!HEx1:S10/?y1 S20/?y2 S27/?y3; get expertise of all three Warfare skills (y1, y2, y3)
!!VRy4:Sy1;                  (calculate highest Warfare expertise (y4))
!!VRy4&y2>y4:Sy2;             .
!!VRy4&y3>y4:Sy3;             .
!!HEx1:S10/0 S20/0 S27/0;    remove any Warfare skill (to later guarantee they are the last displayed skills)
!!VRy6&x2=10/x3=1:S20;       cycle to display next skill (if skill text field (name or expertise) was right-clicked)
!!VRy6&x2=20/x3=1:S27;      .
!!VRy6&x2=27/x3=1:S10;      .
!!VRx2&x2>0/x3=1:Sy6;         .
!!VRx2&y4>0/x2=0:S10;      set Ballistics default if Warfare but no skill set for display yet
!!HEx1&y4>0/x2>0:Sx2/y4;   set max expertise to clicked/selected Warfare skill
!!VRw48&y4>0/x2>0:Sx2;       set hero var w48 to respective Warfare display skill
!!HEx1:S?y5;               get number of skills shown (y5)
!!HEx1:S10/y4 S20/y4 S27/y4; give the other two skills at same expertise, but hide them afterwards
!!HEx1&x2=10:S0/20/1 S0/27/1; if Bal then hide Art and FA
!!HEx1&x2=20:S0/10/1 S0/27/1; if Art then hide Bal and FA
!!HEx1&x2=27:S0/10/1 S0/20/1; if FAthen hide Bal and Art
!!HEx1:Sy5;                  set back number of skills shown to avoid erroneous display

TRIGGERS TO SET CORRECT EXPERTISE FOR THE OTHER TWO WARFARE SKILLS
!?HL-1&v2365=1;            hero levelup lets hero advance the other warfare skills to pre-levelup expertise
!!IF:W-1;                  set w var reference to current hero
!!FU2341:P-1/w48;            update Warfare skill levels and displayed skill
!?OB104&v2365=1;         University pre-visit trigger
!!IF:W-1;                  set w var reference to current hero
!!FU2341:P-1/w48;            update Warfare skill levels and displayed skill
!$OB104&v2365=1;         University post-visit trigger
!!IF:W-1;                  set w var reference to current hero
!!FU2341:P-1/w48;            update Warfare skill levels and displayed skill
**OB63/51&v2365=1;         Market of Time pre/post-visit trigger
; pre-visit would still take place after script09 (Market of Time) effects
; -> problem now adressed and rectified in Market of Time script09
!$OB113&v2365=1;         Witch Hut post-visit trigger
!!IF:W-1;                  set w var reference to current hero
!!FU2341:P-1/w48;            update Warfare skill levels and displayed skill
!?BA52&v2365=1;            battle has started (trigger for both sides)
!!BA:H0/?v2399 H1/?v2398;    store attacking/defending hero numbers
!!IF:Wv2399;               set w var reference to attacking hero
!!FU2341:Pv2399/w48;         check attacking hero
!!IF&v2398>-1:Wv2398;          set w var reference to defending hero (if any)
!!FU2341&v2398>-1:Pv2398/w48;check defending hero (if any)

格鲁 发表于 2012-1-9 21:04:01

这个真是纠结看不懂;lan;

兽哥哥 发表于 2012-1-9 21:11:28

WOG地图不管你是否WOG化,都会自动WOG化。

无心云 发表于 2012-1-9 21:31:09

这个...........
兄台,你是不是进去游戏没有选加强啊,64号可是官方的吧。

king200101 发表于 2012-1-9 21:35:40

是官方的,我用的是清雨幽扬的选项设置,已经选加强了,但是在李多海变态之旅地图中,始终无法实现高级医疗术召唤出的多帐蓬和作战术功能

沧海一粟 发表于 2012-1-9 22:52:39

回复 5# 的帖子

呵呵,李多海是不允许进行WOG化的,寻梦人在地图里已经设置了很多好玩的ERM,楼主还是好好体会吧。至于你所说的那个ERM,离弦箭在ERM版块里已经整合出来了。

hellmatrix 发表于 2012-1-9 23:14:07

对地,这个脚本不能用在李多海上的啊

灰狼王子 发表于 2012-1-10 00:07:24

有些自定制的BT地图可能是作者限制或者修改了此加强脚本的功效吧,普通随机地图肯定没问题的,最多有些小BUG而已吧。;wunai;

踏雪无痕 发表于 2012-1-10 04:52:26

原帖由 兽哥哥 于 2012-1-9 21:11 发表 http://www.wogcn.net/images/common/back.gif
WOG地图不管你是否WOG化,都会自动WOG化。
兽哥哥还没仔细看过清雨修改的推荐帖吧,建议多看几遍。

king200101 发表于 2012-1-10 08:23:44

嘿嘿,我就喜欢在别人做的地图上加上自己喜欢的脚本,不过我加了后不发布,只是自己玩,应该不玩侵权吧,我喜欢玩游戏,不喜欢被游戏玩。

沧海一粟 发表于 2012-1-10 10:35:00

回复 10# 的帖子

楼主,你这样做很容易变量冲突之类的错误的,像巫妖王、李多海、精灵光复、阿泰3、三国同心等,里面蓄含了很多的ERM,你如果没有完全读懂这些的话,随便加一个脚本都有可能引起错误。像那个诸神的所有变量,都是经过精心整合的,你添加一个脚本都有可能引起未知的错误。

文兄 发表于 2012-1-10 10:40:51

原帖由 king200101 于 2012-1-10 08:23 发表 http://www.h3wog.com/images/common/back.gif
嘿嘿,我就喜欢在别人做的地图上加上自己喜欢的脚本,不过我加了后不发布,只是自己玩,应该不玩侵权吧,我喜欢玩游戏,不喜欢被游戏玩。

那你真的很好,是玩游戏的人,但要发表自己的观点,对大家都有好处

king200101 发表于 2012-1-10 10:43:42

谢谢各位同学的关心,非常期待能把俺要的脚本给整出来

fastarrow 发表于 2012-1-10 11:57:23

ZVSE
_WARNING_#1=IMPORTANT! This file is not in a plain text format. NEVER use any editor except ERM_S for making any kind of changes!
ERMS_PoweredBy=ERM Scripter v. 2004.10.5.945
ERMS_ScriptDate=12.9(September).2006

** All My Scripts (2005 Sept 12)                        (for WoG v3.58f script update)
** by Tobyn
** with big thanks to Fnord and the team for all their advice
**
** Each scriptlet is fully documented and contains a separate variables list.
** Vars v2361-v2367 are script activity "flags" for my scriptlets here.
** To enable a script, set respective var to 1 (normally Wogify Options will set them).
**
** Some scriptlets use my Universal Timer (which automatically runs with Wogify
** script00.erm). If you want to use them without wogify, e.g. by copying the code,
** enable UniTimer by setting v2370 to 1 in the following line (change S0 to S1 there).

!#VRv2370:S0;            disabled Universal Timer setup and calculations (because already done by Wogify script00.erm)
!#UN:P193/?v2365;          check if Warfare is enabled in WoGify Options
!#UN:P75/?v2360;         check if Short Skill descriptions (script75.erm, Hermann the Weird) are enabled

**
** --------> TOBYN'S SCRIPTS (script64.erm)   (2005 Aug 25)
** Author: Tobyn
** Scriptlets:
**(Universal Timer), Tobyn Library Functions, Advanced Witch Huts, Transfer Owner,
**Estates Enhanced, First Aid Enhanced, Warfare, Conflux/Rampart Monster Change
** ERM WoG Option Numbers: 64, 188-194
** Flags: 230-239 claimed                               (and 236-239 used)
** Permanent Variables: w47, w48, v2300-v2399 claimed   (and v2301-v2334, v2360-v2399 used)
** Temporary Variables: m-t, flag 1, v248
** Timers: TM1, TM2 (both together with script00.erm form the Universal Timer)
** Functions: FU2300-FU2399 claimed                     (and FU2332-FU2345 used)
** Strings: z232-z239 claimed                           (and z237-239 used)
** Macros: $month$,$weeks$,$week$,$day$,$weekday$,$AI$,$color$,$once$,
**         $red$,$blue$,$tan$,$green$,$orange$,$purple$,$teal$,$pink$,
**         $monday$,$tuesday$,$wednesday$,$thursday$,$friday$,$saturday$,$sunday$

******************************************************************************************

** UNIVERSAL TIMER (2004 September 19)                        (for WoG v3.58)
** by Tobyn
**
** This scriptlet gives another, more universal approach on Timers.
** You now can use predefined timed conditions with triggers,
** not only have predefined timers.
** Timer 1 will be used to calculate several often-used conditions.
** Timer 2 trigger now may use that calculated stuff as conditions.
**
** Instead of defining a new timer when you need one, merely use and
** call timer 2 (TM2) trigger with following conditions (leave out irrelevant ones)
** v2396 or $month$   current month (cont count like standard HoMM3 itself: month 12,13,...)
** v2395 or $color$   current player color (0..7, or from $red$ to $pink$)
** v2394 or $AI$      current player status (=0 if human only, =1 if AI only, ignore if irrelevant)
** v2393 or $weekday$   current weekday (1..7, or from $monday$ to $sunday$)
** v2392 or $day$       current day (c is current day, but sometimes direct comparison with c won't work)
** v2391 or $once$      once-on-that-day flag (irrespective of real color: first active color sets, others reset)
** v2390                (internal day comparator for once-on-that-day flag v2391)
** v2389 or $weeks$   current weeks in total(1,2,3,4,5,6,...)
** v2388 or $week$      current week in a month (1,2,3,4,1,2,...)
**
** Never try to set v2371..96 or "c" var, just get/read them where needed.
**
** Then every script can use local TM2 trigger with conditions
** - e.g. trigger only if color=green, status=human and weekday=tuesday
** - omit conditions which don't matter (e.g. if color or human/AI irrelevant, or weekday for a daily trigger)
**
** If you need other calculations done (e.g. 10-day period starting with the second month)
** just call TM1 locally and calculate whatever you need for your next TM2 trigger condition
**
** uses TM1,2 and Tobyn universal vars v2371..v2395
** uses macros $day$, $weekday$, $week$, $weeks$, $month$, $AI$, $color$, $once$
** -- for easy usage of colors and weekdays, further macros are defined and initialized
** uses macros $red$, $blue$, $tan$, $green$, $orange$, $purple$, $teal$, $pink$
** uses macros $monday$, $tuesday$, $wednesday$, $thursday$, $friday$, $saturday$, $sunday$


UNIVERSAL TIMER INIT

!#TM1:S1/999/1/255;    triggers every color every day
!#TM2:S1/999/1/255;    same but triggers only *after* all calculations from TM1 are done
!#VRv2396:S1;          init v2396 month indicator (starts with month 1)
!#VRv2390:S1;          init v2390 day comparator (c also starts with day 1 value)
!#VRv2370:S1;
!#VRv2365:S1;


UNIVERSAL TIMER GLOBAL CALL EVERY DAY

!?TM1&v2370=1;             GLOBAL CALL (careful: only one instance of these calculations allowed, which should normally be done by wogify script00.erm)
!!OW:C?v2395;                get current player color (0..7)
!!OW:Iv2395/?v2394;          get current player status (0=human, 1=AI)
!!VRv2393:Sc %7;             set weekday (mon=1..sat=6,sun=0)
!!VRv2393&v2393=0:S7;      set sunday=7 instead of sunday=0
!!VRv2392:Sc;                set current day (comparison with c doesn't work in the next two lines)
!!VRv2391&v2390=v2392:S1;    set once-on-that-day flag (only first active color)
!!VRv2391&v2390>v2392:S0;    reset that flag (at second active color each day)
!!VRv2390&v2391=1:+1;      inc day comparator (needed for flag)
!!VRv2389&v2391=1:Sc -1 :7 +1; set weeks (cont count)
!!VRv2388&v2393=1/v2391=1:+1; incweek counter by 1 for each monday
!!VRv2396&v2388=5/v2391=1:+1; inc month counter by 1 for each 5th week
!!VRv2388&v2388=5/v2391=1:S1; reset week counter for each new month


******************************************************************************************

** WARFARE (2004 September 19)                                  (for WoG v3.58)
** by Tobyn
**
** This script combines the three war machine skills Artillery, Ballistics
** and First Aid and treats them as one skill. This new Warfare "skill"
** gives you control over all three War Machines and standard SoD abilities
** from all three skills.
**
** First Aid Tents get 750 HPs (only if no other First Aid enhancements active).
**
** Whenever a hero has one or more of the skills and a battle starts,
** the hero will get all three skills at the highest expertise available.
** Similar if clicked on any warfare skill in hero screen, but:
** - if clicked on icon of any Warfare skill, you get standard skill description
** - if clicked on text (name or expertise), you get another msgbox instead
**   (left-click lets you choose, right-click cycles the displayed Warfare skill)
**
** Hero might temporarily have diverging expertises in the three Warfare
** skills while on adventure map (e.g. via Witch Huts or through other ERM),
** but this and display will adjust with the next click, levelup or battle.
**
** NOTE:
** - side effect with Arstahd's Enhanced Commander Artifacts (give hero skills)
**   As soon as an artifact with one of the three skills is obtained, player may
**   get instant Expert Warfare with just a few mouse clicks and without further
**   need for the Artifact thereafter
**   (by toggling the Warfare skills while repeatedly equipping the artifact).
**   Three free Expert skills for just temporarily having one artifact equipped. WOW!
**   And you can always give it to another hero or to a commander afterwards...
**
** uses vars (v248)
** uses vars v2398..99 (Tobyn universal vars, v2399/v2398 attacking/defending hero)
** uses fcts FU2340,2341
** uses strings z237..239 for skill names
** uses Universal Timer TM1/2 (day1)
** ONLY ACTIVE if v2365=1 (wogify option 193)


INIT SKILL NAMES (leaves descriptions unchanged)

!?TM2&v2392=1/v2391=1/v2365=1;         triggers for first active color on day 1 only (if script active)
;                                    (will trigger after script03.erm skill enhancement)
!!UN:P54/?y-1;                         check if War Machines I is active (Overlord, script54, war machine levels)
!!UN:P55/?y-2;                         check if War Machines II is active (Arstahd, script55, Tent mid-battle Resurrection)
!!UN:P204/?y-3;                        check if First Aid I is active (Arstahd, script48, Tent post-battle Resurrection)
!!UN:P190/?y-4;                        check if First Aid II is active (Tobyn, script64 see above, Tent Cure spell)
!!UN:P201/?y-5;                        check if Artillery I is active (Arstahd, script48, pre-battle damage)

!!MA&y-1=0/y-2=0/y-3=0/y-4=0:P147/750; all First Aid Tents will have 750 HPs (if neither First Aid skill nor the Tent war machine itself are enhanced)

!!VRz237:S^战争机器(弹道)^;                     if no warfare relevant skills were enhanced
!!VRz238:S^战争机器(炮术)^;                      .
!!VRz239:S^战争机器(急救)^;                      .
!!VRz237|y-1=1/y-2=1:S^{战争机器(弹道)}^;         if Ballistics enhanced by script 54 or 55
!!VRz238|y-5=1:S^{战争机器(炮术)}^;               if Artillery enhanced by script 48
!!VRz239|y-3=1/y-4=1:S^{战争机器(急救)}^;         if First Aid enhanced by script 48 or 64

!!UN:G0/10/0/237 G0/20/0/238 G0/27/0/239;set skill names to Warfare


MANUALLY SET WARFARE MAIN SKILL

!?CM2&v2365=1;                         right-clicked at hero screen
!!CM:I?y-1;                            get right-click number (y-1) (79..102 is skill area)
!!CM:S?y-2;                            check left/right-click (=12 left click, =14 right click)
!!FU2345:Py-1/-1/?y-3/?y-4/?y-5;       call skill click function (in: click number and hero number, out: skill (y-3), area (y-4) and slot (y-5))
!!VRy-6|y-3=10/y-3=20/y-3=27:S1;       y-6 = 1 means either Bal, Art or FA was clicked
!!CM&y-1>78/y-1<103/y-6=1/y-4>1:R0;    if clicked text area of a Warfare skill, disable standard skill click reaction
!!FU2340&y-6=1:Py-4/y-2/y-3;         .. and call Warfare display function (in: skill area, left/right-click, skill)

!?FU2340;                            Warfare skill display and determination (x1=skill area, x2=click type, x3=skill)
!!VRy4&x2=12:S10;                      if left-clickthen init y4:=10 (OK/Cancel buttons with three pics, two of them selectable)
!!VRy4&x2=14:S4;                     if right-click then init y4:=4 (no button)
!!CM&y4=0:R1;                        enable standard reaction if unidentified click and exit
!!FU&y4=0:E;       BUG COUNTERMEASURE (clicking non-functional-areas after Estates (with disabled std reaction) erroneously gives another msgbox and nasty side effects)
!!IF:W-1;                              set w var reference to current hero
!!VRy5:S0;                           init y5
!!VRy5&x1>1/x2=14:S1;                  set cycling "flag" y5 if right-clicked on text field (name or expertise)
!!FU2341:P-1/x3/y5;                  determine and set Warfare expertise (highest of all three skills) on current hero (-1)
!!HE-1:Sx3/?y6;                        get Warfare expertise

!!VRy1|w48<>10:S32 +y6;                (calculate correct display for type 10 message below...)
!!VRy1|w48=10:S62 +y6;               (... which stores result (=1 left, =2 middle, =0 cancel)
!!VRy2|w48=0/w48=27:S62 +y6;         (... in v var instead of normally used dialogue flag)
!!VRy2|w48=10/w48=20:S83 +y6;         .
!!VRy3|w48=0/w48=27:S83 +y6;            .
!!VRy3|w48=10:S32 +y6;                  .
!!VRy3|w48=20:S62 +y6;                  .
!!VRv248:S0;                           init v248
!!VRz-1&v2360>0:S^{战争机器}

{炮术 + 弹道术 + 急救
{控制所有的战争机器
{实现特技增强
{单击图标查看描述^;            msgbox text if short skill description (script75) active
!!VRz-1&v2360=0:S^{战争机器}

战争机器兼有下面显示的三种技能
让你控制三种战争机器。
特技增强拥有{黄色}名字的技能。
右键点击查看描述。
你也可以选择在单技能槽中显示哪一种技能。
另外二种技能隐藏起来了(单击经验图标)
三种技能共享同一经验值。^;            if standard skill description (script75 inactive)

!!IF&x1>1:Q248/20/y1/20/y2/20/y3/y4^%Z-1^;msg each time Warfare skill text field (name or expertise) is clicked

!!VRy7:S0;
!!VRy7&v248=1/w48=27:S10;                   v248 |1   2   0
!!VRy7&v248=2/w48=27:S20;               -------+-----------
!!VRy7&v248=1/w48=20:S10;               w48=10 | 202710
!!VRy7&v248=2/w48=20:S27;                     20 | 102720
!!VRy7&v248=1/w48=10:S20;                     27 | 102027
!!VRy7&v248=2/w48=10:S27;
!!FU2341&v248>0:P-1/y7/0;            determine and set Warfare expertise (highest of all three skills) on current hero (-1)
!!UN:R3/-1;                            redraw hero screen


GET WARFARE MAIN SKILL AND EXPERTISE

!?FU2341;                  set Warfare main skill and expertise (x1=hero, x2= w48 or clicked Warfare skill, x3=if cycling)
!!FU&x2<>0/x2<>10/x2<>20/x2<>27:E; exit if skill parameter invalid (neither none, Bal, Art nor FA)
!!IF:Wx1;                  set w var reference to that hero
!!HEx1:S10/?y1 S20/?y2 S27/?y3; get expertise of all three Warfare skills (y1, y2, y3)
!!VRy4:Sy1;                  (calculate highest Warfare expertise (y4))
!!VRy4&y2>y4:Sy2;             .
!!VRy4&y3>y4:Sy3;             .
!!HEx1:S10/0 S20/0 S27/0;    remove any Warfare skill (to later guarantee they are the last displayed skills)
!!VRy6&x2=10/x3=1:S20;       cycle to display next skill (if skill text field (name or expertise) was right-clicked)
!!VRy6&x2=20/x3=1:S27;      .
!!VRy6&x2=27/x3=1:S10;      .
!!VRx2&x2>0/x3=1:Sy6;         .
!!VRx2&y4>0/x2=0:S10;      set Ballistics default if Warfare but no skill set for display yet
!!HEx1&y4>0/x2>0:Sx2/y4;   set max expertise to clicked/selected Warfare skill
!!VRw48&y4>0/x2>0:Sx2;       set hero var w48 to respective Warfare display skill
!!HEx1:S?y5;               get number of skills shown (y5)
!!HEx1:S10/y4 S20/y4 S27/y4; give the other two skills at same expertise, but hide them afterwards
!!HEx1&x2=10:S0/20/1 S0/27/1; if Bal then hide Art and FA
!!HEx1&x2=20:S0/10/1 S0/27/1; if Art then hide Bal and FA
!!HEx1&x2=27:S0/10/1 S0/20/1; if FAthen hide Bal and Art
!!HEx1:Sy5;                  set back number of skills shown to avoid erroneous display


TRIGGERS TO SET CORRECT EXPERTISE FOR THE OTHER TWO WARFARE SKILLS

!?HL-1&v2365=1;            hero levelup lets hero advance the other warfare skills to pre-levelup expertise
!!IF:W-1;                  set w var reference to current hero
!!FU2341:P-1/w48;            update Warfare skill levels and displayed skill

!?OB104&v2365=1;         University pre-visit trigger
!!IF:W-1;                  set w var reference to current hero
!!FU2341:P-1/w48;            update Warfare skill levels and displayed skill

!$OB104&v2365=1;         University post-visit trigger
!!IF:W-1;                  set w var reference to current hero
!!FU2341:P-1/w48;            update Warfare skill levels and displayed skill

**OB63/51&v2365=1;         Market of Time pre/post-visit trigger
; pre-visit would still take place after script09 (Market of Time) effects
; -> problem now adressed and rectified in Market of Time script09

!$OB113&v2365=1;         Witch Hut post-visit trigger
!!IF:W-1;                  set w var reference to current hero
!!FU2341:P-1/w48;            update Warfare skill levels and displayed skill

!?BA52&v2365=1;            battle has started (trigger for both sides)
!!BA:H0/?v2399 H1/?v2398;    store attacking/defending hero numbers
!!IF:Wv2399;               set w var reference to attacking hero
!!FU2341:Pv2399/w48;         check attacking hero
!!IF&v2398>-1:Wv2398;          set w var reference to defending hero (if any)
!!FU2341&v2398>-1:Pv2398/w48;check defending hero (if any)

******************************************************************************************



楼主自行测试。有问题及时反馈。

[ 本帖最后由 fastarrow 于 2012-1-10 11:58 编辑 ]

king200101 发表于 2012-1-10 12:38:26

一个问题,用wog化的地图,开启战争武器加强II和辅助技能强化的情况下,不论英雄是否装备帐蓬,学会医疗术后战斗时就应该带着多帐蓬的,帐蓬数等于英雄等级,可是我把离弦箭写的代码加入地图后,战斗中并没有出现多帐蓬,请帮忙看看

hellmatrix 发表于 2012-1-10 23:40:19

不太懂哎,帮你顶一下了

jvtcjll 发表于 2012-1-20 20:25:24

;lan; 都是脚本高手呀。
页: [1]
查看完整版本: 请高手写一下作战术(炮术、弹道、医疗术三合一)的脚本,谢谢!

捐赠