PDA

View Full Version : [JX] Thêm chức năng dịch chuyển đến nơi boss sát thủ cho Nhiếp Thí Trần



f-fantasy
01-07-22, 10:33 PM
Bước 1: Thêm 2 hàm mở rộng mới. SayEx và FindNpc

SayEx

Tự sắp xếp số lựa chọn trong hội thoại khi số lựa chọn quá nhiều. Ví dụ 20 con boss, 20 dòng lựa chọn, nó tự điều chỉnh 10 lựa chọn rồi đến trang sau 10 lựa chọn
FindNpc

Tìm NPC nào đó thuộc MAP rồi trả về 3 giá trị bao gồm Tọa Độ X, Tọa Độ Y, IDMap. Phục vụ việc tìm NPC rồi phù đến vị trí đó
Cách thực hiện

Cách 1:

Thêm trực tiếp vào file cần sử dụng 2 hàm mở rộng. Cách này đơn giản bởi vì chỉ việc chép code của 2 cái hàm đó vào cuối file LUA cần sử dụng 2 hàm này là xong
Cách 2

Tạo 1 file LUA mới. Với tên funclibex.lua (Bạn đặt tên gì thì tùy). Nằm trong thư mục script (Hoặc đâu đó miễn trong script). Chép code 2 hàm mở rộng vào đó. Rồi muốn sử dụng 2 hàm này thì dùng Include("\\scri[t\\......\\funclibex.lua"). Khuyến khích dùng cách này, bởi các hàm mở rộng còn có thể được sử dụng bởi các file LUA khác nữa (Chỉ cần Include đến file funclibex)

Cụ thể trong bài viết này, tôi tạo funclibex.lua nằm trong script/00ff. Và trong file LUA của Nhiếp Thí Trần tôi Include("\\script\\00ff\\funclibex.lua"). Để sử dụng 2 hàm mở rộng

Code 2 hàm mở rộng

G_PlayerDailogData = {}
function SayEx(nDesc,tbOpt,nSelectPerPage,nPage)
--C¸ch dïng
--local LoiThoai = ""
--local tb = {}
--tinsert(tb,{"Dßng lùa chän",Func,{Value1,Value2}})
--SayEx(LoiThoai,tb) --KhuyÕn c¸o lµ 10 lùa chän cho 1 Page lµ tèi ®a, nhiÒu qu¸ sau khi thªm 2 dßng "Trang tr­íc" vµ "Trang KÕ" sÏ kh«ng hiÓn thÞ hÕt
--Kh«ng cÇn thªm dßng "KÕt thóc ®èi tho¹i" v× nã sÏ tù thªm
if nDesc == "" or nDesc == nil then nDesc = " " end
local nTotalSelect = getn(tbOpt)
if nPage == nil then nPage = 1 end
if nSelectPerPage == nil then nSelectPerPage = 10 end
local nStart = (nPage - 1) * nSelectPerPage + 1
local nEnd = nStart + nSelectPerPage - 1
if nStart > nTotalSelect then
return
end
if nEnd > nTotalSelect then
nEnd = nTotalSelect
end
local tbSayOpt = {}
for i=nStart, nEnd do
tinsert(tbSayOpt,{tbOpt[i][1],tbOpt[i][2],tbOpt[i][3]})
end
if nStart > 1 then
tinsert(tbSayOpt, {"Trang Tr­íc", SayEx, {nDesc,tbOpt,nSelectPerPage, nPage - 1}})
end
if nEnd < nTotalSelect then
tinsert(tbSayOpt, {"Trang Sau ", SayEx, {nDesc,tbOpt,nSelectPerPage, nPage + 1}})
end
tinsert(tbSayOpt, {"KÕt thóc ®èi tho¹i"})
G_PlayerDailogData[PlayerIndex] = tbSayOpt
local tb = {}
for i= 1, getn(tbSayOpt) do
tinsert(tb, tbSayOpt[i][1].. format("/#g_DailogBack(%d)", i))
end
if type(nDesc) == "number" then
Describe(nDesc, getn(tb), tb)
else
TaskSay("<dec>"..nDesc, tb)
end
end
function g_DailogBack(nSelectId, nCount) --Hâ trî hµm SayEx
local tbSayOpt = G_PlayerDailogData[PlayerIndex]
G_PlayerDailogData[PlayerIndex] = nil

if tbSayOpt and tbSayOpt[nSelectId] then
local nParamCount = getn(tbSayOpt[nSelectId])
if nParamCount == 1 then
return
elseif nParamCount == 2 then
local pFun = tbSayOpt[nSelectId][2]
pFun()
elseif nParamCount == 3 then
local pFun = tbSayOpt[nSelectId][2]
local tbParam = tbSayOpt[nSelectId][3]

call(pFun, tbParam)
end
end
end
function FindNpc(nName,nIDMap,nType)
--Hµm nµy sÏ t×m kiÕm 1 NPC nµo ®ã dùa theo tªn vµ ID map
--Sau khi t×m xong hµm sÏ tr¶ vÒ 3 gi¸ trÞ bao gåm 2 gi¸ trÞ to¹ ®é vµ 1 gi¸ trÞ ID cña Map. 2 gi¸ trÞ to¹ ®é vµ ID map nµy cã thÓ dïng ®Ó teleport ®Õn n¬i
--NÕu kh«ng t×m ®­îc th× sÏ tr¶ vÒ 3 gi¸ trÞ lµ 0,0,0
--nType: 1-HiÖn th«ng b¸o kh«ng t×m thÊy npc qua kªnh Msg2Player 0:Kh«ng hiÖn c¸i th«ng b¸o nµo c¶. MÆc ®Þnh lµ 0
if nType == nil then nType = 0 end
NpcIndex = GetMapNpcWithName(nIDMap,nName)
if NpcIndex == nil or NpcIndex == nName then
if nType == 1 then
Msg2Player("<color=green>Kh«ng t×m thÊy NPC cã tªn <color=yellow>"..nName.."<color> t¹i b¶n ®å <color=yellow>"..SubWorldName(SubWorldID2Idx(nIDMap)).."<color>.<color>")
end
return 0,0,0
end
x, y,subworld = GetNpcPos(NpcIndex[1])
m,n,k = floor(x/32),floor(y/32),SubWorldIdx2ID(subworld)
return m,n,k
end

Bước 2: Edit file Nhiếp Thí Trần

\script\task\tollgate\killer\nieshichen.lua
Thêm đoạn sau vào trên cùng file


Include("\\script\\00ff\\funclibex.lua");
Tìm dòng


function havetask()
Thêm vào ngay trước đoạn đó 1 đoạn code

tab_ToaDoBossST = {
-- Tªn boss ph¶i lÊy trong \script\task\tollgate\killbosshead.lua nã míi chuÈn. Vµ FindNpc nã míi cã thÓ t×m thÊy
-- IDMap,ID(Sè dßng)trong killer.txt, tªn boss, tªn map, cÊp ®é boss s¸t thñ
{73,1,"Tr¸c L·nh CÇm","Phôc L­u ®éng",20},
{73,2,"Tiªu Thiªn Ng¹o","Phôc L­u ®éng",20},
{73,3,"Môc Minh KiÖt","Phôc L­u ®éng",20},
{73,4,"TÊt V­u Phãng","Phôc L­u ®éng",20},
{43,5,"Lôc Cöu U","KiÕm C¸c Trung Nguyªn",20},
{43,6,"Bé Hiªu TrÇn","KiÕm C¸c Trung Nguyªn",20},
{43,7,"Cèc KiÕm Thu","KiÕm C¸c Trung Nguyªn",20},
{43,8,"ThiÖu Hoa Dung","KiÕm C¸c Trung Nguyªn",20},
{71,9,"Quan Tö M¹c","B¹ch Thñy ®éng",20},
{71,10,"Bµnh ThÝch H¶i","B¹ch Thñy ®éng",20},
{71,11,"BÝch Phï B×nh","B¹ch Thñy ®éng",20},
{71,12,"Tr­îng L·nh s¬n ","B¹ch Thñy ®éng",20},
{83,13,"Tiªu KiÕm TuyÕt","Háa Lang ®éng",20},
{83,14,"Kha ThiÕu Gia","Háa Lang ®éng",20},
{83,15,"Ch­ëng B¸t Ph­¬ng","Háa Lang ®éng",20},
{83,16,"Méng Êt Phi","Háa Lang ®éng",20},
{14,17,"T­ §å TuyÖt Chñy","M·nh Hæ ®éng",20},
{14,18,"Th­îng Quan L·ng","M·nh Hæ ®éng",20},
{14,19,"D­¬ng Thanh Èn","M·nh Hæ ®éng",20},
{14,20,"Ngôy Chiªm Th©n","M·nh Hæ ®éng",20},
{4,21,"§µo §o¹t Thu","Kim Quang ®éng",30},
{4,22,"Xµ B¸ §«ng","Kim Quang ®éng",30},
{4,23,"L­¬ng T­ Nam ","Kim Quang ®éng",30},
{4,24,"Tr¸c ThÊt Lang","Kim Quang ®éng",30},
{22,25,"KiÒu §Ønh Thiªn","B¹ch V©n ®éng",30},
{22,26,"Träng V« CÊp","B¹ch V©n ®éng",30},
{22,27,"KhÝ CÇm SÜ","B¹ch V©n ®éng",30},
{22,28,"§inh V¨n Dôc","B¹ch V©n ®éng",30},
{77,29,"Phong Ngò Ên","YÕn Tö ®éng",30},
{77,30,"Khang BÊt Hèi","YÕn Tö ®éng",30},
{77,31,"Ph­¬ng Dùc Viªm","YÕn Tö ®éng",30},
{77,32,"Ninh T©m Cuång","YÕn Tö ®éng",30},
{141,33,"H×nh Phô Sinh","D­îc V­¬ng §éng TÇng 1",30},
{141,34,"Ho¾c TrÊn Phi","D­îc V­¬ng §éng TÇng 1",30},
{141,35,"Qu¶n V« YÕm","D­îc V­¬ng §éng TÇng 1",30},
{141,36,"DiÖp VÜnh ¢n","D­îc V­¬ng §éng TÇng 1",30},
{193,37,"¢u chÝ Phong","Vò Di s¬n",30},
{193,38,"§éc C« HiÖp","Vò Di s¬n",30},
{193,39,"H¹ng Phï Nhai","Vò Di s¬n",30},
{193,40,"Nghª §¹i Chu","Vò Di s¬n",30},
{5,41,"Du Th¸n Giang","Kinh Hoµng ®éng",40},
{5,42,"H¹ Hïng Phi","Kinh Hoµng ®éng",40},
{5,43,"Tèng Vò Phong","Kinh Hoµng ®éng",40},
{5,44,"Lé Th­îng Nh©n","Kinh Hoµng ®éng",40},
{168,45,"NhËm T«ng Hoµnh","Phông Nh·n ®éng",40},
{168,46,"Hµn Khanh Long","Phông Nh·n ®éng",40},
{168,47,"Tr× PhÈm Chi","Phông Nh·n ®éng",40},
{168,48,"Chung ThiÕt Thèi","Phông Nh·n ®éng",40},
{23,49,"§iªu DÞch §ao","ThÇn Tiªn ®éng",40},
{23,50,"§å Tµn Sinh","ThÇn Tiªn ®éng",40},
{23,51,"Bµng V« TÜnh","ThÇn Tiªn ®éng",40},
{23,52,"Lý Hoa §é","ThÇn Tiªn ®éng",40},
{91,53,"ThÝch ¶nh Sa","Mª Cung Kª Qu¸n ®éng",40},
{91,54,"Nguy Nh©n Tö ","Mª Cung Kª Qu¸n ®éng",40},
{91,55,"Cè ViÔn Khª","Mª Cung Kª Qu¸n ®éng",40},
{91,56,"Tang Ninh Cèc","Mª Cung Kª Qu¸n ®éng",40},
{135,57,"Diªm Tù H÷u","KiÕn TÝnh Phong s¬n ®éng",40},
{135,58,"§µm Thiªn Béc","KiÕn TÝnh Phong s¬n ®éng",40},
{135,59,"Th¹ch Cè KiÒu","KiÕn TÝnh Phong s¬n ®éng",40},
{135,60,"øng Th¸i HiÖp","KiÕn TÝnh Phong s¬n ®éng",40},
{12,61,"M¹nh §¹p Hång","§Þa §¹o HËu ViÖn TÝn T­íng Tù",50},
{12,62,"¢n Tøc HËn","§Þa §¹o HËu ViÖn TÝn T­íng Tù",50},
{12,63,"Ho¾c Thanh S­¬ng","§Þa §¹o HËu ViÖn TÝn T­íng Tù",50},
{12,64,"Miªn T­ §¹o","§Þa §¹o HËu ViÖn TÝn T­íng Tù",50},
{24,65,"TiÕu Väng Du","H­ëng Thñy ®éng",50},
{24,66,"Cao N·i Kho¸t","H­ëng Thñy ®éng",50},
{24,67,"M¹nh Tö Vò ","H­ëng Thñy ®éng",50},
{24,68,"§­êng NghÜa Chi","H­ëng Thñy ®éng",50},
{42,69,"L©u Vi ThiÖn","Thiªn T©m ®éng",50},
{42,70,"Lç Tranh Tranh","Thiªn T©m ®éng",50},
{42,71,"Sö Tiªu s¬n","Thiªn T©m ®éng",50},
{42,72,"T©y M«n V« Giíi","Thiªn T©m ®éng",50},
{66,73,"Giíi T×nh ChØ","§¸y §éng §×nh Hå TÇng 1",50},
{66,74,"L«i HuyÔn Kh¸ch","§¸y §éng §×nh Hå TÇng 1",50},
{66,75,"DiÖp Ngò Long","§¸y §éng §×nh Hå TÇng 1",50},
{66,76,"TiÕt TiÓu B¸ch","§¸y §éng §×nh Hå TÇng 1",50},
{194,77,"MËu TuÊt Nhung","Ngäc Hoa ®éng",50},
{194,78,"D­¬ng DiÔm Qu©n","Ngäc Hoa ®éng",50},
{194,79,"Du Tiªu C­êng","Ngäc Hoa ®éng",50},
{194,80,"C« Dù TÈu","Ngäc Hoa ®éng",50},
{164,81,"U«ng ThÖ Thñy","Thiªn TÇm Th¸p TÇng 1",60},
{164,82,"YÕn L­u Sanh","Thiªn TÇm Th¸p TÇng 1",60},
{164,83,"Tang Th­¬ng H¶i","Thiªn TÇm Th¸p TÇng 1",60},
{164,84,"Bå ThËp Tam","Thiªn TÇm Th¸p TÇng 1",60},
{117,85,"HËu KhÊt KiÕm","T­êng V©n §éng TÇng 2",60},
{117,86,"HËu YÕn T©n","T­êng V©n §éng TÇng 2",60},
{117,87,"ThiÖu ThÊt S¸t","T­êng V©n §éng TÇng 2",60},
{117,88,"Du V¹n Lý","T­êng V©n §éng TÇng 2",60},
{56,89,"Cõu DuÉn Sam","Hoµnh s¬n ph¸i",60},
{56,90,"Th­îng Quan ChÊt","Hoµnh s¬n ph¸i",60},
{56,91,"T¸i ViÔn B¹c","Hoµnh s¬n ph¸i",60},
{56,92,"T­ëng HuyÒn ViÔn","Hoµnh s¬n ph¸i",60},
{148,93,"KhuÊt Léc Vinh","TuyÕt b¸o ®éng tÇng 4",60},
{148,94,"L« Qu¸n B¾c","TuyÕt b¸o ®éng tÇng 4",60},
{148,95,"Gi¶i Qui Nam","TuyÕt b¸o ®éng tÇng 4",60},
{148,96,"Tïng V« ¶nh","TuyÕt b¸o ®éng tÇng 4",60},
{196,97,"TiÔn Thª Thanh","D­¬ng Gi¸c ®éng",60},
{196,98,"B¹ch Th­¬ng Nham","D­¬ng Gi¸c ®éng",60},
{196,99,"BiÖn L­u ThiÖn","D­¬ng Gi¸c ®éng",60},
{196,100,"Th¸i Tinh ThÇn","D­¬ng Gi¸c ®éng",60},
{123,101,"H¹ng LÖnh Ti","L·o Hæ ®éng",70},
{123,102,"Tµo Nh©n Phñ","L·o Hæ ®éng",70},
{123,103,"Tr×nh Phóc Tam","L·o Hæ ®éng",70},
{123,104,"§Æng An Khuª","L·o Hæ ®éng",70},
{94,105,"øng Tiªu Phong","Linh Cèc ®éng",70},
{94,106,"Th­¬ng TriÒu S­¬ng","Linh Cèc ®éng",70},
{94,107,"Phïng Song Dùc","Linh Cèc ®éng",70},
{94,108,"Phã Kh©u Tu","Linh Cèc ®éng",70},
{319,109,"L¹c Long HiÒn","L©m du quan",70},
{319,110,"Cæ Thanh D­¬ng","L©m du quan",70},
{319,111,"Quan Thiªn VÊn","L©m du quan",70},
{319,112,"H¹ ThiÕu Hïng","L©m du quan",70},
{72,113,"T« Cæ Ng©m","§¹i Tï ®éng",70},
{72,114,"Hå NhÊt Lang","§¹i Tï ®éng",70},
{72,115,"Hoµng V¹n KiÕp","§¹i Tï ®éng",70},
{72,116,"Giang TrÇm Nh¹n","§¹i Tï ®éng",70},
{76,117,"C¶nh Dung Phôc","S¬n B¶o ®éng",70},
{76,118,"Kh­¬ng Tù Dao","S¬n B¶o ®éng",70},
{76,119,"Khæng Dong Nh©n","S¬n B¶o ®éng",70},
{76,120,"L¨ng TËn Trung","S¬n B¶o ®éng",70},
{201,121,"DiÖp øc Anh","B¨ng Hµ ®éng",80},
{201,122,"L¹c NhÜ Kim","B¨ng Hµ ®éng",80},
{201,123,"M¹c Nam Tróc","B¨ng Hµ ®éng",80},
{201,124,"TÇn Tö Du","B¨ng Hµ ®éng",80},
{10,125,"C« V« Th­êng","Nh¹n Th¹ch ®éng",80},
{10,126,"LiÔu Tø Gia","Nh¹n Th¹ch ®éng",80},
{10,127,"Thi §¹i ThiÕu","Nh¹n Th¹ch ®éng",80},
{10,128,"T«n V¨n B­u","Nh¹n Th¹ch ®éng",80},
{202,129,"§ång BÊt Phôc","Phï Dung ®éng",80},
{202,130,"§­êng B¸c V¨n","Phï Dung ®éng",80},
{202,131,"§µo §¶o Chñ ","Phï Dung ®éng",80},
{202,132,"§iÒn V« §¹o","Phï Dung ®éng",80},
{181,133,"Viªn NiÖm TÞch","L­ìng Thñy ®éng",80},
{181,134,"TrÞnh Tr¸c QuÇn","L­ìng Thñy ®éng",80},
{181,135,"Ch­¬ng Nguyªn Sïng","L­ìng Thñy ®éng",80},
{181,136,"T¹ Träng HËu","L­ìng Thñy ®éng",80},
{143,137,"Vu Cöu §å","d­îc v­¬ng ®éng tÇng 3",80},
{143,138,"Viªn Thiªn Thä","d­îc v­¬ng ®éng tÇng 3",80},
{143,139,"Nh¹c Th­îng C«n","d­îc v­¬ng ®éng tÇng 3",80},
{143,140,"Chiªm Phóc V©n","d­îc v­¬ng ®éng tÇng 3",80},
{93,141,"Cæ Giíi Nh©n","TiÕn Cóc ®éng",90},
{93,142,"TrÞnh Cöu NhËt","TiÕn Cóc ®éng",90},
{93,143,"Chu Së B¸","TiÕn Cóc ®éng",90},
{93,144,"Trang Minh Trung","TiÕn Cóc ®éng",90},
{225,145,"Cam ChÝnh C«","Sa M¹c 1",90},
{225,146,"Vò NhÊt ThÕ","Sa M¹c 1",90},
{225,147,"D­¬ng Phong DËt","Sa M¹c 1",90},
{225,148,"Hµ Sinh Vong","Sa M¹c 1",90},
{75,149,"T»ng ChØ O¸n","Kho¶ Lang ®éng",90},
{75,150,"VÖ Biªn Thµnh","Kho¶ Lang ®éng",90},
{75,151,"Cè Thñ §»ng","Kho¶ Lang ®éng",90},
{75,152,"Ch­ C¸t Kinh Hång","Kho¶ Lang ®éng",90},
{321,153,"Phan Ng¹t Nhan","Tr­êng B¹ch S¬n Nam",90},
{321,154,"Liªn Kinh Th¸i","Tr­êng B¹ch S¬n Nam",90},
{321,155,"B¶o TriÖt S¬n","Tr­êng B¹ch S¬n Nam",90},
{321,156,"V¹n Hå Tinh","Tr­êng B¹ch S¬n Nam",90},
{340,157,"Trö Thiªn MÉn","M¹c Cao QuËt",90},
{340,158,"§o¹n L¨ng NguyÖt","M¹c Cao QuËt",90},
{340,159,"T¶ DËt Danh","M¹c Cao QuËt",90},
{340,160,"Nh©m Th­¬ng Khung","M¹c Cao QuËt",90},
}
Chú thích đoạn code

Số đầu tiên là ID cái map boss xuất hiện (Phục vụ cho FindNpc tìm trong map)
Số thứ 2 là ID trong settings\task\tollgate\killer\killer.txt
Cái thứ 3 là tên CHUẨN của boss được add vào map thông qua file \script\task\tollgate\killbosshead.lua
Cái thứ 4 là tên map (Ko dùng đến nhưng lúc mình làm code để tiện theo dõi mình add cả vào
Cái thứ 5 là level của boss. Cho các nhiệm vụ từ 20 tới 90

Tìm đoạn code


function havetask()
if ( UWorld1082 ~= 0 ) then --§· nhËn nhiÖm vô nh­ng ch­a kill boss
--UWorld1082 chÝnh lµ nt_getTask(1082)
Describe(DescLink_NieShiChen..ContentList[13], 1,ContentList[15]);
return 0
end
return 1
end
Thay thế hoàn toàn bằng đoạn code sau

function havetask()
if ( UWorld1082 ~= 0 ) then --®· nhËn nhiÖm vô nh­ng ch­a kill boss
--UWorld1082 chÝnh lµ nt_getTask(1082)
local tb = {}
nX,nY,nMap = FindNpc(tab_ToaDoBossST[UWorld1082][3],tab_ToaDoBossST[UWorld1082][1])
if nX ~= 0 and nY~=0 and nMap~=0 then --con boss cã mÆt ë trªn map
nDesc = DescLink_NieShiChen.." S¸t thñ "..tab_ToaDoBossST[UWorld1082][3].." vÉn cßn sèng, ng­¬i cßn ch­a tiªu diÖt ®­îc h¾n."
tinsert(tb,{"H·y ®­a ta ®Õn ®ã",gotobossst,{nX,nY,nMap}})
else
nDesc = "HiÖn t¹i s¸t thñ "..tab_ToaDoBossST[UWorld1082][3].." ®· lÈn trèn, ng­¬i ph¶i kiªn nhÉn chê tin tøc."
tinsert(tb,{"Ta sÏ trë l¹i sau",Quit})
end
SayEx(nDesc,tb)
return 0
end
return 1
end
Tìm đoạn code tiếp theo

function showboss(row)
Describe(DescLink_NieShiChen..ContentList[16], 12, killertabfile:getCell("BossName",row+1).."/#givetask("..(row+1)..")", killertabfile:getCell("BossName",row+2).."/#givetask("..(row+2)..")", killertabfile:getCell("BossName",row+3).."/#givetask("..(row+3)..")", killertabfile:getCell("BossName",row+4).."/#givetask("..(row+4)..")", killertabfile:getCell("BossName",row+5).."/#givetask("..(row+5)..")", killertabfile:getCell("BossName",row+6).."/#givetask("..(row+6)..")", killertabfile:getCell("BossName",row+7).."/#givetask("..(row+7)..")", killertabfile:getCell("BossName",row+8).."/#givetask("..(row+8)..")", killertabfile:getCell("BossName",row+9).."/#givetask("..(row+9)..")", killertabfile:getCell("BossName",row+10).."/#givetask("..(row+10)..")", "Trang kÕ /#showbossnext("..row..")", ContentList[15]);
end
function showbossnext(row)
Describe(DescLink_NieShiChen..ContentList[16], 12, killertabfile:getCell("BossName",row+11).."/#givetask("..(row+11)..")", killertabfile:getCell("BossName",row+12).."/#givetask("..(row+12)..")", killertabfile:getCell("BossName",row+13).."/#givetask("..(row+13)..")", killertabfile:getCell("BossName",row+14).."/#givetask("..(row+14)..")", killertabfile:getCell("BossName",row+15).."/#givetask("..(row+15)..")", killertabfile:getCell("BossName",row+16).."/#givetask("..(row+16)..")", killertabfile:getCell("BossName",row+17).."/#givetask("..(row+17)..")", killertabfile:getCell("BossName",row+18).."/#givetask("..(row+18)..")", killertabfile:getCell("BossName",row+19).."/#givetask("..(row+19)..")", killertabfile:getCell("BossName",row+20).."/#givetask("..(row+20)..")", "Trang tr­íc/#showboss("..row..")", ContentList[15]);
end
function givetask(taskid)
nt_setTask(1082,taskid);
Describe(DescLink_NieShiChen..killertabfile:getCel l("BossName",taskid)..killertabfile:getCell("BossInfo",taskid), 1, ContentList[15]);
end
Thay thế hoàn toàn bằng đoạn code dưới

function givetask(taskid,nX,nY,nMap)
nt_setTask(1082,taskid);
local nDesc = DescLink_NieShiChen..killertabfile:getCell("BossName",taskid)..killertabfile:getCell("BossInfo",taskid)
local tb = {}
tinsert(tb,{"H·y ®­a ta ®Õn ®ã",gotobossst,{nX,nY,nMap}})
SayEx(nDesc,tb)
end
function gotobossst(nX,nY,nMap)
NewWorld(nMap,nX,nY)
SetFightState(1);
end


Bước 3: Vào game test

Đến Nhiếp Thí Trần nhận nhiệm vụ sát thủ. Ngay sau khi nhận xong nó hiện tiếp menu đưa đến nơi con boss
Nếu ko click vào menu ngay sau khi nhận quest. Nói chuyện lại với Nhiếp Thí Trần. Click vào nhiệm vụ cấp bao nhiêu cũng đc. Nó sẽ thông báo là con boss XXX chưa chết, nó sẽ đưa đến nơi nếu cần.
Nếu con boss đã bị giết (Hoặc lý do nào đó nó ko xuất hiện trên cái map chỉ định) thì nó sẽ ko hiện lên trên danh sách boss để nhận nhiệm vụ.
Lưu ý: Nó phù nhân vật tới đúng vị trí boss. Thế nên cẩn thận chết =))

