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 !!=))=))
Powered by vBulletin® Version 4.2.0 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.