PDA

View Full Version : [KT] Script nâng cấp ngựa



sindhand
10-05-24, 08:11 PM
local tbNpc = Npc:GetClass("nangcapthucuoi");

local IdVatPham = {
[1] = {
[1]=string.format("%s,%s,%s,%s", 18,1,1338,3), --Kim Nguyên Bảo Đại
[2]="Kim Nguyên Bảo Đại",

},
[2] = {
[1]=string.format("%s,%s,%s,%s", 18,1,1636,1), --Mảnh Ngựa
[2]="Mảnh Ngựa",
},
[3] = {
[1]=string.format("%s,%s,%s,%s", 18,1,3028,1), --Thuần Dưỡng Đơn
[2]="Thuần Dưỡng Đơn",
},
[4] = {
[1]=string.format("%s,%s,%s,%s", 18,1,3028,2), --Căn Cốt Đan
[2]="Căn Cốt Đan",
},

[5] = {
[1]=string.format("%s,%s,%s,%s", 18,1,3028,3), --Linh Tê Ngọc
[2]="Linh Tê Ngọc",
},
};


local VatPhamCanThiet = {
[1]= {
[1]=1,
[2]=100,
[3]=100,
[4]=100,
[5]=1,
[6]={
[1]=string.format("%s,%s,%s,%s", 1,12,31,4), --[Tân Thủ] Mã bài (Phiên Vũ)
},
},
[2]= {
[1]=1,
[2]=200,
[3]=200,
[4]=200,
[5]=1,
[6]={
[1]=string.format("%s,%s,%s,%s", 1,12,791,4), --Hành Giả Huyết Minh - Cấp 1
[2]=string.format("%s,%s,%s,%s", 1,12,801,4), --Lạc Đà Xanh Nước Biển - Cấp 1
[3]=string.format("%s,%s,%s,%s", 1,12,811,4), --Lạc Đà Trắng - Cấp 1
[4]=string.format("%s,%s,%s,%s", 1,12,821,4), --Hành Giả Bóng Đêm - Cấp 1
[5]=string.format("%s,%s,%s,%s", 1,12,831,4), --Lạc Đà Xanh Dương - Cấp 1
[6]=string.format("%s,%s,%s,%s", 1,12,841,4), --Tuyết Hồn - Cấp 1
[7]=string.format("%s,%s,%s,%s", 1,12,851,4), --Trường Lâm - Cấp 1
[8]=string.format("%s,%s,%s,%s", 1,12,861,4), --Lăng Thiên - Cấp 1
[9]=string.format("%s,%s,%s,%s", 1,12,871,4), --Trục Nhật - Cấp 1
[10]=string.format("%s,%s,%s,%s", 1,12,881,4), --Ức Vân - Cấp 1
[11]=string.format("%s,%s,%s,%s", 1,12,891,4), --Hãn Huyết Thần Mã - Cấp 1
[12]=string.format("%s,%s,%s,%s", 1,12,901,4), --Hắc Mã Cuồng Chiến - Cấp 1
[13]=string.format("%s,%s,%s,%s", 1,12,911,4), --Bạch Mã Cuồng Chiến - Cấp 1
[14]=string.format("%s,%s,%s,%s", 1,12,921,4), --Hắc Mã Huyết Giác - Cấp 1
[15]=string.format("%s,%s,%s,%s", 1,12,931,4), --Tuyệt Thế Tuyết Vũ - Cấp 1
},
},
[3]= {
[1]=1,
[2]=200,
[3]=200,
[4]=200,
[5]=1,
[6]={
[1] =string.format("%s,%s,%s,%s", 1,12,792,4), --Hành Giả Huyết Minh - Cấp 1
[2] =string.format("%s,%s,%s,%s", 1,12,802,4), --Lạc Đà Xanh Nước Biển - Cấp 1
[3] =string.format("%s,%s,%s,%s", 1,12,812,4), --Lạc Đà Trắng - Cấp 1
[4] =string.format("%s,%s,%s,%s", 1,12,822,4), --Hành Giả Bóng Đêm - Cấp 1
[5] =string.format("%s,%s,%s,%s", 1,12,832,4), --Lạc Đà Xanh Dương - Cấp 1
[6] =string.format("%s,%s,%s,%s", 1,12,842,4), --Tuyết Hồn - Cấp 1
[7] =string.format("%s,%s,%s,%s", 1,12,852,4), --Trường Lâm - Cấp 1
[8] =string.format("%s,%s,%s,%s", 1,12,862,4), --Lăng Thiên - Cấp 1
[9] =string.format("%s,%s,%s,%s", 1,12,872,4), --Trục Nhật - Cấp 1
[10]=string.format("%s,%s,%s,%s", 1,12,882,4), --Ức Vân - Cấp 1
[11]=string.format("%s,%s,%s,%s", 1,12,892,4), --Hãn Huyết Thần Mã - Cấp 1
[12]=string.format("%s,%s,%s,%s", 1,12,902,4), --Hắc Mã Cuồng Chiến - Cấp 1
[13]=string.format("%s,%s,%s,%s", 1,12,912,4), --Bạch Mã Cuồng Chiến - Cấp 1
[14]=string.format("%s,%s,%s,%s", 1,12,922,4), --Hắc Mã Huyết Giác - Cấp 1
[15]=string.format("%s,%s,%s,%s", 1,12,932,4), --Tuyệt Thế Tuyết Vũ - Cấp 1
},
},
[4]= {
[1]=1,
[2]=200,
[3]=200,
[4]=200,
[5]=1,
[6]={
[1]=string.format("%s,%s,%s,%s", 1,12,793,4), --Hành Giả Huyết Minh - Cấp 1
[2]=string.format("%s,%s,%s,%s", 1,12,803,4), --Lạc Đà Xanh Nước Biển - Cấp 1
[3]=string.format("%s,%s,%s,%s", 1,12,813,4), --Lạc Đà Trắng - Cấp 1
[4]=string.format("%s,%s,%s,%s", 1,12,823,4), --Hành Giả Bóng Đêm - Cấp 1
[5]=string.format("%s,%s,%s,%s", 1,12,833,4), --Lạc Đà Xanh Dương - Cấp 1
[6]=string.format("%s,%s,%s,%s", 1,12,843,4), --Tuyết Hồn - Cấp 1
[7]=string.format("%s,%s,%s,%s", 1,12,853,4), --Trường Lâm - Cấp 1
[8]=string.format("%s,%s,%s,%s", 1,12,863,4), --Lăng Thiên - Cấp 1
[9]=string.format("%s,%s,%s,%s", 1,12,873,4), --Trục Nhật - Cấp 1
[10]=string.format("%s,%s,%s,%s", 1,12,883,4), --Ức Vân - Cấp 1
[11]=string.format("%s,%s,%s,%s", 1,12,893,4), --Hãn Huyết Thần Mã - Cấp 1
[12]=string.format("%s,%s,%s,%s", 1,12,903,4), --Hắc Mã Cuồng Chiến - Cấp 1
[13]=string.format("%s,%s,%s,%s", 1,12,913,4), --Bạch Mã Cuồng Chiến - Cấp 1
[14]=string.format("%s,%s,%s,%s", 1,12,923,4), --Hắc Mã Huyết Giác - Cấp 1
[15]=string.format("%s,%s,%s,%s", 1,12,933,4), --Tuyệt Thế Tuyết Vũ - Cấp 1
},
},
[5]= {
[1]=1,
[2]=200,
[3]=200,
[4]=200,
[5]=1,
[6]={
[1]=string.format("%s,%s,%s,%s", 1,12,794,4), --Hành Giả Huyết Minh - Cấp 1
[2]=string.format("%s,%s,%s,%s", 1,12,804,4), --Lạc Đà Xanh Nước Biển - Cấp 1
[3]=string.format("%s,%s,%s,%s", 1,12,814,4), --Lạc Đà Trắng - Cấp 1
[4]=string.format("%s,%s,%s,%s", 1,12,824,4), --Hành Giả Bóng Đêm - Cấp 1
[5]=string.format("%s,%s,%s,%s", 1,12,834,4), --Lạc Đà Xanh Dương - Cấp 1
[6]=string.format("%s,%s,%s,%s", 1,12,844,4), --Tuyết Hồn - Cấp 1
[7]=string.format("%s,%s,%s,%s", 1,12,854,4), --Trường Lâm - Cấp 1
[8]=string.format("%s,%s,%s,%s", 1,12,864,4), --Lăng Thiên - Cấp 1
[9]=string.format("%s,%s,%s,%s", 1,12,874,4), --Trục Nhật - Cấp 1
[10]=string.format("%s,%s,%s,%s", 1,12,884,4), --Ức Vân - Cấp 1
[11]=string.format("%s,%s,%s,%s", 1,12,894,4), --Hãn Huyết Thần Mã - Cấp 1
[12]=string.format("%s,%s,%s,%s", 1,12,904,4), --Hắc Mã Cuồng Chiến - Cấp 1
[13]=string.format("%s,%s,%s,%s", 1,12,914,4), --Bạch Mã Cuồng Chiến - Cấp 1
[14]=string.format("%s,%s,%s,%s", 1,12,924,4), --Hắc Mã Huyết Giác - Cấp 1
[15]=string.format("%s,%s,%s,%s", 1,12,934,4), --Tuyệt Thế Tuyết Vũ - Cấp 1
},
},
};


