File tree Expand file tree Collapse file tree 2 files changed +116
-0
lines changed
Expand file tree Collapse file tree 2 files changed +116
-0
lines changed Original file line number Diff line number Diff line change 30573057 }
30583058 ]
30593059 },
3060+ {
3061+ "achievement_id": 503,
3062+ "rewards": [
3063+ {
3064+ "add_type": 5000,
3065+ "item_id": 495
3066+ }
3067+ ]
3068+ },
30603069 {
30613070 "achievement_id": 504,
30623071 "rewards": [
30753084 }
30763085 ]
30773086 },
3087+ {
3088+ "achievement_id": 508,
3089+ "rewards": [
3090+ {
3091+ "add_type": 5000,
3092+ "item_id": 496
3093+ }
3094+ ]
3095+ },
30783096 {
30793097 "achievement_id": 509,
30803098 "rewards": [
31203138 }
31213139 ]
31223140 },
3141+ {
3142+ "achievement_id": 518,
3143+ "rewards": [
3144+ {
3145+ "add_type": 5000,
3146+ "item_id": 498
3147+ }
3148+ ]
3149+ },
31233150 {
31243151 "achievement_id": 519,
31253152 "rewards": [
31653192 }
31663193 ]
31673194 },
3195+ {
3196+ "achievement_id": 528,
3197+ "rewards": [
3198+ {
3199+ "add_type": 5000,
3200+ "item_id": 494
3201+ }
3202+ ]
3203+ },
31683204 {
31693205 "achievement_id": 529,
31703206 "rewards": [
32103246 }
32113247 ]
32123248 },
3249+ {
3250+ "achievement_id": 538,
3251+ "rewards": [
3252+ {
3253+ "add_type": 5000,
3254+ "item_id": 502
3255+ }
3256+ ]
3257+ },
32133258 {
32143259 "achievement_id": 539,
32153260 "rewards": [
32553300 }
32563301 ]
32573302 },
3303+ {
3304+ "achievement_id": 548,
3305+ "rewards": [
3306+ {
3307+ "add_type": 5000,
3308+ "item_id": 501
3309+ }
3310+ ]
3311+ },
32583312 {
32593313 "achievement_id": 549,
32603314 "rewards": [
33003354 }
33013355 ]
33023356 },
3357+ {
3358+ "achievement_id": 558,
3359+ "rewards": [
3360+ {
3361+ "add_type": 5000,
3362+ "item_id": 505
3363+ }
3364+ ]
3365+ },
33033366 {
33043367 "achievement_id": 559,
33053368 "rewards": [
33453408 }
33463409 ]
33473410 },
3411+ {
3412+ "achievement_id": 568,
3413+ "rewards": [
3414+ {
3415+ "add_type": 5000,
3416+ "item_id": 506
3417+ }
3418+ ]
3419+ },
33483420 {
33493421 "achievement_id": 569,
33503422 "rewards": [
33903462 }
33913463 ]
33923464 },
3465+ {
3466+ "achievement_id": 578,
3467+ "rewards": [
3468+ {
3469+ "add_type": 5000,
3470+ "item_id": 511
3471+ }
3472+ ]
3473+ },
33933474 {
33943475 "achievement_id": 579,
33953476 "rewards": [
Original file line number Diff line number Diff line change 1+ import npps4 .script_dummy # isort:skip
2+
3+ import sqlalchemy
4+
5+ import npps4 .idol
6+ import npps4 .db .main
7+ import npps4 .system .achievement
8+ import npps4 .system .advanced
9+ import npps4 .system .user
10+
11+ revision = "8_achievement_fix_1"
12+ prev_revision = "7_give_loveca_to_cleared_songs"
13+
14+ FIXES_ACHIEVEMENT_IDS = [503 , * range (508 , 588 , 10 )]
15+
16+
17+ async def main (context : npps4 .idol .BasicSchoolIdolContext ):
18+ q = sqlalchemy .select (npps4 .db .main .Achievement ).where (
19+ npps4 .db .main .Achievement .achievement_id .in_ (FIXES_ACHIEVEMENT_IDS ),
20+ npps4 .db .main .Achievement .is_accomplished == True ,
21+ npps4 .db .main .Achievement .is_reward_claimed == True ,
22+ )
23+
24+ async for ach in (await context .db .main .stream (q )).scalars ():
25+ user = await npps4 .system .user .get (context , ach .user_id )
26+ if user is None :
27+ continue
28+
29+ rewards = await npps4 .system .achievement .get_achievement_rewards (context , ach )
30+ for reward in rewards :
31+ result = await npps4 .system .advanced .add_item (context , user , reward )
32+ print (
33+ f"Give reward ({ reward .add_type .value , reward .item_id } )x{ reward .amount } to user { user .id } by ach { ach .achievement_id } " ,
34+ "successful" if result .success else "unsuccessful" ,
35+ )
You can’t perform that action at this time.
0 commit comments