[KT] Chia sẻ hàm để làm tính năng Truyền Công
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 9 của 9
  1. #1
    Thành Viên Tâm Huyết satthupro95's Avatar
    Ngày tham gia
    Jan 2012
    Bài viết
    2,412
    Thanks
    2,567
    Thanked 1,842 Times in 880 Posts

    Chia sẻ hàm để làm tính năng Truyền Công

    Thấy bên server private nào đó có tính năng truyền công khá hay, hôm nay mình sẽ chia sẻ một số hàm để làm tính năng này:

    1. Hàm khiến người chơi ngồi xuống
    PHP Code:
    me.CallClientScript({"AutoAi:Sit"}); 
    2. Hàm check có ngồi trên ngựa hay không
    PHP Code:
    local bCheckedMe me.GetNpc().IsRideHorse();
    if 
    bCheckedMe ~= 0 then
    Dialog
    :Say("Cần phải xuống ngựa mới có thể truyền công")
    return
    end 
    3. Hàm gửi yêu cầu cho đối phương và confirm hoặc từ chối
    PHP Code:
    function tbItem:OnUse()
        
    local tbMemberListnMemberCount me.GetTeamMemberList();
        if 
    not tbMemberList or nMemberCount ~= 2 then
            Dialog
    :Say("Cần 2 người tổ đội nhau mới có thể sử dụng tính năng này");
            return 
    0;
        
    end    
        
        local pTeamMate 
    nil;
        for 
    _pMember in pairs(tbMemberList) do
            if 
    pMember.szName ~= me.szName then
                pTeamMate 
    pMember;
            
    end
        end

        local szMsg 
    string.format("Bạn có chắc chắn muốn truyền công cho <color=green>%s<color> không ?"pTeamMate.szName);
        
    local tbOpt 
        {
            {
    "Ta đồng ý"self.OnConfirmQiuhunselfme.nIdpTeamMate.nIdnItemId},
            {
    "Để ta suy nghĩ lại"},
        };
        
    Dialog:Say(szMsgtbOpt);
    end

    -- Đồng ý nhận lời truyền công
    function tbItem:OnConfirmQiuhun(nSuitorIdnTeamMateIdnItemId)

        
    local pSuitor KPlayer.GetPlayerObjById(nSuitorId);
        
    local pTeamMate KPlayer.GetPlayerObjById(nTeamMateId);
        
        if 
    not pSuitor or not pTeamMate then
            
    return 0;
        
    end
        
        local bIsNearby 
    0;
        
    local tbPlayerList KPlayer.GetAroundPlayerList(pSuitor.nId15);
        if (
    tbPlayerListthen
            
    for _pPlayer in ipairs(tbPlayerList) do
                if (
    pPlayer.szName == pTeamMate.szNamethen
                    bIsNearby 
    1;
                
    end
            end
        end
        
    if (== bIsNearbythen
            pSuitor
    .Msg("Hai người phải đứng gần nhau mới có thể truyền công")
            
    pTeamMate.Msg("Hai người phải đứng gần nhau mới có thể truyền công")
            return
        
    end    
        
        local bCheckedSuitor 
    pSuitor.GetNpc().IsRideHorse();
        
    local bCheckedTeamMate pTeamMate.GetNpc().IsRideHorse();
        if 
    bCheckedSuitor ~= or bCheckedTeamMate ~= 0 then
            Dialog
    :Say("Cả 2 phải xuống ngựa mới có thể truyền công")
        return
        
    end    
        
        pSuitor
    .CallClientScript({"AutoAi:Sit"});
        
    pTeamMate.CallClientScript({"AutoAi:Sit"});
        -- 
    只要使用了求婚卡片,不论对方是否同意都得删除
        
        local szMsg 
    string.format("<color=green>%s<color> muốn truyền công cho bạn, bạn có đồng ý ?"pSuitor.szName);
        
    local tbOpt 
        {
            {
    "Vâng tôi đồng ý"self.OnAcceptQiuhunselfnSuitorIdnTeamMateId},
            {
    "Tôi từ chối"self.OnRefuseQiuhunselfnSuitorIdnTeamMateId},
        };
        
        
    Setting:SetGlobalObj(pTeamMate);
        
    Dialog:Say(szMsgtbOpt);
        
    Setting:RestoreGlobalObj();
    end

    -- Đồng ý truyền công
    function tbItem:OnAcceptQiuhun(nSuitorIdnTeamMateId)

        
    local pSuitor KPlayer.GetPlayerObjById(nSuitorId);
        
    local pTeamMate KPlayer.GetPlayerObjById(nTeamMateId);
        
        if 
    not pSuitor or not pTeamMate then
            
    return 0;
        
    end



    end

    -- Từ chối truyền công
    function tbItem:OnRefuseQiuhun(nSuitorIdnTeamMateId)
        
        
    local pSuitor KPlayer.GetPlayerObjById(nSuitorId);
        
    local pTeamMate KPlayer.GetPlayerObjById(nTeamMateId);
        
        if 
    not pSuitor or not pTeamMate then
            
    return 0;
        
    end
        
        Dialog
    :SendBlackBoardMsg(pSuitorstring.format("Thật đáng tiếc, <color=green>%s<color> không muốn truyền công với ngươi"pTeamMate.szName));
    end 
    Với hàm này các bạn có thể áp dụng tính năng khi chạy làm cho cả 1 map ngồi xuống :v
    Lần sửa cuối bởi satthupro95, ngày 24-04-17 lúc 07:38 PM.
    Khách viếng thăm hãy cùng satthupro95 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. The Following 8 Users Say Thank You to satthupro95 For This Useful Post:

    cyberc (24-04-17), liemkute123 (13-05-17), minzkool (29-01-18), Oack123 (25-04-17), trieuvanhs (10-10-17), trungjx (25-04-17), visaothe123 (25-04-17), __Jie__ (24-04-17)

  3. #2
    Thành Viên GameZone cyberc's Avatar
    Ngày tham gia
    Nov 2015
    Bài viết
    111
    Thanks
    55
    Thanked 52 Times in 17 Posts

    Ðề: Chia sẻ hàm để làm tính năng Truyền Công

    tks bác.....................................
    Lần sửa cuối bởi cyberc, ngày 24-04-17 lúc 10:20 PM.
    Khách viếng thăm hãy cùng cyberc xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  4. #3
    Thành Viên visaothe123's Avatar
    Ngày tham gia
    Aug 2014
    Đang ở
    Usa
    Bài viết
    261
    Thanks
    30
    Thanked 84 Times in 55 Posts

    Icon7 Ðề: Chia sẻ hàm để làm tính năng Truyền Công

    sv nào ấy nhỉ, kaka , cái này mình cũng confix từ thẻ lễ nạp cát ra, giờ đang dev làm trong ui nó mới ngon .
    Lần sửa cuối bởi visaothe123, ngày 25-04-17 lúc 02:43 PM.
    Khách viếng thăm hãy cùng visaothe123 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  5. #4
    Thành Viên
    Ngày tham gia
    Jan 2015
    Bài viết
    189
    Thanks
    25
    Thanked 14 Times in 12 Posts

    Ðề: Chia sẻ hàm để làm tính năng Truyền Công

    Trích dẫn Gửi bởi visaothe123 [Only registered and activated users can see links. ]
    sv nào ấy nhỉ, kaka , cái này mình cũng confix từ thẻ lễ nạp cát ra, giờ đang dev làm trong ui nó mới ngon , đang cần bác shear hàm gởi lệnh từ client đến sv nè .
    satthupro chia sẽ rồi, ông chia sẽ vài cái cho anh em chơi đi, ủm lâu ngày thúi hết giờ
    Lần sửa cuối bởi devsevergame, ngày 25-04-17 lúc 01:56 PM.
    Khách viếng thăm hãy cùng devsevergame xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. #5
    Thành Viên Tâm Huyết satthupro95's Avatar
    Ngày tham gia
    Jan 2012
    Bài viết
    2,412
    Thanks
    2,567
    Thanked 1,842 Times in 880 Posts

    Ðề: Chia sẻ hàm để làm tính năng Truyền Công

    Trích dẫn Gửi bởi visaothe123 [Only registered and activated users can see links. ]
    sv nào ấy nhỉ, kaka , cái này mình cũng confix từ thẻ lễ nạp cát ra, giờ đang dev làm trong ui nó mới ngon .
    mình thiên về những thứ đơn giản hơn, chỉ cần dùng 1 item gửi thông báo đến 1 player khác, xác nhận là bay đến (dựa trên lệnh bài triệu hồi gia tộc), dùng ui khá lằng nhằng

    dùng ui thì ez thôi, tạo ui, trích xuất list từ 1 mảng, khởi tạo 1 biến chung từ scriptable rồi callserverscript nếu muốn gọi 1 cái gì đó
    Khách viếng thăm hãy cùng satthupro95 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #6
    Thành Viên visaothe123's Avatar
    Ngày tham gia
    Aug 2014
    Đang ở
    Usa
    Bài viết
    261
    Thanks
    30
    Thanked 84 Times in 55 Posts

    Ðề: Chia sẻ hàm để làm tính năng Truyền Công

    Trích dẫn Gửi bởi satthupro95 [Only registered and activated users can see links. ]
    mình thiên về những thứ đơn giản hơn, chỉ cần dùng 1 item gửi thông báo đến 1 player khác, xác nhận là bay đến (dựa trên lệnh bài triệu hồi gia tộc), dùng ui khá lằng nhằng

    dùng ui thì ez thôi, tạo ui, trích xuất list từ 1 mảng, khởi tạo 1 biến chung từ scriptable rồi callserverscript nếu muốn gọi 1 cái gì đó
    uh, vì trước giờ k đụng đến ui, giờ đang định vọc ui thử, k biết có dễ ăn k nữa . để tạo ui xếp hạng cho máy cái cho hoạt động bang hội , theo mình thấy nếu dev đc thì 2.6 có thể 9/10 bản linux.
    Khách viếng thăm hãy cùng visaothe123 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  8. #7
    Thành Viên Tâm Huyết satthupro95's Avatar
    Ngày tham gia
    Jan 2012
    Bài viết
    2,412
    Thanks
    2,567
    Thanked 1,842 Times in 880 Posts

    Ðề: Chia sẻ hàm để làm tính năng Truyền Công

    Trích dẫn Gửi bởi visaothe123 [Only registered and activated users can see links. ]
    uh, vì trước giờ k đụng đến ui, giờ đang định vọc ui thử, k biết có dễ ăn k nữa . để tạo ui xếp hạng cho máy cái cho hoạt động bang hội , theo mình thấy nếu dev đc thì 2.6 có thể 9/10 bản linux.
    cứ viết hàm trên sv xử lý hết trên đấy, client chỉ cần callserver là gọi đc ra hết
    Lần sửa cuối bởi satthupro95, ngày 26-04-17 lúc 02:08 PM.
    Khách viếng thăm hãy cùng satthupro95 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  9. #8
    Thành Viên
    Ngày tham gia
    Jul 2012
    Bài viết
    133
    Thanks
    25
    Thanked 59 Times in 10 Posts

    Ðề: Chia sẻ hàm để làm tính năng Truyền Công

    cho e hỏi
    e thêm tính năng truyền công 2 lần/ ngày
    mà e tắt server đi hôm sau vào mà nó cứ báo truyền công đã hết mặc dù đã thêm task cho nó
    Code:
    	local nStackSuitor = pSuitor.GetTask(2024,24)
    	if nStackSuitor >= 2 then
    	Dialog:Say("Truyền công tối đa 2 lần / 1 ngày");
        return 0;
    	end
    	
    	local nStackTeam = pTeamMate.GetTask(2024,24)
    	if nStackTeam >= 2 then
    	Dialog:Say("Người chơi bạn muốn truyền công đã hết số lượt truyền công trong ngày");
        return 0;
    	end
    Khách viếng thăm hãy cùng minzkool xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  10. #9
    Thành Viên Tâm Huyết satthupro95's Avatar
    Ngày tham gia
    Jan 2012
    Bài viết
    2,412
    Thanks
    2,567
    Thanked 1,842 Times in 880 Posts

    Ðề: Chia sẻ hàm để làm tính năng Truyền Công

    phải có thêm task lưu ngày nữa nhé, đặt nó ngay trên đầu, chẳng hạn của bạn là task 2024, với id 24 là lưu số lần dùng trong ngày, mình chọn id 23 là task lưu ngày

    PHP Code:
    local nDate tonumber(GetLocalDate("%y%m%d")); -- Kiểm tra ngày theo dạng năm,tháng,ngày ví dụ 20182901
        
    if me.GetTask(202423) < nDate then -- Kiểm tra xem sang ngày mới chưanếu task lưu ngày ngày hiện tại thì set task lưu ngày ngày hiện tại
            me
    .SetTask(202423nDate);
            
    me.SetTask(2024240); -- Rs lại số lần truyền công ngày
        end 
    Khách viếng thăm hãy cùng satthupro95 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

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

    minzkool (29-01-18)

 

 

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

  1. [MU] Lỗi chức năng Truyền Nhân Goblin NBB, DWEB
    Bởi heroviet2301 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 12
    Bài viết cuối: 08-09-16, 11:31 AM
  2. [MU] [DEV] Cần góp ý Tính năng truyền thừa cấp độ ITEM
    Bởi NetBanBe.Net trong diễn đàn Development
    Trả lời: 18
    Bài viết cuối: 23-07-16, 01:42 PM
  3. Kỹ Năng Thất Truyền [ Rất Là Xa Xưa ] :P
    Bởi sasuce10 trong diễn đàn Võ Lâm Truyền Kỳ (Jx Server)
    Trả lời: 12
    Bài viết cuối: 08-08-10, 09:57 AM
  4. Share Chức năng Nhiệm Vụ Truyền Thuyết - MU Tân Bình
    Bởi Alehap2010 trong diễn đàn SQL Server & Website
    Trả lời: 20
    Bài viết cuối: 27-09-09, 07:25 PM
  5. Chức năng truyền công lực cho web0.8
    Bởi ghvn1991 trong diễn đàn SQL Server & Website
    Trả lời: 15
    Bài viết cuối: 11-05-09, 10:18 PM

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à 03:21 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ệ.