Save_Essence_Change
This commit is contained in:
parent
24b47064f3
commit
558441c187
|
|
@ -954,7 +954,7 @@ handlers.Save_PC_LimitSlotOptionChange = function(args)
|
|||
var grade = Get_RandomGachaGrade(lv);
|
||||
//log.info("등급 : " + grade);
|
||||
// 랜덤백에서 아이템 id 얻기
|
||||
var optionitemID = Get_RandomItemId(lsmc_data.n_DropIndex, grade);
|
||||
var optionitemID = Get_RandomItem(lsmc_data.n_DropIndex, grade).itemid;
|
||||
//log.info("랜덤백 ID : " + optionitemID);
|
||||
// 인챈트그레이드에서 옵션 레벨 얻기
|
||||
var olv = Get_OptionLv(grade);
|
||||
|
|
@ -1455,7 +1455,7 @@ handlers.Save_Pet_Gacha = function(args)
|
|||
var petlist = [];
|
||||
for (let i = 0; i < amount; i++)
|
||||
{
|
||||
var petid = Get_RandomItemId(9000001, urod.PetData.GachaLv);
|
||||
var petid = Get_RandomItem(9000001, urod.PetData.GachaLv).itemid;
|
||||
petlist.push(petid);
|
||||
Add_Item(table, itemtable, urod, petid, 1);
|
||||
}
|
||||
|
|
@ -1525,6 +1525,45 @@ handlers.Save_Pet_Equip = function(args)
|
|||
Set_JsonUserData(urod);
|
||||
return Get_Return(0);
|
||||
}
|
||||
|
||||
handlers.Save_Essence_Change = 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 table = Get_MissionTable();
|
||||
if (Use_Item(table, urod, args.EssenceID, args.Amount))
|
||||
{
|
||||
var itemtable = Get_ItemTable();
|
||||
var rewards = [];
|
||||
var randombagid = Get_GlobalValue_nValue("n_EssenceRandomBagID");
|
||||
var mileageid = Get_GlobalValue_nValue("n_EssenceMileageID");
|
||||
var mileagevalue = itemtable.find(f=>f.n_ItemID == args.EssenceID).n_ItemValue;
|
||||
for (var i = 0; i < args.Amount; i++)
|
||||
{
|
||||
var grade = Get_EssenceRateGrade(args.EssenceID);
|
||||
var item = Get_RandomItem(randombagid, grade);
|
||||
Add_Item(table, itemtable, urod, item.itemid, item.amount);
|
||||
Add_Item(table, itemtable, urod, mileageid, mileagevalue); // 마일리지 축적
|
||||
|
||||
var temp = rewards.find(f=>f.itemid == item.itemid);
|
||||
if (!temp)
|
||||
rewards.push({ itemid: item.itemid, amount: item.amount });
|
||||
else
|
||||
temp.amount = Add_Amount(temp.amount, item.amount);
|
||||
}
|
||||
|
||||
Add_MissionCount(table, urod, "ESSENCE_EXCHANGE", 0, args.Amount);
|
||||
Add_MissionCount(table, urod, "ESSENCE_EXCHANGE_ACC", 0, args.Amount);
|
||||
|
||||
Set_JsonUserData(urod);
|
||||
return Get_Return(0, { mileage : mileagevalue * args.Amount, items : rewards });
|
||||
}
|
||||
return Get_Return(1);
|
||||
}
|
||||
/////////////////////////////////// 서버 처리
|
||||
|
||||
handlers.Write_UnityInApp = function(args)
|
||||
|
|
@ -13457,7 +13496,7 @@ function Get_RandomBagTable()
|
|||
}
|
||||
]
|
||||
}
|
||||
function Get_RandomItemId(dropIndex, grade) {
|
||||
function Get_RandomItem(dropIndex, grade) {
|
||||
var randombaTable = Get_RandomBagTable();
|
||||
const items = randombaTable.filter(f =>
|
||||
f.n_DropIndex == dropIndex && f.n_ItemGrade == grade
|
||||
|
|
@ -13472,7 +13511,7 @@ function Get_RandomItemId(dropIndex, grade) {
|
|||
let rand = Math.random() * total;
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
if (rand < weights[i]) {
|
||||
return items[i].n_ItemId;
|
||||
return { itemid :items[i].n_ItemId, amount : items[i].n_DropCount };
|
||||
}
|
||||
rand -= weights[i];
|
||||
}
|
||||
|
|
@ -18506,6 +18545,95 @@ function Get_OptionConfigTable()
|
|||
]
|
||||
}
|
||||
|
||||
function Get_EssenceTable()
|
||||
{
|
||||
return [
|
||||
{
|
||||
"n_EssenceID": "2000001",
|
||||
"f_Rate1": "0.48",
|
||||
"f_Rate2": "0.37",
|
||||
"f_Rate3": "0.12",
|
||||
"f_Rate4": "0.03",
|
||||
"f_Rate5": "0",
|
||||
"f_Rate6": "0"
|
||||
},
|
||||
{
|
||||
"n_EssenceID": "2000002",
|
||||
"f_Rate1": "0.3",
|
||||
"f_Rate2": "0.34",
|
||||
"f_Rate3": "0.25",
|
||||
"f_Rate4": "0.1",
|
||||
"f_Rate5": "0.01",
|
||||
"f_Rate6": "0"
|
||||
},
|
||||
{
|
||||
"n_EssenceID": "2000003",
|
||||
"f_Rate1": "0",
|
||||
"f_Rate2": "0.3",
|
||||
"f_Rate3": "0.45",
|
||||
"f_Rate4": "0.2",
|
||||
"f_Rate5": "0.05",
|
||||
"f_Rate6": "0"
|
||||
},
|
||||
{
|
||||
"n_EssenceID": "2000004",
|
||||
"f_Rate1": "0",
|
||||
"f_Rate2": "0.15",
|
||||
"f_Rate3": "0.22",
|
||||
"f_Rate4": "0.45",
|
||||
"f_Rate5": "0.15",
|
||||
"f_Rate6": "0.03"
|
||||
},
|
||||
{
|
||||
"n_EssenceID": "2000005",
|
||||
"f_Rate1": "0",
|
||||
"f_Rate2": "0",
|
||||
"f_Rate3": "0.1",
|
||||
"f_Rate4": "0.15",
|
||||
"f_Rate5": "0.55",
|
||||
"f_Rate6": "0.2"
|
||||
},
|
||||
{
|
||||
"n_EssenceID": "2000006",
|
||||
"f_Rate1": "0",
|
||||
"f_Rate2": "0",
|
||||
"f_Rate3": "0",
|
||||
"f_Rate4": "0.05",
|
||||
"f_Rate5": "0.35",
|
||||
"f_Rate6": "0.6"
|
||||
}
|
||||
]
|
||||
}
|
||||
function Get_EssenceRateGrade(id)
|
||||
{
|
||||
const table = Get_EssenceTable();
|
||||
const data = table.find(f => f.n_EssenceID == id);
|
||||
if (!data) return -1;
|
||||
|
||||
// 유효한 등급(rate > 0)만 뽑기
|
||||
const rates = [];
|
||||
for (let i = 1; i <= 6; i++) {
|
||||
const key = `f_Rate${i}`;
|
||||
const rate = parseFloat(data[key]);
|
||||
if (rate > 0) {
|
||||
rates.push({ grade: i, weight: rate });
|
||||
}
|
||||
}
|
||||
|
||||
// 총합
|
||||
const totalWeight = rates.reduce((sum, r) => sum + r.weight, 0);
|
||||
if (totalWeight <= 0) return -1;
|
||||
|
||||
// 랜덤 추첨
|
||||
let rand = Math.random() * totalWeight;
|
||||
for (let i = 0; i < rates.length; i++) {
|
||||
if (rand < rates[i].weight) return rates[i].grade;
|
||||
rand -= rates[i].weight;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
function Get_PlayOCoupons()
|
||||
{
|
||||
var poc = JSON.parse(server.GetTitleInternalData("PlayO").Data.PlayO);
|
||||
|
|
|
|||
|
|
@ -2959,6 +2959,11 @@ public class SD_FarmSlot_Read
|
|||
#endregion
|
||||
|
||||
#region 서버 응답 클래스
|
||||
public class SC_Items
|
||||
{
|
||||
public int itemid, amount;
|
||||
}
|
||||
|
||||
public class SC_PCStatInit
|
||||
{
|
||||
public int gem;
|
||||
|
|
@ -2985,4 +2990,9 @@ public class SC_PetLvUpResult
|
|||
{
|
||||
public int usemat, usepet;
|
||||
}
|
||||
public class SC_EssenceExchangeResult
|
||||
{
|
||||
public int mileage;
|
||||
public List<SC_Items> items;
|
||||
}
|
||||
#endregion
|
||||
|
|
@ -1825,6 +1825,43 @@ public class ServerInfo : MyCoroutine
|
|||
Set_Coroutine(() => { Save_Pet_Equip(petid, _act); }, 2f);
|
||||
});
|
||||
}
|
||||
|
||||
public void Save_Essence_Change(int essenceID, int amount, Action<SC_EssenceExchangeResult> _act)
|
||||
{
|
||||
NetWait.Ins.Set(true);
|
||||
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
|
||||
{
|
||||
FunctionName = MethodBase.GetCurrentMethod().Name,
|
||||
GeneratePlayStreamEvent = true,
|
||||
FunctionParameter = new
|
||||
{
|
||||
Token = m_LoginInfo.EntityToken.EntityToken,
|
||||
EssenceID = essenceID,
|
||||
Amount = amount,
|
||||
}
|
||||
},
|
||||
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_EssenceExchangeResult>(str_result)); break;
|
||||
case 1: ToastUI.Ins.Set(388); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
Set_Coroutine(() => { Save_Essence_Change(essenceID, amount, _act); }, 2f);
|
||||
},
|
||||
fail =>
|
||||
{
|
||||
Set_Coroutine(() => { Save_Essence_Change(essenceID, amount, _act); }, 2f);
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 우편
|
||||
|
|
|
|||
|
|
@ -61,24 +61,28 @@ public class CollectionEssenceUI_Right : uScrollViewMgr
|
|||
var Tdata = Get_SelectTData();
|
||||
if (sdata.Check_ItemAmount(Tdata.n_EssenceID, m_UseAmount))
|
||||
{
|
||||
sdata.Add_MissionCount(ePurpose.ESSENCE_EXCHANGE, 0, m_UseAmount);
|
||||
sdata.Add_MissionCount(ePurpose.ESSENCE_EXCHANGE_ACC, 0, m_UseAmount);
|
||||
sdata.Use_Item(Tdata.n_EssenceID, m_UseAmount);
|
||||
List<ItemSimpleData> list_reward = new List<ItemSimpleData>();
|
||||
var randombagid = table_GlobalValue.Ins.Get_Int("n_EssenceRandomBagID");
|
||||
var mileageid = table_GlobalValue.Ins.Get_Int("n_EssenceMileageID");
|
||||
for (int i = 0; i < m_UseAmount; i++)
|
||||
ServerInfo.Ins.Save_Essence_Change(Tdata.n_EssenceID, m_UseAmount, result =>
|
||||
{
|
||||
var grade = DSUtil.Get_RandomIndex(Tdata.list_rate) + 1;
|
||||
var item = table_randombag.Ins.Get_RandomItemData(randombagid, grade);
|
||||
list_reward.Add(new ItemSimpleData { itemid = item.itemid, amount = item.amount });
|
||||
sdata.Add_Item(item.itemid, item.amount);
|
||||
sdata.Add_Item(mileageid, table_itemlist.Ins.Get_Data(Tdata.n_EssenceID).n_ItemValue); // 마일리지 축적
|
||||
}
|
||||
ObtainItemUI.Ins.Set(list_reward);
|
||||
m_SelectCard.Set_UI();
|
||||
Set_UI();
|
||||
CollectionEssenceUI_Left.Ins.Set();
|
||||
sdata.Use_Item(Tdata.n_EssenceID, m_UseAmount);
|
||||
|
||||
var mileageid = table_GlobalValue.Ins.Get_Int("n_EssenceMileageID");
|
||||
List<ItemSimpleData> list_reward = new List<ItemSimpleData>();
|
||||
list_reward.Add(new ItemSimpleData { itemid = mileageid, amount = result.mileage });
|
||||
for (int i = 0; i < result.items.Count; i++)
|
||||
{
|
||||
sdata.Add_Item(result.items[i].itemid, result.items[i].amount);
|
||||
list_reward.Add(new ItemSimpleData { itemid = result.items[i].itemid, amount = result.items[i].amount });
|
||||
}
|
||||
sdata.Add_Item(mileageid, result.mileage);
|
||||
|
||||
sdata.Add_MissionCount(ePurpose.ESSENCE_EXCHANGE, 0, m_UseAmount);
|
||||
sdata.Add_MissionCount(ePurpose.ESSENCE_EXCHANGE_ACC, 0, m_UseAmount);
|
||||
|
||||
ObtainItemUI.Ins.Set(list_reward);
|
||||
m_SelectCard.Set_UI();
|
||||
Set_UI();
|
||||
CollectionEssenceUI_Left.Ins.Set();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue