int KHero::LuaSetMoveTarget(Lua_State* L) { BOOL bRetCode = false; int nTopIndex = 0; BOOL bMove = false; int nDirection = 0; nTopIndex = Lua_GetTopIndex(L); if (nTopIndex == 1) { m_AIData.eTargetType = KTARGET_OBJ; m_AIData.dwTargetObjID = (DWORD)Lua_ValueToNumber(L, 1); } else if(nTopIndex == 3) { m_AIData.eTargetType = KTARGET_POSITION; m_AIData.nTargetX = (DWORD)Lua_ValueToNumber(L, 1); m_AIData.nTargetY = (DWORD)Lua_ValueToNumber(L, 2); m_AIData.nTargetZ = (DWORD)Lua_ValueToNumber(L, 3); MAKE_IN_RANGE(m_AIData.nTargetX, 0, m_pScene->GetLength()); MAKE_IN_RANGE(m_AIData.nTargetY, 0, m_pScene->GetWidth()); } return 0; }
void KCampManager::AddScore(int nScore) { m_nScore += nScore; if (nScore > 0) { while (m_nScore >= m_nLevelScore[m_nLevel] && m_nLevel < CAMP_LEVEL_COUNT - 1) { m_nScore -= m_nLevelScore[m_nLevel]; m_nLevel++; } } else { while (m_nScore <= -m_nLevelScore[CAMP_LEVEL_COUNT - m_nLevel - 1] && m_nLevel > 0) { m_nScore += m_nLevelScore[CAMP_LEVEL_COUNT - m_nLevel - 1]; m_nLevel--; } } MAKE_IN_RANGE(m_nScore, -m_nLevelScore[CAMP_LEVEL_COUNT - m_nLevel - 1], m_nLevelScore[m_nLevel]); m_bUpdate = true; g_pSO3GameCenter->m_GameServer.DoSyncCampInfo(-1); }
// 精确到万分之一,不要轻易改 int KHeroData::GetLadderWinRate() { int nWinRate = 0; int nToltalCount = m_nLadderWinCount + m_nLadderLoseCount; if (nToltalCount > 0) { nWinRate = 10000 * (int64_t)(m_nLadderWinCount) / nToltalCount; } MAKE_IN_RANGE(nWinRate, 0, 10000); return nWinRate; }
BOOL KSkillList::AddSkillExp(DWORD dwSkillID, DWORD dwExp) { BOOL bResult = false; BOOL bRetCode = false; int nOdds = 0; DWORD dwSkillExp = 0; KSkill* pSkill = NULL; const KPlayerSkill* cpPlayerSkill = NULL; PLAYER_SKILL_LIST::const_iterator cit; cit = m_PlayerSkillList.find(dwSkillID); KG_PROCESS_ERROR(cit != m_PlayerSkillList.end()); cpPlayerSkill = &cit->second; pSkill = g_pSO3World->m_SkillManager.GetSkill_RAW(dwSkillID, cit->second.dwLevel); KG_PROCESS_ERROR(pSkill); KG_PROCESS_ERROR(pSkill->m_dwLevelUpExp); nOdds = (int)g_Random(KILO_NUM); KG_PROCESS_SUCCESS(nOdds + pSkill->m_nExpAddOdds < KILO_NUM); dwSkillExp = cpPlayerSkill->dwExp + dwExp; MAKE_IN_RANGE(dwSkillExp, 0, pSkill->m_dwLevelUpExp); bRetCode = UpdateSkill(dwSkillID, cpPlayerSkill->dwLevel, dwSkillExp); if (CanRealizeSkill(dwSkillID)) { LearnSkill(dwSkillID, true); } Exit1: bResult = true; Exit0: return bResult; }