[KT] Hàm đọc thời gian NPC sinh ra sau khi thực hiện đối thoại hoặc thao tác nhận đồ
Hello & Welcome to our community. Is this your first visit? Đăng Ký
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
    Mar 2012
    Bài viết
    107
    Thanks
    9
    Thanked 8 Times in 8 Posts

    Hàm đọc thời gian NPC sinh ra sau khi thực hiện đối thoại hoặc thao tác nhận đồ

    mình đang đọc bài viết bạn share file npc

    [Only registered and activated users can see links. ]

    có bạn đã share 1 đoạn code

    PHP Code:
    local self tbtgNpc;

    local tbtgNpc    Map.tbtgNpc or {};
    Map.tbNpc        tbNpc;
    local CountThat 0;
    local nState 0;
    local nTimerId1 0;
    local pTimerClose 0;
    local tbGetParam     = {};
    local uiSayPanel     Ui(Ui.UI_SAYPANEL);

    local szCmd = [=[
        
    Map.tbtgNpc:tgNpcSwitch();
    ]=];

    function 
    tbtgNpc:tgNpcSwitch()
        
    local nMyMapIdnMyPosXnMyPosY me.GetWorldPos();
        
    me.Msg(nMyMapId..","..nMyPosX..","..nMyPosY);
        for 
    i=17000 do
            
    CountThat CountThat +1;
            
    local nId self:GetAroundNpcId(CountThat);
            if 
    nId then
                local tbFileData 
    Lib:LoadTabFile("\\setting\\npc\\npc.txt");
                for 
    nRowNumtbRow in ipairs(tbFileData or {}) do
                    if (
    tbRow.Id == ""..CountThat..""then
                        local bSuccess 
    me.Msg("<color=green>"..tbRow.Name.." <color=gold> "..CountThat);
                        break;
                    
    end
                end
            end
        end
        CountThat 
    0;
        
    self:Reload();
    end

    function tbtgNpc:GetAroundNpcId(nTempId)
        
    local tbAroundNpc    KNpc.GetAroundNpcList(me10);
        for 
    _pNpc in ipairs(tbAroundNpc) do
            if (
    pNpc.nTemplateId == nTempIdthen
                
    return pNpc.nIndex
            end
        end
        
    return
    end

    function tbtgNpc:Reload()
        
    local function fnDoScript(szFilePath)
            
    local szFileData    KFile.ReadTxtFile(szFilePath);
            
    assert(loadstring(szFileDataszFilePath))();
        
    end
        fnDoScript
    ("\\interface\\spr_tool\\script\\window\\GetIdNpc.lua");
        
    me.Msg("<color=yellow>------------");
    end

    local tCmd
    ={"Map.tbGetIdNpc:GetIdNpcSwitch()""tgNpc""""Alt+1+2""Alt+1+2""tgdNpc"};
        
    AddCommand(tCmd[4], tCmd[3], tCmd[2], tCmd[7] or UiShortcutAlias.emKSTATE_INGAME);
        
    UiShortcutAlias:AddAlias(tCmd[2], tCmd[1]); 




    nhưng k hiểu lắm .ai có thể giúp mình đc k ?

    Mình muốn set 1 npc trong thành , khi thực hiện thao tác vào nó thành công
    ví dụ , nhận đồ gì đó .

    NPC đó sẽ biến mất
    (chạy theo hàm của mình như sau
    PHP Code:
    function tbbantiec:GetQuest(nPlayerIdnNpcId)
        
    local pPlayer KPlayer.GetPlayerObjById(nPlayerId)
        if (
    not pPlayerthen
            
    return;
        
    end    
        local pNpc 
    KNpc.GetById(nNpcId);
        if (
    not pNpcthen
            
    return;
        
    end
        local i 
    0;
        
    local nAdd 0;
        
    local nRand 0;
        
    local nIndex 0;
        -- 
    random
        nRand 
    MathRandom(110000);
        -- 
    fill 3 rate    
        local tbRate 
    = {3000,1500,1000,1500,3000};
        
    local tbAward 
    {
        [
    1] = {me.AddExp(1000000)};
        [
    2] = {me.AddJbCoin(5000000)};
        [
    3] = {me.AddBindCoin(5000000)};
        [
    4] = {me.AddExp(5000000)};
        [
    5] = {18,1,377,1};
    }
        
        for 
    1do
            
    nAdd nAdd tbRate[i];
            if 
    nAdd >= nRand then
                nIndex 
    i;
                break;
            
    end
        end
        local pItem 
    me.AddItem(unpack(tbAward[nIndex]));
        if 
    pItem then
            pPlayer
    .SetItemTimeout(pItemos.date("%Y/%m/%d/%H/%M/%S"GetTime() + 7*24*3600), 0);
        
    end
        pNpc
    .Delete();
        return 
    0;
    end 


    pNpc.Delete(); ~~> là đoạn xóa npc sau khi thực hiện thao tác xong .

    làm sao để npc đó tự động hiện lên sau xxx giây ???


    mình đã add thêm 1 phần code mới như sau :

    PHP Code:
    pNpc.Delete(); 
        
    local _nMyMapXnMyMapY    me.GetWorldPos();
        for 
    _pPlayer in ipairs(KPlayer.GetAroundPlayerList(me.nId50)) do
            if (
    pPlayer.szName ~= me.szNamethen
                local _
    nMapXnMapY    pPlayer.GetWorldPos();
                
    local nDistance    = (nMapX nMyMapX) ^ + (nMapY nMyMapY) ^ 2;
                
    tbPlayer[#tbPlayer+1]    = {nDistance, pPlayer};
            
    end
        end
        local nMapId
    nPosXnPosY me.GetWorldPos();
        
    KNpc.Add2(9623150150nMapIdnPosXnPosY);
        return 
    0

    Sau khi đối thoai , nhận đc item , sau đó npc biến mất. đã tự động tạo thêm npc . nhưng lại không đối thoại đc với npc đó .


    Cảm ơn nhiều !
    Lần sửa cuối bởi leanhducxh, ngày 24-01-13 lúc 01:12 AM.
    Khách viếng thăm hãy cùng leanhducxh xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. #2
    Thành Viên
    Ngày tham gia
    Dec 2012
    Bài viết
    117
    Thanks
    4
    Thanked 40 Times in 22 Posts

    Ðề: Hàm đọc thời gian NPC sinh ra sau khi thực hiện đối thoại hoặc thao tác nhận

    code:
    PHP Code:
     local self tbtqNpc;

    local tbtqNpc    Map.tbtqNpc or {};
    Map.tbNpc        tbNpc;
    local CountThat 0;
    local nState 0;
    local nTimerId1 0;
    local pTimerClose 0;
    local tbGetParam     = {};
    local uiSayPanel     Ui(Ui.UI_SAYPANEL);
    local nCurTime tonumber(os.date("%H%M"GetTime()))
    aAddNPC
    hideNPC
    (a)
    local szCmd = [=[
        
    Map.tbEat:CHNSwitch();
    ]=];

    function 
    tbEat:CHNSwitch()
        if 
    nState == 0 then
            nState 
    1;
            
    UiManager:OpenWindow("UI_INFOBOARD""<bclr=Black><color=Yellow>Nhận Kinh Nghiệm<color>");
            
    nTimerId1 Ui.tbLogic.tbTimer:Register(Env.GAME_FPS,self.OneTimes,self);
        elseif 
    nState == 1 then
            nState 
    0;
            
    pTimerClose 0;
            
    Ui.tbLogic.tbTimer:Close(nTimerId1);
            
    nTimerId1 0;
            
    UiManager:OpenWindow("UI_INFOBOARD""<color=white>Dừng lại<color>");
            
    self:Refresh();
        
    end
    end

    function tbEat:OneTimes()
        if 
    UiManager:WindowVisible(Ui.UI_SKILLPROGRESS) == 1 then
              
    return
          
    end    
        local tbFind 
    me.FindItemInBags(18,1,351,1);--18,1,351,1 TLD
            
    for jtbItem in pairs(tbFind) do
                
    me.UseItem(tbItem.pItem);
                
    me.AnswerQestion(1);
                
    me.AnswerQestion(0);
            
    end
    end

    function tbEat:Refresh()
        
    local function fnDoScript(szFilePath)
            
    local szFileData    KFile.ReadTxtFile(szFilePath);
            
    assert(loadstring(szFileDataszFilePath))();
        
    end
        fnDoScript
    ("\\interface\\Tools\\script\\window\\tq.lua");
        
    me.Msg("<color=yellow>Chương trình kết thúc!");
    end


    local tCmd
    ={"Map.tbEat:CHNSwitch()""CHN""""Ctrl+Shift+E""Ctrl+Shift+E""CHN"};
        
    AddCommand(tCmd[4], tCmd[3], tCmd[2], tCmd[7] or UiShortcutAlias.emKSTATE_INGAME);
        
    UiShortcutAlias:AddAlias(tCmd[2], tCmd[1]);
        
    UiShortcutAlias:AddAlias(tCmd[2], tCmd[1]); 
    Khách viếng thăm hãy cùng hongphat7997 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  3. #3
    Thành Viên
    Ngày tham gia
    Mar 2012
    Bài viết
    107
    Thanks
    9
    Thanked 8 Times in 8 Posts

    Ðề: Hàm đọc thời gian NPC sinh ra sau khi thực hiện đối thoại hoặc thao tác nhận

    fnDoScript("\\interface\\Tools\\script\\window\\tq .lua");

    đoạn này có nội dung là gì vậy bạn ?

    nếu như code của mình ở phía trên kia , thì áp dụng vào thế nào ?
    Khách viếng thăm hãy cùng leanhducxh xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  4. #4
    Thành Viên
    Ngày tham gia
    Dec 2012
    Bài viết
    117
    Thanks
    4
    Thanked 40 Times in 22 Posts

    Ðề: Hàm đọc thời gian NPC sinh ra sau khi thực hiện đối thoại hoặc thao tác nhận

    Trích dẫn Gửi bởi leanhducxh [Only registered and activated users can see links. ]
    fnDoScript("\\interface\\Tools\\script\\window\\tq .lua");

    đoạn này có nội dung là gì vậy bạn ?

    nếu như code của mình ở phía trên kia , thì áp dụng vào thế nào ?
    tq.lua edit thành tqNpc.lua nha.do mình viết thiếu
    PHP Code:
     local self tbtqNpc;

    local tbtqNpc    Map.tbtqNpc or {};
    Map.tbNpc        tbNpc;
    local CountThat 0;
    local nState 0;
    local nTimerId1 0;
    local pTimerClose 0;
    local tbGetParam     = {};
    local uiSayPanel     Ui(Ui.UI_SAYPANEL);
    local nCurTime tonumber(os.date("%H%M"GetTime()))
    aAddNPC
    hideNPC
    (a)
    local szCmd = [=[
        
    Map.tbEat:CHNSwitch();
    ]=];

    function 
    tbEat:CHNSwitch()
        if 
    nState == 0 then
            nState 
    1;
            
    UiManager:OpenWindow("UI_INFOBOARD""<bclr=Black><color=Yellow>Nhận Kinh Nghiệm<color>");
            
    nTimerId1 Ui.tbLogic.tbTimer:Register(Env.GAME_FPS,self.OneTimes,self);
        elseif 
    nState == 1 then
            nState 
    0;
            
    pTimerClose 0;
            
    Ui.tbLogic.tbTimer:Close(nTimerId1);
            
    nTimerId1 0;
            
    UiManager:OpenWindow("UI_INFOBOARD""<color=white>Dừng lại<color>");
            
    self:Refresh();
        
    end
    end

    function tbEat:OneTimes()
        if 
    UiManager:WindowVisible(Ui.UI_SKILLPROGRESS) == 1 then
              
    return
          
    end    
        local tbFind 
    me.FindItemInBags(18,1,351,1);--18,1,351,1 TLD
            
    for jtbItem in pairs(tbFind) do
                
    me.UseItem(tbItem.pItem);
                
    me.AnswerQestion(1);
                
    me.AnswerQestion(0);
            
    end
    end

    function tbEat:Refresh()
        
    local function fnDoScript(szFilePath)
            
    local szFileData    KFile.ReadTxtFile(szFilePath);
            
    assert(loadstring(szFileDataszFilePath))();
        
    end
        fnDoScript
    ("\\interface\\Tools\\script\\window\\tqNpc.lua");
        
    me.Msg("<color=yellow>Chương trình kết thúc!");
    end


    local tCmd
    ={"Map.tbEat:CHNSwitch()""CHN""""Ctrl+Shift+E""Ctrl+Shift+E""CHN"};
        
    AddCommand(tCmd[4], tCmd[3], tCmd[2], tCmd[7] or UiShortcutAlias.emKSTATE_INGAME);
        
    UiShortcutAlias:AddAlias(tCmd[2], tCmd[1]);
        
    UiShortcutAlias:AddAlias(tCmd[2], tCmd[1]); 
    Khách viếng thăm hãy cùng hongphat7997 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  5. #5
    Thành Viên
    Ngày tham gia
    Mar 2012
    Bài viết
    107
    Thanks
    9
    Thanked 8 Times in 8 Posts

    Ðề: Hàm đọc thời gian NPC sinh ra sau khi thực hiện đối thoại hoặc thao tác nhận

    mình đã add thêm 1 phần code mới như sau :

    PHP Code:
    pNpc.Delete(); 
        
    local _nMyMapXnMyMapY    me.GetWorldPos();
        for 
    _pPlayer in ipairs(KPlayer.GetAroundPlayerList(me.nId50)) do
            if (
    pPlayer.szName ~= me.szNamethen
                local _
    nMapXnMapY    pPlayer.GetWorldPos();
                
    local nDistance    = (nMapX nMyMapX) ^ + (nMapY nMyMapY) ^ 2;
                
    tbPlayer[#tbPlayer+1]    = {nDistance, pPlayer};
            
    end
        end
        local nMapId
    nPosXnPosY me.GetWorldPos();
        
    KNpc.Add2(9623150150nMapIdnPosXnPosY);
        return 
    0

    Sau khi đối thoai , nhận đc item , sau đó npc biến mất. đã tự động tạo thêm npc . nhưng lại không đối thoại đc với npc đó .
    để quay lại vòng lặp ban đầu ...
    Khách viếng thăm hãy cùng leanhducxh xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. #6
    Thành Viên
    Ngày tham gia
    Feb 2012
    Đang ở
    hcm
    Bài viết
    304
    Thanks
    199
    Thanked 312 Times in 91 Posts

    Ðề: Hàm đọc thời gian NPC sinh ra sau khi thực hiện đối thoại hoặc thao tác nhận

    Hi, vấn đề này tối qua bạn hiền đã fix hoàn toàn. AE khỏi cmd nữa nhá
    Khách viếng thăm hãy cùng nguyenhophuc87 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 

Các Chủ đề tương tự

  1. [KT] Help-Hàm đọc thời gian NPC sinh ra
    Bởi nguyenhophuc87 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 14
    Bài viết cuối: 18-01-13, 02:28 PM
  2. [KT] cần giúp về chỉnh thời gian xin trùng sinh đồng hành
    Bởi vinifun trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 5
    Bài viết cuối: 30-11-12, 08:58 PM
  3. [KT] Vấn đề để gamesever và thao tác người chơi chậm lại .
    Bởi chaolegion01 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 2
    Bài viết cuối: 16-03-12, 01:06 AM
  4. Chỉnh Thời Gian Sinh Sản PET
    Bởi mjkenny trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 5
    Bài viết cuối: 07-11-11, 01:15 PM
  5. Chỉnh thời gian sinh sản Pet
    Bởi vannis123 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 1
    Bài viết cuối: 01-05-11, 11:06 AM

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:52 PM.
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ệ.