PDA

View Full Version : [TLBB] Hướng dẫn add 1 khung giao diện mới



huuduyen_05
16-02-14, 10:21 PM
Như các bạn đã biết, Game.exe phiên bản hiện tại chỉ load được một số khung giao diện nhất định, để có thể hiển thị được thêm các khung của các tính năng mới như Tu luyện, Bí tịch, Võ hồn,... ta cần có các thao tác khai báo, chỉnh sửa và gọi khung giao diện đó.
Phần này yêu cầu các bạn cần có 1 chút kiến thức về lập trình, cụ thể ở đây sử dụng ngôn ngữ lua, hiểu biết sơ qua về cấu trúc của server và client tlbb

1. Căn bản
Các file giao diện đều nằm trong các folder con của Interface.axp
1 Khung giao diện căn bản gồm 2 file .lua và xml.
File lua có cấu trúc căn bản gồm các hàm:

_PreLoad() --Khai báo các sự kiện được phép nhận trong file
_OnLoad() -- Dạng như cấu hình, khai báo ban đầu của file
_OnEvent(event) --Hàm chờ các sự kiện
Các hàm con...
File xml là file dựng lên khung giao diện
2. Khai báo khung giao diện
Khai báo để Game.exe load được file giao diện mới trong file InterfaceEx.txt trong Config.axp
Ví dụ:

252 SuperWeaponUp SuperWeaponUp/SuperWeaponUp.layout.xml SuperWeaponUp/SuperWeaponUp.lua 3 0 0 ÉñÆ÷Éý¼¶
253 Xiulian Xiulian\Xiulian.layout.xml Xiulian\Xiulian.lua 2 xljs 19 20 ÐÞÁ¶
Lấy các dòng khai báo có sẵn bên FPT hoặc china
3. Chỉnh sửa file giao diện
Quá trình này hơi phức tạp và đòi hỏi bạn cần có kiến thức về lập trình
2 File giao diện là lua và xml thì các bạn chỉ cần quan tâm tới file lua
Vì là file giao diện mới nên có thể trong file sẽ có 1 số hàm mới mà Game.exe không load được, do vậy ta cần tìm các hàm này và bỏ đi
Ví dụ trong file Xiulian.lua (khung tu luyện) có 1 số hàm:
-- local level_11 = Player:GetXiuLianMiJiInfo(11,"Level")
--local level_12 = Player:GetXiuLianMiJiInfo(12,"Level")
4. Gọi file giao diện
Có thể gọi từ server hoặc client, khung giao diện dạng như Tu luyện, võ hồn thì sẽ gọi từ client (Từ tab trang bị chuyển qua); khung giao diện đục lỗ, điêu văn thì cần gọi từ server (qua NPC)
Mình ví dụ gọi khung Tu luyện từ khung trang bị:
Các bạn mở file lua của khung trang bị SelfEquip.lua tìm đến hàm XiuLian_Page_Switch() xóa nội dung hàm và thay bằng PushEvent("UI_COMMAND",20111212)

function XiuLian_Page_Switch()
PushEvent("UI_COMMAND",20111212) --Truyền sự kiện UI_COMMAND với tham số 20111212 (số này để bất kỳ miễn không trùng với khung khác)
SelfEquip_SetTabColor(0);
end
Nếu không có hàm trên thì có thể client của bạn chưa được update giao diện mới (có Tab Tu luyện),bạn nên unpact file Interface phiên bản mới nhất của chính hãng để lấy file xml và hàm trên qua
P/s: Bạn có thể gọi từ server bằng hàm:
BeginUICommand( sceneId )
--UICommand_AddInt( sceneId, Prama) -- Prama: tham số truyền lên client nếu cần

EndUICommand( sceneId )
DispatchUICommand( sceneId, selfId, 20111212)
Trong hàm _PreLoad() của file giao diện lua cần khai báo

this:RegisterEvent("UI_COMMAND");--Khai báo sự kiện lệnh của UI, hầu hết các khung đều được khai báo sự kiện này
Trong hàm _OnEvent(event) để ý đến cấu trúc

