PDA

View Full Version : Tìm hiểu ngôn ngữ lập trình script trong JX.



giangleloi
13-07-08, 08:04 PM
Như các bạn đã biết, các file trong thư mục script của server và client đều có đuôi là .lua . Đây chính là ngôn ngữ lập trình lua 4.0. Để hiểu rõ về ngôn ngữ lập trình này tôi xin giới thiệu sơ qua về các kiểu dữ liệu, từ khóa, cách sử dụng của ngôn ngữ này.

Kiểu dữ liệu :
Các kiểu dữ liệu trong lua4.0 là : nil, number, string, function, userdata, and table.

Các từ khóa :
lua Code:

and break do else elseif
end for function if in
local nil not or repeat
return then until while


Các dấu toán tử :
lua Code:

and or
< > <= >= ~= ==
..
+ -
* /
not - (unary)
^


Quyền ưu tiên được tính từ dưới lên.

Cách đặt và gán giá trị cho biến :
Bạn đặt tên biến bình thường như các ngôn ngữ lập trình khác, gán giá trị trực tiếp cho biến
Ví dụ : i = 3 -- ở đây ta đặt tên biến là i và gán giá trị là 3
Cấu trúc lệnh :
Một số cấu trúc lệnh trong lua4.0 như sau :

lua Code:

while "biểu thức" do "thực hiện" end -- cấu trúc lặp với từ khóa while...do
repeat "thực hiện" until "biểu thức" -- cấu trúc lặp với từ khỏa repeat...until
if "biểu thức 1" then "thực hiện 1" {elseif "biểu thức 2 then "thực hiện 2"} [else "thực hiện 3"] end -- Cấu trúc so sánh if...then..else
for "biến" = "biểu thức 1","biểu thức 2" do "hành động" end -- cấu trúc lặp for...do
Thông thường thì khi kết thúc một cấu trúc điều khiển ta phải kết thúc bằng end


Các bạn lưu ý, đây là ngôn ngữ lập trình có phân biệt chữ hoa và chữ thường, vì vậy nên chú ý khi đặt tên biến và viết các từ khóa
Ví dụ, chuơng trình sẽ báo lỗi nếu bạn viết if thành If.

Định nghĩa hàm trong Lua4.0 :
Cấu trúc khai báo 1 hàm trong lua như sau :
lua Code:

function tenham(bien1,bien2,...,bienn) -- khai báo tên biến

thực hiện -- các câu lệnh dùng trong hàm

end; -- từ khóa kết thúc hàm



Phần chuơng trình được đặt trong hàm main()
lua Code:

function main()
--các dòng lệnh
end;


Câu chú thích trong lua được viết sau dấu
lua Code:

-- câu chú thích


Lệnh để thêm file từ ngoài vào là lua Code:

Include("duongdanfile");


OK như vậy là bạn có thể hiểu thêm một chút về ngôn ngữ này, bây giờ mình sẽ làm một ví dụ để bạn hiểu thêm hén

lua Code:

vidu.lua
Include("\\Script\\Global\\station.lua"); -- thêm file station.lua từ Script\Global vào file này, đường dẫn \ thì thêm dấu \ chuơng trình sẽ hiểu là \
function main() -- phần thân chương trình
i = 3; -- đặt tên biến là 3
if (i = 3) then -- nếu i = 3 thì
xaphu() -- gọi hàm xa phu
else -- nếu i khác 3
exit() -- gọi hàm exit
end -- hết cấu trúc if
end; -- hết phần thân chương trình
function xaphu() -- khai báo hàm xaphu()
if (HaveMagic(210)==-1) then
AddMagic(210)
end -- hết hàm if
end;
function exit() -- khai báo hàm exit()
i = 2
end;


Hy vọng các bạn sẽ hiểu phần nào về ngôn ngữ lập trình này để chúng ta có thể hiểu rõ hơn về các file script trong JX.
P/S : ai có hứng thú về ngôn ngữ này hãy tìm hiểu thêm tại <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b> (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)
thanks akari nhìu lém anh em học hỏi nha:pudency:

sangpronhat
13-07-08, 09:47 PM
ạc ặc báy giờ mà còn pót HD bey giờ là phãi viết script cho moi người coi làm mau chứ
viết dzay ai mà hiêu ong ho ông tướng

giangleloi
14-07-08, 07:42 AM
thế ông mún script gì nào hả coi viết dc ko đã

letuquan
18-07-08, 12:44 PM
bạn ơi bạn có thể hướng dẫn mình cách tạo NPC đươc không , bạn hướng dẫn mình kỹ 1 chút nha vì mình không hiểu về cái này nhiều thank

giangleloi
18-07-08, 01:12 PM
bạn down cái này,tools addnpc đó^^

Minh Phụng
15-04-09, 09:24 AM
down dzìa nhưng không biết cách sử dụng anh àh,em định add thêm NPC người kể chiện mè ko được:sure:

ngotiendat
16-04-09, 10:14 PM
Khá khá sau 1 ngày gian khổ cài được Jx off nhưng máy mình cùi wá(RAM 256,600Mhz,VGA 8 MG) mình không có ý xúc phạm nhưng bạn dùng cái máy từ bao h thế:sweat:

double50cent
16-04-09, 10:33 PM
khoảng năm 2002 03 gì đó thì fải vì ông cậu tôi mua cái máy này cũg vào time đó.Hehe.
Giang có thể viết 1 script đơn giản về cái fần i= được không.Tôi cũg chưa rõ về nó.
1 Script đơn giản cũng đc.

errorxviii
17-04-09, 09:22 AM
Thử cái script này xem nhé, script hơi ngắn nhĩ

function main()
i = random(1,2)-- dat bien gia tri random giua 1 va 2
if (i == 1) then -- neu i=1 thi
Talk(1,"","Bo nguoi ta nha tui bi chay roi!") ---dua ra thong diep kieu Talk
else if (i ==2)-- neu i=2 thi
Msg2Player("Moi nguoi hay mau mau di dap hoa") ---dua ra thong diep kieu Msg2Player
end ---ket thuc phan else if
end---ket thuc phan if
end;---ket thuc chuong trinh
Còn đây là script ở trong JX sử dụng biến i

--Doan Tu Tai- Tuong Duong
function main(sel)

i = random(0,2)

if (i == 0) then
Say("Bieu muoi ta ten gio la Dao Gia。Ta chi biet ten chu truoc nay chua he gap mat bao gio",0)
return
end;

if (i == 1) then
Say("Chang biet khi bieu muoi ta lon len voc dang the nao? Ta khong dam mong ruc ro nhu Tay Thi, chi mong dung giong Chung Vo Diem la duoc roi。",0)
return
end;

if (i == 2) then
Say("O Tuong Duong ta co hon uoc voi mot bieu muoi, ta dac biet den noi nay de tham nang.",0)
end;

end;

vjru5zl0v3
28-12-09, 02:01 PM
bạn ơi cho mình hỏi tý, trong cái script đầu tiên, cái lệnh i=random(1,2) ý, rùi bên dưới là lệnh if (i==1) ... elseif <- cái này đây, do bạn random ra 1 hoặc 2 nên nếu không 2 thì là 1, trong pascal chỉ cần if (i=1) then ... else ... là được, có nhất thiết phải là elseif không, hay lua nó thế, nếu như mình đọc thì câu lệnh của bạn là nếu i= 1 thì talk, ngược lại nếu i=2 thì talk, vậy có thừa đk kiểm tra i=2 không,

gachbayvaomat
28-12-09, 02:52 PM
Uh, đó là ví dụ. Nếu cho i =3 thì bạn làm kiểu j

vjru5zl0v3
28-12-09, 04:00 PM
đơn giản là thêm phát if bên dưới câu if đấy nữa :)), nhưng ở đây là tớ thấy có 2 tớ mới hỏi thế chứ là 3 thì tớ hỏi làm gì, với lại if ... then ... elseif ... nó là cấu trúc của if đủ à hay là if lồng nhau đấy, nếu là lồng nhau sao lại viết liền if với else thế kia (tại tớ học pascal thấy nó na ná nhưng mà lại hơi bị nhiều thắc mắc ^^)