提交問題刪除
提交問題
遊戲下載 創建公會 劍3獵手 經脈模擬器 遊戲論壇
專區首頁 新手專題 職業專欄 聲望專題 套裝獲取 副本專題 任務大全 插件下載
當前位置:劍俠情緣3遊戲專區 >> 小編推薦 >> 正文
劍俠3官方宏命令代碼製作教程
劍俠3官方宏命令代碼製作教程
發佈時間:2011年08月19日 11:02:50    作者:青無念    人氣:39453    進入討論區

  不會用官方宏的看這裡:

  step1:按ESC打開系統界面。

  step2:選擇「宏管理」。

  step3:點擊左下角「新建」。

  step4:在右上「名字」欄給你的宏取名,「描述」欄為你的宏添加說明。

  step5:在「圖標」欄選一個你喜歡的圖標,點擊右下「應用」。這樣你的宏就是你喜歡的圖標了。

  step6:把代碼篇裡面的代碼複製到「宏命令」欄裡面,點擊「確定」。

  step7:把宏拖出來放到快捷欄上,用的時候狂點即可。

  思路和寫宏時候的一些小細節

  細節一:「;」。寫宏的時候千萬要注意,在每行/script命令的結尾都要加上這個至關重要的「;」,以及同樣重要的英文輸入法。

  細節二:先賦值再調用。寫宏的時候我們要調用很多的函數,宏要寫的簡潔首先要對一些常用的函數進行賦值。例:/scriptN=GetClientPlayer();GetClientPlayer()是最常用的函數之一,所以在宏的開始把它賦值成N,會對後面的代碼量減少很多。N.GetBuffList()用來判斷玩家自己的buff,這樣寫就比GetClientPlayer().GetBuffList()簡明很多。

  細節三:可以用if但是盡量不要用else。請看鏈接文章中的這一句話:由於運行時有一些效率上的BUG,我沒有採用ifelse判斷。

  細節四:OnputMeaasge函數的妙用。這個函數的功能是在系統菜單裡顯示信息。但是它還有一個更實用的功能,那就對你寫的宏進行調試。如果你寫的宏有問題,那麼在實際使用的時候是無論怎麼按也不會有任何效果和提示的。這時候可以寫這樣一段代碼:OnputMeaasge("MSG_SYS","以上代碼正確無誤!\n")。把這個函數依次放在每行script命令的最後。當能在系統中能看見「以上代碼正確無誤!」的時候說明前面的代碼都是OK的。一旦系統不顯示了,那說明你找到問題代碼了。沒錯它就是個DEBUG的節點。

  細節部分交代完畢,下面進入思路部分:用這些函數我們可以做什麼。

  最常用的幾個函數

  1、GetClientPlayer();獲取當前主程式也就是你本人的狀態。

  2、bFightState判斷是否進入戰鬥狀態。

  3、GetClientPlayer().GetTaget()獲取你的目標的狀態。

  4、OnUseSkill(a,b)釋放技能,a是技能id,b是技能等級,一般都用GetClientPlayer().GetSkillLevel(a)來代替,除非你確定你想釋放的技能等級。

  5、GetClientPlayer().GetSkillCDProgress(a,b)獲取技能a的cd

  6、GetClientPlayer().GetBuffList()獲取自己身上的BUFF狀態,這絕對是個BUG函數,不應該開的接口。

  7、GetClientPlayer().CastSkill(a,b)判斷是否處於釋放技能狀態中,如果說上面一個是BUG函數,這個絕對是逆天了。

  用這些函數可以幹什麼呢?可以簡單釋放某個技能,也可以判斷技能是否處於CD中,甚至知道CD還有多少秒。可以做戰鬥提示了。

  可以獲取目標身上的BUFF,這就可以做觸發類的判斷,比如萬花的逐流長針宏。可以獲取目標身上的BUFF,哼哼一鍵驅散。

  可以判斷是否處於讀條狀態,是否處於讀某個技能的狀態。PVP神技:瞬間斷法。PVE神技:BOSS技能提醒(DBM)。

  而有了一鍵驅散和瞬間斷法,一鍵PVP雖不中亦不遠已。目前不知道判斷DEBUFF狀態的函數是什麼,如果找到這個函數一鍵PK宏技能就可以定型了。咱們不是那些專業做插件的人,但是已知的函數已經夠強大的了,強大到什麼地步?強大了把這些函數封裝起來在配合一個好看的UI就是一個現成的插件,強大到了把宏配合按鍵精靈就是一個好的WG的地步。OMG,看來WOW2.4版本前宏命令的輝煌要在劍三重現了。

 

  劍網3宏命令製作:離經篇

  1、水月關門長針宏

  /scriptN=GetClientPlayer();

  /scriptt=GetTargetHandle(N.GetTarget());

  /scripttl=t.nCurrentLife/t.nMaxLife;

  /scriptA,B,C=N.GetSkillCDProgress(136,1);

  /scripta,b,c=N.GetSkillCDProgress(167,1);

  /scriptD,E,F=N.GetSkillCDProgress(168,1);

  /scriptfor_,Dinpairs(N.GetBuffList())doif(D.dwID==722orD.dwID==412andtl<=0.4andF==0)thenOnUseSkill(168,1)endend;

  /scriptfor_,Dinpairs(N.GetBuffList())doif(D.dwID==722orD.dwID==412)thenOnUseSkill(142,N.GetSkillLevel(142))endend;

  /scriptif(C==0)thenOnUseSkill(136,1)end;

  /scriptif(C>0andc==0)thenOnUseSkill(167,1)end;

  本宏作用:

  首先判斷是否有逐流BUFF,有就放長針沒有就放水月+長針

  如果水月在CD中放「衝脈.幽門」+水月+長針,沒有點出衝脈幽門的請去掉宏命令中紅色部分。

  如果目標血量小於40%且衝脈關門不在CD中,那麼先放衝脈關門再放長針,沒點出衝脈關門的請去掉宏命令中的橙色部分。

  這是一個保命宏,這個宏只能放出順發的長針如果你的水月無間和衝脈幽門都在CD中,那麼除非你有逐流的BUFF在身上否則這個宏是不起作用的。

  2、一鍵治療宏(節藍版)

  /scriptp=GetClientPlayer();

  /scriptt=GetTargetHandle(p.GetTarget());

  /scripttl=t.nCurrentLife/t.nMaxLife;

  /scriptA,B,C=p.GetSkillCDProgress(136,1);

  /scripta,b,c=p.GetSkillCDProgress(167,1);

  /scriptD,E,F=p.GetSkillCDProgress(141,5);

  /scriptfor_,vinpairs(p.GetBuffList())doif(v.dwID==722orv.dwID==412andtl>0.7)thenOnUseSkill(137,7)endend;

  /scriptfor_,vinpairs(p.GetBuffList())doif(v.dwID==722orv.dwID==412andtl<=0.7andtl>0.5)thenOnUseSkill(138,8)endend;

  /scriptfor_,vinpairs(p.GetBuffList())doif(v.dwID==722orv.dwID==412andtl<=0.5)thenOnUseSkill(142,6)endend;

  /scriptif(tl<=0.3andC==0)thenOnUseSkill(136,1)end;

  /scriptif(tl<=0.3andC>0andc==0)thenOnUseSkill(167,1)end;

  /scriptfor_,vinpairs(t.GetBuffList())doif(v.dwID==631andF==0)thenOnUseSkill(141,5)endend;

  /scriptfor_,vinpairs(t.GetBuffList())doif(v.dwID==631andF>0)thenOnUseSkill(137,7)endend;

  /scriptOnUseSkill(101,9);

  本宏作用:結合論壇上朋友們的意見做的修改

  普通情況下沒握針就補握針,毫針CD一到就用。其它時間無腦局針。不喜歡這麼用毫針的同學可以去掉橙色部分

  特殊情況1:觸發逐流BUFF。

  目標血量大於70%局針

  目標血量小於70%大於50%提針

  目標血量小於50%長針

  特殊情況2:目標血量低於30%,且沒有逐流BUFF

  水月不在CD中開水月+長針

  水月CD了且衝脈幽門不在CD中,放幽門+水月+長針。沒有點出衝脈幽門的請去掉宏命令中紅色部分。

  由於字符數的限制沒有把衝脈關門做進去,同樣是字符限制,只能在寫宏的時候把詳細的技能等級加上去,而不能用GetSkillLevel()函數,這樣技能沒有練滿的童鞋需要根據自己實際情況改宏。

  修改處1:p.GetSkillCDProgress(141,5)改成p.GetSkillCDProgress(141,x)x為你的毫針等級。

  修改處2:OnUseSkill(137,7)改成OnUseSkill(137,x)x為你的局針等級。

  修改處3:OnUseSkill(138,8)改成OnUseSkill(138,x)x為你的提針等級。

  修改處4:OnUseSkill(142,6)改成OnUseSkill(142,x)x為你的長針等級。

  修改處5:OnUseSkill(141,5)改成OnUseSkill(141,x)x為你的毫針等級。

  修改處6:OnUseSkill(101,9)改成OnUseSkill(101,x)x為你的握針等級。

 

  劍網3宏命令教程:花間篇

  1、無限定身宏

  /scriptN=GetClientPlayer();

  /scriptt=GetTargetHandle(N.GetTarget());

  /scriptA,B,C=N.GetSkillCDProgress(186,N.GetSkillLevel(186));

  /scriptfor_,vinpairs(t.GetBuffList())doif(v.dwID==675)thenOnUseSkill(179,N.GetSkillLevel(179))endend;

  /scriptif(C==0)thenOnUseSkill(186,N.GetSkillLevel(186))end;

  /scriptif(C>0)thenOnUseSkill(181,N.GetSkillLevel(181))end;

  /scriptif(C>0)thenOnUseSkill(228,N.GetSkillLevel(228))end;

  本宏作用:芙蓉並蒂——》陽明指——》芙蓉並蒂——》陽明指。。。。。。。。。偏離了循環中斷,就放少陽指減速,或者放太陰指拉開距離。重要:紅色部分和橙色部分只能二選一。像我上面寫的那樣,橙色部分是不會起任何作用的。

  目前缺陷:1、進入戰鬥狀態後才有用2、芙蓉並蒂後第一個陽明指結束,目標還處於定身狀態,所以會繼續放第二個陽明指然後才芙蓉,所以實際上的循環是1-2-2-1-2-2。。。。。。

  2、一鍵DOT宏

  /scriptp=GetClientPlayer();

  /scriptt=GetTargetHandle(p.GetTarget());

  /scriptA,B,C=p.GetSkillCDProgress(189,4);

  /scripta,b,c=p.GetSkillCDProgress(190,6);

  /scripthave674=0;

  /scripthave711=0;

  /scripthave666=0;

  /scripthave886=0;

  /scriptift.GetBuffList()~=nilthenfor_,vinpairs(t.GetBuffList())doifv.dwID==886thenhave886=1if(v.nEndFrame-GetLogicFrameCount())/GLOBAL.GAME_FPS<=5thenhave886=0endendifv.dwID==674thenhave674=1if(v.nEndFrame-GetLogicFrameCount())/GLOBAL.GAME_FPS<=2thenhave674=0endendifv.dwID==711thenhave711=1if(v.nEndFrame-GetLogicFrameCount())/GLOBAL.GAME_FPS<=2thenhave711=0endendifv.dwID==666thenhave666=1if(v.nEndFrame-GetLogicFrameCount())/GLOBAL.GAME_FPS<=2thenhave666=0endendendend;

  /scriptifC==0andhave886==0thenOnUseSkill(189,4)end;

  /scriptifC==0andhave674==0thenOnUseSkill(189,4)end;

  /scriptifc==0andhave711==0thenOnUseSkill(190,6)end;

  /scriptifhave666==0thenOnUseSkill(180,10)end;

  /scriptOnUseSkill(179,8);

  本宏作用:

  1、噬骨狀態效果小於5秒釋放鍾林毓秀(註:本人沒有商陽指加噬骨效果的秘籍所以只能很杯具的用鍾林來補噬骨,至於為什麼是5秒,上一個技能的釋放時間+鍾林釋放時間+延遲,導致只有設置為5秒才能保證噬骨不斷。對於有商陽秘籍的童鞋們,我這裡有更好的方法/scriptifhave886==0thenOnUseSkill(180,10)end;代替最後一行紅色的代碼。GLOBAL.GAME_FPS<=3這個地方也只需要設置為3即可)

  2、鍾林狀態效果小於2秒再次施展

  3、蘭摧狀態效果小於2秒再次施展

  4、商陽指狀態效果小於2秒再次施展

  5、陽明指3BUFF狀態效果大於2秒施展

  目前缺陷:

  1、代碼過於繁瑣,我花了3個小時的時間試圖簡化,但是種種努力均已失敗告終,這個宏還有需要簡化的地方

  2、沒有加入深寒效果的判斷,如果是打木樁這個宏沒問題,生寒不會斷,如果需要切目標的話,很難保持原目標身上的生寒效果,需要手動補一下。之所以沒有加入生寒的判斷是因為字符數的限制,目前這個宏已經有1017個字符了,囧~~~

  3、最大的問題,如果是RAID,團隊中有2以上的花間同時輸出,我不敢確定這個宏還能不能正常工作,有興趣的同學可以試下,然後告訴我結果。

  劍網3宏命令教程:PK篇

  1、一鍵打斷宏

  /scriptp=GetClientPlayer();

  /scriptt=GetTargetHandle(p.GetTarget());

  /scriptA,B,C=p.GetSkillCDProgress(183,1);

  /scriptift.GetSkillPrepareState()andp.GetSkillPrepareState()thenp.StopCurrentAction()end;

  /scriptifC==0andt.GetSkillPrepareState()thenOnUseSkill(183,1)end;

  宏功能說明:

  1、如果目標正在施法,且自己也在施法,則打斷當前施法條。

  2、如果目標正在施法,且厥陰指不在CD中,則釋放厥陰指。

  如果你正在讀條,那麼要連點2下才能打斷目標的施法。

  註:本來這部分是要做到一鍵DPS宏裡面的,但是一方面是1024字符數的限制,另一方面考慮到這個宏是只要目標在讀條不管讀什麼都會去打斷,所以還是單獨摘出來,由玩家自己判斷什麼時候打斷技能比較好。

  紅字部分是打斷當前施法的函數,用處較廣泛。可以單獨使用

  /scriptGetClientPlayer().StopCurrentAction()

  劍網3宏命令教程:綜合篇

  智能春泥宏

  /scriptp=GetClientPlayer();

  /scriptt=GetTargetHandle(p.GetTarget());

  /scriptfor_,vinpairs(t.GetBuffList())doif(v.dwID==684)thenOnUseSkill(141,5)endend;

  /scriptOnUseSkill(132,7);

  宏功能說明:目標身上有天地低昂就放毫針,否則上春泥護花。

2
0
0
0
0
0

有料

淚奔

無聊

XD

掀桌

KUSO
0
#2 11-12 04:13 開心網友 說:
回復 | 支持 (0)
請問技能的編號(XXX)部分怎麼取得??
GetSkillCDProgress(XXX,1);
#1 10-21 07:15 開心網友 說:
回復 | 支持 (0)
這些台版能用嗎????????????????????