if ( event == "OPEN_XIULIAN_PAGE" ) then
..........
end
if ... then
...
end

Đây chính là đoạn khi có sự kiện OPEN_XIULIAN_PAGE(dịch nôm na là mở trang tu luyện) được gọi thì sẽ thao tác ......Nhưng vì sự kiện này Game.exe không hiểu nên ta cần thay thế bằng 1 sự kiện của UI_COMMAND

if (event == "UI_COMMAND" and tonumber(arg0) == 20111212) then

if(this:IsVisible()) then
this:Hide();
return;
end

local selfUnionPos = Variable:GetVariable("SelfUnionPos");
if(selfUnionPos ~= nil) then
Xiulian_Frame:SetProperty("UnifiedPosition", selfUnionPos);
end

XIULIAN_BOOK_SELECT = 1;
XIULIAN_MIJI_SELECT = -1;
this:Show();
Xiulian_Update()

Xiulian_SetTabState()
end
Đóng gói lại client, vào game và test thử, tất nhiên sẽ gặp 1 số lỗi nhỏ còn sót lại do quá trình chỉnh sửa lua chưa triệt để, hãy xem thông báo của client để tiến hành chỉnh sửa.
Demo:

<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>

Sau khi đã hoàn thành add khung giao diện mới bạn có thể tiến hành phát triển trên nó như tạo tính năng tu luyện, điêu văn, võ hồn,...mới đây hơn là Kinh mạch, Bí tịch
Nếu có thắc mắc xoay quanh các bạn vui lòng hỏi ở dưới.
Chúc các bạn thành công!

rikudo
17-02-14, 04:16 PM
Ngoài a huuduyen ra bao nhiêu người đã làm đến cái này rồi nhỉ :))
Có thời gian thì khai thác bên client đi mấy bạn , cứ quay đi quay lại mấy cái event tự nghĩ trong game thì sẽ không tiến bộ được đâu !

Sói Đẹp Trai
17-02-14, 05:05 PM
Ngoài a huuduyen ra bao nhiêu người đã làm đến cái này rồi nhỉ :))
Có thời gian thì khai thác bên client đi mấy bạn , cứ quay đi quay lại mấy cái event tự nghĩ trong game thì sẽ không tiến bộ được đâu !Bạn có ý kiến thì cứ ý kiến đừng có đánh giá kiểu một chiều như vậy nhé. Ai thích mảng nào người ta sẽ phát triển mảng đó. Không tiến bộ thì đã chẳng ai làm.
Phát triển event là một cái khá là hay. Game không có event thì có được nhiều người chơi không? Tất nhiên bên client đóng vai trò khá quan trọng. Mỗi người có một sở trường nhất định của mình, không thể nào kham hết được tất cả đâu.

vuhuy99v
17-02-14, 06:54 PM
1/Song tiện cho em hỏi, khi mình mún học 1 cuốn bảo điển như trong hình thì mình phải click chuột vào nó và chọn chữ học, song em chỉ làm đc double click để học,anh có thể chỉ giúp phần còn lại đc ko!??
<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>)
2/Cho em xin hàm lấy giới tính của nhân vật trong client(em đã thử sử dụng hàm Player:GetMySex() nhưng không thnh công!??)

huuduyen_05
17-02-14, 07:28 PM
1- Bạn gửi khung của bạn lên để mình xem sai chỗ nào nhé.
2- Thử
local pSex = Player:GetData("SEX") . Nếu không có thì phải nhờ server truyền xuống client.

vuhuy99v
17-02-14, 07:36 PM
1- Bạn gửi khung của bạn lên để mình xem sai chỗ nào nhé.
2- Thử . Nếu không có thì phải nhờ server truyền xuống client.
1/nãy em mới coi lại, lúc em code em wen để cái local xiulian_liliang = Get_XParam_INT(1); này ngay trong cho click để chọn nên nó sai!^^"


