Save_Relic_LvUp

This commit is contained in:
Ino 2025-07-09 14:24:49 +09:00
parent baca27129e
commit 4f69c3ef37
6 changed files with 177 additions and 30 deletions

View File

@ -1623,6 +1623,18 @@ handlers.Save_Essence_Mileage = function(args)
return Get_Return(1);
};
function Get_RelicMatAmount()
{
return {
0: { 6: 50, 7: 60, 8: 80, 9: 100 },
1: { 6: 150, 7: 180, 8: 240, 9: 300 },
2: { 6: 300, 7: 360, 8: 480, 9: 600 },
3: { 6: 500, 7: 600, 8: 800, 9: 1000 },
4: { 6: 1000, 7: 1200, 8: 1600, 9: 2000 },
5: { 6: 2500, 7: 3000, 8: 4000, 9: 5000 },
6: { 6: 3000, 7: 5000, 8: 8000, 9: 13000 },
};
}
handlers.Save_Relic_StarUp = function(args)
{
var readonlydata = Get_UserReadOnlyData();
@ -1645,14 +1657,7 @@ handlers.Save_Relic_StarUp = function(args)
5: 500
};
const dic_starMat = {
0: { 6: 50, 7: 60, 8: 80, 9: 100 },
1: { 6: 150, 7: 180, 8: 240, 9: 300 },
2: { 6: 300, 7: 360, 8: 480, 9: 600 },
3: { 6: 500, 7: 600, 8: 800, 9: 1000 },
4: { 6: 1000, 7: 1200, 8: 1600, 9: 2000 },
5: { 6: 2500, 7: 3000, 8: 4000, 9: 5000 },
};
var dic_starMat = Get_RelicMatAmount();
var matID = Get_GlobalValue_nValue("n_RelicReinforceMaterialID");
var itemtable = Get_ItemTable();
@ -1672,6 +1677,50 @@ handlers.Save_Relic_StarUp = function(args)
return Get_Return(0);
}
}
handlers.Save_Relic_LvUp = 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);
if (!urod.Relic[args.RelicID]) return Get_Return(4);
var star = urod.Relic[args.RelicID][2];
if (star == 0) return Get_Return(5);
var lv = urod.Relic[args.RelicID][1];
var ru_data = Get_RelicUpgradeCostTable().find(f=>f.n_RelicLv == lv);
if (!ru_data) return Get_Return(3);
var itemtable = Get_ItemTable();
var grade = itemtable.find(f=>f.n_ItemID == args.RelicID).n_ItemGrade;
var needrelic = ru_data.n_RequirePiece;
switch(grade)
{
case 6: needrelic = Add_Amount(needrelic, ru_data.n_RequireGrade1); break;
case 7: needrelic = Add_Amount(needrelic, ru_data.n_RequireGrade2); break;
case 8: needrelic = Add_Amount(needrelic, ru_data.n_RequireGrade3); break;
case 9: needrelic = Add_Amount(needrelic, ru_data.n_RequireGrade4); break;
}
var dic_starMat = Get_RelicMatAmount();
var needmat = dic_starMat[star][grade];
var matID = Get_GlobalValue_nValue("n_RelicReinforceMaterialID");
var table = Get_MissionTable();
if (!Use_Item(table, urod, args.RelicID, needrelic)) return Get_Return(1);
if (!Use_Item(table, urod, matID, needmat)) return Get_Return(2);
{
++urod.Relic[args.RelicID][1];
Add_MissionCount(table, urod, "UPGRADE_RELIC_LIMIT", args.RelicID, 1);
Add_MissionCount(table, urod, "UPGRADE_RELIC_ALL", args.RelicID, 1);
Set_JsonUserData(urod);
return Get_Return(0);
}
}
/////////////////////////////////// 서버 처리
handlers.Write_UnityInApp = function(args)
@ -18831,6 +18880,51 @@ function Get_RelicTable()
}
]
}
function Get_RelicUpgradeCostTable()
{
return [
{
"n_RelicLv": "0",
"n_RequirePiece": "1",
"n_RequireGrade1": "1",
"n_RequireGrade2": "2",
"n_RequireGrade3": "3",
"n_RequireGrade4": "4"
},
{
"n_RelicLv": "1",
"n_RequirePiece": "3",
"n_RequireGrade1": "2",
"n_RequireGrade2": "4",
"n_RequireGrade3": "6",
"n_RequireGrade4": "8"
},
{
"n_RelicLv": "2",
"n_RequirePiece": "5",
"n_RequireGrade1": "3",
"n_RequireGrade2": "6",
"n_RequireGrade3": "9",
"n_RequireGrade4": "12"
},
{
"n_RelicLv": "3",
"n_RequirePiece": "7",
"n_RequireGrade1": "4",
"n_RequireGrade2": "8",
"n_RequireGrade3": "10",
"n_RequireGrade4": "15"
},
{
"n_RelicLv": "4",
"n_RequirePiece": "9",
"n_RequireGrade1": "5",
"n_RequireGrade2": "10",
"n_RequireGrade3": "13",
"n_RequireGrade4": "19"
}
]
}

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -1935,6 +1935,45 @@ public class ServerInfo : MyCoroutine
Set_Coroutine(() => { Save_Relic_StarUp(relicid, _act); }, 2f);
});
}
public void Save_Relic_LvUp(int relicid, Action _act)
{
NetWait.Ins.Set(true);
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
{
FunctionName = MethodBase.GetCurrentMethod().Name,
GeneratePlayStreamEvent = true,
FunctionParameter = new
{
Token = m_LoginInfo.EntityToken.EntityToken,
RelicID = relicid,
}
},
result =>
{
if (result.Error == null)
{
NetWait.Ins.Set(false);
var str_result = result.FunctionResult.ToString();
var error = MyErrorCheck(str_result);
// (0 성공, 1 실패 (유물 부족), 2 실패 (재료 부족), 3 실패 (최고 레벨), 4 실패 (없는 유물), 5 실패 (성급 0))
switch (error)
{
case 0: _act?.Invoke(); break;
case 1: ToastUI.Ins.Set(999900028); break;
case 2: ToastUI.Ins.Set(388); break;
case 3: ToastUI.Ins.Set(999900003); break;
case 4: ToastUI.Ins.Set(999900014); break;
case 5: ToastUI.Ins.Set(999900030); break;
}
}
else
Set_Coroutine(() => { Save_Relic_LvUp(relicid, _act); }, 2f);
},
fail =>
{
Set_Coroutine(() => { Save_Relic_LvUp(relicid, _act); }, 2f);
});
}
#endregion
#region

