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

下載本文檔

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

文檔簡介

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

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

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

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

5、=(冋用地圖區(qū)觀內(nèi)祐足衛(wèi)匹酉t單說)的娉蟲枝能等級)等于0)的折有單位 _單位書-選取 InderGr oup 內(nèi)所有單位做動作 白占Loop -動作 劭設(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號索引作為臨時 的變量,不作為實際存儲使用。獲取當前單位后(這里是單位

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

7、iu t 0 = (Si百單位) 設(shè)置 Index_FIQ融境器-運行恥5 無視條件) 稠開動作EffLLgp】從1 if Buffjlig,廷行(Loop -動作) 白Loop -動作 (Else -坊作) E 如果冊有的條件成立)則運行(Th -魴作)否則運行 :日 If -條件 lnff_Loop 大于 Buff_Flac Then -動作 退岀儲環(huán) _ Else -動作 -田而果斬育的聚件感立)則運行(H鴉-動作)看則運行 0 S if - 件 I池 ! E I.J 印IiiiOftitBiif_Li臬于 邃肓單位 -凸.Th也-動作 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)二沒有*位 設(shè)置 Euff_FLg = uf_Flig - 1) 石E5 -動作 主要觸發(fā)上面的循環(huán)是判斷Buff是否到期。下面的循環(huán)是從Buff系統(tǒng)的數(shù)組中移除 已經(jīng)結(jié)束的Buff (這里將Unit數(shù)組的值設(shè)為沒有單位來標記Buff結(jié)束)。 BufrLoa P事件 3條件 動作 設(shè)査t 0 = Bf 臨譏住“啪 |如果扁條件咸立)則君行 (Th

9、wi - 動怕誓則話行0E1 e a it - 件 恥化譏口專于沒肓單位 日曰Tken -動作 O琳過剩余動作 丘E1S.-動件 設(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)否則運行祖 E S 1 -條件 m 血-任意聚件ifi立 白童條件 IWf_Tlmeaj小于或等于0.00 (E口電心是免亡禹1)等于TRUB Thun -動件 單位

10、-拘 BUff_Unit0刪瞧 Bu_ia0 單1 立-刪陳Ru_UnitOj甬聰璉用鋰 觸垸器-話行i Sger Bu_Lo opj氏視殺件) iE Bff_UnitBuf_UQP=沒有單隹 些電-動作 設(shè)置 BuffLoop = Bnff TimeC -動作) 判斷Buff剩余時間的觸發(fā)。沒啥好說的,簡明易懂。 件件作 置S蠱羞墨置位fe 設(shè)設(shè)設(shè)設(shè)段設(shè)羊單 澹壞動作口即耀敎期從1到血圧運行血專-動作) 備Loop -動作 -動作) -19和果斷有的條件臟)則運行噸-動作D香則運行 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 -動作 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 點雖旳埒99 2lr 連柱&五博黛3 tri buff消失。同時圖標也 n im 孩YF3命A fl-rf Ji-* mm .已丁右扌勺 id/? LIllrJ 転徒左侖賽螢-InlrRnffrcaDB |r -女匡諸| LIT扯cftHIr呼習理奸些L

12、kffffrrfCXli V 皐護聊ii論越匣幗,話MB制苗劇V a隔iiz.mt 口曾圮 息育 E P D Q :1存 歸嚴: 工程升級,這個技能就是Buff系統(tǒng)要用到的,功能是記錄這間隔的0.55秒時間。 Till t Zhu an 曰p事件 囹姻初始化 1 剝牛 iJB - TU* -啊 早也- 單叩a 葷Y堀-許朋La詛i-b冋折豈晌?打盂(昨 _ atrft 知*耶Mil亡(I呢n -苛昨無叫呂廠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爭于 i tVnh - t.lfj 單齒-歸ftAe. vk u占転 nr壬 沖擊輔,平爭運晡現(xiàn)謝Jtr由刪;耐 檔砂sr 耐貳固轉(zhuǎn):v ID.!* -ddi:i“SLnLkrSi3MIl.血 nLKd“:krl 44訓(xùn)鈿鵝紈豐泣)的 士工 SftlBi上 m-如 I=J匕.動作 二循環(huán)動作循環(huán)整數(shù)從1到 甩 運行 仏吟-動作) 曰孟LQOp -動作 8玩家-設(shè)費戰(zhàn)家循環(huán)整數(shù)h R)的彈王樹硝餐境為甦用 工程升級這個技能有個很棒的地方就是直接禁用就可以隱藏圖標而且效果還在。 J 口 lifter -nv3 Hh夸三連円孚于TR11 蘭引 M呻,埼口碎殆代立:nhtij葉幗樹向冷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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論