mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-13 23:44:45 +01:00
levelup, item and synchro device fixes
This commit is contained in:
@@ -13,7 +13,7 @@ namespace nksrv.IntlServer
|
|||||||
|
|
||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
await WriteJsonStringAsync("{\r\n \"msg\": \"success\",\r\n \"notice_list\": [\r\n {\r\n \"app_id\": \"3001001\",\r\n \"app_notice_id\": \"post-6rpvwgrdx1b\",\r\n \"area_list\": \"[\\\"81\\\",\\\"82\\\",\\\"83\\\",\\\"84\\\",\\\"85\\\"]\",\r\n \"content_list\": [\r\n {\r\n \"app_content_id\": \"post-9ilpu79xxzp\",\r\n \"content\": \"This isn't working\",\r\n \"extra_data\": \"{}\",\r\n \"id\": 48706,\r\n \"lang_type\": \"en\",\r\n \"picture_list\": [\r\n {\r\n \"extra_data\": \"{\\\"id\\\":\\\"TitleImage\\\"}\",\r\n \"hash\": \"44a99a61152b5b80a0466ff9f0cee2bc\",\r\n \"redirect_url\": \"\",\r\n \"url\": \"pnt-console-cdn.playernetwork.intlgame.com/prod/29080/notice/022681b1121a40259a575fbe587651b4.jpg\"\r\n }\r\n ],\r\n \"title\": \"New Character\",\r\n \"update_time\": 1717637493\r\n }\r\n ],\r\n \"end_time\": 1719431999,\r\n \"extra_data\": \"{\\\"NoticeType\\\":\\\"Event\\\",\\\"Order\\\":\\\"11\\\",\\\"extra_reserved\\\":\\\"{\\\\\\\"Author\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Category\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"CreateType\\\\\\\":\\\\\\\"4\\\\\\\",\\\\\\\"IsOpenService\\\\\\\":\\\\\\\"0\\\\\\\",\\\\\\\"IsToping\\\\\\\":false,\\\\\\\"Keyword\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Sort\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"TopEnd\\\\\\\":\\\\\\\"2000-01-01 00:00:01\\\\\\\",\\\\\\\"TopStart\\\\\\\":\\\\\\\"2000-01-01 00:00:01\\\\\\\"}\\\"}\",\r\n \"id\": 7560,\r\n \"picture_list\": [],\r\n \"start_time\": 1717617599,\r\n \"status\": 1,\r\n \"update_time\": 1717637494\r\n }\r\n ],\r\n \"ret\": 0,\r\n \"seq\": \"" + Seq + "\"\r\n}");
|
await WriteJsonStringAsync("{\r\n \"msg\": \"success\",\r\n \"notice_list\": [\r\n {\r\n \"app_id\": \"3001001\",\r\n \"app_notice_id\": \"post-6rpvwgrdx1b\",\r\n \"area_list\": \"[\\\"81\\\",\\\"82\\\",\\\"83\\\",\\\"84\\\",\\\"85\\\"]\",\r\n \"content_list\": [\r\n {\r\n \"app_content_id\": \"post-9ilpu79xxzp\",\r\n \"content\": \"This isn't working\",\r\n \"extra_data\": \"{}\",\r\n \"id\": 48706,\r\n \"lang_type\": \"en\",\r\n \"picture_list\": [\r\n {\r\n \"extra_data\": \"{\\\"id\\\":\\\"TitleImage\\\"}\",\r\n \"hash\": \"44a99a61152b5b80a0466ff9f0cee2bc\",\r\n \"redirect_url\": \"\",\r\n \"url\": \"pnt-console-cdn.playernetwork.intlgame.com/prod/29080/notice/022681b1121a40259a575fbe587651b4.jpg\"\r\n }\r\n ],\r\n \"title\": \"New Character\",\r\n \"update_time\": 1717637493\r\n }\r\n ],\r\n \"end_time\": 1819431999,\r\n \"extra_data\": \"{\\\"NoticeType\\\":\\\"Event\\\",\\\"Order\\\":\\\"11\\\",\\\"extra_reserved\\\":\\\"{\\\\\\\"Author\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Category\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"CreateType\\\\\\\":\\\\\\\"4\\\\\\\",\\\\\\\"IsOpenService\\\\\\\":\\\\\\\"0\\\\\\\",\\\\\\\"IsToping\\\\\\\":false,\\\\\\\"Keyword\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Sort\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"TopEnd\\\\\\\":\\\\\\\"2000-01-01 00:00:01\\\\\\\",\\\\\\\"TopStart\\\\\\\":\\\\\\\"2000-01-01 00:00:01\\\\\\\"}\\\"}\",\r\n \"id\": 7560,\r\n \"picture_list\": [],\r\n \"start_time\": 1717617599,\r\n \"status\": 1,\r\n \"update_time\": 1717637494\r\n }\r\n ],\r\n \"ret\": 0,\r\n \"seq\": \"" + Seq + "\"\r\n}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,15 +13,27 @@ namespace nksrv.LobbyServer.Msgs.Character
|
|||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ReqGetSynchroData>();
|
var req = await ReadData<ReqGetSynchroData>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
var response = new ReqGetSynchroData();
|
var highestLevelCharacters = user.Characters.OrderByDescending(x => x.Level).Take(5).ToList();
|
||||||
|
|
||||||
|
var response = new ResGetSynchroData();
|
||||||
response.Synchro = new NetUserSynchroData();
|
response.Synchro = new NetUserSynchroData();
|
||||||
response.Synchro.SynchroLv = 1;
|
|
||||||
|
foreach (var item in highestLevelCharacters)
|
||||||
|
{
|
||||||
|
response.Synchro.StandardCharacters.Add(new NetUserCharacterData() { Default = new() { Csn = item.Csn, Skill1Lv = item.Skill1Lvl, Skill2Lv = item.Skill2Lvl, CostumeId = item.CostumeId, Lv = item.Level, Grade = item.Grade, Tid = item.Tid, UltiSkillLv = item.UltimateLevel } });
|
||||||
|
}
|
||||||
|
|
||||||
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 1 });
|
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 1 });
|
||||||
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 2 });
|
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 2 });
|
||||||
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 3 });
|
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 3 });
|
||||||
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 4 });
|
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 4 });
|
||||||
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 5 });
|
response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 5 });
|
||||||
|
|
||||||
|
response.Synchro.SynchroMaxLv = highestLevelCharacters.First().Level;
|
||||||
|
response.Synchro.SynchroLv = highestLevelCharacters.Last().Level;
|
||||||
|
|
||||||
// TODO: Validate response from real server and pull info from user info
|
// TODO: Validate response from real server and pull info from user info
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
|
|||||||
56
nksrv/LobbyServer/Msgs/Character/LevelUp.cs
Normal file
56
nksrv/LobbyServer/Msgs/Character/LevelUp.cs
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
using nksrv.Utils;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace nksrv.LobbyServer.Msgs.Character
|
||||||
|
{
|
||||||
|
[PacketPath("/character/levelup")]
|
||||||
|
public class LevelUp : LobbyMsgHandler
|
||||||
|
{
|
||||||
|
protected override async Task HandleAsync()
|
||||||
|
{
|
||||||
|
var req = await ReadData<ReqCharacterLevelUp>();
|
||||||
|
var user = GetUser();
|
||||||
|
var response = new ResCharacterLevelUp();
|
||||||
|
|
||||||
|
foreach (var item in user.Characters.ToArray())
|
||||||
|
{
|
||||||
|
if (item.Csn == req.Csn)
|
||||||
|
{
|
||||||
|
item.Level = req.Level;
|
||||||
|
// TODO: subtract currency
|
||||||
|
|
||||||
|
|
||||||
|
response.Character = new() {
|
||||||
|
CostumeId = item.CostumeId,
|
||||||
|
Csn = item.Csn,
|
||||||
|
Lv = item.Level,
|
||||||
|
Skill1Lv = item.Skill1Lvl,
|
||||||
|
Skill2Lv = item.Skill2Lvl,
|
||||||
|
UltiSkillLv = item.UltimateLevel,
|
||||||
|
Grade = item.Grade,
|
||||||
|
Tid = item.Tid
|
||||||
|
};
|
||||||
|
var highestLevelCharacters = user.Characters.OrderByDescending(x => x.Level).Take(5).ToList();
|
||||||
|
|
||||||
|
response.SynchroLv = highestLevelCharacters.Last().Level;
|
||||||
|
|
||||||
|
foreach (var c in highestLevelCharacters)
|
||||||
|
{
|
||||||
|
response.SynchroStandardCharacters.Add(c.Tid);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
JsonDb.Save();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
WriteData(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,14 +20,13 @@ 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 = 0, Price = "0", ProductId = item });
|
response.ProductInfoList.Add(new NetJupiterProductInfo() { CurrencyCode = "US", CurrencySymbol = "$", MicroPrice = 0, Price = "1", ProductId = item });
|
||||||
}
|
}
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch(Exception ex)
|
||||||
{
|
{
|
||||||
Logger.Error("Error while handling GetProductList request. Have you replaced sodium library?" + ex);
|
Logger.Error("Error while handling GetProductList request. Have you replaced sodium library?" + ex);
|
||||||
;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,12 +148,13 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
}
|
}
|
||||||
else if (item.reward_type == "Item")
|
else if (item.reward_type == "Item")
|
||||||
{
|
{
|
||||||
user.Items.Add(new ItemData() { ItemType = item.reward_id });
|
var id = user.GenerateUniqueItemId();
|
||||||
|
user.Items.Add(new ItemData() { ItemType = item.reward_id, Isn = id, Level = 1, Exp = 0, Count = 1 });
|
||||||
ret.Item.Add(new NetItemData()
|
ret.Item.Add(new NetItemData()
|
||||||
{
|
{
|
||||||
Count = item.reward_value,
|
Count = item.reward_value,
|
||||||
Tid = item.reward_id,
|
Tid = item.reward_id,
|
||||||
Isn = 123
|
Isn = id
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -56,6 +56,13 @@ namespace nksrv.LobbyServer.Msgs.User
|
|||||||
response.Items.Add(new NetUserItemData() { Count = item.Count, Tid = item.ItemType, Csn = item.Csn, Lv = item.Level, Exp = item.Exp, Corporation = item.Corp, Isn = item.Isn, Position = item.Position});
|
response.Items.Add(new NetUserItemData() { Count = item.Count, Tid = item.ItemType, Csn = item.Csn, Lv = item.Level, Exp = item.Exp, Corporation = item.Corp, Isn = item.Isn, Position = item.Position});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var highestLevelCharacters = user.Characters.OrderByDescending(x => x.Level).Take(5).ToList();
|
||||||
|
response.SynchroLv = highestLevelCharacters.Last().Level;
|
||||||
|
foreach (var item in highestLevelCharacters)
|
||||||
|
{
|
||||||
|
response.SynchroStandardCharacters.Add(item.Csn);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Add squad data if there are characters
|
// Add squad data if there are characters
|
||||||
if (user.Characters.Count > 0)
|
if (user.Characters.Count > 0)
|
||||||
|
|||||||
36
nksrv/LobbyServer/Msgs/User/GetMail.cs
Normal file
36
nksrv/LobbyServer/Msgs/User/GetMail.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
using nksrv.Utils;
|
||||||
|
using Swan;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace nksrv.LobbyServer.Msgs.User
|
||||||
|
{
|
||||||
|
[PacketPath("/mail/get")]
|
||||||
|
public class GetMail : LobbyMsgHandler
|
||||||
|
{
|
||||||
|
protected override async Task HandleAsync()
|
||||||
|
{
|
||||||
|
var req = await ReadData<ReqGetMailData>();
|
||||||
|
|
||||||
|
var r = new ResGetMailData();
|
||||||
|
r.Mail.Add(new NetUserMailData()
|
||||||
|
{
|
||||||
|
|
||||||
|
Msn = 3,
|
||||||
|
Nickname ="nick",
|
||||||
|
Title = new() { IsPlain = true, String = "Our Server Fell" },
|
||||||
|
Text = new() { IsPlain = true, String = "Our Game Was Down For 1 Second because the HP Laptop Which Hosted the Server Got Shut Down by the Lid Closing. As for the Reward for the Inconvience, free paid gems"},
|
||||||
|
HasReward =true,
|
||||||
|
Sender = 102
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
r.Mail[0].Items.Add(new NetMailRewardItem() { ExpiredAt = DateTime.UtcNow.AddYears(10).ToUnixEpochDate(), RewardID = 1, RewardType = (int)CurrencyType.ChargeCash, RewardValue = 100000 });
|
||||||
|
|
||||||
|
WriteData(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
nksrv/LobbyServer/Msgs/User/ReadMail.cs
Normal file
23
nksrv/LobbyServer/Msgs/User/ReadMail.cs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
using nksrv.Utils;
|
||||||
|
using Swan;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace nksrv.LobbyServer.Msgs.User
|
||||||
|
{
|
||||||
|
[PacketPath("/mail/read")]
|
||||||
|
public class ReadMail : LobbyMsgHandler
|
||||||
|
{
|
||||||
|
protected override async Task HandleAsync()
|
||||||
|
{
|
||||||
|
var req = await ReadData<ReqReadMail>();
|
||||||
|
|
||||||
|
var r = new ResReadMail();
|
||||||
|
//TODO
|
||||||
|
WriteData(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1237,7 +1237,8 @@ message NetUserSynchroData {
|
|||||||
repeated NetSynchroSlot Slots = 5;
|
repeated NetSynchroSlot Slots = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ReqGetSynchroData {
|
message ReqGetSynchroData {}
|
||||||
|
message ResGetSynchroData {
|
||||||
NetUserSynchroData synchro = 2;
|
NetUserSynchroData synchro = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1960,7 +1961,9 @@ message ReqWearEquipment {
|
|||||||
int64 Isn = 2;
|
int64 Isn = 2;
|
||||||
int64 Csn = 3;
|
int64 Csn = 3;
|
||||||
}
|
}
|
||||||
message ResWearEquipment {}
|
message ResWearEquipment {
|
||||||
|
repeated NetUserItemData items = 3;
|
||||||
|
}
|
||||||
|
|
||||||
message NetCampaignFieldObject {
|
message NetCampaignFieldObject {
|
||||||
string PositionID = 1;
|
string PositionID = 1;
|
||||||
@@ -2114,4 +2117,57 @@ message ReqSaveCampaignFieldObject {
|
|||||||
NetCampaignFieldObject fieldObject = 3;
|
NetCampaignFieldObject fieldObject = 3;
|
||||||
}
|
}
|
||||||
message ResSaveCampaignFieldObject {
|
message ResSaveCampaignFieldObject {
|
||||||
|
}
|
||||||
|
|
||||||
|
message ReqCharacterLevelUp {
|
||||||
|
int64 Csn = 2;
|
||||||
|
int32 Level = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ResCharacterLevelUp {
|
||||||
|
NetUserCharacterDefaultData Character = 4;
|
||||||
|
repeated NetUserCurrencyData Currencies = 3;
|
||||||
|
int32 SynchroLv = 5;
|
||||||
|
repeated int64 SynchroStandardCharacters = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
message NetMailRewardItem {
|
||||||
|
int32 RewardType = 1;
|
||||||
|
int32 RewardID = 2;
|
||||||
|
int32 RewardValue = 3;
|
||||||
|
int64 ExpiredAt = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message LocaleableText {
|
||||||
|
bool IsPlain = 1;
|
||||||
|
string String = 2;
|
||||||
|
repeated string Args = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message NetUserMailData {
|
||||||
|
int64 Msn = 1;
|
||||||
|
int32 Sender = 2;
|
||||||
|
int32 Type = 3;
|
||||||
|
int32 State = 4;
|
||||||
|
LocaleableText Title = 5;
|
||||||
|
LocaleableText Text = 6;
|
||||||
|
int64 CreatedAt = 7;
|
||||||
|
string Nickname = 9;
|
||||||
|
repeated string appNoticeId = 10;
|
||||||
|
bool HasReward = 11;
|
||||||
|
repeated NetMailRewardItem items = 12;
|
||||||
|
int32 Period = 13;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ReqGetMailData {}
|
||||||
|
message ResGetMailData {
|
||||||
|
repeated NetUserMailData mail = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ReqReadMail {
|
||||||
|
int64 Msn = 1;
|
||||||
|
int32 Type = 2;
|
||||||
|
}
|
||||||
|
message ResReadMail {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -122,6 +122,18 @@ namespace nksrv.Utils
|
|||||||
MainQuestData.Add(tid, recieved);
|
MainQuestData.Add(tid, recieved);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int GenerateUniqueItemId()
|
||||||
|
{
|
||||||
|
var num = Rng.RandomId();
|
||||||
|
|
||||||
|
while (Items.Any(x => x.Isn == num))
|
||||||
|
{
|
||||||
|
num = Rng.RandomId();
|
||||||
|
}
|
||||||
|
|
||||||
|
return num;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public class CoreInfo
|
public class CoreInfo
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,5 +16,10 @@ namespace nksrv.Utils
|
|||||||
return new string(Enumerable.Repeat(chars, length)
|
return new string(Enumerable.Repeat(chars, length)
|
||||||
.Select(s => s[random.Next(s.Length)]).ToArray());
|
.Select(s => s[random.Next(s.Length)]).ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int RandomId()
|
||||||
|
{
|
||||||
|
return random.Next();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user