PDA

View Full Version : [KT] Hỏi Về Fix event Giao Thông MariaOzaqua



visaothe123
11-12-14, 07:39 PM
Hiện Sever Có Event Giao Thông MariaOzawua, Lúc Giao Thông Thì Nó Delay 5 giay, gióng như mỡ rương thuốc vậy, lúc giao thông thành công thì sẽ nhận được PhầnThưỡng và MariOzawa Sẽ Biến Mắt.
Nhưng nó lỗi 1 cái là, 1 NPC MariaOzawua mà có thể Giao thông được nhiều lần Trong 1 Lúc.

Ví Dụ: Khi Giao Thông NPC Maria0zawua Sẽ Delay 5 giay Sau Khi Giao Thông Xong Sẽ Nhận Đươc Phần Thưỡng, Mà Trong Lúc Giao Thông Có 4 Nhân Vật, Nhân Vật Thứ Nhất Giao Thông Trước và Đang Trong Tình Trạng Delay 5 giay, và 3 Nhân Vật Sau Cũng Đang Giao Thông Cùng 1 NPC Của Nhân Vật Thứ Nhất, Và Sau Đó Nhân Vật 1 Đã Giao Thông Thành Công Và Nhận Được Phần Thưỡng và NPC Cũng Biến Mắt Luôn, Nhưng 3 Nhân Vật Giao Thông Sau Đang Trong Tình Trang Delay, Sau Khi Hết Delay Mà Cũng Nhận Được Phần Thưỡng Trong Khi Đó NPC Đã Biến Mắt Trước Đó Rồi.


Vậy Các Bác Cho Em Hỏi, Còn Thiếu Cái Hàm Nào Để Khi NPC biến Mắt rồi mà Nhân Vật Giao thông sau k nhận đc phần thưỡng nữa vậy.

skriptank
11-12-14, 08:54 PM
Á đù...KT có event nhạy cảm thế này sao :))

__Jie__
12-12-14, 07:11 AM
trong hàm nhận thưởng thêm 1 đoạn check kiểm tra có ID NPC đó ở gần đó không
Nếu không có break đi . Giải quyết xong vấn đề. Nhớ chèn trước đoạn xóa NPC nhé.
Vì theo mình nghỉ code theo dạng.
Nhận Thưởng trước xóa NPC sau.
Nên chèn check ID NPC trước nhận thưởng là được

visaothe123
12-12-14, 11:41 AM
uhm tks bác đã bày, nhưng code sau khi giao thông NPC thành công, mình để code như thế này, nhờ bác coi giúp và thêm task code như thế nào để mắt npc rồi, mà k nhận thưỡng đc, bác xem giúp


local tbItemId1 = {18,1,8009,1,0,0};
local nCount1 = me.GetItemCountInBags(18,1,8009,1)
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
nRand = MathRandom(1, 100);
local tbRate = {65, 16, 14, 5}; -- Rate Item
local tbAward = {1 ,2, 3, 4}; -- Rate 4 con số
for i = 1, 4 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
if (tbAward[nIndex]==1) then
me.AddStackItem(18,10,11,2,{bForceBind=0,},100) -- Mảnh Ấn
Task:DelItem(me, tbItemId1, 1); -- Xóa 1 Item tbItemId1 được khai báo ở trên
end
if (tbAward[nIndex]==2) then
me.AddStackItem(18,10,11,2,{bForceBind=0,},100) -- Mảnh Ấn
Task:DelItem(me, tbItemId1, 1); -- Xóa 1 Item tbItemId1 được khai báo ở trên là
end
if (tbAward[nIndex]==3) then -- Xác xuất ra số 1 là 15/100 (15%)
me.AddStackItem(18,10,11,2,{bForceBind=0,},150) -- Mảnh Ấn
Task:DelItem(me, tbItemId1, 1); -- Xóa 1 Item tbItemId1 được khai báo ở trên là
end
if (tbAward[nIndex]==4) then -- Xác xuất ra số 1 là 5/100 (5%)
me.AddStackItem(18,10,11,2,{bForceBind=0,},200) -- Mảnh Ấn
Task:DelItem(me, tbItemId1, 1); -- Xóa 1 Item tbItemId1 được khai báo ở trên là
end
-------
local pNpc = KNpc.GetById(nNpcId);
pNpc.Delete();
if (not pNpc) then
return;
end
pNpc.Delete();
return 0

__Jie__
13-12-14, 07:24 AM
Tối pm yahoo giúp cho h đang trong cty không viết được

visaothe123
13-12-14, 02:09 PM
tks bac.
upppppppppppppppppppppppppppppp

__Jie__
13-12-14, 08:32 PM
Của bạn đây


local nCheck = 0;
local nTempId = 20123;-- ID của NPC Maria Ozawa
local tbAroundNpc = KNpc.GetAroundNpcList(me, 10);-- khoảng cách từ nhân vật đến NPC
for _, pNpc in ipairs(tbAroundNpc) do
if (pNpc.nTemplateId == nTempId) then
nCheck = 1;
break;
end
end
if nCheck ~= 1 then
me.Msg("Xung quanh không có npc Maria Ozawa");
return 0;
end
local tbItemId1 = {18,1,8009,1,0,0};
local nCount1 = me.GetItemCountInBags(18,1,8009,1)
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
nRand = MathRandom(1, 100);
local tbRate = {65, 16, 14, 5}; -- Rate Item
local tbAward = {1 ,2, 3, 4}; -- Rate 4 con số
for i = 1, 4 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
if (tbAward[nIndex]==1) then
me.AddStackItem(18,10,11,2,{bForceBind=0,},100) -- Mảnh Ấn
Task:DelItem(me, tbItemId1, 1); -- Xóa 1 Item tbItemId1 được khai báo ở trên
end
if (tbAward[nIndex]==2) then
me.AddStackItem(18,10,11,2,{bForceBind=0,},100) -- Mảnh Ấn
Task:DelItem(me, tbItemId1, 1); -- Xóa 1 Item tbItemId1 được khai báo ở trên là
end
if (tbAward[nIndex]==3) then -- Xác xuất ra số 1 là 15/100 (15%)
me.AddStackItem(18,10,11,2,{bForceBind=0,},150) -- Mảnh Ấn
Task:DelItem(me, tbItemId1, 1); -- Xóa 1 Item tbItemId1 được khai báo ở trên là
end
if (tbAward[nIndex]==4) then -- Xác xuất ra số 1 là 5/100 (5%)
me.AddStackItem(18,10,11,2,{bForceBind=0,},200) -- Mảnh Ấn
Task:DelItem(me, tbItemId1, 1); -- Xóa 1 Item tbItemId1 được khai báo ở trên là
end
-------
local pNpc = KNpc.GetById(nNpcId);
pNpc.Delete();
if (not pNpc) then
return;
end
pNpc.Delete();
return 0


Phần màu đỏ là update thêm