PDA

View Full Version : [KT] xin hướng dẫn chỉnh vật phẩm khi mở Rương vừa đẹp vừa cao quý



khang.ps
14-12-12, 09:26 PM
sau khi mình chỉnh, vào game khui rương ra thì ra huyền tinh và du long danh vọng lệnh luôn.
ở đây mình muốn hướng dẫn chỉnh làm sao khi khui rương ra xui thì nhận huyền tinh, còn hên thì nhận du long danh vọng lệnh.
đây là đoạn code của mình, mình gà nên đừng cười :)


Require("\\script\\baibaoxiang\\baibaoxiang_def.lua");

local tbJinxiangziItem = Item:GetClass("jinxiangzi");

function tbJinxiangziItem:OnUse()

local nWeekOpen = me.GetTask(Baibaoxiang.TASK_GROUP_ID, Baibaoxiang.TASK_BAIBAOXIANG_WEEKEND);

if nWeekOpen >= 500 then
me.Msg("Một tuần chỉ có thể mở 500 rương cao quý, vui lòng kiểm tra lại!");
return 0;
end;

if me.CountFreeBagCell() < 1 then
me.Msg("Túi của bạn đã đầy, cần ít nhất 1 ô trống.");
return 0;
end

local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;

-- random
nRand = MathRandom(1, 109600);

-- fill 3 rate
local tbRate = {8300, 1500, 150, 45, 5};
local tbAward = {8 ,9, 10, 11, 12};

-- fill 4 rate
local tbRate = {8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300};
local tbAward = {1,2,3,4,5,6,7,8 ,9, 10, 11, 12};
<---- mình thêm chỗ này
-- get index
for i = 1, 12 do <---- sữa số 5 thành số 12
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end

if nIndex == 0 then
me.Msg("Xin lỗi, bạn không nhận được gì.");
return 0;
end;

local pItem = me.AddItem(18,1,1, tbAward[nIndex]);
pItem1.Bind(1);
local pItem = me.AddItem(18,1,529, tbAward[nIndex]);
pItem2.Bind(1); <---- thêm cái này nữa

nWeekOpen = nWeekOpen + 1;
me.SetTask(Baibaoxiang.TASK_GROUP_ID, Baibaoxiang.TASK_BAIBAOXIANG_WEEKEND, nWeekOpen);

me.Msg("Bạn mở rương cao quý phát hiện <color=yellow>"..pItem.szName.."<color>");

me.SendMsgToFriend("Hảo hữu của bạn [<color=yellow>" .. me.szName
.. "<color>] mở rương vừa đẹp vừa cao quý nhận được <color=yellow>"
.. pItem.szName .."<color>!");

return 1;
end

function tbJinxiangziItem:WeekEvent()
me.SetTask(Baibaoxiang.TASK_GROUP_ID, Baibaoxiang.TASK_BAIBAOXIANG_WEEKEND, 0);
end;

PlayerSchemeEvent:RegisterGlobalWeekEvent({tbJinxi angziItem.WeekEvent, tbJinxiangziItem});

khang.ps
15-12-12, 08:12 AM
up cho các pro vào giúp đỡ.
30 charrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...thêm 30 nữa này ;))

khang.ps
15-12-12, 02:34 PM
không ai hướng dẫn dùm mình với :(.

Sesshomaru
16-12-12, 07:29 AM
-- fill 3 rate
local tbRate = {8300, 1500, 150, 45, 5};
local tbAward = {8 ,9, 10, 11, 12};

-- fill 4 rate
local tbRate = {8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300};
local tbAward = {1,2,3,4,5,6,7,8 ,9, 10, 11, 12};
<---- mình thêm chỗ này

Đoạn này bạn có lỗi quan trọng.
1:/ cùng 1 function thì nó chỉ hiểu được 1 tham số bạn gắn cho nó
local tbRate bạn gắn những 2 lần nên nó ko hiểu bạn nói gì cả?

Bạn phải xóa bỏ 1 trong 2 đoạn code đi,Rồi chỉnh lại MathRandom



2:/local pItem = me.AddItem(18,1,1, tbAward[nIndex]);
pItem1.Bind(1);
local pItem = me.AddItem(18,1,529, tbAward[nIndex]);
pItem2.Bind(1);<---- thêm cái này nữa

Cái này cũng sai.

Mình sửa lại cho bạn xem thử nhé.


-- random
nRand = MathRandom(1, 109600);

-- fill 3 rate
local tbRate = {8300, 1500, 150, 45, 5};
local tbAward = {8 ,9, 10, 11, 12};

-- fill 4 rate
local tbRate = {8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300, 8300};
local tbAward = {1,2,3,4,5,6,7,8 ,9, 10, 11, 12};
<---- mình thêm chỗ này

Sửa thành


-- random
nRand = MathRandom(1, 10000);

-- fill 3 rate
local tbRate = {8300, 1500, 150, 45, 4 , 1};
local tbAward = {8 ,9, 10, 11, 12, 13};




Đoạn này

if nIndex == 0 then
me.Msg("Xin lỗi, bạn không nhận được gì.");
return 0;
end;

local pItem = me.AddItem(18,1,1, tbAward[nIndex]);
pItem1.Bind(1);
local pItem = me.AddItem(18,1,529, tbAward[nIndex]);
pItem2.Bind(1); <---- thêm cái này nữa

Sửa thành:


if nIndex == 0 then
me.Msg("Xin lỗi, bạn không nhận được gì.");
return 0;
end;

if nIndex == 13 then
local pItem = me.AddItem(18,1,529, 1);
pItem.Bind(1);
else
local pItem = me.AddItem(18,1,1, tbAward[nIndex]);
pItem.Bind(1);
end

khang.ps
17-12-12, 06:50 AM
thank trantoai đã hướng dẫn rất chi tiết, để mình áp dụng thử xem. vì qua giờ chưa có time :)
rất cảm ơn bạn :)

