文字檔

這是精華區的巨集的範例~有些地方不太懂無法做應變
/script if (not string.find(UnitBuff("player", 1), "鷹之守護")) then CastSpellByName("鷹之守護"); end;
1.Not String.find =>是否判定 判定自己有無應之守護 !?

2.(UnitBuff("Player ,1) 的這個【1】,指的是【有】這個Buff,還是第一格Buff!?

我本職是SHM
我寫成
/script if(not string.find(UnitBuff("player", 1),"閃電之盾")) then CastSpellByName("閃電之盾"); else CastSpellByName("風怒武器") end;
不過完全不行...有無大大能幫忙一下

另外我用UnitHealth 來做判定 對敵人的話是可以用%數去判定
但設在自己跟隊友身上,變成不能判定%數...而是實際的HP數量
有什麼寫法可以變成讓Check隊友的血量也是用%數去判定呢!?

-----------

先說明這兩個函數的用法:
http://www.wowwiki.com/API_UnitBuff

buffTexture = UnitBuff(unitName, buffIndex);
unitName:目標名稱
buffIndex :目標身上的第幾個BUFF
buffTexture :BUFF在程式中使用的圖示名稱,沒有BUFF則回傳nil <---重點!!!

IsFind=String.find(String,TarStr)
String:被搜尋的字串
TarStr:要尋找的字串
IsFind:如果有找到字串則這個值會是1,找不到則是0

知道這兩個函數的用法後再來看看你的巨集
/script if(not string.find(UnitBuff("player", 1),"閃電之盾")) then CastSpellByName("閃電之盾"); else CastSpellByName("風怒武器") end;
首先這個巨集的第一個問題是,他找的字串是技能的中文名稱
而UnitBuff回傳的是英文的圖示名稱,所以當然找不到
那要如何得到BUFF的英文名稱,下面是一個簡單的巨集
會將你身上的第一個BUFF的名稱說出來
/script S=UnitBuff("player", 1) SendChatMessage(S)
假使你說出來的是SHIELD_OF_FLASHING

第二個問題是,這個巨集只會找你身上的第一個BUFF
假如你的閃電之盾是第二三四..各施放在身上的BUFF,那有可能會造成重複施法
將你的巨集做一下修改
這是要貼到WOW裡的:
/script x=1;Find=0; while(UnitBuff("player",x) or Find==0) do if (string.find(UnitBuff("player", 1),"SHIELD_OF_FLASHING")) then Find=1;else x=x+1;end;end;if (Find==0) then CastSpellByName("閃電之盾"); else CastSpellByName("風怒武器") end;

這是說明用的,個人比較喜歡縮行的表示方法
/script x=1;Find=0
x=1,表示從第一個BUFF開始找,Find=0表示沒有找到
while(UnitBuff("player",x) or Find==0) do
用while迴圈一直重複尋找,直到UnitBuff回傳為nil或找到為止
if (string.find(UnitBuff("player", 1),"SHIELD_OF_FLASHING")) then
Find=1;
找到則將Find設為1
else
x=x+1
否則繼續往下一個BUFF找
end;
end;
if (Find==0) then
CastSpellByName("閃電之盾");
else
CastSpellByName("風怒武器") end;
x=x+1
剩下的應該不用解釋了吧

這樣就是一個比較完整的巨集了

p.s.我玩的不是SHM所以你救自己試試看,可不可以跑吧

另外血量要%數,B社沒有提供這樣的函數,就用數學自己算吧
UnitHealth("player")/UnitHealthMax("player")

文字檔


arrow
arrow
    全站熱搜

    both2992 發表在 痞客邦 留言(0) 人氣()