Save_Enchant_LvUp

This commit is contained in:
Ino 2025-07-05 09:11:23 +09:00
parent 8d1ed7f796
commit e9ec3636c1
3 changed files with 98 additions and 27 deletions

View File

@ -244,8 +244,8 @@ function Add_Item(table, itemtable, urod, itemid, amount, isCheat)
{ {
default: default:
if (!urod.Item[itemid]) urod.Item[itemid] = [0, 0, 0]; if (!urod.Item[itemid]) urod.Item[itemid] = [0, 0, 0];
urod.Item[itemid][0] += amount; urod.Item[itemid][0] = Add_Amount(urod.Item[itemid][0], amount);
if (!isCheat) urod.Item[itemid][1] += amount; // 총 획득량 if (!isCheat) urod.Item[itemid][1] = Add_Amount(urod.Item[itemid][1], amount); // 총 획득량
break; break;
case "Weapon": case "Weapon":
@ -255,13 +255,13 @@ function Add_Item(table, itemtable, urod, itemid, amount, isCheat)
case "Necklace": case "Necklace":
case "Ring": case "Ring":
if (!urod.Equipment[itemid]) urod.Equipment[itemid] = [0, 0, 0]; if (!urod.Equipment[itemid]) urod.Equipment[itemid] = [0, 0, 0];
urod.Equipment[itemid][0] += amount; urod.Equipment[itemid][0] = Add_Amount(urod.Equipment[itemid][0], amount);
Add_Collection(urod, itemid, amount); Add_Collection(urod, itemid, amount);
break; break;
case "Skill": case "Skill":
if (!urod.Skill[itemid]) urod.Skill[itemid] = [amount - 1,1,0]; // 레벨 증가 if (!urod.Skill[itemid]) urod.Skill[itemid] = [amount - 1,1,0]; // 레벨 증가
else urod.Skill[itemid][0] += amount; else urod.Skill[itemid][0] = Add_Amount(urod.Skill[itemid][0], amount);
break; break;
case "PC": case "PC":
@ -270,19 +270,19 @@ function Add_Item(table, itemtable, urod, itemid, amount, isCheat)
break; break;
case "Pet": case "Pet":
if (!urod.Pet[itemid]) urod.Pet[itemid] = [0, 1]; // [레벨, 획득 수] if (!urod.Pet[itemid]) urod.Pet[itemid] = [0, 1];
urod.Pet[itemid][0] += amount; urod.Pet[itemid][0] = Add_Amount(urod.Pet[itemid][0], amount);
break; break;
case "Enchant": case "Enchant":
if (!urod.Enchant[itemid]) urod.Enchant[itemid] = [0, 0, 0, 0]; if (!urod.Enchant[itemid]) urod.Enchant[itemid] = [0, 0, 0, 0];
urod.Enchant[itemid][0] += amount; urod.Enchant[itemid][0] = Add_Amount(urod.Enchant[itemid][0], amount);
urod.Enchant[itemid][2] += amount; urod.Enchant[itemid][2] = Add_Amount(urod.Enchant[itemid][2], amount);
break; break;
case "Relic": case "Relic":
if (!urod.Relic[itemid]) urod.Relic[itemid] = [0, 0, 0]; if (!urod.Relic[itemid]) urod.Relic[itemid] = [0, 0, 0];
urod.Relic[itemid][0] += amount; urod.Relic[itemid][0] = Add_Amount(urod.Relic[itemid][0], amount);
break; break;
} }
} }
@ -296,7 +296,7 @@ function Use_Item(table, urod, itemid, amount)
if (urod.Item[itemid][0] >= amount) if (urod.Item[itemid][0] >= amount)
{ {
urod.Item[itemid][0] -= amount; urod.Item[itemid][0] -= amount;
urod.Item[itemid][2] += amount; // 총 사용량 urod.Item[itemid][2] = Add_Amount(urod.Item[itemid][2], amount); // 총 사용량
return true; return true;
} }
} }
@ -331,7 +331,7 @@ function Use_Item(table, urod, itemid, amount)
if (urod.Enchant[itemid][0] >= amount) if (urod.Enchant[itemid][0] >= amount)
{ {
urod.Enchant[itemid][0] -= amount; urod.Enchant[itemid][0] -= amount;
urod.Enchant[itemid][3] += amount; urod.Enchant[itemid][3] = Add_Amount(urod.Enchant[itemid][3], amount);
return true; return true;
} }
} }
@ -405,24 +405,24 @@ function Add_MissionCount(table, urod, purpose, conditionvalue, count, setValue)
if (!urod.Mission[key1][key2]) urod.Mission[key1][key2] = [0, 0]; if (!urod.Mission[key1][key2]) urod.Mission[key1][key2] = [0, 0];
if (setValue) urod.Mission[key1][key2][1] = count; if (setValue) urod.Mission[key1][key2][1] = count;
else urod.Mission[key1][key2][1] += count; else urod.Mission[key1][key2][1] = Add_Amount(urod.Mission[key1][key2][1], count);
} }
} }
// 가이드 퀘스트 체크 // 가이드 퀘스트 체크
var guideData = table.find(f=>f.n_MissionGroupId == 0 && f.n_MissionIndex == urod.Common[10]); var guideData = table.find(f=>f.n_MissionGroupId == 0 && f.n_MissionIndex == urod.Common[10]);
if (guideData && guideData.e_MissionConditionType == purpose) if (guideData && guideData.e_MissionConditionType == purpose)
urod.Common[11] += count; urod.Common[11] = Add_Amount(urod.Common[11], count);
} }
function Add_Collection(urod, id, count) function Add_Collection(urod, id, count)
{ {
if (!urod.Collection[id]) urod.Collection[id] = 0; if (!urod.Collection[id]) urod.Collection[id] = 0;
urod.Collection[id] += count; urod.Collection[id] = Add_Amount(urod.Collection[id], count);
} }
function Add_MobCollection(urod, id, count) function Add_MobCollection(urod, id, count)
{ {
if (!urod.MobKill[id]) urod.MobKill[id] = 0; if (!urod.MobKill[id]) urod.MobKill[id] = 0;
urod.MobKill[id] += count; urod.MobKill[id] = Add_Amount(urod.MobKill[id], count);
} }
function Get_Exp(lv) { function Get_Exp(lv) {
@ -529,9 +529,9 @@ handlers.Save_StageResult = function(args)
var itemtable = Get_ItemTable(); var itemtable = Get_ItemTable();
// 경험치 처리 // 경험치 처리
urod.PC.Exp += args.Exp; urod.PC.Exp = Add_Amount(urod.PC.Exp, args.Exp);
while (urod.PC.Exp >= Get_Exp(urod.PC.Lv + 1)) { while (urod.PC.Exp >= Get_Exp(urod.PC.Lv + 1)) {
urod.PC.Lv++; ++urod.PC.Lv;
} }
// 아이템 처리 (args.Item은 JS object 형태로 전달됨) // 아이템 처리 (args.Item은 JS object 형태로 전달됨)
@ -548,7 +548,7 @@ handlers.Save_StageResult = function(args)
for (var key in args.Mob) { for (var key in args.Mob) {
var Id = key; var Id = key;
var Count = args.Mob[key]; var Count = args.Mob[key];
mobcount += Count; mobcount = Add_Amount(mobcount, Count);
Add_MissionCount(table, urod, "KILL_MONSTER", Id, Count, false); Add_MissionCount(table, urod, "KILL_MONSTER", Id, Count, false);
Add_MobCollection(urod, Id, Count); Add_MobCollection(urod, Id, Count);
} }
@ -556,7 +556,7 @@ handlers.Save_StageResult = function(args)
for (var key in args.Elite) { for (var key in args.Elite) {
var Id = key; var Id = key;
var Count = args.Elite[key]; var Count = args.Elite[key];
elitemobcount += Count; elitemobcount = Add_Amount(elitemobcount, Count);
Add_MissionCount(table, urod, "KILL_MONSTER", Id, Count, false); Add_MissionCount(table, urod, "KILL_MONSTER", Id, Count, false);
Add_MobCollection(urod, Id, Count); Add_MobCollection(urod, Id, Count);
} }
@ -564,13 +564,13 @@ handlers.Save_StageResult = function(args)
for (var key in args.Boss) { for (var key in args.Boss) {
var Id = key; var Id = key;
var Count = args.Boss[key]; var Count = args.Boss[key];
bossmobcount += Count; bossmobcount = Add_Amount(bossmobcount + Count);
Add_MissionCount(table, urod, "KILL_MONSTER", Id, Count, false); Add_MissionCount(table, urod, "KILL_MONSTER", Id, Count, false);
Add_MobCollection(urod, Id, Count); Add_MobCollection(urod, Id, Count);
} }
Add_MissionCount(table, urod, "KILL_MONSTER_ALL", 0, mobcount + elitemobcount + bossmobcount, false); Add_MissionCount(table, urod, "KILL_MONSTER_ALL", 0, Add_Amount(mobcount + elitemobcount + bossmobcount), false);
Add_MissionCount(table, urod, "KILL_MONSTER_ACC", 0, mobcount + elitemobcount + bossmobcount, false); Add_MissionCount(table, urod, "KILL_MONSTER_ACC", 0, Add_Amount(mobcount + elitemobcount + bossmobcount), false);
Add_MissionCount(table, urod, "KILL_MONSTER_GRADE", 1, mobcount, false); Add_MissionCount(table, urod, "KILL_MONSTER_GRADE", 1, mobcount, false);
Add_MissionCount(table, urod, "KILL_MONSTER_GRADE", 2, elitemobcount, false); Add_MissionCount(table, urod, "KILL_MONSTER_GRADE", 2, elitemobcount, false);
Add_MissionCount(table, urod, "KILL_MONSTER_GRADE", 3, bossmobcount, false); Add_MissionCount(table, urod, "KILL_MONSTER_GRADE", 3, bossmobcount, false);
@ -606,7 +606,7 @@ handlers.Save_PC_Stat = function(args)
if (curUsePoint <= remainPoint) { if (curUsePoint <= remainPoint) {
for (var i = 0; i < 4; i++) { for (var i = 0; i < 4; i++) {
urod.PC.Stat[i] += args.UsePoint[i]; urod.PC.Stat[i] = Add_Amount(urod.PC.Stat[i], args.UsePoint[i]);
} }
Add_MissionCount(Get_MissionTable(), urod, "HERO_STAT_UPGRADE_ACC", 0, curUsePoint, false); Add_MissionCount(Get_MissionTable(), urod, "HERO_STAT_UPGRADE_ACC", 0, curUsePoint, false);
Set_JsonUserData(urod); Set_JsonUserData(urod);
@ -1271,7 +1271,7 @@ handlers.Save_EquipItem_SlotLvUp = function(args)
log.info("슬롯 강화 비용 " + price); log.info("슬롯 강화 비용 " + price);
if (Use_Item(table, urod, esu_data.n_ConsumeGoodsID, price)) if (Use_Item(table, urod, esu_data.n_ConsumeGoodsID, price))
{ {
m_SD_Slot.Use += price; m_SD_Slot.Use = Add_Amount(m_SD_Slot.Use, price);
++m_SD_Slot.Lv; ++m_SD_Slot.Lv;
Add_MissionCount(table, urod, "EQUIP_SLOT_UPGRADE_ALL", 0, 1); Add_MissionCount(table, urod, "EQUIP_SLOT_UPGRADE_ALL", 0, 1);
@ -1353,6 +1353,31 @@ handlers.Save_EquipItem_Enchant = function(args)
} }
return Get_Return(1); return Get_Return(1);
} }
handlers.Save_Enchant_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);
var s_enchant = urod.Enchant[args.EnchantID];
var table = Get_MissionTable();
var er_table = Get_EnchantRateTable();
var er_data = er_table.find(f=>f.n_EnchantLv == s_enchant[1]);
if (er_data.n_NextLvRequireCount <= 0) return Get_Return(2);
if (Use_Item(table, urod, args.EnchantID, er_data.n_NextLvRequireCount))
{
++s_enchant[1];
Set_JsonUserData(urod);
return Get_Return(0);
}
return Get_Return(1);
}
/////////////////////////////////// 서버 처리 /////////////////////////////////// 서버 처리
handlers.Write_UnityInApp = function(args) handlers.Write_UnityInApp = function(args)
@ -10121,6 +10146,10 @@ function IsRateTrue1000000(rate)
{ {
return Math.floor(Math.random() * 1000000) < rate; return Math.floor(Math.random() * 1000000) < rate;
} }
function Add_Amount(...args)
{
return args.reduce((sum, val) => sum + Number(val), 0);
}

