Save_PC_Awaken

This commit is contained in:
Ino 2025-07-02 14:26:36 +09:00
parent 540ed7eb55
commit c62e88327d
4 changed files with 104 additions and 4 deletions

View File

@ -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)

View File

@ -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:

View File

@ -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

View File

@ -98,11 +98,13 @@ public class PCAwakenCard : CardBase
var sdata = ServerInfo.Ins.m_ServerData;
var moneyid = Get_AwakenMoneyID();
if (sdata.Check_ItemAmount(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost))
{
ServerInfo.Ins.Save_PC_Awaken(m_Stat, () =>
{
sdata.Use_Item(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost);
sdata.Add_AwakenLv(m_Stat);
Set_UI();
sdata.Add_MissionCount(ePurpose.HERO_AWAKEN_ACC, Get_AwakenMissionID());
});
}
}
}