Kết

Script hoạt động chủ yếu dựa vào hàm FindNpc. Nó tìm 1 Npc dựa vào tên CHUẨN của npc được add vào map. Từ NpcName và MapId thì hàm FindNpc tìm ra tọa độ npc đó. Chúng ta chỉ việc phù tới nơi mà thôi.
Thực ra nó cũng là hàm kiếm NPC mình đã từng viết trong bài tìm đến vị trí của boss hoàng kim share lâu rồi.

trungjx
03-07-22, 07:43 PM
bữa dính lỗi map 20 ko có sát thủ luôn. file add bos st đó nằm đâu mấy bro?

f-fantasy
04-07-22, 04:42 PM
bữa dính lỗi map 20 ko có sát thủ luôn. file add bos st đó nằm đâu mấy bro?

Hình như file này này \script\task\tollgate\killbosshead.lua

trungjx
05-07-22, 07:17 PM
Hình như file này này \script\task\tollgate\killbosshead.lua
tks bro. đã tìm ra :D giờ cấp 30 săn boss rồi đm boom bét

caoboivip
07-07-23, 01:31 AM
Bước 1: Thêm 2 hàm mở rộng mới. SayEx và FindNpc

SayEx

Tự sắp xếp số lựa chọn trong hội thoại khi số lựa chọn quá nhiều. Ví dụ 20 con boss, 20 dòng lựa chọn, nó tự điều chỉnh 10 lựa chọn rồi đến trang sau 10 lựa chọn
FindNpc

