PDA

View Full Version : [JX] Cú pháp hàm check vật phẩm xếp chồng/ share lại NPC đổi, ép trang bị



minhduc_aa
11-02-17, 11:28 PM
Đã lâu không thấy box JX không có phát minh gì mới cho mấy bạn chơi off, ở đây mình nói là chơi off thôi nha. :)) Nên trước tiên mình xin các bạn có kinh nghiệm hoặc các bạn từng thấy file chứa hàm check vật phẩm xếp chồng, dùng để đổi lấy kinh nghiệm, hoặc tiền (nhân với số lượng vật phẩm đó trong bảng giao) thì chia sẻ với mình cú pháp hàm đó với ạ. Vì mình hoạt động phi lợi nhuận nên không có gì bán, cũng không làm thuê cho ai, mà cũng không trả công cho ai cả. Các bạn hảo tâm có thể giúp đỡ. Xin cám ơn.

Vấn đề thứ hai là ở vài bản share cho ae chơi off trước, thì cách ép, nâng cấp, làm lệnh bài, chế tác, đổi lệnh bài lấy lệnh bài cấp cao hơn, hay trùng luyện gì đó, và đổi lấy đồ thường là săn Boss Hoàng kim, hoặc đi phong lăng độ lụm trực tiếp, dựa vào droprate của con boss đó (nếu bản của bạn đang xài có dùng edit của mình). Thì nay mình xin lập một ông NPC Quan thu đổi lệnh bài và code của ổng. Đi kèm là các lệnh bài, túi trang bị, để các bạn bớt phụ thuộc vào lệnh bài admin, nhận bộ trang bị free, chơi off nghịch thì có mục tiêu hơn và bớt ngán hơn. Bạn muốn có đồ, phải xách đao, thương lên đi đánh quái. Đồ free lenhbaiadmin.lua, NPC Chiếm Tâm Tôn Giả chỉ một phần thôi. Sau này mình edit tiếp và bỏ dần những tính năng nhận hỗ trợ có Trang bị. Nếu bạn giỏi có thể tự làm và sáng tạo :) Trân trọng.

Chi tiết như sau:
NPC Quan thu đổi lệnh bài, đặt tại gần Bến tàu Bắc Biện Kinh cho giảm tải ở BLH (tọa độ trong game 238.155)
thêm dòng này vào script/global/addspreadernpc.lua và đồng bộ vào Client:
{697,80,4,37,1912,2480,0," Quan thu ®æi lÖnh bµi ",0,"\\script\\global\\namcung\\namcung_say.lua"},

Chỉnh trong \\script\\global\\namcung\\namcung_say.lua, tại khúc

Include("\\script\\dailogsys\\dailogsay.lua")
Include("\\script\\lib\\awardtemplet.lua")
Include("\\script\\global\\namcung\\namcung_gm.lua")
Include("\\script\\global\\namcung\\namcung_help.lua") và

local tbOpt =
{
{"Hæ trî thu thËp lÖnh bµi vµ ®æi trang bÞ", nacu},
{"Tho¸t"},
}
CreateNewSayEx(szTitle, tbOpt)
end
function nacu()
dialog_main()
end


File namcung_gm.lua (link theo Include viết trên):

IncludeLib("SETTING")
Include("\\script\\dailogsys\\dailogsay.lua")
Include("\\script\\lib\\awardtemplet.lua")
Include("\\script\\global\\fuyuan.lua")
Include("\\script\\missions\\leaguematch\\npc\\officer.lua")
Include("\\script\\lib\\log.lua")
Include("\\script\\lib\\common.lua")
Include("\\script\\global\\namcung\\namcung_help.lua")

function dialog_main()
local szTitle = "<npc>Kiªm hiªp quÇn hïng chiÕn nam h¶i, long tranh hæ ®Êu diÖu Cöu ch©u. Ta vèn lµ sø gi¶ triÒu ®×nh, hoan nghªnh c¸c anh hïng hµo kiÖt."
local tbOpt =
{
{"T­íng Qu©n LÖnh ®æi trang bÞ hiÕm", tql},
{"Gióp ta chÕ t¸c lÖnh bµi trang bÞ", chetac_wantCompose},
{"Tho¸t"},
}
CreateNewSayEx(szTitle, tbOpt)
end

function no()
end

function tql()
local tbDialog =
{
"<dec><npc>Ha ha, ta cßn n¾m gi÷ c«ng thøc chÕ t¹o cùc phÈm Huynh §Ö - H¾c ThÇn - Long T­¬ng - Vò LiÖt, nh©n sÜ giang hå r¸o riÕt truy s¸t.",
"Néi dung c«ng thøc./cttb_Content",
"Ta muèn t¹o trang bÞ./cttb_wantCompose",
"Ta muèn ®æi tiÒn th­ëng./doitienthuong",
"Ta muèn chän lo¹i ¸o Vò LiÖt./chonao",
"KÕt thóc ®èi tho¹i/OnCancel",
}
CreateTaskSay(tbDialog)
end

