[KT] Chân nguyên hộ thể và trang bị đồng hành
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
 
Trang 1 của 3 1 2 3 CuốiCuối
Kết quả 1 đến 10 của 26
  1. #1
    Thành Viên
    Ngày tham gia
    Apr 2012
    Bài viết
    48
    Thanks
    6
    Thanked 15 Times in 5 Posts

    Chân nguyên hộ thể và trang bị đồng hành

    Anh em ai có 2 cái này chưa nhỉ
    mình kiểm tra server long hổ tranh bá đã update 2 thứ này => [Only registered and activated users can see links. ]
    ở client họ có update thêm phần => client\ui\script\window\fightpower.lua và zhenyuan.lua
    là zhenyuan.lua

    PHP Code:
    -----------------------------------------------------
    --
    ÎļþÃû        £º    zhenyuan.lua
    --´´½¨Õß        £º    zhoupengfeng
    --´´½¨Ê±¼ä        £º    2010-06-28
    --¹¦ÄÜÃèÊö        £º    Õ½¶·Á¦
    ------------------------------------------------------

    local uiZhenYuan Ui:GetClass("zhenyuan");

    local tbObject   Ui.tbLogic.tbObject;
    local tbMouse    Ui.tbLogic.tbMouse;

    uiZhenYuan.BTN_CLOSE                "BtnClose";
    uiZhenYuan.BTN_OK                    "BtnOk";
    uiZhenYuan.BTN_CANSEL                "BtnCansel";
    uiZhenYuan.OBJ_REFINE                "ObjRefine";
    uiZhenYuan.OBJ_EXP                    "ObjExp";
    uiZhenYuan.OBJ_EXPBOOK                "ObjExpBook";
    uiZhenYuan.TXT_TIP                    "TxtTip";
    uiZhenYuan.TXT_TIPEXP                "TxtTipExp";
    uiZhenYuan.TXT_BALANCEEXP            "TxtExpBalance"
    uiZhenYuan.LST_ATTR                    "LstAttr";
    uiZhenYuan.IMG_EFFECT                "ImgEffect";
    uiZhenYuan.BTNLEVEL1                "BtnLevel1";
    uiZhenYuan.BTNLEVEL10                "BtnLevel10";
    uiZhenYuan.BTNLEVELALL                "BtnLevelAll";
    uiZhenYuan.BTN_LEVEL                "BtnLevel";
    uiZhenYuan.BTN_APPLYUNBIND            "BtnApplyUnBind";
    uiZhenYuan.BTN_BIND                    "BtnBind";
    uiZhenYuan.BTN_UNBIND                "BtnUnBind";
    uiZhenYuan.TXT_ZHENYUANINTRODUCE    "TxtZhenYuanInfo";

    uiZhenYuan.PAGE_SET                    "PageSet";
    -- 
    Ò³Ãæ
    uiZhenYuan
    .tbPAGES                    =
    {
        {
    szBtn "BtnPageExperience",        szPage "PageExperience",        },
        {
    szBtn "BtnPageRefine",            szPage "PageRefine",            },
        {
    szBtn "BtnPageMain",                szPage "PageMain",            },
    }

    local nPos1 0;
    local nPos2 1;
    local nPos3 2;

    --
    local tbRefineCont1        = { nOffsetX nPos1bUse 0nRoom Item.ROOM_ZHENYUAN_REFINEbSendToGift 1};
    --
    local tbRefineCont2        = { nOffsetX nPOs2bUse 0nRoom Item.ROOM_ZHENYUAN_REFINEbSendToGift 1};
    --
    local tbRefineCont3        = { nOffsetX nPos3bUse 0nRoom Item.ROOM_ZHENYUAN_REFINEbSendToGift 1};
    local tbRefineCont1        = { bUse 0nRoom Item.ROOM_ZHENYUAN_REFINE_MAINbSendToGift 1};
    local tbRefineCont2        = { bUse 0nRoom Item.ROOM_ZHENYUAN_REFINE_CONSUMEbSendToGift 1};
    local tbRefineCont3        = { bUse 0nRoom Item.ROOM_ZHENYUAN_REFINE_RESULTbSendToGift 1};
    local tbXiuLianCont        = { bUse 0nRoom Item.ROOM_ZHENYUAN_XIULIAN_ZHENYUANbSendToGift 1};
    local tbBookCont        = { bUse 0nRoom Item.ROOM_ZHENYUAN_XIULIAN_ITEMbSendToGift 1};

    -- 
    Á¶»¯
    function tbRefineCont1:CheckSwitchItem(pDroppPicknXnY)
        if (
    pDropthen
            
    if Ui(Ui.UI_ZHENYUAN).nRefineResult == 1 then
                Ui
    (Ui.UI_ZHENYUAN).nRefineResult 0;
                
    Ui(Ui.UI_ZHENYUAN).tbObjRefine3:ClearRoom(nil00);
            
    end
            
            local ret 
    Item.tbZhenYuan:CheckRefineItem(pDrop1);
            if (
    ~= retthen
                me
    .Msg(ret);
                return 
    0;
            
    end
            
            
    -- todo delete 
            
    --[[
            if (
    == nXthen
                
    return 0;        -- Á¶»¯ºóÕæÔª¸ñ ²»ÄÜ·ÅÕæÔª
            end
            
            
    if (pDrop.szClass ~= "zhenyuan"then
                me
    .Msg("Ö»ÄÜ·ÅÖÃÕæÔª£¡");
                return    
    0;
            
    end
            
            
    if(== nXthen
                
    if (== Item.tbZhenYuan:GetEquiped(pDrop)) then
                    me
    .Msg("Ö»ÄÜ·ÅÖÃ令ÌåµÄÕæÔª£¡");
                    return 
    0;
                
    end
            
    elseif(== nXthen
                
    if(== Ui(Ui.UI_ZHENYUAN):IsPrefect(pDrop)) then
                    me
    .Msg("¸ÃÕæÔªËùÓÐ×ÊÖÊÒÑÂú£¬²»ÐèÒªÁ¶»¯£¡");
                    return 
    0;
                
    end
            end    
            
    --]]
        
    end
        
        Ui
    (Ui.UI_ZHENYUAN):PlaceZhenYuanRefine(1pDrop);
        
        return 
    1;
    end

    function tbRefineCont2:CheckSwitchItem(pDroppPicknXnY)
        if (
    pDropthen
            
    if Ui(Ui.UI_ZHENYUAN).nRefineResult == 1 then
                Ui
    (Ui.UI_ZHENYUAN).nRefineResult 0;
                
    Ui(Ui.UI_ZHENYUAN).tbObjRefine3:ClearRoom(nil00);
            
    end
            
            local ret 
    Item.tbZhenYuan:CheckRefineItem(pDrop2);
            if (
    ~= retthen
                me
    .Msg(ret);
                return 
    0;
            
    end
            
            
    -- todo delete
            
    --[[
            if (
    == nXthen
                
    return 0;        -- Á¶»¯ºóÕæÔª¸ñ ²»ÄÜ·ÅÕæÔª
            end
            
            
    if (pDrop.szClass ~= "zhenyuan"then
                me
    .Msg("Ö»ÄÜ·ÅÖÃÕæÔª£¡");
                return    
    0;
            
    end
            
            
    if(== nXthen
                
    if (== Item.tbZhenYuan:GetEquiped(pDrop)) then
                    me
    .Msg("Ö»ÄÜ·ÅÖÃ令ÌåµÄÕæÔª£¡");
                    return 
    0;
                
    end
            
    elseif(== nXthen
                
    if(== Ui(Ui.UI_ZHENYUAN):IsPrefect(pDrop)) then
                    me
    .Msg("¸ÃÕæÔªËùÓÐ×ÊÖÊÒÑÂú£¬²»ÐèÒªÁ¶»¯£¡");
                    return 
    0;
                
    end
            end    
            
    --]]
        
    end
        
        Ui
    (Ui.UI_ZHENYUAN):PlaceZhenYuanRefine(2pDrop);
        
        return 
    1;
    end

    function tbRefineCont3:CheckSwitchItem(pDroppPicknXnY)
        -- 
    ʼÖÕÄÜÄóöÀ´
        
    if pPick then
            Ui
    (Ui.UI_ZHENYUAN).nRefineResult 0;
            return 
    1;
        
    end
        
        
    -- ²»ÄÜ·ÅÈë
        
    return 0;
    end

    -- ÐÞÁ¶
    function tbXiuLianCont:CheckSwitchItem(pDroppPicknXnY)
        if (
    pDropthen
            
    if (pDrop.szClass ~= "zhenyuan"then
                me
    .Msg("Chỉ có thể bỏ vào chân nguyên!");
                return    
    0;
            
    end
            
    if (Item.tbZhenYuan:GetLevel(pDrop) == 120then
                me
    .Msg("Chân nguyên này đã đạt tối đa, không cần tu luyện!"); 
                return 
    0;
            
    end
        end
        Ui
    (Ui.UI_ZHENYUAN):PlaceZhenYuanXiuLian(pDrop);
        return 
    1;
    end

    function tbBookCont:CheckSwitchItem(pDroppPicknXnY)
        if (
    pDropthen
            
    if (pDrop.szClass ~= "partnerexpbook"then
                me
    .Msg("Chỉ có thể bỏ vào Sách kinh nghiệm đồng hành!");
                return 
    0;
            
    end
            
    -- todo ÊÇ·ñÌí¼Ó¼ì²â¹ý¶à¾­ÑéÊé
        end    
        
    return Ui(Ui.UI_ZHENYUAN):PlaceExpBook(pDroppPicknXnY);
    end

    -- ÅжÏÕæÔªËùÓÐ×ÊÖÊÊÇ·ñÒÑÂú
    function uiZhenYuan:IsPrefect(pItem)
        
    local nAttrMax 20;
        if (
    nAttrMax == Item.tbZhenYuan:GetAttribPotential1(pItem)
            and 
    nAttrMax == Item.tbZhenYuan:GetAttribPotential2(pItem)
            and 
    nAttrMax == Item.tbZhenYuan:GetAttribPotential3(pItem)
            and 
    nAttrMax == Item.tbZhenYuan:GetAttribPotential4(pItem)
            ) 
    then
            
    return 1;
        
    end
        
    return 0;
    end

    --uiZhenYuan.szTipRefine        "ÇëÔÚÉÏ·½·ÅÈëÕæÔª£¬Á¶»¯ºó<color=orange>¸±ÕæÔª½«Ïûʧ<color>£¡ÒÑ»¤ÌåÕæÔªÖ»ÄÜ×÷ΪÖ÷ÕæÔªÁ¶»¯¡£<enter>ÇëÑ¡ÔñÁ¶»¯";
    uiZhenYuan.tbTip            =
    {
        {
            
    "Hãy bỏ vào chân nguyên, sau khi luyện hóa <color=orange>chân nguyên phụ sẽ biến mất<color>!<enter>Chân nguyên đã hộ thể chỉ có thể xem như luyện hóa chân nguyên chính.",
            
    "Hãy chọn thuộc tính luyện hóa (<color=red>cần %s Bạc<color>):<enter>",
        },    -- 
    Á¶»¯
        
        
    {
            
    "★ Trước khi dùng sách exp, chân nguyên hãy đánh quái lên cấp",
            
    "★ Dùng sách exp sẽ lên cấp nhanh (không hạn chế số sách)",
        },    -- 
    ÐÞÁ¶
    }

    local nPXIULIAN 1;
    local nPREFINE 2;
    local nPGMAIN 3;
    local nExpBookMaxNum 18;

    function 
    uiZhenYuan:CanOpenWnd()
        if 
    Item.tbZhenYuan.bOpen and Item.tbZhenYuan.bOpen == 1 then
            
    return 1;
        
    end
        
        Ui
    :ServerCall("UI_TASKTIPS""Begin""Hệ thống chân nguyên chưa mở, xin hãy đợi");
        return 
    0;
    end

    function uiZhenYuan:Init()
        
    self.nCurPageIndex nPREFINE;
        
    self.nRefineResult 0;
    end

    function uiZhenYuan:OnCreate()
        
    self:CreateObjContainer();
    end

    -- Ïú»ÙOBJÈÝÆ÷
    function uiZhenYuan:OnDestroy()
        
    tbObject:UnregContainer(self.tbObjRefine1);
        
    tbObject:UnregContainer(self.tbObjRefine2);
        
    tbObject:UnregContainer(self.tbObjRefine3);
        
    tbObject:UnregContainer(self.tbObjXiuLianZhenYuan);
        
    tbObject:UnregContainer(self.tbObjExpBook);
    end

    function uiZhenYuan:CreateObjContainer()
        -- 
    Á¶»¯¸ñ×Ó
        self
    .tbObjRefine = {};
        for 
    1do
            --
    local tbCont tbRefineCont;
            --
    tbCont.nOffsetX i;
            --
    self.tbObjRefine[i].CheckSwitchItem self.CheckSwitchItem;
        
    end
        
        self
    .tbObjRefine1 tbObject:RegisterContainer(
                
    self.UIGROUP
                (
    self.OBJ_REFINE..1), 
                
    11
                
    tbRefineCont1,
                
    "itemroom"
                
    );
                
        
    self.tbObjRefine2 tbObject:RegisterContainer(
                
    self.UIGROUP
                (
    self.OBJ_REFINE..2), 
                
    11
                (
    tbRefineCont2),
                
    "itemroom"
                
    );
                
        
    self.tbObjRefine3 tbObject:RegisterContainer(
                
    self.UIGROUP
                (
    self.OBJ_REFINE..3), 
                
    11
                (
    tbRefineCont3),
                
    "itemroom"
                
    );
        
        -- 
    ÐÞÁ¶ ÕæÔª¸ñ×Ó
        self
    .tbObjXiuLianZhenYuan tbObject:RegisterContainer(
                
    self.UIGROUP
                (
    self.OBJ_EXP), 
                
    11
                
    tbXiuLianCont
                
    "itemroom"
                
    );
            
        -- 
    ÐÞÁ¶ ¾­ÑéÊé¸ñ×Ó    
        self
    .tbObjExpBook tbObject:RegisterContainer(
                
    self.UIGROUP
                (
    self.OBJ_EXPBOOK), 
                
    63
                
    tbBookCont
                
    "itemroom"
                
    );
    end

    function uiZhenYuan:OnOpen()
        
    me.ApplyZhenYuanEnhance(Item.tbZhenYuan.emZHENYUAN_ENHANCE_OPENWINDOW);
        
        if (
    self.bFirstOpenthen    -- µÚÒ»´Î´ò¿ª
            self
    .bFirstOpen 1;
            
    self:CreateObjContainer();
        
    end
        self
    .nCurPageIndex nPXIULIAN;        --1.Á¶»¯·ÖÒ³£¬2.ÐÞÁ¶·ÖÒ³
        self
    :UpdatePage(self.nCurPageIndex);
        
    self:UpdateObjCont();
        
        --
    UiManager:OpenWindow(Ui.UI_ITEMBOX);
    end

    function uiZhenYuan:OnClose()
        
    me.ApplyZhenYuanEnhance(Item.tbZhenYuan.emZHENYUAN_ENHANCE_NONE);
        if (
    self.nCurPageIndex == nPREFINEthen
            self
    :RefineCansel();
            
    UiManager:ReleaseUiState(UiManager.UIS_ZHENYUAN_REFINE);
        else
            
    self:XiuLianCansel();
            
    UiManager:ReleaseUiState(UiManager.UIS_ZHENYUAN_XIULIAN);
        
    end
    end

    function uiZhenYuan:OnButtonClick(szWndnParam)
        
    local nPage self.nCurPageIndex;
        if (
    szWnd == self.BTN_CLOSEthen
            UiManager
    :CloseWindow(self.UIGROUP);
        elseif (
    szWnd == self.BTN_OKthen
            
    if (nPREFINE == nPagethen
                self
    :ClickRefine();
            else
                
    self:ClickXiuLian();
            
    end
        
    elseif (szWnd == self.BTN_CANSELthen
            UiManager
    :CloseWindow(self.UIGROUP);
        --[[
        elseif 
    szWnd == self.BTNLEVEL1 then
            self
    :ApplyLiLianExp(1);
        elseif 
    szWnd == self.BTNLEVEL10 then
            self
    :ApplyLiLianExp(2);
        elseif 
    szWnd == self.BTNLEVELALL then
            self
    :ApplyLiLianExp(3);
            --]]
        elseif 
    szWnd == self.BTN_LEVEL then
            
    -- TODO
            UiManager
    :CloseWindow(self.UIGROUP);
            
    me.CallServerScript({ "ZhenYuanCmd""ApplyUseLilianTime"});
        elseif 
    szWnd == self.BTN_UNBIND then
            me
    .CallServerScript({ "ZhenYuanCmd""SwitchBind"me.nIdItem.SWITCHBIND_UNBIND});
        elseif 
    szWnd == self.BTN_BIND then
            me
    .CallServerScript({ "ZhenYuanCmd""SwitchBind"me.nIdItem.SWITCHBIND_BIND});
        elseif 
    szWnd == self.BTN_APPLYUNBIND then
            me
    .CallServerScript({ "ZhenYuanCmd""ApplyUnBind"me.nId});
        
    end
        
        
    for 1,do
            if (
    szWnd == self.tbPAGES[i].szBtnthen
                self
    .nCurPageIndex    i;
                
    self:UpdatePage(self.nCurPageIndex);
                return;
            
    end
        end
    end

    function uiZhenYuan:UpdatePage(nPage)
        
    PgSet_ActivePage(self.UIGROUPself.PAGE_SETself.tbPAGES[nPage].szPage);
        
    Wnd_SetVisible(self.UIGROUPself.BTN_OK1);
        
    Wnd_SetVisible(self.UIGROUPself.BTN_CANSEL1);
        if (
    nPREFINE == nPagethen    -- Á¶»¯
            self
    :XiuLianCansel();
            
    Btn_SetTxt(self.UIGROUPself.BTN_OK"Luyện hóa");
            
    UiManager:ReleaseUiState(UiManager.UIS_ZHENYUAN_XIULIAN);
            
    UiManager:SetUiState(UiManager.UIS_ZHENYUAN_REFINE);
            
    self:UpdateTips(1);
        elseif (
    nPXIULIAN == nPagethen                -- ÐÞÁ¶
            self
    :RefineCansel();
            
    self:UpdateLiLianInfo();
            
    Btn_SetTxt(self.UIGROUPself.BTN_OK"Tu luyện");
            
    UiManager:ReleaseUiState(UiManager.UIS_ZHENYUAN_REFINE);
            
    UiManager:SetUiState(UiManager.UIS_ZHENYUAN_XIULIAN);
            
    self:UpdateTips(1);
        elseif (
    nPGMAIN == nPagethen
            Wnd_Hide
    (self.UIGROUPself.BTN_OK);
            
    Wnd_Hide(self.UIGROUPself.BTN_CANSEL);
            
    UiManager:ReleaseUiState(UiManager.UIS_ZHENYUAN_REFINE);
            
    UiManager:ReleaseUiState(UiManager.UIS_ZHENYUAN_XIULIAN);
            
    self:XiuLianCansel();
            
    self:RefineCansel();
            
    self:UpdateHelpPage();
        
    end
    end

    function uiZhenYuan:UpdateHelpPage()
        
    local nApplyTime me.GetTask(Item.tbZhenYuan.TASK_GID_UNBINDItem.tbZhenYuan.TASK_SUBID_UNBIND);
        if 
    nApplyTime == or GetTime() - nApplyTime or GetTime() - nApplyTime Item.tbZhenYuan.UNBIND_MAX_TIME then
            Btn_SetTxt
    (self.UIGROUPself.BTN_APPLYUNBIND"Xin mở");
            
    Wnd_SetEnable(self.UIGROUPself.BTN_UNBIND0);
        else
            
    Btn_SetTxt(self.UIGROUPself.BTN_APPLYUNBIND"Hủy mở");
            if (
    GetTime() - nApplyTime Item.tbZhenYuan.UNBIND_MIN_TIMEthen
                Wnd_SetEnable
    (self.UIGROUP,self.BTN_UNBIND0);
            else
                
    Wnd_SetEnable(self.UIGROUPself.BTN_UNBIND1);
            
    end
        end    
        
        local szText 
    = [[    Chân nguyên được ngưng tụ từ đồng hành cấp 1chỉ có 1 bộ phận đồng hành có thể ngưng tụ thành chân nguyênđược thể hiện rõ trong giao diện đồng hành.
            <
    color=green>1. Thuộc tính chân nguyên<color><enter>    Mỗi chân nguyên có 4 dòng thuộc tínhtrị thuộc tính thể hiện đẳng cấp của thuộc tính đócấp thuộc tính càng cao hiệu quả càng ưu việt.
            <
    color=green>2. Cấp sao tư chất thuộc tính chân nguyên<color><enter>    Cấp sao bên dưới mỗi dòng thuộc tính thể hiện tư chất của thuộc tính đóCấp sao càng caotrị thuộc tính tăng càng nhiều sau khi thăng cấp chân nguyên.
             <
    color=green>3. Tu luyện chân nguyên<color><enter>    Tu luyện là chỉ sự thăng cấp chân nguyênthăng cấp mới có thể nâng cao những thuộc tính khác.
             <
    color=green>4. Luyện hóa chân nguyên<color><enter>    Việc thăng cấp tư chất thuộc tính chân nguyên được gọi là luyện hóa chân nguyên.
            <
    color=green>5. Giá trị của chân nguyên<color><enter>    Cấp tư chất thuộc tính quyết định giá trị của chân nguyêngiá trị càng caoxếp hạng chân nguyên càng caosau khi trang bị vào ngườisức chiến đấu cộng thêm cũng nhiều hơn.
            <
    color=green>6. Khóa và mở khóa chân nguyên<color><enter>    Có thể khóa chân nguyên thông qua nút chức năng bên dướiđương nhiên cũng có thể mở khóaĐể mở khóa cần phải xin phépthời gian xin mở khóa là 3 ngày!
            <
    color=green>7. Kinh nghiệm chuyển thành thời gian luyện tập<color><enter>    Các vị hiệp sĩ có thể dùng tu vi bản thân để tiến hành tu luyệndùng kinh nghiệm chuyển thành kinh nghiệm luyện tập của chân nguyên.
            <
    color=orange>Thông tin chi tiết hãy xem trong Cẩm nang trợ giúp F12 Chi tiết Chân nguyên<color>]];
        
        
    Txt_SetTxt(self.UIGROUPself.TXT_ZHENYUANINTRODUCEszText);
    end

    function uiZhenYuan:OnAnimationOver(szWnd)
        if (
    szWnd == self.IMG_EFFECTthen
            Wnd_Hide
    (self.UIGROUPself.IMG_EFFECT);    -- ²¥·ÅÍê±Ï£¬Òþ²ØͼÏñ
        end
    end

    function uiZhenYuan:OnListSel(szWndnParam)
        if 
    szWnd == self.LST_ATTR then
            local nKey 
    Lst_GetCurKey(self.UIGROUPself.LST_ATTR);
            
    self.nSelect nKey;
            
    local pItem me.GetItem(Item.ROOM_ZHENYUAN_REFINE_CONSUME00);
            if 
    not pItem then
                Txt_SetTxt
    (self.UIGROUPself.TXT_TIP"Hãy bỏ vào chân nguyên phụ!");
                return;
            
    end
            self
    :UpdateTips(2self.tbAttrList[nKey].szTip);
            if (
    self.nCurPageIndex == nPREFINEthen
                self
    :UpdateRefine();
            
    end
        end
    end

    -- ¸üÐÂÒ³ÃæÕýÖеÄÌáʾÎÄ×Ö
    function uiZhenYuan:UpdateTips(nTipIdszTipExszTipEx2)
        
    local nPage self.nCurPageIndex;
        if (
    nPREFINE == nPagethen
            local szTip 
    self.tbTip[1][nTipId];
            if (
    szTipExthen
                szTip 
    szTip .. szTipEx;
            
    end
            Txt_SetTxt
    (self.UIGROUPself.TXT_TIPszTip);
        else
            
    local szTip self.tbTip[2][1];
            if (
    szTipExthen
                szTip 
    szTip .. szTipEx;
            
    end
            szTip 
    szTip .. "<enter>";
            
    szTip szTip .. self.tbTip[2][2];
            if (
    szTipEx2then
                szTip 
    szTip .. szTipEx2;
            
    end
            Txt_SetTxt
    (self.UIGROUPself.TXT_TIPEXPszTip);
        
    end
    end

    -- Á¶»¯Ãæ°å£º·ÅÈëÕæÔª nType 1 Ö÷ÕæÔª or = 2  ¸±ÕæÔª or = 0 Çå¿Õ
    function uiZhenYuan:PlaceZhenYuanRefine(nTypepItem)
        
    self:UpdateTips(1);
        if (
    not nType or == nTypethen    
            self
    .tbAttrList nil;
            
    self:UpdateAttrList();
            return;
        
    end
        
        local pLocItem1 
    nil;
        
    local pLocItem2 nil;
        
        if (
    == nTypethen
            pLocItem1 
    pItem;
            
    pLocItem2 self:GetZhenYuanRefine2();
        
    end

        
    if (== nTypethen
            pLocItem1 
    self:GetZhenYuanRefine1();
            
    pLocItem2 pItem;
        
    end
        
        
    if (pLocItem1then    -- Ö÷ÕæÔª
            self
    :UpdateTips(1);
            
    self.tbAttrList = {};
            
            
    local tbAttrName = {};
            for 
    1do
                
    local nAttrMagicId Item.tbZhenYuan:GetAttribMagicId(pLocItem1i);
                
    local szAttrName Item.tbZhenYuan:GetAttribTipName(nAttrMagicId);
                
    tbAttrName[i] = szAttrName;
            
    end
            local tbAttrVal 
    = {};
            
    tbAttrVal[1] = Item.tbZhenYuan:GetAttribPotential1(pLocItem1);
            
    tbAttrVal[2] = Item.tbZhenYuan:GetAttribPotential2(pLocItem1);
            
    tbAttrVal[3] = Item.tbZhenYuan:GetAttribPotential3(pLocItem1);
            
    tbAttrVal[4] = Item.tbZhenYuan:GetAttribPotential4(pLocItem1);
            for 
    1do
                
    local szAttrStar Item.tbZhenYuan:GetAttribStar(tbAttrVal[i]);
                
    self.tbAttrList[i] = {string.format("%s£º "tbAttrName[i]), string.format("<color=gold>%s<color>"szAttrStar), ""color nilszTip nil};
            
    end
            
            
    if (pLocItem2then    -- ¸±ÕæÔª
                
    if (not self.tbAttrListthen
                    
    print("[zhenyuan]:self.tbAttrList is nil");
                    return;
                
    end
                    
                local tbResult 
    Item.tbZhenYuan:GetAttribRefineInfo(pLocItem1pLocItem2);
                if (
    tbResultthen
                    
    for 1do
                        if (
    tbResult[i]) then
                            
    --self.tbAttrList[i].color "green";
                            
    local nAddedMin tbResult[i][1][1];
                            
    local szStarAddedMin Item.tbZhenYuan:GetAttribStar(nAddedMin);
                            
    local nMinProb tbResult[i][1][2];
                            
    local nAddedMax tbResult[i][2][1];
                            
    local szStarAddedMax Item.tbZhenYuan:GetAttribStar(nAddedMax);
                            
    local nMaxProb tbResult[i][2][2];
                                
                            
    self.tbAttrList[i][1] = string.format("<color=green>%s<color>"self.tbAttrList[i][1]);
                            
    self.tbAttrList[i][3] = string.format("<color=green>Ôö¼Ó<color> <color=gold>%s<color>"szStarAddedMin);
                            --
    self.tbAttrList[i].szTip string.format("<color=orange> %d%%¸ÅÂÊÔö¼Ó <color><color=gold>%s<color>"nMinProbszStarAddedMin); -- ÌáʾÓï¾ä
                            self
    .tbAttrList[i].szTip string.format("<color=orange>%d%% tỉ lệ vượt mức tăng <color> <color=gold>%s<color>", (100-nMinProb), "¡î");
                        
    end
                    end        
                end
                self
    :UpdateTips(2);
            
    end
        
    else
            
    self.tbAttrList nil;
        
    end
        
        self
    :UpdateAttrList(self.tbAttrList);
    end

    function uiZhenYuan:GetStarStr(dwValue)
        
    local szStar "";
        
    local nFloor math.floor(dwValue);
        for 
    1nFloor do
            
    szStar szStar .. "★";
        
    end
        
    if (dwValue ~= nFloorthen
            szStar 
    szStar .. "☆";
        
    end
        
    return szStar;
    end

    --[[
    -- 
    Á¶»¯µÄÕæÔª£¬ nPos 1->3 ¶ÔÓ¦ Ö÷ÕæÔª¡¢¸±ÕæÔª¡¢Á¶»¯ºóÕæÔª
    function uiZhenYuan:GetZhenYuanRefine(nPos)
        -- 
    todo change
        
    if (nPos1 == nPosthen
            
    --
            return 
    self.pItem1;
        else
            --return 
    me.GetItem(Item.ROOM_ZHENYUAN_REFINE_CONSUME00);
            return 
    self.pItem2;
        
    end
    end
    --]]

    -- 
    Á¶»¯Ö÷ÕæÔª
    function uiZhenYuan:GetZhenYuanRefine1()
        return 
    me.GetItem(Item.ROOM_ZHENYUAN_REFINE_MAIN00);
    end

    -- Á¶»¯¸±ÕæÔª
    function uiZhenYuan:GetZhenYuanRefine2()
        return 
    me.GetItem(Item.ROOM_ZHENYUAN_REFINE_CONSUME00);
    end

    -- ÐÞÁ¶µÄÕæÔª
    function uiZhenYuan:GetZhenYuanXiuLian()
        
    local pItem me.GetItem(Item.ROOM_ZHENYUAN_XIULIAN_ZHENYUAN00);
        return 
    pItem;
    end

    -- ¸ñ×ÓÖеľ­ÑéÊé nX¡¢nY³ýÍâ
    function uiZhenYuan:GetExpBookTab(pDroppPicknXnY)
        
    local tbExpBook = {};

        
    local nCnt 1
        -- 
    ¾­ÑéÊé¸ñ×ÓΪ 3*6 ¹²18¸ö
        
    for 0do
            for 
    0do
                
    local pItem me.GetItem(Item.ROOM_ZHENYUAN_XIULIAN_ITEMij);
                if (
    pItem and (~= nX or ~= nY)) then
                    tbExpBook
    [nCnt] = pItem;
                    
    nCnt nCnt 1;
                
    end
            end
        end

        
    if (pDropthen
            
    --tbExpBook[nY nX] = pDrop;
            
    tbExpBook[nCnt] = pDrop;
        
    end
        
        
    return tbExpBook;
    end

    -- ¸üÐÂÕæÔªÊôÐÔÁбí
    function uiZhenYuan:UpdateAttrList(tbAttrList)
        
    Lst_Clear(self.UIGROUPself.LST_ATTR);
        if (
    not tbAttrListthen
            
    return ;
        
    end
        
    for 1#tbAttrList do
            
    local szCell1 tbAttrList[i][1];
            
    local szCell2 tbAttrList[i][2]; 
            
    local szCell3 tbAttrList[i][3];
            
    local szColor tbAttrList[i].color;
            if (
    szColor and string.len(szColor) > 0then
                szCell1 
    string.format("<color=%s>%s<color>"szColortbAttrList[i][1]);
                
    szCell2 string.format("<color=%s>%s<color>"szColortbAttrList[i][2]);
                
    szCell3 string.format("<color=%s>%s<color>"szColortbAttrList[i][3]);
            
    end
            Lst_SetCell
    (self.UIGROUPself.LST_ATTRi1szCell1);
            
    Lst_SetCell(self.UIGROUPself.LST_ATTRi2szCell2);
            
    Lst_SetCell(self.UIGROUPself.LST_ATTRi3szCell3);
        
    end
    end

    -- µã»÷°´Å¥ Á¶»¯
    function uiZhenYuan:ClickRefine()
           
        
    local pItemRefine self:GetZhenYuanRefine1(); -- Ö÷ÕæÔª
        local pItemSub 
    self:GetZhenYuanRefine2(); -- ¸±ÕæÔª    
        
    if ((not pItemRefine) or (not pItemSub)) then
            me
    .Msg("Hãy đặt vào Chân nguyên chính-phụ muốn luyện hóa!");
            return;
        
    end 
        
        local nSelectAttrId 
    Lst_GetCurKey(self.UIGROUPself.LST_ATTR);
        if 
    not nSelectAttrId or nSelectAttrId <= or nSelectAttrId Item.tbZhenYuan.ATTRIB_COUNT then
            me
    .Msg("Xin chọn các thuộc tính muốn luyện hóa để tiến hành!");
            return;
        
    end
        
        local nAttrMagicId 
    Item.tbZhenYuan:GetAttribMagicId(pItemRefinenSelectAttrId);
        --
    local szSubZhenYuan  pItemSub.szName;
        
        -- 
    Á¶»¯
        local nRet 
    Item.tbZhenYuan:ApplyRefine(pItemRefinepItemSubnAttrMagicId);
     
    end

    -- Êó±êÂÓ¹ýÁбí
    function uiZhenYuan:OnListOver(szWndnItemIndex)
        
    local nAttrId Lst_GetCurKey(self.UIGROUPself.LST_ATTR) + 1;
        if (
    szWnd == self.LIST_MEMBER) and nItemIndex >= 0 then
            nAttrId 
    nItemIndex 1;
            --
    self.szTipSelected self.tbAttrList[nAttrId].szTip;
        
    end
        
    --self:UpdateTips(2self.tbAttrList[nAttrId].szTip);
    end

    -- È¡ÏûÁ¶»¯
    function uiZhenYuan:RefineCansel()
        -- 
    todo
        
    for 1do
            --
    self.tbObjRefine[i]:ClearRoom();
        
    end
        self
    .tbObjRefine1:ClearRoom();
        
    self.tbObjRefine2:ClearRoom();
        
    self.tbObjRefine3:ClearRoom();
        
    self:PlaceZhenYuanRefine();
    end

    -- µã»÷°´Å¥ ÐÞÁ¶
    function uiZhenYuan:ClickXiuLian()
        
    me.ApplyZhenYuanEnhance(Item.tbZhenYuan.emZHENYUAN_ENHANCE_XIULIAN)
    end

    -- todo ´íÎó·´À¡

    -- È¡ÏûÐÞÁ¶
    function uiZhenYuan:XiuLianCansel()
        -- 
    todoo
        self
    .tbObjXiuLianZhenYuan:ClearRoom();
        
    self.tbObjExpBook:ClearRoom();
        
    self:PlaceZhenYuanXiuLian();
    end

    -- ·ÅÈëÕæÔª ÐÞÁ¶
    function uiZhenYuan:PlaceZhenYuanXiuLian(pItem)
        
    self:UpdateTips(1);
        
        if (
    not pItemthen
            
    --self:UpdateTips(1);
            return;
        
    end
        
        local tbExpBook 
    self:GetExpBookTab();
        
        
    self:UpdateXiuLianTip(pItemtbExpBook);
    end

    function uiZhenYuan:PlaceExpBook(pDroppPicknXnY)

        
    local tbExpBook self:GetExpBookTab(pDroppPicknXnY);
        
        
    local pZhenYuan self:GetZhenYuanXiuLian();
        if (
    not pZhenYuanthen
            me
    .Msg("Hãy bỏ vào chân nguyên cần tu luyện!");
            return 
    0;
        
    end
        
    --[[
        if (
    pDropthen
            table
    .insert(tbExpBookpDrop);
        
    end--]]
        
        return 
    self:UpdateXiuLianTip(pZhenYuantbExpBook);
    end

    function uiZhenYuan:UpdateXiuLianTip(pItemtbExpBook)
        
    local szTipEx1 "";
        
    local szTipEx2 "";
        if (
    not pItemthen
            self
    :UpdateTips(1"""");
            return 
    0;
        
    end
        
        local nLevelOld 
    Item.tbZhenYuan:GetLevel(pItem);
        
        if (
    tbExpBook and Lib:CountTB(tbExpBook) >= 1then
            local bOver
    nLevelNewnExpRemain Item.tbZhenYuan:GetExpAdded(pItemtbExpBook);
            if (
    == bOverthen
                me
    .Msg("Bạn đã bỏ quá nhiều Sách kinh nghiệm đồng hành!");
                return 
    0;
            
    end
            szTipEx2 
    string.format("   Chân nguyên cấp: %0.2f <color=gold>→ %0.2f<color><enter>"nLevelOldnLevelNew);
        
    end

        local nLiLianTime 
    me.GetTask(Item.tbZhenYuan.EXPSTORE_TASK_MAINItem.tbZhenYuan.EXPSTORE_TASK_SUB);
        if (
    nLiLianTimethen
            local nLevelUp 
    Item.tbZhenYuan:CalExpFromTime(pItemnLiLianTime);
            if (
    math.floor(nLevelUp)) then
                szTipEx1 
    string.format("   Kinh nghiệm luyện tập hiện tại có thể làm cho chân nguyên này tăng đến <color=gold>cấp %d<color>!", (nLevelOld nLevelUp));
            
    end
        end
        self
    :UpdateTips(1szTipEx1szTipEx2);
        return 
    1;
    end

    function uiZhenYuan:UpdateRefine()
        for 
    1do
            --
    Lib:ShowTB(self.tbObjRefine[i]);
            --
    self.tbObjRefine[i]:UpdateRoom();
        
    end
    end

    function uiZhenYuan:UpdateXiuLian()
        
    self:UpdateLiLianInfo();
        --
    self.tbObjXiuLianZhenYuan:UpdateRoom();
        --
    self.tbObjExpBook:UpdateRoom();
    end

    function uiZhenYuan:UpdateLiLianInfo()
        
    local nLiLianTime me.GetTask(Item.tbZhenYuan.EXPSTORE_TASK_MAINItem.tbZhenYuan.EXPSTORE_TASK_SUB);
        
    local tbEnable = {000};
        
    local pItem me.GetItem(Item.ROOM_ZHENYUAN_XIULIAN_ZHENYUAN00);

        if 
    pItem and nLiLianTime 0 then
            local nLevelUp 
    Item.tbZhenYuan:CalExpFromTime(pItemnLiLianTime);
            if 
    nLevelUp >= 1 then
                tbEnable
    [1] = 1;
            
    end
            
            
    if nLevelUp >= 10 then
                tbEnable
    [2] = 1;
            
    end
        end
        
        
    if nLiLianTime 0 then
            tbEnable
    [3] = 1;
            
    Wnd_SetEnable(self.UIGROUP,        self.BTN_LEVEL,     1);
        else
            
    Wnd_SetEnable(self.UIGROUP,        self.BTN_LEVEL,     0);
        
    end
        
        
    --[[
        
    Wnd_SetEnable(self.UIGROUP,        self.BTNLEVEL1,     tbEnable[1]);
        
    Wnd_SetEnable(self.UIGROUP,        self.BTNLEVEL10,     tbEnable[2]);
        
    Wnd_SetEnable(self.UIGROUP,        self.BTNLEVELALL,     tbEnable[3]);
        --]]
        
        
    local szTime "Kinh nghiệm<enter>";
        
    szTime szTime..string.format("%dh%dphút"math.floor(nLiLianTime/60), nLiLianTime%60);
        
    Txt_SetTxt(self.UIGROUP,     self.TXT_BALANCEEXP,     szTime);
    end

    function uiZhenYuan:OnSyncItem(nRoomnXnY)
        
    self:UpdateObjCont();
    end


    function uiZhenYuan:UpdateObjCont()
        
    local nPage self.nCurPageIndex;
        if (
    nPREFINE == nPagethen
            self
    :UpdateRefine();
        else
            
    self:UpdateXiuLian();
        
    end
    end


    -- ×¢²áʼþ¸üлص÷
    function uiZhenYuan:RegisterEvent()
        
    local tbRegEvent 
        {
            { 
    UiNotify.emCOREEVENT_SYNC_ITEM,        self.OnSyncItem},
            { 
    UiNotify.emCOREEVENT_ENHANCE_ZHENYUAN_RESULT,    self.OnResult },
            { 
    UiNotify.emUIEVENT_OBJ_STATE_USE,        self.StateRecvUse},        
        };
        for 
    1do
            --
    tbRegEvent Lib:MergeTable(tbRegEventself.tbObjRefine[i]:RegisterEvent());
        
    end
        tbRegEvent 
    Lib:MergeTable(tbRegEventself.tbObjRefine1:RegisterEvent());
        
    tbRegEvent Lib:MergeTable(tbRegEventself.tbObjRefine2:RegisterEvent());
        
    tbRegEvent Lib:MergeTable(tbRegEventself.tbObjRefine3:RegisterEvent());
        
    tbRegEvent Lib:MergeTable(tbRegEventself.tbObjXiuLianZhenYuan:RegisterEvent());
        
    tbRegEvent Lib:MergeTable(tbRegEventself.tbObjExpBook:RegisterEvent());
        return 
    tbRegEvent;
    end

    -- ×¢²á¼¼ÄܽçÃæOBJµÄÏûÏ¢»Øµ÷
    function uiZhenYuan:RegisterMessage()
        
    local tbRegMsg = {};
        for 
    1do
            --
    tbRegMsg Lib:MergeTable(tbRegMsgself.tbObjRefine[i]:RegisterMessage());
        
    end
        tbRegMsg 
    Lib:MergeTable(tbRegMsgself.tbObjRefine1:RegisterMessage());
        
    tbRegMsg Lib:MergeTable(tbRegMsgself.tbObjRefine2:RegisterMessage());
        
    tbRegMsg Lib:MergeTable(tbRegMsgself.tbObjRefine3:RegisterMessage());
        
    tbRegMsg Lib:MergeTable(tbRegMsgself.tbObjXiuLianZhenYuan:RegisterMessage());
        
    tbRegMsg Lib:MergeTable(tbRegMsgself.tbObjExpBook:RegisterMessage());
        return 
    tbRegMsg;
    end

    function uiZhenYuan:OnResult(nModenResult)
        if (
    Item.tbZhenYuan.emZHENYUAN_ENHANCE_REFINE == nModethen
            
    if (nResult == 1then
                Item
    .tbZhenYuan:RefineResult(self.tbObjRefine1self.tbObjRefine3);    
                 -- 
    ²¥·ÅÌØЧ
                Wnd_Show
    (self.UIGROUPself.IMG_EFFECT);
                    
    Img_PlayAnimation(self.UIGROUPself.IMG_EFFECT);
                    
                    -- 
    Á¶»¯³É¹¦Ö®ºó£¬½á¹û¸ñ×ÓÖÐÓж«Î÷£¬ÔÚÏ´Î×ö²Ù×÷µÄʱºòÒª½«Õâ¸ö¸ñ×ÓÀïµÄ¶«Î÷µ¯³ö
                    self
    .nRefineResult 1;                    
                    
                    
    local pItemRefine self:GetZhenYuanRefine1(); -- Ö÷ÕæÔª
                local pItemSub 
    self:GetZhenYuanRefine2(); -- ¸±ÕæÔª
                
    if (not pItemRefine or not pItemSubthen 
                    
    return;
                
    end
            
    else
                
    me.Msg("Chân nguyên không thể luyện hóa!");
            
    end
            self
    :UpdateTips(1);
        elseif(
    Item.tbZhenYuan.emZHENYUAN_ENHANCE_XIULIAN == nModethen
            
    --self.tbObjXiuLianZhenYuan:ClearRoom();
            
    self.tbObjExpBook:ClearRoom();
            
    self:UpdateLiLianInfo();
            
            
    self:UpdateXiuLianTip();
        
    end
    end

    function uiZhenYuan:ApplyLiLianExp(nType)
        
    local pItem me.GetItem(Item.ROOM_ZHENYUAN_XIULIAN_ZHENYUAN00);
        if 
    pItem then
            me
    .CallServerScript({ "ZhenYuanCmd""ApplyUseLilianTime"pItem.dwIdnType});
        else
            
    me.Msg("Hãy bỏ vào chân nguyên cần tăng kinh nghiệm!");
        
    end
    end

    function uiZhenYuan:OnMouseEnter(szWnd)
        
    local szTip "";
        if 
    szWnd == self.BTNLEVELALL or szWnd == self.BTNLEVEL1 or szWnd == self.BTNLEVEL10 then
            szTip 
    "Dùng kinh nghiệm luyện tập thăng cấp chân nguyên, có thể chọn mật độ thăng cấp<enter>Nếu cấp chân nguyên đã đầy, kinh nghiệm luyện tập còn dư có thể tích lũy và sử dụng";
        
    end
        
    if szWnd == self.BTN_LEVEL then
            szTip 
    "Dùng kinh nghiệm luyện hóa thăng cấp chân nguyên, có thể đặt vào nhiều chân nguyên!";
        
    end
        
        
    if szTip ~= "" then
            Wnd_ShowMouseHoverInfo
    (self.UIGROUPszWnd""szTip);
        
    end
    end

    function uiZhenYuan:StateRecvUse(szUiGroup)
        if 
    szUiGroup == self.szUiGroup then
            
    return;
        
    end
        
        
    if (UiManager:WindowVisible(self.UIGROUP) ~= 1then
            
    return;
        
    end
        
        
    if self.nCurPageIndex ~= nPXIULIAN then
            
    return;
        
    end
        
        local tbObj 
    tbMouse:GetObj();
        if 
    not tbObj then
            
    return;
        
    end
        local pItem 
    me.GetItem(tbObj.nRoomtbObj.nXtbObj.nY);
        
        if (
    pItem.IsEquip() == 1then
            self
    .tbObjXiuLianZhenYuan:ClearRoom();
            
    self.tbObjXiuLianZhenYuan:SpecialStateRecvUse();
        else
            
    self.tbObjExpBook:SpecialStateRecvUse();
        
    end    
    end 


    fightpower.lua

    PHP Code:
    local uiFightPower Ui:GetClass("fightpower");

    local MAX_ENHTIMES    16;

    uiFightPower.BTN_CLOSE                    "BtnClose";            -- 关闭按钮
    uiFightPower
    .PAGE_SET_MAIN                "PageSetMain";        -- 分页集
    uiFightPower
    .PAGE_MAIN                    =
    {    --     
    页按钮                页名
        
    "BtnPageTotal",        "PageTotal", },
        { 
    "BtnPageEquip",         "PageEquip", },
    };
    uiFightPower.TXT_INSTRUCTION            "TxtInstruction";        -- 简要说明

    uiFightPower
    .TXT_TOTAL_POWER            "TxtTotalPower";        -- 总战斗力值
    uiFightPower
    .TXT_RANK                    "TxtTotalPowerRank";    -- 排名
    uiFightPower
    .BTN_LADDER                    "BtnLadder";            -- 排行榜
    uiFightPower
    .OUTLOOK_TOTAL_POWER        "OutLookTotalPower";    -- 展开面板

    uiFightPower
    .SCROLL_EQUIP                "ScrollEquip";        -- 滑动面板
    uiFightPower
    .PAGE_SET_EQUIP                "PageSetEquip";        -- 装备详情分页集
    uiFightPower
    .PAGE_EQUIP                    =
    {    --     
    页按钮                     页名
        
    "BtnPageUsedEquip",        "PageUsedEquip",        },
        { 
    "BtnPageReservedEquip",     "PageReservedEquip",    },
        { 
    "BtnPageExpandEquip",     "PageExpandedEquip",    },
    };
    uiFightPower.WND_EQUIP_LIST_RE                
    {    -- 
    装备类名             强化战斗力                                    
        
    "TxtHatR",        "ProgHatR",            "TxtProgHatR",        nPos Item.EQUIPEXPOS_HEAD,        },
        { 
    "TxtBodyR",        "ProgBodyR",        "TxtProgBodyR",        nPos Item.EQUIPEXPOS_BODY,        },
        { 
    "TxtBeltR",        "ProgBeltR",        "TxtProgBeltR",        nPos Item.EQUIPEXPOS_BELT,        },
        { 
    "TxtBracerR",        "ProgBracerR",         "TxtProgBracerR",    nPos Item.EQUIPEXPOS_CUFF,        },
        { 
    "TxtShoeR",        "ProgShoeR",        "TxtProgShoeR",        nPos Item.EQUIPEXPOS_FOOT,        },
        { 
    "TxtWeaponR",        "ProgWeaponR",        "TxtProgWeaponR",    nPos Item.EQUIPEXPOS_WEAPON,        },
        { 
    "TxtNecklaceR",    "ProgNecklaceR",    "TxtProgNecklaceR",    nPos Item.EQUIPEXPOS_NECKLACE,    },
        { 
    "TxtRingR",        "ProgRingR",        "TxtProgRingR",        nPos Item.EQUIPEXPOS_RING,        },
        { 
    "TxtPendantR",     "ProgPendantR",        "TxtProgPendantR",    nPos Item.EQUIPEXPOS_PENDANT,        },
        { 
    "TxtAmuletR",        "ProgAmuletR",        "TxtProgAmuletR",    nPos Item.EQUIPEXPOS_AMULET,        },
    };
    uiFightPower.WND_EQUIP_LIST_EX                
    {    -- 
    装备类名             强化战斗力                                 
        
    "TxtHatE",        "ProgHatE",            "TxtProgHatE",        nPos Item.EQUIPEXPOS_HEAD,        },
        { 
    "TxtBodyE",        "ProgBodyE",        "TxtProgBodyE",        nPos Item.EQUIPEXPOS_BODY,        },
        { 
    "TxtBeltE",        "ProgBeltE",        "TxtProgBeltE",        nPos Item.EQUIPEXPOS_BELT,        },
        { 
    "TxtBracerE",        "ProgBracerE",         "TxtProgBracerE",    nPos Item.EQUIPEXPOS_CUFF,        },
        { 
    "TxtShoeE",        "ProgShoeE",        "TxtProgShoeE",        nPos Item.EQUIPEXPOS_FOOT,        },
        { 
    "TxtWeaponE",        "ProgWeaponE",        "TxtProgWeaponE",    nPos Item.EQUIPEXPOS_WEAPON,        },
        { 
    "TxtNecklaceE",    "ProgNecklaceE",    "TxtProgNecklaceE",    nPos Item.EQUIPEXPOS_NECKLACE,    },
        { 
    "TxtRingE",        "ProgRingE",        "TxtProgRingE",        nPos Item.EQUIPEXPOS_RING,        },
        { 
    "TxtPendantE",     "ProgPendantE",        "TxtProgPendantE",    nPos Item.EQUIPEXPOS_PENDANT,        },
        { 
    "TxtAmuletE",        "ProgAmuletE",        "TxtProgAmuletE",    nPos Item.EQUIPEXPOS_AMULET,        },
    };
    uiFightPower.WND_EQUIP_LIST_USED =
    {-- 
    装备类名         装备战斗力                炼化战斗力                    强化战斗力进度    进度条文字        
        
    "TxtHat",        "TxtBasePowerHat",        "TxtRefinePowerHat",        "ProgHat",        "TxtProgHat",        nPos Item.EQUIPPOS_HEAD,        },
        { 
    "TxtBody",    "TxtBasePowerBody",        "TxtRefinePowerBody",        "ProgBody",        "TxtProgBody",        nPos Item.EQUIPPOS_BODY,        },
        { 
    "TxtBelt",    "TxtBasePowerBelt",        "TxtRefinePowerBelt",        "ProgBelt",        "TxtProgBelt",        nPos Item.EQUIPPOS_BELT,        },
        { 
    "TxtBracer",    "TxtBasePowerBracer",    "TxtRefinePowerBracer",        "ProgBracer",     "TxtProgBracer",    nPos Item.EQUIPPOS_CUFF,        },
        { 
    "TxtShoe",    "TxtBasePowerShoe",        "TxtRefinePowerShoe",        "ProgShoe",     "TxtProgShoe",        nPos Item.EQUIPPOS_FOOT,        },
        { 
    "TxtWeapon",    "TxtBasePowerWeapon",    "TxtRefinePowerWeapon",        "ProgWeapon",    "TxtProgWeapon",    nPos Item.EQUIPPOS_WEAPON,    },
        { 
    "TxtNecklace","TxtBasePowerNecklace",    "TxtRefinePowerNecklace",    "ProgNecklace",    "TxtProgNecklace",    nPos Item.EQUIPPOS_NECKLACE,    },
        { 
    "TxtRing",    "TxtBasePowerRing",        "TxtRefinePowerRing",        "ProgRing",        "TxtProgRing",        nPos Item.EQUIPPOS_RING,        },
        { 
    "TxtPendant""TxtBasePowerPendant",    "TxtRefinePowerPendant",    "ProgPendant",    "TxtProgPendant",    nPos Item.EQUIPPOS_PENDANT,    },
        { 
    "TxtAmulet",    "TxtBasePowerAmulet",    "TxtRefinePowerAmulet",        "ProgAmulet",    "TxtProgAmulet",    nPos Item.EQUIPPOS_AMULET,    },
        { 
    "TxtMantle",    "TxtBasePowerMantle",    nPos Item.EQUIPPOS_MANTLE,    },        -- 披风
        
    "TxtSignet",    "TxtBasePowerSignet",    nPos Item.EQUIPPOS_SIGNET,    },        -- 印鉴-五行印
        
    "TxtMiJi",    "TxtBasePowerMiJi",        nPos Item.EQUIPPOS_BOOK,        },        -- 秘籍
        
    "TxtZhenFa",    "TxtBasePowerZhenFa",    nPos Item.EQUIPPOS_ZHEN,        },        -- 阵法
        
    "TxtChop",    "TxtBasePowerChop",        nPos Item.EQUIPPOS_CHOP,        },        -- 官印
    }

    uiFightPower.TXT_EXPAND_EQUIP 
    {    -- 
    强化战斗力系数            
    }

    function 
    uiFightPower:Init()
        
    self.m_nPageNum            2;        -- 页面总数
        self
    .m_nCurPageIndex    1;        -- 当前页
        self
    .tbEquipRoomInfo    =            -- 用来获取装备战斗力
        
    {    --          装备类型        道具容器号
            
    szSuitName "Hiện tại"nRoomId Item.ROOM_EQUIP,    tbSuit self.WND_EQUIP_LIST_USED,    },
            { 
    szSuitName "Đồ dự phòng"nRoomId Item.ROOM_EQUIPEX,    tbSuit self.WND_EQUIP_LIST_RE,     },
            { 
    szSuitName "Chiến hồn"nRoomId Item.ROOM_EQUIPEX2,    tbSuit self.WND_EQUIP_LIST_EX,     },
        }
        
    self.tbInstruction        
        {
            
    tbTotal = {"Chân nguyên""Trang bị""Đồng hành""Thành tựu""Cấp"},
            
    tbEquip    = {},
        }
    end

    function uiFightPower:OnOpen()
        
    self:LoadInstructionText();
        if (
    not self.bLoadInstructionthen
            self
    .bLoadInstruction 1;
            
        
    end
        self
    .m_nCurPageIndex    1;
        
    self:UpdatePageMain();
    end

    function uiFightPower:UpdatePageMain()
        if (
    == self.m_nCurPageIndexthen
            self
    :UpdatePageTotalPower();
        elseif 
    == self.m_nCurPageIndex then
            self
    .nEquipCurPageIndex        1;
            
    self:UpdatePageEquip();
        
    end
        PgSet_ActivePage
    (self.UIGROUPself.PAGE_SET_MAINself.PAGE_MAIN[self.m_nCurPageIndex][2]);
    end

    function uiFightPower:UpdatePageTotalPower()
        
    self:ShowOutlookWnd();
        
    Txt_SetTxt(self.UIGROUPself.TXT_TOTAL_POWERself:FormatValue(self.nTotalFightPower));
        
        
    local nRank        Player.tbFightPower:GetRank(me);
        
    local szRank    = ((~= nRank) and ("Hạng "..nRank..".") or "Chưa xếp hạng");
        
    Txt_SetTxt(self.UIGROUPself.TXT_RANKszRank);
        
        
    Txt_SetTxt(self.UIGROUPself.TXT_INSTRUCTIONself.tbInstruction[1][0]);
    end

    function uiFightPower:OnOutLookItemSelected(szWndNamenGroupIndexnItemIndex)
        
    self.nCurGroupId nGroupIndex;
        if (
    not self.tbInstructionthen
            
    return;
        
    end
        Txt_SetTxt
    (self.UIGROUPself.TXT_INSTRUCTIONself.tbInstruction[1][nGroupIndex+1]);
    end

    function uiFightPower:ShowOutlookWnd()
        
    OutLookPanelClearAll(self.UIGROUPself.OUTLOOK_TOTAL_POWER);
        
    AddOutLookPanelColumnHeader(self.UIGROUPself.OUTLOOK_TOTAL_POWER"");
        
    AddOutLookPanelColumnHeader(self.UIGROUPself.OUTLOOK_TOTAL_POWER"");
        
    AddOutLookPanelColumnHeader(self.UIGROUPself.OUTLOOK_TOTAL_POWER"");
        
    SetOutLookHeaderWidth(self.UIGROUPself.OUTLOOK_TOTAL_POWER0120);
        
    SetOutLookHeaderWidth(self.UIGROUPself.OUTLOOK_TOTAL_POWER1120);
        
    SetOutLookHeaderWidth(self.UIGROUPself.OUTLOOK_TOTAL_POWER250);
        
    local tbSet self:GetTotalFightPowerInfo();
        if (
    not tbSetthen
            
    return;
        
    end
        
    for 1#tbSet do
            
    AddOutLookGroup(self.UIGROUPself.OUTLOOK_TOTAL_POWERtbSet[i].szName);
            
    local tbContent tbSet[i].tbContent;
            if 
    tbContent then
                
    for 1#tbContent do
                    
    local nRet AddOutLookItem(self.UIGROUPself.OUTLOOK_TOTAL_POWER1tbContent[j]);
                
    end
                
    if ~= 1 then
                    SetGroupCollapseState
    (self.UIGROUPself.OUTLOOK_TOTAL_POWER10);
                
    end
            end
        end
    end

    function uiFightPower:GetTotalFightPowerInfo()
        
    local tbInfo = {};
        
    self.nTotalFightPower 0;
        
        for 
    1do
            
    local tbGroup = {};
            if (
    == ithen
                local nTotalSum 
    0;
                
    nTotalSumtbGroup.tbContent   self:GetZhenyuanInfo();
                
    local szSum self:FormatValue(nTotalSum);
                
    tbGroup.szName    self:GetFormatString("Chân nguyên"szSum"");
                
    self.nTotalFightPower self.nTotalFightPower nTotalSum;
            elseif (
    == ithen
                local nTotalSum 
    0;
                
    nTotalSumtbGroup.tbContent   self:GetEquipFightPowerSum();
                
    local szSum self:FormatValue(nTotalSum);
                
    tbGroup.szName    self:GetFormatString("Trang bị"szSum"");
                
    self.nTotalFightPower self.nTotalFightPower nTotalSum;
            elseif (
    == ithen
                local nTotalSum 
    0;
                
    nTotalSumtbGroup.tbContent   self:GetPartnerInfo();
                
    local szSum self:FormatValue(nTotalSum);
                
    tbGroup.szName    self:GetFormatString("Đồng hành"szSum"");
                
    self.nTotalFightPower self.nTotalFightPower nTotalSum;
                
            elseif (
    == ithen
                local nAchievPower    
    Player.tbFightPower:GetPlayerAchievementPoint(me);
                
    local nAchievRank    Player.tbFightPower:GetAchievementRank(me);  --todo
                local szAchievRank    
    = ((== nAchievRank) and "Chưa xếp hạng") or ("Hạng "..nAchievRank..".");
                
    local szResult self:FormatValue(nAchievPower);
                
    tbGroup.szName    self:GetFormatString("Thành tựu"szResult"");
                
    tbGroup.tbContent   = {};
                
    tbGroup.tbContent[1]= {"Thành tựu""+"..nAchievPowerszAchievRank};
                
    self.nTotalFightPower self.nTotalFightPower nAchievPower;
            elseif (
    == ithen
                local nLevelPower    
    Player.tbFightPower:GetPlayerLevelPoint(me);
                
    local nLevelRank    Player.tbFightPower:GetLevelRank(me);    --todo
                local szLevelRank    
    = ((== nLevelRank) and "Chưa xếp hạng") or ("Hạng "..nLevelRank..".");
                
    local szResult self:FormatValue(nLevelPower);
                
    tbGroup.szName    self:GetFormatString("Cấp"szResult"");
                
    tbGroup.tbContent   = {};
                
    tbGroup.tbContent[1]= {"Cấp""+"..nLevelPowerszLevelRank};
                
    self.nTotalFightPower self.nTotalFightPower nLevelPower;
            
    end
            tbInfo
    [i] = tbGroup;
        
    end
        
    return tbInfo;
    end

    function uiFightPower:GetFormatString(szPreszMidszSuf)
        
    local nSize    30;
        
    local szResult "  "..szPre;
        
    local nPreLen #szResult;
        
    for 121 nPreLen do
            
    szResult szResult.." ";
        
    end
        local nMidLen 
    #szMid;
        
    szResult szResult..szMid;
        for 
    120 nMidLen do
            
    szResult szResult.." ";
        
    end
        szResult 
    szResult..szSuf;
        
    local nSufLen #szResult;
        
    for 155 nSufLen do
            
    szResult szResult.." ";
        
    end
        
    return szResult;
    end

    function uiFightPower:GetZhenyuanInfo()
        
    local nTotalPower        0;
        
    local tbZhenyuanInfo    nil;
        
        
    local tbFind = {};
        
    tbFind me.FindClassItem(Item.ROOM_EQUIP"zhenyuan");    -- 装备栏
        
    for _tbFind in pairs(tbFind) do
            if (
    not tbZhenyuanInfothen
                tbZhenyuanInfo 
    = {};
            
    end
            local pItem 
    tbFind.pItem;
            
    local szName pItem.szName;
            
    local nFightPower Item.tbZhenYuan:GetFightPower(pItem);    -- 取战斗力
            local nRank 
    Item.tbZhenYuan:GetRank(pItem);  -- 取排名
            local szFightPower 
    string.format("%d"nFightPower);
            
    local szRank;
            if 
    nRank == 0 then
                 szRank 
    "Chưa xếp hạng";
               else
                
    szRank string.format("Hạng %d"nRank);
            
    end
            local tbItem 
    = {szNameszFightPowerszRank};
            
    table.insert(tbZhenyuanInfotbItem);
            
    nTotalPower nTotalPower nFightPower;
        
    end
        
        tbFind 
    me.FindClassItemOnPlayer("zhenyuan");        -- 背包,仓库
        
    for _tbFind in pairs(tbFind) do
            if (
    not tbZhenyuanInfothen
                tbZhenyuanInfo 
    = {};
            
    end
            local pItem 
    tbFind.pItem;
            
    local szName pItem.szName;
            
    local nRank Item.tbZhenYuan:GetRank(pItem);  -- 取排名
            local szRank 
    string.format("Hạng %d"nRank);
            if 
    nRank == 0 then
                 szRank 
    "Chưa xếp hạng";
               else
                
    szRank string.format("Hạng %d"nRank);
            
    end
            local tbItem 
    = {szName"Chưa trang bị"szRank};
            
    table.insert(tbZhenyuanInfotbItem);
        
    end
        
        
    if (not tbZhenyuanInfothen
            tbZhenyuanInfo    
    = {{"Hiện tại bạn không có chân nguyên"""""}};
        
    end

        
    return nTotalPower,tbZhenyuanInfo;
    end

    function uiFightPower:GetEquipFightPowerSum()
        if (
    not self.tbEquipRoomInfothen
            
    return {};
        
    end
        local tbEquipFightPowerSum 
    = {};--{ {"Hiện tại""+26"""} };
        
    local nTotalSum 0;
        for 
    1#self.tbEquipRoomInfo do
            
    local tbEquipInfo            = {};
            
    local nCumulateFightPower    0;    
            
    local nRoomIndex            self.tbEquipRoomInfo[i].nRoomId;
            
    local tbSuit                self.tbEquipRoomInfo[i].tbSuit;
            for 
    1#tbSuit do
                
    local pItem me.GetItem(nRoomIndextbSuit[j].nPos0);
                if 
    pItem then
                    nCumulateFightPower 
    nCumulateFightPower self:GetSingleFightPower(pItemij);
                
    end
            end
            tbEquipInfo
    [1]    = self.tbEquipRoomInfo[i].szSuitName;            -- 装备套名称
            tbEquipInfo
    [2]    = self:FormatValue(nCumulateFightPower);        -- 对应装备套的总战斗
            tbEquipInfo
    [3]    = "";
            
            
    tbEquipFightPowerSum[i]    = tbEquipInfo;
            
    nTotalSum nTotalSum nCumulateFightPower;
        
    end
        
    return nTotalSumtbEquipFightPowerSum;
    end

    function uiFightPower:GetSingleFightPower(pItemnEquipTypenEquipId)
        if (
    not pItemthen
            
    return nil;
        
    end
        local nValue
    ;
        if (
    == nEquipTypethen        -- 备用装备
            nValue 
    pItem.CalcExtraFightPower(pItem.nEnhTimes0);
        elseif (
    == nEquipTypethen    -- 战魂装备
            nValue 
    pItem.CalcExtraFightPower(pItem.nEnhTimes0) / 2;
        else                            -- 
    当前装备
            
    if (11 nEquipIdthen
                nValue 
    pItem.CalcFightPower();
            else
                
    nValue self:GetSpecEquipPower(nEquipId);
            
    end
        end
        
    return nValue;
    end

    function uiFightPower:GetPartnerInfo()
        
    local tbAllPartner    = { };
        
    local tbPartnerFightPower = {};
        
    local nTotalPower    0;
        
    local nActivePower    0;
        for 
    1me.nPartnerCount do
            
    local nPartnerId 1;
            
    local tbPartnerInfo = {};
            
    local pPartner me.GetPartner(nPartnerId);
            if 
    not pPartner then
                
    print("Failed to find partner: me.GetPartner("..(nPartnerId)..")");
                break;
            
    end
            local nFightPower 
    Player.tbFightPower:GetPartnerFightPower(pPartnerme);
            if (
    nPartnerId == me.nActivePartnerthen
                nFightPower 
    nFightPower;
            
    end
            
            table
    .insert(tbPartnerFightPower, {nFightPoweri});
            
            
    tbPartnerInfo[1] = pPartner.szName;
            
    tbPartnerInfo[2] = self:FormatValue(nFightPower);
            
    tbPartnerInfo[3] = ((nPartnerId == me.nActivePartner) and "Ra tay") or "Chưa làm";
        
            
    tbAllPartner[i] = tbPartnerInfo;
        
    end
        
        table
    .sort(tbPartnerFightPower, function(ab) return a[1] > b[1end);
        
        for 
    itbInfo in pairs(tbPartnerFightPower) do
            
    local nPower tbInfo[1];
            
    local nIndex tbInfo[2];
            
            if (
    <= Partner.VALUE_CALC_MAX_NUMthen
                nTotalPower 
    nTotalPower nPower;
            else
                
    tbAllPartner[nIndex][2] = self:FormatValue(0);
                
    tbAllPartner[nIndex][3] = "Không cộng dồn";
            
    end
        end
            
        
    if (== #tbAllPartner) then
            
    tbAllPartner[1] = {"Hiện tại bạn không có đồng hành"""""};
        
    end
        
    return nTotalPowertbAllPartner;
    end

    function uiFightPower:UpdatePageEquip()
        if 
    == self.nEquipCurPageIndex then
            self
    :UpdatePageEquipUsed();
        elseif 
    == self.nEquipCurPageIndex then
            self
    :UpdatePageEquipReserved();
        elseif 
    == self.nEquipCurPageIndex then
            self
    :UpdatePageEquipExpand();
        
    end
        PgSet_ActivePage
    (self.UIGROUPself.PAGE_SET_EQUIPself.PAGE_EQUIP[self.nEquipCurPageIndex][2]);
    end

    function uiFightPower:UpdatePageEquipUsed()
        
    local tbData    self:GetUsedEquipData();
        
    local tbWnd        self.WND_EQUIP_LIST_USED;
        for 
    1#tbWnd do
            
    Wnd_SetTip(self.UIGROUPtbWnd[i][1], tbData[i][1]);        -- Tips显示装备的名称
            Txt_SetTxt
    (self.UIGROUPtbWnd[i][2], tbData[i][2]);        -- 装备的基本战斗力
            
    if (11 ithen
                Txt_SetTxt
    (self.UIGROUPtbWnd[i][3], tbData[i][3]);        -- 装备的炼化战斗力
                Prg_SetPos
    (self.UIGROUPtbWnd[i][4], tbData[i][4]);        -- 进度条
                Txt_SetTxt
    (self.UIGROUPtbWnd[i][5], tbData[i][5]);        -- 进度条文字
                Wnd_SetTip
    (self.UIGROUPtbWnd[i][5], tbData[i][6]);        -- Tips强化
            end
        end
        Txt_SetTxt
    (self.UIGROUPself.TXT_INSTRUCTIONself.tbInstruction[2][1]);
    end

    function uiFightPower:GetUsedEquipData()
        
    local tbData = {};
        
        for 
    1#self.WND_EQUIP_LIST_USED do
            
    local tbCloth    = {};
            
    local pItem        me.GetItem(Item.ROOM_EQUIPself.WND_EQUIP_LIST_USED[i].nPos0);
            if (
    not pItemthen
            end
            tbCloth
    [1]        = (pItem and pItem.szName) or ("Chưa trang bị");
            if (
    11 ithen
                tbCloth
    [2]        = (pItem and (self:FormatValue(pItem.nFightPower))) or "--";
                
    tbCloth[3]        = (pItem and (self:FormatValue(pItem.CalcExtraFightPower(0pItem.nRefineLevel)))) or "--";
                
    local nCurEnhPower 0;
                
    local nMaxEnhPower 0;
                
    local nNxtEnhPower nil;
                
    local nNxtEnhTimes nil;
                
    local szEnhTip    "";
                if 
    pItem then
                    local nEnhaceMaxTimes    
    Item:CalcMaxEnhanceTimes(pItem);    -- 最高强化次数
                    nCurEnhPower 
    pItem.CalcExtraFightPower(pItem.nEnhTimes0);
                    
    nMaxEnhPower pItem.CalcExtraFightPower(nEnhaceMaxTimes0);
                
                    
    nNxtEnhTimes pItem.nEnhTimes 1;
                    if (
    nEnhaceMaxTimes == nNxtEnhTimesthen
                        nNxtEnhTimes 
    nEnhaceMaxTimes;
                        
    nNxtEnhPower nMaxEnhPower;
                    else
                        
    nNxtEnhTimesnNxtEnhPower self:GetNextEnhancPowerLevel(pItempItem.nEnhTimesnCurEnhPower);
                    
    end
                
                    szEnhTip    
    "[Hiện tại]<enter>".."Cường hóa+"..pItem.nEnhTimes.."Hiệu quả: sức chiến đấu"..self:FormatValue(nCurEnhPower);
                    
    local bMaxEnhPower    nCurEnhPower >= nMaxEnhPower;
                    if (
    ~= pItem.IsWhite()) then
                        
    if not bMaxEnhPower then
                            
    if (nNxtEnhTimes and pItem.nEnhTimes ~= nEnhaceMaxTimesthen
                                szEnhTip    
    = (szEnhTip.."<color=green><enter>[Cấp kế]<enter>Cường hóa+"..(nNxtEnhTimes).."Hiệu quả: sức chiến đấu"..self:FormatValue(nNxtEnhPower).."<color>");
                            
    end
                            szEnhTip    
    szEnhTip.."<color=red><enter><enter>[Cao nhất]<enter>Cường hóa+"..nEnhaceMaxTimes.."Hiệu quả: sức chiến đấu"..self:FormatValue(nMaxEnhPower).."<color>";
                        
    end
                        
                    
    else
                        
    nMaxEnhPower 0;
                        
    bMaxEnhPower true;
                    
    end
                    
    if bMaxEnhPower then
                        szEnhTip    
    szEnhTip.."<enter><color=red>Đã đạt điểm cao nhất<color>";
                    
    end
                    
    if nEnhaceMaxTimes ~= MAX_ENHTIMES then 
                        szEnhTip    
    szEnhTip.."<enter><enter><color=green>Cấp cao có thể dùng trang bị +16, sức chiến đấu +"..pItem.CalcExtraFightPower(MAX_ENHTIMES0).."<color>";
                    
    end
                end
                tbCloth
    [4]        = (pItem and (nCurEnhPower/nMaxEnhPower  1000)) or 0;
                
    tbCloth[5]        = (pItem and (self:FormatValue(nCurEnhPowernMaxEnhPower))) or "--/--";
            
                
    tbCloth[6]        = (pItem and szEnhTip) or "Chưa trang bị";    
            else    
                
    local szValue "--";
                if (
    pItemthen
                    szValue 
    self:FormatValue((self:GetSpecEquipPower(i)));
                
    end
                tbCloth
    [2]        = szValue;
            
    end
            
            tbData
    [i]         = tbCloth;
        
    end
        
    return tbData;
    end

    function uiFightPower:GetNextEnhancPowerLevel(pItemnNowEnhanceTimesnNowEnhanceFightPower)
        if (
    not pItemthen
            
    return nilnil;
        
    end
        local nEnhaceMaxTimes    
    Item:CalcMaxEnhanceTimes(pItem);    -- 最高强化次数
        
    if (nNowEnhanceTimes nEnhaceMaxTimesthen
            
    return nilnil;
        
    end
        local nEnhTimes 
    nNowEnhanceTimes;
        
    local nEnhFightPower nNowEnhanceFightPower;
        
    local nFactor Item.tbEnhanceOfEquipPos[pItem.nEquipPos] or 1;
        for 
    = (nNowEnhanceTimes 1), nEnhaceMaxTimes do
            
    nEnhTimes i;
            
    nEnhFightPower Item.tbEnhanceFightPower[nEnhTimes] * nFactor;
            if (
    nEnhFightPower nNowEnhanceFightPowerthen
                
    return nEnhTimesnEnhFightPower;
            
    end
        end
        
    return nil,nil;
    end

    function uiFightPower:GetSpecEquipPower(nEquipId)
        
    local nValue nil;
        if (
    11 == nEquipIdthen    -- 披风
            nValue 
    Player.tbFightPower:GetPiFengPower(me);
        elseif(
    12 == nEquipIdthen    -- 五行印
            nValue 
    Player.tbFightPower:Get5XingYinPower(me);
        elseif(
    13 == nEquipIdthen    -- 秘籍
            nValue 
    Player.tbFightPower:GetMiJiPower(me);
        elseif(
    14 == nEquipIdthen    -- 阵法
            nValue 
    Player.tbFightPower:GetZhenFaPower(me);
        elseif(
    15 == nEquipIdthen    -- 官印
            nValue 
    Player.tbFightPower:GetGuanYinPower(me);
        
    end
        
    return nValue;
    end

    function uiFightPower:UpdatePageEquipReserved()
        
    self.tbCurWndList    self.WND_EQUIP_LIST_RE;
        
    self:UpdatePageEquipEx(Item.ROOM_EQUIPEXself.WND_EQUIP_LIST_RE1);
        
    Txt_SetTxt(self.UIGROUPself.TXT_INSTRUCTIONself.tbInstruction[2][2]);
    end

    function uiFightPower:UpdatePageEquipEx(nRoomIdtbWndListnParam)
        
    local tbData    self:GetEquipDataEx(nRoomIdtbWndListnParam);
        
    local tbWnd        self.tbCurWndList;
        for 
    1#tbWnd do
            
    Wnd_SetTip(self.UIGROUPtbWnd[i][1], tbData[i][1]);        -- Tips显示装备的名称
            Prg_SetPos
    (self.UIGROUPtbWnd[i][2], tbData[i][2]);        -- 进度条
            Txt_SetTxt
    (self.UIGROUPtbWnd[i][3], tbData[i][3]);        -- 进度条文字
            Wnd_SetTip
    (self.UIGROUPtbWnd[i][3], tbData[i][4]);        -- Tips强化
        end
    end


    function uiFightPower:GetEquipDataEx(nRoomIdtbWndListnParam)
        
    local tbData = {};
        
        for 
    1#self.tbCurWndList do
            
    local tbCloth    = {};
            
    local pItem        me.GetItem(nRoomIdtbWndList[i].nPos0);
            if (
    not pItemthen
            end
            tbCloth
    [1]        = (pItem and pItem.szName) or "Chưa trang bị";
            
    local nCurEnhPower 0;
            
    local nMaxEnhPower 0;
            
    local nNxtEnhPower nil;
            
    local nNxtEnhTimes nil;
            
    local szEnhTip "";
            if 
    pItem then
                local nEnhaceMaxTimes    
    Item:CalcMaxEnhanceTimes(pItem);    -- 最高强化次数
                nCurEnhPower 
    pItem.CalcExtraFightPower(pItem.nEnhTimes0) / nParam;
                
    nMaxEnhPower pItem.CalcExtraFightPower(nEnhaceMaxTimes0) / nParam;
                
    nNxtEnhTimes pItem.nEnhTimes 1;
                if (
    nEnhaceMaxTimes == nNxtEnhTimesthen
                    nNxtEnhTimes 
    nEnhaceMaxTimes;
                    
    nNxtEnhPower nMaxEnhPower;
                elseif (
    pItem.nEnhTimes == nEnhaceMaxTimesthen
                    nNxtEnhTimes 
    nil;
                    
    nNxtEnhPower nil;
                else
                    
    nNxtEnhTimesnNxtEnhPower self:GetNextEnhancPowerLevel(pItempItem.nEnhTimesnCurEnhPower nParam);
                    if (
    nNxtEnhPowerthen
                        nNxtEnhPower 
    nNxtEnhPower nParam;
                    
    end
                end
                
                szEnhTip    
    "[Hiện tại]<enter>".."Cường hóa+"..pItem.nEnhTimes.."Hiệu quả: sức chiến đấu"..self:FormatValue(nCurEnhPower);
                
    local bMaxEnhPower    nCurEnhPower >= nMaxEnhPower;
                if (
    ~= pItem.IsWhite()) then
                    
    if not bMaxEnhPower then
                        
    if (nNxtEnhTimes and pItem.nEnhTimes ~= nEnhaceMaxTimesthen
                            szEnhTip    
    = (szEnhTip.."<color=green><enter>[Cấp kế]<enter>Cường hóa+"..(nNxtEnhTimes).."Hiệu quả: sức chiến đấu"..self:FormatValue(nNxtEnhPower).."<color>");
                        
    end
                        szEnhTip    
    szEnhTip.."<color=red><enter><enter>[Cao nhất]<enter>Cường hóa+"..nEnhaceMaxTimes.."Hiệu quả: sức chiến đấu"..self:FormatValue(nMaxEnhPower).."<color>";
                    
    end
                        
                
    else
                    
    nMaxEnhPower 0;
                    
    bMaxEnhPower true;
                
    end
                
    if bMaxEnhPower then
                    szEnhTip    
    szEnhTip.."<enter><color=red>Đã đạt điểm cao nhất<color>";
                
    end
                
    if nEnhaceMaxTimes ~= MAX_ENHTIMES then 
                    szEnhTip    
    szEnhTip.."<enter><enter><color=green>Cấp cao có thể dùng trang bị +"..MAX_ENHTIMES..", sức chiến đấu +"..(pItem.CalcExtraFightPower(MAX_ENHTIMES0) / nParam).."<color>";
                
    end
            end
            tbCloth
    [2]        = (pItem and (nCurEnhPower/nMaxEnhPower  1000)) or 0;
            
    tbCloth[3]        = (pItem and (self:FormatValue(nCurEnhPowernMaxEnhPower))) or "--/--";
            
    tbCloth[4]        = (pItem and szEnhTip) or "Chưa trang bị";    
            
            
    tbData[i]         = tbCloth;
        
    end
        
    return tbData;
    end

    function uiFightPower:UpdatePageEquipExpand()
        
    self.tbCurWndList    self.WND_EQUIP_LIST_EX;
        
    self:UpdatePageEquipEx(Item.ROOM_EQUIPEX2self.WND_EQUIP_LIST_EX2);        -- 以后加上
        Txt_SetTxt
    (self.UIGROUPself.TXT_INSTRUCTIONself.tbInstruction[2][3]);
    end

    function uiFightPower:OnButtonClick(szWndnParam)
        if (
    szWnd == self.BTN_CLOSEthen
            UiManager
    :CloseWindow(self.UIGROUP);
        elseif (
    szWnd == self.BTN_LADDERthen
            local nSelGroupId
    nSelItemId GetOutLookCurSelItemIdx(self.UIGROUPself.OUTLOOK_TOTAL_POWER);
            
    local nGen 1;
            if (
    nSelGroupIdthen
                
    if (== nSelGroupIdthen
                    nGen 
    3;
                elseif(
    == nSelGroupIdthen
                    nGen 
    2;
                elseif(
    == nSelGroupIdthen
                    nGen 
    4;
                else
                    
    nGen 1;
                
    end
            end
            UiManager
    :SwitchWindow(Ui.UI_LADDER7nGen);
        
    end

        
    for 1,do
            if (
    szWnd == self.PAGE_MAIN[i][1]) then
                self
    .m_nCurPageIndex    i;
                
    self:UpdatePageMain();
                return;
            
    end
        end
        
    for 1,do
            if (
    szWnd == self.PAGE_EQUIP[i][1]) then
                self
    .nEquipCurPageIndex    i;
                
    self:UpdatePageEquip();
                return;
            
    end
        end
    end

    function uiFightPower:LoadInstructionText()
        
    local tbFile Lib:LoadTabFile("\\setting\\fightpower\\instruction.txt");
        if (
    not tbFilethen
            
    print("[fightpower]Failed to load file instruction.txt!");
        else
            
    local tbInfo    = {};
            for 
    _tbRow in ipairs(tbFile) do
                
    local nMainId    tonumber(tbRow.mainid);
                
    local nSubId    tonumber(tbRow.subid);
                
    local strText    tostring(tbRow.text);
            
                if (
    not tbInfo[nMainId]) then
                    tbInfo
    [nMainId] = {};
                
    end
                
    if (not tbInfo[nMainId][nSubId]) then
                    tbInfo
    [nMainId][nSubId] = {};
                
    end
            
                tbInfo
    [nMainId][nSubId] = strText;
            
    end
            self
    .tbInstruction tbInfo;
        
    end
        
        local tbCheck 
    = {{0,5}, {1,3}};
        for 
    1#tbCheck do
            
    for tbCheck[i][1], tbCheck[i][2] do
                if (
    not self.tbInstruction[i][j]) then
                    self
    .tbInstruction[i][j] = "";
                
    end
            end
        end
    end

    function uiFightPower:FormatValue(nLValuenRValue)
        
    local szResult "";
        
        if (
    nLValuethen
            nLValue 
    math.floor(nLValue 100) / 100;
            
    szResult = ((nLValue == math.floor(nLValue)) and ("+"..nLValue)) or (string.format("+%0.2f"nLValue));
        
    end
        
    if (nRValuethen
            nRValue 
    math.floor(nRValue 100) / 100;
            
    szResultszResult .. (((math.floor(nLValue) == nLValue) and ("/"..nRValue)) or (string.format("/%0.2f"nRValue)));
        
    end
        
    return szResult;
    end 


    tất nhiên là còn nhiều cái nữa
    Đây là folder pak của họ mà mình đã unpak ra
    anh em cùng nghiên cứu và search trên mạng tìm thêm ở trên server nữa
    đây là client thì có rồi
    [Only registered and activated users can see links. ]

    hoặc pro nào biết thì lên share cách sử dụng hoặc cách làm sao để có naòooo
    Khách viếng thăm hãy cùng testdangky123 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. The Following 4 Users Say Thank You to testdangky123 For This Useful Post:

    boyganz (11-06-12), J4cksparrow (11-06-12), ngockiem (11-06-12), satthupro95 (27-06-12)

  3. #2
    Thành Viên
    Ngày tham gia
    May 2012
    Bài viết
    161
    Thanks
    104
    Thanked 104 Times in 87 Posts

    Ðề: Chân nguyên hộ thể và trang bị đồng hành

    Thanks bạn nhìu , đả down nhưng chưa biết cách sữ dụng
    phải đợi pro nào test rồi chỉ dùng thui
    Khách viếng thăm hãy cùng ngockiem xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

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

    sakuga125 (16-08-12)

  5. #3
    Thành Viên
    Ngày tham gia
    May 2012
    Bài viết
    26
    Thanks
    5
    Thanked 9 Times in 7 Posts

    Ðề: Chân nguyên hộ thể và trang bị đồng hành

    Mình mới add được đồ pet, chưa tìm ra cách sử dụng
    Khách viếng thăm hãy cùng mr.longtay xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. #4
    Em Là Gà :( Mr.QuangHuy's Avatar
    Ngày tham gia
    Aug 2008
    Bài viết
    197
    Thanks
    30
    Thanked 197 Times in 31 Posts

    Ðề: Chân nguyên hộ thể và trang bị đồng hành

    Trích dẫn Gửi bởi mr.longtay [Only registered and activated users can see links. ]
    Mình mới add được đồ pet, chưa tìm ra cách sử dụng
    Hướng dẫn đi bạn, mình mò mãi mà chả đc .
    Khách viếng thăm hãy cùng Mr.QuangHuy xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #5
    Thành Viên
    Ngày tham gia
    Jan 2012
    Bài viết
    275
    Thanks
    47
    Thanked 52 Times in 40 Posts

    Ðề: Chân nguyên hộ thể và trang bị đồng hành

    Trích dẫn Gửi bởi mr.longtay [Only registered and activated users can see links. ]
    Mình mới add được đồ pet, chưa tìm ra cách sử dụng
    có thì share ra để mọi ng cùng nghiên cứu cho vui bạn
    Khách viếng thăm hãy cùng nh0kk3n2310 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  8. #6
    Thành Viên
    Ngày tham gia
    Apr 2012
    Bài viết
    48
    Thanks
    6
    Thanked 15 Times in 5 Posts

    Ðề: Chân nguyên hộ thể và trang bị đồng hành

    trang bị đồng hành có sẵn trong server rồi mà
    \gameserver1\setting\item\001\partnerequip
    Khách viếng thăm hãy cùng testdangky123 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  9. #7
    Moderator vipbk's Avatar
    Ngày tham gia
    May 2012
    Đang ở
    đây
    Bài viết
    5,112
    Thanks
    248
    Thanked 3,006 Times in 1,888 Posts

    Ðề: Chân nguyên hộ thể và trang bị đồng hành

    Trích dẫn Gửi bởi testdangky123 [Only registered and activated users can see links. ]
    trang bị đồng hành có sẵn trong server rồi mà
    \gameserver1\setting\item\001\partnerequip
    Có sẵn nhưng add vào thì không thấy gì cả
    Khách viếng thăm hãy cùng vipbk xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  10. #8
    Thành Viên
    Ngày tham gia
    Apr 2012
    Bài viết
    48
    Thanks
    6
    Thanked 15 Times in 5 Posts

    Ðề: Chân nguyên hộ thể và trang bị đồng hành

    Trích dẫn Gửi bởi vipbk [Only registered and activated users can see links. ]
    Có sẵn nhưng add vào thì không thấy gì cả
    chắc là add đúng ko mà thấy
    hỏi các pro trong diễn đàn cách add như nào cho đúng đeeeeeeee
    Khách viếng thăm hãy cùng testdangky123 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  11. #9
    Moderator vipbk's Avatar
    Ngày tham gia
    May 2012
    Đang ở
    đây
    Bài viết
    5,112
    Thanks
    248
    Thanked 3,006 Times in 1,888 Posts

    Ðề: Chân nguyên hộ thể và trang bị đồng hành

    Trích dẫn Gửi bởi testdangky123 [Only registered and activated users can see links. ]
    chắc là add đúng ko mà thấy
    hỏi các pro trong diễn đàn cách add như nào cho đúng đeeeeeeee
    me.AddItem mà chiến, nó cũng là item như trang bị
    Khách viếng thăm hãy cùng vipbk xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

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

    cuccut (11-06-12)

  13. #10
    Thành Viên
    Ngày tham gia
    Jan 2012
    Bài viết
    275
    Thanks
    47
    Thanked 52 Times in 40 Posts

    Ðề: Chân nguyên hộ thể và trang bị đồng hành

    Trích dẫn Gửi bởi vipbk [Only registered and activated users can see links. ]
    me.AddItem mà chiến, nó cũng là item như trang bị
    có cái id chân nguyên mà không gọi ra dc

    function tbGift:channguyen()
    me.AddItem(1,1,24,1);
    me.AddItem(1,1,24,2);
    me.AddItem(1,1,24,3);
    me.AddItem(1,1,24,4);
    me.AddItem(1,1,24,5);
    me.AddItem(1,1,24,6);
    me.AddItem(1,1,24,7);
    end
    Khách viếng thăm hãy cùng nh0kk3n2310 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 
Trang 1 của 3 1 2 3 CuốiCuối

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

  1. [KT] Giảm thời gian chế tạo nguyên liệu và trang bị ?
    Bởi hiencui995 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 8
    Bài viết cuối: 15-07-12, 07:50 AM
  2. xin trang download file main trang cua webzen
    Bởi mrgacon trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 0
    Bài viết cuối: 13-06-11, 04:37 AM
  3. Thần nguyệt cốc ở đâu T_T
    Bởi vantrung1412 trong diễn đàn Thế Giới Hoàn Mỹ
    Trả lời: 3
    Bài viết cuối: 01-03-10, 01:09 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à 11:13 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ệ.