Save_Farm_Harvest
This commit is contained in:
parent
f22811bcff
commit
f99d2e31ca
|
|
@ -2460,34 +2460,76 @@ handlers.Save_Farm_Harvest = function(args)
|
|||
if (error < 0) return Get_Return(error);
|
||||
|
||||
var urod = Get_JsonUserData(readonlydata);
|
||||
var curSlot = urod.Farm.Slot.find(f=>f.Slot == args.Slot);
|
||||
if (curSlot.Slot > urod.Farm.MaxSlot) return Get_Return(2);
|
||||
if (curSlot.Time > 0 || curSlot.Grade > 0 || curSlot.EnchantID > 0) return Get_Return(1);
|
||||
var curSlot = urod.Farm.Slot.find(f => f.Slot === args.Slot);
|
||||
if (!curSlot || (curSlot.Grade <= 0 && curSlot.EnchantID <= 0)) return Get_Return(1);
|
||||
|
||||
var seedid = Get_GlobalValue_nValue("n_FarmSeedID");
|
||||
var needseed = Get_GlobalValue_nValue("n_FarmPlantingSeedAmount");
|
||||
if (Check_ItemAmount(urod, seedid, needseed) && Check_ItemAmount(urod, args.EnchantID, 1))
|
||||
var slotTime = new Date(curSlot.Time);
|
||||
if (slotTime - Get_CurKoreaTime() > 0) return Get_Return(2);
|
||||
|
||||
var items = [];
|
||||
|
||||
var Tdata = Get_HarvestConfigTable().find(f => f.n_Grade === curSlot.Grade);
|
||||
var EnchantData = Get_EnchantListTable().find(f => f.EnchantID === curSlot.EnchantID);
|
||||
var majorSuccessRate = Get_FarmerValue("MajorSuccess");
|
||||
var cropFailurePreventionRate = Get_FarmerValue("CropFailurePrevention");
|
||||
|
||||
var isMajorSuccess = Math.random() < majorSuccessRate;
|
||||
var isFailHarvest = !isMajorSuccess && (Math.random() < cropFailurePreventionRate);
|
||||
|
||||
var totalAmount = 0;
|
||||
var seedAmount = Get_GlobalValue_nValue("n_FarmPlantingSeedAmount");
|
||||
|
||||
for (var i = 0; i < seedAmount; i++)
|
||||
{
|
||||
var table = Get_MissionTable();
|
||||
Use_Item(table, urod, seedid, needseed);
|
||||
Use_Item(table, urod, args.EnchantID, 1);
|
||||
totalAmount += Random.Range(Tdata.n_MinAmount, Tdata.n_MaxAmount + 1);
|
||||
|
||||
var harvestdata = Get_RandomHarvestData();
|
||||
var farmerval = Get_FarmerValue(urod, "ReduceHarvestTime");
|
||||
var harvestTime = harvestdata.n_HarvestTime - harvestdata.n_HarvestTime * farmerval;
|
||||
|
||||
curSlot.Grade = harvestdata.n_Grade;
|
||||
curSlot.Time = Math.round(harvestTime * 1000) / 1000;
|
||||
curSlot.EnchantID = args.EnchantID;
|
||||
|
||||
Add_MissionCount(table, urod, "PLANTING_CROPS_GRADE_ALL", 0, 1);
|
||||
Add_MissionCount(table, urod, "PLANTING_CROPS_GRADE_ACC", harvestdata.n_Grade, 1);
|
||||
|
||||
Set_JsonUserData(urod);
|
||||
return Get_Return(0, { harvestTime : harvestTime, grade : harvestdata.n_Grade });
|
||||
if (Math.random() < cropFailurePreventionRate)
|
||||
items.push({ itemid: curSlot.EnchantID, amount: 1 });
|
||||
}
|
||||
return Get_Return(3);
|
||||
}
|
||||
|
||||
var harvestAmountUp = Get_FarmerValue("HarvestAmountUp");
|
||||
totalAmount += parseInt(harvestAmountUp);
|
||||
|
||||
var goldFruitRate = Tdata.f_GoldFruitRate + Get_FarmerValue("HarvestAmountUp");
|
||||
var statFruitRate = Tdata.f_StatFruitRate + Get_FarmerValue("StatFruitUp");
|
||||
|
||||
if (isMajorSuccess)
|
||||
{
|
||||
totalAmount = parseInt(totalAmount * 1.5);
|
||||
goldFruitRate *= 1.5;
|
||||
}
|
||||
else if (isFailHarvest)
|
||||
{
|
||||
totalAmount = parseInt(totalAmount * 0.5);
|
||||
goldFruitRate *= 0.5;
|
||||
}
|
||||
|
||||
for (var i = 0; i < totalAmount; i++)
|
||||
{
|
||||
if (DSUtil.RandomTrue(goldFruitRate))
|
||||
items.push({ itemid: 455, amount: 1 });
|
||||
else if (DSUtil.RandomTrue(statFruitRate))
|
||||
items.push({ itemid: EnchantData.n_FruitID, amount: 1 });
|
||||
else
|
||||
items.push({ itemid: Get_GlobalValue_nValue("n_FarmSeedID"), amount: 1 });
|
||||
}
|
||||
|
||||
var table = Get_MissionTable();
|
||||
var itemtable = Get_ItemTable();
|
||||
for (var i = 0; i < items.length; i++)
|
||||
Add_Item(table, itemtable, urod, items[i].itemid, items[i].amount);
|
||||
|
||||
// 슬롯 초기화
|
||||
curSlot.Grade = 0;
|
||||
curSlot.Time = Get_CurKoreaTime();
|
||||
curSlot.EnchantID = 0;
|
||||
|
||||
Add_MissionCount(table, urod, "HARVESTING_CROPS_ACC", 0, 1);
|
||||
Add_MissionCount(table, urod, "HARVESTING_CROPS_ALL", 0, 1);
|
||||
|
||||
Set_JsonUserData(urod);
|
||||
return Get_Return(0, { Items: items });
|
||||
};
|
||||
/////////////////////////////////// 서버 처리
|
||||
|
||||
handlers.Write_UnityInApp = function(args)
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
|
@ -3059,4 +3059,8 @@ public class SC_FarmSlotPlantSeedResult
|
|||
public DateTime harvestTime;
|
||||
public int grade;
|
||||
}
|
||||
public class SC_FarmSlotHarvestResult
|
||||
{
|
||||
public List<ItemSimpleData> Items;
|
||||
}
|
||||
#endregion
|
||||
|
|
@ -2375,6 +2375,42 @@ public class ServerInfo : MyCoroutine
|
|||
Set_Coroutine(() => { Save_Farm_PlantSeed(slot, enchantid, _act); }, 2f);
|
||||
});
|
||||
}
|
||||
public void Save_Farm_Harvest(int slot, Action<SC_FarmSlotHarvestResult> _act)
|
||||
{
|
||||
NetWait.Ins.Set(true);
|
||||
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
|
||||
{
|
||||
FunctionName = MethodBase.GetCurrentMethod().Name,
|
||||
GeneratePlayStreamEvent = true,
|
||||
FunctionParameter = new
|
||||
{
|
||||
Token = m_LoginInfo.EntityToken.EntityToken,
|
||||
Slot = slot,
|
||||
}
|
||||
},
|
||||
result =>
|
||||
{
|
||||
if (result.Error == null)
|
||||
{
|
||||
NetWait.Ins.Set(false);
|
||||
var str_result = result.FunctionResult.ToString();
|
||||
var error = MyErrorCheck(str_result);
|
||||
// (0 성공, 1 실패 (작물 없음), 2 실패 (아직 시간 남음))
|
||||
switch (error)
|
||||
{
|
||||
case 0: _act?.Invoke(JsonConvert.DeserializeObject<SC_FarmSlotHarvestResult>(str_result)); break;
|
||||
case 1: ToastUI.Ins.Set(999900040); break;
|
||||
case 2: ToastUI.Ins.Set(999900039); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
Set_Coroutine(() => { Save_Farm_Harvest(slot, _act); }, 2f);
|
||||
},
|
||||
fail =>
|
||||
{
|
||||
Set_Coroutine(() => { Save_Farm_Harvest(slot, _act); }, 2f);
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 우편
|
||||
|
|
|
|||
|
|
@ -89,68 +89,88 @@ public class FarmSlotCard : CardBase
|
|||
OnClick_Get();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnClick_Get()
|
||||
{
|
||||
if (m_Data.Grade > 0)
|
||||
{
|
||||
List<ItemSimpleData> items = new List<ItemSimpleData>();
|
||||
|
||||
var sdata = ServerInfo.Ins.m_ServerData;
|
||||
var Tdata = table_harvestconfig.Ins.Get_Data_orNull(m_Data.Grade);
|
||||
var EnchantData = table_enchanlist.Ins.Get_Data_orNull(m_Data.EnchantID);
|
||||
var ainfo = MyValue.Get_ActorStatInfoorNull(eRole.PC);
|
||||
|
||||
bool isMajorSuccess = DSUtil.RandomTrue(ainfo.Get_Stat(eStat.MajorSuccess));
|
||||
bool FailHarvest = !isMajorSuccess && DSUtil.RandomTrue(0.1d - ainfo.Get_Stat(eStat.CropFailurePrevention));
|
||||
|
||||
var totalAmount = 0;
|
||||
for (int i = 0; i < table_GlobalValue.Ins.Get_Int("n_FarmPlantingSeedAmount"); i++)
|
||||
//if (m_Data.Grade > 0 && m_Data.Get_RemainSec() <= 0)
|
||||
ServerInfo.Ins.Save_Farm_Harvest(m_Data.Slot, result =>
|
||||
{
|
||||
totalAmount += Random.Range(Tdata.n_MinAmount, Tdata.n_MaxAmount + 1);
|
||||
if (DSUtil.RandomTrue(ainfo.Get_Stat(eStat.Reclaim_Used_Resources)))
|
||||
items.Add(new ItemSimpleData { itemid = m_Data.EnchantID, amount = 1 });
|
||||
}
|
||||
totalAmount += (int)ainfo.Get_Stat(eStat.HarvestAmountUp);
|
||||
var sdata = ServerInfo.Ins.m_ServerData;
|
||||
var items = result.Items;
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
sdata.Add_Item(items[i].itemid, items[i].amount);
|
||||
|
||||
var goldFruitRate = Tdata.f_GoldFruitRate + ainfo.Get_Stat(eStat.GoldFruitUp);
|
||||
var statFruitRate = Tdata.f_StatFruitRate + ainfo.Get_Stat(eStat.StatFruitUp);
|
||||
sdata.Add_MissionCount(ePurpose.HARVESTING_CROPS_ACC);
|
||||
sdata.Add_MissionCount(ePurpose.HARVESTING_CROPS_ALL);
|
||||
|
||||
if (isMajorSuccess)
|
||||
{
|
||||
ToastUI.Ins.Set(427);
|
||||
totalAmount = (int)(totalAmount * 1.5);
|
||||
goldFruitRate *= 1.5f;
|
||||
}
|
||||
else if (FailHarvest)
|
||||
{
|
||||
ToastUI.Ins.Set(428);
|
||||
totalAmount -= (int)(totalAmount * 0.5);
|
||||
goldFruitRate *= 0.5f;
|
||||
}
|
||||
|
||||
for (int i = 0; i < totalAmount; i++)
|
||||
{
|
||||
if (DSUtil.RandomTrue(goldFruitRate))
|
||||
{ // 신비 열매로 변할 확률
|
||||
items.Add(new ItemSimpleData { itemid = 455, amount = 1 });
|
||||
}
|
||||
else if (DSUtil.RandomTrue(statFruitRate))
|
||||
{ // 스탯 열매로 변할 확률
|
||||
items.Add(new ItemSimpleData { itemid = EnchantData.n_FruitID, amount = 1 });
|
||||
}
|
||||
else
|
||||
items.Add(new ItemSimpleData { itemid = table_GlobalValue.Ins.Get_Int("n_FarmSeedID"), amount = 1 });
|
||||
}
|
||||
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
sdata.Add_Item(items[i].itemid, items[i].amount);
|
||||
|
||||
sdata.Add_MissionCount(ePurpose.HARVESTING_CROPS_ACC);
|
||||
sdata.Add_MissionCount(ePurpose.HARVESTING_CROPS_ALL);
|
||||
|
||||
ObtainItemUI.Ins.Set(items);
|
||||
sdata.Set_FarmSlot(m_Data.Slot, 0, ServerInfo.ServerTime, 0);
|
||||
FarmSlotUI.Ins.Set();
|
||||
}
|
||||
ObtainItemUI.Ins.Set(items);
|
||||
sdata.Set_FarmSlot(m_Data.Slot, 0, ServerInfo.ServerTime, 0);
|
||||
FarmSlotUI.Ins.Set();
|
||||
});
|
||||
}
|
||||
// 클라 기반
|
||||
//public void OnClick_Get()
|
||||
//{
|
||||
// if (m_Data.Grade > 0)
|
||||
// {
|
||||
// List<ItemSimpleData> items = new List<ItemSimpleData>();
|
||||
|
||||
// var sdata = ServerInfo.Ins.m_ServerData;
|
||||
// var Tdata = table_harvestconfig.Ins.Get_Data_orNull(m_Data.Grade);
|
||||
// var EnchantData = table_enchanlist.Ins.Get_Data_orNull(m_Data.EnchantID);
|
||||
// var ainfo = MyValue.Get_ActorStatInfoorNull(eRole.PC);
|
||||
|
||||
// bool isMajorSuccess = DSUtil.RandomTrue(ainfo.Get_Stat(eStat.MajorSuccess));
|
||||
// bool FailHarvest = !isMajorSuccess && DSUtil.RandomTrue(0.1d - ainfo.Get_Stat(eStat.CropFailurePrevention));
|
||||
|
||||
// var totalAmount = 0;
|
||||
// for (int i = 0; i < table_GlobalValue.Ins.Get_Int("n_FarmPlantingSeedAmount"); i++)
|
||||
// {
|
||||
// totalAmount += Random.Range(Tdata.n_MinAmount, Tdata.n_MaxAmount + 1);
|
||||
// if (DSUtil.RandomTrue(ainfo.Get_Stat(eStat.Reclaim_Used_Resources)))
|
||||
// items.Add(new ItemSimpleData { itemid = m_Data.EnchantID, amount = 1 });
|
||||
// }
|
||||
// totalAmount += (int)ainfo.Get_Stat(eStat.HarvestAmountUp);
|
||||
|
||||
// var goldFruitRate = Tdata.f_GoldFruitRate + ainfo.Get_Stat(eStat.GoldFruitUp);
|
||||
// var statFruitRate = Tdata.f_StatFruitRate + ainfo.Get_Stat(eStat.StatFruitUp);
|
||||
|
||||
// if (isMajorSuccess)
|
||||
// {
|
||||
// ToastUI.Ins.Set(427);
|
||||
// totalAmount = (int)(totalAmount * 1.5);
|
||||
// goldFruitRate *= 1.5f;
|
||||
// }
|
||||
// else if (FailHarvest)
|
||||
// {
|
||||
// ToastUI.Ins.Set(428);
|
||||
// totalAmount -= (int)(totalAmount * 0.5);
|
||||
// goldFruitRate *= 0.5f;
|
||||
// }
|
||||
|
||||
// for (int i = 0; i < totalAmount; i++)
|
||||
// {
|
||||
// if (DSUtil.RandomTrue(goldFruitRate))
|
||||
// { // 신비 열매로 변할 확률
|
||||
// items.Add(new ItemSimpleData { itemid = 455, amount = 1 });
|
||||
// }
|
||||
// else if (DSUtil.RandomTrue(statFruitRate))
|
||||
// { // 스탯 열매로 변할 확률
|
||||
// items.Add(new ItemSimpleData { itemid = EnchantData.n_FruitID, amount = 1 });
|
||||
// }
|
||||
// else
|
||||
// items.Add(new ItemSimpleData { itemid = table_GlobalValue.Ins.Get_Int("n_FarmSeedID"), amount = 1 });
|
||||
// }
|
||||
|
||||
// for (int i = 0; i < items.Count; i++)
|
||||
// sdata.Add_Item(items[i].itemid, items[i].amount);
|
||||
|
||||
// sdata.Add_MissionCount(ePurpose.HARVESTING_CROPS_ACC);
|
||||
// sdata.Add_MissionCount(ePurpose.HARVESTING_CROPS_ALL);
|
||||
|
||||
// ObtainItemUI.Ins.Set(items);
|
||||
// sdata.Set_FarmSlot(m_Data.Slot, 0, ServerInfo.ServerTime, 0);
|
||||
// FarmSlotUI.Ins.Set();
|
||||
// }
|
||||
//}
|
||||
}
|
||||
Loading…
Reference in New Issue