Tìm NPC nào đó thuộc MAP rồi trả về 3 giá trị bao gồm Tọa Độ X, Tọa Độ Y, IDMap. Phục vụ việc tìm NPC rồi phù đến vị trí đó
Cách thực hiện

Cách 1:

Thêm trực tiếp vào file cần sử dụng 2 hàm mở rộng. Cách này đơn giản bởi vì chỉ việc chép code của 2 cái hàm đó vào cuối file LUA cần sử dụng 2 hàm này là xong
Cách 2

Tạo 1 file LUA mới. Với tên funclibex.lua (Bạn đặt tên gì thì tùy). Nằm trong thư mục script (Hoặc đâu đó miễn trong script). Chép code 2 hàm mở rộng vào đó. Rồi muốn sử dụng 2 hàm này thì dùng Include("\\scri[t\\......\\funclibex.lua"). Khuyến khích dùng cách này, bởi các hàm mở rộng còn có thể được sử dụng bởi các file LUA khác nữa (Chỉ cần Include đến file funclibex)

Cụ thể trong bài viết này, tôi tạo funclibex.lua nằm trong script/00ff. Và trong file LUA của Nhiếp Thí Trần tôi Include("\\script\\00ff\\funclibex.lua"). Để sử dụng 2 hàm mở rộng

Code 2 hàm mở rộng

G_PlayerDailogData = {}
function SayEx(nDesc,tbOpt,nSelectPerPage,nPage)
--C¸ch dïng
--local LoiThoai = ""
--local tb = {}
--tinsert(tb,{"Dßng lùa chän",Func,{Value1,Value2}})
--SayEx(LoiThoai,tb) --KhuyÕn c¸o lµ 10 lùa chän cho 1 Page lµ tèi ®a, nhiÒu qu¸ sau khi thªm 2 dßng "Trang tr­íc" vµ "Trang KÕ" sÏ kh«ng hiÓn thÞ hÕt
--Kh«ng cÇn thªm dßng "KÕt thóc ®èi tho¹i" v× nã sÏ tù thªm
if nDesc == "" or nDesc == nil then nDesc = " " end
local nTotalSelect = getn(tbOpt)
if nPage == nil then nPage = 1 end
if nSelectPerPage == nil then nSelectPerPage = 10 end
local nStart = (nPage - 1) * nSelectPerPage + 1
local nEnd = nStart + nSelectPerPage - 1
if nStart > nTotalSelect then
return
end
if nEnd > nTotalSelect then
nEnd = nTotalSelect
end
local tbSayOpt = {}
for i=nStart, nEnd do
tinsert(tbSayOpt,{tbOpt[i][1],tbOpt[i][2],tbOpt[i][3]})
end
if nStart > 1 then
tinsert(tbSayOpt, {"Trang Tr­íc", SayEx, {nDesc,tbOpt,nSelectPerPage, nPage - 1}})
end
if nEnd < nTotalSelect then
tinsert(tbSayOpt, {"Trang Sau ", SayEx, {nDesc,tbOpt,nSelectPerPage, nPage + 1}})
end
tinsert(tbSayOpt, {"KÕt thóc ®èi tho¹i"})
G_PlayerDailogData[PlayerIndex] = tbSayOpt
local tb = {}
for i= 1, getn(tbSayOpt) do
tinsert(tb, tbSayOpt[i][1].. format("/#g_DailogBack(%d)", i))
end
if type(nDesc) == "number" then
Describe(nDesc, getn(tb), tb)
else
TaskSay("<dec>"..nDesc, tb)
end
end
function g_DailogBack(nSelectId, nCount) --Hâ trî hµm SayEx
local tbSayOpt = G_PlayerDailogData[PlayerIndex]
G_PlayerDailogData[PlayerIndex] = nil

if tbSayOpt and tbSayOpt[nSelectId] then
local nParamCount = getn(tbSayOpt[nSelectId])
if nParamCount == 1 then
return
elseif nParamCount == 2 then
local pFun = tbSayOpt[nSelectId][2]
pFun()
elseif nParamCount == 3 then
local pFun = tbSayOpt[nSelectId][2]
local tbParam = tbSayOpt[nSelectId][3]

call(pFun, tbParam)
end
end
end
function FindNpc(nName,nIDMap,nType)
--Hµm nµy sÏ t×m kiÕm 1 NPC nµo ®ã dùa theo tªn vµ ID map
--Sau khi t×m xong hµm sÏ tr¶ vÒ 3 gi¸ trÞ bao gåm 2 gi¸ trÞ to¹ ®é vµ 1 gi¸ trÞ ID cña Map. 2 gi¸ trÞ to¹ ®é vµ ID map nµy cã thÓ dïng ®Ó teleport ®Õn n¬i
--NÕu kh«ng t×m ®­îc th× sÏ tr¶ vÒ 3 gi¸ trÞ lµ 0,0,0
--nType: 1-HiÖn th«ng b¸o kh«ng t×m thÊy npc qua kªnh Msg2Player 0:Kh«ng hiÖn c¸i th«ng b¸o nµo c¶. MÆc ®Þnh lµ 0
if nType == nil then nType = 0 end
NpcIndex = GetMapNpcWithName(nIDMap,nName)
if NpcIndex == nil or NpcIndex == nName then
if nType == 1 then
Msg2Player("<color=green>Kh«ng t×m thÊy NPC cã tªn <color=yellow>"..nName.."<color> t¹i b¶n ®å <color=yellow>"..SubWorldName(SubWorldID2Idx(nIDMap)).."<color>.<color>")
end
return 0,0,0
end
x, y,subworld = GetNpcPos(NpcIndex[1])
m,n,k = floor(x/32),floor(y/32),SubWorldIdx2ID(subworld)
return m,n,k
end

Bước 2: Edit file Nhiếp Thí Trần

\script\task\tollgate\killer\nieshichen.lua
Thêm đoạn sau vào trên cùng file


Include("\\script\\00ff\\funclibex.lua");
Tìm dòng


function havetask()
Thêm vào ngay trước đoạn đó 1 đoạn code