function tbNpc:OnDialog_1()
local szMsg = "Ta sẽ giúp nhà ngươi ghép Ngựa.";
szMsg = "Vui lòng cho tất cả Vật phẩm cường hóa vào vào.";
Dialog:OpenGift(szMsg, nil, {self.CheckItem, self});
end

function tbNpc:CheckItem(tbItemObj)
local DayDu = 0;
local szMsg = 'Bạn còn thiếu: \n\n';
local isVatPhamNgua_all = self:CheckItemNgua(tbItemObj, VatPhamCanThiet);
local isVatPhamNgua = tonumber(isVatPhamNgua_all[1]);
local isVatPhamNgua_y = tonumber(isVatPhamNgua_all[2]);
-- kiểm tra có vật phẩm cường hóa ngựa không
if (isVatPhamNgua == 0) then
me.Msg("Không có vật phẩm cường hóa Ngựa.");
Dialog:Say("Vui lòng cho vật phẩm cường hóa Ngựa vào để cường hóa.");
return 0;
elseif isVatPhamNgua == 41 then
me.Msg("Ngựa chưa mở cấp tiếp theo.");
Dialog:Say("Ngựa chưa mở cấp tiếp theo.");
return 0;
else
-- check is Rương
local nCount1 = me.GetItemCountInBags(self:GetItem(VatPhamCanThiet[isVatPhamNgua][6][isVatPhamNgua_y]));
if nCount1 == 0 then
Dialog:Say("Bạn phải đặt vật phẩm cường hóa trong rương");
return 0;
end

local HoanThanh = 0;
for i=1,5 do--từ 1 - 5 là số nguyen liệu cần nâng cấp
local isItem = self:CheckItemCH(tbItemObj, IdVatPham, VatPhamCanThiet, isVatPhamNgua, i);
if isItem >= 1 then
szMsg = szMsg.." \t "..tostring(isItem).." "..IdVatPham[i][2]..".\n"; --2 là tên nguyên liệu
else
HoanThanh = HoanThanh +1;
end
end

if HoanThanh < 5 then --nhỏ hơn 5 là k đủ nguyên liệu up cấp mới
Dialog:Say(szMsg);
me.Msg("Cường hóa Ngựa thất bại do thiếu Vật Phẩm.");
else -- đầy đủ cường hóa
--- thêm vật phẩm mới vào
self:Dialog_showItem(VatPhamCanThiet[isVatPhamNgua +1][6], tbItemObj, isVatPhamNgua_all);
end
end
-- kiểm tra các vật phẩm khác
end;

function tbNpc:GetItem(szText)
local rows = {};

local itsat = 0;
local tmp = szText;
while itsat ~= nil do
itsat = string.find(tmp,",",1);
if itsat ~= nil then
rows[#rows+1] = string.sub(tmp,1,itsat-1);
tmp = string.sub(tmp,itsat+1);
else
rows[#rows+1] = tmp;
end
end
local returnItem = {tonumber(rows[1]), tonumber(rows[2]), tonumber(rows[3]), tonumber(rows[4])};
return unpack(returnItem);
end


function tbNpc:Dialog_showItem(iItem, tbItemObj, isVatPhamNgua)
-- local tbOpt = {
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[1]))..".<color>", self.AddNgua, self, iItem[1], tbItemObj, isVatPhamNgua},--
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[2]))..".<color>", self.AddNgua, self, iItem[2], tbItemObj, isVatPhamNgua},--
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[3]))..".<color>", self.AddNgua, self, iItem[3], tbItemObj, isVatPhamNgua},--
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[4]))..".<color>", self.AddNgua, self, iItem[4], tbItemObj, isVatPhamNgua},--
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[5]))..".<color>", self.AddNgua, self, iItem[5], tbItemObj, isVatPhamNgua},--
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[6]))..".<color>", self.AddNgua, self, iItem[6], tbItemObj, isVatPhamNgua},--
-- {"Kết thúc đối thoại"},
-- }
-- local szMsg = "Chọn Ngựa mà bạn muốn lấy.";
-- Dialog:Say(szMsg, tbOpt);
local tbOpt = {};
for i=1, #iItem do
local name = KItem.GetNameById(self:GetItem(iItem[i]));
table.insert(tbOpt , {"<pic=135> <color=green>"..name..".<color>", self.AddNgua, self, iItem[i], tbItemObj, isVatPhamNgua});
end
table.insert(tbOpt , {"Kết thúc đối thoại"});
local szMsg = "Chọn Ngựa mà bạn muốn lấy.";
Dialog:Say(szMsg, tbOpt);

