신규 유저의 경우, 클라이언트에서 데이터를 만든 뒤, 서버에 저장하는 로직을 제거하고 서버에서 만들기
This commit is contained in:
parent
30f1bdb316
commit
57798d75a9
|
|
@ -134,55 +134,32 @@ handlers.Get_UserInfo = function (args)
|
||||||
|
|
||||||
if (sec > 0)
|
if (sec > 0)
|
||||||
{
|
{
|
||||||
for (var i = 0; i < urod.Farm.Slot.length; i++)
|
// 오프라인 보상
|
||||||
{
|
|
||||||
if (urod.Farm.Slot[i].Time > 0)
|
|
||||||
{
|
|
||||||
urod.Farm.Slot[i].Time -= sec;
|
|
||||||
if (urod.Farm.Slot[i].Time < 0) urod.Farm.Slot[i].Time = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i = 0; i < urod.Farm.Shop.length; i++)
|
|
||||||
{
|
|
||||||
if (urod.Farm.Shop[i][2] > 0)
|
|
||||||
{
|
|
||||||
urod.Farm.Shop[i][2] -= sec;
|
|
||||||
if (urod.Farm.Shop[i][2] < 0) urod.Farm.Shop[i][2] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var key in urod.Shop)
|
|
||||||
{
|
|
||||||
if (urod.Shop.hasOwnProperty(key))
|
|
||||||
{
|
|
||||||
if (urod.Shop[key][2] > 0)
|
|
||||||
{
|
|
||||||
urod.Shop[key][2] -= sec;
|
|
||||||
if (urod.Shop[key][2] < 0) urod.Shop[key][2] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i = 0; i < urod.Buff.Time.length; i++)
|
|
||||||
{
|
|
||||||
if (urod.Buff.Time[i] > 0)
|
|
||||||
{
|
|
||||||
urod.Buff.Time[i] -= sec;
|
|
||||||
if (urod.Buff.Time[i] < 0) urod.Buff.Time[i] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
savedata = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
savedata = true;
|
savedata = true;
|
||||||
|
|
||||||
|
var table = Get_MissionTable();
|
||||||
|
var itemtable = Get_ItemTable();
|
||||||
|
|
||||||
|
urod = Create_NewUserData();
|
||||||
|
// 최초 클래스 및 스킬 추가
|
||||||
|
var classid = urod.Equip.Equip.PC;
|
||||||
|
Add_Item(table, itemtable, urod, classid, 1);
|
||||||
|
var skilllst = Get_SkillTable().filter(f=>f.e_SkillType != "JobPassive" && f.n_SkillClassID == classid);
|
||||||
|
for (var i = 0; i < skilllst.length; ++i)
|
||||||
|
Add_Item(table, itemtable, urod, skilllst[i].n_SkillID, 1);
|
||||||
|
// 코스튬, 펫, 짐꾼 추가
|
||||||
|
Add_Item(table, itemtable, urod, 110001, 1);
|
||||||
|
Add_Item(table, itemtable, urod, Get_GlobalValue_nValue("n_FirstEquipPet"), 1);
|
||||||
|
Add_Item(table, itemtable, urod, 70001, 1);
|
||||||
Make_EqiupmentEnchantOption(urod);
|
Make_EqiupmentEnchantOption(urod);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (savedata) Set_JsonUserData(urod);
|
// 테스트 완료 후 주석 제거
|
||||||
|
//if (savedata) Set_JsonUserData(urod);
|
||||||
|
|
||||||
return Get_Return(
|
return Get_Return(
|
||||||
Get_Error(readonlydata, args.Token),
|
Get_Error(readonlydata, args.Token),
|
||||||
|
|
@ -194,6 +171,203 @@ handlers.Get_UserInfo = function (args)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
function Create_NewUserData() {
|
||||||
|
var data = {};
|
||||||
|
|
||||||
|
data.LastTime = Get_CurKoreaTime();
|
||||||
|
data.Common = Array.from({ length: eCommon.Max }, () => 0);
|
||||||
|
data.MapData = {};
|
||||||
|
data.Buff = Init_Buff();
|
||||||
|
data.Equip = Init_Equip();
|
||||||
|
data.Equipment = {};
|
||||||
|
data.Slot = Init_Slot();
|
||||||
|
data.Item = {};
|
||||||
|
data.Enchant = Init_Enchant();
|
||||||
|
data.Skill = {};
|
||||||
|
data.Ability = {};
|
||||||
|
data.PC = Init_PC();
|
||||||
|
data.Awaken = Init_Awaken();
|
||||||
|
data.LimitSlot = Init_LimitSlot();
|
||||||
|
data.Pet = {};
|
||||||
|
data.PetData = { GachaLv: 1, GachaExp : 0, PetGachaADTime : Get_CurKoreaTime() };
|
||||||
|
data.Relic = {};
|
||||||
|
data.Collection = {};
|
||||||
|
data.MobKill = {};
|
||||||
|
data.Farm = Init_Farm();
|
||||||
|
data.Dungeon = {};
|
||||||
|
data.Mission = {};
|
||||||
|
data.Gacha = {};
|
||||||
|
data.Shop = {};
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
const eCommon = {
|
||||||
|
Agree: 0,
|
||||||
|
Noti: 1,
|
||||||
|
NightNoti: 2,
|
||||||
|
DOY_Day: 3,
|
||||||
|
DOY_Week: 4,
|
||||||
|
DOY_Month: 5,
|
||||||
|
PlayTime: 6,
|
||||||
|
Auto: 7,
|
||||||
|
FirstStatInit: 8,
|
||||||
|
ADRemove: 9,
|
||||||
|
GuideStep: 10,
|
||||||
|
GuideCount: 11,
|
||||||
|
|
||||||
|
NickChange: 12,
|
||||||
|
X2: 13,
|
||||||
|
CloverShopResetTime: 14,
|
||||||
|
CloverShopID_Weapon: 15,
|
||||||
|
CloverShopID_Ring: 16,
|
||||||
|
CloverShopID_Neck: 17,
|
||||||
|
CloverShopID_Boots: 18,
|
||||||
|
CloverShopID_Fairy: 19,
|
||||||
|
CloverShopID_Magic: 20,
|
||||||
|
CloverShopID_Pet: 21,
|
||||||
|
InAppBuyCount: 22,
|
||||||
|
FieldFirstFree: 23,
|
||||||
|
Roullette_Ticket: 24,
|
||||||
|
Roullette_Count: 25,
|
||||||
|
Roullette_ADCount: 26,
|
||||||
|
Roullette_LuckyCount: 27,
|
||||||
|
AttendanceStep: 28,
|
||||||
|
AttendanceDOY: 29,
|
||||||
|
|
||||||
|
Max: 30
|
||||||
|
};
|
||||||
|
function Init_Buff() {
|
||||||
|
return {
|
||||||
|
Infinity: 0,
|
||||||
|
Time: [new Date(), new Date(), new Date()]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function Init_Equip() {
|
||||||
|
const equip = {};
|
||||||
|
|
||||||
|
var classid = Get_GlobalValue_nValue("n_FirstClassID");
|
||||||
|
equip.Equip = {
|
||||||
|
PC: classid,
|
||||||
|
PCCostume: 110001,
|
||||||
|
Weapon: 0,
|
||||||
|
WeaponCostume: 0,
|
||||||
|
Armor: 0,
|
||||||
|
Helmet: 0,
|
||||||
|
Extra: 0,
|
||||||
|
Necklace: 0,
|
||||||
|
Ring: 0,
|
||||||
|
Pet: Get_GlobalValue_nValue("n_FirstEquipPet"),
|
||||||
|
Farmer: 0,
|
||||||
|
Worker: 70001
|
||||||
|
};
|
||||||
|
|
||||||
|
equip.Preset = 1;
|
||||||
|
equip.LimitPreset = 1;
|
||||||
|
|
||||||
|
var skilllst = Get_SkillTable().filter(f=>f.e_SkillType != "JobPassive" && f.n_SkillClassID == classid);
|
||||||
|
const equipSkillValues = [
|
||||||
|
skilllst[0].n_SkillID,
|
||||||
|
skilllst[1].n_SkillID,
|
||||||
|
skilllst[2].n_SkillID,
|
||||||
|
0, 0, 0
|
||||||
|
];
|
||||||
|
|
||||||
|
equip.Skill = {
|
||||||
|
1: [],
|
||||||
|
2: [],
|
||||||
|
3: []
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const preset in equip.Skill) {
|
||||||
|
equip.Skill[preset] = [...equipSkillValues];
|
||||||
|
}
|
||||||
|
|
||||||
|
return equip;
|
||||||
|
}
|
||||||
|
function Init_Slot() {
|
||||||
|
const dic_EquipmentKey = {
|
||||||
|
Weapon: { id: 0, key: "Weapon" },
|
||||||
|
Armor: { id: 1, key: "Armor" },
|
||||||
|
Helmet: { id: 2, key: "Helmet" },
|
||||||
|
Extra: { id: 3, key: "Extra" },
|
||||||
|
Necklace: { id: 4, key: "Necklace" },
|
||||||
|
Ring: { id: 5, key: "Ring" }
|
||||||
|
};
|
||||||
|
|
||||||
|
const slotList = [];
|
||||||
|
|
||||||
|
for (const parts in dic_EquipmentKey) {
|
||||||
|
slotList.push({
|
||||||
|
Parts: parts, // key string 사용
|
||||||
|
Lv: 0,
|
||||||
|
Use: 0,
|
||||||
|
Enchant: [
|
||||||
|
{ ID : 0, EXTRA : 0, Lv : 0 },
|
||||||
|
{ ID : 0, EXTRA : 0, Lv : 0 },
|
||||||
|
{ ID : 0, EXTRA : 0, Lv : 0 }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return slotList;
|
||||||
|
}
|
||||||
|
function Init_Enchant() {
|
||||||
|
var enchant = {};
|
||||||
|
var list = Get_EnchantListTable();
|
||||||
|
for (var i = 0; i < list.length; i++)
|
||||||
|
enchant[list[i].n_EnchantID] = [0, 1, 0, 0];
|
||||||
|
return enchant;
|
||||||
|
}
|
||||||
|
function Init_Awaken() {
|
||||||
|
return {
|
||||||
|
STR: { LV : 1, Exp : 0 },
|
||||||
|
DEX: { LV : 1, Exp : 0 },
|
||||||
|
INT: { LV : 1, Exp : 0 },
|
||||||
|
LUK: { LV : 1, Exp : 0 }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function Init_PC() {
|
||||||
|
return {
|
||||||
|
Lv: 1,
|
||||||
|
LLv: 1,
|
||||||
|
ALv: 1,
|
||||||
|
Exp: 0,
|
||||||
|
AExp: 0,
|
||||||
|
Stat: [0, 0, 0, 0],
|
||||||
|
Obtain: []
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function Init_LimitSlot() {
|
||||||
|
var result = { "1": [], "2": [], "3": [] };
|
||||||
|
for (var key in result) {
|
||||||
|
for (var i = 0; i < 6; i++) {
|
||||||
|
result[key].push({ ID: 0, Lock: 0 });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
function Init_FarmSlot(slotIndex) {
|
||||||
|
return {
|
||||||
|
Slot: slotIndex,
|
||||||
|
Grade: 0,
|
||||||
|
EnchantID: 0,
|
||||||
|
Time: new Date()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function Init_Farm() {
|
||||||
|
const farmSlotList = [];
|
||||||
|
for (let i = 0; i < 8; i++) {
|
||||||
|
farmSlotList.push(Init_FarmSlot(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
MaxSlot: 0,
|
||||||
|
Slot: farmSlotList,
|
||||||
|
Eat: {},
|
||||||
|
Shop: {}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
handlers.Get_OtherUserInfo = function (args)
|
handlers.Get_OtherUserInfo = function (args)
|
||||||
{
|
{
|
||||||
var urod = server.GetUserReadOnlyData({ PlayFabId: args.ID }).Data;
|
var urod = server.GetUserReadOnlyData({ PlayFabId: args.ID }).Data;
|
||||||
|
|
|
||||||
|
|
@ -334,29 +334,26 @@ public class ServerData_Read
|
||||||
temp.LimitBreakOption = LimitBreakOption;
|
temp.LimitBreakOption = LimitBreakOption;
|
||||||
temp.EnchantOption = EnchantOption;
|
temp.EnchantOption = EnchantOption;
|
||||||
|
|
||||||
temp.Book = new List<ServerData_Book>();
|
//temp.Book = new List<ServerData_Book>();
|
||||||
for (int i = 0; i < Book.Count; i++)
|
//for (int i = 0; i < Book.Count; i++)
|
||||||
temp.Book.Add(Book[i].Get());
|
// temp.Book.Add(Book[i].Get());
|
||||||
|
|
||||||
temp.ChapterQuest = new List<ServerData_ChapterQuest>();
|
//temp.ChapterQuest = new List<ServerData_ChapterQuest>();
|
||||||
for (int i = 0; i < ChapterQuest.Count; i++)
|
//for (int i = 0; i < ChapterQuest.Count; i++)
|
||||||
temp.ChapterQuest.Add(ChapterQuest[i].Get());
|
// temp.ChapterQuest.Add(ChapterQuest[i].Get());
|
||||||
|
|
||||||
temp.Title = DSUtil.Get_T_List(Title);
|
//temp.Title = DSUtil.Get_T_List(Title);
|
||||||
temp.Pass = DSUtil.Get_T_List(Pass);
|
//temp.Pass = DSUtil.Get_T_List(Pass);
|
||||||
|
|
||||||
foreach (var item in Inven)
|
//foreach (var item in Inven)
|
||||||
temp.Inven.Add(item.Key, item.Value);
|
// temp.Inven.Add(item.Key, item.Value);
|
||||||
|
|
||||||
temp.Potion = DSUtil.Get_T_Dic(Potion);
|
//temp.Potion = DSUtil.Get_T_Dic(Potion);
|
||||||
if (Event != null) temp.Event = DSUtil.Get_T_Dic(Event);
|
//if (Event != null) temp.Event = DSUtil.Get_T_Dic(Event);
|
||||||
|
|
||||||
//temp.TotalAdd = TotalAdd;
|
//temp.TotalAdd = TotalAdd;
|
||||||
//temp.TotalUse = TotalUse;
|
//temp.TotalUse = TotalUse;
|
||||||
|
|
||||||
#region 추가 데이터 체크
|
|
||||||
DataCheck(Common, temp.Common, (int)eCommon.Max);
|
|
||||||
#endregion
|
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -321,23 +321,14 @@ public class ServerInfo : MyCoroutine
|
||||||
var str_result = urod.FunctionResult.ToString();
|
var str_result = urod.FunctionResult.ToString();
|
||||||
var error = MyErrorCheck(str_result);
|
var error = MyErrorCheck(str_result);
|
||||||
var json = JsonConvert.DeserializeObject<SC_GetUserInfoResult>(str_result);
|
var json = JsonConvert.DeserializeObject<SC_GetUserInfoResult>(str_result);
|
||||||
|
m_ServerData = json.UserInfo.Get_ServerData(false);
|
||||||
OffLineReward.m_Sec = json.ReconnectSec;
|
OffLineReward.m_Sec = json.ReconnectSec;
|
||||||
Get_MailList(json.Mail, null);
|
Get_MailList(json.Mail, null);
|
||||||
|
|
||||||
if (!json.isNewUser)
|
|
||||||
{ // 기존 유저
|
|
||||||
m_ServerData = json.UserInfo.Get_ServerData(false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ // 신규 유저
|
|
||||||
m_ServerData = new ServerData();
|
|
||||||
}
|
|
||||||
|
|
||||||
OptionInfo.Ins.Set_UI();
|
OptionInfo.Ins.Set_UI();
|
||||||
|
|
||||||
// 서버 데이터 가져오기 완료
|
if (json.isNewUser) // 닉네임 만들기
|
||||||
if (json.isNewUser) // 기본 데이터 서버에 저장하고 닉네임 만들기
|
SetFirstName(_servercomplete, true);
|
||||||
Write(() => { SetFirstName(_servercomplete, true); });
|
|
||||||
else
|
else
|
||||||
_servercomplete(false);
|
_servercomplete(false);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public class LimitSlotChangeData
|
||||||
Price = TotalPrice;
|
Price = TotalPrice;
|
||||||
Count = MissionCount;
|
Count = MissionCount;
|
||||||
SelectPreset = sdata.Equip.LimitPreset;
|
SelectPreset = sdata.Equip.LimitPreset;
|
||||||
Preset = sdata.LimitBreakOption.Preset;
|
Preset = sdata.LimitBreakOption != null ? sdata.LimitBreakOption.Preset : null;
|
||||||
Copy_ServerLimitSlot();
|
Copy_ServerLimitSlot();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue