Save_Essence_Mileage

This commit is contained in:
Ino 2025-07-09 09:58:57 +09:00
parent 558441c187
commit 3b754ac7c2
4 changed files with 103 additions and 10 deletions

View File

@ -1564,6 +1564,64 @@ handlers.Save_Essence_Change = function(args)
}
return Get_Return(1);
}
handlers.Save_Essence_Mileage = 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);
const list_rewardstep = [200, 500, 700, 1000];
const list_rewardid = [2000001, 2000002, 2000003, 2000004, 2000005, 2000006];
const dic_rewardrate = {
0: [0.5, 0.35, 0.25, 0.0, 0.0, 0.0],
1: [0.0, 0.5, 0.35, 0.25, 0.0, 0.0],
2: [0.0, 0.0, 0.5, 0.35, 0.25, 0.0],
3: [0.0, 0.0, 0.0, 0.5, 0.35, 0.25],
};
var mileageid = Get_GlobalValue_nValue("n_EssenceMileageID");
var mileageAmount = Get_ItemAmount(urod, mileageid);
if (mileageAmount < list_rewardstep[0]) return Get_Return(1);
// step check
var step = 0;
if (mileageAmount >= list_rewardstep[3]) step = 3;
else if (mileageAmount >= list_rewardstep[2]) step = 2;
else if (mileageAmount >= list_rewardstep[1]) step = 1;
var table = Get_MissionTable();
var stepCost = list_rewardstep[step];
if (Use_Item(table, urod, mileageid, stepCost))
{
var itemtable = Get_ItemTable();
var rewards = [];
// 확률 기반 아이템 선택
var rates = dic_rewardrate[step];
var totalRate = rates.reduce((a, b) => a + b, 0);
var rand = Math.random() * totalRate;
var selectedIndex = 0;
for (var i = 0; i < rates.length; i++) {
if (rand < rates[i]) {
selectedIndex = i;
break;
}
rand -= rates[i];
}
var itemid = list_rewardid[selectedIndex];
var amount = 1;
Add_Item(table, itemtable, urod, itemid, amount);
rewards.push({ itemid: itemid, amount: amount });
Set_JsonUserData(urod);
return Get_Return(0, { mileage: stepCost, items: rewards });
}
return Get_Return(1);
};
/////////////////////////////////// 서버 처리
handlers.Write_UnityInApp = function(args)

View File

@ -2990,7 +2990,7 @@ public class SC_PetLvUpResult
{
public int usemat, usepet;
}
public class SC_EssenceExchangeResult
public class SC_EssenceResult
{
public int mileage;
public List<SC_Items> items;

View File

@ -1826,7 +1826,7 @@ public class ServerInfo : MyCoroutine
});
}
public void Save_Essence_Change(int essenceID, int amount, Action<SC_EssenceExchangeResult> _act)
public void Save_Essence_Change(int essenceID, int amount, Action<SC_EssenceResult> _act)
{
NetWait.Ins.Set(true);
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
@ -1850,7 +1850,7 @@ public class ServerInfo : MyCoroutine
// (0 성공, 1 실패 (정수 갯수 부족))
switch (error)
{
case 0: _act?.Invoke(JsonConvert.DeserializeObject<SC_EssenceExchangeResult>(str_result)); break;
case 0: _act?.Invoke(JsonConvert.DeserializeObject<SC_EssenceResult>(str_result)); break;
case 1: ToastUI.Ins.Set(388); break;
}
}
@ -1862,6 +1862,40 @@ public class ServerInfo : MyCoroutine
Set_Coroutine(() => { Save_Essence_Change(essenceID, amount, _act); }, 2f);
});
}
public void Save_Essence_Mileage(Action<SC_EssenceResult> _act)
{
NetWait.Ins.Set(true);
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
{
FunctionName = MethodBase.GetCurrentMethod().Name,
GeneratePlayStreamEvent = true,
FunctionParameter = new
{
Token = m_LoginInfo.EntityToken.EntityToken,
}
},
result =>
{
if (result.Error == null)
{
NetWait.Ins.Set(false);
var str_result = result.FunctionResult.ToString();
var error = MyErrorCheck(str_result);
// (0 성공, 1 실패 (마일리지 부족))
switch (error)
{
case 0: _act?.Invoke(JsonConvert.DeserializeObject<SC_EssenceResult>(str_result)); break;
case 1: ToastUI.Ins.Set(388); break;
}
}
else
Set_Coroutine(() => { Save_Essence_Mileage(_act); }, 2f);
},
fail =>
{
Set_Coroutine(() => { Save_Essence_Mileage(_act); }, 2f);
});
}
#endregion
#region

View File

@ -70,13 +70,14 @@ public class CollectionEssenceUI_Left : MonoBehaviour
{
Popup.Ins.Set(ePopupType.One, 283, () =>
{
var rewardid_index = DSUtil.Get_RandomIndex(dic_rewardrate[index]);
var essenceid = list_rewardid[rewardid_index];
sdata.Use_Item(moneyid, list_rewardstep[index]);
sdata.Add_Item(essenceid, 1);
Set();
CollectionEssenceUI_Right.Ins.Set();
ObtainItemUI.Ins.Set(new ItemSimpleData { itemid = essenceid, amount = 1 });
ServerInfo.Ins.Save_Essence_Mileage(result =>
{
sdata.Use_Item(moneyid, result.mileage);
sdata.Add_Item(result.items[0].itemid, result.items[0].amount);
Set();
CollectionEssenceUI_Right.Ins.Set();
ObtainItemUI.Ins.Set(new ItemSimpleData { itemid = result.items[0].itemid, amount = 1 });
});
}, null, list_rewardstep[index]);
}
}