PDA

View Full Version : [JX] ai giúp mình script này với



pleichim
02-12-17, 12:26 AM
TB_Material = {
--1.ÎïÆ·Ãû 2.ÊýÁ¿

["6,1,1221"] = "GiÊy kiÕng lam (VËt liÖu lµm lång ®Ìn) ",mình muốn tăng số lượng vật phẩm này
["6,1,1222"] = "GiÊy kiÕng vµng (VËt liÖu lµm lång ®Ìn)",

}

function BaiBaoXiang_Get1(nItemCount)
if GetCash() < 1000000 then
Msg2Player("<color=cyan>B¹n kh«ng cã 10.000 V¹n..<color>")
return
end;
-- 0,10,8 lµ phi v©n , 0,10,6 lµ b«n tiªu , 0,10,5 lµ chiÕu d¹ (ngùa 8x)


local tb_enhanceitem_count = {};
for szkey, tb_item in TB_Material do
tb_enhanceitem_count[szkey] = {};
tb_enhanceitem_count[szkey][1] = 0;
end
--¼ì²âÎïÆ·Æ¥Åä
for i = 1, nItemCount do
local nCurItemIdx = GetGiveItemUnit(i);
local nCurItemName = GetItemName(nCurItemIdx);
local nCurItemQuality = GetItemQuality(nCurItemIdx);
local tbCurItemProp = pack(GetItemProp(nCurItemIdx));

local szItemKey = tbCurItemProp[1]..","..tbCurItemProp[2]..","..tbCurItemProp[3];


if (TB_Material[szItemKey] == nil) then
Msg2Player("<color=cyan>Nguyªn liÖu bá vµo kh«ng ®óng..<color>")
return
end
tb_enhanceitem_count[szItemKey][1] = tb_enhanceitem_count[szItemKey][1] + GetItemStackCount(nCurItemIdx);
end

for szkey, tb_item in TB_Material do
if (tb_enhanceitem_count[szkey][1] ~= 1) then
Msg2Player("<color=cyan>Nguyªn liÖu bá vµo kh«ng ®óng..<color>")
return
end
end

--ɾ²ÄÁÏ
for i=1, nItemCount do
local nIdx = GetGiveItemUnit(i)
if (RemoveItemByIndex(nIdx) ~= 1) then
--WriteLog(format("[GuoQing2007_BaiBaoXiang]Date:%s\t Account:%s\t Name:%s\t DelItemFail:%s",GetLocalDate("%Y-%m-%d %H:%M:%S"),GetAccount(),GetName(),GetItemName(GetGiveItemUn it(i)) ));
return
end
end


Msg2Player("§¹i hiÖp <color=yellow>"..GetName().."<color> n©ng cÊp thµnh c«ng <color=gold>Phi V©n<color>");
Pay(100000000)
AddItem(0,10,9,0,0,0)
WriteLog(format("[GuoQing2007_BaiBaoXiang]\t Date:%s\t Account:%s\t Name:%s\t Effect:Get BaiBaoXiang",GetLocalDate("%y-%m-%d %H:%M:%S"),GetAccount(),GetName()));
end

function pack(...)
return arg
end


mình muốn tăng số lượng đưa vào thì chỉnh chỗ nào vậy

pleichim
02-12-17, 03:45 PM
TB_Material = {
--1.ÎïÆ·Ãû 2.ÊýÁ¿

["6,1,1221"] = "GiÊy kiÕng lam (VËt liÖu lµm lång ®Ìn) ",mình muốn tăng số lượng vật phẩm này
["6,1,1222"] = "GiÊy kiÕng vµng (VËt liÖu lµm lång ®Ìn)",

}

function BaiBaoXiang_Get1(nItemCount)
if GetCash() < 1000000 then
Msg2Player("<color=cyan>B¹n kh«ng cã 10.000 V¹n..<color>")
return
end;
-- 0,10,8 lµ phi v©n , 0,10,6 lµ b«n tiªu , 0,10,5 lµ chiÕu d¹ (ngùa 8x)


local tb_enhanceitem_count = {};
for szkey, tb_item in TB_Material do
tb_enhanceitem_count[szkey] = {};
tb_enhanceitem_count[szkey][1] = 0;
end
--¼ì²âÎïÆ·Æ¥Åä
for i = 1, nItemCount do
local nCurItemIdx = GetGiveItemUnit(i);
local nCurItemName = GetItemName(nCurItemIdx);
local nCurItemQuality = GetItemQuality(nCurItemIdx);
local tbCurItemProp = pack(GetItemProp(nCurItemIdx));

local szItemKey = tbCurItemProp[1]..","..tbCurItemProp[2]..","..tbCurItemProp[3];


if (TB_Material[szItemKey] == nil) then
Msg2Player("<color=cyan>Nguyªn liÖu bá vµo kh«ng ®óng..<color>")
return
end
tb_enhanceitem_count[szItemKey][1] = tb_enhanceitem_count[szItemKey][1] + GetItemStackCount(nCurItemIdx);
end

for szkey, tb_item in TB_Material do
if (tb_enhanceitem_count[szkey][1] ~= 1) then
Msg2Player("<color=cyan>Nguyªn liÖu bá vµo kh«ng ®óng..<color>")
return
end
end

--ɾ²ÄÁÏ
for i=1, nItemCount do
local nIdx = GetGiveItemUnit(i)
if (RemoveItemByIndex(nIdx) ~= 1) then
--WriteLog(format("[GuoQing2007_BaiBaoXiang]Date:%s\t Account:%s\t Name:%s\t DelItemFail:%s",GetLocalDate("%Y-%m-%d %H:%M:%S"),GetAccount(),GetName(),GetItemName(GetGiveItemUn it(i)) ));
return
end
end


Msg2Player("§¹i hiÖp <color=yellow>"..GetName().."<color> n©ng cÊp thµnh c«ng <color=gold>Phi V©n<color>");
Pay(100000000)
AddItem(0,10,9,0,0,0)
WriteLog(format("[GuoQing2007_BaiBaoXiang]\t Date:%s\t Account:%s\t Name:%s\t Effect:Get BaiBaoXiang",GetLocalDate("%y-%m-%d %H:%M:%S"),GetAccount(),GetName()));
end

function pack(...)
return arg
end


mình muốn tăng số lượng đưa vào thì chỉnh chỗ nào vậy
Help meeeeeeeeeeeeeeeeeeeeeeeee

thaihoa91
02-12-17, 07:53 PM
Mình bỏ code lâu rồi nên chỉ có thể gợi ý cho bạn khả năng nó nằm ở đoạn màu đỏ đậm mà mình đã làm dấu, biến szkey, ở đoạn đó là mảng 2 chiều (nếu bạn có học qua viết code chắc sẽ biết mảng 1 chiều và 2 chiều là gì). Đoạn đó nó check số lượng của item. Mình chỉ có thể hướng dẫn tới đó. Bạn có thể tìm hiểu thêm để edit số lượng theo ý của bạn.




TB_Material = {
--1.ÎïÆ·Ãû 2.ÊýÁ¿

["6,1,1221"] = "GiÊy kiÕng lam (VËt liÖu lµm lång ®Ìn) ",mình muốn tăng số lượng vật phẩm này
["6,1,1222"] = "GiÊy kiÕng vµng (VËt liÖu lµm lång ®Ìn)",

}

function BaiBaoXiang_Get1(nItemCount)
if GetCash() < 1000000 then
Msg2Player("<color=cyan>B¹n kh«ng cã 10.000 V¹n..<color>")
return
end;
-- 0,10,8 lµ phi v©n , 0,10,6 lµ b«n tiªu , 0,10,5 lµ chiÕu d¹ (ngùa 8x)


local tb_enhanceitem_count = {};
for szkey, tb_item in TB_Material do
tb_enhanceitem_count[szkey] = {};
tb_enhanceitem_count[szkey][1] = 0;
end
--¼ì²âÎïÆ·Æ¥Åä
for i = 1, nItemCount do
local nCurItemIdx = GetGiveItemUnit(i);
local nCurItemName = GetItemName(nCurItemIdx);
local nCurItemQuality = GetItemQuality(nCurItemIdx);
local tbCurItemProp = pack(GetItemProp(nCurItemIdx));

local szItemKey = tbCurItemProp[1]..","..tbCurItemProp[2]..","..tbCurItemProp[3];


if (TB_Material[szItemKey] == nil) then
Msg2Player("<color=cyan>Nguyªn liÖu bá vµo kh«ng ®óng..<color>")
return
end
tb_enhanceitem_count[szItemKey][1] = tb_enhanceitem_count[szItemKey][1] + GetItemStackCount(nCurItemIdx);
end

for szkey, tb_item in TB_Material do
if (tb_enhanceitem_count[szkey][1] ~= 1) then
Msg2Player("<color=cyan>Nguyªn liÖu bá vµo kh«ng ®óng..<color>")
return
end
end

--ɾ²ÄÁÏ
for i=1, nItemCount do
local nIdx = GetGiveItemUnit(i)
if (RemoveItemByIndex(nIdx) ~= 1) then
--WriteLog(format("[GuoQing2007_BaiBaoXiang]Date:%s\t Account:%s\t Name:%s\t DelItemFail:%s",GetLocalDate("%Y-%m-%d %H:%M:%S"),GetAccount(),GetName(),GetItemName(GetGiveItemUn it(i)) ));
return
end
end


Msg2Player("§¹i hiÖp <color=yellow>"..GetName().."<color> n©ng cÊp thµnh c«ng <color=gold>Phi V©n<color>");
Pay(100000000)
AddItem(0,10,9,0,0,0)
WriteLog(format("[GuoQing2007_BaiBaoXiang]\t Date:%s\t Account:%s\t Name:%s\t Effect:Get BaiBaoXiang",GetLocalDate("%y-%m-%d %H:%M:%S"),GetAccount(),GetName()));
end

function pack(...)
return arg
end

pleichim
02-12-17, 08:04 PM
Mình bỏ code lâu rồi nên chỉ có thể gợi ý cho bạn khả năng nó nằm ở đoạn màu đỏ đậm mà mình đã làm dấu, biến szkey, ở đoạn đó là mảng 2 chiều (nếu bạn có học qua viết code chắc sẽ biết mảng 1 chiều và 2 chiều là gì). Đoạn đó nó check số lượng của item. Mình chỉ có thể hướng dẫn tới đó. Bạn có thể tìm hiểu thêm để edit số lượng theo ý của bạn.




TB_Material = {
--1.ÎïÆ·Ãû 2.ÊýÁ¿

["6,1,1221"] = "GiÊy kiÕng lam (VËt liÖu lµm lång ®Ìn) ",mình muốn tăng số lượng vật phẩm này
["6,1,1222"] = "GiÊy kiÕng vµng (VËt liÖu lµm lång ®Ìn)",

}

function BaiBaoXiang_Get1(nItemCount)
if GetCash() < 1000000 then
Msg2Player("<color=cyan>B¹n kh«ng cã 10.000 V¹n..<color>")
return
end;
-- 0,10,8 lµ phi v©n , 0,10,6 lµ b«n tiªu , 0,10,5 lµ chiÕu d¹ (ngùa 8x)


local tb_enhanceitem_count = {};
for szkey, tb_item in TB_Material do
tb_enhanceitem_count[szkey] = {};
tb_enhanceitem_count[szkey][1] = 0;
end
--¼ì²âÎïÆ·Æ¥Åä
for i = 1, nItemCount do
local nCurItemIdx = GetGiveItemUnit(i);
local nCurItemName = GetItemName(nCurItemIdx);
local nCurItemQuality = GetItemQuality(nCurItemIdx);
local tbCurItemProp = pack(GetItemProp(nCurItemIdx));

local szItemKey = tbCurItemProp[1]..","..tbCurItemProp[2]..","..tbCurItemProp[3];


if (TB_Material[szItemKey] == nil) then
Msg2Player("<color=cyan>Nguyªn liÖu bá vµo kh«ng ®óng..<color>")
return
end
tb_enhanceitem_count[szItemKey][1] = tb_enhanceitem_count[szItemKey][1] + GetItemStackCount(nCurItemIdx);
end

for szkey, tb_item in TB_Material do
if (tb_enhanceitem_count[szkey][1] ~= 1) then
Msg2Player("<color=cyan>Nguyªn liÖu bá vµo kh«ng ®óng..<color>")
return
end
end

--ɾ²ÄÁÏ
for i=1, nItemCount do
local nIdx = GetGiveItemUnit(i)
if (RemoveItemByIndex(nIdx) ~= 1) then
--WriteLog(format("[GuoQing2007_BaiBaoXiang]Date:%s\t Account:%s\t Name:%s\t DelItemFail:%s",GetLocalDate("%Y-%m-%d %H:%M:%S"),GetAccount(),GetName(),GetItemName(GetGiveItemUn it(i)) ));
return
end
end


Msg2Player("§¹i hiÖp <color=yellow>"..GetName().."<color> n©ng cÊp thµnh c«ng <color=gold>Phi V©n<color>");
Pay(100000000)
AddItem(0,10,9,0,0,0)
WriteLog(format("[GuoQing2007_BaiBaoXiang]\t Date:%s\t Account:%s\t Name:%s\t Effect:Get BaiBaoXiang",GetLocalDate("%y-%m-%d %H:%M:%S"),GetAccount(),GetName()));
end

function pack(...)
return arg
end



thank bác,em làm như bác thì nó tăng tất cả các item trong TB_Material, cái em muốn là tăng độc lập 1 item thì làm sao hả bác,giúp nốt em di :))

thaihoa91
02-12-17, 08:08 PM
thank bác,em làm như bác thì nó tăng tất cả các item trong TB_Material, cái em muốn là tăng độc lập 1 item thì làm sao hả bác,giúp nốt em di :))

Đó là mảng 2 chiều, mình chỉ hướng dẫn tới đó thôi, vì là vòng lặp for nếu thay số 1 thành 2 thì sẽ thành điều kiện mỗi item đều phải có số lượng là 2, mảng 2 chiều chạy từ đầu danh sách item đến cuối danh sách item, cái bạn cần là nắm kiến thức mảng 2 chiều để xử lý. Mình đưa cho bạn cần câu và mồi rồi, việc còn lại của bạn là học cách câu cá. Câu được cá hay không là do ở bạn thôi.

pleichim
02-12-17, 08:38 PM
Đó là mảng 2 chiều, mình chỉ hướng dẫn tới đó thôi, vì là vòng lặp for nếu thay số 1 thành 2 thì sẽ thành điều kiện mỗi item đều phải có số lượng là 2, mảng 2 chiều chạy từ đầu danh sách item đến cuối danh sách item, cái bạn cần là nắm kiến thức mảng 2 chiều để xử lý. Mình đưa cho bạn cần câu và mồi rồi, việc còn lại của bạn là học cách câu cá. Câu được cá hay không là do ở bạn thôi.

em là newbie nên mấy phần đó k rõ, chỉ bít mấy cái cơ bản, chủ yếu la coppy paste, anh rãnh giứp em tí

thaihoa91
02-12-17, 09:32 PM
em là newbie nên mấy phần đó k rõ, chỉ bít mấy cái cơ bản, chủ yếu la coppy paste, anh rãnh giứp em tí


Giáo trình tự học C và C++ bạn có thể tìm kiếm từ google <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> và <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>

hoivegame
05-12-17, 09:58 AM
if (tb_enhanceitem_count[szkey][1] ~= 1) then
Msg2Player("<color=cyan>Nguyªn liÖu bá vµo kh«ng ®óng..<color>")
return
end



Đây là chỗ bạn có thể dùng để check số lượng vật phẩm cần (hiện tại số lượng quy định là 1). Còn làm sao thì tự tìm hỉu đi nhé.<:-P

rcproset
05-12-17, 03:05 PM
Không hiểu ông nào code đoạn này mà tù tội thế. Nhìn code tưởng pro lắm hóa ra là vẽ rắn thêm chân.=)) Sao ko tự code lại cho nhanh. Cả đoạn code trên chắc chỉ gói gọn trong tầm 15-20 dòng code đơn giản nếu tối ưu tốt.

assaa
05-12-17, 04:56 PM
Không hiểu ông nào code đoạn này mà tù tội thế. Nhìn code tưởng pro lắm hóa ra là vẽ rắn thêm chân.=)) Sao ko tự code lại cho nhanh. Cả đoạn code trên chắc chỉ gói gọn trong tầm 15-20 dòng code đơn giản nếu tối ưu tốt.

Tự code lại dễ hiểu sau này dễ chỉnh sửa. Cơ mà bỏ jx lâu rồi nhìn vô thấy cũng loạn