首頁
社區(qū)
課程
招聘
c語言求助,請各位老師解答
dmxayjn 2022-1-18 1093

if(pItemBase &&(((FLOAT)g_pPlayer->GetMaxHitPoint() / g_pPlayer->GetHitPoint() ) > 2.0F || pItemBase->GetProp()->nAdjParamVal1 + g_pPlayer->GetHitPoint() <= g_pPlayer->GetMaxHitPoint()) )
{

1
2
3
4
5
        if( g_pPlayer->m_cooltimeMgr.CanUse( g_pPlayer->m_cooltimeMgr.GetGroup(pItemBase->GetProp() )))
        {
                g_DPlay.SendDoUseItem( MAKELONG( ITYPE_ITEM, pItemBase->m_dwObjId ), NULL_ID, pItemBase->GetProp()->dwParts );
        }
}

這個代碼是自動吃藥的代碼,g_pPlayer->GetMaxHitPoint() / g_pPlayer->GetHitPoint() ) > 2.0F這一句是計算了當前HP的 50%嗎?如果是的話,怎么可以改成70%。。

 

易語言的話,我知道怎么實現,,對C語言還不是很明白。。請求大佬支個招,,有些能看懂,但是不知道怎么去改。。。

收藏
2條回答
AlphaYang 2022-1-19 2022-1-19編輯

很好解決,首先理解代碼邏輯

g_pPlayer->GetMaxHitPoint() / g_pPlayer->GetHitPoint() ) > 2.0F 是指如果最大血量在當前血量的兩倍以上,也就是如果血量小于50%,執(zhí)行操作。按照你的要求,小于70%就執(zhí)行的話,可以改成g_pPlayer->GetHitPoint() ) < g_pPlayer->GetMaxHitPoint() *0.7 意思是當前血量在最大血量的70%以下,加上If條件句就可以實現你的功能啦~

回復
dmxayjn: 好的,謝謝大佬解答,我目前把  2.0F  改成  了  1.74F  就解決了。。
回復 2022-1-19
mb_nwrlvgzr 2022-2-15

稍微試試就能知道答案了

回復