end


function tbNpc:AddNgua(index, tbItemObj, isVatPhamNgua)
me.AddItem(self:GetItem(index));
local szMsg = "Người chơi <color=yellow>"..me.szName.."<color> đã nâng cấp thành công <color=green>"..KItem.GetNameById(self:GetItem(index))..".<color>";
KDialog.NewsMsg(0, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
self:DeleteItem(isVatPhamNgua);
end

function tbNpc:DeleteItem(isVatPhamNgua)
-- xóa vật phẩm
local x = tonumber(isVatPhamNgua[1]);
local y = tonumber(isVatPhamNgua[2]);
for i=1,5 do
me.ConsumeItemInBags(VatPhamCanThiet[x][i], self:GetItem(IdVatPham[i][1]));
end
-- xóa ngựa
me.ConsumeItemInBags(1, self:GetItem(VatPhamCanThiet[x][6][y]));
end

function tbNpc:CheckItemCH(tbItemObj, tbItemCH, tbItemList, isNgua, isCH)
local numItem = 0;
for _, pItem in pairs(tbItemObj) do
local szItem = string.format("%s,%s,%s,%s",pItem[1].nGenre, pItem[1].nDetail, pItem[1].nParticular, pItem[1].nLevel);
if (szItem == tbItemCH[isCH][1]) then
numItem = pItem[1].nCount + numItem;
end
end
if (numItem >= tbItemList[isNgua][isCH]) then
return 0;
else
return (tbItemList[isNgua][isCH] - numItem);
end
end

-- kiem tra item manh ghep ngua
function tbNpc:CheckItemNgua(tbItemObj, tbItemList)
local ThuTu = {};
if (not pItem) then
ThuTu[1] = 0;
end
for _, pItem in pairs(tbItemObj) do
local szItem = string.format("%s,%s,%s,%s",pItem[1].nGenre, pItem[1].nDetail, pItem[1].nParticular, pItem[1].nLevel);
for i = 1, #tbItemList do
local tbI = tbItemList[i][6];
for j = 1, #tbI do
local szItemTmp = tbItemList[i][6][j];
if szItem == szItemTmp then
ThuTu[1] = i;
ThuTu[2] = j;
end
end;
end;
end;
return ThuTu;
end;



cùng script này sao thay vào bản này được mà bản kia báo lỗi này vây.
anh chỉ giúp với
cảm ơn ae


...eServer\script\changeitem\thucuoi\nangcapthucuo i.lua:223: attempt to concatenate local 'name' (a nil value)
stack traceback:
...eServer\script\changeitem\thucuoi\nangcapthucuo i.lua:223: in function 'Dialog_showItem'
...eServer\script\changeitem\thucuoi\nangcapthucuo i.lua:183: in function <...eServer\script\changeitem\thucuoi\nangcapthucuo i.lua:145>
(tail call): ?
[C]: in function 'xpcall'
...\KIEMTHESIEUNHANBANDEP\GameServer\script\lib\li b.lua:406: in function 'CallBack'
...SIEUNHANBANDEP\GameServer\script\lib\dialog_gif t.lua:95: in function <...SIEUNHANBANDEP\GameServer\script\lib\dialog_gif t.lua:85>
(tail call): ?
[C]: in function 'xpcall'
...\KIEMTHESIEUNHANBANDEP\GameServer\script\lib\li b.lua:406: in function 'CallBack'
...EMTHESIEUNHANBANDEP\GameServer\script\lib\dialo g.lua:254: in function <...EMTHESIEUNHANBANDEP\GameServer\script\lib\dialo g.lua:239>

anubisng
11-05-24, 09:42 AM
local tbNpc = Npc:GetClass("nangcapthucuoi");

local IdVatPham = {
[1] = {
[1]=string.format("%s,%s,%s,%s", 18,1,1338,3), --Kim Nguyên Bảo Đại
[2]="Kim Nguyên Bảo Đại",

},
[2] = {
[1]=string.format("%s,%s,%s,%s", 18,1,1636,1), --Mảnh Ngựa
[2]="Mảnh Ngựa",
},
[3] = {
[1]=string.format("%s,%s,%s,%s", 18,1,3028,1), --Thuần Dưỡng Đơn
[2]="Thuần Dưỡng Đơn",
},
[4] = {
[1]=string.format("%s,%s,%s,%s", 18,1,3028,2), --Căn Cốt Đan
[2]="Căn Cốt Đan",
},

[5] = {
[1]=string.format("%s,%s,%s,%s", 18,1,3028,3), --Linh Tê Ngọc
[2]="Linh Tê Ngọc",
},
};


local VatPhamCanThiet = {
[1]= {
[1]=1,
[2]=100,
[3]=100,
[4]=100,
[5]=1,
[6]={
[1]=string.format("%s,%s,%s,%s", 1,12,31,4), --[Tân Thủ] Mã bài (Phiên Vũ)
},
},
[2]= {
[1]=1,
[2]=200,
[3]=200,
[4]=200,
[5]=1,
[6]={
[1]=string.format("%s,%s,%s,%s", 1,12,791,4), --Hành Giả Huyết Minh - Cấp 1
[2]=string.format("%s,%s,%s,%s", 1,12,801,4), --Lạc Đà Xanh Nước Biển - Cấp 1
[3]=string.format("%s,%s,%s,%s", 1,12,811,4), --Lạc Đà Trắng - Cấp 1
[4]=string.format("%s,%s,%s,%s", 1,12,821,4), --Hành Giả Bóng Đêm - Cấp 1
[5]=string.format("%s,%s,%s,%s", 1,12,831,4), --Lạc Đà Xanh Dương - Cấp 1
[6]=string.format("%s,%s,%s,%s", 1,12,841,4), --Tuyết Hồn - Cấp 1
[7]=string.format("%s,%s,%s,%s", 1,12,851,4), --Trường Lâm - Cấp 1
[8]=string.format("%s,%s,%s,%s", 1,12,861,4), --Lăng Thiên - Cấp 1
[9]=string.format("%s,%s,%s,%s", 1,12,871,4), --Trục Nhật - Cấp 1
[10]=string.format("%s,%s,%s,%s", 1,12,881,4), --Ức Vân - Cấp 1
[11]=string.format("%s,%s,%s,%s", 1,12,891,4), --Hãn Huyết Thần Mã - Cấp 1
[12]=string.format("%s,%s,%s,%s", 1,12,901,4), --Hắc Mã Cuồng Chiến - Cấp 1
[13]=string.format("%s,%s,%s,%s", 1,12,911,4), --Bạch Mã Cuồng Chiến - Cấp 1
[14]=string.format("%s,%s,%s,%s", 1,12,921,4), --Hắc Mã Huyết Giác - Cấp 1
[15]=string.format("%s,%s,%s,%s", 1,12,931,4), --Tuyệt Thế Tuyết Vũ - Cấp 1
},
},
[3]= {
[1]=1,
[2]=200,
[3]=200,
[4]=200,
[5]=1,
[6]={
[1] =string.format("%s,%s,%s,%s", 1,12,792,4), --Hành Giả Huyết Minh - Cấp 1
[2] =string.format("%s,%s,%s,%s", 1,12,802,4), --Lạc Đà Xanh Nước Biển - Cấp 1
[3] =string.format("%s,%s,%s,%s", 1,12,812,4), --Lạc Đà Trắng - Cấp 1
[4] =string.format("%s,%s,%s,%s", 1,12,822,4), --Hành Giả Bóng Đêm - Cấp 1
[5] =string.format("%s,%s,%s,%s", 1,12,832,4), --Lạc Đà Xanh Dương - Cấp 1
[6] =string.format("%s,%s,%s,%s", 1,12,842,4), --Tuyết Hồn - Cấp 1
[7] =string.format("%s,%s,%s,%s", 1,12,852,4), --Trường Lâm - Cấp 1
[8] =string.format("%s,%s,%s,%s", 1,12,862,4), --Lăng Thiên - Cấp 1
[9] =string.format("%s,%s,%s,%s", 1,12,872,4), --Trục Nhật - Cấp 1
[10]=string.format("%s,%s,%s,%s", 1,12,882,4), --Ức Vân - Cấp 1
[11]=string.format("%s,%s,%s,%s", 1,12,892,4), --Hãn Huyết Thần Mã - Cấp 1
[12]=string.format("%s,%s,%s,%s", 1,12,902,4), --Hắc Mã Cuồng Chiến - Cấp 1
[13]=string.format("%s,%s,%s,%s", 1,12,912,4), --Bạch Mã Cuồng Chiến - Cấp 1
[14]=string.format("%s,%s,%s,%s", 1,12,922,4), --Hắc Mã Huyết Giác - Cấp 1
[15]=string.format("%s,%s,%s,%s", 1,12,932,4), --Tuyệt Thế Tuyết Vũ - Cấp 1
},
},
[4]= {
[1]=1,
[2]=200,
[3]=200,
[4]=200,
[5]=1,
[6]={
[1]=string.format("%s,%s,%s,%s", 1,12,793,4), --Hành Giả Huyết Minh - Cấp 1
[2]=string.format("%s,%s,%s,%s", 1,12,803,4), --Lạc Đà Xanh Nước Biển - Cấp 1
[3]=string.format("%s,%s,%s,%s", 1,12,813,4), --Lạc Đà Trắng - Cấp 1
[4]=string.format("%s,%s,%s,%s", 1,12,823,4), --Hành Giả Bóng Đêm - Cấp 1
[5]=string.format("%s,%s,%s,%s", 1,12,833,4), --Lạc Đà Xanh Dương - Cấp 1
[6]=string.format("%s,%s,%s,%s", 1,12,843,4), --Tuyết Hồn - Cấp 1
[7]=string.format("%s,%s,%s,%s", 1,12,853,4), --Trường Lâm - Cấp 1
[8]=string.format("%s,%s,%s,%s", 1,12,863,4), --Lăng Thiên - Cấp 1
[9]=string.format("%s,%s,%s,%s", 1,12,873,4), --Trục Nhật - Cấp 1
[10]=string.format("%s,%s,%s,%s", 1,12,883,4), --Ức Vân - Cấp 1
[11]=string.format("%s,%s,%s,%s", 1,12,893,4), --Hãn Huyết Thần Mã - Cấp 1
[12]=string.format("%s,%s,%s,%s", 1,12,903,4), --Hắc Mã Cuồng Chiến - Cấp 1
[13]=string.format("%s,%s,%s,%s", 1,12,913,4), --Bạch Mã Cuồng Chiến - Cấp 1
[14]=string.format("%s,%s,%s,%s", 1,12,923,4), --Hắc Mã Huyết Giác - Cấp 1
[15]=string.format("%s,%s,%s,%s", 1,12,933,4), --Tuyệt Thế Tuyết Vũ - Cấp 1
},
},
[5]= {
[1]=1,
[2]=200,
[3]=200,
[4]=200,
[5]=1,
[6]={
[1]=string.format("%s,%s,%s,%s", 1,12,794,4), --Hành Giả Huyết Minh - Cấp 1
[2]=string.format("%s,%s,%s,%s", 1,12,804,4), --Lạc Đà Xanh Nước Biển - Cấp 1
[3]=string.format("%s,%s,%s,%s", 1,12,814,4), --Lạc Đà Trắng - Cấp 1
[4]=string.format("%s,%s,%s,%s", 1,12,824,4), --Hành Giả Bóng Đêm - Cấp 1
[5]=string.format("%s,%s,%s,%s", 1,12,834,4), --Lạc Đà Xanh Dương - Cấp 1
[6]=string.format("%s,%s,%s,%s", 1,12,844,4), --Tuyết Hồn - Cấp 1
[7]=string.format("%s,%s,%s,%s", 1,12,854,4), --Trường Lâm - Cấp 1
[8]=string.format("%s,%s,%s,%s", 1,12,864,4), --Lăng Thiên - Cấp 1
[9]=string.format("%s,%s,%s,%s", 1,12,874,4), --Trục Nhật - Cấp 1
[10]=string.format("%s,%s,%s,%s", 1,12,884,4), --Ức Vân - Cấp 1
[11]=string.format("%s,%s,%s,%s", 1,12,894,4), --Hãn Huyết Thần Mã - Cấp 1
[12]=string.format("%s,%s,%s,%s", 1,12,904,4), --Hắc Mã Cuồng Chiến - Cấp 1
[13]=string.format("%s,%s,%s,%s", 1,12,914,4), --Bạch Mã Cuồng Chiến - Cấp 1
[14]=string.format("%s,%s,%s,%s", 1,12,924,4), --Hắc Mã Huyết Giác - Cấp 1
[15]=string.format("%s,%s,%s,%s", 1,12,934,4), --Tuyệt Thế Tuyết Vũ - Cấp 1
},
},
};


function tbNpc:OnDialog_1()
local szMsg = "Ta sẽ giúp nhà ngươi ghép Ngựa.";
szMsg = "Vui lòng cho tất cả Vật phẩm cường hóa vào vào.";
Dialog:OpenGift(szMsg, nil, {self.CheckItem, self});
end

function tbNpc:CheckItem(tbItemObj)
local DayDu = 0;
local szMsg = 'Bạn còn thiếu: \n\n';
local isVatPhamNgua_all = self:CheckItemNgua(tbItemObj, VatPhamCanThiet);
local isVatPhamNgua = tonumber(isVatPhamNgua_all[1]);
local isVatPhamNgua_y = tonumber(isVatPhamNgua_all[2]);
-- kiểm tra có vật phẩm cường hóa ngựa không
if (isVatPhamNgua == 0) then
me.Msg("Không có vật phẩm cường hóa Ngựa.");
Dialog:Say("Vui lòng cho vật phẩm cường hóa Ngựa vào để cường hóa.");
return 0;
elseif isVatPhamNgua == 41 then
me.Msg("Ngựa chưa mở cấp tiếp theo.");
Dialog:Say("Ngựa chưa mở cấp tiếp theo.");
return 0;
else
-- check is Rương
local nCount1 = me.GetItemCountInBags(self:GetItem(VatPhamCanThiet[isVatPhamNgua][6][isVatPhamNgua_y]));
if nCount1 == 0 then
Dialog:Say("Bạn phải đặt vật phẩm cường hóa trong rương");
return 0;
end

local HoanThanh = 0;
for i=1,5 do--từ 1 - 5 là số nguyen liệu cần nâng cấp
local isItem = self:CheckItemCH(tbItemObj, IdVatPham, VatPhamCanThiet, isVatPhamNgua, i);
if isItem >= 1 then
szMsg = szMsg.." \t "..tostring(isItem).." "..IdVatPham[i][2]..".\n"; --2 là tên nguyên liệu
else
HoanThanh = HoanThanh +1;
end
end

if HoanThanh < 5 then --nhỏ hơn 5 là k đủ nguyên liệu up cấp mới
Dialog:Say(szMsg);
me.Msg("Cường hóa Ngựa thất bại do thiếu Vật Phẩm.");
else -- đầy đủ cường hóa
--- thêm vật phẩm mới vào
self:Dialog_showItem(VatPhamCanThiet[isVatPhamNgua +1][6], tbItemObj, isVatPhamNgua_all);
end
end
-- kiểm tra các vật phẩm khác
end;

function tbNpc:GetItem(szText)
local rows = {};

local itsat = 0;
local tmp = szText;
while itsat ~= nil do
itsat = string.find(tmp,",",1);
if itsat ~= nil then
rows[#rows+1] = string.sub(tmp,1,itsat-1);
tmp = string.sub(tmp,itsat+1);
else
rows[#rows+1] = tmp;
end
end
local returnItem = {tonumber(rows[1]), tonumber(rows[2]), tonumber(rows[3]), tonumber(rows[4])};
return unpack(returnItem);
end


function tbNpc:Dialog_showItem(iItem, tbItemObj, isVatPhamNgua)
-- local tbOpt = {
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[1]))..".<color>", self.AddNgua, self, iItem[1], tbItemObj, isVatPhamNgua},--
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[2]))..".<color>", self.AddNgua, self, iItem[2], tbItemObj, isVatPhamNgua},--
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[3]))..".<color>", self.AddNgua, self, iItem[3], tbItemObj, isVatPhamNgua},--
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[4]))..".<color>", self.AddNgua, self, iItem[4], tbItemObj, isVatPhamNgua},--
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[5]))..".<color>", self.AddNgua, self, iItem[5], tbItemObj, isVatPhamNgua},--
-- {"<pic=135> <color=green>"..KItem.GetNameById(self:GetItem(iItem[6]))..".<color>", self.AddNgua, self, iItem[6], tbItemObj, isVatPhamNgua},--
-- {"Kết thúc đối thoại"},
-- }
-- local szMsg = "Chọn Ngựa mà bạn muốn lấy.";
-- Dialog:Say(szMsg, tbOpt);
local tbOpt = {};
for i=1, #iItem do
local name = KItem.GetNameById(self:GetItem(iItem[i]));
table.insert(tbOpt , {"<pic=135> <color=green>"..name..".<color>", self.AddNgua, self, iItem[i], tbItemObj, isVatPhamNgua});
end
table.insert(tbOpt , {"Kết thúc đối thoại"});
local szMsg = "Chọn Ngựa mà bạn muốn lấy.";
Dialog:Say(szMsg, tbOpt);

