路哇腳本
⑴ lua腳本語言的概念解釋
Lua 教程
lua
Lua 是一種輕量小巧的腳本語言,用標准c語言編寫並以源代碼形式開放, 其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定製功能。
Lua 是巴西里約熱內盧天主教大學(Pontifical Catholic University of Rio de Janeiro)里的一個研究小組於 1993 年開發的,該小組成員有:Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo。
設計目的
其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定製功能。
Lua 特性
輕量級: 他用標准C語言編寫並以源代碼形式開放,編譯後僅僅一百餘K,可以很方便的嵌入別的程序里。
可擴展: Lua提供了非常易於使用的擴展介面和機制:由宿主語言(通常是C或C++)提供這些功能,Lua可以使用它們,就像是本來就內置的功能一樣。
其它特性:
支持面向過程(procere-oriented)編程和函數式編程(functional programming);
自動內存管理;只提供了一種通用類型的表(table),用它可以實現數組,哈希表,集合,對象;
語言內置模式匹配;閉包(closure);函數也可以看作一個值;提供多線程(協同進程,並非操作系統所支持的線程)支持;
通過閉包和table可以很方便地支持面向對象編程所需要的一些關鍵機制,比如數據抽象,虛函數,繼承和重載等。
Lua 應用場景
游戲開發
獨立應用腳本
Web 應用腳本
擴展和資料庫插件如:MySQL Proxy 和 MySQL WorkBench
安全系統,如入侵檢測系統
第一個 Lua 程序
接下來我們使用 Lua 來輸出"Hello World!"
實例(Lua 5.3)
print("Hello World!")
⑵ 安卓手機怎麼打開.lua的腳本
安卓手機打開lua文件方法如下:
1、首先可以到官網下載一個GG,如下圖。
⑶ 羅技鍵盤lua腳本求助~
若要調用外部lua腳本,需要使用dofile。
這很像c語言中的
#include「」
用法:dofile
("路徑")
==================
--file:e:\lua1.lua
dofile
("hello.lua")
print(a)
==================
--file:
e:\hello.lua
a
=
100
==================
==輸出==
100
⑷ lua編寫腳本在wireshark中實現,現有偏移是offset按位偏移,在某些欄位需按bit解析,應該怎麼做
比如說第一個bit代表的標志為flag1,後7個bit代表的標志為flag2。那麼flag1和flag2作為要加入tree的field,可以表示為:
flag1=ProtoField.uint8("your_protol_flag1", "flag1", base.DEC, null, 0x80)
flag2=ProtoField.uint8("your_protol_flag2", "flag2", base.DEC, null, 0x7F)
其中0x80,0x7F為按位操作的掩碼,作用分別是取uint8的第一位和後七位。
然後將field加入子樹中即可:
subtree:add(flag1, buffer(offset+2, 1))
subtree:add(flag2, buffer(offset+2, 1))
-------------------------------------------
wireshark官方API地址為:網頁鏈接
⑸ lua如何調用java程序
Lua是一個實用的腳本語言,相對於Python來說,比較小巧,但它功能並不遜色,特別是在游戲開發中非常實用(WoW採用的就是Lua作為腳本的)。Lua在C\C++的實現我就不多說了,網上隨便一搜,到處都是這方面的介紹,我想說的是如何在Java下使用Lua以提高編程效率、增強你的程序可擴展性。
首先,要在Java上使用Lua腳本,必須有關於Lua腳本解釋器以及Java程序可以訪問這些腳本的相關API,即相關類庫。我使用的是一個叫做LuaJava的開源項目,可以在: http://www.keplerproject.org/luajava/ 找到LuaJava的類庫以及源代碼,使用文檔資等
下載下來解壓後包括兩個文件(我下載的是1.1版本的): luajava-1.1.jar 文件和 luajava-1.1.dll動態連接庫文件
luajava-1.1.jar就容易了,就是將其加入你的項目的ClassPath中,以便程序可以使用它提供的API
luaJava-1.1.dll就麻煩了,你必須將其加入你的Windows安裝目錄下,比如你用的是XP,安裝在C盤,那就直接將其加入C:\WINDOWS目錄下即可,當然你也可以將其加入你的JDK下的jre下
好了,現在你的項目就可以使用Lua腳本來實現動態擴展功能了!不過不要急,你還得有工具來寫Lua腳本吧?不可能用記事本來寫吧???????
你可以使用UltraEdit,但你用UE打開lua文件後,會發現和記事本差不多,並沒有高亮(可能新版本的支持Lua腳本了),如果你的UE不支持,那麼先去UltraEdit的官網下載支持Lua的Wordfiles文件(http://www.ultraedit.com/files/wf/lua.txt),是個文本文件(lua.txt)。打開UltraEdit安裝目錄下的wordfile.txt,把lua.txt文件中的內容拷貝粘貼到wordfile.txt的末尾,存檔,OK,於是UltraEdit語法高亮項多出Lua一項,可以選擇使用了。其他語言的語法高亮支持與此類似。
但你如果是Java開發者,應該都用過Eclipse吧?可否在Eclipse下直接就寫Lua腳本呢?答案是可以的!
這當然是Eclipse的強大的插件管理功能啦,你可以去下載luaeclipse插件來使你的Eclipse擁有編寫Lua腳本的能力(既可以高亮顯示你的腳本,是不是很爽呢),你可以在這里下載:http://www.ideais.com.br/luaeclipse/
下載後安裝後,你的Eclipse就可以建立和編寫Lua腳本了,注意設置一下首選項中關於LUA的屬性(Eclipse安裝插件就不用我說了吧????)
好了,現在一切都准備好了,讓我們來一個HelloWorld吧!
首先在Eclipse先建立一個TestLua項目,然後編寫如下程序:
import org.keplerproject.luajava.*;
public class Hello
{
public static void main(String[] args)
{
LuaState L = LuaStateFactory.newLuaState();
L.openLibs();
System.out.println("這里是Java程序調用Lua腳本");
// 載入腳本hello.lua,並執行
L.LdoFile("res/hello.lua");
}
}
好了,程序寫完了,當然是保存為Hello.java咯,注意,這是Java代碼!這是Java代碼調用了一個叫hello.lua的腳本,下邊是這個腳本文件的內容(你可以直接把他們復制到你的hello.lua文件中):
================================================================
--基本方法
print("您現在使用的是LUA腳本語言")
print("讓我們一起來感受它的奇妙吧!\n")
--特點1,賦值
a={1,2}
b=a
print(a==b, a~=b) --輸出 true, false
a={1,2}
b={1,2}
print(a==b, a~=b) --輸出 false, true
--特點2,交換
a,b=1,2
a,b=b,a
print(a)
print(b)
print("連接".."字元串"..2^3)
print(type(2))
--while循環
i=0
print("while循環例子")
while i<5
do
print(i);
i=i+1
end
--repeat循環
i=0
print("repeat循環例子")
repeat
print(i)
i=i+1
until i>=5
--for循環
print("for循環例子")
for i=0,5,1
do
print(i)
end
T1={}
T1[1] = 10
print(T1[1])
function fun(a,b,...)
print(a)
print(b)
print(arg[1])
print(arg[2])
print(arg[3])
return
end
a,b=2,3
fun(a,b,200,400,500)
========================================================
好了,上邊的腳本如果你不懂什麼意思也沒關系,直接運行一下吧
你可以執行編譯執行那個Hello.java程序就可以了,就會看到如下的輸出結果:
========================================================
這里是Java程序調用Lua腳本
您現在使用的是LUA腳本語言
讓我們一起來感受它的奇妙吧!
true false
false true
2
1
連接字元串8
number
while循環例子
0
1
2
3
4
repeat循環例子
0
1
2
3
4
for循環例子
0
1
2
3
4
5
10
2
3
200
400
500
==========================================================
怎樣,是不是很爽呢?覺得沒意思?好,在來一段腳本吧:
frame = luajava.newInstance("java.awt.Frame", "Lua Java Console")
console = luajava.newInstance("java.awt.TextArea")
buttons_pn = luajava.newInstance("java.awt.Panel")
execute_bt = luajava.newInstance("java.awt.Button", "Execute")
clear_bt = luajava.newInstance("java.awt.Button", "Clear")
exit_bt = luajava.newInstance("java.awt.Button", "Exit")
frame:setSize(600,300)
buttons_pn:add(execute_bt)
buttons_pn:add(clear_bt)
buttons_pn:add(exit_bt)
BorderLayout = luajava.bindClass("java.awt.BorderLayout")
frame:add(BorderLayout.NORTH, console)
frame:add(BorderLayout.SOUTH, buttons_pn)
frame:pack()
frame:show()
--
-- Listeners
--
execute_cb = {
actionPerformed = function(ev)
print("execute")
pcall(loadstring(console:getText()))
end
}
jproxy = luajava.createProxy("java.awt.event.ActionListener",execute_cb)
execute_bt:addActionListener(jproxy)
clear_cb = {actionPerformed= function (ev)
print("clear");
console:setText("");
end
}
jproxy = luajava.createProxy("java.awt.event.ActionListener" ,clear_cb)
clear_bt:addActionListener(jproxy)
exit_cb = { actionPerformed=function (ev)
print("exit")
frame:setVisible(false)
frame:dispose()
end
}
jproxyb = luajava.createProxy("java.awt.event.ActionListener" ,exit_cb)
exit_bt:addActionListener(jproxyb)
close_cb = { }
function close_cb.windowClosing(ev)
print("close")
frame:setVisible(false)
frame:dispose()
end
function close_cb.windowActivated(ev)
print("act")
end
jproxy = luajava.createProxy("java.awt.event.WindowListener", close_cb)
frame:addWindowListener(jproxy)
這段腳本運行後你將會非常想進一步了解LUA的奧妙,至於什麼我就不說了,你們自己運行看看吧。。。哈哈,就寫到這里了,我去上下WC。。。。
⑹ 游戲開發中常用哪種腳本語言
隨著《魔獸世界》(以下簡稱wow)在世界范圍內流行,腳本漸漸被人們所熟知。由於wow強大的自定義界面系統,Lua這一腳本語言一舉成名。x0dx0ax0dx0a其實早在Lua腳本語言被大眾所熟知以前,游戲業內人士就已經開始使用腳本來開發游戲了。我們熟悉的很多國內的網路游戲大都運用了腳本開發,比如網游的長青樹「夢幻西遊和《大話西遊2就大量應用了腳本技術。特別是《大話西遊2》,其實現基於Lua腳本游戲開發的時間要遠早於《魔獸世界》。在腳本技術上,國內與國外其實是站在同一起跑線上的,並不存在什麼差距,這也為國內游戲產業趕超國外游戲產業提供了強有力的技術保證。x0dx0ax0dx0a在單機游戲時代,腳本這個詞幾乎很少出現,那麼,為什麼在網路游戲時代它卻成了業界的寵兒呢?原因是多方面的。x0dx0ax0dx0a單機游戲時代,無論游戲主機還是PC機,它們的性能都非常低下,從而需要具有較高執行效率的編譯型語言對機器的性能進行「壓榨」。隨著科技發展和硬體性能的不斷提升,腳本逐漸被開發者所接受並利用,但這並不是腳本流行起來的決定性因素,真正的原因還在於游戲市場有這方面的需求。x0dx0ax0dx0a網路游戲時代的市場競爭激烈、變化莫測,如果延用單機時代一年半載才出一個新版本的開發方式,必然會被游戲行業激烈的市場競爭所淘汰。正是這種游戲市場需求旺盛和開發工具效率底下之間的矛盾,促使腳本語言迅速地發展起來。腳本的興起使得傳統編譯型語言(asngC/C )的性能優勢在硬體功效大幅攀升的今天已經不復存在。x0dx0ax0dx0a除了市場和硬體這兩個因素之外,還有一點我們不能忽略。那就是用C/C 進行游戲開發的高成本和高項目風險。隨著java/.net逐漸流行,學習C/C 編程語言的人越來越少,而網路游戲市場的需求卻越來越龐大,在程序人才大量匱乏的情況下,造成了c,C 人才的高成本。即便是有能力僱傭大量C/C 程序員的公司,在開發游戲的過程中,也不能無視C/C 的高級特性和高度靈活性帶來的高項目風險。C/C 是易學難精的編程語言,在開發大型項目的時候由於程序員的水平參差不齊,所以極易造成溝通不暢。不僅如此,c,C 濫用的高級特性也容易引入大量bug。正是由於這些原因,游戲公司開始在游戲中使用腳本,希望通過腳本來解決這些高成本、高風險的問題。x0dx0ax0dx0a二.腳本的現狀x0dx0ax0dx0a腳本不僅解決了c/C 無法解決的開發效率難題,還降低了開發的成本和風險。因此腳本技術在游戲業內蓬勃發展起來,並且已經成為游戲業中不可或缺的一環。縱觀當前腳本技術現狀,形勢一片大好,不僅語言百家爭鳴,而且書籍種類也越來越多;不僅在游戲業界開花結果,在web等其它應用領域也大放異彩。x0dx0ax0dx0a首先,我們來看看目前比較流行的腳本:Python、Lua、ruby和Erlang。Python和Lua是網路游戲開發的中堅力量;ruby憑借 rubyonrails的web開發框架的強勁力量,其在游戲業的發展前途亦不可小視;Erlang在高並發性上的原生優勢吸引了無數追求高性能網游伺服器的開發人員的目光。x0dx0ax0dx0a其次,我們來看看書籍方面。大家都知道,文字對語言的普及起到了催化劑的作用,甚至可以看作是語言的有機組成部分。Python經過基金會的多年經營而得到NASA、Google重用的原因,就是由於其相關書籍種類比較豐富;Ruby隨著RoR的流行,這兩年行情看好,書籍也出版得越來越多了;Erlang是典型的少眾語言,但隨著多核時代的來臨和高並發網路應用的需求,Erlang有著光明的發展前景,現在<