가챠 즉시 지급 시스템 수정
This commit is contained in:
parent
1d03d1117e
commit
ca8d7d59d6
|
|
@ -35,13 +35,11 @@ namespace Server.Manager
|
||||||
user.pay_cash += rewardData.return_count;
|
user.pay_cash += rewardData.return_count;
|
||||||
break;
|
break;
|
||||||
case eRewardItemType.character:
|
case eRewardItemType.character:
|
||||||
for (int n = 0; n < rewardData.return_count; n++)
|
|
||||||
{
|
|
||||||
DeckUnitInfo deckUnitInfo = new DeckUnitInfo();
|
DeckUnitInfo deckUnitInfo = new DeckUnitInfo();
|
||||||
deckUnitInfo.user_id = user.id;
|
deckUnitInfo.user_id = user.id;
|
||||||
deckUnitInfo.unit_data_id = rewardData.return_item;
|
deckUnitInfo.unit_data_id = rewardData.return_item;
|
||||||
|
deckUnitInfo.count = rewardData.return_count;
|
||||||
box.Add(deckUnitInfo);
|
box.Add(deckUnitInfo);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case eRewardItemType.equipment:
|
case eRewardItemType.equipment:
|
||||||
Random rand = new Random();
|
Random rand = new Random();
|
||||||
|
|
@ -56,11 +54,22 @@ namespace Server.Manager
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case eRewardItemType.consumable:
|
case eRewardItemType.consumable:
|
||||||
|
ConsumableItemData consumableItemData = Statics.consumableItemExcel.getConsumableItemData(rewardData.return_item);
|
||||||
|
switch (consumableItemData.item_type)
|
||||||
|
{
|
||||||
|
case eItemType.exp:
|
||||||
|
case eItemType.package:
|
||||||
ConsumableItem consumableItem = new ConsumableItem();
|
ConsumableItem consumableItem = new ConsumableItem();
|
||||||
consumableItem.user_id = user.id;
|
consumableItem.user_id = user.id;
|
||||||
consumableItem.consumable_item_data_id = rewardData.return_item;
|
consumableItem.consumable_item_data_id = rewardData.return_item;
|
||||||
consumableItem.count = rewardData.return_count;
|
consumableItem.count = rewardData.return_count;
|
||||||
box.Add(consumableItem);
|
box.Add(consumableItem);
|
||||||
|
break;
|
||||||
|
case eItemType.random:
|
||||||
|
randomItem(consumableItemData.reward, rewardData.return_count);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case eRewardItemType.etc:
|
case eRewardItemType.etc:
|
||||||
EtcItem etcItem = new EtcItem();
|
EtcItem etcItem = new EtcItem();
|
||||||
|
|
@ -71,8 +80,6 @@ namespace Server.Manager
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new RuntimeException("Not case", Error.nodata);
|
throw new RuntimeException("Not case", Error.nodata);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -85,6 +92,169 @@ namespace Server.Manager
|
||||||
box.Add(deckUnitInfo);
|
box.Add(deckUnitInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void randomItem(int group, int count)
|
||||||
|
{
|
||||||
|
List<RandomRewardData> randomRewardDatas = Statics.randomRewardExcel.getRandomRewardDataGroup(group);
|
||||||
|
|
||||||
|
int maxProb = 0;
|
||||||
|
List<int> zero = new List<int>();
|
||||||
|
List<int> ints = new List<int>();
|
||||||
|
|
||||||
|
//확정보상부터 지급
|
||||||
|
for (int n = 0; n < randomRewardDatas.Count; n++)
|
||||||
|
{
|
||||||
|
if (randomRewardDatas[n].prob == -1)
|
||||||
|
{
|
||||||
|
//보상지급
|
||||||
|
switch (randomRewardDatas[n].reward_item_type)
|
||||||
|
{
|
||||||
|
case eRewardItemType.gold:
|
||||||
|
user.gold += (randomRewardDatas[n].return_count * count);
|
||||||
|
break;
|
||||||
|
case eRewardItemType.freecash:
|
||||||
|
user.free_cash += (randomRewardDatas[n].return_count * count);
|
||||||
|
break;
|
||||||
|
case eRewardItemType.paycash:
|
||||||
|
user.pay_cash += (randomRewardDatas[n].return_count * count);
|
||||||
|
break;
|
||||||
|
case eRewardItemType.character:
|
||||||
|
DeckUnitInfo deckUnitInfo = new DeckUnitInfo();
|
||||||
|
deckUnitInfo.user_id = user.id;
|
||||||
|
deckUnitInfo.unit_data_id = randomRewardDatas[n].reward;
|
||||||
|
deckUnitInfo.count = (randomRewardDatas[n].return_count * count);
|
||||||
|
box.Add(deckUnitInfo);
|
||||||
|
break;
|
||||||
|
case eRewardItemType.equipment:
|
||||||
|
Random rand = new Random();
|
||||||
|
int reward_count = (randomRewardDatas[n].return_count * count);
|
||||||
|
for (int m = 0; m < reward_count; m++)
|
||||||
|
{
|
||||||
|
Equipment equipment = new Equipment();
|
||||||
|
equipment.user_id = user.id;
|
||||||
|
equipment.equip_unit = 0;
|
||||||
|
equipment.rand_stats = rand.Next(5);
|
||||||
|
equipment.equipment_data_id = randomRewardDatas[n].reward;
|
||||||
|
box.Add(equipment);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case eRewardItemType.consumable:
|
||||||
|
//패키지에서 나온 아이탬은 절대 가챠를 돌리지 않고 아이템 형태로 인벤 지급
|
||||||
|
ConsumableItem consumableItem = new ConsumableItem();
|
||||||
|
consumableItem.user_id = user.id;
|
||||||
|
consumableItem.consumable_item_data_id = randomRewardDatas[n].reward;
|
||||||
|
consumableItem.count = (randomRewardDatas[n].return_count * count);
|
||||||
|
box.Add(consumableItem);
|
||||||
|
break;
|
||||||
|
case eRewardItemType.etc:
|
||||||
|
EtcItem etcItem = new EtcItem();
|
||||||
|
etcItem.user_id = user.id;
|
||||||
|
etcItem.etc_item_data_id = randomRewardDatas[n].reward;
|
||||||
|
etcItem.count = (randomRewardDatas[n].return_count * count);
|
||||||
|
box.Add(etcItem);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new RuntimeException("Not case", Error.nodata);
|
||||||
|
}
|
||||||
|
//지급된 보상은 가챠에서 제외
|
||||||
|
randomRewardDatas.RemoveAt(n);
|
||||||
|
n--;
|
||||||
|
}
|
||||||
|
else if (randomRewardDatas[n].prob == 0)
|
||||||
|
{
|
||||||
|
zero.Add(n);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
maxProb += randomRewardDatas[n].prob;
|
||||||
|
for(int m = 0; m < randomRewardDatas[n].prob; m++)
|
||||||
|
{
|
||||||
|
ints.Add(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//모든것이 확정보상일경우를 대비
|
||||||
|
if(randomRewardDatas.Count != 0)
|
||||||
|
{
|
||||||
|
Random rand = new Random();
|
||||||
|
if (maxProb == 0)
|
||||||
|
{
|
||||||
|
maxProb = randomRewardDatas.Count;
|
||||||
|
for (int n = 0; n < maxProb; n++)
|
||||||
|
{
|
||||||
|
ints.Add(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
maxProb = 10000;
|
||||||
|
|
||||||
|
|
||||||
|
for (int n = 0; n < count; n++)
|
||||||
|
{
|
||||||
|
int select = rand.Next(10000);
|
||||||
|
int selectItem = 0;
|
||||||
|
if(select < ints.Count)
|
||||||
|
{
|
||||||
|
selectItem = ints[select];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
select = rand.Next(zero.Count);
|
||||||
|
selectItem = zero[select];
|
||||||
|
}
|
||||||
|
switch (randomRewardDatas[selectItem].reward_item_type)
|
||||||
|
{
|
||||||
|
case eRewardItemType.gold:
|
||||||
|
user.gold += (randomRewardDatas[selectItem].return_count * count);
|
||||||
|
break;
|
||||||
|
case eRewardItemType.freecash:
|
||||||
|
user.free_cash += (randomRewardDatas[selectItem].return_count * count);
|
||||||
|
break;
|
||||||
|
case eRewardItemType.paycash:
|
||||||
|
user.pay_cash += (randomRewardDatas[selectItem].return_count * count);
|
||||||
|
break;
|
||||||
|
case eRewardItemType.character:
|
||||||
|
DeckUnitInfo deckUnitInfo = new DeckUnitInfo();
|
||||||
|
deckUnitInfo.user_id = user.id;
|
||||||
|
deckUnitInfo.unit_data_id = randomRewardDatas[selectItem].reward;
|
||||||
|
deckUnitInfo.count = (randomRewardDatas[selectItem].return_count * count);
|
||||||
|
box.Add(deckUnitInfo);
|
||||||
|
break;
|
||||||
|
case eRewardItemType.equipment:
|
||||||
|
int reward_count = (randomRewardDatas[selectItem].return_count * count);
|
||||||
|
for (int m = 0; m < reward_count; m++)
|
||||||
|
{
|
||||||
|
Equipment equipment = new Equipment();
|
||||||
|
equipment.user_id = user.id;
|
||||||
|
equipment.equip_unit = 0;
|
||||||
|
equipment.rand_stats = rand.Next(5);
|
||||||
|
equipment.equipment_data_id = randomRewardDatas[selectItem].reward;
|
||||||
|
box.Add(equipment);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case eRewardItemType.consumable:
|
||||||
|
//패키지에서 나온 아이탬은 절대 가챠를 돌리지 않고 아이템 형태로 인벤 지급
|
||||||
|
ConsumableItem consumableItem = new ConsumableItem();
|
||||||
|
consumableItem.user_id = user.id;
|
||||||
|
consumableItem.consumable_item_data_id = randomRewardDatas[selectItem].reward;
|
||||||
|
consumableItem.count = (randomRewardDatas[selectItem].return_count * count);
|
||||||
|
box.Add(consumableItem);
|
||||||
|
break;
|
||||||
|
case eRewardItemType.etc:
|
||||||
|
EtcItem etcItem = new EtcItem();
|
||||||
|
etcItem.user_id = user.id;
|
||||||
|
etcItem.etc_item_data_id = randomRewardDatas[selectItem].reward;
|
||||||
|
etcItem.count = (randomRewardDatas[selectItem].return_count * count);
|
||||||
|
box.Add(etcItem);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new RuntimeException("Not case", Error.nodata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//리워드 아이탬 획득 코드 작성
|
//리워드 아이탬 획득 코드 작성
|
||||||
//패키지 구매시 패키지를 전부 풀어서 아이탬을 획득하는 코드 작성
|
//패키지 구매시 패키지를 전부 풀어서 아이탬을 획득하는 코드 작성
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ namespace Server.SQL
|
||||||
public long index { get; set; }
|
public long index { get; set; }
|
||||||
public string name { get; set; }
|
public string name { get; set; }
|
||||||
public eItemType item_type { get; set; }
|
public eItemType item_type { get; set; }
|
||||||
public string reward { get; set; }
|
public int reward { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum eItemType
|
public enum eItemType
|
||||||
|
|
@ -43,7 +43,7 @@ namespace Server.SQL
|
||||||
consumableItemData.index = item.Key;
|
consumableItemData.index = item.Key;
|
||||||
consumableItemData.name = (string)item.Value["name"];
|
consumableItemData.name = (string)item.Value["name"];
|
||||||
consumableItemData.item_type = (eItemType)item.Value["item_type"];
|
consumableItemData.item_type = (eItemType)item.Value["item_type"];
|
||||||
consumableItemData.reward = item.Value["reward"].ToString();
|
consumableItemData.reward = (int)item.Value["reward"];
|
||||||
this.consumableItemData.Add(item.Key, consumableItemData);
|
this.consumableItemData.Add(item.Key, consumableItemData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using Server.Git;
|
using Server.Git;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace Server.SQL
|
namespace Server.SQL
|
||||||
|
|
@ -10,6 +11,8 @@ namespace Server.SQL
|
||||||
public int group { get; set; }
|
public int group { get; set; }
|
||||||
public long reward { get; set; }
|
public long reward { get; set; }
|
||||||
public int prob { get; set; }
|
public int prob { get; set; }
|
||||||
|
public eRewardItemType reward_item_type { get; set; }
|
||||||
|
public int return_count { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RandomRewardDataExcel
|
public class RandomRewardDataExcel
|
||||||
|
|
@ -27,6 +30,20 @@ namespace Server.SQL
|
||||||
{
|
{
|
||||||
return randomRewardData.Values.ToList();
|
return randomRewardData.Values.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<RandomRewardData> getRandomRewardDataGroup(int group)
|
||||||
|
{
|
||||||
|
List<RandomRewardData> get = new List<RandomRewardData>();
|
||||||
|
foreach (var item in randomRewardData)
|
||||||
|
{
|
||||||
|
if (item.Value.group == group)
|
||||||
|
{
|
||||||
|
get.Add(item.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
|
||||||
public void init(Sheet data)
|
public void init(Sheet data)
|
||||||
{
|
{
|
||||||
this.randomRewardData = new Dictionary<long, RandomRewardData>();
|
this.randomRewardData = new Dictionary<long, RandomRewardData>();
|
||||||
|
|
@ -37,6 +54,8 @@ namespace Server.SQL
|
||||||
randomRewardData.group = (int)item.Value["group"];
|
randomRewardData.group = (int)item.Value["group"];
|
||||||
randomRewardData.reward = (int)item.Value["reward"];
|
randomRewardData.reward = (int)item.Value["reward"];
|
||||||
randomRewardData.prob = (int)item.Value["prob"];
|
randomRewardData.prob = (int)item.Value["prob"];
|
||||||
|
randomRewardData.reward_item_type = (eRewardItemType)item.Value["reward_item_type"];
|
||||||
|
randomRewardData.return_count = (int)item.Value["return_count"];
|
||||||
this.randomRewardData.Add(item.Key, randomRewardData);
|
this.randomRewardData.Add(item.Key, randomRewardData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue