Indexer系統(tǒng)全面教程_第1頁(yè)
Indexer系統(tǒng)全面教程_第2頁(yè)
Indexer系統(tǒng)全面教程_第3頁(yè)
Indexer系統(tǒng)全面教程_第4頁(yè)
Indexer系統(tǒng)全面教程_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Indexer 系統(tǒng)全面教程 1. Indexer 系統(tǒng)有什么用 ? 做技能時(shí) ,往往需要給單位綁定一些數(shù)據(jù) ,比如做護(hù)盾類技能時(shí)需要綁定護(hù)盾能抵消 的傷害值 ,做一些持續(xù)傷害的技能時(shí)需要給技能目標(biāo)單位綁定傷害來(lái)源單位和每秒的傷 害值. 目前常用的方法有全局變量、緩存和哈希表三種。全局變量有高效、方便使用的有 點(diǎn),只需要設(shè)置變量 =xx 即可;缺點(diǎn)則是無(wú)法支持多人。市面上大多數(shù)支持多人的做 法是采用全局變量數(shù)組,用玩家索引做數(shù)組索引。在控制單英雄的地圖中可以起到很 好的效果,但是對(duì)于需要支持更多單位、或者每個(gè)玩家多個(gè)單位的時(shí)候,就顯得不夠 用。緩存和哈希表分別對(duì)應(yīng) 1.20 版本和 1.24

2、版本的魔獸。緩存需要使用 return bug , 需要使用 jass 或自定義代碼來(lái)存儲(chǔ)數(shù)據(jù);哈希表提供了 GetHandleId 函數(shù),但是在觸 發(fā)器中沒(méi)有合適的接口,最后還是需要通過(guò)自定義代碼或第三方we (比如ydwe )提 供的功能來(lái)使用,比較復(fù)雜。 使用 Indexer 系統(tǒng)可以方便的記錄很多數(shù)據(jù),而且通過(guò)擴(kuò)展,該系統(tǒng)可以支持位移 系統(tǒng)等更多的功能。 2. Indexer 系統(tǒng)的原理 Indexer 系統(tǒng)是基于 全局變量數(shù)組的記錄方式。觸發(fā)中有設(shè)置單位自定義值的功能, 自定義值可以是任意整數(shù),而且可以綁定單位而沒(méi)有其他副作用。 Indexer 系統(tǒng)通過(guò)一 定的算法,使得每個(gè)單位都擁

3、有不同的自定義值。這樣,類似于利用玩家索引制作支 持多人的技能,可以將單位的自定義值作為數(shù)組索引來(lái)使得觸發(fā)支持多人,可以支持 任意玩家的任意多個(gè)單位(理論上只能支持 8191 個(gè)單位,但絕大多數(shù)地圖上不會(huì)同時(shí) 存在如此多的單位)。 Indexer 系統(tǒng)在地圖初始化時(shí)選取全地圖的單位來(lái)設(shè)置不同的自定義值。之后通過(guò) 單位進(jìn)入可用地圖區(qū)域來(lái)獲取系統(tǒng)中新增的單位。由于單位進(jìn)入可用地圖區(qū)域事件有 延時(shí),所以需要新建的單位立刻進(jìn)入系統(tǒng)時(shí)(比如彈幕、馬甲持續(xù)攻擊芙蓉面還), 還需要一個(gè)新增單位的觸發(fā)。當(dāng)單位死亡時(shí),判斷是否為英雄單位。如果不是英雄, 則可以移出 Indexer 系統(tǒng)。 3. 簡(jiǎn)單的Index

4、er系統(tǒng) IzulM_Grcmp 1顯電掘.血1 t Ld亡Allnd世次 宀 用姿 1.皿位a ,整單單整 制作一個(gè)最簡(jiǎn)單的Indexer系統(tǒng)需要以下變量: o鍛認(rèn)) 空單儻組默認(rèn) -浚育- 0業(yè) 其中,F(xiàn)lag表示當(dāng)前Indexer中最大的自定義值。Group將進(jìn)入Indexer系統(tǒng)的單 位放入單位組,避免單位重復(fù)進(jìn)入(創(chuàng)建單位手動(dòng)添加的情況下)。Unit數(shù)組將單位 按自定義值作為索引添加到單位組,這樣就可以通過(guò)單位自定義值來(lái)獲取對(duì)應(yīng)單位。 LocalIndex是個(gè)臨時(shí)整數(shù),用來(lái)記錄當(dāng)前單位的自定義值。 觸發(fā)如下: D Iaitlndex a F爭(zhēng)件 地圖胡始化 卜條件 -匕動(dòng)作 8 設(shè)適