vipbk
17-12-12, 09:40 AM
Đầu tiên, cảm ơn MOD trantoai223 về code trên.
Thứ hai là mình có một số nhận xét như sau:

- nIndex là biến chạy đếm số thứ tự trong mảng tbAward
Vì vậy đoạn code:

if nIndex == 13 then
local pItem = me.AddItem(18,1,529, 1);
...

nIndex == 13 là sai, đúng phải là nIndex == 6 (phần tử thứ 6 của mảng), còn tbAward[nIndex] mới là 13

- Code trên có nhược điểm là Khi mở rương sẽ dc HT hoặc Danh vọng lệnh, nhưng rương không mất sau khi mở

- Code của mình như sau:

-- random
nRand = MathRandom(1, 10000);

-- fill 3 rate
local tbRate = {8300, 1000, 500, 100, 50, 10, 10, 10, 10, 10};
local tbAward = {8 ,9, 10, 11, 12, 13, 14, 15, 16, 17};

-- get index
for i = 1, 10 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end


if nIndex == 0 then
me.Msg("Xin lỗi, bạn không nhận được gì.");
return 0;
end

if (nIndex >= 6) and (nIndex <= 10) then
local pItem = me.AddItem(18,1,529,nIndex-5);
pItem.Bind(1);
end

local pItem = me.AddItem(18,1,1,tbAward[nIndex]);
pItem.Bind(1);

mở rương sẽ nhận dc HT và rương sẽ biến mất : code này luôn luôn nhận được HT nhưng nếu xác suất vào đúng DV lệnh thì sẽ dc thêm DV lệnh tức là mở 1 rương có thể dc cả HT và DV lệnh

MOD và các pro cho 1 vài ý kiến !

khang.ps
17-12-12, 05:42 PM
cám ơn MOD vipbk đã cụ thể.
mình có vấn đề thế này:
-- random
nRand = MathRandom(1, 10000);

-- fill 3 rate
local tbRate = {8300, 1000, 500, 100, 50, 10, 10, 10, 10, 10};
local tbAward = {8 ,9, 10, 11, 12, 13, 14, 15, 16, 17};

vậy local tbAward theo hướng dẫn trong 4rum <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
thì local tbAward = {8 ,9, 10, 11, 12, 13, 14, 15, 16, 17};
là mã cuối của ID item. vậy ID của item du long danh vọng có mã cuối từ 1 đến 9. còn trên đoạn code của MOD vipbk thì từ 8 đến 17.vậy từ 8 đến 17 là mã cuối của ID item gì? 8,9,10,11,12 là mã cuối của ID item Huyền tinh rồi.
nếu mình để mã cuối từ 1 đến 17 thì xác xuất ra huyền tinh cấp 1 sẽ có. mình không hiểu chỗ này :)

vipbk
17-12-12, 05:47 PM
một item dc xác định bởi 4 (hoặc 5) thông số: Genre, DetailType, ParticularType, Level
Huyền Tinh có ID: 18 1 1 1 đến 18 1 1 12
nhưng Danh vọng lệnh có ID: 18 1 529 1 đến 18 1 529 5 ... (còn vài cái nữa, tạm xem xét 5 cái trước)
vì vậy code trên có thể viết:

-- random
nRand = MathRandom(1, 10000);

-- fill 3 rate
local tbRate = {8300, 1000, 500, 100, 50, 10, 10, 10, 10, 10};
local tbAward = {8 ,9, 10, 11, 12, 1, 2, 3, 4, 5};

-- get index
for i = 1, 10 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end


if nIndex == 0 then
me.Msg("Xin lỗi, bạn không nhận được gì.");
return 0;
end

if (nIndex >= 6) and (nIndex <= 10) then
local pItem = me.AddItem(18,1,529,tbAward[nIndex]);
pItem.Bind(1);
end