end


function tbNpc:AddNgua(index, tbItemObj, isVatPhamNgua)
me.AddItem(self:GetItem(index));
local szMsg = "Người chơi <color=yellow>"..me.szName.."<color> đã nâng cấp thành công <color=green>"..KItem.GetNameById(self:GetItem(index))..".<color>";
KDialog.NewsMsg(0, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
self:DeleteItem(isVatPhamNgua);
end

function tbNpc:DeleteItem(isVatPhamNgua)
-- xóa vật phẩm
local x = tonumber(isVatPhamNgua[1]);
local y = tonumber(isVatPhamNgua[2]);
for i=1,5 do
me.ConsumeItemInBags(VatPhamCanThiet[x][i], self:GetItem(IdVatPham[i][1]));
end
-- xóa ngựa
me.ConsumeItemInBags(1, self:GetItem(VatPhamCanThiet[x][6][y]));
end

function tbNpc:CheckItemCH(tbItemObj, tbItemCH, tbItemList, isNgua, isCH)
local numItem = 0;
for _, pItem in pairs(tbItemObj) do
local szItem = string.format("%s,%s,%s,%s",pItem[1].nGenre, pItem[1].nDetail, pItem[1].nParticular, pItem[1].nLevel);
if (szItem == tbItemCH[isCH][1]) then
numItem = pItem[1].nCount + numItem;
end
end
if (numItem >= tbItemList[isNgua][isCH]) then
return 0;
else
return (tbItemList[isNgua][isCH] - numItem);
end
end

-- kiem tra item manh ghep ngua
function tbNpc:CheckItemNgua(tbItemObj, tbItemList)
local ThuTu = {};
if (not pItem) then
ThuTu[1] = 0;
end
for _, pItem in pairs(tbItemObj) do
local szItem = string.format("%s,%s,%s,%s",pItem[1].nGenre, pItem[1].nDetail, pItem[1].nParticular, pItem[1].nLevel);
for i = 1, #tbItemList do
local tbI = tbItemList[i][6];
for j = 1, #tbI do
local szItemTmp = tbItemList[i][6][j];
if szItem == szItemTmp then
ThuTu[1] = i;
ThuTu[2] = j;
end
end;
end;
end;
return ThuTu;
end;



cùng script này sao thay vào bản này được mà bản kia báo lỗi này vây.
anh chỉ giúp với
cảm ơn ae


...eServer\script\changeitem\thucuoi\nangcapthucuo i.lua:223: attempt to concatenate local 'name' (a nil value)
stack traceback:
...eServer\script\changeitem\thucuoi\nangcapthucuo i.lua:223: in function 'Dialog_showItem'
...eServer\script\changeitem\thucuoi\nangcapthucuo i.lua:183: in function <...eServer\script\changeitem\thucuoi\nangcapthucuo i.lua:145>
(tail call): ?
[C]: in function 'xpcall'
...\KIEMTHESIEUNHANBANDEP\GameServer\script\lib\li b.lua:406: in function 'CallBack'
...SIEUNHANBANDEP\GameServer\script\lib\dialog_gif t.lua:95: in function <...SIEUNHANBANDEP\GameServer\script\lib\dialog_gif t.lua:85>
(tail call): ?
[C]: in function 'xpcall'
...\KIEMTHESIEUNHANBANDEP\GameServer\script\lib\li b.lua:406: in function 'CallBack'
...EMTHESIEUNHANBANDEP\GameServer\script\lib\dialo g.lua:254: in function <...EMTHESIEUNHANBANDEP\GameServer\script\lib\dialo g.lua:239>

Chưa hiểu sâu thì làm mấy code đơn giản thôi cho dễ hiểu. Ham hố gì mấy code kiểu này. Với chụp hình lỗi thì phải chụp hình 145 trong file .lua thì mọi người mới hiểu dc chứ up kiểu này ai giúp dc =))

sindhand
11-05-24, 08:57 PM
Chưa hiểu sâu thì làm mấy code đơn giản thôi cho dễ hiểu. Ham hố gì mấy code kiểu này. Với chụp hình lỗi thì phải chụp hình 145 trong file .lua thì mọi người mới hiểu dc chứ up kiểu này ai giúp dc =))

dạ cảm ơn b nha. tớ sửa đc r :D