PDA

View Full Version : [Hướng dẫn] Script gọi boss -- Mạnh tuyên



zonjkut3
07-06-10, 09:02 AM
Ai cho xin cái cấu trúc của script gọi boss,chứ đọc trong severlib k hiểu gì hết trơn

sangpronhat
07-06-10, 09:34 AM
Gọi boss ah` ^^ !
Để lấy 1 VD đơn giản nhất cho U sem


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\\mapluyenhk.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\\mapluyenhk.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\\mapluyenhk.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\\mapluyenhk.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\\mapluyenhk.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


--Trích Mạnh Tuyên (Pro script nghĩ hưu)

Mún sữ dụng cái nỳ thì sem lại Id Npc và map chỉnh lại cho đúng
Sau đó thì chép vào 1 Timer của Server nếu xài sang thì cứ tạo cho nó 1 timer riêng bằng hàm StarMissionTimer(idMission,idTimer,time)
...........................Chúc cậu viết được cái nỳ keke !!=))=))

notfile
07-06-10, 09:40 AM
Gọi Boss thì nhiều SV có rồi mà !!!!!!!!!!!!!!!
SV ta gọi đủ các loại =))

sangpronhat
07-06-10, 09:41 AM
Đừng dùng những cấu trúc có sẳn mà hãy tự sáng tạo riêng cho mình 1 cái ^^ !
Ghét nhất xài đồ chùa mình tự làm tự sướng ----

kinkina2009
08-06-10, 02:01 PM
vừa code xong cái script gọi boss dạng sử dụng lệnh bài Kim Bài gọi Kim Quang như VNG ;)). Nói chung code cũng đơn giản đừng quan trọng hóa vấn đề rồi mù
@notfile : cái script của bạn quá là đơn giản