local pItem = me.AddItem(18,1,1,tbAward[nIndex]);
pItem.Bind(1);

bạn có thể đặt là

local tbAward = {1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5};
cũng dc, vì có cả hàm kiểm tra thứ tự các giá trị trong mảng trên nữa, gán cho nIndex

khang.ps
17-12-12, 05:51 PM
rất cảm ơn MOD nhé.
local tbAward = {1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5};
Dòng bôi đỏ là ID cuối của Huyền tinh
còn dòng bôi xanh là iD cuối của du long
còn
-- get index
for i = 1, 10 do thì mình thay 10 bằng tương ứng với số ID item mình thêm vào.
đúng không MOD
tiện thể MOD có thể cho xin yahoo được không để có gì tiện hỏi nhiều đều :)

vipbk
17-12-12, 06:02 PM
chính xác !

YM: fly_emirates2006

Dạo này đang thi nên hơi mệt (:| bạn pm mình sau nhé :) có vấn đề gì thì post lên 4rum

khang.ps
17-12-12, 06:04 PM
chính xác !

YM: fly_emirates2006

Dạo này đang thi nên hơi mệt (:| bạn pm mình sau nhé :) có vấn đề gì thì post lên 4rum

mình gà nên hỏi hơi nhiều :D

vậy phần này mình cần chỉnh sữa gì không hay giữ nguyên thế MOD.
theo mình hiểu thì nếu nIndex>=6 và nhỏ hơn hoặc bằng 10 thì xác xuất ra du long sẽ có đúng không?
if (nIndex >= 6) and (nIndex <= 10) then
local pItem = me.AddItem(18,1,529,tbAward[nIndex]); <--- có cách khoảng trắng từ 529, không MOD
pItem.Bind(1);
end

vipbk
17-12-12, 08:21 PM
khoảng trống đó không cần thiết, thêm vào hoặc không cũng dc

code dưới đây coi như hoàn chỉnh, chỉ có thể nhận HT hoặc DV lệnh


Require("\\script\\baibaoxiang\\baibaoxiang_def.lua");

local tbJinxiangziItem = Item:GetClass("jinxiangzi"); -- 18 1 324 1

function tbJinxiangziItem:OnUse()

local pItem1 = {18,1,324,1};

local nWeekOpen = me.GetTask(Baibaoxiang.TASK_GROUP_ID, Baibaoxiang.TASK_BAIBAOXIANG_WEEKEND);

if nWeekOpen >= 1000 then
me.Msg("Một tuần chỉ có thể mở 1000 rương cao quý, vui lòng kiểm tra lại!");
return 0;
end;

if me.CountFreeBagCell() < 1 then
me.Msg("Túi của bạn đã đầy, cần ít nhất 1 ô trống.");
return 0;
end

local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;

-- random
nRand = MathRandom(1, 10000);

-- fill 3 rate
local tbRate = {8300, 1000, 500, 100, 50, 10, 10, 10, 10, 10};
local tbAward = {8, 9, 10, 11, 12, 1, 2, 3, 4, 5};

-- get index
for i = 1, 10 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end


if nIndex == 0 then
me.Msg("Xin lỗi, bạn không nhận được gì.");
return 0;
end

if (nIndex >= 6) and (nIndex <= 10) then
local pItem = me.AddItem(18,1,529,tbAward[nIndex]);
pItem.Bind(1);
else
local pItem = me.AddItem(18,1,1,tbAward[nIndex]);
pItem.Bind(1);
end

Task:DelItem(me,pItem1,1);

nWeekOpen = nWeekOpen + 1;
me.SetTask(Baibaoxiang.TASK_GROUP_ID, Baibaoxiang.TASK_BAIBAOXIANG_WEEKEND, nWeekOpen);

me.Msg("Bạn mở rương cao quý phát hiện <color=yellow>"..pItem.szName.."<color>");

me.SendMsgToFriend("Hảo hữu của bạn [<color=yellow>" .. me.szName
.. "<color>] mở rương vừa đẹp vừa cao quý nhận được <color=yellow>"
.. pItem.szName .."<color>!");

return 1;
end

function tbJinxiangziItem:WeekEvent()
me.SetTask(Baibaoxiang.TASK_GROUP_ID, Baibaoxiang.TASK_BAIBAOXIANG_WEEKEND, 0);
end;

PlayerSchemeEvent:RegisterGlobalWeekEvent({tbJinxi angziItem.WeekEvent, tbJinxiangziItem});

khang.ps
17-12-12, 09:04 PM
Đã hoàn chỉnh . xin MOD close dùm mình nhé.
rất cám ơn MOD vipbk và MOD trantoai đã giúp đỡ mình.

Sesshomaru
18-12-12, 09:17 PM
ừm.Sr,phải là tbAward == 13 mới đúng:D Gà rùi