From 35fe1f046dce8b71471a56f38cef99cb42ce665d Mon Sep 17 00:00:00 2001 From: SL1900 <43700351+SL1900@users.noreply.github.com> Date: Tue, 7 Apr 2026 13:00:00 +0900 Subject: [PATCH] Hotfix - 1.8.0.98 EN: 1.8.0.98 CN: 1.8.0.99 JP: 1.8.0.101 KR: 1.8.0.103 --- data/bin/Activity.json | 46 ++++ data/bin/Banner.json | 11 + data/bin/LoginRewardControl.json | 8 + data/bin/LoginRewardGroup.json | 150 +++++++++++++ data/bin/MailTemplate.json | 11 + data/bin/MallPackage.json | 62 ++++++ data/bin/activity.bytes | Bin 10523 -> 10669 bytes data/bin/banner.bytes | Bin 2038 -> 2194 bytes data/bin/loginrewardcontrol.bytes | Bin 781 -> 904 bytes data/bin/loginrewardgroup.bytes | Bin 2650 -> 3390 bytes data/bin/mailtemplate.bytes | Bin 9686 -> 9821 bytes data/bin/mallpackage.bytes | Bin 26012 -> 26620 bytes data/bin/mallrecommendgroup.bytes | Bin 460 -> 373 bytes data/language/en_us/loginrewardgroup.json | 10 + data/language/en_us/mailtemplate.json | 3 + data/language/en_us/mallpackage.json | 4 + data/language/ja_jp/loginrewardgroup.json | 10 + data/language/ja_jp/mailtemplate.json | 3 + data/language/ja_jp/mallpackage.json | 4 + data/language/ko_kr/activitystory.json | 14 +- data/language/ko_kr/loginrewardgroup.json | 10 + data/language/ko_kr/mailtemplate.json | 3 + data/language/ko_kr/mallpackage.json | 4 + .../language/ko_kr/towerdefensepotential.json | 2 +- data/language/ko_kr/uitext.json | 2 +- data/language/zh_cn/loginrewardgroup.json | 10 + data/language/zh_cn/mailtemplate.json | 3 + data/language/zh_cn/mallpackage.json | 4 + .../_301031/loginrewardctrl_01.lua | 200 ++++++++++++++++++ .../_301031/loginrewardpopupctrl_01.lua | 157 ++++++++++++++ .../loginreward/loginrewarditemctrl.lua | 8 +- lua/game/ui/mainviewex/mainviewctrl.lua | 18 +- lua/main.lua | 2 +- versions.txt | 8 +- 34 files changed, 746 insertions(+), 21 deletions(-) create mode 100644 lua/game/ui/activity/loginreward/_301031/loginrewardctrl_01.lua create mode 100644 lua/game/ui/activity/loginreward/_301031/loginrewardpopupctrl_01.lua diff --git a/data/bin/Activity.json b/data/bin/Activity.json index 7d27b15b..760db9bc 100644 --- a/data/bin/Activity.json +++ b/data/bin/Activity.json @@ -427,6 +427,52 @@ "PopUpRes": "", "TabBgRes": "" }, + "301031": { + "Id": 301031, + "MidGroupId": 0, + "SortId": 6, + "ActivityType": 2, + "Name": "版本登录奖励", + "ActivityThemeType": 0, + "PreLimit": 1, + "LimitParam": "2", + "StartType": 1, + "StartTime": "2", + "StartCondType": 2, + "StartCondParams": [ + 50, + 48, + 50, + 54, + 45, + 48, + 52, + 45, + 48, + 55, + 84, + 49, + 50, + 58, + 48, + 48, + 58, + 48, + 48, + 43, + 48, + 56, + 58, + 48, + 48 + ], + "EndType": 71, + "EndTime": "", + "EndDuration": 2, + "BannerRes": "2026-05-08T11:00:00+08:00", + "PopUpRes": "", + "TabBgRes": "" + }, "201001": { "Id": 201001, "MidGroupId": 0, diff --git a/data/bin/Banner.json b/data/bin/Banner.json index ead460cf..be312036 100644 --- a/data/bin/Banner.json +++ b/data/bin/Banner.json @@ -1,4 +1,15 @@ { + "35": { + "Id": 35, + "BannerType": 9, + "BannerName": "banner_webgame_01_lang", + "Param1": "2026-04-07T12:00:00+08:00", + "Param2": "2026-05-08T10:59:59+08:00", + "Param3": "https://gogoartifacts.stellasora.kr", + "Param4": "windows,android,ios", + "Param5": "0,0,0", + "Param6": "" + }, "2": { "Id": 2, "BannerType": 4, diff --git a/data/bin/LoginRewardControl.json b/data/bin/LoginRewardControl.json index 5060bf7a..b2dabe9d 100644 --- a/data/bin/LoginRewardControl.json +++ b/data/bin/LoginRewardControl.json @@ -46,5 +46,13 @@ "UIAssets": "_301022/loginSpReward_act_01", "CtrlName": "_301022/LoginSpRewardCtrl_01", "PopUpUIAssets": "_301022/LoginSpReward_01" + }, + "301031": { + "Id": 301031, + "RewardsGroup": 301031, + "DesText": "LoginRewardControl.301031.1", + "UIAssets": "_301031/loginReward_act_01", + "CtrlName": "_301031/LoginRewardCtrl_01", + "PopUpUIAssets": "_301031/LoginReward_01" } } \ No newline at end of file diff --git a/data/bin/LoginRewardGroup.json b/data/bin/LoginRewardGroup.json index 829e0029..1b9dd431 100644 --- a/data/bin/LoginRewardGroup.json +++ b/data/bin/LoginRewardGroup.json @@ -553,5 +553,155 @@ "RewardCount": 0, "RewardDesc": "LoginRewardGroup.30102207.1", "DisRare": true + }, + "30103101": { + "Id": 30103101, + "RewardGroupId": 301031, + "Order": 1, + "RewardId1": 502, + "Qty1": 1, + "RewardId2": 0, + "Qty2": 0, + "RewardId3": 0, + "Qty3": 0, + "RewardIcon": "Icon/Item/item_502", + "RewardCount": 1, + "RewardDesc": "LoginRewardGroup.30103101.1", + "DisRare": false + }, + "30103102": { + "Id": 30103102, + "RewardGroupId": 301031, + "Order": 2, + "RewardId1": 602, + "Qty1": 300, + "RewardId2": 0, + "Qty2": 0, + "RewardId3": 0, + "Qty3": 0, + "RewardIcon": "Icon/Item/item_602", + "RewardCount": 300, + "RewardDesc": "LoginRewardGroup.30103102.1", + "DisRare": false + }, + "30103103": { + "Id": 30103103, + "RewardGroupId": 301031, + "Order": 3, + "RewardId1": 502, + "Qty1": 1, + "RewardId2": 0, + "Qty2": 0, + "RewardId3": 0, + "Qty3": 0, + "RewardIcon": "Icon/Item/item_502", + "RewardCount": 1, + "RewardDesc": "LoginRewardGroup.30103103.1", + "DisRare": false + }, + "30103104": { + "Id": 30103104, + "RewardGroupId": 301031, + "Order": 4, + "RewardId1": 602, + "Qty1": 300, + "RewardId2": 0, + "Qty2": 0, + "RewardId3": 0, + "Qty3": 0, + "RewardIcon": "Icon/Item/item_602", + "RewardCount": 300, + "RewardDesc": "LoginRewardGroup.30103104.1", + "DisRare": false + }, + "30103105": { + "Id": 30103105, + "RewardGroupId": 301031, + "Order": 5, + "RewardId1": 502, + "Qty1": 1, + "RewardId2": 0, + "Qty2": 0, + "RewardId3": 0, + "Qty3": 0, + "RewardIcon": "Icon/Item/item_502", + "RewardCount": 1, + "RewardDesc": "LoginRewardGroup.30103105.1", + "DisRare": false + }, + "30103106": { + "Id": 30103106, + "RewardGroupId": 301031, + "Order": 6, + "RewardId1": 602, + "Qty1": 300, + "RewardId2": 0, + "Qty2": 0, + "RewardId3": 0, + "Qty3": 0, + "RewardIcon": "Icon/Item/item_602", + "RewardCount": 300, + "RewardDesc": "LoginRewardGroup.30103106.1", + "DisRare": false + }, + "30103107": { + "Id": 30103107, + "RewardGroupId": 301031, + "Order": 7, + "RewardId1": 502, + "Qty1": 1, + "RewardId2": 0, + "Qty2": 0, + "RewardId3": 0, + "Qty3": 0, + "RewardIcon": "Icon/Item/item_502", + "RewardCount": 1, + "RewardDesc": "LoginRewardGroup.30103107.1", + "DisRare": false + }, + "30103108": { + "Id": 30103108, + "RewardGroupId": 301031, + "Order": 8, + "RewardId1": 602, + "Qty1": 300, + "RewardId2": 0, + "Qty2": 0, + "RewardId3": 0, + "Qty3": 0, + "RewardIcon": "Icon/Item/item_602", + "RewardCount": 300, + "RewardDesc": "LoginRewardGroup.30103108.1", + "DisRare": false + }, + "30103109": { + "Id": 30103109, + "RewardGroupId": 301031, + "Order": 9, + "RewardId1": 502, + "Qty1": 1, + "RewardId2": 0, + "Qty2": 0, + "RewardId3": 0, + "Qty3": 0, + "RewardIcon": "Icon/Item/item_502", + "RewardCount": 1, + "RewardDesc": "LoginRewardGroup.30103109.1", + "DisRare": false + }, + "30103110": { + "Id": 30103110, + "RewardGroupId": 301031, + "Order": 10, + "RewardId1": 602, + "Qty1": 300, + "RewardId2": 0, + "Qty2": 0, + "RewardId3": 0, + "Qty3": 0, + "RewardIcon": "Icon/Item/item_602", + "RewardCount": 300, + "RewardDesc": "LoginRewardGroup.30103110.1", + "DisRare": false } } \ No newline at end of file diff --git a/data/bin/MailTemplate.json b/data/bin/MailTemplate.json index e24c0a88..4e7ad497 100644 --- a/data/bin/MailTemplate.json +++ b/data/bin/MailTemplate.json @@ -384,6 +384,17 @@ "Type": 1, "Items": "" }, + "4012": { + "Id": 4012, + "Explanation": "活动结束补偿邮件", + "Icon": "Icon/Head/head_12501", + "Author": "MailTemplate.4012.1", + "LetterPaper": "background2", + "Subject": "MailTemplate.4012.2", + "Desc": "MailTemplate.4012.3", + "Type": 1, + "Items": "" + }, "5001": { "Id": 5001, "Explanation": "问卷调查奖励邮件", diff --git a/data/bin/MallPackage.json b/data/bin/MallPackage.json index 55a5c2b9..a3c21558 100644 --- a/data/bin/MallPackage.json +++ b/data/bin/MallPackage.json @@ -2716,5 +2716,67 @@ "DisplayMode": 1, "Icon": "Icon/ShopGoods/pack_09_disc_l", "IconBg": "UI/big_sprites/db_pack_4" + }, + "pack.09_1_role": { + "Id": "pack.09_1_role", + "Name": "MallPackage.pack.09_1_role.1", + "DetailName": "MallPackage.pack.09_1_role.2", + "GroupId": 2, + "StatisticalGroup": "pack_1_role", + "SaleRate": 140, + "Tag": 1, + "Sort": 1, + "CurrencyType": 1, + "CurrencyItemId": 0, + "CurrencyItemQty": 19000, + "CurrencyShowPrice": "₩ 19,000", + "Stock": 1, + "RefreshType": 0, + "Items": "{\"502\":10}", + "ListCondType": 0, + "ListCondParams": "", + "OrderCondType": 0, + "OrderCondParams": "", + "ListTime": "2026-04-07T12:00:00+08:00", + "DeListTime": "2026-04-21T10:59:59+08:00", + "ProDeListTime": "", + "IsSaleSkin": false, + "BasePrice": 0, + "CurrencyShowBasePrice": "", + "ContentIcon": [], + "DisplayMode": 1, + "Icon": "Icon/ShopGoods/pack_09_1_role", + "IconBg": "UI/big_sprites/db_pack_4" + }, + "pack.09_1_disc": { + "Id": "pack.09_1_disc", + "Name": "MallPackage.pack.09_1_disc.1", + "DetailName": "MallPackage.pack.09_1_disc.2", + "GroupId": 2, + "StatisticalGroup": "pack_1_disc", + "SaleRate": 140, + "Tag": 1, + "Sort": 2, + "CurrencyType": 1, + "CurrencyItemId": 0, + "CurrencyItemQty": 19000, + "CurrencyShowPrice": "₩ 19,000", + "Stock": 1, + "RefreshType": 0, + "Items": "{\"602\":3000}", + "ListCondType": 0, + "ListCondParams": "", + "OrderCondType": 0, + "OrderCondParams": "", + "ListTime": "2026-04-07T12:00:00+08:00", + "DeListTime": "2026-04-21T10:59:59+08:00", + "ProDeListTime": "", + "IsSaleSkin": false, + "BasePrice": 0, + "CurrencyShowBasePrice": "", + "ContentIcon": [], + "DisplayMode": 1, + "Icon": "Icon/ShopGoods/pack_09_1_disc", + "IconBg": "UI/big_sprites/db_pack_4" } } \ No newline at end of file diff --git a/data/bin/activity.bytes b/data/bin/activity.bytes index e90a54fa8d5c0b36af0f7acd40bc1211c197675c..17280b53c669b4749959935940b765221d4c851a 100644 GIT binary patch delta 124 zcmbOov^H2EWHK`YJA;9qp`L-B5hG*7MuCg0JkO`IF!V5RJYO#)!8Z96lj7t*ESwf5 zx(4PUhDKHf20)~3U;!jE+zXg0n3@|YB3OnX8oqtD`d8l zAju*~<6UP3NeV!`t1%CqhG8WuNtNLjdNvws!|Ix9sVKgw)M>aVWutv6N+o&ebEyvl M@Vkyy^l`rSAGISc*8l(j delta 28 jcmbOv_>EsUWHK`YJA;9qp`L-B5hJ4n0|Udx^^e&BT&@OQ diff --git a/data/bin/loginrewardcontrol.bytes b/data/bin/loginrewardcontrol.bytes index 5dab48c70398b28857967cb40cdf343f77c11677..7363f4eb3f8319c744d17ede9a6a6b12616de8ab 100644 GIT binary patch delta 105 zcmeBW>tGiMnas?<&S0QtsAr&O#K_3LQQ$8V&-3Xl45bVl&({kHJfA2pt!ZqiXQ(6< tZ){*_U~H(Llb@cM7nE9_SdyRR$=mIRxuM} zLjyxSLpz|9D+9+qu+(}X2_}VGEE;Q=f`mMi^YipQOHy<7Gl4|BnSoKn8m7sKtm5K8 zjYfKg_7F4o!!$BaRFr|4YpiGJ05SIfOqzu#b4~ON9U^O!vFvP delta 30 lcmccXbIn^IWHK`YJA;9qp`L-B5hJ71MuGW4o6UsPg#m&}2ZaCt diff --git a/data/bin/mallpackage.bytes b/data/bin/mallpackage.bytes index 62db496c7a5d36c3234ac0953c4e786a8cd356ba..483338ff998005bcda441195c70edcfed020aa5f 100644 GIT binary patch delta 283 zcmbPpn(@zhMuCvY%na-d26~2i26{$}43QfJdQz467zz@Tv-J!t;|=4B@^eyU8M*jS zMJ5|2i?Kl@Cm&3Z5P~rEj1-u(xIrr84JYUF$V)O-aaAjs8W<^A85-0sVw5y8Ff!9M zFwr%b+>j*AWMnw`VX_XR;pC5;N|OyzL=B*(82?~oX<%YRc122Nak4y$D?lPpSAdxi hSAdu(u5i$lXJnk5pee$J&0+yQu*H0a@nDTmivjCrP*wl{ delta 27 icmex!o^j4;MuCvY%na-d26~2i26{$}4B;CEdQt&+r3Z}w diff --git a/data/bin/mallrecommendgroup.bytes b/data/bin/mallrecommendgroup.bytes index c7396cd764fad4191ca6294fce75b63c0e9da115..1b841406c4ef3971d54026520c8a8c959f84d383 100644 GIT binary patch delta 81 zcmX@Z{FP}!q?9oO7mJ~Rfsp`{6kkDNa<-mv8P@{Ah#mNYhKs;oV!Tg+w>y85eNPsX- diff --git a/data/language/en_us/loginrewardgroup.json b/data/language/en_us/loginrewardgroup.json index 7c0e1e27..58ea1a71 100644 --- a/data/language/en_us/loginrewardgroup.json +++ b/data/language/en_us/loginrewardgroup.json @@ -8,6 +8,16 @@ "LoginRewardGroup.30101204.1": "Snowish Limited Ticket", "LoginRewardGroup.30101205.1": "Snowish Limited Ticket", "LoginRewardGroup.30101206.1": "Snowish Limited Ticket", + "LoginRewardGroup.30103101.1": "Cerulean Ticket", + "LoginRewardGroup.30103102.1": "Gold Disc", + "LoginRewardGroup.30103103.1": "Cerulean Ticket", + "LoginRewardGroup.30103104.1": "Gold Disc", + "LoginRewardGroup.30103105.1": "Cerulean Ticket", + "LoginRewardGroup.30103106.1": "Gold Disc", + "LoginRewardGroup.30103107.1": "Cerulean Ticket", + "LoginRewardGroup.30103108.1": "Gold Disc", + "LoginRewardGroup.30103109.1": "Cerulean Ticket", + "LoginRewardGroup.30103110.1": "Gold Disc", "LoginRewardGroup.4.1": "Cerulean Ticket", "LoginRewardGroup.5.1": "Stellar Resume Pack", "LoginRewardGroup.6.1": "Cerulean Ticket", diff --git a/data/language/en_us/mailtemplate.json b/data/language/en_us/mailtemplate.json index badddea0..a4ca8d50 100644 --- a/data/language/en_us/mailtemplate.json +++ b/data/language/en_us/mailtemplate.json @@ -176,6 +176,9 @@ "MailTemplate.4011.1": "Trekker Association", "MailTemplate.4011.2": "Reissue Parcel - Event Reward", "MailTemplate.4011.3": "The claim deadline has passed for the Gallop Into Blooming Splendor!\nFortunately, the Association is extremely considerate and has packaged and mailed the rewards to your guild office. Please take a look.\nRemember to claim your rewards after completing a mission next time!", + "MailTemplate.4012.1": "Trekker Association", + "MailTemplate.4012.2": "Reissue Parcel - Event Reward", + "MailTemplate.4012.3": "The claim deadline has passed for the Stellar Prelude.\n\nFortunately, the Association is extremely considerate and has packaged and mailed the rewards to your guild office. Please take a look.\nRemember to claim your rewards next time!", "MailTemplate.5001.1": "Stella Sora Team", "MailTemplate.5001.2": "Thank You for Participating in the Survey!", "MailTemplate.5001.3": "Thank you so much for taking part in the survey! We've prepared a gift for you—please check your inbox.", diff --git a/data/language/en_us/mallpackage.json b/data/language/en_us/mallpackage.json index 13a56c69..62b5c225 100644 --- a/data/language/en_us/mallpackage.json +++ b/data/language/en_us/mallpackage.json @@ -153,6 +153,10 @@ "MallPackage.pack.08_role_l.3": "Deluxe Ticket Set", "MallPackage.pack.08_role_s.1": "Icy Embrace\u000bTicket Value Set", "MallPackage.pack.08_role_s.2": "Icy Embrace: Ticket Value Set", + "MallPackage.pack.09_1_disc.1": "Seasong Voyage\u000bSpecial Disc Set", + "MallPackage.pack.09_1_disc.2": "Seasong Voyage: Special Disc Set", + "MallPackage.pack.09_1_role.1": "Seasong Voyage\u000bTicket Deal Set", + "MallPackage.pack.09_1_role.2": "Seasong Voyage: Ticket Deal Set", "MallPackage.pack.09_disc.1": "Swift Arrival\u000bSpecial Disc Set", "MallPackage.pack.09_disc.2": "Swift Arrival: Special Disc Set", "MallPackage.pack.09_disc_l.1": "Swift Arrival\u000bDeluxe Disc Set", diff --git a/data/language/ja_jp/loginrewardgroup.json b/data/language/ja_jp/loginrewardgroup.json index 25d20f54..45adea56 100644 --- a/data/language/ja_jp/loginrewardgroup.json +++ b/data/language/ja_jp/loginrewardgroup.json @@ -8,6 +8,16 @@ "LoginRewardGroup.30101204.1": "シーズン限定旅券", "LoginRewardGroup.30101205.1": "シーズン限定旅券", "LoginRewardGroup.30101206.1": "シーズン限定旅券", + "LoginRewardGroup.30103101.1": "青空旅券", + "LoginRewardGroup.30103102.1": "煌金レコード", + "LoginRewardGroup.30103103.1": "青空旅券", + "LoginRewardGroup.30103104.1": "煌金レコード", + "LoginRewardGroup.30103105.1": "青空旅券", + "LoginRewardGroup.30103106.1": "煌金レコード", + "LoginRewardGroup.30103107.1": "青空旅券", + "LoginRewardGroup.30103108.1": "煌金レコード", + "LoginRewardGroup.30103109.1": "青空旅券", + "LoginRewardGroup.30103110.1": "煌金レコード", "LoginRewardGroup.4.1": "青空旅券", "LoginRewardGroup.5.1": "★5巡遊者履歴書", "LoginRewardGroup.6.1": "青空旅券", diff --git a/data/language/ja_jp/mailtemplate.json b/data/language/ja_jp/mailtemplate.json index 38f982fb..3f6a710f 100644 --- a/data/language/ja_jp/mailtemplate.json +++ b/data/language/ja_jp/mailtemplate.json @@ -176,6 +176,9 @@ "MailTemplate.4011.1": "地理協会", "MailTemplate.4011.2": "イベント報酬郵送のお知らせ", "MailTemplate.4011.3": "親愛なるギルド代表様へ\nイベント「蒼梧城観光キャンペーン」の報酬の受取期間が終了しました。\n受け取られていない報酬については、地理協会がまとめてオフィスへと郵送しておりますのでご確認ください。", + "MailTemplate.4012.1": "地理協会", + "MailTemplate.4012.2": "イベント報酬郵送のお知らせ", + "MailTemplate.4012.3": "親愛なるギルド代表様へ\nイベント「ハーフアニバーサリー前夜祭」の報酬の受取期間が終了しました。\n受け取られていない報酬については、地理協会がまとめてオフィスへと郵送しておりますのでご確認ください。", "MailTemplate.5001.1": "『ステラソラ』運営チーム", "MailTemplate.5001.2": "アンケートご協力のお礼", "MailTemplate.5001.3": "この度のアンケートにご協力いただき、誠にありがとうございました。ささやかながらお礼の品をご用意いたしましたので、お受け取りください。", diff --git a/data/language/ja_jp/mallpackage.json b/data/language/ja_jp/mallpackage.json index 62a45f5e..da8ba530 100644 --- a/data/language/ja_jp/mallpackage.json +++ b/data/language/ja_jp/mallpackage.json @@ -153,6 +153,10 @@ "MallPackage.pack.08_role_l.3": "巡遊者ガチャパックⅡ", "MallPackage.pack.08_role_s.1": "氷結冴える\u000b巡遊者ガチャパックⅠ", "MallPackage.pack.08_role_s.2": "氷結冴える・巡遊者ガチャパックⅠ", + "MallPackage.pack.09_1_disc.1": "順風満帆\u000b煌金レコードパック", + "MallPackage.pack.09_1_disc.2": "順風満帆・煌金レコードパック", + "MallPackage.pack.09_1_role.1": "順風満帆\u000b青空旅券パック", + "MallPackage.pack.09_1_role.2": "順風満帆・青空旅券パック", "MallPackage.pack.09_disc.1": "あなたにお届け\u000b煌金レコードパック", "MallPackage.pack.09_disc.2": "あなたにお届け・煌金レコードパック", "MallPackage.pack.09_disc_l.1": "あなたにお届け\u000bロスレコガチャパックⅡ", diff --git a/data/language/ko_kr/activitystory.json b/data/language/ko_kr/activitystory.json index 45b8bdc5..38a52418 100644 --- a/data/language/ko_kr/activitystory.json +++ b/data/language/ko_kr/activitystory.json @@ -70,7 +70,7 @@ "ActivityStory.101050212.4": "10", "ActivityStory.101060201.1": "요로즈 택배의 의뢰", "ActivityStory.101060201.2": "부치고 보내고, 편지를 무사히 전해드려요!", - "ActivityStory.101060201.4": "01", + "ActivityStory.101060201.4": "1", "ActivityStory.101060202.1": "길에서 들은 소문", "ActivityStory.101060202.2": "토나가 이렇게나 잘했는데, 이번에는 보수를 좀 더 넉넉히 줘!", "ActivityStory.101060202.4": "02A", @@ -82,28 +82,28 @@ "ActivityStory.101060204.4": "02C", "ActivityStory.101060205.1": "열리지 않은 마음", "ActivityStory.101060205.2": "이제야, 도착한 걸까…?", - "ActivityStory.101060205.4": "03", + "ActivityStory.101060205.4": "3", "ActivityStory.101060206.1": "편지 도둑을 만나다", "ActivityStory.101060206.2": "“보물사냥 업계는 원래 선착순이 원칙이야!”", - "ActivityStory.101060206.4": "04", + "ActivityStory.101060206.4": "4", "ActivityStory.101060207.1": "이치로 다스리다", "ActivityStory.101060207.2": "남은 이야기는… 이 “레종”으로 하지.", "ActivityStory.101060207.4": "BT01", "ActivityStory.101060208.1": "마물의 소행", "ActivityStory.101060208.2": "“그럼 우린 괜히 얻어맞은 거잖아…!”", - "ActivityStory.101060208.4": "05", + "ActivityStory.101060208.4": "5", "ActivityStory.101060209.1": "옥수수 알갱이 대작전", "ActivityStory.101060209.2": "옥수수 알갱이뿐만 아니라 내가 남긴 표식도 잘 봐야 해!", - "ActivityStory.101060209.4": "06", + "ActivityStory.101060209.4": "6", "ActivityStory.101060210.1": "광풍을 직면하다", "ActivityStory.101060210.2": "으윽… 윽…!?", "ActivityStory.101060210.4": "BT02", "ActivityStory.101060211.1": "시공을 넘어선 안부", "ActivityStory.101060211.2": "수많은 산과 강을 넘는 것은 오직 편지 한 통을 위함이며, 눈보라를 뚫고 나가는 것은 오직 신념 때문이다.", - "ActivityStory.101060211.4": "07", + "ActivityStory.101060211.4": "7", "ActivityStory.101060212.1": "To. 소중한 당신", "ActivityStory.101060212.2": "지금 이 순간, 베일린의 풍경을 눈에 가득 담아 두세요…", - "ActivityStory.101060212.4": "08", + "ActivityStory.101060212.4": "8", "ActivityStory.201010201.1": "크리스마스의 사자", "ActivityStory.201010201.2": "축제가 다가오고, 떠들썩한 활기로 가득 찬 거리에서 당신은 익숙한 뒷모습을 발견하는데……", "ActivityStory.201010201.4": "1", diff --git a/data/language/ko_kr/loginrewardgroup.json b/data/language/ko_kr/loginrewardgroup.json index e3e3574c..c1aa98d4 100644 --- a/data/language/ko_kr/loginrewardgroup.json +++ b/data/language/ko_kr/loginrewardgroup.json @@ -8,6 +8,16 @@ "LoginRewardGroup.30101204.1": "이브 한정 티켓", "LoginRewardGroup.30101205.1": "이브 한정 티켓", "LoginRewardGroup.30101206.1": "이브 한정 티켓", + "LoginRewardGroup.30103101.1": "하늘 티켓", + "LoginRewardGroup.30103102.1": "골든 디스크", + "LoginRewardGroup.30103103.1": "하늘 티켓", + "LoginRewardGroup.30103104.1": "골든 디스크", + "LoginRewardGroup.30103105.1": "하늘 티켓", + "LoginRewardGroup.30103106.1": "골든 디스크", + "LoginRewardGroup.30103107.1": "하늘 티켓", + "LoginRewardGroup.30103108.1": "골든 디스크", + "LoginRewardGroup.30103109.1": "하늘 티켓", + "LoginRewardGroup.30103110.1": "골든 디스크", "LoginRewardGroup.4.1": "하늘 티켓", "LoginRewardGroup.5.1": "화려한 이력 선택 패키지", "LoginRewardGroup.6.1": "하늘 티켓", diff --git a/data/language/ko_kr/mailtemplate.json b/data/language/ko_kr/mailtemplate.json index 1c822aad..a393d861 100644 --- a/data/language/ko_kr/mailtemplate.json +++ b/data/language/ko_kr/mailtemplate.json @@ -176,6 +176,9 @@ "MailTemplate.4011.1": "지리 협회", "MailTemplate.4011.2": "재배송 - 이벤트 보상", "MailTemplate.4011.3": "「새해맞이 운수대통」 이벤트가 종료되었으며, 보상 수령 기한이 만료되었어요! \n협회에서 특별히 여단 사무실로 보상을 배송해 드렸으니 확인해 보세요.\n다음번 임무 완료 후에는 잊지 말고 꼭 보상을 수령하세요!", + "MailTemplate.4012.1": "지리 협회", + "MailTemplate.4012.2": "재배송 - 이벤트 보상", + "MailTemplate.4012.3": "「별의 축복」 이벤트가 종료되었으며, 보상 수령 기한이 만료되었어요! \n협회에서 특별히 여단 사무실로 보상을 배송해 드렸으니 확인해 보세요.\n다음번 임무 완료 후에는 잊지 말고 꼭 보상을 수령하세요!", "MailTemplate.5001.1": "「스텔라 소라」 운영팀", "MailTemplate.5001.2": "{0} 특별 보상", "MailTemplate.5001.3": "설문 조사에 참여해 주셔서 감사합니다!\r\n특별 보상을 준비했으니 확인해 보세요.", diff --git a/data/language/ko_kr/mallpackage.json b/data/language/ko_kr/mallpackage.json index ca690c7d..f82cfc57 100644 --- a/data/language/ko_kr/mallpackage.json +++ b/data/language/ko_kr/mallpackage.json @@ -153,6 +153,10 @@ "MallPackage.pack.08_role_l.3": "럭셔리 티켓 세트", "MallPackage.pack.08_role_s.1": "시린 총끝의 순백\u000b초특가 티켓 세트", "MallPackage.pack.08_role_s.2": "시린 총끝의 순백·초특가 티켓 세트", + "MallPackage.pack.09_1_disc.1": "구름의 노래\u000b스페셜 디스크 세트", + "MallPackage.pack.09_1_disc.2": "구름의 노래·스페셜 디스크 세트", + "MallPackage.pack.09_1_role.1": "구름의 노래\u000b스페셜 티켓", + "MallPackage.pack.09_1_role.2": "구름의 노래·스페셜 티켓 세트", "MallPackage.pack.09_disc.1": "신속 배송\u000b스페셜 디스크 세트", "MallPackage.pack.09_disc.2": "신속 배송·스페셜 디스크 세트", "MallPackage.pack.09_disc_l.1": "신속 배송\u000b럭셔리 디스크 세트", diff --git a/data/language/ko_kr/towerdefensepotential.json b/data/language/ko_kr/towerdefensepotential.json index 656d0697..5203bfc2 100644 --- a/data/language/ko_kr/towerdefensepotential.json +++ b/data/language/ko_kr/towerdefensepotential.json @@ -88,7 +88,7 @@ "TowerDefensePotential.1270106.1": "스킬 SP 회복", "TowerDefensePotential.1270107.1": "스킬 SP 회복", "TowerDefensePotential.1300101.1": "떠들썩한 잔음", - "TowerDefensePotential.1300101.2": "스킬 시전 후, 영구적으로 「민첩」 1스택 획득하여, 토나의 공격 속도가 증가하고 사격 시 얼음 화살을 추가로 발사한다. 최대 4스택 중첩된다.", + "TowerDefensePotential.1300101.2": "스킬 시전 후, 영구적으로 「민첩」을 1스택 획득하여, 토나의 공격 속도가 증가하고 사격 시 얼음 화살을 추가로 발사한다. 최대 4스택 중첩된다.", "TowerDefensePotential.1300102.1": "타깃 마케팅", "TowerDefensePotential.1300102.2": "「홍보 인형」의 공격 빈도가 증가하고, 「홍보 인형」이 존재하는 동안 토나의 공격력이 증가한다.", "TowerDefensePotential.1300103.1": "푸른 빛의 밤", diff --git a/data/language/ko_kr/uitext.json b/data/language/ko_kr/uitext.json index 9d590084..c4232ae3 100644 --- a/data/language/ko_kr/uitext.json +++ b/data/language/ko_kr/uitext.json @@ -3195,7 +3195,7 @@ "UIText.TowerDef_TeamEditor_Selected.1": "선택됨", "UIText.TowerDef_Team_Tips.1": "팀 내 빈자리가 있습니다.", "UIText.TowerDef_Text_Atrr.1": "기본 속성", - "UIText.TowerDef_Text_LevelUp.1": "{0}레벨에서 {1}레벨까지 증가", + "UIText.TowerDef_Text_LevelUp.1": "{0} 레벨이 {1}레벨로 증가", "UIText.TowerDef_Text_Pause.1": "일시 정지 중입니다. 전투를 계속하시겠습니까?", "UIText.TowerDef_Text_Point.1": "스테이지 잔여 포인트:", "UIText.TowerDef_Text_Pon.1": "잠재력 상세 정보", diff --git a/data/language/zh_cn/loginrewardgroup.json b/data/language/zh_cn/loginrewardgroup.json index 528b1494..8addabe1 100644 --- a/data/language/zh_cn/loginrewardgroup.json +++ b/data/language/zh_cn/loginrewardgroup.json @@ -8,6 +8,16 @@ "LoginRewardGroup.30101204.1": "雪愿限定招募礼券", "LoginRewardGroup.30101205.1": "雪愿限定招募礼券", "LoginRewardGroup.30101206.1": "雪愿限定招募礼券", + "LoginRewardGroup.30103101.1": "青空礼券", + "LoginRewardGroup.30103102.1": "灿金闪碟", + "LoginRewardGroup.30103103.1": "青空礼券", + "LoginRewardGroup.30103104.1": "灿金闪碟", + "LoginRewardGroup.30103105.1": "青空礼券", + "LoginRewardGroup.30103106.1": "灿金闪碟", + "LoginRewardGroup.30103107.1": "青空礼券", + "LoginRewardGroup.30103108.1": "灿金闪碟", + "LoginRewardGroup.30103109.1": "青空礼券", + "LoginRewardGroup.30103110.1": "灿金闪碟", "LoginRewardGroup.4.1": "青空礼券", "LoginRewardGroup.5.1": "闪耀简历自选包", "LoginRewardGroup.6.1": "青空礼券", diff --git a/data/language/zh_cn/mailtemplate.json b/data/language/zh_cn/mailtemplate.json index 4ef908bc..b4991d98 100644 --- a/data/language/zh_cn/mailtemplate.json +++ b/data/language/zh_cn/mailtemplate.json @@ -176,6 +176,9 @@ "MailTemplate.4011.1": "地理协会", "MailTemplate.4011.2": "补发快件 - 活动奖励", "MailTemplate.4011.3": "「骏马踏春 · 锦绣开运」活动已结束,领赏期限已经过啦!\n不过协会已经贴心地打包好奖励寄送到贵团办公室了,请查收。\n下次完成任务后,务必记得领取喔!", + "MailTemplate.4012.1": "地理协会", + "MailTemplate.4012.2": "补发快件 - 活动奖励", + "MailTemplate.4012.3": "「沐星前礼」活动已结束,领赏期限已经过啦!\n不过协会已经贴心地打包好奖励寄送到贵团办公室了,请查收。\n下次完成任务后,务必记得领取喔!", "MailTemplate.5001.1": "《星塔旅人》运营团队", "MailTemplate.5001.2": "感谢您参与{0}调查", "MailTemplate.5001.3": "非常感谢您参与本次调查,特为您准备了些礼品,请查收", diff --git a/data/language/zh_cn/mallpackage.json b/data/language/zh_cn/mallpackage.json index 505e8d80..d49d3e2a 100644 --- a/data/language/zh_cn/mallpackage.json +++ b/data/language/zh_cn/mallpackage.json @@ -153,6 +153,10 @@ "MallPackage.pack.08_role_l.3": "豪华礼券组合", "MallPackage.pack.08_role_s.1": "寒锋素裹\u000b超值礼券组合", "MallPackage.pack.08_role_s.2": "寒锋素裹·超值礼券组合", + "MallPackage.pack.09_1_disc.1": "云海行歌\u000b特惠闪碟组合", + "MallPackage.pack.09_1_disc.2": "云海行歌·特惠闪碟组合", + "MallPackage.pack.09_1_role.1": "云海行歌\u000b特惠礼券组合", + "MallPackage.pack.09_1_role.2": "云海行歌·特惠礼券组合", "MallPackage.pack.09_disc.1": "使命必达\u000b特惠闪碟组合", "MallPackage.pack.09_disc.2": "使命必达·特惠闪碟组合", "MallPackage.pack.09_disc_l.1": "使命必达\u000b豪华闪碟组合", diff --git a/lua/game/ui/activity/loginreward/_301031/loginrewardctrl_01.lua b/lua/game/ui/activity/loginreward/_301031/loginrewardctrl_01.lua new file mode 100644 index 00000000..f94ea625 --- /dev/null +++ b/lua/game/ui/activity/loginreward/_301031/loginrewardctrl_01.lua @@ -0,0 +1,200 @@ +local LoginRewardCtrl_01 = class("LoginRewardCtrl_01", BaseCtrl) +local TimerManager = require("GameCore.Timer.TimerManager") +local ClientManager = CS.ClientManager.Instance +LoginRewardCtrl_01._mapNodeConfig = { + btnDetail = { + sComponentName = "UIButton", + callback = "OnBtnClick_Detail" + }, + txtDetail = { + sComponentName = "TMP_Text", + sLanguageId = "Activity_Btn_Detail" + }, + goActTime = {}, + txtActivityTime = {sComponentName = "TMP_Text"}, + sv = { + sComponentName = "LoopScrollView" + }, + btnActivity = { + sComponentName = "Button", + callback = "OnBtnClick_Activity" + } +} +LoginRewardCtrl_01._mapEventConfig = {} +function LoginRewardCtrl_01:UnbindCtrl() + for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do + self:UnbindCtrlByNode(objCtrl) + self.tbGridCtrl[nInstanceId] = nil + end + self.tbGridCtrl = {} +end +function LoginRewardCtrl_01:RefreshRemainTime() + local endTime = self.actData:GetActEndTime() + local curTime = ClientManager.serverTimeStamp + local remainTime = endTime - curTime + if remainTime < 0 then + TimerManager.Remove(self.remainTimer) + self.remainTimer = nil + EventManager.Hit(EventId.OpenMessageBox, { + nType = AllEnum.MessageBox.Alert, + sContent = ConfigTable.GetUIText("Activity_Invalid_Tip_1"), + callbackConfirm = function() + EventManager.Hit(EventId.ClosePanel, PanelId.ActivityList) + end + }) + return + end + local sTimeStr = "" + if remainTime <= 60 then + local sec = math.floor(remainTime) + sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Sec") or "", sec) + elseif 60 < remainTime and remainTime <= 3600 then + local min = math.floor(remainTime / 60) + local sec = math.floor(remainTime - min * 60) + if sec == 0 then + min = min - 1 + sec = 60 + end + sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Min") or "", min, sec) + elseif 3600 < remainTime and remainTime <= 86400 then + local hour = math.floor(remainTime / 3600) + local min = math.floor((remainTime - hour * 3600) / 60) + if min == 0 then + hour = hour - 1 + min = 60 + end + sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Hour") or "", hour, min) + elseif 86400 < remainTime then + local day = math.floor(remainTime / 86400) + local hour = math.floor((remainTime - day * 86400) / 3600) + if hour == 0 then + day = day - 1 + hour = 24 + end + sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Day") or "", day, hour) + end + NovaAPI.SetTMPText(self._mapNode.txtActivityTime, sTimeStr) +end +function LoginRewardCtrl_01:RefreshRewardList() + local tbRewardList = self.actData:GetActLoginRewardList() + if nil ~= tbRewardList then + local nMaxDay = #tbRewardList + self.nReceiveDay = self.actData:GetCanReceive() + self.nActual = self.actData:GetReceived() + local canReceive = self.actData:CheckCanReceive() + local nSelectIndex = 0 + if canReceive then + nSelectIndex = self.actData:GetCanReceive() + else + nSelectIndex = self.nActual + end + for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do + self:UnbindCtrlByNode(objCtrl) + self.tbGridCtrl[nInstanceId] = nil + end + self._mapNode.sv:SetAnim(0.06) + self._mapNode.sv:Init(nMaxDay, self, self.OnGridRefresh, self.OnGridBtnClick) + self._mapNode.sv:SetScrollGridPos(nSelectIndex - 2, 0) + end +end +function LoginRewardCtrl_01:OnGridRefresh(goGrid, gridIndex) + local nIndex = gridIndex + 1 + local tbRewardList = self.actData:GetActLoginRewardList() + local nMaxDay = #tbRewardList + local mapReward = tbRewardList[nIndex] + local nInstanceID = goGrid:GetInstanceID() + if not self.tbGridCtrl[nInstanceID] then + self.tbGridCtrl[nInstanceID] = self:BindCtrlByNode(goGrid, "Game.UI.Activity.LoginReward.LoginRewardItemCtrl") + end + self.tbGridCtrl[nInstanceID]:SetRewardItem(nIndex, mapReward, nIndex == nMaxDay, self.nReceiveDay == self.nActual and nIndex == self.nActual + 1, "zs_activity_03_num_") +end +function LoginRewardCtrl_01:OnGridBtnClick(goGrid, gridIndex) + local nIndex = gridIndex + 1 + local tbRewardList = self.actData:GetActLoginRewardList() + local mapReward = tbRewardList[nIndex] + local tbShowReward = {} + if mapReward ~= nil then + for i = 1, 3 do + local nTid = mapReward["RewardId" .. i] + local nCount = mapReward["Qty" .. i] + if nTid ~= 0 then + table.insert(tbShowReward, {nTid = nTid, nCount = nCount}) + end + end + end + self._mapNode.sv:SetScrollGridPos(nIndex - 1, 0.1, 1) + EventManager.Hit(EventId.BlockInput, true) + self:AddTimer(1, 0.1, function() + EventManager.Hit(EventId.BlockInput, false) + local btn = goGrid.transform:Find("btnGrid/AnimRoot/goRewardItem/btnItem") + if #tbShowReward == 1 then + local nTid = tbShowReward[1].nTid + UTILS.ClickItemGridWithTips(nTid, btn.gameObject.transform, true, true, false) + else + local tbReward = {} + for _, v in ipairs(tbShowReward) do + local rewardData = { + [1] = v.nTid, + [5] = v.nCount + } + table.insert(tbReward, rewardData) + end + EventManager.Hit("ShowActRewardList", tbReward) + end + end, true, true, true) +end +function LoginRewardCtrl_01:RefreshDetail() + local mapActCfg = self.actData:GetLoginRewardControlCfg() + local bEmpty = mapActCfg.DesText == "" + self._mapNode.btnDetail.gameObject:SetActive(not bEmpty) +end +function LoginRewardCtrl_01:InitActData(actData) + self.actData = actData + self.nActId = actData:GetActId() + self:RefreshRewardList() + self:RefreshDetail() + local canReceive = self.actData:CheckCanReceive() + self._mapNode.btnActivity.gameObject:SetActive(canReceive) + local actCfg = self.actData:GetActCfgData() + if actCfg.EndType == GameEnum.activityEndType.NoLimit then + self._mapNode.goActTime.gameObject:SetActive(false) + else + self._mapNode.goActTime.gameObject:SetActive(true) + self:RefreshRemainTime() + if nil == self.remainTimer then + self.remainTimer = self:AddTimer(0, 1, "RefreshRemainTime", true, true, false) + end + end +end +function LoginRewardCtrl_01:ClearActivity() + self:UnbindCtrl() +end +function LoginRewardCtrl_01:Awake() + self.tbGridCtrl = {} +end +function LoginRewardCtrl_01:OnDisable() + self:UnbindCtrl() +end +function LoginRewardCtrl_01:OnBtnClick_Detail() + local mapActCfg = self.actData:GetLoginRewardControlCfg() + local msg = { + nType = AllEnum.MessageBox.Desc, + sContent = mapActCfg.DesText, + sTitle = ConfigTable.GetUIText("Activity_Btn_Detail") + } + EventManager.Hit(EventId.OpenMessageBox, msg) +end +function LoginRewardCtrl_01:OnBtnClick_Activity() + local callback = function() + self._mapNode.btnActivity.gameObject:SetActive(false) + local actData = PlayerData.Activity:GetActivityDataById(self.actData:GetActId()) + self:InitActData(actData) + end + local canReceive = self.actData:CheckCanReceive() + if not canReceive then + callback() + return + end + PlayerData.Activity:SendReceiveLoginRewardMsg(self.actData:GetActId(), callback) +end +return LoginRewardCtrl_01 diff --git a/lua/game/ui/activity/loginreward/_301031/loginrewardpopupctrl_01.lua b/lua/game/ui/activity/loginreward/_301031/loginrewardpopupctrl_01.lua new file mode 100644 index 00000000..075d6d6e --- /dev/null +++ b/lua/game/ui/activity/loginreward/_301031/loginrewardpopupctrl_01.lua @@ -0,0 +1,157 @@ +local LoginRewardPopUpCtrl_01 = class("LoginRewardPopUpCtrl_01", BaseCtrl) +local ClientManager = CS.ClientManager.Instance +local TimerManager = require("GameCore.Timer.TimerManager") +LoginRewardPopUpCtrl_01._mapNodeConfig = { + sv = { + sNodeName = "goRewardList", + sComponentName = "LoopScrollView" + }, + goActTime = {}, + txtActivityTime = {sComponentName = "TMP_Text"}, + btnActivity = { + sComponentName = "Button", + callback = "OnBtnClick_Activity" + }, + txtTips = { + sComponentName = "TMP_Text", + sLanguageId = "LoginReward_PopUp_Tip" + } +} +LoginRewardPopUpCtrl_01._mapEventConfig = {} +LoginRewardPopUpCtrl_01._mapRedDotConfig = {} +function LoginRewardPopUpCtrl_01:RefreshRemainTime() + local endTime = self.actData:GetActEndTime() + local curTime = ClientManager.serverTimeStamp + local remainTime = endTime - curTime + if remainTime < 0 then + self._mapNode.goActTime.gameObject:SetActive(false) + return + end + local sTimeStr = "" + if remainTime <= 60 then + local sec = math.floor(remainTime) + sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Sec") or "", sec) + elseif 60 < remainTime and remainTime <= 3600 then + local min = math.floor(remainTime / 60) + local sec = math.floor(remainTime - min * 60) + if sec == 0 then + min = min - 1 + sec = 60 + end + sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Min") or "", min, sec) + elseif 3600 < remainTime and remainTime <= 86400 then + local hour = math.floor(remainTime / 3600) + local min = math.floor((remainTime - hour * 3600) / 60) + if min == 0 then + hour = hour - 1 + min = 60 + end + sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Hour") or "", hour, min) + elseif 86400 < remainTime then + local day = math.floor(remainTime / 86400) + local hour = math.floor((remainTime - day * 86400) / 3600) + if hour == 0 then + day = day - 1 + hour = 24 + end + sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Day") or "", day, hour) + end + NovaAPI.SetTMPText(self._mapNode.txtActivityTime, sTimeStr) +end +function LoginRewardPopUpCtrl_01:RefreshActData() + self.nActId = self._panel.nActId + self.actData = self._panel.actData + self.remainTimer = nil + self:RefreshRewardList() + local actCfg = self.actData:GetActCfgData() + if actCfg.EndType == GameEnum.activityEndType.NoLimit then + self._mapNode.goActTime.gameObject:SetActive(false) + else + self._mapNode.goActTime.gameObject:SetActive(true) + self:RefreshRemainTime() + end +end +function LoginRewardPopUpCtrl_01:RefreshRewardList() + local tbRewardList = self.actData:GetActLoginRewardList() + if nil ~= tbRewardList then + local nMaxDay = #tbRewardList + local nActual = self.actData:GetReceived() + for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do + self:UnbindCtrlByNode(objCtrl) + self.tbGridCtrl[nInstanceId] = nil + end + self._mapNode.sv:SetAnim(0.06) + self._mapNode.sv:Init(nMaxDay, self, self.OnGridRefresh) + self:AddTimer(1, 0.5, function() + self._mapNode.sv:SetScrollGridPos(nActual - 1, 0.5) + end, true, true, true) + end +end +function LoginRewardPopUpCtrl_01:OnGridRefresh(goGrid, gridIndex) + local nIndex = gridIndex + 1 + local tbRewardList = self.actData:GetActLoginRewardList() + local nMaxDay = #tbRewardList + local mapReward = tbRewardList[nIndex] + local nInstanceID = goGrid:GetInstanceID() + if not self.tbGridCtrl[nInstanceID] then + self.tbGridCtrl[nInstanceID] = self:BindCtrlByNode(goGrid, "Game.UI.Activity.LoginReward.LoginRewardItemCtrl") + end + self.tbGridCtrl[nInstanceID]:SetRewardItem(nIndex, mapReward, nIndex == nMaxDay, nil, "zs_activity_03_num_") +end +function LoginRewardPopUpCtrl_01:PlayOutAnim() + local nAnimLength = 0 + if self.animRoot ~= nil then + nAnimLength = NovaAPI.GetAnimClipLength(self.animRoot, { + "LoginReward_01_out" + }) + self.animRoot:Play("LoginReward_01_out") + EventManager.Hit(EventId.TemporaryBlockInput, nAnimLength) + end + return nAnimLength +end +function LoginRewardPopUpCtrl_01:Awake() + self.animRoot = self.gameObject:GetComponent("Animator") + self.tbGridCtrl = {} +end +function LoginRewardPopUpCtrl_01:OnEnable() + if self.animRoot ~= nil then + local nAnimLength = NovaAPI.GetAnimClipLength(self.animRoot, { + "LoginReward_01_in" + }) + self.animRoot:Play("LoginReward_01_in") + EventManager.Hit(EventId.TemporaryBlockInput, nAnimLength) + end +end +function LoginRewardPopUpCtrl_01:OnDisable() + for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do + self:UnbindCtrlByNode(objCtrl) + self.tbGridCtrl[nInstanceId] = nil + end + self.tbGridCtrl = {} +end +function LoginRewardPopUpCtrl_01:OnDestroy() +end +function LoginRewardPopUpCtrl_01:OnBtnClick_Activity() + local bOpen = self.actData:CheckActivityOpen() + if not bOpen then + local callback = function() + EventManager.Hit("RefreshLoginRewardPanel") + end + EventManager.Hit(EventId.OpenMessageBox, { + nType = AllEnum.MessageBox.Alert, + sContent = ConfigTable.GetUIText("Activity_PopUp_Time_Out"), + callbackConfirm = callback + }) + return + end + local canReceive = self.actData:CheckCanReceive() + if not canReceive then + EventManager.Hit("RefreshLoginRewardPanel") + return + end + local callback = function() + EventManager.Hit("RefreshLoginRewardPanel") + end + PlayerData.Activity:SendReceiveLoginRewardMsg(self.nActId, callback) +end +return LoginRewardPopUpCtrl_01 diff --git a/lua/game/ui/activity/loginreward/loginrewarditemctrl.lua b/lua/game/ui/activity/loginreward/loginrewarditemctrl.lua index 98b7fcb4..e09a3e97 100644 --- a/lua/game/ui/activity/loginreward/loginrewarditemctrl.lua +++ b/lua/game/ui/activity/loginreward/loginrewarditemctrl.lua @@ -26,10 +26,14 @@ LoginRewardItemCtrl._mapNodeConfig = { } LoginRewardItemCtrl._mapEventConfig = {} LoginRewardItemCtrl._mapRedDotConfig = {} -function LoginRewardItemCtrl:SetRewardItem(nDay, mapReward, bFinalDay, bNextDay) +function LoginRewardItemCtrl:SetRewardItem(nDay, mapReward, bFinalDay, bNextDay, sNumName) self.mapReward = mapReward for _, v in ipairs(self._mapNode.imgDay) do - self:SetAtlasSprite(v, "05_number", "zs_activity_02_num_" .. nDay) + if sNumName then + self:SetAtlasSprite(v, "05_number", sNumName .. nDay) + else + self:SetAtlasSprite(v, "05_number", "zs_activity_02_num_" .. nDay) + end end self:SetPngSprite(self._mapNode.imgIcon, mapReward.RewardIcon or "") NovaAPI.SetTMPText(self._mapNode.txtItemCount, orderedFormat(ConfigTable.GetUIText("LoginReward_Reward_Count"), mapReward.RewardCount)) diff --git a/lua/game/ui/mainviewex/mainviewctrl.lua b/lua/game/ui/mainviewex/mainviewctrl.lua index 22fd44df..19f806dd 100644 --- a/lua/game/ui/mainviewex/mainviewctrl.lua +++ b/lua/game/ui/mainviewex/mainviewctrl.lua @@ -730,13 +730,15 @@ function MainViewCtrl:AddOtherBanner() local sPlatform = mapLineData.Param4 local sOption = mapLineData.Param5 local curPlatform = CS.ClientManager.Instance.Platform + local bUseOpenUrl = mapLineData.Param7 == "1" if mapLineData.Param1 == "" then if sPlatform == "" then table.insert(self.tbBannerList, { nType = GameEnum.bannerType.JumpToUrl, sBanner = mapLineData.bannerName, sUrl = sUrl, - bInside = true + bInside = true, + bUseOpenUrl = bUseOpenUrl }) else local tbPlatformList = string.split(sPlatform, ",") @@ -749,7 +751,8 @@ function MainViewCtrl:AddOtherBanner() nType = GameEnum.bannerType.JumpToUrl, sBanner = mapLineData.bannerName, sUrl = sUrl, - bInside = bInside + bInside = bInside, + bUseOpenUrl = bUseOpenUrl }) end end @@ -762,7 +765,8 @@ function MainViewCtrl:AddOtherBanner() nType = GameEnum.bannerType.JumpToUrl, sBanner = mapLineData.bannerName, sUrl = sUrl, - bInside = true + bInside = true, + bUseOpenUrl = bUseOpenUrl }) else local tbPlatformList = string.split(sPlatform, ",") @@ -775,7 +779,8 @@ function MainViewCtrl:AddOtherBanner() nType = GameEnum.bannerType.JumpToUrl, sBanner = mapLineData.bannerName, sUrl = sUrl, - bInside = bInside + bInside = bInside, + bUseOpenUrl = bUseOpenUrl }) end end @@ -1515,7 +1520,10 @@ function MainViewCtrl:OnBtnClick_btnActBanner() elseif bannerData.nType == GameEnum.bannerType.JumpToUrl then local sUrl = bannerData.sUrl local bInside = bannerData.bInside - if SDKManager:IsSDKInit() then + local bUseOpenUrl = bannerData.bUseOpenUrl + if bUseOpenUrl then + NovaAPI.OpenURL(sUrl) + elseif SDKManager:IsSDKInit() then if bInside then SDKManager:ShowWebView(false, "", sUrl, 1, 0, true) else diff --git a/lua/main.lua b/lua/main.lua index 58e3857b..6ede2327 100644 --- a/lua/main.lua +++ b/lua/main.lua @@ -17,4 +17,4 @@ if NovaAPI.IsEditorPlatform() then end ForEachTableLine(DataTable.Story, forEachLine_Story) end -CS.GameCameraStackManager.Instance.autoVerticalToHorizontalFieldOfViewAspect = 1.44 +CS.GameCameraStackManager.Instance.autoVerticalToHorizontalFieldOfViewAspect = 1.53 diff --git a/versions.txt b/versions.txt index ce172c43..42e2d9a2 100644 --- a/versions.txt +++ b/versions.txt @@ -1,4 +1,4 @@ -EN: 1.8.0.97 -CN: 1.8.0.98 -JP: 1.8.0.100 -KR: 1.8.0.102 +EN: 1.8.0.98 +CN: 1.8.0.99 +JP: 1.8.0.101 +KR: 1.8.0.103