danielich
-
Posts
13 -
Joined
-
Last visited
Never -
Donations
0.00 GBP
Content Type
Profiles
Bug Tracker
Wiki
Release Notes
Forums
Downloads
Blogs
Events
Posts posted by danielich
-
-
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.
-
See this graphic:
If you set that to 1000 you can obtain similar results. I have remaded arena team 6 times ( yes, i'm mad )
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 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;
-
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!
-
I also tested whit 19 testers, testing every class, profession and skills, this work fine for me.
Thanks
-
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)); }
-
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 )
-
SPELL_AURA_ADD_CREATURE_IMMUNITY and SPELL_AURA_ALLOW_ONLY_ABILITY auras are used in http://www.wowhead.com/?spell=51690 talent too. These aura implementation are very important for both classes. I hope that will be implemented in master branch.
Thanks for this patch
-
Great! you are right, this aura implementation works, but is needed some function because when Execute is used the effect of Sudden death not disappears.
I'm already testing the branch 310, but http://www.wowhead.com/?spell=64976 doesn't work, maybe charge ability need a new function or maybe need it be modify? but that is 310 branch, for now ( in master branch) this work.
Thanks you
-
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
-
Taste of blood http://www.wowhead.com/?spell=60503 uses same aura 262, i haven't found that aura in mangos VB solution but taste of blood works fine.
where can i found that aura ( i'm already haven't a large knowledge of c++ but i try... )
-
Thanks very much. I see for the core and db from http://svn.assembla.com/svn/fdb-public/.
I see there are a lot of updates in folders called 0.10, 0.11, 0.12 and so.
My question if it is possible: is important the order of instalation of each sql file? I installed character.sql, mangos.sql and realmd.sql but i confused by the order of each update.
-
Thank for this, realy thank but i have a noob question:
where i can find the binaries to compile mangos for the 3.0.3 version? and where i find a DB?
Thank and merry christmas
[9910][patch] Warsong Gulch 25 minutes limit
in ... acceptedOld
Posted
You can test it, mr. Pyrite
Ok. i will test for you jajaja
Saludos!