if XIULIAN_MIJI_SELECT == 1 then

local xiulian_liliang = Get_XParam_INT(1);
Clear_XSCRIPT();
Set_XSCRIPT_Function_Name("XiulianStudy_CL");
Set_XSCRIPT_ScriptID(390101);
Set_XSCRIPT_Parameter(0,tonumber(g_ServerNpcId));
Set_XSCRIPT_Parameter(1,xiulian_liliang);
Set_XSCRIPT_ParamCount(3);
Send_XSCRIPT();
XiulianStudy_Update()
Dạ tks anh nhé,tại em đang code cái kinh mạch mà cái đó có 2 cái hình nam và nữ,cái đó em ko bik nên cug pó tay,
còn chân nguyên có ý tưởng ít ít định code thử^^

huuduyen_05
17-02-14, 09:38 PM
à, nhắc mới nhớ. ko có hàm get giới tính ở client. Cái khung này mình cần lấy biến trả về từ server.

songtu
01-03-14, 07:24 PM
Thắc mắc về khung giao diện điêu văn 1 chút!! khi mình nhấn chuột vào món đồ thì sao nó ko chui vào ô mà lại bị mặc lên người mất nhi?? ai có cao kiến xin chỉ giáo !!

ronglam
03-03-14, 09:30 PM
Thắc mắc về khung giao diện điêu văn 1 chút!! khi mình nhấn chuột vào món đồ thì sao nó ko chui vào ô mà lại bị mặc lên người mất nhi?? ai có cao kiến xin chỉ giáo !!

Theo mình nghĩ, call bảng client lên còn phải chỉnh sửa bảng client nữa. Đồng thời tạo lua kết nối với Server!

eddie1412
03-05-14, 07:59 PM
Mình cũng gặp vấn đề khi add khung giao diện điêu văn vào, khi ấn chuột vào món đồ thì nó mặc lên người. Với lại, trong mấy code client thì mình cũng không thấy đoạn nào thực hiện việc này cả, có pro nào giúp mình với :(

3z3z3z
10-05-14, 12:58 PM
Lên khung giao diện thì cũng vậy thôi, quan trọng là sv có hoạt động được điêu văn ko đã.
Nếu muốn mod lại đơn giản thì cứ dựa vào UI của nhuộm thời trang (đặt vần cần điêu văn hoặc nhuộm vào ô đầu tiên) rồi tìm ID vật đó có trùng ko .... bla bla bla... rồi hoạt động.
Gameserver lẫn game.exe ở client đều quá cũ rồi, khó phát triển gì thêm được

fantlbb
13-05-14, 08:55 AM
<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>

Sói Đẹp Trai
31-07-14, 04:43 PM
Tiện đây mọi người cho hỏi là sao truyền thông số về sv nó báo lỗi nhỉ.



local nam=ActionSash:GetName()
if nam == "Trùng Lâu оi" then
Clear_XSCRIPT();
Set_XSCRIPT_Function_Name("AddImpactToSash")
Set_XSCRIPT_ScriptID(910059)
Set_XSCRIPT_Parameter(0,nam)
Set_XSCRIPT_ParamCount(1)
Send_XSCRIPT();
else
Clear_XSCRIPT();
Set_XSCRIPT_Function_Name("CalcelImpactFromSash")
Set_XSCRIPT_ScriptID(910059)
Set_XSCRIPT_ParamCount(0)
Send_XSCRIPT();
end


Trong sv mình có cái hàm này



function x910059_AddImpactToSash(sceneId,selfId,nam)


Và hàm này



function x910059_CalcelImpactFromSash(sceneId,selfId)


Nó báo không thể truyền cái thông số này về nghĩa là sao nhỉ. Mình muốn chuyển cái biến nam kia về phía sv???

huuduyen_05
31-07-14, 10:59 PM
Nó báo lỗi gì ? tùy trường hợp nó báo lỗi nào thì fix theo kiểu đó.

Sói Đẹp Trai
31-07-14, 11:31 PM
Nó báo lỗi gì ? tùy trường hợp nó báo lỗi nào thì fix theo kiểu đó.Nó không truyền được cái tham số xuống anh ạ. Cụ thể là cái giá trị ActionSash:GetID() soi nó cũng không được nốt không biết cái này nó trả về giá trị nào nữa.

Oack123
01-08-14, 12:39 AM
Ngoài a huuduyen ra bao nhiêu người đã làm đến cái này rồi nhỉ :))
Có thời gian thì khai thác bên client đi mấy bạn , cứ quay đi quay lại mấy cái event tự nghĩ trong game thì sẽ không tiến bộ được đâu !

Cũng chưa chắc bạn à. Ở server chắc không phải chỉ có mỗi event.
Xây dựng tính năng mới mà ko cần động đến client chắc cũng vẫn làm được.

Sói Đẹp Trai
01-08-14, 01:32 AM
Cụ thể là truyền thông số tên item thì nó ra cái này

C++ Exception

Expr: LUA: Lua_Set_XSCRIPT_Parameter Wrong Param

Sao không truyền được param dạng chuỗi nhỉ??

commale
22-08-14, 11:11 PM
Ngoài a huuduyen ra bao nhiêu người đã làm đến cái này rồi nhỉ :))
Có thời gian thì khai thác bên client đi mấy bạn , cứ quay đi quay lại mấy cái event tự nghĩ trong game thì sẽ không tiến bộ được đâu !
anh phán như thánh :-*
giờ mới để ý commen thấy chuẩn. em bữa giờ cũng đau đầu với client vì nó rộng quá
loay hoay mãi cái ui comman client va seve mà không thành công
đi qua độc được commen của em lập nic mới vào trao đổi để học hỏi với=((

Sói Đẹp Trai
23-08-14, 12:37 AM
anh phán như thánh :-*
giờ mới để ý commen thấy chuẩn. em bữa giờ cũng đau đầu với client vì nó rộng quá
loay hoay mãi cái ui comman client va seve mà không thành công
đi qua độc được commen của em lập nic mới vào trao đổi để học hỏi với=((Hỏi xem ai phán như thánh cơ? Người nói không xem lại mình còn bày đặt chỉ chích này nọ.
P/s: Client nó là một kho tàng rộng lớn và vô cùng hay để khám phá. Tuy nhiên nói đến event bên sv thì liệu cái người phát ngôn ra câu đó có làm nổi không đã.
Sau 2 tuần tìm hiểu Lua bên Client mình cũng rút ra nhiều kinh nghiệm lắm.
Nhưng cũng Lua bên Server thì chật vật mãi mới xong event Tống Liêu...
Nói chung Client và Sv nó có cái hay khác nhau của nó. Nhưng biết cách móc nối giữa client và Server thì lúc đó lại cả là một nghệ thuật.

songtu
23-08-14, 08:22 AM
cái team làm ra đc game, để có môi trường cho bao nhiêu ng vọc cũng đáng nể lắm rồi :">

nvanh2611
30-04-15, 01:33 PM
Mình đã gọi được khung giao diện ở client hiện ra rồ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>

Nhưng không add được bất kỳ item nào vào khung giao diện này cả, click chuột phải vào item không được, kéo item vào khung cũng không được và cũng không có thông báo gì!

link file khung giao diện: <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>

có ai biết xin được chỉ giáo.

songtu
30-04-15, 08:30 PM
Mình đã gọi được khung giao diện ở client hiện ra rồ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>

Nhưng không add được bất kỳ item nào vào khung giao diện này cả, click chuột phải vào item không được, kéo item vào khung cũng không được và cũng không có thông báo gì!

link file khung giao diện: <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>

có ai biết xin được chỉ giáo.

cái này dựa vào khung ép skill cho võ hồn đó!! nó đã mod rồi làm theo là đc !! lưu ý một số event game.exe ko hiểu lên nó mới vậy!!