當前位置:編程學習大全網 - 編程語言 - 魔獸世界語言宏的壹個缺點,很多人都不能解決的問題

魔獸世界語言宏的壹個缺點,很多人都不能解決的問題

2.0 宏的基礎知識

2.0.0 宏是什麽?

簡而言之,宏(marco)就是壹個使用blizzard預先設置好的壹系列命令或函數來實現壹個有限的功能。

最強大的莫過於可以實現條件判斷。

******** ********** ************** *************

2.0.1 宏是否合法?用宏會被封號麽?

請註意2.0.0回答裏面紅色的部分,既然使用blizzard預先設置好的壹系列命令或函數,哪還會不合法麽?

******** ********** ************** *************

2.0.2 宏的運行機制是怎樣的

事實上,宏裏面的所有語句都是在同壹時間被當成是壹個整體同時運行的,而不是壹行接著壹行像我們想象的那樣運行

其實世界上沒有壹臺電腦可以把所有代碼當作壹個整體來執行即使看上去是那樣的,電腦都是按順序執行的。

上面的意思就是說宏不會在等第壹行執行完以後再去執行第二行,第二行和第三行之間也是壹樣。中間是不停頓的,所以看上去就像被當作壹個整體去執行。

******** ********** ************** *************

2.0.3 如何使得我的宏施展出來的時候可以自動說對象的名字?

%t這個變量可以使得妳的宏說出妳所選擇的對象的名字,比如

/說 妳好啊,%t

當妳選擇 夢幻飛天無敵小豬 這個玩家的時候,使用這個宏,結果就是

妳說: 妳好啊, 夢幻飛天無敵小豬

******** ********** ************** *************

2.0.4 宏的數量有限制麽?

每個角色只能建立18個marco。而且就我所知不可以超過18。

******** ********** ************** *************

2.0.5 宏裏面如何選定隊友,自己或者敵人?

宏裏面每個角色都是有代號的,現列舉如下:

"player" 玩家自己

"pet" 玩家的寵物

"party1" 1號隊友

"party2" 2號隊友

......

"partypetN" 第N個隊友的寵物 (N 可以是 1,2,3, or 4) (1.5.0新加,國服暫時沒有)

"raidN" 第N個團隊夥伴 (N 可以是 1,2,3,...,40)

"raidpetN" 第N個團隊夥伴的寵物 (N 可以是 1,2,3,...,40) (1.5.0新加,國服暫時沒有)

"target" 被選中的目標

"mouseover" 鼠標正在劃過或剛剛劃過的目標

下面的值只能用於壹些特殊場合:

"npc" or "NPC" 玩家正在與之交互的NPC

比如說需要引用2號隊友的生命值,就用 UnitHealth("party2") 就可以了

******** ********** ************** *************

2.0.6 宏的寫作有什麽格式?

妳可以使用給定的命令去完成壹個宏,比如/說,/施放

這些都是有英文的,比如上面兩個,妳可以寫成/say,/cast

有的可以簡寫成 /say 寫成 /s

當妳要用到函數的時候(壹般後面會有壹個括號,比如UnitMana()),需要用 /script 開頭。

比如釋放壹個技能,妳可以寫成 /cast 真言術:盾(等級1) ; 也可以寫成 /script CastSpellByName("真言術:盾(等級1)")

******** ********** ************** *************

2.1~2.2 實際使用方面的疑難

2.1.0 我如何在壹個宏裏釋放法術?

使用 /施放 這個命令。 例如 /施放 恢復(等級1)

最簡單的在妳的宏裏面寫入正確技能的方法是,當妳編輯壹個宏的時候打開妳的 技能窗口,然後shift+左鍵點擊相應技能。這樣就會自動在宏編輯窗口裏面添加 /施放 妳選擇的技能

******** ********** ************** *************

2.1.1 我能否在壹個宏裏面使用很多技能?比如說(牧師為例)壹個 MB,壹個Pain,再來壹個MF

不可以!原因是宏是不可以延遲的!但是妳施放壹個法術以後再施放壹個法術,妳必須等待其間的公***冷卻時間(1.2秒~1.5秒)結束以後,才可以施展第二個法術。

不過妳仍然可以做壹些不需要等待的事情。比如,施放壹個法術然後進行攻擊。或者使用物品(只要他們有獨立的冷卻時間)

不過妳仍然不可以做兩個之間需要等待的動作!

當然妳會說,如果我要使用的第壹個技能是瞬法法術,沒有公***冷卻時間呢?

告訴妳,結果是,仍然不可以!哈哈

附錄:

再擴展壹點點

(1)會觸發公***冷卻時間的技能:

釋放壹個法術或者技能

(2)不會觸發公***冷卻時間的技能:

在聊天窗口裏面說話

進入攻擊模式

命令妳的寵物攻擊

使用壹個物品

宏只可以做第壹個列表裏面的壹件事,但是卻可以做很多第二個列表裏面的事情

