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);
|
var grade = Get_RandomGachaGrade(lv);
|
||||||
//log.info("등급 : " + grade);
|
//log.info("등급 : " + grade);
|
||||||
// 랜덤백에서 아이템 id 얻기
|
// 랜덤백에서 아이템 id 얻기
|
||||||
var optionitemID = Get_RandomItemId(lsmc_data.n_DropIndex, grade);
|
var optionitemID = Get_RandomItem(lsmc_data.n_DropIndex, grade).itemid;
|
||||||
//log.info("랜덤백 ID : " + optionitemID);
|
//log.info("랜덤백 ID : " + optionitemID);
|
||||||
// 인챈트그레이드에서 옵션 레벨 얻기
|
// 인챈트그레이드에서 옵션 레벨 얻기
|
||||||
var olv = Get_OptionLv(grade);
|
var olv = Get_OptionLv(grade);
|
||||||
|
|
@ -1455,7 +1455,7 @@ handlers.Save_Pet_Gacha = function(args)
|
||||||
var petlist = [];
|
var petlist = [];
|
||||||
for (let i = 0; i < amount; i++)
|
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);
|
petlist.push(petid);
|
||||||
Add_Item(table, itemtable, urod, petid, 1);
|
Add_Item(table, itemtable, urod, petid, 1);
|
||||||
}
|
}
|
||||||
|
|
@ -1525,6 +1525,45 @@ handlers.Save_Pet_Equip = function(args)
|
||||||
Set_JsonUserData(urod);
|
Set_JsonUserData(urod);
|
||||||
return Get_Return(0);
|
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)
|
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();
|
var randombaTable = Get_RandomBagTable();
|
||||||
const items = randombaTable.filter(f =>
|
const items = randombaTable.filter(f =>
|
||||||
f.n_DropIndex == dropIndex && f.n_ItemGrade == grade
|
f.n_DropIndex == dropIndex && f.n_ItemGrade == grade
|
||||||
|
|
@ -13472,7 +13511,7 @@ function Get_RandomItemId(dropIndex, grade) {
|
||||||
let rand = Math.random() * total;
|
let rand = Math.random() * total;
|
||||||
for (let i = 0; i < items.length; i++) {
|
for (let i = 0; i < items.length; i++) {
|
||||||
if (rand < weights[i]) {
|
if (rand < weights[i]) {
|
||||||
return items[i].n_ItemId;
|
return { itemid :items[i].n_ItemId, amount : items[i].n_DropCount };
|
||||||
}
|
}
|
||||||
rand -= weights[i];
|
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()
|
function Get_PlayOCoupons()
|
||||||
{
|
{
|
||||||
var poc = JSON.parse(server.GetTitleInternalData("PlayO").Data.PlayO);
|
var poc = JSON.parse(server.GetTitleInternalData("PlayO").Data.PlayO);
|
||||||
|
|
|
||||||
|
|
@ -2959,6 +2959,11 @@ public class SD_FarmSlot_Read
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 서버 응답 클래스
|
#region 서버 응답 클래스
|
||||||
|
public class SC_Items
|
||||||
|
{
|
||||||
|
public int itemid, amount;
|
||||||
|
}
|
||||||
|
|
||||||
public class SC_PCStatInit
|
public class SC_PCStatInit
|
||||||
{
|
{
|
||||||
public int gem;
|
public int gem;
|
||||||
|
|
@ -2985,4 +2990,9 @@ public class SC_PetLvUpResult
|
||||||
{
|
{
|
||||||
public int usemat, usepet;
|
public int usemat, usepet;
|
||||||
}
|
}
|
||||||
|
public class SC_EssenceExchangeResult
|
||||||
|
{
|
||||||
|
public int mileage;
|
||||||
|
public List<SC_Items> items;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
@ -1825,6 +1825,43 @@ public class ServerInfo : MyCoroutine
|
||||||
Set_Coroutine(() => { Save_Pet_Equip(petid, _act); }, 2f);
|
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
|
#endregion
|
||||||
|
|
||||||
#region 우편
|
#region 우편
|
||||||
|
|
|
||||||
|
|
@ -61,24 +61,28 @@ public class CollectionEssenceUI_Right : uScrollViewMgr
|
||||||
var Tdata = Get_SelectTData();
|
var Tdata = Get_SelectTData();
|
||||||
if (sdata.Check_ItemAmount(Tdata.n_EssenceID, m_UseAmount))
|
if (sdata.Check_ItemAmount(Tdata.n_EssenceID, m_UseAmount))
|
||||||
{
|
{
|
||||||
sdata.Add_MissionCount(ePurpose.ESSENCE_EXCHANGE, 0, m_UseAmount);
|
ServerInfo.Ins.Save_Essence_Change(Tdata.n_EssenceID, m_UseAmount, result =>
|
||||||
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++)
|
|
||||||
{
|
{
|
||||||
var grade = DSUtil.Get_RandomIndex(Tdata.list_rate) + 1;
|
sdata.Use_Item(Tdata.n_EssenceID, m_UseAmount);
|
||||||
var item = table_randombag.Ins.Get_RandomItemData(randombagid, grade);
|
|
||||||
list_reward.Add(new ItemSimpleData { itemid = item.itemid, amount = item.amount });
|
var mileageid = table_GlobalValue.Ins.Get_Int("n_EssenceMileageID");
|
||||||
sdata.Add_Item(item.itemid, item.amount);
|
List<ItemSimpleData> list_reward = new List<ItemSimpleData>();
|
||||||
sdata.Add_Item(mileageid, table_itemlist.Ins.Get_Data(Tdata.n_EssenceID).n_ItemValue); // 마일리지 축적
|
list_reward.Add(new ItemSimpleData { itemid = mileageid, amount = result.mileage });
|
||||||
}
|
for (int i = 0; i < result.items.Count; i++)
|
||||||
ObtainItemUI.Ins.Set(list_reward);
|
{
|
||||||
m_SelectCard.Set_UI();
|
sdata.Add_Item(result.items[i].itemid, result.items[i].amount);
|
||||||
Set_UI();
|
list_reward.Add(new ItemSimpleData { itemid = result.items[i].itemid, amount = result.items[i].amount });
|
||||||
CollectionEssenceUI_Left.Ins.Set();
|
}
|
||||||
|
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