phien-nhatrang
01-05-13, 06:23 PM
Dùng nguyên gốc cái hoạt động giao thông :)) , có thể sửa lại thành script đoán hoa đăng tùy ý bạn
local tbhapdiemkimchi = Npc:GetClass("mynukimchi1");
tbhapdiemkimchi.TaskGourp = 3018;
tbhapdiemkimchi.TaskId_Day = 1;
tbhapdiemkimchi.TaskId_Count = 2;
tbhapdiemkimchi.TaskId_Last = 3;
tbhapdiemkimchi.Relay_Time = 0;
tbhapdiemkimchi.Use_Max =2; -- so lan giao thong trong ngay
function tbhapdiemkimchi:OnDialog()
if me.CountFreeBagCell() < 1 then
Dialog:Say("Phải Có 1 Ô Trống Trong Túi !");
return 0;
end
if me.nLevel < 100 then
Dialog:Say("Tờ rim chưa đạt level 100, chưa đủ tuổi giao thông với ta đâu !");
return 0;
end
local nDate = tonumber(GetLocalDate("%Y%m%d"));
if me.GetTask(self.TaskGourp, self.TaskId_Day) < nDate then
me.SetTask(self.TaskGourp, self.TaskId_Day, nDate);
me.SetTask(self.TaskGourp, self.TaskId_Count, 0);
me.SetTask(self.TaskGourp, self.TaskId_Last, 0);
end
local nCount = me.GetTask(self.TaskGourp, self.TaskId_Count);
local szMsg = string.format("Mỗi ngày Giao thông được giao thông với Kim chi 2 lần để giữ sức");
local nCount = me.GetTask(self.TaskGourp, self.TaskId_Count);
if nCount >= self.Use_Max then
Dialog:Say(string.format("Hôm nay đã giao thông rồi"));
return 0;
end
local nLast = me.GetTask(self.TaskGourp, self.TaskId_Last);
local nHour = tonumber(GetLocalDate("%Y%m%d%H%M%S"));
local nSec1 = Lib:GetDate2Time(nHour);
local nSec2 = nLast + self.Relay_Time;
if nSec1 < nSec2 then
if ((nSec2 - nSec1)<=60) then
me.Msg(string.format("Còn <color=yellow>%s giây<color> nữa mới nhận được giao thông tiếp theo.", (nSec2 - nSec1)));
else
me.Msg(string.format("Còn <color=yellow>%d phút<color> nữa mới nhận được giao thông tiếp theo.", (nSec2 - nSec1)/60));
end
return 0;
end
if (nCount == 0) or (nCount == 1) or (nCount == 2)then
local szMsg = "<color=yellow>"..me.szName.."<color> Đã giao thông đuợc <color=cyan>"..nCount.."<color> lần";
local tbOpt = {
{"<color=red>Giao thông...<color>",self.tienhanhgt,self};
};
Dialog:Say(szMsg, tbOpt);
end
me.Msg(string.format("<color=yellow>Giao thông thành công lần thứ <color=cyan>%d<color><color> ",nCount + 1));
me.SetTask(self.TaskGourp, self.TaskId_Count, nCount + 1);
local nHourS = tonumber(GetLocalDate("%Y%m%d%H%M%S"));
local nSec3 = Lib:GetDate2Time(nHourS);
me.SetTask(self.TaskGourp, self.TaskId_Last, nSec3);
end
---------------- qua trinh giao thong
function tbhapdiemkimchi:tienhanhgt()
local tbEvent =
{
Player.ProcessBreakEvent.emEVENT_MOVE,
Player.ProcessBreakEvent.emEVENT_ATTACK,
Player.ProcessBreakEvent.emEVENT_SITE,
Player.ProcessBreakEvent.emEVENT_USEITEM,
Player.ProcessBreakEvent.emEVENT_ARRANGEITEM,
Player.ProcessBreakEvent.emEVENT_DROPITEM,
Player.ProcessBreakEvent.emEVENT_SENDMAIL,
Player.ProcessBreakEvent.emEVENT_TRADE,
Player.ProcessBreakEvent.emEVENT_CHANGEFIGHTSTATE,
Player.ProcessBreakEvent.emEVENT_CLIENTCOMMAND,
Player.ProcessBreakEvent.emEVENT_LOGOUT,
Player.ProcessBreakEvent.emEVENT_DEATH,
Player.ProcessBreakEvent.emEVENT_ATTACKED,
}
GeneralProcess:StartProcess("<color=red>Đang Giao thông<color>", 10 * Env.GAME_FPS, {self.GetQuest, self, me.nId, him.dwId}, nil, tbEvent);
end
function tbhapdiemkimchi:GetQuest(nPlayerId, nNpcId)
local pPlayer = KPlayer.GetPlayerObjById(nPlayerId)
if (not pPlayer) then
return;
end
local pNpc = KNpc.GetById(nNpcId);
if (not pNpc) then
return;
end
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
nRand = MathRandom(1, 10000);
local tbRate = {2000,1000,500,500,300,200,3000,1500,1000};
local tbAward =
{
[1] = {18,1,2100,1}; -------- phan thuong tuy chinh
[2] = {18,1,2100,1};
[3] = {18,1,2100,1};
[4] = {18,1,2100,1};
[5] = {18,1,2100,1};
[6] = {18,1,2100,1};
[7] = {18,1,2100,1};
[8] = {18,1,2100,1};
[9] = {18,1,2100,1};
}
for i = 1, 9 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
local pItem = me.AddItem(unpack(tbAward[nIndex]));
if (nIndex == 1) or (nIndex == 2) or (nIndex == 3) or (nIndex == 4) or (nIndex == 5) or (nIndex == 6) then
local szMsg = string.format("<color=cyan>%s<color> Giao thông với kim chi mỹ nữ được <color=cyan>"..pItem.szName.."<color>", me.szName, pItem.szName);
KDialog.NewsMsg(1, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
me.SendMsgToFriend("Hảo hữu của bạn [<color=cyan>" .. me.szName
.. "<color>] Giao thông với kim chi mỹ nữ được <color=cyan>"
.. pItem.szName .." <color>");
me.Msg("Giao thông được <color=cyan>"..pItem.szName.."<color>.");
pNpc.Delete();
elseif (nIndex == 7) then
me.Msg(" Giao thông với kim chi mỹ nữ được <color=cyan>"..pItem.szName.."<color>");
-------------- add them phan thuong neu can
pNpc.Delete();
elseif (nIndex == 8) then
me.Msg(" Giao thông với kim chi mỹ nữ được <color=cyan>"..pItem.szName.."<color>");
-------------- add them phan thuong neu can
pNpc.Delete();
elseif (nIndex == 9) then
me.Msg(" Giao thông với kim chi mỹ nữ được <color=cyan>"..pItem.szName.."<color>");
-------------- add them phan thuong neu can
pNpc.Delete();
return 1;
end
end
Mở task def
3018 1 17 giao thong 0 0
local tbhapdiemkimchi = Npc:GetClass("mynukimchi1");
tbhapdiemkimchi.TaskGourp = 3018;
tbhapdiemkimchi.TaskId_Day = 1;
tbhapdiemkimchi.TaskId_Count = 2;
tbhapdiemkimchi.TaskId_Last = 3;
tbhapdiemkimchi.Relay_Time = 0;
tbhapdiemkimchi.Use_Max =2; -- so lan giao thong trong ngay
function tbhapdiemkimchi:OnDialog()
if me.CountFreeBagCell() < 1 then
Dialog:Say("Phải Có 1 Ô Trống Trong Túi !");
return 0;
end
if me.nLevel < 100 then
Dialog:Say("Tờ rim chưa đạt level 100, chưa đủ tuổi giao thông với ta đâu !");
return 0;
end
local nDate = tonumber(GetLocalDate("%Y%m%d"));
if me.GetTask(self.TaskGourp, self.TaskId_Day) < nDate then
me.SetTask(self.TaskGourp, self.TaskId_Day, nDate);
me.SetTask(self.TaskGourp, self.TaskId_Count, 0);
me.SetTask(self.TaskGourp, self.TaskId_Last, 0);
end
local nCount = me.GetTask(self.TaskGourp, self.TaskId_Count);
local szMsg = string.format("Mỗi ngày Giao thông được giao thông với Kim chi 2 lần để giữ sức");
local nCount = me.GetTask(self.TaskGourp, self.TaskId_Count);
if nCount >= self.Use_Max then
Dialog:Say(string.format("Hôm nay đã giao thông rồi"));
return 0;
end
local nLast = me.GetTask(self.TaskGourp, self.TaskId_Last);
local nHour = tonumber(GetLocalDate("%Y%m%d%H%M%S"));
local nSec1 = Lib:GetDate2Time(nHour);
local nSec2 = nLast + self.Relay_Time;
if nSec1 < nSec2 then
if ((nSec2 - nSec1)<=60) then
me.Msg(string.format("Còn <color=yellow>%s giây<color> nữa mới nhận được giao thông tiếp theo.", (nSec2 - nSec1)));
else
me.Msg(string.format("Còn <color=yellow>%d phút<color> nữa mới nhận được giao thông tiếp theo.", (nSec2 - nSec1)/60));
end
return 0;
end
if (nCount == 0) or (nCount == 1) or (nCount == 2)then
local szMsg = "<color=yellow>"..me.szName.."<color> Đã giao thông đuợc <color=cyan>"..nCount.."<color> lần";
local tbOpt = {
{"<color=red>Giao thông...<color>",self.tienhanhgt,self};
};
Dialog:Say(szMsg, tbOpt);
end
me.Msg(string.format("<color=yellow>Giao thông thành công lần thứ <color=cyan>%d<color><color> ",nCount + 1));
me.SetTask(self.TaskGourp, self.TaskId_Count, nCount + 1);
local nHourS = tonumber(GetLocalDate("%Y%m%d%H%M%S"));
local nSec3 = Lib:GetDate2Time(nHourS);
me.SetTask(self.TaskGourp, self.TaskId_Last, nSec3);
end
---------------- qua trinh giao thong
function tbhapdiemkimchi:tienhanhgt()
local tbEvent =
{
Player.ProcessBreakEvent.emEVENT_MOVE,
Player.ProcessBreakEvent.emEVENT_ATTACK,
Player.ProcessBreakEvent.emEVENT_SITE,
Player.ProcessBreakEvent.emEVENT_USEITEM,
Player.ProcessBreakEvent.emEVENT_ARRANGEITEM,
Player.ProcessBreakEvent.emEVENT_DROPITEM,
Player.ProcessBreakEvent.emEVENT_SENDMAIL,
Player.ProcessBreakEvent.emEVENT_TRADE,
Player.ProcessBreakEvent.emEVENT_CHANGEFIGHTSTATE,
Player.ProcessBreakEvent.emEVENT_CLIENTCOMMAND,
Player.ProcessBreakEvent.emEVENT_LOGOUT,
Player.ProcessBreakEvent.emEVENT_DEATH,
Player.ProcessBreakEvent.emEVENT_ATTACKED,
}
GeneralProcess:StartProcess("<color=red>Đang Giao thông<color>", 10 * Env.GAME_FPS, {self.GetQuest, self, me.nId, him.dwId}, nil, tbEvent);
end
function tbhapdiemkimchi:GetQuest(nPlayerId, nNpcId)
local pPlayer = KPlayer.GetPlayerObjById(nPlayerId)
if (not pPlayer) then
return;
end
local pNpc = KNpc.GetById(nNpcId);
if (not pNpc) then
return;
end
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
nRand = MathRandom(1, 10000);
local tbRate = {2000,1000,500,500,300,200,3000,1500,1000};
local tbAward =
{
[1] = {18,1,2100,1}; -------- phan thuong tuy chinh
[2] = {18,1,2100,1};
[3] = {18,1,2100,1};
[4] = {18,1,2100,1};
[5] = {18,1,2100,1};
[6] = {18,1,2100,1};
[7] = {18,1,2100,1};
[8] = {18,1,2100,1};
[9] = {18,1,2100,1};
}
for i = 1, 9 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
local pItem = me.AddItem(unpack(tbAward[nIndex]));
if (nIndex == 1) or (nIndex == 2) or (nIndex == 3) or (nIndex == 4) or (nIndex == 5) or (nIndex == 6) then
local szMsg = string.format("<color=cyan>%s<color> Giao thông với kim chi mỹ nữ được <color=cyan>"..pItem.szName.."<color>", me.szName, pItem.szName);
KDialog.NewsMsg(1, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
me.SendMsgToFriend("Hảo hữu của bạn [<color=cyan>" .. me.szName
.. "<color>] Giao thông với kim chi mỹ nữ được <color=cyan>"
.. pItem.szName .." <color>");
me.Msg("Giao thông được <color=cyan>"..pItem.szName.."<color>.");
pNpc.Delete();
elseif (nIndex == 7) then
me.Msg(" Giao thông với kim chi mỹ nữ được <color=cyan>"..pItem.szName.."<color>");
-------------- add them phan thuong neu can
pNpc.Delete();
elseif (nIndex == 8) then
me.Msg(" Giao thông với kim chi mỹ nữ được <color=cyan>"..pItem.szName.."<color>");
-------------- add them phan thuong neu can
pNpc.Delete();
elseif (nIndex == 9) then
me.Msg(" Giao thông với kim chi mỹ nữ được <color=cyan>"..pItem.szName.."<color>");
-------------- add them phan thuong neu can
pNpc.Delete();
return 1;
end
end
Mở task def
3018 1 17 giao thong 0 0