PDA

View Full Version : [KT] Hỏi về script nhận item 1 lần



thuyvu89
01-08-17, 11:35 AM
Tình hình là mình đang viết cái túi tần thủ. Mình muốn cho chỉ nhận item 1 lần duy nhất. Mình khai báo như sau




local tbGift = Item:GetClass("newplayergift");
tbGift.WULINSHIJIA_STARTTIME = 20090922;
tbGift.WULINSHIJIA_ENDTIME = 20091030;
tbGift.WULINSHIJIA_ITEM_TIME = 30*24*60;

tbGift.TASK_GROUP_ID = 2027;
tbGift.TASK_GET_BUFF = 80;
tbGift.TASK_GET_YAOPAI = 81;
tbGift.TaskId_Count = 1;
tbGift.Use_Max =1;

tbGift.TASK_GROUP_ID1 = 3001;
tbGift.TASK_GROUP_ID2 = 3002;


Phần nhận item mình khai báo như sau





---- Add Túi
function tbGift:Tui()
local nCount = me.GetTask(self.TASK_GROUP_ID1, self.TaskId_Count);
if nCount >= self.Use_Max then
local szMsg = "<color=yellow>Phần thưởng chỉ nhận được 1 lần. Hãy chọn<color><color=pink> Nhận thưởng <color><color=yellow>:<color>";
local tbOpt = {

{"Bạn đã nhận phần thưởng này rồi ..."};
};
Dialog:Say(szMsg, tbOpt);
return 0;
end
if (nCount == 0) then
local szMsg = "<color=yellow>Phần thưởng chỉ nhận được 1 lần. Hãy chọn<color><color=pink> Nhận thưởng <color><color=yellow>:<color>";
local tbOpt = {
{"Nhận thưởng", self.Tui1, self};
};
Dialog:Say(szMsg, tbOpt);
end
me.SetTask(self.TASK_GROUP_ID1, self.TaskId_Count, nCount + 1);
end

function tbGift:Tui1()
me.AddStackItem(21,3,1,1,self.tbItemInfo,1); -- Túi 8 ô
me.AddStackItem(21,5,1,1,self.tbItemInfo,1); -- Túi 12 ô

end


-- Add Tinh Hoạt Lực
function tbGift:TinhHoatLuc()
local nCount = me.GetTask(self.TASK_GROUP_ID2, self.TaskId_Count);
if nCount >= self.Use_Max then
local szMsg = "<color=yellow>Phần thưởng chỉ nhận được 1 lần :<color>";
local tbOpt = {

{"Bạn đã nhận phần thưởng này rồi..."};
};
Dialog:Say(szMsg, tbOpt);
return 0;
end
if (nCount == 0) then
local szMsg = "<color=yellow>Phần thưởng chỉ nhận được 1 lần. Hãy chọn<color><color=pink> Nhận thưởng <color><color=yellow>:<color>";
local tbOpt = {
{"Nhận thưởng", self.TinhHoatLuc1, self};
};
Dialog:Say(szMsg, tbOpt);
end
me.SetTask(self.TASK_GROUP_ID2, self.TaskId_Count, nCount + 1);
end

function tbGift:TinhHoatLuc1()
me.ChangeCurMakePoint(10000,0);
me.ChangeCurGatherPoint(10000,0);
end

--------------------------------------------------------------




Tuy nhiên kiểu này phải khai báo khá nhiều task. Vậy có cách nào để chỉ cần khai báo 1 task không ạ. Mong các bạn chỉ giúp. Mình cảm ơn rất nhiều.

__Jie__
01-08-17, 12:07 PM
Viết gì dài quá vậy, hoa cả mắt

Khi khai bao trong tasklist.txt thì bạn để TaskGroup 3001 chạy từ 1---1000 thì bạn sẽ có bao nhiêu đó lần sử dụng.

Khi add 1 dòng nhận thưởng khác thì cứ tăng TaskId_Count lên là được



tbGift.Use_Max = 1;

tbGift.TASK_GROUP_ID1 = 3001;
tbGift.TaskId_Count = 1; -- cai nay tang so len,


function tbGift:Tui()
local nCount = me.GetTask(self.TASK_GROUP_ID1,self.TaskId_Count);
if nCount >= self.Use_Max then
Dialog:Say("Nguoi da nhan roi", tbOpt);
return 0;
end
me.AddStackItem(21,3,1,1,self.tbItemInfo,1); -- Túi 8 ô
me.AddStackItem(21,5,1,1,self.tbItemInfo,1); -- Túi 12 ô
me.SetTask(self.TASK_GROUP_ID1,self.TaskId_Count,n Count+1);
end