function chonao()
local tab_Content = {
"Ph¸i Hoa S¬n /hoason",
"Ph¸i ThiÕu L©m /thieulam",
"Thiªn V­¬ng Bang /thienvuong",
"Ngò §éc Gi¸o /ngudoc",
"§­êng M«n /duongmon",
"Nga My ph¸i /ngamy",
"Trang sau /trangsau",
"Th«i ta xin rêi khái /no"
}
Say("Xin chµo <color=yellow>"..GetName().."<color>, h·y lùa chon lo¹i ¸o Vò LiÖt m«n ph¸i cÇn ®æi", getn(tab_Content), tab_Content);
end
function trangsau()
local tab_Content = {
"Thóy Yªn M«n /thuyyen",
"C¸i Bang /caibang",
"Thiªn NhÉn Gi¸o /thiennhan",
"C«n L«n ph¸i /conlon",
"Vâ §ang /vodang",
"Trang tr­íc /chonao",
"Th«i ta xin rêi khái /no",
}
Say("Xin chµo <color=yellow>"..GetName().."<color>, h·y lùa chon lo¹i ¸o Vò LiÖt m«n ph¸i cÇn ®æi", getn(tab_Content), tab_Content);
end

function hoason()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá 24 T­íng Qu©n LÖnh vµo tõng «. Mæi « chØ cÇn tèi thiÓu 01 qu©n lÖnh, tr¸nh hoang phÝ", "submit_hoason", "no")
end

