引用:
原帖由 朽木 于 2008-4-18 14:35 发表 
7 `$ w7 L. }/ a ~; a0 ~+ N这个脚本什么怎么看的,哪个大侠教教我。
* B+ \# |5 T0 Q4 c, ~
你用MPQMater打开地图,把scripts\war3map.j解压出来,然后用记事本或者其他编辑软件打开(我个人用的是Notepad2,他的搜索比较好用),就可以看到所有的触发,以及单位摆放等(这个看了也是白看)
" w/ Q# u! o, W* ?
比如3.9EOBV6那里面的一段
* p: M6 C8 _2 K7 |0 v
if(Pb())then
3 l- w3 i% }5 S& q7 d; T k
call LE(300.)
9 [/ x. Y0 w Y$ t8 Y
else
. W6 n+ v5 D; X3 n' d& ?call LE(120.)
; y1 V7 I* T7 Oendif
8 m# L1 z2 N, B* {5 J
其中LE是优化软件的一个函数,作用是用全局计时器进行不是很精确的等待(会有误差,但绝对不会提前结束等待)
3 h% O5 \, P' [$ z" V) [" `$ [, {: u然后再看Pb这个函数
( d: Z+ j7 N# X. Z( H c
function Pb takes nothing returns boolean
8 ]4 x. |2 p8 R) l5 Y) P& a
return(GetUnitTypeId(GetTriggerUnit())=='n024')
8 E. w0 T' r+ C) T8 F3 _endfunction
5 I, A- L2 s1 X其中n024是黄龙的代码,所以我确定野怪刷新是除了黄龙以外,其他都固定是120
1 g0 y$ ]' d0 Y/ j& }. P& W* F* ^而3.9D的我看了一下,是很繁琐的用所有野怪类型去判断死亡的怪的类型是否符合该类型,然后等待指定时间。
/ f+ S% V* ]3 K; I/ y
; ~ G; @6 h0 N; i顺带说一下,3.9EOBV6里面的增加刷兵数目的触发在这里
8 S& S& p5 W E* S6 [function rA takes nothing returns nothing
" p3 A: h- R8 w; Z) b+ S' u9 i
call DestroyTrigger(GetTriggeringTrigger())
& j! v4 B% o: X; `- Xset Vx[0]=3
: h- X7 c' |9 Kset Vx[1]=1
5 t6 f) v. G$ _- }/ Tcall TriggerSleepAction(1200.)
6 e' g( S7 @6 H G. O$ {" h7 o! V
set Vx[0]=4
- X; \) R+ k" }8 ~set Vx[1]=1
& B1 J, U. \0 d9 gcall TriggerSleepAction(1200.)
9 v1 D6 `% l$ l5 I0 w5 Vset Vx[0]=4
& m8 c! e6 I9 D, K
set Vx[1]=2
- J' ^. k0 h) `* z' B, J5 }endfunction
8 K2 K4 d4 X+ R- N8 u6 h6 Z
其中TriggerSleepAction很不精确,有时候会突然提前结束等待,所以就造成了有时候很早就出现了4个步兵甚至2个弓箭手的情况。用PolledWait(X秒)会好一些
; m" |/ ?& Y8 H# L& Y6 O; r
- [; f( L/ N( R9 M! Q/ J3 Z$ u7 a
[
本帖最后由 libla 于 2008-4-18 16:54 编辑 ]