首页
社区
课程
招聘
c语言求助,请各位老师解答
dmxayjn 2022-1-18 1114

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%,执行操作。按照你的要求,小于70%就执行的话,可以改成g_pPlayer->GetHitPoint() ) < g_pPlayer->GetMaxHitPoint() *0.7 意思是当前血量在最大血量的70%以下,加上If条件句就可以实现你的功能啦~

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

稍微试试就能知道答案了

回复