function submit_hoason(nCount)
if (nCount ~= 24) then
Say("Bá vµo sè l­îng kh«ng ®óng 24!", 2, "Xin lçi! Ta sÏ bá l¹i./hoason", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
dohoason();
Msg2Player("§¹i hiÖp ®æi thµnh c«ng <color=yellow> Gi¸p Vò LiÖt<color> ph¸i Hoa S¬n, xin chóc mõng.");
for i=1, nCount do
local nItemIndex = GetGiveItemUnit(i);
local strItem = GetItemName(nItemIndex);
RemoveItemByIndex(nItemIndex)
end
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./hoason", "Ta sÏ quay l¹i sau/no");
end
end
function dohoason()
AddGoldItem(0, 5209)
end
function thieulam()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá 24 T­íng Qu©n LÖnh vµo tõng «. Mæi « chØ cÇn tèi thiÓu 01 qu©n lÖnh, tr¸nh hoang phÝ", "submit_thieulam", "no")
end

function submit_thieulam(nCount)
if (nCount ~= 24) then
Say("Bá vµo sè l­îng kh«ng ®óng 24!", 2, "Xin lçi! Ta sÏ bá l¹i./thieulam", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
dothieulam();
Msg2Player("§¹i hiÖp ®æi thµnh c«ng <color=yellow> Gi¸p Vò LiÖt<color> ph¸i ThiÕu L©m, xin chóc mõng.");
for i=1, nCount do
local nItemIndex = GetGiveItemUnit(i);
local strItem = GetItemName(nItemIndex);
RemoveItemByIndex(nItemIndex)
end
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./thieulam", "Ta sÏ quay l¹i sau/no");
end
end
function dothieulam()
AddGoldItem(0, 5228)
end
function thienvuong()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá 24 T­íng Qu©n LÖnh vµo tõng «. Mæi « chØ cÇn tèi thiÓu 01 qu©n lÖnh, tr¸nh hoang phÝ", "submit_thienvuong", "no")
end

function submit_thienvuong(nCount)
if (nCount ~= 24) then
Say("Bá vµo sè l­îng kh«ng ®óng 24!", 2, "Xin lçi! Ta sÏ bá l¹i./thienvuong", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
dothienvuong();
Msg2Player("§¹i hiÖp ®æi thµnh c«ng <color=yellow> Gi¸p Vò LiÖt<color> Thiªn V­¬ng Bang, xin chóc mõng.");
for i=1, nCount do
local nItemIndex = GetGiveItemUnit(i);
local strItem = GetItemName(nItemIndex);
RemoveItemByIndex(nItemIndex)
end
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./thienvuong", "Ta sÏ quay l¹i sau/no");
end
end
function dothienvuong()
AddGoldItem(0, 5229)
end
function ngudoc()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá 24 T­íng Qu©n LÖnh vµo tõng «. Mæi « chØ cÇn tèi thiÓu 01 qu©n lÖnh, tr¸nh hoang phÝ", "submit_ngudoc", "no")
end

function submit_ngudoc(nCount)
if (nCount ~= 24) then
Say("Bá vµo sè l­îng kh«ng ®óng 24!", 2, "Xin lçi! Ta sÏ bá l¹i./ngudoc", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
dongudoc();
Msg2Player("§¹i hiÖp ®æi thµnh c«ng <color=yellow> Gi¸p Vò LiÖt<color> Ngò §éc Gi¸o, xin chóc mõng.");
for i=1, nCount do
local nItemIndex = GetGiveItemUnit(i);
local strItem = GetItemName(nItemIndex);
RemoveItemByIndex(nItemIndex)
end
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./ngudoc", "Ta sÏ quay l¹i sau/no");
end
end
function dongudoc()
AddGoldItem(0, 5231)
end
function duongmon()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá 24 T­íng Qu©n LÖnh vµo tõng «. Mæi « chØ cÇn tèi thiÓu 01 qu©n lÖnh, tr¸nh hoang phÝ", "submit_duongmon", "no")
end

function submit_duongmon(nCount)
if (nCount ~= 24) then
Say("Bá vµo sè l­îng kh«ng ®óng 24!", 2, "Xin lçi! Ta sÏ bá l¹i./duongmon", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
doduongmon();
Msg2Player("§¹i hiÖp ®æi thµnh c«ng <color=yellow> Gi¸p Vò LiÖt<color> §­êng M«n, xin chóc mõng.");
for i=1, nCount do
local nItemIndex = GetGiveItemUnit(i);
local strItem = GetItemName(nItemIndex);
RemoveItemByIndex(nItemIndex)
end
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./duongmon", "Ta sÏ quay l¹i sau/no");
end
end
function doduongmon()
AddGoldItem(0, 5230)
end
function ngamy()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá 24 T­íng Qu©n LÖnh vµo tõng «. Mæi « chØ cÇn tèi thiÓu 01 qu©n lÖnh, tr¸nh hoang phÝ", "submit_ngamy", "no")
end

function submit_ngamy(nCount)
if (nCount ~= 24) then
Say("Bá vµo sè l­îng kh«ng ®óng 24!", 2, "Xin lçi! Ta sÏ bá l¹i./ngamy", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
dongamy();
Msg2Player("§¹i hiÖp ®æi thµnh c«ng <color=yellow> Gi¸p Vò LiÖt<color> ph¸i Nga My, xin chóc mõng.");
for i=1, nCount do
local nItemIndex = GetGiveItemUnit(i);
local strItem = GetItemName(nItemIndex);
RemoveItemByIndex(nItemIndex)
end
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./ngamy", "Ta sÏ quay l¹i sau/no");
end
end
function dongamy()
AddGoldItem(0, 5232)
end
function thuyyen()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá 24 T­íng Qu©n LÖnh vµo tõng «. Mæi « chØ cÇn tèi thiÓu 01 qu©n lÖnh, tr¸nh hoang phÝ", "submit_thuyyen", "no")
end

function submit_thuyyen(nCount)
if (nCount ~= 24) then
Say("Bá vµo sè l­îng kh«ng ®óng 24!", 2, "Xin lçi! Ta sÏ bá l¹i./thuyyen", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
dothuyyen();
Msg2Player("§¹i hiÖp ®æi thµnh c«ng <color=yellow> Gi¸p Vò LiÖt<color> Thóy Yªn m«n, xin chóc mõng.");
for i=1, nCount do
local nItemIndex = GetGiveItemUnit(i);
local strItem = GetItemName(nItemIndex);
RemoveItemByIndex(nItemIndex)
end
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./thuyyen", "Ta sÏ quay l¹i sau/no");
end
end
function dothuyyen()
AddGoldItem(0, 5233)
end
function caibang()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá 24 T­íng Qu©n LÖnh vµo tõng «. Mæi « chØ cÇn tèi thiÓu 01 qu©n lÖnh, tr¸nh hoang phÝ", "submit_caibang", "no")
end

function submit_caibang(nCount)
if (nCount ~= 24) then
Say("Bá vµo sè l­îng kh«ng ®óng 24!", 2, "Xin lçi! Ta sÏ bá l¹i./caibang", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
docaibang();
Msg2Player("§¹i hiÖp ®æi thµnh c«ng <color=yellow> Gi¸p Vò LiÖt<color> C¸i Bang, xin chóc mõng.");
for i=1, nCount do
local nItemIndex = GetGiveItemUnit(i);
local strItem = GetItemName(nItemIndex);
RemoveItemByIndex(nItemIndex)
end
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./caibang", "Ta sÏ quay l¹i sau/no");
end
end
function docaibang()
AddGoldItem(0, 5234)
end
function thiennhan()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá 24 T­íng Qu©n LÖnh vµo tõng «. Mæi « chØ cÇn tèi thiÓu 01 qu©n lÖnh, tr¸nh hoang phÝ", "submit_thiennhan", "no")
end

function submit_thiennhan(nCount)
if (nCount ~= 24) then
Say("Bá vµo sè l­îng kh«ng ®óng 24!", 2, "Xin lçi! Ta sÏ bá l¹i./thiennhan", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
dothiennhan();
Msg2Player("§¹i hiÖp ®æi thµnh c«ng <color=yellow> Gi¸p Vò LiÖt<color> Thiªn NhÉn Gi¸o, xin chóc mõng.");
for i=1, nCount do
local nItemIndex = GetGiveItemUnit(i);
local strItem = GetItemName(nItemIndex);
RemoveItemByIndex(nItemIndex)
end
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./thiennhan", "Ta sÏ quay l¹i sau/no");
end
end
function dothiennhan()
AddGoldItem(0, 5235)
end
function conlon()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá 24 T­íng Qu©n LÖnh vµo tõng «. Mæi « chØ cÇn tèi thiÓu 01 qu©n lÖnh, tr¸nh hoang phÝ", "submit_conlon", "no")
end

function submit_conlon(nCount)
if (nCount ~= 24) then
Say("Bá vµo sè l­îng kh«ng ®óng 24!", 2, "Xin lçi! Ta sÏ bá l¹i./conlon", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
doconlon();
Msg2Player("§¹i hiÖp ®æi thµnh c«ng <color=yellow> Gi¸p Vò LiÖt<color> ph¸i C«n L«n, xin chóc mõng.");
for i=1, nCount do
local nItemIndex = GetGiveItemUnit(i);
local strItem = GetItemName(nItemIndex);
RemoveItemByIndex(nItemIndex)
end
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./conlon", "Ta sÏ quay l¹i sau/no");
end
end
function doconlon()
AddGoldItem(0, 5237)
end
function vodang()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá 24 T­íng Qu©n LÖnh vµo tõng «. Mæi « chØ cÇn tèi thiÓu 01 qu©n lÖnh, tr¸nh hoang phÝ", "submit_vodang", "no")
end

function submit_vodang(nCount)
if (nCount ~= 24) then
Say("Bá vµo sè l­îng kh«ng ®óng 24!", 2, "Xin lçi! Ta sÏ bá l¹i./vodang", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
dovodang();
Msg2Player("§¹i hiÖp ®æi thµnh c«ng <color=yellow> Gi¸p Vò LiÖt<color> ph¸i Vâ §ang, xin chóc mõng.");
for i=1, nCount do
local nItemIndex = GetGiveItemUnit(i);
local strItem = GetItemName(nItemIndex);
RemoveItemByIndex(nItemIndex)
end
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./vodang", "Ta sÏ quay l¹i sau/no");
end
end
function dovodang()
AddGoldItem(0, 5236)
end

function doitienthuong()
GiveItemUI("Giao T­íng Qu©n LÖnh", "Xin mêi bá T­íng Qu©n LÖnh vµo « bªn d­íi, mçi lÇn mét c¸i duy nhÊt", "submit_doitienthuong", "no")
end

function submit_doitienthuong(nCount)
if (nCount ~= 1) then
Say("Bá vµo sè l­îng kh«ng ®óng 1!", 2, "Xin lçi! Ta sÏ bá l¹i./doitienthuong", "Ta sÏ quay l¹i sau/no")
return
end
local nItemIdx = GetGiveItemUnit(1);
local ng, nd, np = GetItemProp(nItemIdx);
if (ng == 6 and nd == 1 and np == 4660) then
RemoveItemByIndex(nItemIdx);
Earn(2000000);
Msg2Player("Ng­êi nhËn ®­îc <color=yellow>200 v¹n<color> l­îng.");
else
Say("VËt phÈm b¹n ®Ó vµo kh«ng chÝnh x¸c!", 2, "Xin lçi! Ta sÏ bá l¹i./doitienthuong", "Ta sÏ quay l¹i sau/no");
end
end

function chetac_wantCompose()
local tbDialog =
{
"<dec><npc>C¸c vâ l©m nh©n sü khi ®¸nh qu¸i sÏ cã c¬ héi nhÆt ®­îc <color=yellow>Sö dông c¸c lo¹i nguyªn liÖu kh¸c nhau sÏ chÕ t¹o ®­îc trang bÞ kh¸c nhau, ®¹i hiÖp muèn lo¹i nµo?<enter>Kim ¤ LÖnh: 16 Tö M·ng LÖnh+100 MËt ®å thÇn bÝ+20 TQL,500 v¹n.<enter>B¹ch Hæ LÖnh:10 Kim ¤ LÖnh+200 MËt ®å thÇn bÝ+30 TQL,700 v¹n.<enter>XÝch L©n LÖnh: 4 Kim ¤ LÖnh+10 B¹ch Hæ LÖnh+200 MËt ®å thÇn bÝ+30 TQL,1000 v¹n.<enter>Minh Ph­îng LÖnh: 4 B¹ch Hæ LÖnh+8 XÝch L©n LÖnh+300 MËt ®å thÇn bÝ+40 TQL,2000 v¹n.<enter>§»ng Long LÖnh:5 XÝch L©n LÖnh+8 Minh Ph­îng LÖnh+400 MËt ®å thÇn bÝ+40 TQL,3000 v¹n.<enter>Tinh S­¬ng:4 Minh Ph­îng LÖnh+8 §»ng Long LÖnh+400 MËt ®å thÇn bÝ+50 TQL, 5000 v¹n.",
"Ta muèn chÕ t¹o 'Kim ¤ LÖnh'/#chetac_compose([[E]])",
"Ta muèn chÕ t¹o 'B¹ch Hæ LÖnh'/#chetac_compose([[F]])",
"Ta muèn chÕ t¹o 'XÝch L©n LÖnh'/#chetac_compose([[G]])",
"Ta muèn chÕ t¹o 'Minh Ph­îng LÖnh'/#chetac_compose([[H]])",
"Ta muèn chÕ t¹o '§»ng Long LÖnh'/#chetac_compose([[I]])",
"Ta muèn chÕ t¹o 'Tinh S­¬ng Chi B¶o'/#chetac_compose([[J]])",
"Lóc kh¸c quay l¹i/OnCancel"
}
CreateTaskSay(tbDialog)
end
chetac_tbItem =
{
{1, {6,1,2349,1,0,0}, "Kim ¤ LÖnh"},
{1, {6,1,2357,1,0,0}, "B¹ch Hæ LÖnh"},
{1, {6,1,2370,1,0,0}, "XÝch L©n LÖnh"},
{1, {6,1,2371,1,0,0}, "Minh Ph­îng LÖnh"},
{1, {6,1,2372,1,0,0}, "§»ng Long LÖnh"},
{1, {6,1,4369,1,0,0}, "Tinh S­¬ng Chi B¶o"},
}
chetac_tbMaterial =
{
{0, {6,1,2357,nil,nil,nil}, "Tö M·ng LÖnh"},
{0, {6,1,2357,nil,nil,nil}, "Kim ¤ LÖnh"},
{0, {6,1,2357,nil,nil,nil}, "B¹ch Hæ LÖnh"},
{0, {6,1,2349,nil,nil,nil}, "XÝch L©n LÖnh"},
{0, {6,1,2357,nil,nil,nil}, "Minh Ph­îng LÖnh"},
{0, {6,1,2357,nil,nil,nil}, "§»ng Long LÖnh"},
{0, {6,1,196,nil,nil,nil}, "MËt ®å thÇn bÝ"},
{0, {6,1,4660,nil,nil,nil}, "T­íng Qu©n LÖnh"},
}
chetac_Recipe =
{
E = {tbItemList = {16,0,0,0,0,0,100,20}, nMoney = 5000000, tbResult = chetac_tbItem[1]},
F = {tbItemList = {0,10,0,0,0,0,200,30}, nMoney = 7000000, tbResult = chetac_tbItem[2]},
G = {tbItemList = {0,4,10,0,0,0,200,30},nMoney = 10000000, tbResult = chetac_tbItem[3]},
H = {tbItemList = {0,0,4,8,0,0,300,40},nMoney = 20000000, tbResult = chetac_tbItem[4]},
I = {tbItemList = {0,0,0,5,8,0,400,40},nMoney = 30000000, tbResult = chetac_tbItem[5]},
J = {tbItemList = {0,0,0,0,4,8,400,50},nMoney = 50000000, tbResult = chetac_tbItem[6]},
}

function chetac_ComposeConfirm(szSelect)
local tbMaterial = chetac_tbMaterial;
local szMaterialList = nil;
for i=1,getn(tbMaterial) do
tbMaterial[i][1] = chetac_Recipe[szSelect].tbItemList[i];
if tbMaterial[i][1] ~= 0 then
if not szMaterialList then
szMaterialList = format("<color=red>%d<color> <color=yellow>%s<color>",tbMaterial[i][1],tbMaterial[i][3])
else
szMaterialList = format("%s, <color=red>%d<color> <color=yellow>%s<color>",szMaterialList,tbMaterial[i][1],tbMaterial[i][3])
end
end
end
local tbAwardItem = chetac_Recipe[szSelect].tbResult
local nMoney = chetac_Recipe[szSelect].nMoney;

if chetac_CheckMaterial(tbMaterial) ~= 1 then
Say(format("§¹i hiÖp kh«ng cã ®ñ nguyªn liÖu, cÇn ph¶i cã %s míi cã thÓ chÕ t¹o ®­îc.",szMaterialList), 1 , "ThËt ng¹i qu¸, ta sÏ quay l¹i sau./OnCancel")
return 0;
end
if Pay(nMoney) == 0 then
Say(format("Kh«ng ®­îc råi, kh«ng mang theo ®ñ tiÒn, cÇn cã <color=yellow>%d<color> l­îng",nMoney),0)
return 0;
end
if nMoney ~= 0 then
Msg2Player(format("§¹i hiÖp chi tr¶ <color=yellow>%d<color> l­îng",nMoney))
end
if chetac_ConsumeMaterial(tbMaterial) ~= 1 then
Say("ChÕ t¹o thÊt b¹i, mÊt ®i mét sè nguyªn liÖu.",0)
return 0;
end
chetacItem_AddItem(tbAwardItem[3],tbAwardItem[2]);
Say(format("Quan thu thËp: Ha ha, <color=yellow>%s<color> ®· chÕ t¹o thµnh c«ng, h·y nhËn lÊy!",tbAwardItem[3]))
end
function chetac_compose(szSelect)
local tbMaterial = chetac_tbMaterial;
local szMaterialList = nil;
for i=1,getn(tbMaterial) do
tbMaterial[i][1] = chetac_Recipe[szSelect].tbItemList[i];
if tbMaterial[i][1] ~= 0 then
if not szMaterialList then
szMaterialList = format("<color=red>%d<color> <color=yellow>%s<color>",tbMaterial[i][1],tbMaterial[i][3])
else
szMaterialList = format("%s, <color=red>%d<color> <color=yellow>%s<color>",szMaterialList,tbMaterial[i][1],tbMaterial[i][3])
end
end
end
local tbAwardItem = chetac_Recipe[szSelect].tbResult
local nMoney = chetac_Recipe[szSelect].nMoney;
if nMoney ~= 0 then
szMaterialList = format("%s, cÇn ph¶i cã <color=yellow>%d<color> l­îng",szMaterialList,nMoney)
end
local tbNpcSay =
{
format("<dec><npc>ChÕ t¹o <color=yellow>%s<color>, cÇn cã: %s.",tbAwardItem[3],szMaterialList),
format("ChÕ t¹o trang bÞ/#chetac_ComposeConfirm([[%s]])",szSelect),
"§Ó ta chuÈn bÞ ®·/OnCancel",
}
CreateTaskSay(tbNpcSay)
end

function chetac_CheckMaterial(tbMaterial)
for i=1,getn(tbMaterial) do
local tbItem = tbMaterial[i]
local nLevel = tbItem[2][4] or -1
if tbItem[1] > 0 and CalcEquiproomItemCount(tbItem[2][1],tbItem[2][2],tbItem[2][3],nLevel) < tbItem[1] then
return 0;
end
end
return 1;
end

function chetac_ConsumeMaterial(tbMaterial)
for i=1,getn(tbMaterial) do
local tbItem = tbMaterial[i]
local nLevel = tbItem[2][4] or -1
--print(tbItem[1],tbItem[2][1],tbItem[2][2],tbItem[2][3],nLevel)
if tbItem[1] > 0 and ConsumeEquiproomItem(tbItem[1],tbItem[2][1],tbItem[2][2],tbItem[2][3],nLevel) ~= 1 then
return 0;
end
end
return 1;
end

function OnCancel()
end
function chetacItem_AddItem(szItemName,tbItemProp)
local nPropCount = getn(tbItemProp)
if nPropCount == 6 then
AddItem(tbItemProp[1],tbItemProp[2],tbItemProp[3],tbItemProp[4],tbItemProp[5],tbItemProp[6]);
elseif nPropCount == 2 then
AddGoldItem(tbItemProp[1],tbItemProp[2])
end
Msg2Player(format("NhËn ®­îc %s",szItemName))
end

File namcung_help.lua (link theo Include ở namcung_gm.lua):

Include("\\script\\task\\system\\task_string.lua");
Include("\\script\\lib\\basic.lua");

function cttb_Content()
local tbDialog =
{
"<dec><npc><color=red>Vâ L©m TruyÒn Kú<color>, nh©n sÜ phiªu b¹t giang hå thu thËp <color=yellow>T­íng Qu©n LÖnh<color>, MËt ®å thÇn bÝ, B¹ch Hæ LÖnh, Kim ¤ LÖnh.<enter>Sau khi thu thËp ®ñ nguyªn liÖu cã thÓ ®Õn chÕ t¹o <color=yellow>Huynh §Ö-HÆc ThÇn-Long T­¬ng-Vò LiÖt<color> c¸c lo¹i.<enter>",
"Ta hiÓu råi/tql"
}
CreateTaskSay(tbDialog)
end
function cttb_wantCompose()
local tbDialog =
{
"<dec><npc>C¸c vâ l©m nh©n sü khi ®¸nh qu¸i sÏ cã c¬ héi nhÆt ®­îc <color=yellow>Sö dông c¸c lo¹i nguyªn liÖu kh¸c nhau sÏ chÕ t¹o ®­îc trang bÞ kh¸c nhau, ®¹i hiÖp muèn lo¹i nµo?",
"Ta muèn chÕ t¹o 'Tói v¶i trang bÞ Huynh §Ö'/#cttb_compose([[A]])",
"Ta muèn chÕ t¹o 'Tói v¶i trang bÞ H¾c ThÇn'/#cttb_compose([[B]])",
"Ta muèn chÕ t¹o 'Tói v¶i trang bÞ Long T­¬ng'/#cttb_compose([[C]])",
"Ta muèn chÕ t¹o 'Tói v¶i trang bÞ Vò LiÖt '/#cttb_compose([[D]])",
"Lóc kh¸c quay l¹i/OnCancel"
}
CreateTaskSay(tbDialog)
end
cttb_tbItem =
{
{1, {6,1,4661,1,0,0}, "Tói v¶i Trang BÞ Huynh §Ö"},
{1, {6,1,4662,1,0,0}, "Tói v¶i Trang bÞ H¾c ThÇn"},
{1, {6,1,4663,1,0,0}, "Tói v¶i Trang bÞ Long T­¬ng"},
{1, {6,1,4664,1,0,0}, "Tói v¶i Trang bÞ §Ö NhÊt Vò LiÖt"},
}
cttb_tbMaterial =
{
{0, {6,1,2357,nil,nil,nil}, "B¹ch Hæ LÖnh"},
{0, {6,1,2349,nil,nil,nil}, "Kim ¤ LÖnh"},
{0, {6,1,196,nil,nil,nil}, "MËt ®å thÇn bÝ"},
{0, {6,1,4660,nil,nil,nil}, "T­íng Qu©n LÖnh"},
}
cttb_Recipe =
{
A = {tbItemList = {2,4,200,60}, nMoney = 10000000, tbResult = cttb_tbItem[1]},
B = {tbItemList = {3,5,200,80}, nMoney = 20000000, tbResult = cttb_tbItem[2]},
C = {tbItemList = {4,8,400,100},nMoney = 50000000, tbResult = cttb_tbItem[3]},
D = {tbItemList = {6,10,600,120},nMoney = 100000000, tbResult = cttb_tbItem[4]},

}

function cttb_ComposeConfirm(szSelect)
local tbMaterial = cttb_tbMaterial;
local szMaterialList = nil;
for i=1,getn(tbMaterial) do
tbMaterial[i][1] = cttb_Recipe[szSelect].tbItemList[i];
if tbMaterial[i][1] ~= 0 then
if not szMaterialList then
szMaterialList = format("<color=red>%d<color> <color=yellow>%s<color>",tbMaterial[i][1],tbMaterial[i][3])
else
szMaterialList = format("%s, <color=red>%d<color> <color=yellow>%s<color>",szMaterialList,tbMaterial[i][1],tbMaterial[i][3])
end
end
end
local tbAwardItem = cttb_Recipe[szSelect].tbResult
local nMoney = cttb_Recipe[szSelect].nMoney;

if cttb_CheckMaterial(tbMaterial) ~= 1 then
Say(format("§¹i hiÖp kh«ng cã ®ñ nguyªn liÖu, cÇn ph¶i cã %s míi cã thÓ chÕ t¹o ®­îc.",szMaterialList), 1 , "ThËt ng¹i qu¸, ta sÏ quay l¹i sau./OnCancel")
return 0;
end
if Pay(nMoney) == 0 then
Say(format("Kh«ng ®­îc råi, kh«ng mang theo ®ñ tiÒn, cÇn cã <color=yellow>%d<color> l­îng",nMoney),0)
return 0;
end
if nMoney ~= 0 then
Msg2Player(format("§¹i hiÖp chi tr¶ <color=yellow>%d<color> l­îng",nMoney))
end
if cttb_ConsumeMaterial(tbMaterial) ~= 1 then
Say("ChÕ t¹o thÊt b¹i, mÊt ®i mét sè nguyªn liÖu.",0)
return 0;
end
cttbItem_AddItem(tbAwardItem[3],tbAwardItem[2]);
Say(format("Quan thu thËp: Ha ha, <color=yellow>%s<color> ®· chÕ t¹o thµnh c«ng, h·y nhËn lÊy!",tbAwardItem[3]))
end
function cttb_compose(szSelect)
local tbMaterial = cttb_tbMaterial;
local szMaterialList = nil;
for i=1,getn(tbMaterial) do
tbMaterial[i][1] = cttb_Recipe[szSelect].tbItemList[i];
if tbMaterial[i][1] ~= 0 then
if not szMaterialList then
szMaterialList = format("<color=red>%d<color> <color=yellow>%s<color>",tbMaterial[i][1],tbMaterial[i][3])
else
szMaterialList = format("%s, <color=red>%d<color> <color=yellow>%s<color>",szMaterialList,tbMaterial[i][1],tbMaterial[i][3])
end
end
end
local tbAwardItem = cttb_Recipe[szSelect].tbResult
local nMoney = cttb_Recipe[szSelect].nMoney;
if nMoney ~= 0 then
szMaterialList = format("%s, cÇn ph¶i cã <color=yellow>%d<color> l­îng",szMaterialList,nMoney)
end
local tbNpcSay =
{
format("<dec><npc>ChÕ t¹o <color=yellow>%s<color>, cÇn cã: %s.",tbAwardItem[3],szMaterialList),
format("ChÕ t¹o trang bÞ/#cttb_ComposeConfirm([[%s]])",szSelect),
"§Ó ta chuÈn bÞ ®·/OnCancel",
}
CreateTaskSay(tbNpcSay)
end

function cttb_CheckMaterial(tbMaterial)
for i=1,getn(tbMaterial) do
local tbItem = tbMaterial[i]
local nLevel = tbItem[2][4] or -1
if tbItem[1] > 0 and CalcEquiproomItemCount(tbItem[2][1],tbItem[2][2],tbItem[2][3],nLevel) < tbItem[1] then
return 0;
end
end
return 1;
end

function cttb_ConsumeMaterial(tbMaterial)
for i=1,getn(tbMaterial) do
local tbItem = tbMaterial[i]
local nLevel = tbItem[2][4] or -1
--print(tbItem[1],tbItem[2][1],tbItem[2][2],tbItem[2][3],nLevel)
if tbItem[1] > 0 and ConsumeEquiproomItem(tbItem[1],tbItem[2][1],tbItem[2][2],tbItem[2][3],nLevel) ~= 1 then
return 0;
end
end
return 1;
end

function OnCancel()
end
function cttbItem_AddItem(szItemName,tbItemProp)
local nPropCount = getn(tbItemProp)
if nPropCount == 6 then
AddItem(tbItemProp[1],tbItemProp[2],tbItemProp[3],tbItemProp[4],tbItemProp[5],tbItemProp[6]);
elseif nPropCount == 2 then
AddGoldItem(tbItemProp[1],tbItemProp[2])
end
Msg2Player(format("NhËn ®­îc %s",szItemName))
end
Server các bạn nào không có sẵn hai file namcung_gm.lua và namcung_help.lua thì có thể tạo file mới. Và set root 3 file trong folder namcung (chuột phải/Properties/Permissions: tick hết vào 4 cột và 3 hàng Owner, Group, Others, trừ hai ô Set UID và Set GID. Khi đó, Octal là 1777 /Xong bấm OK)
Tạo trang bị mới, mở magicscript.txt bằng Excel, dưới dòng cuối cùng, thêm:

T­íng Qu©n LÖnh 6 1 4660 \spr\item\script\yinpai_haozhao.spr 385 1 1 <color=yellow>LÖnh bµi ®iÒu binh cæ vËt cña Hoµng Phi Hæ. Nh©n sÜ giang hå ra søc thu thËp.<color> 0 1 0 \script\item\noscript.lua 0 1 1 0 0 200 0 0 0 0 0 0 0 0 0
Tói v¶i Trang BÞ Huynh §Ö 6 1 4661 \spr\item\obj_item_mantle.spr 41 1 1 <color=yellow>Bªn trong cã chøa Huynh §Ö ngäc ch©u vµ ngäc trôy cùc phÈm <color> 0 1 0 \script\item\market_pack.lua 0 1 1 0 0 100 0 0 0 0 0 0 0 0 0
Tói v¶i Trang BÞ H¾c ThÇn 6 1 4662 \spr\item\obj_item_mantle.spr 41 1 1 <color=yellow>Bªn trong cã chøa bé H¾c ThÇn cùc phÈm <color> 0 1 0 \script\item\market_pack.lua 0 1 1 0 0 100 0 0 0 0 0 0 0 0 0
Tói v¶i Trang BÞ Long T­¬ng 6 1 4663 \spr\item\obj_item_mantle.spr 41 1 1 <color=yellow>Bªn trong cã chøa bé Long T­¬ng hoµng kim cùc phÈm <color> 0 1 0 \script\item\market_pack.lua 0 1 1 0 0 100 0 0 0 0 0 0 0 0 0
Tói v¶i Trang BÞ §Ö NhÊt Vò LiÖt 6 1 4664 \spr\item\obj_item_mantle.spr 41 1 1 <color=yellow>Bªn trong cã chøa bé chiÕn phÈm Vò LiÖt <color> 0 1 0 \script\item\market_pack.lua 0 1 1 0 0 100 0 0 0 0 0 0 0 0 0

- Bạn có thể thêm trong setting/item/004/magicscript.txt, lưu lại, và lần lượt đồng bộ (copy, đè) vào 003,002,001,000, setting/item, setting, server1/itemexchange_setting/item/004/, server1/rolevalueladder_setting/item/004/, gateway/itemexchange_setting/item/004/, gateway/rolevalueladder_setting/item/004/, và Trong Client: 004,003,002,001,000, setting/item, setting.

File \script\item\market_pack.lua: -- là túi vải chứa trang bị, khi nhấp chuột phải, bạn sẽ nhận được bộ trang bị tương ứng
Dưới dãy if P == ... then
Add gì đó đó
end
thêm vào cái này:
if P == 4661 then -- Huynh De
AddGoldItem (0, 4436)
AddGoldItem (0, 4481)
AddGoldItem (0, 4482)
AddGoldItem (0, 4437)
end
if P == 4662 then -- Hacthan
for i=4833,4837 do
AddGoldItem(0, i)
end
end
if P == 4663 then -- longtuong
AddGoldItem(0, 5198)
AddGoldItem(0, 5199)
AddGoldItem(0, 5200)
AddGoldItem(0, 5201)
AddGoldItem(0, 5202)
AddGoldItem(0, 5219)
AddGoldItem(0, 5221)
AddGoldItem(0, 5226)
AddGoldItem(0, 5227)
end
if P == 4664 then --vuliet
AddGoldItem(0, 5208)
AddGoldItem(0, 5210)
AddGoldItem(0, 5211)
AddGoldItem(0, 5212)
end
end

- Dành cho newbie: Các bạn tra cứu các chỉ số này: ItemGenre, DetailType, ParticularType ở bản của mình để hiểu hơn những gì được viết phía trên:

1. Tướng Quân Lệnh: 6,1,4660
2. Túi vải trang bị huynh đệ: 6,1,4661
3. Túi vải trang bị Hắc Thần: 6,1,4662
4. Túi vải trang bị Long Tương: 6,1,4663
5. Túi vải trang bị Vũ Liệt: 6,1,4664
6. Tinh Sương Chi Bảo: 6,1,4369

Miêu tả ingame là thế này: Tướng Quân Lệnh xin viết tắt là TQL

1. Đổi Túi trang bị Huynh Đệ: cần 2 Bạch Hổ Lệnh, 4 Kim Ô Lệnh, 200 Mật đồ thần bí, 60 TQL, 1000 vạn lượng;
2. Đổi Túi vải trang bị Hắc Thần: 3 Bạch Hổ Lệnh, 5 Kim Ô Lệnh, 200 Mật đồ thần bí, 80 TQL, 2000 vạn lượng;
3. Đổi Túi vải trang bị Long Tương: 4 Bạch Hổ Lệnh, 8 Kim Ô Lệnh, 400 Mật đồ thần bí, 100 TQL, 5000 vạn lượng;
4. Đổi Túi vải trang bị Vũ Liệt (không có áo): 6 Bạch Hổ Lệnh, 10 Kim Ô Lệnh, 600 Mật đồ thần bí, 120 TQL, 10.000 vạn lượng;
5. Đổi áo Vũ Liệt theo hệ phái, gồm cả Hoa Sơn: 24 Tướng Quân Lệnh không xếp chồng, mỗi ô giao 1 TQL.
Chế tạo lệnh bài nhỏ -> cao
6. Kim Ô Lệnh: 16 Tử Mãng Lệnh + 100 Mật đồ thần bí + 20 TQL + 500 vạn
7. Bạch Hổ Lệnh: 10 Kim Ô Lệnh + 200 Mật đồ thần bí + 30 TQL + 700 vạn
8. Xích Lân Lệnh: 4 Kim Ô Lệnh+ 10 Bạch Hổ Lệnh + 200 Mật đồ thần bí + 30 TQL + 1000 vạn
9. Minh Phượng Lệnh: 4 Bạch Hổ Lệnh+ 8 Xích Lân Lệnh + 300 Mật đồ thần bí + 40 TQL + 2000 vạn
10. Đằng Long Lệnh: 5 Xích Lân Lệnh+ 8 Minh Phượng Lệnh + 400 Mật đồ thần bí + 40 TQL + 3000 vạn
11. Tinh Sương Chi bảo: 4 Minh Phượng Lệnh + 8 Đằng Long Lệnh + 400 Mật đồ thần bí + 50 TQL + 5000 vạn
12. Có thể đổi TQL lấy tiền thưởng

Droprate: fix bổ sung đánh quái lụm TQL: Ở đây mình cho quái xanh (map 9x như Trường Bạch Bắc Nam, Mạc Cao Quật, động gì đó...), có tỉ lệ rơi TQL
server1/setting/droprate/goldennpc/90_01234droprate.ini

[Main]
Count=109 (tức là bổ sung 1 loại nữa thay vì 108)
...
...
[109]
Genre=6
Detail=1
Particular=4660
RandRate=6000
Sau đó đồng bộ droprate này vào client, bạn có thể chỉnh sửa cho boss hoàng kim, mạn bắc thảo nguyên, vi sơn đảo, ... bằng cách chỉnh sửa file droprate của chúng, bên cạnh 90_01234droprate.ini

Xong rồi đó.
Khuyết điểm: Do mình không biết hàm check số lượng xếp chồng, nên khi bỏ vào ô giao xếp chồng có 100 cái thì code chỉ hiểu là 1 cái. (nCount =1)
Nên khi xài thì vui lòng tách ra cho đúng số ô, mỗi ô 1 cái, tránh hoang phí nguyên vật liệu.

Linh_JX
12-02-17, 12:21 AM
đức inbox tớ. tớ chỉ cho cậu cái vụ xếp chồng nhé