PDA

View Full Version : [KT] Giúp về giới hạn item nâng cấp 2.6



hongphuc89
09-07-16, 03:55 PM
Như tiêu đề e sài cái server 2.6 có item "Tinh Thạch Thánh Hỏa" dùng để nâng cấp ngoại trang.
Khi nâng cấp max cái ngoại trang nó sẽ thông báo là : "Luyện hóa đã đạt cấp cao nhất"
nhưng cái item "Tinh Thạch Thánh Hỏa" vẫn bị trừ đi sau mỗi lần nhấn nâng cấp cung có dòng thông báo này xẩy ra "Luyện hóa đã đạt cấp cao nhất"
Vậy có cách nào ngăn chặn cái item đó khi nâng cấp max có thông báo đã đạt cấp cấo nhất mà không bị trừ đi item ko ai biet giúp e voi Thank all forum...

cyberc
09-07-16, 05:16 PM
post script của item đó lên xem bạn

hongphuc89
09-07-16, 05:26 PM
post script của item đó lên xem bạn

Thank a sciprt cũa item nó đây ạh

local tbDiamonds = Item:GetClass("jxsf8_gradediamonds");

tbDiamonds.UpRate100PMax={
[1] = 2,
[2] = 7,
[3] = 12,
[4] = 17,
}

tbDiamonds.UpRateDiff={
[1] = 40,
[2] = 18,
[3] = 12,
[4] = 5,
[5] = 3,
[6] = 1,
[7] = 0,
[8] = 0,
[9] = 0,
[10] = 0,
[11] = 0,
[12] = 0,
[13] = 0,
[14] = 0,
[15] = 0,
[16] = 0,
[17] = 0,
[18] = 0,
[19] = 0,
[20] = 0,
}

function tbDiamonds:OnUse()
local nLevel = it.nLevel;
local nMaxPoint = tbDiamonds.UpRate100PMax[nLevel];
local szMsg = "Tinh thạch quý giá của trời đất, dùng để luyện hóa Chân Vũ";
local tbOpt = {};

for i = 20,21 do
local pItem = me.GetEquip(i);
if (pItem)then
local ItemLevel = pItem.GetGenInfo(12);
local szName = "<color=green>"..pItem.szName.."<color>";
local nRandRate = 0;
if ItemLevel <= nMaxPoint then
nRandRate = 100;
else
nRandRate = tbDiamonds.UpRateDiff[ItemLevel - nMaxPoint];
end
szName = szName.."-><color=red>"..nRandRate.."%<color>";
table.insert(tbOpt, {szName, self.DoAddEquipPoint, self, pItem,it});
end
end
if #tbOpt == 0 then
szMsg = szMsg.."\n\n<color=gold>Vui lòng trang bị Chân Vũ trước khi luyện hóa";
end
table.insert(tbOpt, {"Kết thúc đối thoại"});
Dialog:Say(szMsg, tbOpt);
return 0;
end

function tbDiamonds:DoAddEquipPoint(pItem,pThisItem)
local szMsg = "";
local nLevel = pThisItem.nLevel;
local tbOpt = {};
if pThisItem.nCount > 1 then
pThisItem.SetCount(pThisItem.nCount-1);
else
me.DelItem(pThisItem)
end

local nMaxPoint = tbDiamonds.UpRate100PMax[nLevel];
local ItemLevel = pItem.GetGenInfo(12);
local nRandRate = 0;
if ItemLevel <= nMaxPoint then
nRandRate = 100;
else
nRandRate = tbDiamonds.UpRateDiff[ItemLevel - nMaxPoint];
end
local nRandom = MathRandom(1,100);
local nNewLevel = ItemLevel;
if ItemLevel==20 then
me.Msg("Luyện hóa đã đạt cấp cao nhất");
return 0;
end
if nRandom < nRandRate then
nNewLevel = nNewLevel + 1;
szMsg = string.format("Người chơi <color=yellow>[%s]<color> dùng <color=green>%s<color> luyện hóa thành công <color=green>%s<color> lên <color=yellow>%d<color> cấp", me.szName,pThisItem.szName,pItem.szName,ItemLevel+ 1);
me.Msg(szMsg);
if ItemLevel+1 >=18 then
KDialog.MsgToGlobal(szMsg);
end
else
nNewLevel = nNewLevel - 1;
szMsg = "<color=red>Luyện hóa thất bại, Trang bị bị giáng <color=gold>1 Cấp<color><color>";
me.Msg(szMsg);
end
Item:SetGradeEquipUpGradeLevel(pItem,nNewLevel);
return 0;
end

cyberc
09-07-16, 06:04 PM
Chịu rồi....................................

hongphuc89
10-07-16, 07:45 PM
code bạn đưa add cũng ko đc bạn ơi add vào nó cung vạy hoặc là mỗi lần nâng cấp bi giang 1 cấp :(
ai giúp e với :(

hongphuc89
10-07-16, 08:00 PM
ai vào giúp e cái này với :(..........

30 charrrrrrrrrrrrrrrrrrrrrrr

hongphuc89
11-07-16, 01:55 PM
không ai vào giúp cho e cái code này :( buông quá

Sesshomaru
11-07-16, 02:16 PM
cho cái đoạn này:


if ItemLevel==20 then
me.Msg("Luyện hóa đã đạt cấp cao nhất");
return 0;
end


lên trước đoạn này


if pThisItem.nCount > 1 then
pThisItem.SetCount(pThisItem.nCount-1);
else
me.DelItem(pThisItem)
end


Xóa item rồi mới xét đến cấp trang bị thì bị trừ item là đúng rồi

hongphuc89
11-07-16, 03:06 PM
thanh a nhá nhửng thêm vào ko được khi thêm lên trên đoạn đầu của nó nó cứ báo giáng 1 cấp rồi lại lên 1 cấo cứ thế làm hoài ko có full ko có hiện""Luyện hóa đã đạt cấp cao nhất""

đoạn đầu của nè a thêm dùm e với :(


function tbDiamonds:DoAddEquipPoint(pItem,pThisItem)
local szMsg = "";
local nLevel = pThisItem.nLevel;
local tbOpt = {};
if pThisItem.nCount > 1 then
pThisItem.SetCount(pThisItem.nCount-1);
else
me.DelItem(pThisItem)
end

Sesshomaru
11-07-16, 07:17 PM
mình chỉ nói nguyên nhân và hướng giải quyết,còn giải quyết trọn vẹn thì phải suy nghĩ thêm về code đó bạn