[JX] Hưỡng dẫn cơ bản làm hút hít từ source full JX
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 2 1 2 CuốiCuối
Kết quả 1 đến 10 của 12
  1. #1
    Thành Viên
    Ngày tham gia
    Jan 2010
    Bài viết
    180
    Thanks
    83
    Thanked 177 Times in 49 Posts

    Hưỡng dẫn cơ bản làm hút hít từ source full JX

    Tự nhiên mất chùm chìa khóa làm hôm nay đi làm không đc! Thấy rảnh nên vô tìm hiểm về hút hít share cho những bạn cần
    Đừng ném gạch em nha huhu


    Vào vấn đề chính thui
    ------------------

    Về căn bản thì các option hút hít đã đc Add sẵn h ta chỉ cần gọi tới và sử dụng

    Các biến liên quan tới hút hít
    +m_CurrentManaStolen : Nội lực
    +m_CurrentLifeStolen : Sinh lực
    +m_CurrentStaminaStolen : Thể lực

    ------------------

    Mình chỉ làm hút máu thôi còn các cái khác các bạn tự làm nha

    Đầu tiên các bạn vào lớp KNpc (.h) làm thêm 1 hàm hồi máu như sau
    PHP Code:
        void                DeathPunish(int nModeint nBelongPlayer);

        
    void                RestoreLiveData(int nDamage);
        
    void                RestoreDamage2Life(int nDamage); //Hàm mình add để làm hút máu 
    Giờ các bạn viết hàm đó như sau trong file KNpc.cpp
    PHP Code:
    void KNpc::RestoreLiveData(int nDamage)
    {            
    }    
    //Đây là hàm mình mới add theo định nghĩ ở trên
    void KNpc::RestoreDamage2Life(int nDamage)
    {
        
    m_CurrentLife m_CurrentLife + (nDamage*m_CurrentLifeStolen/100);
        if (
    m_CurrentLife >= m_CurrentLifeMax)
            
    m_CurrentLife m_CurrentLifeMax;

    Bây h ta làm hút hít thui để cho rõ ràng mình xin post toàn bộ hàm lên [Thực sự mình chỉ thêm 1 chút trong hàm này thui]
    PHP Code:
    void KNpc::CalcDamage(int nAttackerint nMinint nMaxDAMAGE_TYPE nTypeBOOL bIsMeleeBOOL bDoHurt /* TRUE */BOOL bReturn /* = FALSE */)
    {
        if (
    m_Doing == do_death || m_RegionIndex 0)
            return;

        if (
    nMin nMax <= 0)
            return;

        
    int    nRes 0;
        
    int nDamageRange nMax nMin;
        
    int nDamage 0;
        if (
    nDamageRange 0
        {
            
    nDamage nMax g_Random(-nDamageRange);
        }
        else
            
    nDamage nMin g_Random(nMax nMin);
        
    // µÚÒ»²½£¬Í³¼Æ¿¹ÐÔ£¬²¢¼ÆËãÎüÊÕÉ˺¦
        
    switch(nType)
        {
        case 
    damage_physics:
            
    nRes m_CurrentPhysicsResist;
            if (
    nRes m_CurrentPhysicsResistMax)
            {
                
    nRes m_CurrentPhysicsResistMax;
            }
            if (
    nRes MAX_RESIST)
            {
                
    nRes MAX_RESIST;
            }

            
    g_DebugLog("[ÊýÖµ]%sÊܵ½%dµãԭʼÎïÀíÉ˺¦£¬ÎïÀí¿¹ÐÔ%d£¬ÎïÀí¶Ü%d"NamenDamagenResm_PhysicsArmor.nValue[0]);

            
    m_PhysicsArmor.nValue[0] -= nDamage;
            if (
    m_PhysicsArmor.nValue[0] < 0)
            {
                
    nDamage = -m_PhysicsArmor.nValue[0];
                
    m_PhysicsArmor.nValue[0] = 0;
                
    m_PhysicsArmor.nTime 0;
            }
            else
            {
                
    nDamage 0;
            }
            if (
    bIsMelee)
            {
                
    nMax m_CurrentMeleeDmgRetPercent;
            }
            else
            {
                
    nMax m_CurrentRangeDmgRetPercent;
            }
            break;
        case 
    damage_cold:
            
    nRes m_CurrentColdResist;
            if (
    nRes m_CurrentColdResistMax)
            {
                
    nRes m_CurrentColdResistMax;
            }
            if (
    nRes MAX_RESIST)
            {
                
    nRes MAX_RESIST;
            }

            
    g_DebugLog("[ÊýÖµ]%sÊܵ½%dµãԭʼ±ùÉ˺¦£¬±ù¿¹ÐÔ%d£¬±ù¶Ü%d"NamenDamagenResm_ColdArmor.nValue[0]);

            
    m_ColdArmor.nValue[0] -= nDamage;

            if (
    m_ColdArmor.nValue[0] < 0)
            {
                
    nDamage = -m_ColdArmor.nValue[0];
                
    m_ColdArmor.nValue[0] = 0;
                
    m_ColdArmor.nTime 0;
            }
            else
            {
                
    nDamage 0;
            }
            
    nMax m_CurrentRangeDmgRetPercent;
            break;
        case 
    damage_fire:
            
    nRes m_CurrentFireResist;
            if (
    nRes m_CurrentFireResistMax)
            {
                
    nRes m_CurrentFireResistMax;
            }
            if (
    nRes MAX_RESIST)
            {
                
    nRes MAX_RESIST;
            }

            
    g_DebugLog("[ÊýÖµ]%sÊܵ½%dµãԭʼ»ðÉ˺¦£¬»ð¿¹ÐÔ%d£¬»ð¶Ü%d"NamenDamagenResm_FireArmor.nValue[0]);

            
    m_FireArmor.nValue[0] -= nDamage;
            
            if (
    m_FireArmor.nValue[0] < 0)
            {
                
    nDamage = -m_FireArmor.nValue[0];
                
    m_FireArmor.nValue[0] = 0;
                
    m_FireArmor.nTime 0;
            }
            else
            {
                
    nDamage 0;
            }
            
    nMax m_CurrentRangeDmgRetPercent;
            break;
        case 
    damage_light:
            
    nRes m_CurrentLightResist;
            if (
    nRes m_CurrentLightResistMax)
            {
                
    nRes m_CurrentLightResistMax;
            }
            if (
    nRes MAX_RESIST)
            {
                
    nRes MAX_RESIST;
            }
            
    g_DebugLog("[ÊýÖµ]%sÊܵ½%dµãԭʼµçÉ˺¦£¬µç¿¹ÐÔ%d£¬µç¶Ü%d"NamenDamagenResm_LightArmor.nValue[0]);

            
    m_LightArmor.nValue[0] -= nDamage;
            if (
    m_LightArmor.nValue[0] < 0)
            {
                
    nDamage = -m_LightArmor.nValue[0];
                
    m_LightArmor.nValue[0] = 0;
                
    m_LightArmor.nTime 0;
            }
            else
            {
                
    nDamage 0;
            }
            
    nMax m_CurrentRangeDmgRetPercent;
            break;
        case 
    damage_poison:
            
    g_DebugLog("[ÊýÖµ]%sÊܵ½%dµãԭʼ¶¾É˺¦"NamenDamage);
            
    nRes m_CurrentPoisonResist;
            if (
    nRes m_CurrentPoisonResistMax)
            {
                
    nRes m_CurrentPoisonResistMax;
            }
            if (
    nRes MAX_RESIST)
            {
                
    nRes MAX_RESIST;
            }
            
            
    g_DebugLog("[ÊýÖµ]%sÊܵ½%dµãԭʼ¶¾É˺¦£¬¶¾¿¹ÐÔ%d£¬¶¾¶Ü%d"NamenDamagenResm_PoisonArmor.nValue[0]);

            
    m_PoisonArmor.nValue[0] -= nDamage;
            if (
    m_PoisonArmor.nValue[0] < 0)
            {
                
    nDamage = -m_PoisonArmor.nValue[0];
                
    m_PoisonArmor.nValue[0] = 0;
                
    m_PoisonArmor.nTime 0;
            }
            else
            {
                
    nDamage 0;
            }
            
    nMax m_CurrentRangeDmgRetPercent;
            
    m_nLastPoisonDamageIdx nAttacker;
            break;
        case 
    damage_magic:
            
    g_DebugLog("[ÊýÖµ]%sÊܵ½%dµãԭʼħ·¨É˺¦"NamenDamage);
            
    nRes 0;
            break;
        default:
            
    nRes 0;
            break;
        }
        if (!
    nDamage)
            return;
        
    // µÚ¶þ²½ÅжÏÊÇ·ñÓÐħ·¨¶Ü´æÔÚ
        
    g_DebugLog("[ÊýÖµ]%sħ·¨¶ÜÎüÊÕ±ÈÀý£º%d"Namem_ManaShield.nValue[0]);

        if (
    m_ManaShield.nValue[0])
        {
            
    int nManaDamage nDamage m_ManaShield.nValue[0] / 100;
            
    m_CurrentMana -= nManaDamage;
            if (
    m_CurrentMana 0)
            {
                
    nDamage -= m_CurrentMana;
                
    m_CurrentMana 0;
                
    m_ManaShield.nValue[0] = 0;
                
    m_ManaShield.nTime 0;
            }
            else
            {
                
    nDamage -= nManaDamage;
            }
        }
        
    nDamage nDamage * (100 nRes) / 100;
        
    g_DebugLog("[ÊýÖµ]%sʵ¼ÊÉ˺¦£º%d"NamenDamage);

        
    // ·´µ¯É˺¦
        
    if (nAttacker && bReturn == FALSE)
        {
            if (
    bIsMelee)
            {
                
    nMin m_CurrentMeleeDmgRet;
                
    nMin += nDamage nMax 100;
                
    Npc[nAttacker].CalcDamage(m_IndexnMinnMindamage_magicFALSEFALSETRUE);
            }
            else
            {
                
    nMin m_CurrentRangeDmgRet;
                
    nMin += nDamage nMax 100;
                
    Npc[nAttacker].CalcDamage(m_IndexnMinnMindamage_magicFALSEFALSETRUE);
            }
            
    g_DebugLog("[ÊýÖµ]%s·µ»ØÉ˺¦%d"NamenMin);
        }

        
    // PK´¦Àí£¬É˺¦³ËÒ»¸öϵÊý
        
    if (this->m_Kind == kind_player && Npc[nAttacker].m_Kind == kind_player)
            
    nDamage nDamage NpcSet.m_nPKDamageRate 100;
        
    m_nLastDamageIdx nAttacker;
        if (
    m_Kind != kind_player && Npc[nAttacker].m_Kind == kind_player && Npc[nAttacker].m_nPlayerIdx 0)
            
    m_cDeathCalcExp.AddDamage(Npc[nAttacker].m_nPlayerIdx, (m_CurrentLife nDamage nDamage m_CurrentLife));
        
    m_CurrentLife -= nDamage;

        if (
    nDamage 0)
        {
                    
    //Đây là đoạn mình thêm vô
                    //Tại đây các bạn có thể xét xem skill là nội công hay ngoại công để cho phép tăng máu
            
    if (m_CurrentLife 0)
                
    Npc[Player[CLIENT_PLAYER_INDEX].m_nIndex].RestoreDamage2Life(nDamage);
            else
                
    Npc[Player[CLIENT_PLAYER_INDEX].m_nIndex].RestoreDamage2Life(nDamage m_CurrentLife);

                    
    //End add
            
    m_CurrentMana += m_CurrentDamage2Mana nDamage 100;
            if (
    m_CurrentMana m_CurrentManaMax)
            {
                
    m_CurrentMana m_CurrentManaMax;
            }
            if (
    bDoHurt)
                
    DoHurt();
        }
        if (
    m_CurrentLife 0)
        {
            
    int nMode DeathCalcPKValue(nAttacker);
            
    DoDeath(nMode);

            
    // if ËÀµÄÊÇÍæ¼Ò£¬¹Ø±ÕËûµÄ³ðɱºÍÇдè״̬
            
    if (m_Kind == kind_player)
                
    Player[m_nPlayerIdx].m_cPK.CloseAll();
        }

    H bạn build lại core và test thử hihi ! và làm các option khác tương tự hì
    Lần sửa cuối bởi trananh88vt, ngày 28-08-12 lúc 01:13 PM.
    Khách viếng thăm hãy cùng trananh88vt xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. The Following 16 Users Say Thank You to trananh88vt For This Useful Post:

    assaa (28-08-12), authanhi (28-08-12), debaf9 (30-08-12), ferari (28-08-12), HeavenGames (28-08-12), jxvietnam (28-08-12), kelly (28-08-12), LBLN2N (28-08-12), Learning (28-08-12), Linh_JX (28-08-12), nhoxmap_b7 (28-08-12), runkissbig (07-09-12), thaihoa91 (28-08-12), tieudieuphong (19-09-12), tieusuquay79 (28-08-12), vipprolc (28-08-12)

  3. #2
    Thành Viên Tâm Huyết kelly's Avatar
    Ngày tham gia
    Jul 2009
    Bài viết
    531
    Thanks
    80
    Thanked 648 Times in 128 Posts

    Ðề: Hưỡng dẫn cơ bản làm hút hít từ source full JX

    +m_CurrentManaStolen : Nội lực
    +m_CurrentStaminaStolen : Sinh lực
    +m_CurrentStaminaStolen : Thể lực

    Mình đính chính chút cho thành viên mới hiểu
    trện bạn ấy viết nhầm

    Hàm sinh lực là này nhé (
    m_CurrentLifeStolen)
    Khách viếng thăm hãy cùng kelly xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

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

    Linh_JX (28-08-12), trananh88vt (28-08-12)

  5. #3
    Thành Viên
    Ngày tham gia
    Jan 2010
    Bài viết
    180
    Thanks
    83
    Thanked 177 Times in 49 Posts

    Ðề: Hưỡng dẫn cơ bản làm hút hít từ source full JX

    Trích dẫn Gửi bởi kelly [Only registered and activated users can see links. ]
    +m_CurrentManaStolen : Nội lực
    +m_CurrentStaminaStolen : Sinh lực
    +m_CurrentStaminaStolen : Thể lực

    Mình đính chính chút cho thành viên mới hiểu
    trện bạn ấy viết nhầm

    Hàm sinh lực là này nhé (
    m_CurrentLifeStolen)
    Hi hi thanks bạn hì ! copy và paste thui mà cũng nhầm huhu
    Khách viếng thăm hãy cùng trananh88vt xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. #4
    Thành Viên Tâm Huyết Learning's Avatar
    Ngày tham gia
    Mar 2011
    Bài viết
    711
    Thanks
    103
    Thanked 159 Times in 127 Posts

    Ðề: Hưỡng dẫn cơ bản làm hút hít từ source full JX

    lớn rồi mà sao cứ xưng em thế anh
    Sao? Như nào? Nói luôn.

  7. #5
    Thành Viên
    Ngày tham gia
    Jan 2010
    Bài viết
    180
    Thanks
    83
    Thanked 177 Times in 49 Posts

    Ðề: Hưỡng dẫn cơ bản làm hút hít từ source full JX

    Trích dẫn Gửi bởi Learning [Only registered and activated users can see links. ]
    lớn rồi mà sao cứ xưng em thế anh
    Bít ai bao nhui tuổi đâu ! Xưng vậy cho chắc ăn ! không lại bị ăn gạch nữa
    Khách viếng thăm hãy cùng trananh88vt xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  8. #6
    Thành Viên Tâm Huyết Learning's Avatar
    Ngày tham gia
    Mar 2011
    Bài viết
    711
    Thanks
    103
    Thanked 159 Times in 127 Posts

    Ðề: Hưỡng dẫn cơ bản làm hút hít từ source full JX

    ném thì ném lại. họ ném gạch mình ném táp lô
    Sao? Như nào? Nói luôn.

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

    trananh88vt (28-08-12)

  10. #7
    Thành Viên Tâm Huyết assaa's Avatar
    Ngày tham gia
    Jul 2009
    Bài viết
    915
    Thanks
    271
    Thanked 416 Times in 236 Posts

    Ðề: Hưỡng dẫn cơ bản làm hút hít từ source full JX

    Tks bạn nhiều lắm. Như thế này thì JX Offline ngày càng phát triển thêm
    Khách viếng thăm hãy cùng assaa xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  11. #8
    Thành Viên
    Ngày tham gia
    Jul 2011
    Bài viết
    99
    Thanks
    61
    Thanked 3 Times in 2 Posts

    Ðề: Hưỡng dẫn cơ bản làm hút hít từ source full JX

    Nếu rảnh ngâm tiếp cái vụ rồng dí , bổng dí nhé bạn
    Khách viếng thăm hãy cùng ferari xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  12. #9
    Thành Viên
    Ngày tham gia
    Jan 2010
    Bài viết
    180
    Thanks
    83
    Thanked 177 Times in 49 Posts

    Ðề: Hưỡng dẫn cơ bản làm hút hít từ source full JX

    Trích dẫn Gửi bởi ferari [Only registered and activated users can see links. ]
    Nếu rảnh ngâm tiếp cái vụ rồng dí , bổng dí nhé bạn
    Hì rồng dí bổng dí mình nghĩ mãi ko ra hướng giải quyết hì ! Đành phải ngâm tiếp hì
    Khách viếng thăm hãy cùng trananh88vt xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  13. #10
    Thành Viên
    Ngày tham gia
    Jul 2011
    Bài viết
    99
    Thanks
    61
    Thanked 3 Times in 2 Posts

    Ðề: Hưỡng dẫn cơ bản làm hút hít từ source full JX

    Trích dẫn Gửi bởi trananh88vt [Only registered and activated users can see links. ]
    Hì rồng dí bổng dí mình nghĩ mãi ko ra hướng giải quyết hì ! Đành phải ngâm tiếp hì
    BẠn có thể cho mình xin core hút hít này để test thử được không mình chứ có down source full ?
    Khách viếng thăm hãy cùng ferari xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

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

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

  1. Hot Thiếu Vân Web 1.85 Full Source
    Bởi Mr.Cuong trong diễn đàn SQL Server & Website
    Trả lời: 304
    Bài viết cuối: 11-11-18, 01:23 PM
  2. Lỗi web TV 1.85 full source
    Bởi nhaodzo trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 2
    Bài viết cuối: 21-02-12, 10:59 PM
  3. Source full gunny
    Bởi phien-nhatrang trong diễn đàn Releases
    Trả lời: 1206
    Bài viết cuối: 02-08-11, 06:50 PM
  4. Source Không Full
    Bởi thanh159 trong diễn đàn Võ Lâm Truyền Kỳ (Jx Server)
    Trả lời: 29
    Bài viết cuối: 09-06-11, 06:32 PM
  5. SCF 7.11.66b DLL Source Code Full
    Bởi Mr.Quy trong diễn đàn Releases
    Trả lời: 3
    Bài viết cuối: 22-05-10, 05:00 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à 02:00 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ệ.