-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【建议】建议将“如每日做满65点经验”改为“如按当前进度” #583
Comments
好主意 |
试着写了一下,发现一个问题:执行每日任务时,有些任务是被自己做过的(例如投币,看视频),这样的话就不能在程序中统计出真正的一日获取经验的总数量,会导致计算出的时间出现偏差(虽然可能差不了几天) 我觉得可以根据硬币的数量,比如只能投一个硬币的时候,升级的时间根据每天25点经验计算 除了每天能获取2~4枚硬币的少数用户外,应该是能准确的 |
w(゚Д゚)w 刚发现可以获取到已投币的数量,那就基本上没有问题来计算每日实际获得的经验值了,但是我认为在硬币数量不足时,通过每日25点经验计算时长还是比较合理的,毕竟根据阿B硬币获取的规则,普通用户获取每日超过一枚硬币的可能性并不大。 |
不理解为何会出现偏差,自己完成了本来可以由程序完成的任务的话经验值也累加在账户上,直接根据配置测算理论值就行吧,只需要去再判断一下硬币数量是否可以完成当天任务。也就是无论程序实际是否成功完成了配置的任务都按成功完成计算即可。 |
是这样的,主要是当时我想的是在每个任务完成后来累和当日的经验值,这样计算的话就会和实际获取的经验值有偏差 最后我写的时候想到,就是正常情况下每天获得的硬币应该只有1个 。所以,我是按照25点来算了。(主要是好改) ( ̄ε(# ̄) |
开银瓜子换硬币可能每天要多一点?如果是这样的话可以改成35? |
这玩意儿虽然就是加减乘除,但是越加限制条件越写越乱,本来准备写个网页计算器的,写着写着就摆烂了( ̄﹏ ̄;) |
别急,大多数用户银瓜子不够每天去换的,先忽略除了登录外的获得好了 |
确实,当时改的时候我就被自己绕进去了,各种逻辑越写越复杂,主要还是每天获取的硬币除了登录送的那个以外来源不确定,我索性就按最小值来算了。 |
获取硬币的方式好办的。忽略不可控的视频投币来源和活动来源以及风纪委年终结算,就几种:
每日登录 +1
风纪委每月 +20
银瓜子换硬币 每天最多+1
根据银瓜子余额和配置是否风纪委,预计任期数可以求得可以获得的硬币。
但是还是感觉复杂得很,谁要再跟我说全是加减乘除的算法简单我指定得跟他拼命╰(‵□′)╯
|
哈哈哈,不如给个设置,让用户自己输入预计日期用的每日经验量,然后通过这个输入量来算升级时间。没有个性化要求的就用默认值来算 |
那用户也得犯难,这咋算好啊
Initial heart
***@***.***
…------------------ Original ------------------
From: ***@***.***>;
Date: 2023年8月9日(星期三) 晚上10:46
To: ***@***.***>;
Cc: "Initial ***@***.***>; ***@***.***>;
Subject: Re: [RayWangQvQ/BiliBiliToolPro] 【建议】建议将“如每日做满65点经验”改为“如按当前进度” (Issue #583)
哈哈哈,不如给个设置,让用户自己输入预计日期用的每日经验量,然后通过这个输入量来算升级时间。没有个性化要求的就用默认值来算
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
就是让有需求的自己算,没这个需求的就用默认值。做为一个可选项,而不是一个必须项。 艹,突然不想改了,感觉好麻烦 (╬▔皿▔)╯ |
终于还是折腾明白了,感谢 @XiaoYue-Kun 的一些帮助 |
public int CalculateUpgradeTime(UserInfo useInfo)
{
// TODO 修改计算逻辑
double availableCoins = decimal.ToDouble(useInfo.Money ?? 0) - _dailyTaskOptions.NumberOfProtectedCoins;
long needExp = useInfo.Level_info.GetNext_expLong() -
useInfo.Level_info.Current_exp;
int needDay = 0;
if (availableCoins < 0)
{
needDay = (int)((double)needExp / 25 + _dailyTaskOptions.NumberOfProtectedCoins - Math.Abs(availableCoins));
}
switch (_dailyTaskOptions.NumberOfCoins)
{
case 0:
needDay = (int)(needExp / 15);
break;
case 1:
needDay = (int)(needExp / 25);
break;
default:
double needFrontDay = (availableCoins / _dailyTaskOptions.NumberOfCoins) - 1;
double temp = (double)needExp / (15
+ _dailyTaskOptions.NumberOfCoins * 10);
if (temp > needFrontDay )
{
needDay = (int)(needFrontDay + (needExp - (15
+ _dailyTaskOptions.NumberOfCoins * 10) *
needFrontDay) / 25);
}
else
{
needDay= (int)(needExp / temp);
}
break;
}
return needDay;
} |
写了一下,我目前看来应该没问题。可能结果要减一?跟我手算好像有一天的差距。 不清楚,等我清醒一下再看一下,但算法的实现应该没多大问题吧? *(  ̄皿 ̄)/#_ |
艹,我傻了,刚才从头算了一遍
应该是:前段所需天数d=可投的硬币/(配置的投币数-1) public int CalculateUpgradeTime(UserInfo useInfo)
{
double availableCoins = decimal.ToDouble(useInfo.Money ?? 0) - _dailyTaskOptions.NumberOfProtectedCoins;
long needExp = useInfo.Level_info.GetNext_expLong() - useInfo.Level_info.Current_exp;
int needDay;
if (availableCoins < 0)
needDay = (int)((double)needExp / 25 + _dailyTaskOptions.NumberOfProtectedCoins - Math.Abs(availableCoins));
switch (_dailyTaskOptions.NumberOfCoins)
{
case 0:
needDay = (int)(needExp / 15);
break;
case 1:
needDay = (int)(needExp / 25);
break;
default:
int dailyExpAvailable = 15 + _dailyTaskOptions.NumberOfCoins * 10;
double needFrontDay = availableCoins / (_dailyTaskOptions.NumberOfCoins - 1);
if ((double)needExp / dailyExpAvailable > needFrontDay)
needDay = (int)(needFrontDay + (needExp - dailyExpAvailable * needFrontDay) / 25);
else
needDay= (int)(needExp / dailyExpAvailable );
break;
}
return needDay;
} |
https://github.com/Polaris-cn10086/BiliBiliToolPro 睡了😪 |
您的作息......挺牛的 |
我先开个PR吧,有问题到时候再改 (^∀^●)ノシ |
@RayWangQvQ 应该可以 close |
正在升级的一般硬币都是每天获取一个,无法做满65点经验,所以按65经验算出的时间参考意义不大,建议把这个日志输出放下面,获取今日共得多少经验,计算按当前进度还剩多少天升六级
The text was updated successfully, but these errors were encountered: