这篇教程C++ GetChanceAgainst函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中GetChanceAgainst函数的典型用法代码示例。如果您正苦于以下问题:C++ GetChanceAgainst函数的具体用法?C++ GetChanceAgainst怎么用?C++ GetChanceAgainst使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了GetChanceAgainst函数的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: GetChanceAgainstvoid ArenaTeam::MemberLost(Player * plr, uint32 againstRating){ // called for each participant of a match after losing for(MemberList::iterator itr = m_members.begin(); itr != m_members.end(); ++itr) { if (itr->guid == plr->GetObjectGuid()) { // update personal rating float chance = GetChanceAgainst(itr->personal_rating, againstRating); float K = (itr->personal_rating < 1000) ? 48.0f : 32.0f; // calculate the rating modification (ELO system with k=32 or k=48 if rating<1000) int32 mod = (int32)ceil(K * (0.0f - chance)); if(againstRating <= sWorld.getConfig(CONFIG_UINT32_LOSERNOCHANGE) || itr->personal_rating <= sWorld.getConfig(CONFIG_UINT32_LOSERNOCHANGE)) mod = 0; else if (itr->personal_rating <= sWorld.getConfig(CONFIG_UINT32_LOSERHALFCHANGE)) mod /= 2; itr->ModifyPersonalRating(plr, mod, GetSlot()); // update matchmaker rating chance = GetChanceAgainst(itr->matchmaker_rating, againstRating); K = (itr->matchmaker_rating < 1000) ? 48.0f : 32.0f; // calculate the rating modification (ELO system with k=32 or k=48 if rating<1000) mod = (int32)ceil(K * (0.0f - chance)); itr->ModifyMatchmakerRating(plr,mod,GetType()); // update personal played stats itr->games_week += 1; itr->games_season += 1; // update the unit fields plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_WEEK, itr->games_week); plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_SEASON, itr->games_season); return; } }}
开发者ID:Archives,项目名称:easy-mangos,代码行数:37,
示例2: GetChanceAgainstint32 ArenaTeam::WonAgainst(uint32 againstRating){ // called when the team has won // 'chance' calculation - to beat the opponent float chance = GetChanceAgainst(m_stats.rating, againstRating); // calculate the rating modification (ELO system with k=32) int32 mod = (int32)floor(32.0f * (1.0f - chance)); // modify the team stats accordingly FinishGame(mod); m_stats.wins_week += 1; m_stats.wins_season += 1; // return the rating change, used to display it on the results screen return mod;}
开发者ID:1thew,项目名称:mangos,代码行数:15,
示例3: ChatHandlervoid ArenaTeam::MemberWon(Player * plr, uint32 againstRating){ // called for each participant after winning a match for(MemberList::iterator itr = m_members.begin(); itr != m_members.end(); ++itr) { if (itr->guid == plr->GetObjectGuid()) { // FG: attempt to prevent "win trading" - dont give reward to winner if player with same IP is in opposite team Map::PlayerList const& plist = plr->GetMap()->GetPlayers(); for(Map::PlayerList::const_iterator pit = plist.begin(); pit != plist.end(); ++pit) { Player *pp = pit->getSource(); if( !(pp && pp->IsSessionValid() && plr->IsSessionValid()) ) return; // something wrong if(pp->GetSession()->GetIP() == plr->GetSession()->GetIP() && pp->IsHostileTo(plr)) { ChatHandler(plr).PSendSysMessage(11110, pp->GetName()); return; } } // FG: -end- // update personal rating float chance = GetChanceAgainst(itr->personal_rating, againstRating); float K = (itr->personal_rating < 1000) ? 48.0f : 32.0f; // calculate the rating modification (ELO system with k=32 or k=48 if rating<1000) int32 mod = (int32)floor(K* (1.0f - chance)); itr->ModifyPersonalRating(plr, mod, GetSlot()); // update personal stats itr->games_week += 1; itr->games_season += 1; itr->wins_season += 1; itr->wins_week += 1; // update unit fields plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_WEEK, itr->games_week); plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_SEASON, itr->games_season); return; } }}
开发者ID:Aldrealia,项目名称:mangos,代码行数:41,
示例4: GetChanceAgainstvoid ArenaTeam::MemberWon(Player * plr, uint32 againstRating){ // We handle personal rating for Solo Queue in Arena Team win or lost function if (GetType() == ARENA_TEAM_5v5) return; // called for each participant after winning a match for (MemberList::iterator itr = m_members.begin(); itr != m_members.end(); ++itr) { if (itr->guid == plr->GetGUID()) { // update personal rating float chance = GetChanceAgainst(itr->personal_rating, againstRating); int32 mod = (int32)floor(32.0f * (1.0f - chance)); if (GetType() == ARENA_TEAM_2v2) { if (m_stats.rating < 1850) mod += 2; if (mod == 30) mod++; if (mod < 3) mod = 3; } itr->ModifyPersonalRating(plr, mod, GetSlot()); // update personal stats itr->games_week +=1; itr->games_season +=1; itr->wins_season += 1; itr->wins_week += 1; // update unit fields plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_WEEK, itr->games_week); plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_SEASON, itr->games_season); return; } }}
开发者ID:Blumfield,项目名称:TBCPvP,代码行数:38,
示例5: GetChanceAgainstint32 ArenaTeam::OfflineMemberLost(uint64 guid, uint32 againstRating){ // called for offline player after ending rated arena match! for(MemberList::iterator itr = m_members.begin(); itr != m_members.end(); ++itr) { if (itr->guid == guid) { // update personal rating float chance = GetChanceAgainst(itr->personal_rating, againstRating); float K = (itr->personal_rating < 1000) ? 48.0f : 32.0f; // calculate the rating modification (ELO system with k=32 or k=48 if rating<1000) int32 mod = (int32)ceil(K * (0.0f - chance)); if (int32(itr->personal_rating) + mod < 0) itr->personal_rating = 0; else itr->personal_rating += mod; // update personal played stats itr->games_week += 1; itr->games_season += 1; return mod; } }return 0;}
开发者ID:Archives,项目名称:try,代码行数:23,
示例6: GetChanceAgainstvoid ArenaTeam::MemberWon(Player* plr, uint32 againstRating){ // called for each participant after winning a match for (MemberList::iterator itr = m_members.begin(); itr != m_members.end(); ++itr) { if (itr->guid == plr->GetObjectGuid()) { // update personal rating float chance = GetChanceAgainst(itr->personal_rating, againstRating); int32 mod = (int32)floor(32.0f * (1.0f - chance)); itr->ModifyPersonalRating(plr, mod, GetSlot()); // update personal stats itr->games_week += 1; itr->games_season += 1; itr->wins_season += 1; itr->wins_week += 1; // update unit fields plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_WEEK, itr->games_week); plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_SEASON, itr->games_season); return; } }}
开发者ID:AlexHjelm,项目名称:Core,代码行数:23,
示例7: GetChanceAgainstvoid ArenaTeam::MemberLost(Player * plr, uint32 againstRating){ // called for each participant of a match after losing for(MemberList::iterator itr = m_members.begin(); itr != m_members.end(); ++itr) { if(itr->guid == plr->GetGUID()) { // update personal rating float chance = GetChanceAgainst(itr->personal_rating, againstRating); float K = (itr->personal_rating < 1000) ? 48.0f : 32.0f; // calculate the rating modification (ELO system with k=32 or k=48 if rating<1000) int32 mod = (int32)ceil(K * (0.0f - chance)); itr->ModifyPersonalRating(plr, mod, GetSlot()); // update personal played stats itr->games_week += 1; itr->games_season += 1; // update the unit fields plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_WEEK, itr->games_week); plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_SEASON, itr->games_season); return; } }}
开发者ID:xruell,项目名称:mangos,代码行数:23,
示例8: GetChanceAgainstvoid ArenaTeam::MemberWon(Player * plr, uint32 againstRating){ // called for each participant after winning a match for(MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) { if(itr->guid == plr->GetGUID()) { // update personal rating float chance = GetChanceAgainst(itr->personal_rating, againstRating); int32 mod = (int32)floor(32.0f * (1.0f - chance)); itr->ModifyPersonalRating(plr, mod, GetSlot()); // update personal stats itr->games_week +=1; itr->games_season +=1; itr->wins_season += 1; itr->wins_week += 1; // update unit fields plr->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + 6 * GetSlot() + 2, itr->games_week); plr->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + 6 * GetSlot() + 3, itr->games_season); return; } }}
开发者ID:Trizzor,项目名称:uecore,代码行数:23,
示例9: GetChanceAgainstint32 ArenaTeam::GetRatingMod(uint32 ownRating, uint32 opponentRating, bool won /*, float confidence_factor*/){ // 'Chance' calculation - to beat the opponent // This is a simulation. Not much info on how it really works float chance = GetChanceAgainst(ownRating, opponentRating); float won_mod = (won) ? 1.0f : 0.0f; // Calculate the rating modification float mod; // TODO: Replace this hack with using the confidence factor (limiting the factor to 2.0f) if (won && ownRating < 1300) { if (ownRating < 1000) mod = 48.0f * (won_mod - chance); else mod = (24.0f + (24.0f * (1300.0f - float(ownRating)) / 300.0f)) * (won_mod - chance); } else mod = 24.0f * (won_mod - chance); return (int32)ceil(mod);}
开发者ID:Crash911,项目名称:RaptoredSkyFire,代码行数:23,
示例10: GetChanceAgainstint32 ArenaTeam::GetRatingMod(uint32 own_rating, uint32 enemy_rating, bool won, bool calculating_mmr){ // 'chance' calculation - to beat the opponent float chance = GetChanceAgainst(own_rating, enemy_rating); float won_mod = (won) ? 1.0f : 0.0f; // calculate the rating modification // simulation on how it works. Not much info on how it really works float mod; if (won && !calculating_mmr) { if (own_rating < 1000) mod = 48.0f * (won_mod - chance); else if (own_rating < 1300) mod = (24.0f + (24.0f * (1300.0f - int32(own_rating)) / 300.0f)) * (won_mod - chance); else mod = 24.0f * (won_mod - chance); } else mod = 24.0f * (won_mod - chance); return (int32)ceil(mod);}
开发者ID:Ballwinkle,项目名称:SkyFireEMU,代码行数:24,
示例11: GetChanceAgainstint32 ArenaTeam::LostAgainst(uint32 againstRating){ // called when the team has lost //'chance' calculation - to loose to the opponent float chance = GetChanceAgainst(stats.rating,againstRating); // calculate the rating modification (ELO system with k=32) int32 mod = (int32)ceil(32.0f * (0.0f - chance)); // modify the team stats accordingly stats.rating += mod; stats.games_week += 1; stats.games_season += 1; //update team's rank stats.rank = 1; ObjectMgr::ArenaTeamMap::iterator i = objmgr.GetArenaTeamMapBegin(); for ( ; i != objmgr.GetArenaTeamMapEnd(); ++i) { if (i->second->GetType() == this->Type && i->second->GetStats().rating > stats.rating) ++stats.rank; } // return the rating change, used to display it on the results screen return mod;}
开发者ID:CWN,项目名称:mangos,代码行数:24,
示例12: GetChanceAgainstint32 ArenaTeam::GetPersonalRatingMod(int32 base_rating, uint32 own_rating, uint32 enemy_rating){ float chance = GetChanceAgainst(own_rating, enemy_rating); chance *= 2.0f; return (int32)ceil(float(base_rating) * chance);}
开发者ID:sensibob,项目名称:tempestcore,代码行数:6,
注:本文中的GetChanceAgainst函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ GetChar函数代码示例 C++ GetCenter函数代码示例 |