頁:
[1]
2
簡易UI撰寫--UI與巨集(自動喝水範例) 轉載至巴哈
可以達到同樣功能,為什麼要寫UI,而不直接寫巨集呢?比較一下
UI的好處:
複雜程式碼好看懂
啟動遊戲就會執行
有自己的區域變數
可以定義function
可以做出一些拭窗、按鈕
可以加自己喜歡的東西進去
不能使用UseAction或類似的程式碼(可以寫,不會ERROR,但不能執行)
巨集的好處:
可以使用UseAction或類似的程式碼
....
好處很明顯,有些事一定要巨集來做
但是當我們使用巨集呼叫/script HW_hello("XD")時,如果裡面有UseAction語法,是可以成功執行的
光說不練怪怪的...
那我們來動手寫自動補血UI吧~
我們用之前hello world用的程式來修改
修改HW.lua即可
內容如下
DEFAULT_CHAT_FRAME:AddMessage("Hello World UI2 with |cffffffffauto health|r loaded!!");
local usetimes = 0;
local lasttime = os.time();
local enable=true;
function HW_hello(arg1)
DEFAULT_CHAT_FRAME:AddMessage("Hello World!! " .. arg1);
end
function HW_Update(HP,Potion)
local hpc = UnitHealth("player");
local hpm = UnitMaxHealth("player");
local hpr = ((hpc/hpm)*100);
if(hpr < HP and enable) then
usetimes = usetimes + 1;
DEFAULT_CHAT_FRAME:AddMessage("Your HP is too low (" .. hpc .. "/" .. hpm .. "(" .. hpr .. "%)) Using potion. ".. usetimes .. " times!");
UseAction(Potion);
if(usetimes >1) then
DEFAULT_CHAT_FRAME:AddMessage("last time use is: ".. os.difftime(os.time(), lasttime) .. " seconds ago!");
end
lasttime=os.time();
end
end
SLASH_HW1 = "/hw";
SlashCmdList["HW"] = function (editBox, msg)
if(enable)then
enable=false;
DEFAULT_CHAT_FRAME:AddMessage("Auto Health Disable");
else
enable=true;
DEFAULT_CHAT_FRAME:AddMessage("Auto Health Enable");
end
end
接著我們在遊戲中寫一個巨集
假設放在第75格,補血藥在第60格,目標為血低於70%使用第60格藥水
內容為
/script HW_Update(70,60)
/wait 0.2
/script UseAction(75)
使用方式為
先點75格的巨集讓她開始執行就OK了
想關閉或啟動,就輸入/hw即可
好長阿
不過內容很容易懂
首先來教大家變色字
再使用DEFAULT_CHAT_FRAME:AddMessage指令時裡面可以用|cAARRGGBB來位之後的字換顏色|r是復原AARRGGBB是以16近位表示AA是透明度RGB是紅綠藍例如80ff0000就是透明度為50%的紅字
local 是定義區域變數,請在撰寫程式盡量使用區域變數,以免與其他程式衝突
外面定義的local變數,整個程式都能用,在function裡面定義的,只有在function裡能用,而且每次執行function都會重置
再來介紹如何新增以/開頭的指令,例如/hw
使用方法如下SLASH_HW1 = "/hw";這樣就可以新增一個Slash指令
如果要新增一個以上就SLASH_HW2= "/hwXD"; SLASH_HW3 = "/hrGC";...以此類推
然後要設定其功能
SlashCmdList["HW"] = function (editBox, msg)
...函式內容
end
以上重點在於紅色字的地方都要一樣
無論使用者輸入/hw還是/hwXD或是/hrGC都會呼叫函式內容
今天所使用的函數(function)
os.time()取得系統時間,以秒為單位
os.difftime(arg1,arg2)時間相減(arg2-arg1),以秒為單位
UnitHealth(arg1)看單位的血,arg1可以是"player","target","party1"...
UnitMaxHealth(arg1)看單位的最大血量,arg1可以是"player","target","party1"......<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div> 謝謝分享
不用總手忙腳亂 真讚
這個心得很有幫助
謝謝大大分享 喔喔 原來如此
這個心得很有幫助
謝謝大大分享 好像不錯用
不然每次都亂按一通
等按到補血 人物就死掉了{:1_newtoo_sad:}<br><br><br><br><br><div></div> 這個心得很有幫助
謝謝大大分享 有看沒有懂
先謝謝分享
再來研究 謝謝大大的說明 我更加明白如何練了... 很好的分享,不過有看沒有懂
想問問有沒有自懂檢東西的小程式
應該比自動喝水更吸引人 謝謝你ㄉ分享.................<br><br><br><br><br><div></div> 這是個很棒的示範, 讓我收穫良多.
一直使用先進所作的UI成品總是有不盡人意之憾, 所以不如自己動手豐衣足食.
期待版主再次蒞臨示範新的教學. 感謝大大分享
這個分享實在是太棒了 有了這個就很方便了
謝謝大大的分享 這篇看過ㄌ烏
不過謝業大大的分享
要專心編輯UI 真讚
這個心得很有幫助
謝謝大大分享<br><br><br><br><br><div></div>
頁:
[1]
2