diff --git a/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js b/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js index 60e044c3e..6d31c6311 100644 --- a/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js +++ b/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js @@ -233,12 +233,61 @@ function Get_Return(errorval, add) { } */ } -function Add_Item(urod, itemid, amount, isCheat) +function Add_Item(itemtable, urod, itemid, amount, isCheat) { - if (!urod.Item[itemid]) - urod.Item[itemid] = [0,0,0]; - urod.Item[itemid][0] += amount; - if (!isCheat) urod.Item[itemid][1] += amount; // 총 획득량 + var itemdata = itemtable.find(f => f.n_ItemID === itemid); + if (!itemdata) { + log.error("Add_Item - Invalid item ID: " + itemid); + return; + } + + log.info("add item : " + itemid + ', ' + amount + ", " + itemdata.e_ItemType); + + switch (itemdata.e_ItemType) + { + default: + if (!urod.Item[itemid]) urod.Item[itemid] = [0, 0, 0]; + urod.Item[itemid][0] += amount; + if (!isCheat) urod.Item[itemid][1] += amount; // 총 획득량 + break; + + case "Weapon": + case "Armor": + case "Helmet": + case "Extra": + case "Necklace": + case "Ring": + if (!urod.Equipment[itemid]) urod.Equipment[itemid] = [0, 0, 0]; + urod.Equipment[itemid][0] += amount; + Add_Collection(urod, itemid, amount); + break; + + case "Skill": + if (!urod.Skill[itemid]) urod.Skill[itemid] = [amount - 1,1,0]; // 레벨 증가 + else urod.Skill[itemid][0] += amount; + break; + + case "PC": + if (!urod.PC.Obtain.includes(itemid)) + urod.PC.Obtain.push(itemid); + break; + + case "Pet": + if (!urod.Pet[itemid]) urod.Pet[itemid] = [0, 1]; // [레벨, 획득 수] + urod.Pet[itemid][0] += amount; + break; + + case "Enchant": + if (!urod.Enchant[itemid]) urod.Enchant[itemid] = [0, 0, 0, 0]; + urod.Enchant[itemid][0] += amount; + urod.Enchant[itemid][2] += amount; + break; + + case "Relic": + if (!urod.Relic[itemid]) urod.Relic[itemid] = [0, 0, 0]; + urod.Relic[itemid][0] += amount; + break; + } } function Use_Item(urod, itemid, amount) { @@ -251,6 +300,47 @@ function Use_Item(urod, itemid, amount) return true; } } + else if (urod.Equipment[itemid]) + { + if (urod.Equipment[itemid][0] >= amount) + { + urod.Equipment[itemid][0] -= amount; + return true; + } + } + else if (urod.Skill[itemid]) + { + if (urod.Skill[itemid][0] >= amount) + { + urod.Skill[itemid][0] -= amount; + return true; + } + } + else if (urod.Pet[itemid]) + { + if (urod.Pet[itemid][0] >= amount) + { + urod.Pet[itemid][0] -= amount; + return true; + } + } + else if (urod.Enchant[itemid]) + { + if (urod.Enchant[itemid][0] >= amount) + { + urod.Enchant[itemid][0] -= amount; + urod.Enchant[itemid][3] += amount; + return true; + } + } + else if (urod.Relic[itemid]) + { + if (urod.Relic[itemid][0] >= amount) + { + urod.Relic[itemid][0] -= amount; + return true; + } + } return false; } function Add_MissionCount(table, urod, purpose, conditionvalue, count, setValue) { @@ -264,7 +354,7 @@ function Add_MissionCount(table, urod, purpose, conditionvalue, count, setValue) if (table[i].e_MissionConditionType == purpose) { matchingMissions.push(table[i]); - log.info(purpose + " : " + table[i].e_MissionConditionType + ", " + table[i].n_MissionGroupId + ", " + table[i].n_MissionIndex); + //log.info(purpose + " : " + table[i].e_MissionConditionType + ", " + table[i].n_MissionGroupId + ", " + table[i].n_MissionIndex); } } @@ -292,6 +382,11 @@ function Add_MissionCount(table, urod, purpose, conditionvalue, count, setValue) if (guideData && guideData.e_MissionConditionType == purpose) urod.Common[11] += count; } +function Add_Collection(urod, id, count) +{ + if (!urod.Collection[id]) urod.Collection[id] = 0; + urod.Collection[id] += count; +} function Add_MobCollection(urod, id, count) { if (!urod.MobKill[id]) urod.MobKill[id] = 0; @@ -307,7 +402,7 @@ function Get_Exp(lv) { handlers.Save_CheatItem = function(args) { var urod = Get_JsonUserData(); - Add_Item(urod, args.ID, args.Amount, true); + Add_Item(Get_ItemTable(), urod, args.ID, args.Amount, true); Set_JsonUserData(urod); } @@ -325,6 +420,7 @@ handlers.Get_MailReward = function(args) var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data; if (!CheckNullOrEmpty(userdata.Mail)) { + var itemtable = Get_ItemTable(); var urod = Get_JsonUserData(); var mailjson = JSON.parse(userdata.Mail.Value); var existmail = false; @@ -335,7 +431,7 @@ handlers.Get_MailReward = function(args) if (maildate.getTime() === getdate.getTime()) { existmail = true; - Add_Item(urod, mailjson[i].ItemID, mailjson[i].Amount); + Add_Item(itemtable, urod, mailjson[i].ItemID, mailjson[i].Amount); delete mailjson[i]; break; } @@ -362,10 +458,11 @@ handlers.Get_AllMail = function(args) var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data; if (!CheckNullOrEmpty(userdata.Mail)) { + var itemtable = Get_ItemTable(); var urod = Get_JsonUserData(); var mailjson = JSON.parse(userdata.Mail.Value); for (var i in mailjson) - Add_Item(urod, mailjson[i].ItemID, mailjson[i].Amount); + Add_Item(itemtable, urod, mailjson[i].ItemID, mailjson[i].Amount); server.UpdateUserData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"Mail": "[]"} }); Set_JsonUserData(urod); @@ -382,6 +479,7 @@ handlers.Save_StageResult = function(args) { var urod = Get_JsonUserData(); var table = Get_MissionTable(); + var itemtable = Get_ItemTable(); // 경험치 처리 urod.PC.Exp += args.Exp; @@ -394,11 +492,8 @@ handlers.Save_StageResult = function(args) { for (var key in items) { var itemId = key; var itemCount = items[key]; - - if (!urod.Item[itemId]) urod.Item[itemId] = [0, 0, 0]; - - urod.Item[itemId][0] += itemCount; - urod.Item[itemId][1] += itemCount; + + Add_Item(itemtable, urod, itemId, itemCount); Add_MissionCount(table, urod, "TAKE_GOODS", itemId, itemCount, false); Add_MissionCount(table, urod, "TAKE_GOODS_LIMIT", itemId, itemCount, false); @@ -440,8 +535,6 @@ handlers.Save_StageResult = function(args) { Add_MissionCount(table, urod, "KILL_MONSTER_GRADE_ACC", 2, elitemobcount, false); Add_MissionCount(table, urod, "KILL_MONSTER_GRADE_ACC", 3, bossmobcount, false); - - Set_JsonUserData(urod); return Get_Return(0); } @@ -1169,6 +1262,11 @@ function Get_CouponTable() var table = JSON.parse(server.GetTitleInternalData("CouponTable").Data.CouponTable); return table.servertable_coupon; } +function Get_ItemTable() +{ + var titleData = server.GetTitleInternalData({ Keys: ["ItemTable"] }); + return JSON.parse(titleData.Data.ItemTable); +} function Get_ShopTable() { var titleData = server.GetTitleInternalData({ Keys: ["ShopTable"] }); diff --git a/Assets/Script/Server/ServerClass.cs b/Assets/Script/Server/ServerClass.cs index b929e4fcb..a200d5a85 100644 --- a/Assets/Script/Server/ServerClass.cs +++ b/Assets/Script/Server/ServerClass.cs @@ -1945,7 +1945,7 @@ public partial class ServerData Equipment.Add(key, new List { amount, 0, 0 }); else Equipment[key][0] += amount; - Equipment[key][1].RandomizeCryptoKey(); + Equipment[key][0].RandomizeCryptoKey(); break; case eItem.Skill: Add_Skill(id, (int)amount); break; @@ -2042,7 +2042,7 @@ public partial class ServerData { Enchant[key][0] -= amount; Enchant[key][0].RandomizeCryptoKey(); - Enchant[key][3] -= amount; + Enchant[key][3] += amount; Enchant[key][3].RandomizeCryptoKey(); } break; @@ -2068,7 +2068,6 @@ public partial class ServerData } public double Get_ItemAmount(int id) { - var itemdata = table_itemlist.Ins.Get_Data(id); var key = Get_Key(id); if (Item.ContainsKey(key)) return Item[key][0]; else if (Equipment.ContainsKey(key)) return Equipment[key][0];