View File

@ -1565,6 +1565,43 @@ public class ServerInfo : MyCoroutine
Set_Coroutine(() => { Save_EquipItem_Enchant(itemid, eid, slot, _act); }, 2f); Set_Coroutine(() => { Save_EquipItem_Enchant(itemid, eid, slot, _act); }, 2f);
}); });
} }
public void Save_Enchant_LvUp(int eid, Action _act)
{
NetWait.Ins.Set(true);
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
{
FunctionName = MethodBase.GetCurrentMethod().Name,
GeneratePlayStreamEvent = true,
FunctionParameter = new
{
Token = m_LoginInfo.EntityToken.EntityToken,
EnchantID = eid,
}
},
result =>
{
if (result.Error == null)
{
NetWait.Ins.Set(false);
var str_result = result.FunctionResult.ToString();
var error = MyErrorCheck(str_result);
// (0 성공, 1 실패 (잠긴 인챈트 슬롯), 3 실패 (없는 아이템), 4 실패 (업그레이드 정보 없는 파츠))
switch (error)
{
case 0: _act?.Invoke(); break;
case 1: ToastUI.Ins.Set(388); break;
case 2: ToastUI.Ins.Set(999900003); break;
}
}
else
Set_Coroutine(() => { Save_Enchant_LvUp(eid, _act); }, 2f);
},
fail =>
{
Set_Coroutine(() => { Save_Enchant_LvUp(eid, _act); }, 2f);
});
}
#endregion #endregion
#region #region

