积分问题修复

This commit is contained in:
DESKTOP-SAJ6RKV\Administrator 2025-06-11 14:01:41 +08:00
parent a588b268bb
commit 8793df1b60

View File

@ -69,42 +69,51 @@ public class DataGameModelManager : GameBase.Singleton<DataGameModelManager>
// 总积分
long totalScore = DataGameSceneManager.Instance.ScoreAllValue;
// 计算前三名分配
long firstScore = (long)(totalScore * 0.3f);
long secondScore = (long)(totalScore * 0.2f);
long thirdScore = (long)(totalScore * 0.1f);
// 计算剩余40%平分
long leftScore = totalScore - firstScore - secondScore - thirdScore;
int playerCount = us.Count;
long avgScore = playerCount > 0 ? leftScore / playerCount : 0;
// 分配
for (int i = 0; i < us.Count; i++)
if (playerCount == 1)
{
var d = us[i];
long addScore = avgScore;
if (i == 0)
addScore += firstScore;
else if (i == 1)
addScore += secondScore;
else if (i == 2)
addScore += thirdScore;
// 只有一个玩家分配100%
us[0].m_Score += totalScore;
long winScale = DataGameSceneManager.Instance.WinAllValue;
Log.Debug("玩家{0},分配所得胜点:{1}", us[0].protCustMessageData.nickName, winScale);
us[0].m_AllWinCount = (int)winScale;
}
else
{
// 计算前三名分配
long firstScore = (long)(totalScore * 0.3f);
long secondScore = (long)(totalScore * 0.2f);
long thirdScore = (long)(totalScore * 0.1f);
d.m_Score += addScore;
// 计算剩余40%平分
long leftScore = totalScore - firstScore - secondScore - thirdScore;
long avgScore = playerCount > 0 ? leftScore / playerCount : 0;
// 分配胜点(如有特殊规则可在此处理)
if (i == 0)
// 分配
for (int i = 0; i < playerCount; i++)
{
long winScale = DataGameSceneManager.Instance.WinAllValue;
Log.Debug("玩家{0},分配所得胜点:{1}", d.protCustMessageData.nickName, winScale);
d.m_AllWinCount = (int)winScale;
var d = us[i];
long addScore = avgScore;
if (i == 0)
addScore += firstScore;
else if (i == 1)
addScore += secondScore;
else if (i == 2)
addScore += thirdScore;
d.m_Score += addScore;
// 分配胜点(如有特殊规则可在此处理)
if (i == 0)
{
long winScale = DataGameSceneManager.Instance.WinAllValue;
Log.Debug("玩家{0},分配所得胜点:{1}", d.protCustMessageData.nickName, winScale);
d.m_AllWinCount = (int)winScale;
}
}
}
List<PostPlayRankData> rankInfos = new List<PostPlayRankData>();
// 上报排行榜数据
var allDatas = DataGameSceneManager.Instance.GetUnitPlayerDatas();