미션 저장 관련

This commit is contained in:
Ino 2025-06-29 13:33:59 +09:00
parent 07764e3960
commit 5a5e9f60a9
5 changed files with 111 additions and 22 deletions

View File

@ -315,7 +315,7 @@ function Use_Item(urod, itemid, amount)
} }
return false; return false;
} }
function Add_MissionCount(purpose, conditionvalue, count, setValue) { function Add_MissionCount(urod, purpose, conditionvalue, count, setValue) {
if (count <= 0) return; if (count <= 0) return;
var table = Get_MissionTable(); // 전체 미션 테이블 var table = Get_MissionTable(); // 전체 미션 테이블
@ -335,17 +335,17 @@ function Add_MissionCount(purpose, conditionvalue, count, setValue) {
var mission = matchingMissions[i]; var mission = matchingMissions[i];
// 조건 값 확인 // 조건 값 확인
if (mission.n_MissionConditionValue === 0 || conditionvalue === mission.n_MissionConditionValue) { //log.info("typeof n_MissionConditionValue: " + typeof mission.n_MissionConditionValue);
var key1 = Get_Key(mission.n_MissionGroupId); //log.info("typeof conditionvalue: " + typeof conditionvalue);
var key2 = Get_Key(mission.n_MissionIndex); if (mission.n_MissionConditionValue == 0 || conditionvalue == mission.n_MissionConditionValue) {
var key1 = mission.n_MissionGroupId;
var key2 = mission.n_MissionIndex;
if (!Mission[key1]) Mission[key1] = {}; if (!urod.Mission[key1]) urod.Mission[key1] = {};
if (!Mission[key1][key2]) Mission[key1][key2] = [0, 0]; // 예: [목표값, 현재값] if (!urod.Mission[key1][key2]) urod.Mission[key1][key2] = [0, 0];
if (setValue) if (setValue) urod.Mission[key1][key2][1] = count;
Mission[key1][key2][1] = count; else urod.Mission[key1][key2][1] += count;
else
Mission[key1][key2][1] += count;
} }
} }
} }
@ -419,7 +419,7 @@ handlers.Save_PC_Stat = function(args)
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] += args.UsePoint[i];
} }
Add_MissionCount("HERO_STAT_UPGRADE_ACC", 0, curUsePoint, false); Add_MissionCount(urod, "HERO_STAT_UPGRADE_ACC", 0, curUsePoint, false);
Set_JsonUserData(urod); Set_JsonUserData(urod);
return { error: 0 }; return { error: 0 };
} else { } else {
@ -455,6 +455,45 @@ handlers.Save_PC_StatInit = function(args)
return { error: rtnerror, gem: useGem }; return { error: rtnerror, gem: useGem };
} }
handlers.Save_PC_Ability = function(args)
{
var error = Get_Error(args.Token);
if (error < 0) return { error: error };
var table = Get_AbilityConfigTable();
var data = table.find(f => f.n_AbilityID == args.AbilityID);
if (!data) return { error: 3 }; // 잘못된 특성 ID
var urod = Get_JsonUserData();
if (data.n_MaxUpgradeLevel <= (urod.Ability[args.AbilityID] || 0))
return { error: 1 }; // 이미 최대 레벨
var global = Get_GlobalValueTable();
var matdata = global.find(f => f.s_ID == "n_AbilityMaterialID");
if (!matdata) return { error: 4 }; // 설정 누락
var materialId = matdata.n_Value;
if (Use_Item(urod, materialId, 1))
{
// 특성 레벨업
if (!urod.Ability[args.AbilityID])
urod.Ability[args.AbilityID] = 0;
++urod.Ability[args.AbilityID];
// 미션 카운트
Add_MissionCount(urod, "HERO_ABILITY_UPGRADE_CLASS_LIMIT", args.nBattleType, 1, false);
Add_MissionCount(urod, "HERO_ABILITY_UPGRADE_ALL", 0, 1, false);
Add_MissionCount(urod, "HERO_ABILITY_UPGRADE_ACC", 0, 1, false);
Set_JsonUserData(urod);
return { error: 0 };
}
else
return { error: 2 }; // 재료 없음
}
/////////////////////////////////// 서버 처리 /////////////////////////////////// 서버 처리
handlers.Write_UnityInApp = function(args) handlers.Write_UnityInApp = function(args)
@ -1088,6 +1127,16 @@ function Get_MissionTable()
var titleData = server.GetTitleInternalData({ Keys: ["MissionTable"] }); var titleData = server.GetTitleInternalData({ Keys: ["MissionTable"] });
return JSON.parse(titleData.Data.MissionTable); return JSON.parse(titleData.Data.MissionTable);
} }
function Get_AbilityConfigTable()
{
var titleData = server.GetTitleInternalData({ Keys: ["AbilityConfigData"] });
return JSON.parse(titleData.Data.AbilityConfigData);
}
function Get_GlobalValueTable()
{
var titleData = server.GetTitleInternalData({ Keys: ["GlobalValue"] });
return JSON.parse(titleData.Data.GlobalValue);
}
function Get_PlayOCoupons() function Get_PlayOCoupons()
{ {
var poc = JSON.parse(server.GetTitleInternalData("PlayO").Data.PlayO); var poc = JSON.parse(server.GetTitleInternalData("PlayO").Data.PlayO);

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -891,6 +891,44 @@ public class ServerInfo : MyCoroutine
Set_Coroutine(() => { Save_PC_StatInit(_act); }, 2f); Set_Coroutine(() => { Save_PC_StatInit(_act); }, 2f);
}); });
} }
public void Save_PC_Ability(int abilityID, int nbattletype, Action _act)
{
NetWait.Ins.Set(true);
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
{
FunctionName = "Save_PC_Ability",
GeneratePlayStreamEvent = true,
FunctionParameter = new
{
Token = m_LoginInfo.EntityToken.EntityToken,
AbilityID = abilityID,
nBattleType = nbattletype,
}
},
result =>
{
if (result.Error == null)
{
NetWait.Ins.Set(false);
var error = MyErrorCheck(result.FunctionResult.ToString());
switch (error)
{
case 0: _act?.Invoke(); break;
case 1: ToastUI.Ins.Set(999900003); break;
case 2: ToastUI.Ins.Set(388); break;
case 3: ToastUI.Ins.Set(999900004); break;
case 4: ToastUI.Ins.Set(999900005); break;
}
}
else
Set_Coroutine(() => { Save_PC_Ability(abilityID, nbattletype, _act); }, 2f);
},
fail =>
{
Set_Coroutine(() => { Save_PC_Ability(abilityID, nbattletype, _act); }, 2f);
});
}
#endregion #endregion
#region #region

View File

@ -68,16 +68,18 @@ public class PCAbilityLvUpUI : BackKeyAdd
var moneyid = table_GlobalValue.Ins.Get_Int("n_AbilityMaterialID"); var moneyid = table_GlobalValue.Ins.Get_Int("n_AbilityMaterialID");
if (CanLvUp(true) && sdata.Check_ItemAmount(moneyid, 1)) if (CanLvUp(true) && sdata.Check_ItemAmount(moneyid, 1))
{ {
sdata.Use_Item(moneyid, 1); ServerInfo.Ins.Save_PC_Ability(m_Data.n_AbilityID, MyEnumToInt.Ins.Get_Int(m_Data.e_BattleType), () =>
sdata.Add_AbilityLv(m_Data.n_AbilityID); {
MyValue.Get_ActorStatInfoorNull(eRole.PC); sdata.Use_Item(moneyid, 1);
Set_UI(); sdata.Add_AbilityLv(m_Data.n_AbilityID);
PCAbilityUI.Ins.Set_UI(); MyValue.Get_ActorStatInfoorNull(eRole.PC);
NewGameUI.Ins.m_PCUI.Refresh_Money(); Set_UI();
PCAbilityUI.Ins.Set_UI();
sdata.Add_MissionCount(ePurpose.HERO_ABILITY_UPGRADE_CLASS_LIMIT, MyEnumToInt.Ins.Get_Int(m_Data.e_BattleType)); sdata.Add_MissionCount(ePurpose.HERO_ABILITY_UPGRADE_CLASS_LIMIT, MyEnumToInt.Ins.Get_Int(m_Data.e_BattleType));
sdata.Add_MissionCount(ePurpose.HERO_ABILITY_UPGRADE_ALL); sdata.Add_MissionCount(ePurpose.HERO_ABILITY_UPGRADE_ALL);
sdata.Add_MissionCount(ePurpose.HERO_ABILITY_UPGRADE_ACC); sdata.Add_MissionCount(ePurpose.HERO_ABILITY_UPGRADE_ACC);
});
} }
} }
} }