Save_Equipment_Decomposition

This commit is contained in:
Ino 2025-07-04 09:30:35 +09:00
parent 13a02c183e
commit 8f5e16cfe5
5 changed files with 119 additions and 8 deletions

View File

@ -1179,6 +1179,76 @@ handlers.Save_Equipment_Smelting = function(args)
}
return Get_Return(1);
}
handlers.Save_Equipment_Smelting = 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.Equipment[args.ItemID]) return Get_Return(3);
var lv = urod.Equipment[args.ItemID][1];
// 영웅 초월 레벨에 따른 레벨 제한 확인
var llv = urod.PC.LLv > 9 ? 9 : urod.PC.LLv;
var limitData = Get_BreakingLimitTable().find(f=>f.n_LimitLv == llv);
if (lv >= limitData.n_Equip_Upgrade_Limit) return Get_Return(2);
// 다음 강화 가능한 지 확인
var smeltingTable = Get_EquipSmeltingTable();
var nextSmeltingData = smeltingTable.find(f=>f.n_SmeltingStep == lv + 1);
if (!nextSmeltingData) return Get_Return(2);
// 재료 확인
var table = Get_MissionTable();
var smeltingData = smeltingTable.find(f=>f.n_SmeltingStep == lv);
if (Use_Item(table, urod, args.ItemID, smeltingData.n_UpgradePrice))
{
// 확률 적용
if (IsRateTrue1000000(smeltingData.n_NextStepRate))
{
++urod.Equipment[args.ItemID][1]; // 제련 레벨
Add_MissionCount(table, urod, "EQUIP_ITEM_UPGRADE_ACC", 0, 1);
Add_MissionCount(table, urod, "EQUIP_ITEM_UPGRADE_ALL", 0, 1);
Add_MissionCount(table, urod, "EQUIP_ITEM_UPGRADE_LIMIT", 0, 1);
Set_JsonUserData(urod);
return Get_Return(0);
}
++urod.Equipment[args.ItemID][2]; // 제련 시도 횟수
return Get_Return(4);
}
return Get_Return(1);
}
handlers.Save_Equipment_Decomposition = function(args)
{
var readonlydata = Get_UserReadOnlyData();
var error = Get_Error(readonlydata, args.Token);
if (error < 0) return Get_Return(error);
if (args.Count <= 0) return Get_Return(1);
var urod = Get_JsonUserData(readonlydata);
if (!urod.Equipment[args.ItemID]) return Get_Return(3);
var obtainAmount = Get_ItemAmount(urod, args.ItemID);
if (obtainAmount < args.Count) return Get_Return(2);
// 분해
var table = Get_MissionTable();
Use_Item(table, urod, args.ItemID, args.Count);
var equipmenttable = Get_EquipmentTable();
var equipdata = equipmenttable.find(f=>f.n_EquipID == args.ItemID);
Add_Item(table, Get_ItemTable(), urod, equipdata.n_DecompositionReward, equipdata.n_DecompositionCount * args.Count);
Add_MissionCount(table, urod, "EQUIP_ITEM_DISTROY_ALL", 0, args.Count);
Add_MissionCount(table, urod, "EQUIP_ITEM_DISTROY_ACC", 0, args.Count);
Set_JsonUserData(urod);
return Get_Return(0);
}
/////////////////////////////////// 서버 처리
handlers.Write_UnityInApp = function(args)

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -1407,6 +1407,44 @@ public class ServerInfo : MyCoroutine
Set_Coroutine(() => { Save_Equipment_Smelting(itemid, _act); }, 2f);
});
}
public void Save_Equipment_Decomposition(int itemid, int count, Action _act)
{
NetWait.Ins.Set(true);
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
{
FunctionName = MethodBase.GetCurrentMethod().Name,
GeneratePlayStreamEvent = true,
FunctionParameter = new
{
Token = m_LoginInfo.EntityToken.EntityToken,
ItemID = itemid,
Count = count,
}
},
result =>
{
if (result.Error == null)
{
NetWait.Ins.Set(false);
var str_result = result.FunctionResult.ToString();
var error = MyErrorCheck(str_result);
// (0 성공, 1 실패 (분해 갯수 0), 2 실패 (가진 갯수와 분해 갯수 에러), 3 실패 (없는 아이템))
switch (error)
{
case 0: _act?.Invoke(); break;
case 1: ToastUI.Ins.Set(999900018); break;
case 2: ToastUI.Ins.Set(999900019); break;
case 3: ToastUI.Ins.Set(999900014); break;
}
}
else
Set_Coroutine(() => { Save_Equipment_Equip(itemid, _act); }, 2f);
},
fail =>
{
Set_Coroutine(() => { Save_Equipment_Equip(itemid, _act); }, 2f);
});
}
#endregion
#region

View File

@ -139,15 +139,18 @@ public class EquipmentPopup_Obtain : EquipmentPopupBase
var sdata = ServerInfo.Ins.m_ServerData;
if (m_DecompAmount > 0 && sdata.Check_ItemAmount(m_Data.n_EquipID, m_DecompAmount))
{
sdata.Use_Item(m_Data.n_EquipID, m_DecompAmount);
sdata.Add_Item(m_Data.n_DecompositionReward, m_Data.n_DecompositionCount * m_DecompAmount);
ToastUI.Ins.Set(174, $"분해해서 {m_Data.n_DecompositionReward} 아이템 {m_Data.n_DecompositionCount * m_DecompAmount} 개 획득");
ServerInfo.Ins.Save_Equipment_Decomposition(m_Data.n_EquipID, m_DecompAmount, () =>
{
sdata.Use_Item(m_Data.n_EquipID, m_DecompAmount);
sdata.Add_Item(m_Data.n_DecompositionReward, m_Data.n_DecompositionCount * m_DecompAmount);
ToastUI.Ins.Set(174, $"분해해서 {m_Data.n_DecompositionReward} 아이템 {m_Data.n_DecompositionCount * m_DecompAmount} 개 획득");
sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_DISTROY_ALL, 0, m_DecompAmount);
sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_DISTROY_ACC, 0, m_DecompAmount);
sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_DISTROY_ALL, 0, m_DecompAmount);
sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_DISTROY_ACC, 0, m_DecompAmount);
Set_Decompostion(0);
Set_SmeltingUI();
Set_Decompostion(0);
Set_SmeltingUI();
});
}
}
public void OnClick_Slider(int add)