Thứ Hai, 25 tháng 11, 2013

Hướng dẫn add 1 khung giao diện mới

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:Click image for larger version. 

Name: Snapshot_2013-10-17_200434.jpg 
Views: 13 
Size: 19.1 KB 
ID: 2
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!

1 nhận xét:

  1. bác cho em hỏi với ạ, bác có crsipt voc hồn fpt không bác

    Trả lờiXóa