mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-13 23:44:45 +01:00
Stage rewards fully working, fixed main quest again, cash shop working
This commit is contained in:
@@ -20,7 +20,7 @@ namespace nksrv.LobbyServer.Msgs.Shop
|
|||||||
var response = new ResGetJupiterProductList();
|
var response = new ResGetJupiterProductList();
|
||||||
foreach (var item in x.ProductIdList)
|
foreach (var item in x.ProductIdList)
|
||||||
{
|
{
|
||||||
response.ProductInfoList.Add(new NetJupiterProductInfo() { CurrencyCode = "US", CurrencySymbol = "$", MicroPrice = 212, Price = "22", ProductId = item });
|
response.ProductInfoList.Add(new NetJupiterProductInfo() { CurrencyCode = "US", CurrencySymbol = "$", MicroPrice = 0, Price = "0", ProductId = item });
|
||||||
}
|
}
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
using nksrv.Utils;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace nksrv.LobbyServer.Msgs.Shop.InApp
|
||||||
|
{
|
||||||
|
[PacketPath("/inappshop/getreceivableproductlist")]
|
||||||
|
public class GetRetrivableProductList : LobbyMsgHandler
|
||||||
|
{
|
||||||
|
protected override async Task HandleAsync()
|
||||||
|
{
|
||||||
|
var x = await ReadData<ReqGetInAppShopReceivableProductList>();
|
||||||
|
|
||||||
|
var response = new ResGetInAppShopReceivableProductList();
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
WriteData(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -27,7 +27,6 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
var clearedStage = StaticDataParser.Instance.GetStageData(req.StageId);
|
var clearedStage = StaticDataParser.Instance.GetStageData(req.StageId);
|
||||||
if (clearedStage == null) throw new Exception("cleared stage cannot be null");
|
if (clearedStage == null) throw new Exception("cleared stage cannot be null");
|
||||||
|
|
||||||
user.LastNormalStageCleared = req.StageId;
|
|
||||||
|
|
||||||
if (user.FieldInfo.Count == 0)
|
if (user.FieldInfo.Count == 0)
|
||||||
{
|
{
|
||||||
@@ -37,11 +36,13 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
DoQuestSpecificUserOperations(user, req.StageId);
|
DoQuestSpecificUserOperations(user, req.StageId);
|
||||||
var rewardData = StaticDataParser.Instance.GetRewardTableEntry(clearedStage.reward_id);
|
var rewardData = StaticDataParser.Instance.GetRewardTableEntry(clearedStage.reward_id);
|
||||||
|
|
||||||
user.FieldInfo[clearedStage.chapter_id - 1].CompletedStages.Add(new NetFieldStageData() { StageId = req.StageId });
|
|
||||||
if (rewardData != null)
|
if (rewardData != null)
|
||||||
response.Reward = RegisterRewardsForUser(user, rewardData);
|
response.StageClearReward = RegisterRewardsForUser(user, rewardData);
|
||||||
else
|
else
|
||||||
Logger.Warn("rewardId is null for stage " + req.StageId);
|
Logger.Warn("rewardId is null for stage " + req.StageId);
|
||||||
|
|
||||||
|
user.LastNormalStageCleared = req.StageId;
|
||||||
|
user.FieldInfo[clearedStage.chapter_id - 1].CompletedStages.Add(new NetFieldStageData() { StageId = req.StageId });
|
||||||
JsonDb.Save();
|
JsonDb.Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,56 +56,83 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
|
|
||||||
if (rewardData.user_exp != 0)
|
if (rewardData.user_exp != 0)
|
||||||
{
|
{
|
||||||
var newXp = rewardData.character_exp + user.userPointData.ExperiencePoint;
|
var newXp = rewardData.user_exp + user.userPointData.ExperiencePoint;
|
||||||
var newLevel = StaticDataParser.Instance.GetUserLevelFromUserExp(newXp);
|
var newLevel = StaticDataParser.Instance.GetUserLevelFromUserExp(newXp);
|
||||||
if (newLevel == -1)
|
if (newLevel == -1)
|
||||||
{
|
{
|
||||||
Logger.Warn("Unknown user level value for xp " + newXp);
|
Logger.Warn("Unknown user level value for xp " + newXp);
|
||||||
}
|
}
|
||||||
//ret.UserExp = new NetIncreaseExpData()
|
// TODO: what is the difference between IncreaseExp and GainExp
|
||||||
//{
|
// NOTE: Current Exp/Lv refers to after XP was added.
|
||||||
// BeforeExp = user.userPointData.ExperiencePoint,
|
|
||||||
// BeforeLv = user.userPointData.UserLevel,
|
ret.UserExp = new NetIncreaseExpData()
|
||||||
// IncreaseExp = rewardData.character_exp,
|
{
|
||||||
// CurrentExp = rewardData.character_exp + newXp,
|
BeforeExp = user.userPointData.ExperiencePoint,
|
||||||
// CurrentLv = newLevel,
|
BeforeLv = user.userPointData.UserLevel,
|
||||||
// GainExp = rewardData.character_exp
|
|
||||||
//};
|
IncreaseExp = rewardData.user_exp,
|
||||||
user.userPointData.ExperiencePoint += rewardData.character_exp;
|
CurrentExp = newXp,
|
||||||
|
CurrentLv = newLevel,
|
||||||
|
|
||||||
|
GainExp = rewardData.user_exp,
|
||||||
|
Csn = 123,
|
||||||
|
};
|
||||||
|
user.userPointData.ExperiencePoint = newXp;
|
||||||
|
|
||||||
|
if (newLevel > user.userPointData.UserLevel)
|
||||||
|
{
|
||||||
|
// TODO: Commander Level up reward
|
||||||
|
}
|
||||||
|
user.userPointData.UserLevel = newLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var item in rewardData.rewards)
|
foreach (var item in rewardData.rewards)
|
||||||
{
|
{
|
||||||
if (item.reward_id != 0)
|
if (item.reward_id != 0)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(item.reward_type)) { }
|
if (string.IsNullOrEmpty(item.reward_type) || string.IsNullOrWhiteSpace(item.reward_type)) { }
|
||||||
else if (item.reward_type == "Currency")
|
else if (item.reward_type == "Currency")
|
||||||
{
|
{
|
||||||
Dictionary<CurrencyType, int> current = new Dictionary<CurrencyType, int>();
|
bool found = false;
|
||||||
|
|
||||||
// add all currencies that users has to current dictionary
|
|
||||||
foreach (var currentReward in user.Currency)
|
foreach (var currentReward in user.Currency)
|
||||||
{
|
{
|
||||||
if (!current.ContainsKey(currentReward.Key))
|
if (currentReward.Key == (CurrencyType)item.reward_id)
|
||||||
current.Add(currentReward.Key, 0);
|
{
|
||||||
|
user.Currency[currentReward.Key] += item.reward_value;
|
||||||
|
|
||||||
current[currentReward.Key] = (int)currentReward.Value;
|
ret.Currency.Add(new NetCurrencyData()
|
||||||
|
{
|
||||||
|
FinalValue = user.Currency[currentReward.Key],
|
||||||
|
Value = item.reward_value,
|
||||||
|
Type = item.reward_id
|
||||||
|
});
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add currency reward to response
|
if (!found)
|
||||||
CurrencyType t = (CurrencyType)item.reward_id;
|
{
|
||||||
int val = item.reward_value;
|
user.Currency.Add((CurrencyType)item.reward_id, item.reward_value);
|
||||||
if (!current.ContainsKey(t))
|
ret.Currency.Add(new NetCurrencyData()
|
||||||
current.Add(t, 0);
|
{
|
||||||
var val2 = current[t];
|
FinalValue = item.reward_value,
|
||||||
ret.Currency.Add(new NetCurrencyData() { Type = (int)t, Value = val, FinalValue = val2 + val });
|
Value = item.reward_value,
|
||||||
|
Type = item.reward_id
|
||||||
|
});
|
||||||
// add currency reward to user info
|
}
|
||||||
if (!user.Currency.ContainsKey(t))
|
}
|
||||||
user.Currency.Add(t, val);
|
else if (item.reward_type == "Item")
|
||||||
else
|
{
|
||||||
user.Currency[t] += val;
|
for (int i = 0; i < item.reward_value; i++)
|
||||||
|
{
|
||||||
|
user.Items.Add(new ItemData() { ItemType = item.reward_id });
|
||||||
|
ret.Item.Add(new NetItemData()
|
||||||
|
{
|
||||||
|
Count = 1,
|
||||||
|
Tid = item.reward_id
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -133,6 +161,13 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
team1.Type = 1;
|
team1.Type = 1;
|
||||||
team1.LastContentsTeamNumber = 1;
|
team1.LastContentsTeamNumber = 1;
|
||||||
|
|
||||||
|
|
||||||
|
user.Characters.Add(new Utils.Character() { Csn = 47263455, Tid = 201001 });
|
||||||
|
user.Characters.Add(new Utils.Character() { Csn = 47273456, Tid = 330501 });
|
||||||
|
user.Characters.Add(new Utils.Character() { Csn = 47263457, Tid = 130201 });
|
||||||
|
user.Characters.Add(new Utils.Character() { Csn = 47263458, Tid = 230101 });
|
||||||
|
user.Characters.Add(new Utils.Character() { Csn = 47263459, Tid = 301201 });
|
||||||
|
|
||||||
var team1Sub = new NetTeamData();
|
var team1Sub = new NetTeamData();
|
||||||
team1Sub.TeamNumber = 1;
|
team1Sub.TeamNumber = 1;
|
||||||
for (int i = 1; i < 6; i++)
|
for (int i = 1; i < 6; i++)
|
||||||
@@ -143,11 +178,6 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
team1.Teams.Add(team1Sub);
|
team1.Teams.Add(team1Sub);
|
||||||
user.UserTeams.Add(1, team1);
|
user.UserTeams.Add(1, team1);
|
||||||
|
|
||||||
user.Characters.Add(new Utils.Character() { Csn = 47263455, Tid = 201001 });
|
|
||||||
user.Characters.Add(new Utils.Character() { Csn = 47273456, Tid = 330501 });
|
|
||||||
user.Characters.Add(new Utils.Character() { Csn = 47263457, Tid = 130201 });
|
|
||||||
user.Characters.Add(new Utils.Character() { Csn = 47263458, Tid = 230101 });
|
|
||||||
user.Characters.Add(new Utils.Character() { Csn = 47263459, Tid = 301201 });
|
|
||||||
|
|
||||||
user.RepresentationTeamData.TeamNumber = 1;
|
user.RepresentationTeamData.TeamNumber = 1;
|
||||||
user.RepresentationTeamData.TeamCombat = 1446; // TODO: Don't hardcode this
|
user.RepresentationTeamData.TeamCombat = 1446; // TODO: Don't hardcode this
|
||||||
|
|||||||
@@ -21,9 +21,6 @@ namespace nksrv.LobbyServer.Msgs.Trigger
|
|||||||
var completedQuest = StaticDataParser.Instance.GetMainQuestByTableId(req.Tid);
|
var completedQuest = StaticDataParser.Instance.GetMainQuestByTableId(req.Tid);
|
||||||
if (completedQuest == null) throw new Exception("Quest not found");
|
if (completedQuest == null) throw new Exception("Quest not found");
|
||||||
|
|
||||||
// set next quest as available
|
|
||||||
user.SetQuest(completedQuest.next_main_quest_id, true);
|
|
||||||
|
|
||||||
JsonDb.Save();
|
JsonDb.Save();
|
||||||
var response = new ResFinMainQuest();
|
var response = new ResFinMainQuest();
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
|
|||||||
@@ -1855,4 +1855,15 @@ message ResProfileCardDecorationLayout {
|
|||||||
message ReqGetWallpaperInventory {}
|
message ReqGetWallpaperInventory {}
|
||||||
message ResGetWallpaperInventory {
|
message ResGetWallpaperInventory {
|
||||||
repeated int32 livewallpaperIds = 2;
|
repeated int32 livewallpaperIds = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message NetInAppShopReceivableProductData {
|
||||||
|
string ProductId = 1;
|
||||||
|
string Token = 2;
|
||||||
|
int32 SubTid = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ReqGetInAppShopReceivableProductList {}
|
||||||
|
message ResGetInAppShopReceivableProductList {
|
||||||
|
repeated NetInAppShopReceivableProductData Data = 1;
|
||||||
}
|
}
|
||||||
@@ -47,6 +47,10 @@ namespace nksrv.Utils
|
|||||||
public int ExperiencePoint = 0;
|
public int ExperiencePoint = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ItemData
|
||||||
|
{
|
||||||
|
public int ItemType;
|
||||||
|
}
|
||||||
|
|
||||||
public class User
|
public class User
|
||||||
{
|
{
|
||||||
@@ -71,6 +75,7 @@ namespace nksrv.Utils
|
|||||||
{ CurrencyType.CharPremiumTicket, 999999 }
|
{ CurrencyType.CharPremiumTicket, 999999 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public List<ItemData> Items = new();
|
||||||
public List<Character> Characters = [];
|
public List<Character> Characters = [];
|
||||||
public NetWholeUserTeamData RepresentationTeamData = new();
|
public NetWholeUserTeamData RepresentationTeamData = new();
|
||||||
public List<int> ClearedTutorials = [];
|
public List<int> ClearedTutorials = [];
|
||||||
|
|||||||
Reference in New Issue
Block a user