View File

@ -46,12 +46,17 @@ public class EquipmentEnchantCard : CardBase
} }
public void OnClick_Reinforce() public void OnClick_Reinforce()
{ {
if (m_EnchantRateTableData.n_NextLvRequireCount <= 0) { ToastUI.Ins.Set(999900003); return; }
var sdata = ServerInfo.Ins.m_ServerData; var sdata = ServerInfo.Ins.m_ServerData;
if (sdata.Check_ItemAmount(m_Data.n_EnchantID, m_EnchantRateTableData.n_NextLvRequireCount)) if (sdata.Check_ItemAmount(m_Data.n_EnchantID, m_EnchantRateTableData.n_NextLvRequireCount))
{
ServerInfo.Ins.Save_Enchant_LvUp(m_Data.n_EnchantID, () =>
{ {
sdata.Use_Item(m_Data.n_EnchantID, m_EnchantRateTableData.n_NextLvRequireCount); sdata.Use_Item(m_Data.n_EnchantID, m_EnchantRateTableData.n_NextLvRequireCount);
sdata.Add_EnchantLv(m_Data.n_EnchantID); sdata.Add_EnchantLv(m_Data.n_EnchantID);
Set_UI(); Set_UI();
});
} }
} }
public void OnClick_EnchantEquipItem() public void OnClick_EnchantEquipItem()