From c62e88327d1317a70e5ba14eac1417bd38628ce0 Mon Sep 17 00:00:00 2001 From: Ino Date: Wed, 2 Jul 2025 14:26:36 +0900 Subject: [PATCH] Save_PC_Awaken --- .../Editor/Resources/.CloudScript.js | 50 +++++++++++++++++++ Assets/Script/Server/ServerClass.cs | 10 ++++ Assets/Script/Server/ServerInfo.cs | 38 ++++++++++++++ Assets/Script/UI/PC/Awaken/PCAwakenCard.cs | 10 ++-- 4 files changed, 104 insertions(+), 4 deletions(-) diff --git a/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js b/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js index 6a080460f..fece469e1 100644 --- a/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js +++ b/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js @@ -788,6 +788,7 @@ handlers.Save_PC_EquipJob = function(args) Set_JsonUserData(urod); return Get_Return(0); } + handlers.Save_PC_AwakenLvUp = function(args) { var readonlydata = Get_UserReadOnlyData(); @@ -822,6 +823,55 @@ handlers.Save_PC_AwakenLvUp = function(args) else return Get_Return(3); } +handlers.Save_PC_Awaken = function(args) +{ + var readonlydata = Get_UserReadOnlyData(); + var error = Get_Error(readonlydata, args.Token); + if (error < 0) return Get_Return(error); + + var urod = Get_JsonUserData(readonlydata); + + var awakenupgradetable = Get_AwakenUpgradeTable(); + var audata = awakenupgradetable.find(f=>f.n_AwakenStep == urod.Awaken[args.AwakenStat].Lv); + + // 각성 경험치가 n_MaxUpgradeLevel 보다 같으면 가능 + if (urod.Awaken[args.AwakenStat].Exp >= audata.n_MaxUpgradeLevel) + { + // 다음 각성 단계가 있어야 각성 가능 + var nextaudata = awakenupgradetable.find(f=>f.n_AwakenStep == urod.Awaken[args.AwakenStat].Lv + 1); + if (nextaudata) + { + var matkey = ""; + switch (args.AwakenStat) + { + case "STR": matkey = "AWAKEN_GOODS_STR"; break; + case "DEX": matkey = "AWAKEN_GOODS_DEX"; break; + case "INT": matkey = "AWAKEN_GOODS_INT"; break; + case "LUK": matkey = "AWAKEN_GOODS_LUK"; break; + } + var global = Get_GlobalValueTable(); + var matdata = global.find(f => f.s_ID == matkey); + if (!matdata) return Get_Return(1); // 설정 누락 + var materialId = matdata.n_Value; + + //log.info("필요한 재화 " + materialId + ", 필요한 갯수 " + audata.n_AwakenGoodsCost); + if (Use_Item(Get_MissionTable(), urod, materialId, audata.n_AwakenGoodsCost)) + { + ++urod.Awaken[args.AwakenStat].Lv; + urod.Awaken[args.AwakenStat].Exp = 0; + + Set_JsonUserData(urod); + return Get_Return(0); + } + else + return Get_Return(2); + } + else + return Get_Return(4); + } + else + return Get_Return(3); +} /////////////////////////////////// 서버 처리 handlers.Write_UnityInApp = function(args) diff --git a/Assets/Script/Server/ServerClass.cs b/Assets/Script/Server/ServerClass.cs index 87936c7e6..9f7887734 100644 --- a/Assets/Script/Server/ServerClass.cs +++ b/Assets/Script/Server/ServerClass.cs @@ -1127,6 +1127,16 @@ public partial class ServerData } break; + case ePurpose.HERO_AWAKEN_ACC: + switch (data.n_MissionConditionValue) + { + case 1: return Get_AwakenLv(eStat.STR); + case 2: return Get_AwakenLv(eStat.DEX); + case 3: return Get_AwakenLv(eStat.INT); + case 4: return Get_AwakenLv(eStat.LUK); + } + break; + case ePurpose.EAT_FRUIT_TYPE_ACC: return Get_EatFruitCount(data.n_MissionConditionValue); case ePurpose.EAT_FRUIT_TYPE_ALL: diff --git a/Assets/Script/Server/ServerInfo.cs b/Assets/Script/Server/ServerInfo.cs index c11b11ed8..dc88daa53 100644 --- a/Assets/Script/Server/ServerInfo.cs +++ b/Assets/Script/Server/ServerInfo.cs @@ -1071,6 +1071,7 @@ public class ServerInfo : MyCoroutine Set_Coroutine(() => { Save_PC_EquipJob(jobid, _act); }, 2f); }); } + public void Save_PC_AwakenLvUp(eStat stat, Action _act) { NetWait.Ins.Set(true); @@ -1107,6 +1108,43 @@ public class ServerInfo : MyCoroutine Set_Coroutine(() => { Save_PC_AwakenLvUp(stat, _act); }, 2f); }); } + public void Save_PC_Awaken(eStat stat, Action _act) + { + NetWait.Ins.Set(true); + PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest + { + FunctionName = "Save_PC_Awaken", + GeneratePlayStreamEvent = true, + FunctionParameter = new + { + Token = m_LoginInfo.EntityToken.EntityToken, + AwakenStat = stat, + } + }, + result => + { + if (result.Error == null) + { + NetWait.Ins.Set(false); + var error = MyErrorCheck(result.FunctionResult.ToString()); + // (0 성공, 1 실패(재화 id 없음), 2 실패 (재화 부족), 3, 실패 (각성 레벨 부족), 4 실패 (더 이상 각성 불가)) + switch (error) + { + case 0: _act?.Invoke(); break; + case 1: ToastUI.Ins.Set(999900005); break; + case 2: ToastUI.Ins.Set(388); break; + case 3: ToastUI.Ins.Set(263); break; + case 4: ToastUI.Ins.Set(999900010); break; + } + } + else + Set_Coroutine(() => { Save_PC_Awaken(stat, _act); }, 2f); + }, + fail => + { + Set_Coroutine(() => { Save_PC_Awaken(stat, _act); }, 2f); + }); + } #endregion #region 우편 diff --git a/Assets/Script/UI/PC/Awaken/PCAwakenCard.cs b/Assets/Script/UI/PC/Awaken/PCAwakenCard.cs index cb809434e..375458446 100644 --- a/Assets/Script/UI/PC/Awaken/PCAwakenCard.cs +++ b/Assets/Script/UI/PC/Awaken/PCAwakenCard.cs @@ -99,10 +99,12 @@ public class PCAwakenCard : CardBase var moneyid = Get_AwakenMoneyID(); if (sdata.Check_ItemAmount(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost)) { - sdata.Use_Item(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost); - sdata.Add_AwakenLv(m_Stat); - Set_UI(); - sdata.Add_MissionCount(ePurpose.HERO_AWAKEN_ACC, Get_AwakenMissionID()); + ServerInfo.Ins.Save_PC_Awaken(m_Stat, () => + { + sdata.Use_Item(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost); + sdata.Add_AwakenLv(m_Stat); + Set_UI(); + }); } } }