각성 서버 다시 작업 중...

This commit is contained in:
Ino 2025-07-29 16:28:55 +09:00
parent d47c706a0b
commit 21f96889cd
9 changed files with 208 additions and 47 deletions

View File

@ -784,6 +784,91 @@ handlers.Save_StageResult = function(args)
return Get_Return(0, { gold : Get_ItemAmount(urod, 2) , mainstat : rtnmainStat }); return Get_Return(0, { gold : Get_ItemAmount(urod, 2) , mainstat : rtnmainStat });
} }
handlers.Save_PC_MenuBack = 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 table = Get_MissionTable();
var awakenData = args.AwakenData;
var awakenupgradeid = Get_GlobalValue_nValue("AWAKEN_GOODS_UPGRADE");
var awakenUpgradeTable = Get_AwakenUpgradeTable();
var useawakenMatIds = {};
for (var i = 0; i < awakenData.upgrade.length; ++i)
{
var statKey = awakenData.upgrade[i].Key;
var upgradeValue = parseInt(awakenData.upgrade[i].Value || 0);
var awakenValue = parseInt(awakenData.awaken[i].Value || 0);
if (upgradeValue > 0)
for (var j = 0; j < upgradeValue; ++j)
{
var lv = urod.Awaken[statKey].Lv;
var audata = awakenUpgradeTable.find(f=>f.n_AwakenStep == lv);
if (urod.Awaken[statKey].Exp >= audata.n_MaxUpgradeLevel && awakenValue > 0)
{ // 각성 각성
var awakenmat = Get_GlobalValue_nValue(Get_PCAwakenMatKey(statKey));
if (!useawakenMatIds[awakenmat]) useawakenMatIds[awakenmat] = true;
if (Use_Item(table, urod, awakenmat, audata.n_AwakenGoodsCost))
{
--awakenValue;
urod.Awaken[statKey].Exp = 0;
++urod.Awaken[statKey].Lv;
continue;
}
else break;
}
var price = Get_K_Value(lv, audata.f_BalanceConstant, audata.n_DefaultUpgradeCostValue, audata.f_CountPerUpgradeCostValue);
if (urod.Awaken[statKey].Exp < audata.n_MaxUpgradeLevel && Use_Item(table, urod, awakenupgradeid, price))
++urod.Awaken[statKey].Exp;
}
else if (awakenValue > 0)
{
var lv = urod.Awaken[statKey].Lv;
var audata = awakenUpgradeTable.find(f=>f.n_AwakenStep == lv);
if (urod.Awaken[statKey].Exp >= audata.n_MaxUpgradeLevel)
{ // 각성 각성
var awakenmat = Get_GlobalValue_nValue(Get_PCAwakenMatKey(statKey));
if (!useawakenMatIds[awakenmat]) useawakenMatIds[awakenmat] = true;
if (Use_Item(table, urod, awakenmat, audata.n_AwakenGoodsCost))
{
--awakenValue;
urod.Awaken[statKey].Exp = 0;
++urod.Awaken[statKey].Lv;
}
}
}
}
var rtn_awakenMatIds = [];
rtn_awakenMatIds.push({ itemid : parseInt(awakenupgradeid), amount : Get_ItemAmount(urod, awakenupgradeid) });
for (var id in useawakenMatIds)
rtn_awakenMatIds.push({ itemid : parseInt(id), amount : Get_ItemAmount(urod, id) });
Set_JsonUserData(urod);
return Get_Return(0, {
awakekMats : rtn_awakenMatIds,
awaken : urod.Awaken
});
}
function Get_PCAwakenMatKey(stat)
{
switch (stat)
{
case "STR": return "AWAKEN_GOODS_STR";
case "DEX": return "AWAKEN_GOODS_DEX";
case "INT": return "AWAKEN_GOODS_INT";
case "LUK": return "AWAKEN_GOODS_LUK";
}
return "";
}
handlers.Save_PC_Stat = function(args) handlers.Save_PC_Stat = function(args)
{ {
var readonlydata = Get_UserReadOnlyData(); var readonlydata = Get_UserReadOnlyData();
@ -11559,32 +11644,7 @@ function Get_GlobalValue_nValue(key)
} }
function Get_AwakenUpgradeTable() function Get_AwakenUpgradeTable()
{ {
return [ return [{"n_AwakenStep": "1", "n_MaxUpgradeLevel": "10", "n_AwakenGoodsCost": "1", "n_DefaultUpgradeCostValue": "1", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}, {"n_AwakenStep": "2", "n_MaxUpgradeLevel": "15", "n_AwakenGoodsCost": "2", "n_DefaultUpgradeCostValue": "2", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}, {"n_AwakenStep": "3", "n_MaxUpgradeLevel": "20", "n_AwakenGoodsCost": "3", "n_DefaultUpgradeCostValue": "3", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}, {"n_AwakenStep": "4", "n_MaxUpgradeLevel": "25", "n_AwakenGoodsCost": "4", "n_DefaultUpgradeCostValue": "4", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}, {"n_AwakenStep": "5", "n_MaxUpgradeLevel": "30", "n_AwakenGoodsCost": "5", "n_DefaultUpgradeCostValue": "5", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}];
{
"n_AwakenStep": "1",
"n_MaxUpgradeLevel": "10",
"n_AwakenGoodsCost": "1",
"n_DefaultUpgradeCostValue": "10000",
"f_CountPerUpgradeCostValue": "1.5",
"f_BalanceConstant": "0.032"
},
{
"n_AwakenStep": "2",
"n_MaxUpgradeLevel": "25",
"n_AwakenGoodsCost": "2",
"n_DefaultUpgradeCostValue": "20000",
"f_CountPerUpgradeCostValue": "1.5",
"f_BalanceConstant": "0.032"
},
{
"n_AwakenStep": "3",
"n_MaxUpgradeLevel": "30",
"n_AwakenGoodsCost": "3",
"n_DefaultUpgradeCostValue": "30000",
"f_CountPerUpgradeCostValue": "1.5",
"f_BalanceConstant": "0.032"
}
];
} }
function Get_BreakingLimitTable() function Get_BreakingLimitTable()
{ {
@ -24775,14 +24835,15 @@ function Get_K_Value(lv, balance, defaultval, perlv, abandon = true) {
let val; let val;
if (Math.abs(balance) < 0.000001) { if (Math.abs(balance) < 0.000001) {
val = defaultval + lv * perlv; val = lv * perlv;
} else { } else {
const base = lv * perlv; const base = lv * perlv;
const exponent = balance * Math.sqrt(lv); const exponent = balance * Math.sqrt(lv);
val = defaultval + Math.pow(base, exponent); val = Math.pow(base, exponent);
} }
val *= 0.0001; val *= 0.0001;
val = Add_Amount(val, defaultval);
if (abandon) { if (abandon) {
val = Math.floor(val); val = Math.floor(val);

View File

@ -1 +1 @@
[{"n_AwakenStep": "1", "n_MaxUpgradeLevel": "10", "n_AwakenGoodsCost": "1", "n_DefaultUpgradeCostValue": "10000", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}, {"n_AwakenStep": "2", "n_MaxUpgradeLevel": "25", "n_AwakenGoodsCost": "2", "n_DefaultUpgradeCostValue": "20000", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}, {"n_AwakenStep": "3", "n_MaxUpgradeLevel": "30", "n_AwakenGoodsCost": "3", "n_DefaultUpgradeCostValue": "30000", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}] [{"n_AwakenStep": "1", "n_MaxUpgradeLevel": "10", "n_AwakenGoodsCost": "1", "n_DefaultUpgradeCostValue": "1", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}, {"n_AwakenStep": "2", "n_MaxUpgradeLevel": "15", "n_AwakenGoodsCost": "2", "n_DefaultUpgradeCostValue": "2", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}, {"n_AwakenStep": "3", "n_MaxUpgradeLevel": "20", "n_AwakenGoodsCost": "3", "n_DefaultUpgradeCostValue": "3", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}, {"n_AwakenStep": "4", "n_MaxUpgradeLevel": "25", "n_AwakenGoodsCost": "4", "n_DefaultUpgradeCostValue": "4", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}, {"n_AwakenStep": "5", "n_MaxUpgradeLevel": "30", "n_AwakenGoodsCost": "5", "n_DefaultUpgradeCostValue": "5", "f_CountPerUpgradeCostValue": "1.5", "f_BalanceConstant": "0.032"}]

Binary file not shown.

View File

@ -3106,6 +3106,11 @@ public class SC_Items
public int itemid, amount; public int itemid, amount;
} }
public class SC_PCMenuBackResult
{
public List<SC_Items> awakekMats;
public Dictionary<string, SD_PCAwakenData_Read> awaken;
}
public class SC_PCStatInit public class SC_PCStatInit
{ {
public int gem; public int gem;
@ -3160,4 +3165,26 @@ public class SC_FarmSlotHarvestResult
public int gem; public int gem;
public List<ItemSimpleData> Items; public List<ItemSimpleData> Items;
} }
#endregion
#region ->
public class CS_AwakenData
{
public Dictionary<eStat, int> upgrade = new Dictionary<eStat, int>
{ { eStat.STR, 0 }, { eStat.DEX, 0 }, { eStat.INT, 0 }, { eStat.LUK, 0 }};
public Dictionary<eStat, int> awaken = new Dictionary<eStat, int>
{ { eStat.STR, 0 }, { eStat.DEX, 0 }, { eStat.INT, 0 }, { eStat.LUK, 0 }};
public void Init()
{
upgrade[eStat.STR] = 0;
awaken[eStat.STR] = 0;
upgrade[eStat.DEX] = 0;
awaken[eStat.DEX] = 0;
upgrade[eStat.INT] = 0;
awaken[eStat.INT] = 0;
upgrade[eStat.LUK] = 0;
awaken[eStat.LUK] = 0;
}
}
#endregion #endregion

View File

@ -859,6 +859,43 @@ public class ServerInfo : MyCoroutine
Set_Coroutine(() => { Save_StageResult(_act); }, 2f); Set_Coroutine(() => { Save_StageResult(_act); }, 2f);
}); });
} }
public void Save_PC_MenuBack(CS_AwakenData awakenData, Action<SC_PCMenuBackResult> _act)
{
NetWait.Ins.Set(true);
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
{
FunctionName = MethodBase.GetCurrentMethod().Name,
GeneratePlayStreamEvent = true,
FunctionParameter = new
{
Token = m_LoginInfo.EntityToken.EntityToken,
AwakenData = awakenData
}
},
result =>
{
if (result.Error == null)
{
NetWait.Ins.Set(false);
var str_result = result.FunctionResult.ToString();
var error = MyErrorCheck(str_result);
// (0 성공, 1 실패 (열린 슬롯 없음), 2 실패 (재화 부족), 3 실패 (각성 재료 id 없음))
switch (error)
{
case 0: _act?.Invoke(JsonConvert.DeserializeObject<SC_PCMenuBackResult>(str_result)); break;
case 1: ToastUI.Ins.Set(999900011); break;
case 2: ToastUI.Ins.Set(388); break;
case 3: ToastUI.Ins.Set(999900005); break;
}
}
else
Set_Coroutine(() => { Save_PC_MenuBack(awakenData, _act); }, 2f);
},
fail =>
{
Set_Coroutine(() => { Save_PC_MenuBack(awakenData, _act); }, 2f);
});
}
public void Save_PC_Stat(List<int> usepoint, Action _act) public void Save_PC_Stat(List<int> usepoint, Action _act)
{ {

View File

@ -86,12 +86,19 @@ public class PCAwakenCard : CardBase
var lv = sdata.Get_AwakenLv(m_Stat); var lv = sdata.Get_AwakenLv(m_Stat);
if (sdata.Check_ItemAmount(moneyid, m_Price)) if (sdata.Check_ItemAmount(moneyid, m_Price))
{ {
ServerInfo.Ins.Save_PC_AwakenLvUp(m_Stat, () => var csdata = PCAwakenUI.Ins.Get_CS_AwakenData();
{ ++csdata.upgrade[m_Stat];
sdata.Use_Item(moneyid, m_Price);
sdata.Add_AwakenExp(m_Stat); sdata.Use_Item(moneyid, m_Price);
Set_UI(); sdata.Add_AwakenExp(m_Stat);
}); Set_UI();
//ServerInfo.Ins.Save_PC_AwakenLvUp(m_Stat, () =>
//{
// sdata.Use_Item(moneyid, m_Price);
// sdata.Add_AwakenExp(m_Stat);
// Set_UI();
//});
} }
} }
} }
@ -104,12 +111,19 @@ public class PCAwakenCard : CardBase
var moneyid = Get_AwakenMoneyID(); var moneyid = Get_AwakenMoneyID();
if (sdata.Check_ItemAmount(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost)) if (sdata.Check_ItemAmount(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost))
{ {
ServerInfo.Ins.Save_PC_Awaken(m_Stat, () => var csdata = PCAwakenUI.Ins.Get_CS_AwakenData();
{ ++csdata.awaken[m_Stat];
sdata.Use_Item(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost);
sdata.Add_AwakenLv(m_Stat); sdata.Use_Item(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost);
Set_UI(); sdata.Add_AwakenLv(m_Stat);
}); Set_UI();
//ServerInfo.Ins.Save_PC_Awaken(m_Stat, () =>
//{
// sdata.Use_Item(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost);
// sdata.Add_AwakenLv(m_Stat);
// Set_UI();
//});
} }
} }
} }

View File

@ -1,15 +1,28 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PCAwakenUI : PCUIMenu public class PCAwakenUI : PCUIMenu
{ {
public static bool isIns;
public static PCAwakenUI Ins;
private void Awake() { isIns = true; Ins = this; }
public PCAwakenUI_Set m_PCAwakenUI_Set; public PCAwakenUI_Set m_PCAwakenUI_Set;
CS_AwakenData m_CS_AwakenData = new CS_AwakenData();
public override void Set() public override void Set()
{ {
base.Set(); base.Set();
NewGameUI.Ins.m_PCUI.Set_Money(table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_UPGRADE"), 0); NewGameUI.Ins.m_PCUI.Set_Money(table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_UPGRADE"), 0);
m_PCAwakenUI_Set.Set(); m_PCAwakenUI_Set.Set();
m_CS_AwakenData.Init();
}
public CS_AwakenData Get_CS_AwakenData() { return m_CS_AwakenData; }
public bool IsSendAwakenData()
{
foreach (var item in m_CS_AwakenData.upgrade)
if (item.Value > 0) return true;
foreach (var item in m_CS_AwakenData.awaken)
if (item.Value > 0) return true;
return false;
} }
} }

View File

@ -1,6 +1,4 @@
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine;
public class PCAwakenUI_Set : uScrollViewMgr public class PCAwakenUI_Set : uScrollViewMgr
{ {

View File

@ -45,5 +45,16 @@ public class PCUI : BotMenuBase
PCInfo.Ins.Make_Actors(false, ServerInfo.Ins.m_ServerData); PCInfo.Ins.Make_Actors(false, ServerInfo.Ins.m_ServerData);
}, 0.02f); }, 0.02f);
} }
//if (PCAwakenUI.isIns && PCAwakenUI.Ins.IsSendAwakenData())
if (PCAwakenUI.isIns)
{
ServerInfo.Ins.Save_PC_MenuBack(PCAwakenUI.Ins.Get_CS_AwakenData(), result =>
{
for (int i = 0; i < result.awakekMats.Count; i++)
sdata.Set_Item(result.awakekMats[i].itemid, result.awakekMats[i].amount);
foreach (var item in result.awaken) sdata.Awaken[item.Key] = item.Value.Get();
});
}
} }
} }