PDA

View Full Version : [KT] Mong các bạn chỉ giúp đoạn code này



babyturtle.vn7
24-09-12, 03:37 PM
vấn đề là mình đang viết 1 event nhưng đang bí ở chổ, mình muốn khi mở item bánh trung thu chẳng hạn nó sẽ cho exp và đồ theo xác xuất tỉ lệ ra vật phẩm ngẫu nhiên theo quy định. ví dụ 20% ra HT 9 chẳng hạn

Mong các bạn chỉ giúp mình đoạn code này. cám ơn rất nhiều :)>-

satthupro95
24-09-12, 04:04 PM
vấn đề là mình đang viết 1 event nhưng đang bí ở chổ, mình muốn khi mở item bánh trung thu chẳng hạn nó sẽ cho exp và đồ theo xác xuất tỉ lệ ra vật phẩm ngẫu nhiên theo quy định. ví dụ 20% ra HT 9 chẳng hạn

Mong các bạn chỉ giúp mình đoạn code này. cám ơn rất nhiều :)>-

Bạn có thể tham khảo code này :
function tbItem:OnDialog4()
local tbItemId2 = {18,1,25104,1,0,0};
local nCount2 = me.GetItemCountInBags(18,1,25104,1); -- Tên
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {5000, 5000};
local tbAward =
{
[1] = {18, 1,25101, 1};
[2] = {18,1,25102,1};
}
if me.CountFreeBagCell() < 10 then
Dialog:Say("Phải Có 10 Ô Trống Trong Túi Hành Trang Mới Dương Cung Bắn Được !");
return 0;
end
if nCount2 < 1 then
Dialog:Say("<color=yellow>Trong hành trang của bạn không có <color=cyan>Tên<color> . Không thể bắn<color>");
return 0;
end
for i = 1, 2 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
local pItem = me.AddItem(unpack(tbAward[nIndex]));
pItem.Bind(1);
if (nIndex == 1) then
local szMsg = string.format("<color=cyan>%s<color> Bắn Trúng <color=cyan>%s<color> Nhận <color=cyan>50tr EXP<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>] Bắn Trúng <color=cyan>"
.. pItem.szName .." Nhận 50tr EXP<color>");
me.Msg("Bắn Trúng <color=cyan>"..pItem.szName.."<color>.");
me.AddExp(50000000);
Task:DelItem(me, tbItemId2, 1);
elseif (nIndex == 2) then
me.Msg("Bắn Hụt <color=cyan>Đại Điêu<color> nhưng trúng <color=cyan>"..pItem.szName.."<color> Nhận <color=cyan>25tr EXP<color>");
me.AddExp(20000000);
Task:DelItem(me, tbItemId2, 1);
end
end

babyturtle.vn7
24-09-12, 04:45 PM
Bạn có thể tham khảo code này :
function tbItem:OnDialog4()
local tbItemId2 = {18,1,25104,1,0,0};
local nCount2 = me.GetItemCountInBags(18,1,25104,1); -- Tên
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {5000, 5000};
local tbAward =
{
[1] = {18, 1,25101, 1};
[2] = {18,1,25102,1};
}
if me.CountFreeBagCell() < 10 then
Dialog:Say("Phải Có 10 Ô Trống Trong Túi Hành Trang Mới Dương Cung Bắn Được !");
return 0;
end
if nCount2 < 1 then
Dialog:Say("<color=yellow>Trong hành trang của bạn không có <color=cyan>Tên<color> . Không thể bắn<color>");
return 0;
end
for i = 1, 2 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
local pItem = me.AddItem(unpack(tbAward[nIndex]));
pItem.Bind(1);
if (nIndex == 1) then
local szMsg = string.format("<color=cyan>%s<color> Bắn Trúng <color=cyan>%s<color> Nhận <color=cyan>50tr EXP<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>] Bắn Trúng <color=cyan>"
.. pItem.szName .." Nhận 50tr EXP<color>");
me.Msg("Bắn Trúng <color=cyan>"..pItem.szName.."<color>.");
me.AddExp(50000000);
Task:DelItem(me, tbItemId2, 1);
elseif (nIndex == 2) then
me.Msg("Bắn Hụt <color=cyan>Đại Điêu<color> nhưng trúng <color=cyan>"..pItem.szName.."<color> Nhận <color=cyan>25tr EXP<color>");
me.AddExp(20000000);
Task:DelItem(me, tbItemId2, 1);
end
end

cám ơn bạn rất nhiều đoạn code mà mình đang cần.

vipbk
24-09-12, 06:01 PM
Nhắc nhở bạn babyturtle.vn7 lần 1: Sai box !

Lần sau nhớ post đúng chỗ.

lonelywofl38
24-09-12, 07:41 PM
Ai cho em xin CĐKB , TTL , CTL đi
Set Trang Bị 89 nữa

__Jie__
24-09-12, 09:14 PM
Bạn có thể tham khảo code này :
function tbItem:OnDialog4()
local tbItemId2 = {18,1,25104,1,0,0};
local nCount2 = me.GetItemCountInBags(18,1,25104,1); -- Tên
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {5000, 5000};
local tbAward =
{
[1] = {18, 1,25101, 1};
[2] = {18,1,25102,1};
}
if me.CountFreeBagCell() < 10 then
Dialog:Say("Phải Có 10 Ô Trống Trong Túi Hành Trang Mới Dương Cung Bắn Được !");
return 0;
end
if nCount2 < 1 then
Dialog:Say("<color=yellow>Trong hành trang của bạn không có <color=cyan>Tên<color> . Không thể bắn<color>");
return 0;
end
for i = 1, 2 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
local pItem = me.AddItem(unpack(tbAward[nIndex]));
pItem.Bind(1);
if (nIndex == 1) then
local szMsg = string.format("<color=cyan>%s<color> Bắn Trúng <color=cyan>%s<color> Nhận <color=cyan>50tr EXP<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>] Bắn Trúng <color=cyan>"
.. pItem.szName .." Nhận 50tr EXP<color>");
me.Msg("Bắn Trúng <color=cyan>"..pItem.szName.."<color>.");
me.AddExp(50000000);
Task:DelItem(me, tbItemId2, 1);
elseif (nIndex == 2) then
me.Msg("Bắn Hụt <color=cyan>Đại Điêu<color> nhưng trúng <color=cyan>"..pItem.szName.."<color> Nhận <color=cyan>25tr EXP<color>");
me.AddExp(20000000);
Task:DelItem(me, tbItemId2, 1);
end
end
Phực tạp nhĩ sao ko tạo 1 item rùi cho vào randomitem.txt mà set cho lẹ :)

vipbk
25-09-12, 08:40 AM
Phực tạp nhĩ sao ko tạo 1 item rùi cho vào randomitem.txt mà set cho lẹ :)

cho vào randomitem cũng dc, code của bạn satthupro95 tương tự code mở rương cao quý