[KT] Đánh npc nào đó ra vật phẩm định sẵn
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Kết quả 1 đến 6 của 6
  1. #1
    Thành Viên
    Ngày tham gia
    Jan 2011
    Bài viết
    14
    Thanks
    16
    Thanked 1 Time in 1 Post

    Đánh npc nào đó ra vật phẩm định sẵn

    Mình đang nghiên cứu đánh 1 con npc nào đó ví dụ hỏa kỳ lân, giết nó xong rớt đúng số lượng vật phẩm viết sẵn như 5 knb hoặc 50v đồng.
    Nhưng ko đc, bạn nào biết vđ này giúp mình vs nhé. thanks
    Khách viếng thăm hãy cùng zeroonline xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. #2
    Thành Viên mrkutepro's Avatar
    Ngày tham gia
    Apr 2012
    Đang ở
    SafeZone
    Bài viết
    523
    Thanks
    82
    Thanked 248 Times in 125 Posts

    Ðề: Đánh npc nào đó ra vật phẩm định sẵn

    Trích dẫn Gửi bởi zeroonline [Only registered and activated users can see links. ]
    Mình đang nghiên cứu đánh 1 con npc nào đó ví dụ hỏa kỳ lân, giết nó xong rớt đúng số lượng vật phẩm viết sẵn như 5 knb hoặc 50v đồng.
    Nhưng ko đc, bạn nào biết vđ này giúp mình vs nhé. thanks
    viết cho con boss đó thêm script, chèn hàm OnDeath() vào thích thiên biến vạn hóa gì cũng dc
    Khách viếng thăm hãy cùng mrkutepro xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  3. Các thành viên gởi lời cảm ơn đến mrkutepro vì bài viết này !

    zeroonline (10-08-13)

  4. #3
    ✎﹏ Nà Ní Team ❖ ︻╦╤─ ҉ - na.ilusm89's Avatar
    Ngày tham gia
    May 2012
    Bài viết
    1,084
    Thanks
    99
    Thanked 707 Times in 402 Posts

    Ðề: Đánh npc nào đó ra vật phẩm định sẵn

    Trích dẫn Gửi bởi zeroonline [Only registered and activated users can see links. ]
    Mình đang nghiên cứu đánh 1 con npc nào đó ví dụ hỏa kỳ lân, giết nó xong rớt đúng số lượng vật phẩm viết sẵn như 5 knb hoặc 50v đồng.
    Nhưng ko đc, bạn nào biết vđ này giúp mình vs nhé. thanks
    tạo cho boss đó 1 Script riêng rồi Add tên thiên biến của NPC đó dùng hàm add item khi đánh rớt ra ... tìm mấy đoạn NPC quái bạn sẻ hiểu rõ hơn
    ℵóα

  5. Các thành viên gởi lời cảm ơn đến na.ilusm89 vì bài viết này !

    zeroonline (10-08-13)

  6. #4
    Thành Viên
    Ngày tham gia
    Jan 2011
    Bài viết
    14
    Thanks
    16
    Thanked 1 Time in 1 Post

    Ðề: Đánh npc nào đó ra vật phẩm định sẵn

    Trích dẫn Gửi bởi na.ilusm89 [Only registered and activated users can see links. ]
    tạo cho boss đó 1 Script riêng rồi Add tên thiên biến của NPC đó dùng hàm add item khi đánh rớt ra ... tìm mấy đoạn NPC quái bạn sẻ hiểu rõ hơn
    thật sự cảm ơn bạn nhiều ,giúp mình nhiều lần
    bạn nói rỏ hơn chút đc ko, mở npc = excel thì cột nào là thêm script vào
    nếu trong sv có sẵn thì chỉ giúp mình cái file mình tham khảo cái
    Khách viếng thăm hãy cùng zeroonline xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #5
    ✎﹏ Nà Ní Team ❖ ︻╦╤─ ҉ - na.ilusm89's Avatar
    Ngày tham gia
    May 2012
    Bài viết
    1,084
    Thanks
    99
    Thanked 707 Times in 402 Posts

    Ðề: Đánh npc nào đó ra vật phẩm định sẵn

    Trích dẫn Gửi bởi zeroonline [Only registered and activated users can see links. ]
    thật sự cảm ơn bạn nhiều ,giúp mình nhiều lần
    bạn nói rỏ hơn chút đc ko, mở npc = excel thì cột nào là thêm script vào
    nếu trong sv có sẵn thì chỉ giúp mình cái file mình tham khảo cái
    Ví Dụ Như con Boss Tần thủy hoàng bạn sẻ nhìn thấy cột

    VD Boss Tần Thủy Hoàng Chính Quy định tên là ( boss_qinshihuang) còn Của Mình Là Tên quy Định Là ( boss_tanthuyhoang )



    PHP Code:
    -------------------------------------------------------
    -- 
    tênboss :boss_tanthuyhoang
    -- phát triển :Na_Dev
    -- Thời Gian Viết:2009-06-11 19:56:05
    -- Loại Boss: Boss Khủng
    -------------------------------------------------------

    -- 
    配置文件("\\setting\\npc\npc.txt")

    -- 
    秦始皇boss
    local tbQinshihuangBoss    
    Npc:GetClass("boss_tanthuyhoang");

    -- 
    对话事件
    function tbQinshihuangBoss:OnDialog()
        
    me.Msg("...");
    end

    -- 掉落物品回调
    function tbQinshihuangBoss:DeathLoseItem(tbLoseItem)
        
        
    local tbItem tbLoseItem.Item;
        
    local szMsg "<color=green>Tần Thủy Hoàng rơi vật phẩm:<color>\n";
        
    local tbList = {};
        
        -- 
    列清单
        
    for _nItemId in pairs(tbItem or {}) do
            
    local pItem KItem.GetObjById(nItemId);
            if 
    pItem then
                local szName 
    pItem.szName;                    
                if 
    not tbList[szNamethen
                    tbList
    [szName] = 1;
                else
                    
    tbList[szName] = tbList[szName] + 1;
                
    end
            end
        end
        
        
    for szItemNamenCount in pairs(tbList or {}) do
            
    szMsg szMsg .. "<color=yellow>" .. szItemName .. " - " .. nCount .. " cái<color>\n";
        
    end
        
        self
    :BroadCast(szMsg);
    end

    -- 广播给玩家
    function tbQinshihuangBoss:BroadCast(szMsg)        
        if 
    Boss.Qinshihuang.tbPlayerList then
            
    for nPlayerIdtbPlayerMap in pairs(Boss.Qinshihuang.tbPlayerList) do
                
    local pPlayer KPlayer.GetPlayerObjById(nPlayerId);
                if 
    pPlayer then
                    pPlayer
    .Msg(szMsg);
                
    end
            end
        end
    end

    -- 死亡事件
    function tbQinshihuangBoss:OnDeath(pNpcKiller)
        
        -- 
    关键之处:清除召唤表
        Boss
    .tbUniqueBossCallOut[him.nTemplateId] = nil;
        
        -- 
    清楚传送NPC和信息
        Boss
    .Qinshihuang:ClearPassNpc();
        
    Boss.Qinshihuang:ClearInfo();
        
        -- 
    找到玩家
        local pPlayer 
    pNpcKiller.GetPlayer();
        
        -- 
    找不到返回
        
    if not pPlayer then
            
    return 0;
        
    end
            
        
    -- 增加威望
        local nTeamId 
    pPlayer.nTeamId;
        if 
    nTeamId == 0 then
            pPlayer
    .AddKinReputeEntry(5"boss_tanthuyhoang");
        else
            
    local tbPlayerIdnMemberCount KTeam.GetTeamMemberList(nTeamId);
            for 
    inPlayerId in pairs(tbPlayerId) do
                
    local pTeamPlayer KPlayer.GetPlayerObjById(nPlayerId);
                if (
    pTeamPlayer and pTeamPlayer.nMapId == him.nMapIdthen
                    pTeamPlayer
    .AddKinReputeEntry(5"boss_tanthuyhoang");
                
    end
            end
        end
        
        
    -- 频道公告
        local szMsg 
    "Hảo hữu của bạn ["..pPlayer.szName.."] đánh bại "..him.szName..".";
        
    pPlayer.SendMsgToFriend(szMsg);
        
    Player:SendMsgToKinOrTong(pPlayer" đánh bại "..him.szName.."."0);
        
        
    local szMsg string.format("Tổ đội của <color=green>%s<color> tại tầng 5 Tần Lăng đánh thắng Tần Thủy Hoàng!!!"pPlayer.szName);
        
    KDialog.NewsMsg(0Env.NEWSMSG_COUNTszMsg);
        
    self:BroadCast(szMsg);
        
    pPlayer.AddStackItem(18,1,20323,1,nil,10) -- Vật Phẩm rớt
        pPlayer
    .AddExp(100000000) -- 100tr EXP
        pPlayer
    .AddStackItem(18,1,1,10,nil,1) -- 1 Huyền Tinh 10
        
    -- 股份和荣誉
        local nStockBaseCount 
    1500;
        
    local nHonor 20;

        --
    增加建设资金和帮主、族长、个人的股份
        Tong
    :AddStockBaseCount_GS1(pPlayer.nIdnStockBaseCount0.10.50.10.10.3);    
        
        -- 
    额外奖励回调
        local nFreeCount
    tbFunExecute SpecialEvent.ExtendAward:DoCheck("QinlingBoss"pPlayer);
        
    SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
        
        -- 
    队友共享
        local tbMember 
    pPlayer.GetTeamMemberList();
        if 
    tbMember then
            
    for _pMember in ipairs(tbMember) do
                -- 
    本人的话已经加过了
                
    if pMember.nId ~= pPlayer.nId then        
                    
    --增加建设资金和帮主、族长、个人的股份        
                    Tong
    :AddStockBaseCount_GS1(pMember.nIdnStockBaseCount0.10.50.10.10.3);
                    -- 
    额外奖励回调
                    local nFreeCount
    tbFunExecute SpecialEvent.ExtendAward:DoCheck("QinlingBoss"pMember);
                    
    SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
                
    end
            end
        end
        
        
    -- 增加族长和帮主的领袖荣誉
        local nKinId 
    nMemberId pPlayer.GetKinMember();    
        
    local pKin KKin.GetKin(nKinId);
        
    local pTong KTong.GetTong(pPlayer.dwTongId);
        
        if 
    pTong then
            
    -- 增加帮主的领袖荣誉
            local nMasterId 
    Tong:GetMasterId(pPlayer.dwTongId);
            if 
    nMasterId ~= 0 then    
                PlayerHonor
    :AddPlayerHonorById_GS(nMasterIdPlayerHonor.HONOR_CLASS_LINGXIU0nHonor);
            
    end
            
    -- 增加非帮主族长的领袖荣誉            
            local pKinItor 
    pTong.GetKinItor()
            
    local nKinInTongId pKinItor.GetCurKinId();
            while (
    nKinInTongId 0) do
                
    local pKinInTong KKin.GetKin(nKinInTongId);
                
    local nCaptainId Kin:GetPlayerIdByMemberId(nKinInTongIdpKinInTong.GetCaptain());
                if 
    nMasterId ~= nCaptainId then
                    PlayerHonor
    :AddPlayerHonorById_GS(nCaptainIdPlayerHonor.HONOR_CLASS_LINGXIU0nHonor/2);
                
    end
                nKinInTongId 
    pKinItor.NextKinId();
            
    end
            
        
    elseif pKin then
            
    -- 增加Không bang hội族长的领袖荣誉
            local nCaptainId 
    Kin:GetPlayerIdByMemberId(nKinIdpKin.GetCaptain());
            
    PlayerHonor:AddPlayerHonorById_GS(nCaptainIdPlayerHonor.HONOR_CLASS_LINGXIU0nHonor/2);
        
    end

        local szTongName 
    "Không bang hội";
        
    local szBossName him.szName;
        
    local szKillPlayerName pPlayer.szName;
        
    local pTong KTong.GetTong(pPlayer.dwTongId);
        if 
    pTong then
            szTongName 
    pTong.GetName();
        
    end
        Dbg
    :WriteLog("[BossDeath]"szBossNameszKillPlayerNameszTongName);
        
    end;


    -- 
    血量触发
    function tbQinshihuangBoss:OnLifePercentReduceHere(nLifePercent)
        
        
    local pNpc him;
        if 
    nLifePercent == 80 then
            
            
    if Boss.Qinshihuang:GetBossStep() == 0 then

                local szMsg 
    "Quả nhân, mệt mỏi.";
                
    pNpc.SendChat(szMsg);
                
    Boss.Qinshihuang:Broadcast("Tần Thủy Hoàng nói: "..szMsg);
                            
                -- 
    增加对话Npc
                local pTempNpc 
    KNpc.Add2(2450120, -1154018203282);
                
                -- 
    记录一些状态
                Boss
    .Qinshihuang:OnProtectBoss(pTempNpc.dwId1pNpc.GetDamageTable());
            
                -- 
    增加4个兵马桶
                KNpc
    .Add2(2439120, -1154018203266);
                
    KNpc.Add2(2439120, -1154018353282);
                
    KNpc.Add2(2439120, -1154018043282);
                
    KNpc.Add2(2439120, -1154018203297);
                
                -- 
    增加两个传送npc
                local pNpc1 
    KNpc.Add2(2456120, -1153916093899);
                
    local pNpc2 KNpc.Add2(2457120, -1153919853532);
                
                
    Boss.Qinshihuang.tbBoss.nPassId1 pNpc1.dwId;
                
    Boss.Qinshihuang.tbBoss.nPassId2 pNpc2.dwId;
                
                
    pNpc.Delete();
            
    end
            
        
    elseif nLifePercent == 50 then
            
            
    if Boss.Qinshihuang:GetBossStep() == 1 then

                local szMsg 
    "Các ngươi, khách ở xa tới thì hãy du ngoạn một hồi.";
                
    pNpc.SendChat(szMsg);
                
    Boss.Qinshihuang:Broadcast("Tần Thủy Hoàng nói: "..szMsg);
                            
                -- 
    增加对话Npc
                local pTempNpc 
    KNpc.Add2(2450120, -1154018203282);
                
                -- 
    记录一些状态
                Boss
    .Qinshihuang:OnProtectBoss(pTempNpc.dwId2pNpc.GetDamageTable());
                
                -- 
    增加4个招魂师
                KNpc
    .Add2(2440120, -1154018203266);
                
    KNpc.Add2(2440120, -1154018353282);
                
    KNpc.Add2(2440120, -1154018043282);
                
    KNpc.Add2(2440120, -1154018203297);
                
                
    pNpc.Delete();
            
    end
            
        
    elseif nLifePercent == 20 then
            
            
    if Boss.Qinshihuang:GetBossStep() == 2 then
                
                local szMsg 
    "Quả nhân, cần nghỉ ngơi, các ngươi đi đi...";
                
    pNpc.SendChat(szMsg);
                
    Boss.Qinshihuang:Broadcast("Tần Thủy Hoàng nói: "..szMsg);
                
                -- 
    增加对话Npc
                local pTempNpc 
    KNpc.Add2(2450120, -1154018203282);
                
                -- 
    记录一些状态
                Boss
    .Qinshihuang:OnProtectBoss(pTempNpc.dwId3pNpc.GetDamageTable());
                
                -- 
    增加2个兵马桶,2个招魂师
                KNpc
    .Add2(2439120, -1154018203266);
                
    KNpc.Add2(2439120, -1154018353282);
                
    KNpc.Add2(2440120, -1154018043282);
                
    KNpc.Add2(2440120, -1154018203297);
                    
                
    pNpc.Delete();
            
    end
        end
    end

    -- 兵马俑
    local tbBingmayong 
    Npc:GetClass("boss_bingmayong");
    function 
    tbBingmayong:OnDeath(pNpcKiller)
        
    Boss.Qinshihuang:AddDeathCount();
    end
            
    -- 招魂师
    local tbZhaohunshi 
    Npc:GetClass("boss_zhaohunshi");
    function 
    tbZhaohunshi:OnDeath(pNpcKiller)
        
    Boss.Qinshihuang:AddDeathCount();
    end

    -- 精英
    local tbJingying 
    Npc:GetClass("boss_qinjingying");
    function 
    tbJingying:OnDeath(pNpcKiller)
        
        
    Boss.tbUniqueBossCallOut[him.nTemplateId] = nil;
        
        
    local pPlayer pNpcKiller.GetPlayer();
        if 
    not pPlayer then
            
    return 0;
        
    end

        
    -- 额外奖励回调
        local nFreeCount
    tbFunExecute SpecialEvent.ExtendAward:DoCheck("QinlingBoss"pPlayer);
        
    SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
        
        -- 
    队友共享
        local tbMember 
    pPlayer.GetTeamMemberList();
        if 
    tbMember then
            
    for _pMember in ipairs(tbMember) do
                if 
    pMember.nId ~= pPlayer.nId then        
                    local nFreeCount
    tbFunExecute SpecialEvent.ExtendAward:DoCheck("QinlingBoss"pMember);
                    
    SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
                
    end
            end
        end
    end

    -- 小boss
    local tbSmallBoss 
    Npc:GetClass("boss_qinlingsmall");
    function 
    tbSmallBoss:OnDeath(pNpcKiller)
        
        
    Boss.tbUniqueBossCallOut[him.nTemplateId] = nil;
        
        
    local pPlayer pNpcKiller.GetPlayer();
        if 
    not pPlayer then
            
    return 0;
        
    end
        
        
    -- 额外奖励回调
        local nFreeCount
    tbFunExecute SpecialEvent.ExtendAward:DoCheck("QinlingBoss"pPlayer);
        
    SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
        
        -- 
    队友共享
        local tbMember 
    pPlayer.GetTeamMemberList();
        if 
    tbMember then
            
    for _pMember in ipairs(tbMember) do
                if 
    pMember.nId ~= pPlayer.nId then        
                    local nFreeCount
    tbFunExecute SpecialEvent.ExtendAward:DoCheck("QinlingBoss"pMember);
                    
    SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
                
    end
            end
        end
        
        pPlayer
    .SendMsgToFriend("Hảo hữu của bạn ["..pPlayer.szName.."] đánh bại "..him.szName..".");
        
    Player:SendMsgToKinOrTong(pPlayer" đánh bại "..him.szName.."."0);
        
    self:BroadCast(string.format("Tổ đội của <color=green>%s<color> đánh bại %s!"pPlayer.szNamehim.szName));
        
        
    local szTongName "Không bang hội";
        
    local szBossName him.szName;
        
    local szKillPlayerName pPlayer.szName;
        
    local pTong KTong.GetTong(pPlayer.dwTongId);
        if 
    pTong then
            szTongName 
    pTong.GetName();
        
    end
        Dbg
    :WriteLog("[BossDeath]"szBossNameszKillPlayerNameszTongName);
            
    end

    function tbSmallBoss:BroadCast(szMsg)        
        if 
    Boss.Qinshihuang.tbPlayerList then
            
    for nPlayerIdtbPlayerMap in pairs(Boss.Qinshihuang.tbPlayerList) do
                
    local pPlayer KPlayer.GetPlayerObjById(nPlayerId);
                if 
    pPlayer then
                    pPlayer
    .Msg(szMsg);
                
    end
            end
        end
    end 
    ℵóα

  8. #6
    Thành Viên mrkutepro's Avatar
    Ngày tham gia
    Apr 2012
    Đang ở
    SafeZone
    Bài viết
    523
    Thanks
    82
    Thanked 248 Times in 125 Posts

    Ðề: Đánh npc nào đó ra vật phẩm định sẵn

    Trích dẫn Gửi bởi zeroonline [Only registered and activated users can see links. ]
    thật sự cảm ơn bạn nhiều ,giúp mình nhiều lần
    bạn nói rỏ hơn chút đc ko, mở npc = excel thì cột nào là thêm script vào
    nếu trong sv có sẵn thì chỉ giúp mình cái file mình tham khảo cái
    file của npc: setting\npc\npc.txt
    mở lên bằng excel, cột W qui định script, bạn có thể thêm vào tùy ý tên gì đó........
    Khách viếng thăm hãy cùng mrkutepro xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 05:09 AM.
vBulletin®, Copyright ©2000-2011, Jelsoft Enterprises Ltd.
CLBGamesVN không chịu trách nhiệm về Luật Bản Quyền của các tài liệu, bài viết v.v...được đăng tải trên diễn đàn này.
Diễn đàn phát triển dưới sự đóng góp của tất cả thành viên. BQT chỉ là những người thành lập ra sân chơi, quản lý và duy trì về mặt kỹ thuật, nội dung khi hợp lệ.