Jump to content

danielich

Members
  • Posts

    13
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by danielich

  1. Whilre you're add it, got any ideea how 3v3 arena rating is used ONLY for relentless items?

    How to diferentiate the items from 2v2 rating?

    Actualy by 2v2 arena you can get all items , but if you want shoulders or most powerfull weapon are only avaleable in 3v3 or 5v5.

    If I find the blizzard post i will link later.

  2. See this graphic:

    http://eu.wowarmory.com/arena-team-game-chart.xml?r=Sanguino&ts=2&t=Random+players&select=Random+players

    If you set that to 1000 you can obtain similar results. I have remaded arena team 6 times ( yes, i'm mad xD )

    colecting a lot of quantity of data, and similar graphics.

    See the graphic:

    - In first match i won a rating of 47, this is not possible with actualy formulas, K must be 48

    - Near to rating 1000 ( see rating 983 ) i won 24, if you set k to 48 and "the number" to 1000 you can obtain these results.

    - After rating 1000 ( see 1013 ) i won 18 points, in this case K in elo formulas must be 32 and "the number" not exist. i won against a team with 1063 rating ( set K=32 and "the number" works under rating 1000 )

    I'm not a programmer, but i'm a good mathematical xD specialized in find algorithms, and i found this.

    I try to create a patch. You mus see the sintaxt, i'm not have compilation's errors.

    diff --git a/src/game/ArenaTeam.cpp b/src/game/ArenaTeam.cpp

    index 891ce63..0a8bc77 100644

    --- a/src/game/ArenaTeam.cpp

    +++ b/src/game/ArenaTeam.cpp

    @@ -513,8 +513,8 @@ float ArenaTeam::GetChanceAgainst(uint32 own_rating, uint32 enemy_rating)

    // ELO system

    if (sWorld.getConfig(CONFIG_ARENA_SEASON_ID) >= 6)

    - if (enemy_rating < 1500)

    - enemy_rating = 1500;

    + if (enemy_rating < 1000)

    + enemy_rating = 1000;

    return 1.0f/(1.0f+exp(log(10.0f)*(float)((float)enemy_rating - (float)own_rating)/400.0f));

    }

    @@ -542,8 +542,12 @@ int32 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));

    + float K;

    + if (m_stats.rating<1000)

    + K=48.0f;

    + else K)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));

    // modify the team stats accordingly

    FinishGame(mod);

    m_stats.wins_week += 1;

    @@ -558,8 +562,12 @@ int32 ArenaTeam::LostAgainst(uint32 againstRating)

    // called when the team has lost

    //'chance' calculation - to loose to the opponent

    float chance = GetChanceAgainst(m_stats.rating, againstRating);

    - // calculate the rating modification (ELO system with k=32)

    - int32 mod = (int32)ceil(32.0f * (0.0f - chance));

    + float K;

    + if (m_stats.rating<1000)

    + K=48.0f;

    + else K)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));

    // modify the team stats accordingly

    FinishGame(mod);

    @@ -576,7 +584,11 @@ void ArenaTeam::MemberLost(Player * plr, uint32 againstRating)

    {

    // update personal rating

    float chance = GetChanceAgainst(itr->personal_rating, againstRating);

    - int32 mod = (int32)ceil(32.0f * (0.0f - chance));

    + float K;

    + if (personal_rating<1000)

    + K=48.0f;

    + else K)32.0f;

    + int32 mod = (int32)ceil(K * (0.0f - chance));

    itr->ModifyPersonalRating(plr, mod, GetSlot());

    // update personal played stats

    itr->games_week += 1;

    @@ -598,7 +610,11 @@ void ArenaTeam::OfflineMemberLost(uint64 guid, uint32 againstRating)

    {

    // update personal rating

    float chance = GetChanceAgainst(itr->personal_rating, againstRating);

    - int32 mod = (int32)ceil(32.0f * (0.0f - chance));

    + float K;

    + if (personal_rating<1000)

    + K=48.0f;

    + else K)32.0f;

    + int32 mod = (int32)ceil(K * (0.0f - chance));

    if (int32(itr->personal_rating) + mod < 0)

    itr->personal_rating = 0;

    else

    @@ -620,7 +636,11 @@ void ArenaTeam::MemberWon(Player * plr, uint32 againstRating)

    {

    // update personal rating

    float chance = GetChanceAgainst(itr->personal_rating, againstRating);

    - int32 mod = (int32)floor(32.0f * (1.0f - chance));

    + float K;

    + if (personal_rating<1000)

    + K=48.0f;

    + else K)32.0f;

    + int32 mod = (int32)floor(K * (1.0f - chance));

    itr->ModifyPersonalRating(plr, mod, GetSlot());

    // update personal stats

    itr->games_week += 1;

  3. You have corrected my patch, but you have repeated a my typo:

    - if (enemy_rating<1300)

    - enemy_rating=1300;

    + if (enemy_rating<1000)

    + enemy_rating=1000;

    I have verified this typo, i do arena in blizzard servers and the formulas work correct with 1000 and not 1300.

    As example:

    If you win an arena with rating 0 in offi you win 47 points of rating, if you win an arena in mangos server you win only 31 point of rating.

    K in elo formulas must change: when rating<1000 k must be 48, else 32.

    Is also needed the "matchmaking system"... i will workin that but i'm not an expert programmer.

    See you later! ;)

  4. What repair this patch: In client version 3.1.3 arena teams must start at 0 rating and new members that join to arena team must start whit a personal rating=team rating or a max of 1000. This repairs also some formulas for rating<1300

    Autor of this patch: me

    diff --git a/src/game/ArenaTeam.cpp b/src/game/ArenaTeam.cpp
    index 6b88ba6..3c2d50b 100644
    --- a/src/game/ArenaTeam.cpp
    +++ b/src/game/ArenaTeam.cpp
    @@ -34,7 +34,7 @@ ArenaTeam::ArenaTeam()
        stats.games_week    = 0;
        stats.games_season  = 0;
        stats.rank          = 0;
    -    stats.rating        = 1500;
    +    stats.rating        = 0;
        stats.wins_week     = 0;
        stats.wins_season   = 0;
    }
    @@ -129,8 +129,11 @@ bool ArenaTeam::AddMember(const uint64& PlayerGuid)
        newmember.games_week        = 0;
        newmember.wins_season       = 0;
        newmember.wins_week         = 0;
    -    newmember.personal_rating   = 1500;
    +    if ( ArenaTeam::stats.rating < 1000 ) 
    +      { 
    +         newmember.personal_rating = ArenaTeam::stats.rating;
    +      }
    +   else newmember.personal_rating   = 1000;
        members.push_back(newmember);
    
        CharacterDatabase.PExecute("INSERT INTO arena_team_member (arenateamid, guid, personal_rating) VALUES
    ('%u', '%u', '%u')", Id, GUID_LOPART(newmember.guid), newmember.personal_rating );
    
    @@ -499,6 +502,8 @@ float ArenaTeam::GetChanceAgainst(uint32 own_rating, uint32 enemy_rating)
    {
        // returns the chance to win against a team with the given rating, used in the rating adjustment calculation
        // ELO system
    +    if (enemy_rating<1300)
    +       enemy_rating=1300.0f;
        return 1.0f/(1.0f+exp(log(10.0f)*(float)((float)enemy_rating - (float)own_rating)/400.0f));
    }

  5. Any news about aura 262 implementation?

    This aura now is used by more talents ( in 3.0.9 only 3 talents, now in 3.1.3 is used by 4 talents and two of these talents are of warrior in arms tree talents and 1 of proteccion tree talents )

  6. This aura is used by 3 warrior talents ( 4 talents in 3.1 ) and i believe that other skills too, i have tested this aura implementation but the talents http://www.wowhead.com/?spell=29723 and ranks, http://www.wowhead.com/?spell=57499 doesn't works ( or must be added other functions? )

    But http://www.wowhead.com/?spell=56636 works fine and this uses aura 262 as the other talents

    I have tested the others patch and works ( but you say that is "hacky" ) but not stack with effect of taste for blood http://www.wowhead.com/?spell=56636

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use