tab_ToaDoBossST = {
-- Tªn boss ph¶i lÊy trong \script\task\tollgate\killbosshead.lua nã míi chuÈn. Vµ FindNpc nã míi cã thÓ t×m thÊy
-- IDMap,ID(Sè dßng)trong killer.txt, tªn boss, tªn map, cÊp ®é boss s¸t thñ
{73,1,"Tr¸c L·nh CÇm","Phôc L­u ®éng",20},
{73,2,"Tiªu Thiªn Ng¹o","Phôc L­u ®éng",20},
{73,3,"Môc Minh KiÖt","Phôc L­u ®éng",20},
{73,4,"TÊt V­u Phãng","Phôc L­u ®éng",20},
{43,5,"Lôc Cöu U","KiÕm C¸c Trung Nguyªn",20},
{43,6,"Bé Hiªu TrÇn","KiÕm C¸c Trung Nguyªn",20},
{43,7,"Cèc KiÕm Thu","KiÕm C¸c Trung Nguyªn",20},
{43,8,"ThiÖu Hoa Dung","KiÕm C¸c Trung Nguyªn",20},
{71,9,"Quan Tö M¹c","B¹ch Thñy ®éng",20},
{71,10,"Bµnh ThÝch H¶i","B¹ch Thñy ®éng",20},
{71,11,"BÝch Phï B×nh","B¹ch Thñy ®éng",20},
{71,12,"Tr­îng L·nh s¬n ","B¹ch Thñy ®éng",20},
{83,13,"Tiªu KiÕm TuyÕt","Háa Lang ®éng",20},
{83,14,"Kha ThiÕu Gia","Háa Lang ®éng",20},
{83,15,"Ch­ëng B¸t Ph­¬ng","Háa Lang ®éng",20},
{83,16,"Méng Êt Phi","Háa Lang ®éng",20},
{14,17,"T­ §å TuyÖt Chñy","M·nh Hæ ®éng",20},
{14,18,"Th­îng Quan L·ng","M·nh Hæ ®éng",20},
{14,19,"D­¬ng Thanh Èn","M·nh Hæ ®éng",20},
{14,20,"Ngôy Chiªm Th©n","M·nh Hæ ®éng",20},
{4,21,"§µo §o¹t Thu","Kim Quang ®éng",30},
{4,22,"Xµ B¸ §«ng","Kim Quang ®éng",30},
{4,23,"L­¬ng T­ Nam ","Kim Quang ®éng",30},
{4,24,"Tr¸c ThÊt Lang","Kim Quang ®éng",30},
{22,25,"KiÒu §Ønh Thiªn","B¹ch V©n ®éng",30},
{22,26,"Träng V« CÊp","B¹ch V©n ®éng",30},
{22,27,"KhÝ CÇm SÜ","B¹ch V©n ®éng",30},
{22,28,"§inh V¨n Dôc","B¹ch V©n ®éng",30},
{77,29,"Phong Ngò Ên","YÕn Tö ®éng",30},
{77,30,"Khang BÊt Hèi","YÕn Tö ®éng",30},
{77,31,"Ph­¬ng Dùc Viªm","YÕn Tö ®éng",30},
{77,32,"Ninh T©m Cuång","YÕn Tö ®éng",30},
{141,33,"H×nh Phô Sinh","D­îc V­¬ng §éng TÇng 1",30},
{141,34,"Ho¾c TrÊn Phi","D­îc V­¬ng §éng TÇng 1",30},
{141,35,"Qu¶n V« YÕm","D­îc V­¬ng §éng TÇng 1",30},
{141,36,"DiÖp VÜnh ¢n","D­îc V­¬ng §éng TÇng 1",30},
{193,37,"¢u chÝ Phong","Vò Di s¬n",30},
{193,38,"§éc C« HiÖp","Vò Di s¬n",30},
{193,39,"H¹ng Phï Nhai","Vò Di s¬n",30},
{193,40,"Nghª §¹i Chu","Vò Di s¬n",30},
{5,41,"Du Th¸n Giang","Kinh Hoµng ®éng",40},
{5,42,"H¹ Hïng Phi","Kinh Hoµng ®éng",40},
{5,43,"Tèng Vò Phong","Kinh Hoµng ®éng",40},
{5,44,"Lé Th­îng Nh©n","Kinh Hoµng ®éng",40},
{168,45,"NhËm T«ng Hoµnh","Phông Nh·n ®éng",40},
{168,46,"Hµn Khanh Long","Phông Nh·n ®éng",40},
{168,47,"Tr× PhÈm Chi","Phông Nh·n ®éng",40},
{168,48,"Chung ThiÕt Thèi","Phông Nh·n ®éng",40},
{23,49,"§iªu DÞch §ao","ThÇn Tiªn ®éng",40},
{23,50,"§å Tµn Sinh","ThÇn Tiªn ®éng",40},
{23,51,"Bµng V« TÜnh","ThÇn Tiªn ®éng",40},
{23,52,"Lý Hoa §é","ThÇn Tiªn ®éng",40},
{91,53,"ThÝch ¶nh Sa","Mª Cung Kª Qu¸n ®éng",40},
{91,54,"Nguy Nh©n Tö ","Mª Cung Kª Qu¸n ®éng",40},
{91,55,"Cè ViÔn Khª","Mª Cung Kª Qu¸n ®éng",40},
{91,56,"Tang Ninh Cèc","Mª Cung Kª Qu¸n ®éng",40},
{135,57,"Diªm Tù H÷u","KiÕn TÝnh Phong s¬n ®éng",40},
{135,58,"§µm Thiªn Béc","KiÕn TÝnh Phong s¬n ®éng",40},
{135,59,"Th¹ch Cè KiÒu","KiÕn TÝnh Phong s¬n ®éng",40},
{135,60,"øng Th¸i HiÖp","KiÕn TÝnh Phong s¬n ®éng",40},
{12,61,"M¹nh §¹p Hång","§Þa §¹o HËu ViÖn TÝn T­íng Tù",50},
{12,62,"¢n Tøc HËn","§Þa §¹o HËu ViÖn TÝn T­íng Tù",50},
{12,63,"Ho¾c Thanh S­¬ng","§Þa §¹o HËu ViÖn TÝn T­íng Tù",50},
{12,64,"Miªn T­ §¹o","§Þa §¹o HËu ViÖn TÝn T­íng Tù",50},
{24,65,"TiÕu Väng Du","H­ëng Thñy ®éng",50},
{24,66,"Cao N·i Kho¸t","H­ëng Thñy ®éng",50},
{24,67,"M¹nh Tö Vò ","H­ëng Thñy ®éng",50},
{24,68,"§­êng NghÜa Chi","H­ëng Thñy ®éng",50},
{42,69,"L©u Vi ThiÖn","Thiªn T©m ®éng",50},
{42,70,"Lç Tranh Tranh","Thiªn T©m ®éng",50},
{42,71,"Sö Tiªu s¬n","Thiªn T©m ®éng",50},
{42,72,"T©y M«n V« Giíi","Thiªn T©m ®éng",50},
{66,73,"Giíi T×nh ChØ","§¸y §éng §×nh Hå TÇng 1",50},
{66,74,"L«i HuyÔn Kh¸ch","§¸y §éng §×nh Hå TÇng 1",50},
{66,75,"DiÖp Ngò Long","§¸y §éng §×nh Hå TÇng 1",50},
{66,76,"TiÕt TiÓu B¸ch","§¸y §éng §×nh Hå TÇng 1",50},
{194,77,"MËu TuÊt Nhung","Ngäc Hoa ®éng",50},
{194,78,"D­¬ng DiÔm Qu©n","Ngäc Hoa ®éng",50},
{194,79,"Du Tiªu C­êng","Ngäc Hoa ®éng",50},
{194,80,"C« Dù TÈu","Ngäc Hoa ®éng",50},
{164,81,"U«ng ThÖ Thñy","Thiªn TÇm Th¸p TÇng 1",60},
{164,82,"YÕn L­u Sanh","Thiªn TÇm Th¸p TÇng 1",60},
{164,83,"Tang Th­¬ng H¶i","Thiªn TÇm Th¸p TÇng 1",60},
{164,84,"Bå ThËp Tam","Thiªn TÇm Th¸p TÇng 1",60},
{117,85,"HËu KhÊt KiÕm","T­êng V©n §éng TÇng 2",60},
{117,86,"HËu YÕn T©n","T­êng V©n §éng TÇng 2",60},
{117,87,"ThiÖu ThÊt S¸t","T­êng V©n §éng TÇng 2",60},
{117,88,"Du V¹n Lý","T­êng V©n §éng TÇng 2",60},
{56,89,"Cõu DuÉn Sam","Hoµnh s¬n ph¸i",60},
{56,90,"Th­îng Quan ChÊt","Hoµnh s¬n ph¸i",60},
{56,91,"T¸i ViÔn B¹c","Hoµnh s¬n ph¸i",60},
{56,92,"T­ëng HuyÒn ViÔn","Hoµnh s¬n ph¸i",60},
{148,93,"KhuÊt Léc Vinh","TuyÕt b¸o ®éng tÇng 4",60},
{148,94,"L« Qu¸n B¾c","TuyÕt b¸o ®éng tÇng 4",60},
{148,95,"Gi¶i Qui Nam","TuyÕt b¸o ®éng tÇng 4",60},
{148,96,"Tïng V« ¶nh","TuyÕt b¸o ®éng tÇng 4",60},
{196,97,"TiÔn Thª Thanh","D­¬ng Gi¸c ®éng",60},
{196,98,"B¹ch Th­¬ng Nham","D­¬ng Gi¸c ®éng",60},
{196,99,"BiÖn L­u ThiÖn","D­¬ng Gi¸c ®éng",60},
{196,100,"Th¸i Tinh ThÇn","D­¬ng Gi¸c ®éng",60},
{123,101,"H¹ng LÖnh Ti","L·o Hæ ®éng",70},
{123,102,"Tµo Nh©n Phñ","L·o Hæ ®éng",70},
{123,103,"Tr×nh Phóc Tam","L·o Hæ ®éng",70},
{123,104,"§Æng An Khuª","L·o Hæ ®éng",70},
{94,105,"øng Tiªu Phong","Linh Cèc ®éng",70},
{94,106,"Th­¬ng TriÒu S­¬ng","Linh Cèc ®éng",70},
{94,107,"Phïng Song Dùc","Linh Cèc ®éng",70},
{94,108,"Phã Kh©u Tu","Linh Cèc ®éng",70},
{319,109,"L¹c Long HiÒn","L©m du quan",70},
{319,110,"Cæ Thanh D­¬ng","L©m du quan",70},
{319,111,"Quan Thiªn VÊn","L©m du quan",70},
{319,112,"H¹ ThiÕu Hïng","L©m du quan",70},
{72,113,"T« Cæ Ng©m","§¹i Tï ®éng",70},
{72,114,"Hå NhÊt Lang","§¹i Tï ®éng",70},
{72,115,"Hoµng V¹n KiÕp","§¹i Tï ®éng",70},
{72,116,"Giang TrÇm Nh¹n","§¹i Tï ®éng",70},
{76,117,"C¶nh Dung Phôc","S¬n B¶o ®éng",70},
{76,118,"Kh­¬ng Tù Dao","S¬n B¶o ®éng",70},
{76,119,"Khæng Dong Nh©n","S¬n B¶o ®éng",70},
{76,120,"L¨ng TËn Trung","S¬n B¶o ®éng",70},
{201,121,"DiÖp øc Anh","B¨ng Hµ ®éng",80},
{201,122,"L¹c NhÜ Kim","B¨ng Hµ ®éng",80},
{201,123,"M¹c Nam Tróc","B¨ng Hµ ®éng",80},
{201,124,"TÇn Tö Du","B¨ng Hµ ®éng",80},
{10,125,"C« V« Th­êng","Nh¹n Th¹ch ®éng",80},
{10,126,"LiÔu Tø Gia","Nh¹n Th¹ch ®éng",80},
{10,127,"Thi §¹i ThiÕu","Nh¹n Th¹ch ®éng",80},
{10,128,"T«n V¨n B­u","Nh¹n Th¹ch ®éng",80},
{202,129,"§ång BÊt Phôc","Phï Dung ®éng",80},
{202,130,"§­êng B¸c V¨n","Phï Dung ®éng",80},
{202,131,"§µo §¶o Chñ ","Phï Dung ®éng",80},
{202,132,"§iÒn V« §¹o","Phï Dung ®éng",80},
{181,133,"Viªn NiÖm TÞch","L­ìng Thñy ®éng",80},
{181,134,"TrÞnh Tr¸c QuÇn","L­ìng Thñy ®éng",80},
{181,135,"Ch­¬ng Nguyªn Sïng","L­ìng Thñy ®éng",80},
{181,136,"T¹ Träng HËu","L­ìng Thñy ®éng",80},
{143,137,"Vu Cöu §å","d­îc v­¬ng ®éng tÇng 3",80},
{143,138,"Viªn Thiªn Thä","d­îc v­¬ng ®éng tÇng 3",80},
{143,139,"Nh¹c Th­îng C«n","d­îc v­¬ng ®éng tÇng 3",80},
{143,140,"Chiªm Phóc V©n","d­îc v­¬ng ®éng tÇng 3",80},
{93,141,"Cæ Giíi Nh©n","TiÕn Cóc ®éng",90},
{93,142,"TrÞnh Cöu NhËt","TiÕn Cóc ®éng",90},
{93,143,"Chu Së B¸","TiÕn Cóc ®éng",90},
{93,144,"Trang Minh Trung","TiÕn Cóc ®éng",90},
{225,145,"Cam ChÝnh C«","Sa M¹c 1",90},
{225,146,"Vò NhÊt ThÕ","Sa M¹c 1",90},
{225,147,"D­¬ng Phong DËt","Sa M¹c 1",90},
{225,148,"Hµ Sinh Vong","Sa M¹c 1",90},
{75,149,"T»ng ChØ O¸n","Kho¶ Lang ®éng",90},
{75,150,"VÖ Biªn Thµnh","Kho¶ Lang ®éng",90},
{75,151,"Cè Thñ §»ng","Kho¶ Lang ®éng",90},
{75,152,"Ch­ C¸t Kinh Hång","Kho¶ Lang ®éng",90},
{321,153,"Phan Ng¹t Nhan","Tr­êng B¹ch S¬n Nam",90},
{321,154,"Liªn Kinh Th¸i","Tr­êng B¹ch S¬n Nam",90},
{321,155,"B¶o TriÖt S¬n","Tr­êng B¹ch S¬n Nam",90},
{321,156,"V¹n Hå Tinh","Tr­êng B¹ch S¬n Nam",90},
{340,157,"Trö Thiªn MÉn","M¹c Cao QuËt",90},
{340,158,"§o¹n L¨ng NguyÖt","M¹c Cao QuËt",90},
{340,159,"T¶ DËt Danh","M¹c Cao QuËt",90},
{340,160,"Nh©m Th­¬ng Khung","M¹c Cao QuËt",90},
}
Chú thích đoạn code