View File

@ -11,44 +11,45 @@ public class RelicUpgradeCostTableData : TableDataBase
{
get { return _RelicLv; }
set { _RelicLv = value; _RelicLv.RandomizeCryptoKey(); }
} // 유물 레벨
} // 유물 레벨
ObscuredInt _RequirePiece;
public int n_RequirePiece
{
get { return _RequirePiece; }
set { _RequirePiece = value; _RequirePiece.RandomizeCryptoKey(); }
} // 요구 조각 수
} // 요구 조각 수
ObscuredInt _RequireGrade1;
public int n_RequireGrade1
{
get { return _RequireGrade1; }
set { _RequireGrade1 = value; _RequireGrade1.RandomizeCryptoKey(); }
} // 요구 등급 1
} // 요구 등급 1
ObscuredInt _RequireGrade2;
public int n_RequireGrade2
{
get { return _RequireGrade2; }
set { _RequireGrade2 = value; _RequireGrade2.RandomizeCryptoKey(); }
} // 요구 등급 2
} // 요구 등급 2
ObscuredInt _RequireGrade3;
public int n_RequireGrade3
{
get { return _RequireGrade3; }
set { _RequireGrade3 = value; _RequireGrade3.RandomizeCryptoKey(); }
} // 요구 등급 3
} // 요구 등급 3
ObscuredInt _RequireGrade4;
public int n_RequireGrade4
{
get { return _RequireGrade4; }
set { _RequireGrade4 = value; _RequireGrade4.RandomizeCryptoKey(); }
} // 요구 등급 4
} // 요구 등급 4
public Dictionary<int, int> dic_cost = new Dictionary<int, int>();
public int Get_Price(int grade) { return n_RequirePiece + dic_cost[grade]; }
}
public class table_relicupgradecost : table_missionbase

View File

