직업 구매
This commit is contained in:
parent
087cd3c0e5
commit
c18d41efa5
|
|
@ -177,6 +177,7 @@ handlers.ServerSave_AllData = function(args)
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////// 서버 처리
|
/////////////////////////////////// 서버 처리
|
||||||
|
// table 변수는 기본적으로 미션 테이블
|
||||||
function Get_UserReadOnlyData()
|
function Get_UserReadOnlyData()
|
||||||
{
|
{
|
||||||
return server.GetUserReadOnlyData({ PlayFabId: currentPlayerId });
|
return server.GetUserReadOnlyData({ PlayFabId: currentPlayerId });
|
||||||
|
|
@ -360,6 +361,8 @@ function Add_MissionCount(table, urod, purpose, conditionvalue, count, setValue)
|
||||||
// 조건 값 확인
|
// 조건 값 확인
|
||||||
//log.info("typeof n_MissionConditionValue: " + typeof mission.n_MissionConditionValue);
|
//log.info("typeof n_MissionConditionValue: " + typeof mission.n_MissionConditionValue);
|
||||||
//log.info("typeof conditionvalue: " + typeof conditionvalue);
|
//log.info("typeof conditionvalue: " + typeof conditionvalue);
|
||||||
|
//log.info("n_MissionConditionValue: " + mission.n_MissionConditionValue);
|
||||||
|
//log.info("conditionvalue: " + conditionvalue);
|
||||||
if (mission.n_MissionConditionValue == 0 || conditionvalue == mission.n_MissionConditionValue) {
|
if (mission.n_MissionConditionValue == 0 || conditionvalue == mission.n_MissionConditionValue) {
|
||||||
var key1 = mission.n_MissionGroupId;
|
var key1 = mission.n_MissionGroupId;
|
||||||
var key2 = mission.n_MissionIndex;
|
var key2 = mission.n_MissionIndex;
|
||||||
|
|
@ -704,6 +707,73 @@ handlers.Save_PC_AbilityInit = function(args)
|
||||||
return Get_Return(2); // 젬 부족
|
return Get_Return(2); // 젬 부족
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handlers.Save_PC_BuyJob = 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 global = Get_GlobalValueTable();
|
||||||
|
var matdata = global.find(f => f.s_ID == "n_JobMaterialID");
|
||||||
|
if (!matdata) return Get_Return(1); // 설정 누락
|
||||||
|
var materialId = matdata.n_Value;
|
||||||
|
|
||||||
|
if (urod.PC.Obtain.includes(args.JobID))
|
||||||
|
return Get_Return(3); // 가진 직업
|
||||||
|
|
||||||
|
var classopentable = Get_ClassOpenTable();
|
||||||
|
var m_Data = classopentable.find(f=>f.n_ClassID == args.JobID);
|
||||||
|
// linkedId1 확인
|
||||||
|
const linkedClass1 = parseInt(m_Data.n_linkedClass1);
|
||||||
|
if (linkedClass1 > 0 && !urod.PC.Obtain.map(id => parseInt(id)).includes(linkedClass1))
|
||||||
|
return Get_Return(4);
|
||||||
|
|
||||||
|
// linkedId2 확인
|
||||||
|
const linkedClass2 = parseInt(m_Data.n_linkedClass2);
|
||||||
|
if (linkedClass2 > 0 && !urod.PC.Obtain.map(id => parseInt(id)).includes(linkedClass2))
|
||||||
|
return Get_Return(4);
|
||||||
|
|
||||||
|
// 특성 확인
|
||||||
|
if (m_Data.n_RequireAbility > 0)
|
||||||
|
{
|
||||||
|
if (!urod.Ability[m_Data.n_RequireAbility] || urod.Ability[m_Data.n_RequireAbility] < 1)
|
||||||
|
return Get_Return(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 각성 확인 1
|
||||||
|
if (m_Data.e_RequireAwakenType1 != "None")
|
||||||
|
{
|
||||||
|
if (!urod.Awaken[m_Data.e_RequireAwakenType1] || urod.Awaken[m_Data.e_RequireAwakenType1].Lv < m_Data.n_RequireAwakenStep1)
|
||||||
|
return Get_Return(6);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 각성 확인 2
|
||||||
|
if (m_Data.e_RequireAwakenType2 != "None")
|
||||||
|
{
|
||||||
|
if (!urod.Awaken[m_Data.e_RequireAwakenType2] || urod.Awaken[m_Data.e_RequireAwakenType2].Lv < m_Data.n_RequireAwakenStep2)
|
||||||
|
return Get_Return(6);
|
||||||
|
}
|
||||||
|
|
||||||
|
var itemtable = Get_ItemTable();
|
||||||
|
if (Use_Item(itemtable, urod, matdata.n_Value, m_Data.n_NeedGoodsCount))
|
||||||
|
{
|
||||||
|
var table = Get_MissionTable();
|
||||||
|
Add_Item(table, itemtable, urod, args.JobID, 1);
|
||||||
|
|
||||||
|
// 미션 카운트
|
||||||
|
Add_MissionCount(table, urod, "CLASS_OPEN_LIMIT", m_Data.n_ClassOpenMission, 1, false);
|
||||||
|
|
||||||
|
Set_JsonUserData(urod);
|
||||||
|
return Get_Return(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Get_Return(2); // 재화 부족
|
||||||
|
}
|
||||||
|
}
|
||||||
/////////////////////////////////// 서버 처리
|
/////////////////////////////////// 서버 처리
|
||||||
|
|
||||||
handlers.Write_UnityInApp = function(args)
|
handlers.Write_UnityInApp = function(args)
|
||||||
|
|
@ -1347,6 +1417,11 @@ function Get_AbilityConfigTable()
|
||||||
var titleData = server.GetTitleInternalData({ Keys: ["AbilityConfigData"] });
|
var titleData = server.GetTitleInternalData({ Keys: ["AbilityConfigData"] });
|
||||||
return JSON.parse(titleData.Data.AbilityConfigData);
|
return JSON.parse(titleData.Data.AbilityConfigData);
|
||||||
}
|
}
|
||||||
|
function Get_ClassOpenTable()
|
||||||
|
{
|
||||||
|
var titleData = server.GetTitleInternalData({ Keys: ["ClassOpenConditionTable"] });
|
||||||
|
return JSON.parse(titleData.Data.ClassOpenConditionTable);
|
||||||
|
}
|
||||||
function Get_GlobalValueTable()
|
function Get_GlobalValueTable()
|
||||||
{
|
{
|
||||||
var titleData = server.GetTitleInternalData({ Keys: ["GlobalValue"] });
|
var titleData = server.GetTitleInternalData({ Keys: ["GlobalValue"] });
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
|
@ -999,6 +999,45 @@ public class ServerInfo : MyCoroutine
|
||||||
Set_Coroutine(() => { Save_PC_AbilityInit(battleType, _act); }, 2f);
|
Set_Coroutine(() => { Save_PC_AbilityInit(battleType, _act); }, 2f);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Save_PC_BuyJob(int jobid, Action _act)
|
||||||
|
{
|
||||||
|
NetWait.Ins.Set(true);
|
||||||
|
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
|
||||||
|
{
|
||||||
|
FunctionName = "Save_PC_BuyJob",
|
||||||
|
GeneratePlayStreamEvent = true,
|
||||||
|
FunctionParameter = new
|
||||||
|
{
|
||||||
|
Token = m_LoginInfo.EntityToken.EntityToken,
|
||||||
|
JobID = jobid,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
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(999900005); break;
|
||||||
|
case 2: ToastUI.Ins.Set(388); break;
|
||||||
|
case 3: ToastUI.Ins.Set(999900006); break;
|
||||||
|
case 4: ToastUI.Ins.Set(999900007); break;
|
||||||
|
case 5: ToastUI.Ins.Set(999900008); break;
|
||||||
|
case 6: ToastUI.Ins.Set(263); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Set_Coroutine(() => { Save_PC_BuyJob(jobid, _act); }, 2f);
|
||||||
|
},
|
||||||
|
fail =>
|
||||||
|
{
|
||||||
|
Set_Coroutine(() => { Save_PC_BuyJob(jobid, _act); }, 2f);
|
||||||
|
});
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 우편
|
#region 우편
|
||||||
|
|
|
||||||
|
|
@ -116,16 +116,19 @@ public class PCJobUI_OpenCondition : MonoBehaviour
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // 전직
|
{ // 전직
|
||||||
if (CanJobBuy(true))
|
//if (CanJobBuy(true))
|
||||||
{
|
{
|
||||||
var moneyid = table_GlobalValue.Ins.Get_Int("n_JobMaterialID");
|
var moneyid = table_GlobalValue.Ins.Get_Int("n_JobMaterialID");
|
||||||
if (sdata.Check_ItemAmount(moneyid, m_Data.n_NeedGoodsCount))
|
//if (sdata.Check_ItemAmount(moneyid, m_Data.n_NeedGoodsCount))
|
||||||
{
|
{
|
||||||
sdata.Use_Item(moneyid, m_Data.n_NeedGoodsCount);
|
ServerInfo.Ins.Save_PC_BuyJob(m_Data.n_ClassID, () =>
|
||||||
sdata.PC.Add_PC(m_ClassId);
|
{
|
||||||
Set_UI();
|
sdata.Use_Item(moneyid, m_Data.n_NeedGoodsCount);
|
||||||
MyValue.Get_ActorStatInfoorNull(eRole.PC);
|
sdata.PC.Add_PC(m_ClassId);
|
||||||
sdata.Add_MissionCount(ePurpose.CLASS_OPEN_LIMIT, m_Data.n_ClassOpenMission);
|
Set_UI();
|
||||||
|
MyValue.Get_ActorStatInfoorNull(eRole.PC);
|
||||||
|
sdata.Add_MissionCount(ePurpose.CLASS_OPEN_LIMIT, m_Data.n_ClassOpenMission);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue