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:
if (!urod.Item[itemid]) urod.Item[itemid] = [0, 0, 0];
urod.Item[itemid][0] += amount;
if (!isCheat) urod.Item[itemid][1] += amount; // 총 획득량
urod.Item[itemid][0] = Add_Amount(urod.Item[itemid][0], amount);
if (!isCheat) urod.Item[itemid][1] = Add_Amount(urod.Item[itemid][1], amount); // 총 획득량
break;
case "Weapon":
@ -255,13 +255,13 @@ function Add_Item(table, itemtable, urod, itemid, amount, isCheat)
case "Necklace":
case "Ring":
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);
break;
case "Skill":
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;
case "PC":
@ -270,19 +270,19 @@ function Add_Item(table, itemtable, urod, itemid, amount, isCheat)
break;
case "Pet":
if (!urod.Pet[itemid]) urod.Pet[itemid] = [0, 1]; // [레벨, 획득 수]
urod.Pet[itemid][0] += amount;
if (!urod.Pet[itemid]) urod.Pet[itemid] = [0, 1];
urod.Pet[itemid][0] = Add_Amount(urod.Pet[itemid][0], amount);
break;
case "Enchant":
if (!urod.Enchant[itemid]) urod.Enchant[itemid] = [0, 0, 0, 0];
urod.Enchant[itemid][0] += amount;
urod.Enchant[itemid][2] += amount;
urod.Enchant[itemid][0] = Add_Amount(urod.Enchant[itemid][0], amount);
urod.Enchant[itemid][2] = Add_Amount(urod.Enchant[itemid][2], amount);
break;
case "Relic":
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;
}
}
@ -296,7 +296,7 @@ function Use_Item(table, urod, itemid, amount)
if (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;
}
}
@ -331,7 +331,7 @@ function Use_Item(table, urod, itemid, amount)
if (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;
}
}
@ -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 (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]);
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)
{
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)
{
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) {
@ -529,9 +529,9 @@ handlers.Save_StageResult = function(args)
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)) {
urod.PC.Lv++;
++urod.PC.Lv;
}
// 아이템 처리 (args.Item은 JS object 형태로 전달됨)
@ -548,7 +548,7 @@ handlers.Save_StageResult = function(args)
for (var key in args.Mob) {
var Id = key;
var Count = args.Mob[key];
mobcount += Count;
mobcount = Add_Amount(mobcount, Count);
Add_MissionCount(table, urod, "KILL_MONSTER", Id, Count, false);
Add_MobCollection(urod, Id, Count);
}
@ -556,7 +556,7 @@ handlers.Save_StageResult = function(args)
for (var key in args.Elite) {
var Id = key;
var Count = args.Elite[key];
elitemobcount += Count;
elitemobcount = Add_Amount(elitemobcount, Count);
Add_MissionCount(table, urod, "KILL_MONSTER", Id, Count, false);
Add_MobCollection(urod, Id, Count);
}
@ -564,13 +564,13 @@ handlers.Save_StageResult = function(args)
for (var key in args.Boss) {
var Id = key;
var Count = args.Boss[key];
bossmobcount += Count;
bossmobcount = Add_Amount(bossmobcount + Count);
Add_MissionCount(table, urod, "KILL_MONSTER", Id, Count, false);
Add_MobCollection(urod, Id, Count);
}
Add_MissionCount(table, urod, "KILL_MONSTER_ALL", 0, mobcount + elitemobcount + bossmobcount, false);
Add_MissionCount(table, urod, "KILL_MONSTER_ACC", 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, Add_Amount(mobcount + elitemobcount + bossmobcount), 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", 3, bossmobcount, false);
@ -606,7 +606,7 @@ handlers.Save_PC_Stat = function(args)
if (curUsePoint <= remainPoint) {
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);
Set_JsonUserData(urod);
@ -1271,7 +1271,7 @@ handlers.Save_EquipItem_SlotLvUp = function(args)
log.info("슬롯 강화 비용 " + 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;
Add_MissionCount(table, urod, "EQUIP_SLOT_UPGRADE_ALL", 0, 1);
@ -1353,6 +1353,31 @@ handlers.Save_EquipItem_Enchant = function(args)
}
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)
@ -10121,6 +10146,10 @@ function IsRateTrue1000000(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);
});
}
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
#region

View File

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