PDA

View Full Version : [KT] Share Script Nhận Gift Code



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>

vipbk
03-08-14, 01:07 PM
Có code tự tạo giftcode (dãy chữ + số random) rồi lưu vào file txt thì ngon :D

ookurooo
03-08-14, 01:36 PM
có bác nào bik làm sao thao tác web với server ko, nhập giftcode trên web rồi vào nhận đồ hoặc gửi đồ từ web vào game (giống của bác trantoai)

mrkutepro
03-08-14, 01:43 PM
Có code tự tạo giftcode (dãy chữ + số random) rồi lưu vào file txt thì ngon :D

Cái này phát triển thêm một chút nữa là được mà. Nhưng mà tạo code cũng không phải là lâu với mất thời gian cho lắm, nên chắc cũng ko cần thiết thêm
Kiếm thế không biết có hàm random string không nhỉ, cái này mình chưa nghiên cứu ra. Tuy nhiên chúng ta có thể dùng hàm MathRandom(A, B) để lấy một ký tự cũng được

Sẽ tạo một mảng để cho nó load, ví dụ:



local tbszKyTu =
{
{"A"},
{"B"},
{"C"},
{"D"},
{"E"},
};


Tiếp đó dùng hàm MathRandom(A, B), ở đây trong mảng trên ta có 5 ký tự, ta sẽ cho random 1->5



local szsTring = "";
local nMathRand = MathRandom(1, 5);
szsTring = unpack(tbszKyTu[nMathRand]);

Ta sẽ lấy dc 1 ký tự. Nếu muốn tạo 3 ký tự ta dùng hàm lặp for để tạo ra 3 ký tự



local szsTring = "";
for i = 1, 3 do
local nMathRand = MathRandom(1, 5);
szsTring = szsTring..unpack(tbszKyTu[nMathRand]);
end


rồi xào nấu thêm chút nữa là được thôi:D

--- Chế độ gộp bài viết ---


có bác nào bik làm sao thao tác web với server ko, nhập giftcode trên web rồi vào nhận đồ hoặc gửi đồ từ web vào game (giống của bác trantoai)

Của bác ấy không biết có can thiệp vào trong mysql không, nếu không chỉ việc lưu file, load file cũng đủ làm chức năng như bạn nói

ookurooo
03-08-14, 05:13 PM
lúc trước cũng thử tìm hiểu cái vụ file này trong server kiếm thế mà chẳng ra đâu, giờ có script code này của bác cũng hiểu đc phần nào, mà sao có bài viết nói là cái này chỉ sử dụng đc với file txt có sẵn thôi???

mrkutepro
03-08-14, 06:21 PM
lúc trước cũng thử tìm hiểu cái vụ file này trong server kiếm thế mà chẳng ra đâu, giờ có script code này của bác cũng hiểu đc phần nào, mà sao có bài viết nói là cái này chỉ sử dụng đc với file txt có sẵn thôi???

Bạn thích lưu ra .php hay là .html nó cũng đọc được, miễn là đúng cấu trúc table:))

hieudkny11o2
12-08-14, 12:22 AM
Chủ thớt cho mìh hỏi thay mã gift code ở đoạn nào vậy
Cám ơn :D

hieudkny11o2
13-08-14, 11:35 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>

thay mã code ở đoạn nào vậy chủ thớt :(

ookurooo
13-08-14, 11:38 AM
thay mã code ở đoạn nào vậy chủ thớt :(

GiftCode\Gift.txt
3000000000000000000000

nguyenhophuc87
22-08-14, 10:52 AM
có bác nào bik làm sao thao tác web với server ko, nhập giftcode trên web rồi vào nhận đồ hoặc gửi đồ từ web vào game (giống của bác trantoai)

Chỉ là mở rộng ý tưởng ra với kết hợp 2 loại ngôn ngữ lập trình thôi, nếu chỉ cần đạt được múc đích cuối thì suy nghĩ như thế này cũng đc chứ không cần phải connect vào mySQL hay DB gì cả:
1./ Code PHP hoặc ASP (Tùy theo web bạn dùng ngôn ngữ gì) chức năng nhập giftcode và nếu nhập đúng: lưu danh sách item nhận đc từ giftcode vào file .txt như code share bên trên (File này sẽ lưu account NV + danh sách item được nhận (lưu ID thay vì tên vật phẩm))
2./ Code LUA Script : tương tự code bạn Chủ Topic share: đọc nội dung file đã ghi ở bước 1, kiểm tra account nhận có đúng không, nhận item và xóa account đó khỏi danh sách hoặc thêm 1 giá trị Flag vào cột nào đó để đánh dấu NHẬN CHƯA.

Chút ý tưởng, thân !