Số đầu tiên là ID cái map boss xuất hiện (Phục vụ cho FindNpc tìm trong map)
Số thứ 2 là ID trong settings\task\tollgate\killer\killer.txt
Cái thứ 3 là tên CHUẨN của boss được add vào map thông qua file \script\task\tollgate\killbosshead.lua
Cái thứ 4 là tên map (Ko dùng đến nhưng lúc mình làm code để tiện theo dõi mình add cả vào
Cái thứ 5 là level của boss. Cho các nhiệm vụ từ 20 tới 90

Tìm đoạn code


function havetask()
if ( UWorld1082 ~= 0 ) then --§· nhËn nhiÖm vô nh­ng ch­a kill boss
--UWorld1082 chÝnh lµ nt_getTask(1082)
Describe(DescLink_NieShiChen..ContentList[13], 1,ContentList[15]);
return 0
end
return 1
end
Thay thế hoàn toàn bằng đoạn code sau

function havetask()
if ( UWorld1082 ~= 0 ) then --®· nhËn nhiÖm vô nh­ng ch­a kill boss
--UWorld1082 chÝnh lµ nt_getTask(1082)
local tb = {}
nX,nY,nMap = FindNpc(tab_ToaDoBossST[UWorld1082][3],tab_ToaDoBossST[UWorld1082][1])
if nX ~= 0 and nY~=0 and nMap~=0 then --con boss cã mÆt ë trªn map
nDesc = DescLink_NieShiChen.." S¸t thñ "..tab_ToaDoBossST[UWorld1082][3].." vÉn cßn sèng, ng­¬i cßn ch­a tiªu diÖt ®­îc h¾n."
tinsert(tb,{"H·y ®­a ta ®Õn ®ã",gotobossst,{nX,nY,nMap}})
else
nDesc = "HiÖn t¹i s¸t thñ "..tab_ToaDoBossST[UWorld1082][3].." ®· lÈn trèn, ng­¬i ph¶i kiªn nhÉn chê tin tøc."
tinsert(tb,{"Ta sÏ trë l¹i sau",Quit})
end
SayEx(nDesc,tb)
return 0
end
return 1
end
Tìm đoạn code tiếp theo

function showboss(row)
Describe(DescLink_NieShiChen..ContentList[16], 12, killertabfile:getCell("BossName",row+1).."/#givetask("..(row+1)..")", killertabfile:getCell("BossName",row+2).."/#givetask("..(row+2)..")", killertabfile:getCell("BossName",row+3).."/#givetask("..(row+3)..")", killertabfile:getCell("BossName",row+4).."/#givetask("..(row+4)..")", killertabfile:getCell("BossName",row+5).."/#givetask("..(row+5)..")", killertabfile:getCell("BossName",row+6).."/#givetask("..(row+6)..")", killertabfile:getCell("BossName",row+7).."/#givetask("..(row+7)..")", killertabfile:getCell("BossName",row+8).."/#givetask("..(row+8)..")", killertabfile:getCell("BossName",row+9).."/#givetask("..(row+9)..")", killertabfile:getCell("BossName",row+10).."/#givetask("..(row+10)..")", "Trang kÕ /#showbossnext("..row..")", ContentList[15]);
end
function showbossnext(row)
Describe(DescLink_NieShiChen..ContentList[16], 12, killertabfile:getCell("BossName",row+11).."/#givetask("..(row+11)..")", killertabfile:getCell("BossName",row+12).."/#givetask("..(row+12)..")", killertabfile:getCell("BossName",row+13).."/#givetask("..(row+13)..")", killertabfile:getCell("BossName",row+14).."/#givetask("..(row+14)..")", killertabfile:getCell("BossName",row+15).."/#givetask("..(row+15)..")", killertabfile:getCell("BossName",row+16).."/#givetask("..(row+16)..")", killertabfile:getCell("BossName",row+17).."/#givetask("..(row+17)..")", killertabfile:getCell("BossName",row+18).."/#givetask("..(row+18)..")", killertabfile:getCell("BossName",row+19).."/#givetask("..(row+19)..")", killertabfile:getCell("BossName",row+20).."/#givetask("..(row+20)..")", "Trang tr­íc/#showboss("..row..")", ContentList[15]);
end
function givetask(taskid)
nt_setTask(1082,taskid);
Describe(DescLink_NieShiChen..killertabfile:getCel l("BossName",taskid)..killertabfile:getCell("BossInfo",taskid), 1, ContentList[15]);
end
Thay thế hoàn toàn bằng đoạn code dưới

function givetask(taskid,nX,nY,nMap)
nt_setTask(1082,taskid);
local nDesc = DescLink_NieShiChen..killertabfile:getCell("BossName",taskid)..killertabfile:getCell("BossInfo",taskid)
local tb = {}
tinsert(tb,{"H·y ®­a ta ®Õn ®ã",gotobossst,{nX,nY,nMap}})
SayEx(nDesc,tb)
end
function gotobossst(nX,nY,nMap)
NewWorld(nMap,nX,nY)
SetFightState(1);
end


Bước 3: Vào game test

Đến Nhiếp Thí Trần nhận nhiệm vụ sát thủ. Ngay sau khi nhận xong nó hiện tiếp menu đưa đến nơi con boss
Nếu ko click vào menu ngay sau khi nhận quest. Nói chuyện lại với Nhiếp Thí Trần. Click vào nhiệm vụ cấp bao nhiêu cũng đc. Nó sẽ thông báo là con boss XXX chưa chết, nó sẽ đưa đến nơi nếu cần.
Nếu con boss đã bị giết (Hoặc lý do nào đó nó ko xuất hiện trên cái map chỉ định) thì nó sẽ ko hiện lên trên danh sách boss để nhận nhiệm vụ.
Lưu ý: Nó phù nhân vật tới đúng vị trí boss. Thế nên cẩn thận chết =))

Kết

Script hoạt động chủ yếu dựa vào hàm FindNpc. Nó tìm 1 Npc dựa vào tên CHUẨN của npc được add vào map. Từ NpcName và MapId thì hàm FindNpc tìm ra tọa độ npc đó. Chúng ta chỉ việc phù tới nơi mà thôi.
Thực ra nó cũng là hàm kiếm NPC mình đã từng viết trong bài tìm đến vị trí của boss hoàng kim share lâu rồi.

Mình đã làm thử cho bản 6.0 , đến lúc vô npc bấm vào dòng nhận nv boss st nó kg ra tên boss là bị gì vậy bạn ơi !