ken07
02-02-12, 09:19 AM
callboss = 0 ---- Các biến sữ dụng
taoboss = 0 ---
gio_boss_hk = {{12,00},{12,30},{24,00},{24,30}} -- Giờ xuất hiện Boss
TD_BOSS_HOANGKIM = --Khai báo Array Boss HK theo cấu trúc
{
{"Vuong Ta",739,95,341,0,"Mac Bac Thao Nguyen"},
-- Tên Boss ID LV IDM Tên Map
{"Huyen Giac Dai Su",740,95,322,0,"Truong Bach Son Bac"},
{"Duong Bat Nhiem",741,95,340,1,"Mac Cao Quat"},
{"Bach Doanh Doanh",742,95,336,1,"Phong Lang Do"},
{"Thanh Tuyet Su Thai",743,95,341,2,"Mac Bac Thao Nguyen"},
{"Yen Hien Trai",744,95,336,2,"Phong Lang Do"},
{"Ha Nhan Nga",745,95,321,3,"Truong Bach Son Nam"},
{"Don Tu Nam",746,95,341,4,"Mac Bac Thao Nguyen"},
{"Tuyen Co Tu",747,95,321,4,"Truong Bach Son Nam"},
{"Han Mong",748,95,342,1,"Tay Son Dao"}
}
TD_THANHTHI =
{
{"Tuong Duong",78,174,190,212,209,210,221},
-- Tên TT ID X1 Y1 X2 Y2 X3 Y3
{"Thanh Do",11,374,302,419,320,375,328},
{"Phuong Tuong ",1,177,204,225,191,229,213},
{"Dai Ly",162,225,207,223,186,165,196},
{"Duong Chau ",80,202,180,193,210},
{"Lam An ",176,154,209,150,192,140,168},
{"Bien Kinh",37,200,176,252,175,222,212}
}
function OnTimer()
gio = tonumber(date("%H"))
phut = tonumber(date("%M"))
for i = 1,getn(gio_boss_hk) do
if gio == gio_boss_hk[i][1] and phut == gio_boss_hk[i][2] then
callbosshk() -- Gọi Boss
break
elseif gio == gio_boss_hk[i][1] and phut == gio_boss_hk[i][2] + 15 then
delboss() Xóa Boss
end
end
end
function callbosshk()
if callboss <= 3 then
k = random(1,2) -- Radom sự xuất hiện của Boss
if k == 1 then --ko phai o thanh căn cứ vào Array TD_BOSS_HOANGKIM
i = random(1,10) -- Ông này lại chơi trò hên zui đây
for x = 1,100 do -- Cái nỳ cốt là để kiểm tra sự tồn tại của map
if SubWorldID2Idx(TD_BOSS_HOANGKIM[i][4]) ~= -1 then
-- Nếu map tồn tại thì thoát khỏi FOR
break --Thoát khỏi vòng lặp While..do..end, For..do..end, Do..Until ,....
elseif SubWorldID2Idx(TD_BOSS_HOANGKIM[i][4]) == -1 and x < 100 then
i = random(1,10)
--Nếu map hiện tại ở TD_BOSS_HOANGKIM[i][4] không tồn tại thì Sock giá trị i lại 1 lần ở đây khong sữ dụng break vì vòng lặp sẽ típ tục lập với i mới
elseif x == 100 then
i = 0
break
-- Tất cả các map điều ko tồn tại thì thoát khỏi lặp và ko xuất hiện Boss
end
end
if i ~= 0 then --- như tui nói
bossname = TD_BOSS_HOANGKIM[i][1]
bossid = TD_BOSS_HOANGKIM[i][2]
bosslvl = TD_BOSS_HOANGKIM[i][3]
mapname = TD_BOSS_HOANGKIM[i][6]
mapidx = SubWorldID2Idx(TD_BOSS_HOANGKIM[i][4])
mapidx = SubWorldID2Idx(TD_BOSS_HOANGKIM[i][4])
posx = random(200,300)*8 -- Tọa độ random >''<
posy = random(200,300)*16
else
return
end
else --xuat hien tai thanh thi
t = random(1,7)
i = random(1,10)
j = random(1,3)
for x = 1,100 do
if SubWorldID2Idx(TD_THANHTHI[t][2]) ~= -1 then
break
elseif SubWorldID2Idx(TD_THANHTHI[t][2]) == -1 and x < 100 then
t = random(1,7)
elseif x == 100 then
t = 0
end
end -- Giống như trên
if t ~= 0 then
bossname = TD_BOSS_HOANGKIM[i][1]
bossid = TD_BOSS_HOANGKIM[i][2]
bosslvl = TD_BOSS_HOANGKIM[i][3]
mapname = TD_THANHTHI[t][1]
mapidx = SubWorldID2Idx(TD_THANHTHI[t][2])
posx = TD_THANHTHI[t][2*j+1]*8*32
-- phần tử j sẽ có giá trị từ 1-3 từ đó nếu lấy j*2+1 sẽ cho ra phần tử có số của vị trí là lẻ và đó chính là X của chúng ta
-- {"Tuong Duong",78,174,190,212,209,210,221}
-- Ex : j = 1 => j*2+1 = 3 Đó là 174 ^^ hiểu
posy = TD_THANHTHI[t][j*2 + 2]*16*32
-- phần tử j sẽ có giá trị từ 1-3 từ đó nếu lấy j*2+2 sẽ cho ra phần tử có số của vị trí là chẳn và đó chính là X của chúng ta
-- {"Tuong Duong",78,174,190,212,209,210,221}
-- Ex : j = 1 => j*2+2 = 4 Đó là 190 ^^ hiểu
else
return
end
end
if callboss == 0 then mỗi lần gọi boss sẽ có 4 con và 4 con này sẽ ở những chỗ rất cách biệt cách dùng hàm Biến = AddNpc để sử dụng DelNpc ^^ ! Hiểu ??
boss_hk1 = AddNpc(bossid, bosslvl, mapidx, posx, posy, 1, bossname, 1)
SetNpcScript(boss_hk1,"\\script\\mapdeath\\mapluye nhk.lua"); -- Set Death cho quái khi chết thì chạy đến chổ nỳ
AddGlobalCountNews("Nghe noi "..bossname.." da xuat hien o "..mapname.."",1)
callboss = 1
elseif callboss == 1 then
boss_hk2 = AddNpc(bossid, bosslvl, mapidx, posx, posy, 1, bossname, 1)
SetNpcScript(boss_hk2,"\\script\\mapdeath\\mapluye nhk.lua");
AddGlobalCountNews("Nghe noi "..bossname.." da xuat hien o "..mapname.."",1)
callboss = 2
elseif callboss == 2 then
boss_hk3 = AddNpc(bossid, bosslvl, mapidx, posx, posy, 1, bossname, 1)
SetNpcScript(boss_hk3,"\\script\\mapdeath\\mapluye nhk.lua");
AddGlobalCountNews("Nghe noi "..bossname.." da xuat hien o "..mapname.."",1)
callboss = 3
elseif callboss == 3 then
boss_hk4 = AddNpc(bossid, bosslvl, mapidx, posx, posy, 1, bossname, 1)
SetNpcScript(boss_hk4,"\\script\\mapdeath\\mapluye nhk.lua");
AddGlobalCountNews("Nghe noi "..bossname.." da xuat hien o "..mapname.."",1)
callboss = 4
elseif callboss == 4 then
boss_hk4 = AddNpc(bossid, bosslvl, mapidx, posx, posy, 1, bossname, 1)
SetNpcScript(boss_hk4,"\\script\\mapdeath\\mapluye nhk.lua");
AddGlobalCountNews("Nghe noi "..bossname.." da xuat hien o "..mapname.."",1)
callboss = 0
end
end
end;
function delboss() -- Xóa boss như tui nói ^^
DelNpc(boss_hk1)
DelNpc(boss_hk2)
DelNpc(boss_hk3)
DelNpc(boss_hk4)
AddGlobalCountNews("Hoat dong giet boss hoang kim da ket thuc")
callboss = 0
end
function OnDeath() --Phần thưởng khi diệt BOSS
AddOwnExp(1000000)
Msg2Player("Ban da giet duoc boss hoang kim")
end
bác nào đã dev jx giải thích giúp em đoạn code này co thể dev cho kiếm thế hok tai mới voc chưa tim được vt boss kiếm thế cần cao nhân chỉ giáo !!!!!!
taoboss = 0 ---
gio_boss_hk = {{12,00},{12,30},{24,00},{24,30}} -- Giờ xuất hiện Boss
TD_BOSS_HOANGKIM = --Khai báo Array Boss HK theo cấu trúc
{
{"Vuong Ta",739,95,341,0,"Mac Bac Thao Nguyen"},
-- Tên Boss ID LV IDM Tên Map
{"Huyen Giac Dai Su",740,95,322,0,"Truong Bach Son Bac"},
{"Duong Bat Nhiem",741,95,340,1,"Mac Cao Quat"},
{"Bach Doanh Doanh",742,95,336,1,"Phong Lang Do"},
{"Thanh Tuyet Su Thai",743,95,341,2,"Mac Bac Thao Nguyen"},
{"Yen Hien Trai",744,95,336,2,"Phong Lang Do"},
{"Ha Nhan Nga",745,95,321,3,"Truong Bach Son Nam"},
{"Don Tu Nam",746,95,341,4,"Mac Bac Thao Nguyen"},
{"Tuyen Co Tu",747,95,321,4,"Truong Bach Son Nam"},
{"Han Mong",748,95,342,1,"Tay Son Dao"}
}
TD_THANHTHI =
{
{"Tuong Duong",78,174,190,212,209,210,221},
-- Tên TT ID X1 Y1 X2 Y2 X3 Y3
{"Thanh Do",11,374,302,419,320,375,328},
{"Phuong Tuong ",1,177,204,225,191,229,213},
{"Dai Ly",162,225,207,223,186,165,196},
{"Duong Chau ",80,202,180,193,210},
{"Lam An ",176,154,209,150,192,140,168},
{"Bien Kinh",37,200,176,252,175,222,212}
}
function OnTimer()
gio = tonumber(date("%H"))
phut = tonumber(date("%M"))
for i = 1,getn(gio_boss_hk) do
if gio == gio_boss_hk[i][1] and phut == gio_boss_hk[i][2] then
callbosshk() -- Gọi Boss
break
elseif gio == gio_boss_hk[i][1] and phut == gio_boss_hk[i][2] + 15 then
delboss() Xóa Boss
end
end
end
function callbosshk()
if callboss <= 3 then
k = random(1,2) -- Radom sự xuất hiện của Boss
if k == 1 then --ko phai o thanh căn cứ vào Array TD_BOSS_HOANGKIM
i = random(1,10) -- Ông này lại chơi trò hên zui đây
for x = 1,100 do -- Cái nỳ cốt là để kiểm tra sự tồn tại của map
if SubWorldID2Idx(TD_BOSS_HOANGKIM[i][4]) ~= -1 then
-- Nếu map tồn tại thì thoát khỏi FOR
break --Thoát khỏi vòng lặp While..do..end, For..do..end, Do..Until ,....
elseif SubWorldID2Idx(TD_BOSS_HOANGKIM[i][4]) == -1 and x < 100 then
i = random(1,10)
--Nếu map hiện tại ở TD_BOSS_HOANGKIM[i][4] không tồn tại thì Sock giá trị i lại 1 lần ở đây khong sữ dụng break vì vòng lặp sẽ típ tục lập với i mới
elseif x == 100 then
i = 0
break
-- Tất cả các map điều ko tồn tại thì thoát khỏi lặp và ko xuất hiện Boss
end
end
if i ~= 0 then --- như tui nói
bossname = TD_BOSS_HOANGKIM[i][1]
bossid = TD_BOSS_HOANGKIM[i][2]
bosslvl = TD_BOSS_HOANGKIM[i][3]
mapname = TD_BOSS_HOANGKIM[i][6]
mapidx = SubWorldID2Idx(TD_BOSS_HOANGKIM[i][4])
mapidx = SubWorldID2Idx(TD_BOSS_HOANGKIM[i][4])
posx = random(200,300)*8 -- Tọa độ random >''<
posy = random(200,300)*16
else
return
end
else --xuat hien tai thanh thi
t = random(1,7)
i = random(1,10)
j = random(1,3)
for x = 1,100 do
if SubWorldID2Idx(TD_THANHTHI[t][2]) ~= -1 then
break
elseif SubWorldID2Idx(TD_THANHTHI[t][2]) == -1 and x < 100 then
t = random(1,7)
elseif x == 100 then
t = 0
end
end -- Giống như trên
if t ~= 0 then
bossname = TD_BOSS_HOANGKIM[i][1]
bossid = TD_BOSS_HOANGKIM[i][2]
bosslvl = TD_BOSS_HOANGKIM[i][3]
mapname = TD_THANHTHI[t][1]
mapidx = SubWorldID2Idx(TD_THANHTHI[t][2])
posx = TD_THANHTHI[t][2*j+1]*8*32
-- phần tử j sẽ có giá trị từ 1-3 từ đó nếu lấy j*2+1 sẽ cho ra phần tử có số của vị trí là lẻ và đó chính là X của chúng ta
-- {"Tuong Duong",78,174,190,212,209,210,221}
-- Ex : j = 1 => j*2+1 = 3 Đó là 174 ^^ hiểu
posy = TD_THANHTHI[t][j*2 + 2]*16*32
-- phần tử j sẽ có giá trị từ 1-3 từ đó nếu lấy j*2+2 sẽ cho ra phần tử có số của vị trí là chẳn và đó chính là X của chúng ta
-- {"Tuong Duong",78,174,190,212,209,210,221}
-- Ex : j = 1 => j*2+2 = 4 Đó là 190 ^^ hiểu
else
return
end
end
if callboss == 0 then mỗi lần gọi boss sẽ có 4 con và 4 con này sẽ ở những chỗ rất cách biệt cách dùng hàm Biến = AddNpc để sử dụng DelNpc ^^ ! Hiểu ??
boss_hk1 = AddNpc(bossid, bosslvl, mapidx, posx, posy, 1, bossname, 1)
SetNpcScript(boss_hk1,"\\script\\mapdeath\\mapluye nhk.lua"); -- Set Death cho quái khi chết thì chạy đến chổ nỳ
AddGlobalCountNews("Nghe noi "..bossname.." da xuat hien o "..mapname.."",1)
callboss = 1
elseif callboss == 1 then
boss_hk2 = AddNpc(bossid, bosslvl, mapidx, posx, posy, 1, bossname, 1)
SetNpcScript(boss_hk2,"\\script\\mapdeath\\mapluye nhk.lua");
AddGlobalCountNews("Nghe noi "..bossname.." da xuat hien o "..mapname.."",1)
callboss = 2
elseif callboss == 2 then
boss_hk3 = AddNpc(bossid, bosslvl, mapidx, posx, posy, 1, bossname, 1)
SetNpcScript(boss_hk3,"\\script\\mapdeath\\mapluye nhk.lua");
AddGlobalCountNews("Nghe noi "..bossname.." da xuat hien o "..mapname.."",1)
callboss = 3
elseif callboss == 3 then
boss_hk4 = AddNpc(bossid, bosslvl, mapidx, posx, posy, 1, bossname, 1)
SetNpcScript(boss_hk4,"\\script\\mapdeath\\mapluye nhk.lua");
AddGlobalCountNews("Nghe noi "..bossname.." da xuat hien o "..mapname.."",1)
callboss = 4
elseif callboss == 4 then
boss_hk4 = AddNpc(bossid, bosslvl, mapidx, posx, posy, 1, bossname, 1)
SetNpcScript(boss_hk4,"\\script\\mapdeath\\mapluye nhk.lua");
AddGlobalCountNews("Nghe noi "..bossname.." da xuat hien o "..mapname.."",1)
callboss = 0
end
end
end;
function delboss() -- Xóa boss như tui nói ^^
DelNpc(boss_hk1)
DelNpc(boss_hk2)
DelNpc(boss_hk3)
DelNpc(boss_hk4)
AddGlobalCountNews("Hoat dong giet boss hoang kim da ket thuc")
callboss = 0
end
function OnDeath() --Phần thưởng khi diệt BOSS
AddOwnExp(1000000)
Msg2Player("Ban da giet duoc boss hoang kim")
end
bác nào đã dev jx giải thích giúp em đoạn code này co thể dev cho kiếm thế hok tai mới voc chưa tim được vt boss kiếm thế cần cao nhân chỉ giáo !!!!!!