for循環(huán)在event中的運用,全體時停

大家好,我是Last孤影眾后面還有一個點,今天帶來我最新的發(fā)現(xiàn)但其實大佬很久以前就掌握的知識:for循環(huán)在event中的使用。
長話短說,我們可以在事件中使用for循環(huán)來達成一個循環(huán)觸發(fā)事件或者循環(huán)檢測條件,例如根據(jù)fs群里大佬的靈感,我寫了一個只狼全體敵人時停的事件。
$Event(11006021, Restart, function() { ? ??
WaitFor(CharacterHasSpEffect(10000, 3000)); ? ?
for(let chr=1000000; chr <= 1009999; chr=chr+1) ? ?
{ ? ? ??
?SetNetworkUpdateRate(chr, true, CharacterUpdateFrequency.NoUpdate); ?
?}
這里就是用到了for循環(huán),首先檢測玩家喝藥特效,這個是觸發(fā)特效我自己定的,然后進行一個for的循環(huán)語句,首先給chr賦值1000000,接著
SetNetworkUpdateRate(chr,?true, CharacterUpdateFrequency.NoUpdate);??
這句話的意思就是敵人的刷新率變?yōu)?,也就是敵人不會刷新,看上去就是時停了。
接著chr=chr+1,也就是chr自加1,只要chr滿足小于等于1009999,那么這個循環(huán)就不會結(jié)束,直到把實體編號1000000到1009999的所有敵人都不刷新了,這個事件才會結(jié)束,由此達到了全體時停,當(dāng)然狼不在其中,因為狼的事件編號為10000,遠小于1000000。
當(dāng)然我們有兩個需要注意的點,一是這個chr的值我們必須定好,不能用通用事件帶任意值進去,不為什么,就是不奏效,所以我們需要每張圖加一個事件,例如源之宮chr就可以是2500000,然后chr<=2509000,這樣所有的源之宮敵人我們都能涵蓋到。
第二個點就是如果已經(jīng)加載出的敵人,會表現(xiàn)出時停的模樣,但是沒加載出的敵人后續(xù)就不會加載了,因為刷新率已經(jīng)是0了,他不會刷出來了,所以我們不能讓時停一直存在,不然下個區(qū)域的敵人就消失了,最好就時停10秒之內(nèi)。
我這里寫了個五秒的:
$Event(11006021, Restart, function() { ? ??
WaitFor(CharacterHasSpEffect(10000, 3000)); ? ??
for(let chr=1000000; chr <= 1009999; chr=chr+1) ? ? { ? ? ? ?
SetNetworkUpdateRate(chr, true, CharacterUpdateFrequency.NoUpdate); ? ?} ? ?WaitFixedTimeSeconds(5); ??
?for(let chr=1000000; chr <= 1009999; chr=chr+1) ? ? { ? ? ??
?SetNetworkUpdateRate(chr, true, CharacterUpdateFrequency.AlwaysUpdate); ? ?} ? ?RestartEvent();
});
先是全體時停,然后5秒后全體解除時停,這樣不會影響到后面敵人的刷新。
當(dāng)然時停只是一個用途,我們可以利用for循環(huán)制作動態(tài)難度:檢測玩家身上的攻擊力特效,給予敵人對應(yīng)的加成,來達到玩家越強,敵人越強的動態(tài)難度。
for(let?sp=160001; sp<=?160100; sp++)?
?{ ? ? ? ?
WaitFor(CharacterHasSpEffect(10000, sp));
SetSpEffect(x, sp+n);
?}?
這樣
x為敵人的實體編號,n為常數(shù),sp+n對應(yīng)敵人的動態(tài)加成特效,可以搞99個和狼一樣。
總之,for循環(huán)確實是讓event的工程量在某些特定場合大大減少,可惜我今天才知道