2.2.4裏面有關於這個問題更詳細的解釋

******** ********** ************** *************

2.1.2 我如何設定壹個宏或者壹段腳本使得當我遇到什麽情況的時候自動施展技能?

妳不可以!現在的wow裏沒有辦法自動施展法術或技能。妳只能在觸發壹個硬件事件(hardware event)的時候才可以施展壹個技能,(比如說,鼠標鍵被按下或者鍵盤上某個按鍵被按下)。此外,這個hardware event必須觸發壹個法術或者技能,否則也無法釋放。

妳可以嘗試使用在壹段時間以後使用CastSpellByName()去釋放法術,但是這個法術不會被釋放。

******** ********** ************** *************

2.1.3 我可以在壹個宏裏等待壹小段時間然後再施展宏的剩余部分麽?(以及對/in的解釋)

不可以,完全不可能。看看2.1.1的解釋。

附錄:

不過當妳安裝cosmos(壹個著名的國外UI)的時候,妳倒是可以的,比如

/in 5

/說 妳好,

/說 小豬!

在5秒之後妳將會說“妳好”。不過妳會立刻說“小豬”。

/in 不是壹個宏延遲指令,它只是簡單的讓妳在壹段時間之後再去施展壹個技能。

不過很遺憾的是,妳不可以用 /in 去釋放壹個法術,施展壹個技能,或者運行壹個宏,這都歸咎於2.1.2裏面所說的hardware event限定。所以,/in的功能是很有限的,妳只能用它去說話,或者使用物品,僅此而已。

我不壹開始就說這個命令的原因是因為99%的時候人們都想在宏裏來個暫停,以使得它們可以在同壹個宏裏再釋放壹個法術,或者換裝備然後再使用壹個技能。即使用了cosmos的 /in 這些仍然是不可行的!

******** ********** ************** *************

2.1.4 我如何在宏裏面使用壹個急救繃帶?

妳如果想給自己使用繃帶的話,不用編寫宏,直接使用它或者拖進妳的動作條裏面。

如果妳想再做其他壹些事情,以下是妳所需要的代碼

/target 妳的名字