5、=(冋用地圖區(qū)觀內(nèi)祐足衛(wèi)匹酉t單說(shuō))的娉蟲(chóng)枝能等級(jí))等于0)的折有單位 _單位書-選取 InderGr oup 內(nèi)所有單位做動(dòng)作 白占Loop -動(dòng)作 劭設(shè)盍InJeK_Unit01 =站取單位 須設(shè)置TK_FLm =(Xndtx.FLtg +1) 1單位-設(shè)蠱rndUnit0的自定義值為Id*xjlag 厘設(shè)蠱 Ini*x_Uni t Indtx_Fl - IndsM_Uni l0 市蛾器-為EatSrInd領(lǐng)莎添加事件:俚位-任意單位逬入可用丸囹區(qū)域RD 將初始化地圖中的單位添加到Indexer系統(tǒng)中。這里利用數(shù)組的 0號(hào)索引作為臨時(shí) 的變量,不作為實(shí)際存儲(chǔ)使用。獲取當(dāng)前單位后(這里是單位

6、組循環(huán)中的選取單位), 將Flag的值+1,并作為單位的自定義值,即可保證每個(gè)單位的自定義值不同。 該觸發(fā)最后一行是給下一個(gè)觸發(fā)添加事件 鮭右器-為Ent = Inde_Fls.g. Q融岌器-運(yùn)行AixiExFtiMt 咒覘榮件) 聘發(fā)器-為Entering橫誥添加事件:?jiǎn)挝?任意單位遊入可用地圖區(qū)城IW i殳羞 Indeo:Flag2 - IndeM_flag Q Erit srln “事件 日剝牛 I【第發(fā)單位)的蝗蟲(chóng)技能等級(jí))等于0 LtfliS單f立)在 Ind.sx Group 中)等于 FA1SE 白動(dòng)作 翌早悝組-為tnieK_Crou.p添加埔蟲(chóng)發(fā)單包) 遲設(shè)畫Indcx_V

7、iu t 0 = (Si百單位) 設(shè)置 Index_FIQ融境器-運(yùn)行恥5 無(wú)視條件) 稠開(kāi)動(dòng)作EffLLgp】從1 if Buffjlig,廷行(Loop -動(dòng)作) 白Loop -動(dòng)作 (Else -坊作) E 如果冊(cè)有的條件成立)則運(yùn)行(Th -魴作)否則運(yùn)行 :日 If -條件 lnff_Loop 大于 Buff_Flac Then -動(dòng)作 退岀儲(chǔ)環(huán) _ Else -動(dòng)作 -田而果斬育的聚件感立)則運(yùn)行(H鴉-動(dòng)作)看則運(yùn)行 0 S if - 件 I池 ! E I.J 印IiiiOftitBiif_Li臬于 邃肓單位 -凸.Th也-動(dòng)作 2 設(shè)養(yǎng) uf_UnitBuff_Ucp = Bu

8、fF.lhii t Cluf_FLae 設(shè)養(yǎng) EuEJUlX_L5p = 設(shè)養(yǎng) Buf_BnfBuf_Locp = Buf_BuffLEuf_FLa 超設(shè)蓋 WCTimetBuffLo二 Buf_TlmeLTu_Flae E設(shè)置骯化Unit腳ff:F環(huán)二沒(méi)有*位 設(shè)置 Euff_FLg = uf_Flig - 1) 石E5 -動(dòng)作 主要觸發(fā)上面的循環(huán)是判斷Buff是否到期。下面的循環(huán)是從Buff系統(tǒng)的數(shù)組中移除 已經(jīng)結(jié)束的Buff (這里將Unit數(shù)組的值設(shè)為沒(méi)有單位來(lái)標(biāo)記Buff結(jié)束)。 BufrLoa P事件 3條件 動(dòng)作 設(shè)査t 0 = Bf 臨譏住“啪 |如果扁條件咸立)則君行 (Th

9、wi - 動(dòng)怕誓則話行0E1 e a it - 件 恥化譏口專于沒(méi)肓單位 日曰Tken -動(dòng)作 O琳過(guò)剩余動(dòng)作 丘E1S.-動(dòng)件 設(shè)畫 BE_WE0 -=irfp 日 Bif_iaBuE_Lcr =BMuffLWLocp =Buffer ineEBiifEJLcopl =(EufE_Tam*0 - BuE_Du3ring) 喪査欣4理向 骯化C耐XJ SS BE.Tirn, 0 如果斬有的衆(zhòng)件J立)則迄行(Then - ijMt)否則運(yùn)行祖 E S 1 -條件 m 血-任意聚件ifi立 白童條件 IWf_Tlmeaj小于或等于0.00 (E口電心是免亡禹1)等于TRUB Thun -動(dòng)件 單位