@ -28,6 +28,7 @@ public class CollectionRelicUI : PCUIMenu
{ 3, new Dictionary<int, int> { { 6, 500 }, { 7, 600 }, { 8, 800 }, { 9, 1000 } } },
{ 4, new Dictionary<int, int> { { 6, 1000 }, { 7, 1200 }, { 8, 1600 }, { 9, 2000 } } },
{ 5, new Dictionary<int, int> { { 6, 2500 }, { 7, 3000 }, { 8, 4000 }, { 9, 5000 } } },
{ 6, new Dictionary<int, int> { { 6, 3000 }, { 7, 5000 }, { 8, 8000 }, { 9, 13000 } } },
};
int Get_Star_UpgradeMatCost(int star, int grade)
{
@ -70,13 +71,22 @@ public class CollectionRelicUI : PCUIMenu
var maxlv = table_relicupgradecost.Ins.Get_MaxLv();
var lv = ServerInfo.Ins.m_ServerData.Get_RelicLv(m_SelectRelicData.n_RelicID);
var upgradeData = table_relicupgradecost.Ins.Get_Data(lv);
money_lv[0].Set(m_SelectRelicData.n_RelicID, (int)sdata.Get_ItemAmount(m_SelectRelicData.n_RelicID),
upgradeData.n_RequirePiece);
money_lv[1].Set(lvup_matID, (int)sdata.Get_ItemAmount(lvup_matID), Get_Star_UpgradeMatCost(star, grade));
gos_noti[1].SetActive(star > 0 && lv < maxlv &&
sdata.Get_ItemAmount(m_SelectRelicData.n_RelicID) >= upgradeData.n_RequirePiece &&
sdata.Get_ItemAmount(lvup_matID) >= Get_Star_UpgradeMatCost(star, grade));
if (maxlv > lv)
{
var upgradeData = table_relicupgradecost.Ins.Get_Data(lv);
money_lv[0].Set(m_SelectRelicData.n_RelicID, (int)sdata.Get_ItemAmount(m_SelectRelicData.n_RelicID),
upgradeData.Get_Price(grade));
money_lv[1].Set(lvup_matID, (int)sdata.Get_ItemAmount(lvup_matID), Get_Star_UpgradeMatCost(star, grade));
gos_noti[1].SetActive(star > 0 && lv < maxlv &&
sdata.Get_ItemAmount(m_SelectRelicData.n_RelicID) >= upgradeData.Get_Price(grade) &&
sdata.Get_ItemAmount(lvup_matID) >= Get_Star_UpgradeMatCost(star, grade));
}
else
{
money_lv[0].Set(m_SelectRelicData.n_RelicID, (int)sdata.Get_ItemAmount(m_SelectRelicData.n_RelicID), 0);
money_lv[1].Set(lvup_matID, (int)sdata.Get_ItemAmount(lvup_matID), 0);
gos_noti[1].SetActive(false);
}
}
bool CanUp()
@ -124,19 +134,22 @@ public class CollectionRelicUI : PCUIMenu
var star = sdata.Get_RelicStar(m_SelectRelicData.n_RelicID);
var lvup_matID = table_GlobalValue.Ins.Get_Int("n_RelicReinforceMaterialID");
var upgradeData = table_relicupgradecost.Ins.Get_Data(lv);
var requirepiece = upgradeData.n_RequirePiece;
var requirepiece = upgradeData.Get_Price(grade);
var requirelvupmat = Get_Star_UpgradeMatCost(star, grade);
if (sdata.Check_ItemAmount(m_SelectRelicData.n_RelicID, requirepiece) &&
sdata.Check_ItemAmount(lvup_matID, requirelvupmat))
{
sdata.Use_Item(m_SelectRelicData.n_RelicID, requirepiece);
sdata.Use_Item(lvup_matID, requirelvupmat);
sdata.Add_RelicLv(m_SelectRelicData.n_RelicID);
Set();
MyValue.Get_ActorStatInfoorNull(eRole.PC);
ServerInfo.Ins.Save_Relic_LvUp(m_SelectRelicData.n_RelicID, () =>
{
sdata.Use_Item(m_SelectRelicData.n_RelicID, requirepiece);
sdata.Use_Item(lvup_matID, requirelvupmat);
sdata.Add_RelicLv(m_SelectRelicData.n_RelicID);
Set();
MyValue.Get_ActorStatInfoorNull(eRole.PC);
sdata.Add_MissionCount(ePurpose.UPGRADE_RELIC_ALL, m_SelectRelicData.n_RelicID);
sdata.Add_MissionCount(ePurpose.UPGRADE_RELIC_LIMIT, m_SelectRelicData.n_RelicID);
sdata.Add_MissionCount(ePurpose.UPGRADE_RELIC_ALL, m_SelectRelicData.n_RelicID);
sdata.Add_MissionCount(ePurpose.UPGRADE_RELIC_LIMIT, m_SelectRelicData.n_RelicID);
});
}
}
}