/script UseContainerItem(Bag#, Item#);

/script TargetLastEnemy();

bag# (0-4):

是背包(Bag)的編號

背包欄從右到左依次是 4,3,2,1,0

Item# (1-16)

格子編號取決於妳的包的大小,壹般都是從左往右,從上往下(壹行接壹行) 比如

6格包

____1 2

3 4 5 6

16格包

1 2 3 4

5 6 7 8

9 ......

******** ********** ************** *************

2.1.5 我可以對我的隊友施展壹個增益法術而且不失去我當前的目標麽?

可以,,,,

只需要簡單得這樣做:

/施放 真言術:盾(等級 1)

/target 隊友的名字

當妳在沒有選定壹個友方目標的時候就施展增益法術的時候,這個技能將會進入 選擇模式(註意光標的變化)

下壹個選定的命令(/target)(不管是寫代碼或者按鍵)告訴這個技能施展在誰的身上。

但是不會改變妳的目標!

用另外壹種方法來實現:

/target 隊友的名字

/施放 真言術:盾(等級 1)

/script LastTarget()

會改變妳的目標,進入自動攻擊模式而且會使得盜賊失去他們的技能點

******** ********** ************** *************

2.1.6 盜賊如何切換雙手武器,比如說從 匕首/匕首 切換到 劍/錘 ?

這裏是我的宏(把手上的匕首/匕首 切換到 背包裏面的 劍/錘 )

當然,只要是單手武器都可以切換,僅僅是壹個位置問題,我們所做的只是從壹個地方拿起壹個東西和另外壹個未知的東西互換位置,而不管它的類型。

這裏要用到兩個命令:

1. PickupInventoryItem(xx) [從主手武器位置禍福手武器位置壹個武器]

2. PickupContainerItem(x, y) [和上面不同之處在於是從背包裏面拿]

參數的解釋:

1. PickupInventoryItem(xx)

[x填寫16代表主手武器位置, 17代表副手武器位置]

2. PickupContainerItem(x, y)

[x 是背包編號。 y代表格子編號。通過寫入不同的x,y值,妳可以表示不同的物品。]

具體位置和數字的關系請參見2.1.4的解釋

宏:

/script PickupInventoryItem(16);

/script PickupContainerItem(0, 1);

/script PickupInventoryItem(17);

/script PickupContainerItem(0, 2);

Enjoy!(2.2.5有這個兩個函數使用的另外的壹個例子)

******** ********** ************** *************

2.1.7 在壹個宏裏面如何使我的寵物攻擊選定的目標

請使用如下代碼:

/script PetAttack();

******** ********** ************** *************

2.1.8 我可以建立壹個宏以使用副手武器麽?

可以!

/script UseInventoryItem(GetInventorySlotInfo("SecondaryHandSlot"));

這段代碼將會激活妳所裝備的副手武器

******** ********** ************** *************

2.1.9 如何在壹個宏裏選定隊友1或者隊友5

/target party1 將會選定1號隊友 party2將會選定2號隊友,壹直到5

party1 就是隊友1個代號,可以用在其他任何妳想要選中1號隊友的指令裏面

******** ********** ************** *************

2.2.1 如何在壹個宏裏面引用目標的各項屬性,比如說生命值,法力,性別,等級等等,,,

UnitHealth("unit") 目標生命值(HP)

UnitHealthMax("unit") 目標生命最大值

UnitMana("unit") 目標法力值(mana)

UnitSex("unit") 顯示目標的性別(Sex)

UnitLevel("unit") 顯示目標的等級(LV)

unit的值請參照2.0.4

其他更多的函數請參考/World_of_Warcraft_API

******** ********** ************** *************

2.2.2 我如何協助我的寵物進行攻擊?

妳可以寫壹個這樣的宏去協助妳的寵物

/script AssistUnit("pet");

這個將會鎖定妳的寵物正在鎖定的目標。如果妳的寵物沒有鎖定任何目標,這個宏就會什麽也不做。

如果妳的寵物死了,妳將會受到這個信息“我需要壹個目標”

我不喜歡聽電腦對我嘮叨這句話,所以壹個稍微簡潔壹點的宏是......

/script if UnitExists("pet") then AssistUnit("pet"); end

修正了上面那個缺點,當妳使用宏的時候妳的寵物已經死了,妳也不會收到那條信息。

******** ********** ************** *************

2.2.3 如何協助我的隊友進行攻擊或者選中我自己?

/script AssistUnit("party2");

這將會協助隊伍裏的2號隊友進行攻擊。如果妳不在隊伍裏面妳將會受到壹條消息“我需要壹個目標”

/script AssistUnit("小豬");

這個marco將會協助壹個叫做小豬的人進行攻擊,如果沒有 小豬 這個人,,,,,,

/script TargetUnit("player");

這個宏會選擇妳自己。當妳想對自己施放某個法術的時候就會很有用。

******** ********** ************** *************

2.2.4 我可以用marco從A姿態切換到B姿態,使用B姿態的技能然後再返回A姿態麽?

絕對不可以!

已經說了很多次了,我再說壹次!

“按壹個鍵,使用壹個技能” 這是壹個雷打不動的規矩!

違反這個規矩就是外掛功能!

如果妳被抓到違反規定,妳就會被BAN ACC(封帳號)。

妳的宏不工作是因為他根本不應該這樣做!

客戶端可以很好地制止壹部分違反規定的行為。

cosmos提供的 /in 並沒有違反規定,因為它不能用於延時去釋放壹個技能。

以戰士的3種姿態來說,姿態切換都是瞬發的,但是都有壹個1秒的公***冷卻時間。

妳不可以用1個鍵去觸發兩個技能。

2.1.1裏面有關於這個問題更多的解釋

******** ********** ************** *************

2.2.5 如何切換身上的裝備?

我寫了壹個marco使得我可以切換我的鞋子。

我有兩雙鞋子,壹雙可以加快我的行走速度,壹雙則用於戰鬥。

代碼是這樣的:

/script PickupInventoryItem(8);

/script PickupContainerItem(4,7);

/script UseContainerItem(4,13);

第壹個命令,PickupInventoryItem(N),將會定位到妳角色裝備欄裏某個需要切換裝備的地方(根據N的取值不同來實現指定不同的位置).而例子裏面所使用的8將會告訴電腦我要切換的是腳部的裝備.

第二行用到了PickupContainerItem()。這個激活了背包裏面所要切換的東西 (我的例子裏就是4,13這個地方的裝備) 這個例子裏面將會和宏裏面第壹行PickupInevtoryItem(8) 所指定的裝備進行切換。

(背包的編號請參見2.1.4)

最後1句話使用了我背包裏(4,13)這個位置的壹樣東西。(Camus註:這個人說是上馬)

壹個宏就可以實現換鞋子然後上馬,不騎馬的時候使用壹次,就會把鞋子切換回來。

壹些註意事項:

(1)妳必須把所要切換的東西很精確的放在背包的某個位置,而且不可以卻移動它,不然這個宏就不會執行。

(2)當妳和壹個賣東西的NPC說話的時候,妳將會自動下馬,妳將會穿著妳的加速靴下馬。換句話說,當妳再壹次使用這個宏的時候,妳將會穿著妳的戰鬥用鞋上馬,不過並不像聽上去那麽糟,妳可以再妳上馬的時候再次使用這個宏,就切換回來了(因為妳在上馬的時候不會上馬)或者妳也可以在跑的時候使用壹次這個宏,因為跑動的時候也不會上馬,妳就又會回到壹開頭的狀態了。

2.1.6有這兩個函數使用的壹個例子。

  • 上一篇:HALO怎麽破解收費
  • 下一篇:青島消防規定
  • copyright 2024編程學習大全網