10、-拘 BUff_Unit0刪瞧 Bu_ia0 單1 立-刪陳Ru_UnitOj甬聰璉用鋰 觸垸器-話行i Sger Bu_Lo opj氏視殺件) iE Bff_UnitBuf_UQP=沒(méi)有單隹 些電-動(dòng)作 設(shè)置 BuffLoop = Bnff TimeC -動(dòng)作) 判斷Buff剩余時(shí)間的觸發(fā)。沒(méi)啥好說(shuō)的,簡(jiǎn)明易懂。 件件作 置S蠱羞墨置位fe 設(shè)設(shè)設(shè)設(shè)段設(shè)羊單 澹壞動(dòng)作口即耀敎期從1到血圧運(yùn)行血專-動(dòng)作) 備Loop -動(dòng)作 -動(dòng)作) -19和果斷有的條件臟)則運(yùn)行噸-動(dòng)作D香則運(yùn)行 a if - 件 H Eiff_Uni t 循環(huán)整教A 幻等于 Etifft LO U Bnf_Idfj環(huán)整教

11、A. R等于 曰* Buff_Id壞整埶入EL等于 Buff_Id0 _ Thea -動(dòng)作 Q 單位-対 -rAL-2:-rl*T= Fl材 1 fs am =二-i FT - 莘壬扁-( 岸土艮-I *=:*Tf 右=環(huán) 3. 30 0 X) I 11 a. JJ J. J0 0. K 電呉上Ali沁DmuU: 宇暝以期工歸衛(wèi)譏 1 1 J 點(diǎn)雖旳埒99 2lr 連柱&五博黛3 tri buff消失。同時(shí)圖標(biāo)也 n im 孩YF3命A fl-rf Ji-* mm .已丁右扌勺 id/? LIllrJ 転徒左侖賽螢-InlrRnffrcaDB |r -女匡諸| LIT扯cftHIr呼習(xí)理奸些L

12、kffffrrfCXli V 皐護(hù)聊ii論越匣幗,話MB制苗劇V a隔iiz.mt 口曾圮 息育 E P D Q :1存 歸嚴(yán): 工程升級(jí),這個(gè)技能就是Buff系統(tǒng)要用到的,功能是記錄這間隔的0.55秒時(shí)間。 Till t Zhu an 曰p事件 囹姻初始化 1 剝牛 iJB - TU* -啊 早也- 單叩a 葷Y堀-許朋La詛i-b冋折豈晌?打盂(昨 _ atrft 知*耶Mil亡(I呢n -苛昨無(wú)叫呂廠Mf-Q作 if -隸特 Af 單瑩I 2 凡亡a一 tEJ fT FQ5E el甲理|殳r;H 母于e(ise r.w.* zi h TStfl- loTi FC:百mi 弄亍 p ijf

13、i羽單舟i -4爭(zhēng)于 i tVnh - t.lfj 單齒-歸ftAe. vk u占転 nr壬 沖擊輔,平爭(zhēng)運(yùn)晡現(xiàn)謝Jtr由刪;耐 檔砂sr 耐貳固轉(zhuǎn):v ID.!* -ddi:i“SLnLkrSi3MIl.血 nLKd“:krl 44訓(xùn)鈿鵝紈豐泣)的 士工 SftlBi上 m-如 I=J匕.動(dòng)作 二循環(huán)動(dòng)作循環(huán)整數(shù)從1到 甩 運(yùn)行 仏吟-動(dòng)作) 曰孟LQOp -動(dòng)作 8玩家-設(shè)費(fèi)戰(zhàn)家循環(huán)整數(shù)h R)的彈王樹(shù)硝餐境為甦用 工程升級(jí)這個(gè)技能有個(gè)很棒的地方就是直接禁用就可以隱藏圖標(biāo)而且效果還在。 J 口 lifter -nv3 Hh夸三連円孚于TR11 蘭引 M呻,埼口碎殆代立:nhtij葉幗樹(shù)向冷11占什(11-*“ KJrti ; f iltwitlt RdS : ftAt :血小丁朋于 w - rt-n -迦| iJB i.ff_jm*(n= 磚目亡 iSE J_Li_idiLj =年三徒r抄里跑 ifiS ufjjtfn r irm ifi耆 M( T1JQJ - W Zhfl-BcX&d i吾f_Era Cf-u* Zfll - ZhB,arrTrnri J JSfi坤緘* 僥 fllH佯) 再T理發(fā)旱應(yīng))叭咤珀第 哪近壬切tn哥iJMf fgtINe,:*JIU;- 宓屮皿 I “芥宅1-我” :K? TK

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論