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