目标2实现:
A、分析:为避免去修改或研究较为复杂的Discuz!NT积分功能代码片断,可在Discuz.Forum.UserCreditsFactory中修改UpdateUserCredits方法;
B、方法:找到Discuz.Forum.UserCreditsFactory类,该类所有方法均为对用户Credits及ExtCredits的操作;
C、代码: scoreset.config中定义extcredits2(影响其他域的积分设置)
private static int UpdateUserCredits(int uid, int[] values)
{
UserInfo User = UserFactory.GetUserInfo(uid);
if (User == null)
{
return 0;
}
if (values.Length < 8)
{
return -1;
}
SqlParameter[] parameterArray1 = new SqlParameter[] { Database.MakeInParam("@uid", SqlDbType.Int, 4, uid), Database.MakeInParam("@extcredits1", SqlDbType.Float, 8, values[0]), Database.MakeInParam("@extcredits2", SqlDbType.Float, 8, values[1]), Database.MakeInParam("@extcredits3", SqlDbType.Float, 8, values[2]), Database.MakeInParam("@extcredits4", SqlDbType.Float, 8, values[3]), Database.MakeInParam("@extcredits5", SqlDbType.Float, 8, values[4]), Database.MakeInParam("@extcredits6", SqlDbType.Float, 8, values[5]), Database.MakeInParam("@extcredits7", SqlDbType.Float, 8, values[6]), Database.MakeInParam("@extcredits8", SqlDbType.Float, 8, values[7]) };
string text1 = "UPDATE [" + BaseConfigFactory.GetTablePrefix + "users] SET \t\t[extcredits1]=[extcredits1] + @extcredits1, \t\t[extcredits2]=[extcredits2] + @extcredits2, \t\t[extcredits3]=[extcredits3] + @extcredits3, \t\t[extcredits4]=[extcredits4] + @extcredits4, \t\t[extcredits5]=[extcredits5] + @extcredits5, \t\t[extcredits6]=[extcredits6] + @extcredits6, \t\t[extcredits7]=[extcredits7] + @extcredits7, \t\t[extcredits8]=[extcredits8] + @extcredits8 WHERE [uid]=@uid";
Database.ExecuteNonQuery(CommandType.Text, text1, parameterArray1);
try
{
//影响其他域的积分
int integral = values[1];
//修改其他域积分
string HandleMsg = null;
ODUMASClient.PowerHandle _PHandle = new ODUMASClient.PowerHandle();
_PHandle.AddUserIntegral(User.Username, integral, out HandleMsg);
}
catch { }
return UserCreditsFactory.UpdateUserCredits(uid);
}
* 还有几个方法,均按此修改。