mrkutepro
03-08-14, 11:36 AM
Xin chào các bạn, hôm nay mình sẽ chia sẻ cho các bạn Script nhận GiftCode như một số Sever private đang phát hiện nay. Code cũng dễ thôi, ở code này, ngoài cách các bạn biết cách biết phát code thế nào, thì các bạn còn học hỏi thêm một cái nữa, mà nhiều bạn cũng quan tâm, đó là ghi file và load file, để áp dụng cho nhiều cái sau này, như là xử lý tội phạm, phát thưởng lô đề, cấm IP truy cập, xếp hạng cho event....Bạn nào biết rồi vui lòng không ném gạch, vứt đá;))
Trước tiên khai báo Task để lưu nhân vật đã nhận Code:
mở file \setting\player\task_def.txt và thêm vào dòng
2145 6 6 PHAT GIFT CODE 0 0
Thứ 2: Tạo code để cho người chơi nhận, mở Excel lên, tạo 2 cột, STT và MaCoDe
STT MaCoDe
STT là số thự tự, các bạn cứ cho tăng dần để biết đc bạn tạo bao nhiêu Code, MaCoDe các bạn sẽ tạo ra một chuỗi ký tự để cho người chơi nhập, cái này tạo bằng Excel hoặc là một số trang web có hướng dẫn tạo Random string gì đó, lên gg sẽ có. Sau khi xong, các bạn sẽ copy nội dung đã tạo trong Excel ra file có tên Gift.txt, lưu file này theo đường dẫn hoàn chỉnh là: GiftCode\Gift.txt, thư mục GiftCode sẽ nằm cùng một thư mục với script và setting nhé
Thứ 3: Tạo một File để lưu, kiểm tra Code đã dùng chưa, mang tên là LuuPhat.txt, các bạn có thể tạo từ Notepad ++ hoặc Excel rồi lưu ra file txt, nhưng đại loại là có 5 cột
STT MaCoDe TenNhanVat TenTaiKhoan ThoiGianNhan
LuuPhat.txt sẽ có đường dẫn chi tiết là GiftCode\LuuPhat.txt, như file trên
Thứ 4: Script để nhận Code, cái này các bạn backup file script\npc\tuiguangyuan.lua ra một chỗ, sau đó mở file "script\npc\tuiguangyuan.lua" xóa hết nội dung, copy toàn bộ code sau vào và lưu lại nhé
local tbTuiGuangYuan = Npc:GetClass("tuiguangyuan");
--Scrip by mrkutepro GameZone
function tbTuiGuangYuan:OnDialog()
local tbOpt =
{
{"<color=yellow>Nhận GiftCode", self.GiftCode, self},
{"Kết thúc đối thoại"}
}
Dialog:Say("Cổ Phong Hà: Vị đại hiệp này đã gặp qua ở đâu rồi? Rất quen, nhất thời ta không nhớ ra...",tbOpt);
end
function tbTuiGuangYuan:GiftCode()
if me.CountFreeBagCell() < 10 then
Dialog:Say("Hành trang đầy, cần 10 chỗ trống!");
return 0;
end
Dialog:AskString("<color=yellow>Nhập CODE", 12, self.GiftCode_1, self);
end
function tbTuiGuangYuan:GiftCode_1(szCode)
local INPUT_FILE_PATH = "\\GiftCode\\Gift.txt";
local OUPUT_FILE_PATH = "\\GiftCode\\LuuPhat.txt";
local KTra = 0;
if me.GetTask(2145, 6) > 0 then
Dialog:Say("Bạn chỉ được nhận GiftCode 1 Lần!");
return;
end
if szCode == "" then
me.Msg("Vui lòng nhập CODE!");
return;
end
local tbFile = Lib:LoadTabFile(INPUT_FILE_PATH);
if not tbFile then
Dialog:Say("Hiện tại không phát Code!");
return;
end
for _, tbRow in pairs(tbFile) do
local szMaCode = tbRow["MaCoDe"] or "";
if szMaCode == szCode then
self:KTraPhatCode(szCode);
KTra = 1; --CO TIM THAY MA CODE
return;
end
end
if KTra == 0 then
Dialog:Say("Mã Code nhập không đúng hoặc không tồn tại!");
end
end
function tbTuiGuangYuan:KTraPhatCode(szCode)
local OUPUT_FILE_PATH = "\\GiftCode\\LuuPhat.txt";
local tbFile2 = Lib:LoadTabFile(OUPUT_FILE_PATH);
local STT = 1;
if not tbFile2 then
me.Msg("Kiểm tra mã thất bại, vui lòng liên hệ GM!");
return;
end
if szCode == "" then
me.Msg("Vui lòng nhập CODE!");
return;
end
for _, tbRow in pairs(tbFile2) do
local szMaCode = tbRow["MaCoDe"] or "";
if szMaCode == szCode then
Dialog:Say("Xin lỗi, mã CODE này đã được sử dụng!");
return;
end
STT = STT + 1;
end
--WRITE FILE
local szTime = os.date("%Y-%m-%d %H:%M:%S", GetTime());
local szOut = STT.."\t" .. szCode .. "\t" .. me.szName .. "\t" .. me.szAccount .. "\t" .. szTime .. "\n";
KFile.AppendFile(OUPUT_FILE_PATH, szOut);
--PHAN THUONG CODE
me.SetTask(2145, 6, 1); --TASK SU DUNG CAN KHAI BAO TRONG \setting\player\task_def.txt
local tbItemInfo = {bForceBind = 1};
--PHAN THUONG TUY CHINH
me.AddStackItem(18,1,356,1, tbItemInfo, 100);
me.AddStackItem(18,1,553,1, tbItemInfo, 20000);
me.AddStackItem(18,1,524,1, tbItemInfo, 100);
me.AddStackItem(18,1,1,12, tbItemInfo, 1);
Dialog:Say("Chúc mừng bạn nhận GiftCode thành công!");
end
Tiếp đó Reload file \script\npc\tuiguangyuan.lua hoặc chạy lại toàn bộ GameSever để có tác dụng. Vào game lại Sứ giả hoạt động test hàng nhé
Một số lưu ý:
-Đối với các file .txt khi tạo nhớ enter chừa một dòng trống cuối file
-Mình có nhắc nhở các bạn backup file \script\npc\tuiguangyuan.lua, khi các bạn đã hiểu rõ code có thể chèn script của mình vào file đã backup cho hoàn chỉnh, vì file của mình chỉ có mỗi script nhận code thôi
Còn đây là link download đầy đủ: <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>
Chúc các bạn khám phá nhiều cái hay
<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>
Trước tiên khai báo Task để lưu nhân vật đã nhận Code:
mở file \setting\player\task_def.txt và thêm vào dòng
2145 6 6 PHAT GIFT CODE 0 0
Thứ 2: Tạo code để cho người chơi nhận, mở Excel lên, tạo 2 cột, STT và MaCoDe
STT MaCoDe
STT là số thự tự, các bạn cứ cho tăng dần để biết đc bạn tạo bao nhiêu Code, MaCoDe các bạn sẽ tạo ra một chuỗi ký tự để cho người chơi nhập, cái này tạo bằng Excel hoặc là một số trang web có hướng dẫn tạo Random string gì đó, lên gg sẽ có. Sau khi xong, các bạn sẽ copy nội dung đã tạo trong Excel ra file có tên Gift.txt, lưu file này theo đường dẫn hoàn chỉnh là: GiftCode\Gift.txt, thư mục GiftCode sẽ nằm cùng một thư mục với script và setting nhé
Thứ 3: Tạo một File để lưu, kiểm tra Code đã dùng chưa, mang tên là LuuPhat.txt, các bạn có thể tạo từ Notepad ++ hoặc Excel rồi lưu ra file txt, nhưng đại loại là có 5 cột
STT MaCoDe TenNhanVat TenTaiKhoan ThoiGianNhan
LuuPhat.txt sẽ có đường dẫn chi tiết là GiftCode\LuuPhat.txt, như file trên
Thứ 4: Script để nhận Code, cái này các bạn backup file script\npc\tuiguangyuan.lua ra một chỗ, sau đó mở file "script\npc\tuiguangyuan.lua" xóa hết nội dung, copy toàn bộ code sau vào và lưu lại nhé
local tbTuiGuangYuan = Npc:GetClass("tuiguangyuan");
--Scrip by mrkutepro GameZone
function tbTuiGuangYuan:OnDialog()
local tbOpt =
{
{"<color=yellow>Nhận GiftCode", self.GiftCode, self},
{"Kết thúc đối thoại"}
}
Dialog:Say("Cổ Phong Hà: Vị đại hiệp này đã gặp qua ở đâu rồi? Rất quen, nhất thời ta không nhớ ra...",tbOpt);
end
function tbTuiGuangYuan:GiftCode()
if me.CountFreeBagCell() < 10 then
Dialog:Say("Hành trang đầy, cần 10 chỗ trống!");
return 0;
end
Dialog:AskString("<color=yellow>Nhập CODE", 12, self.GiftCode_1, self);
end
function tbTuiGuangYuan:GiftCode_1(szCode)
local INPUT_FILE_PATH = "\\GiftCode\\Gift.txt";
local OUPUT_FILE_PATH = "\\GiftCode\\LuuPhat.txt";
local KTra = 0;
if me.GetTask(2145, 6) > 0 then
Dialog:Say("Bạn chỉ được nhận GiftCode 1 Lần!");
return;
end
if szCode == "" then
me.Msg("Vui lòng nhập CODE!");
return;
end
local tbFile = Lib:LoadTabFile(INPUT_FILE_PATH);
if not tbFile then
Dialog:Say("Hiện tại không phát Code!");
return;
end
for _, tbRow in pairs(tbFile) do
local szMaCode = tbRow["MaCoDe"] or "";
if szMaCode == szCode then
self:KTraPhatCode(szCode);
KTra = 1; --CO TIM THAY MA CODE
return;
end
end
if KTra == 0 then
Dialog:Say("Mã Code nhập không đúng hoặc không tồn tại!");
end
end
function tbTuiGuangYuan:KTraPhatCode(szCode)
local OUPUT_FILE_PATH = "\\GiftCode\\LuuPhat.txt";
local tbFile2 = Lib:LoadTabFile(OUPUT_FILE_PATH);
local STT = 1;
if not tbFile2 then
me.Msg("Kiểm tra mã thất bại, vui lòng liên hệ GM!");
return;
end
if szCode == "" then
me.Msg("Vui lòng nhập CODE!");
return;
end
for _, tbRow in pairs(tbFile2) do
local szMaCode = tbRow["MaCoDe"] or "";
if szMaCode == szCode then
Dialog:Say("Xin lỗi, mã CODE này đã được sử dụng!");
return;
end
STT = STT + 1;
end
--WRITE FILE
local szTime = os.date("%Y-%m-%d %H:%M:%S", GetTime());
local szOut = STT.."\t" .. szCode .. "\t" .. me.szName .. "\t" .. me.szAccount .. "\t" .. szTime .. "\n";
KFile.AppendFile(OUPUT_FILE_PATH, szOut);
--PHAN THUONG CODE
me.SetTask(2145, 6, 1); --TASK SU DUNG CAN KHAI BAO TRONG \setting\player\task_def.txt
local tbItemInfo = {bForceBind = 1};
--PHAN THUONG TUY CHINH
me.AddStackItem(18,1,356,1, tbItemInfo, 100);
me.AddStackItem(18,1,553,1, tbItemInfo, 20000);
me.AddStackItem(18,1,524,1, tbItemInfo, 100);
me.AddStackItem(18,1,1,12, tbItemInfo, 1);
Dialog:Say("Chúc mừng bạn nhận GiftCode thành công!");
end
Tiếp đó Reload file \script\npc\tuiguangyuan.lua hoặc chạy lại toàn bộ GameSever để có tác dụng. Vào game lại Sứ giả hoạt động test hàng nhé
Một số lưu ý:
-Đối với các file .txt khi tạo nhớ enter chừa một dòng trống cuối file
-Mình có nhắc nhở các bạn backup file \script\npc\tuiguangyuan.lua, khi các bạn đã hiểu rõ code có thể chèn script của mình vào file đã backup cho hoàn chỉnh, vì file của mình chỉ có mỗi script nhận code thôi
Còn đây là link download đầy đủ: <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>
Chúc các bạn khám phá nhiều cái hay
<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>