서버 아이템 획득 및 사용 클라와 똑같이

This commit is contained in:
Ino 2025-06-30 16:33:00 +09:00
parent 95b3255c6f
commit 19e496144b
2 changed files with 116 additions and 19 deletions

View File

@ -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]) var itemdata = itemtable.find(f => f.n_ItemID === itemid);
urod.Item[itemid] = [0,0,0]; if (!itemdata) {
urod.Item[itemid][0] += amount; log.error("Add_Item - Invalid item ID: " + itemid);
if (!isCheat) urod.Item[itemid][1] += amount; // 총 획득량 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) function Use_Item(urod, itemid, amount)
{ {
@ -251,6 +300,47 @@ function Use_Item(urod, itemid, amount)
return true; 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; return false;
} }
function Add_MissionCount(table, urod, purpose, conditionvalue, count, setValue) { 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) if (table[i].e_MissionConditionType == purpose)
{ {
matchingMissions.push(table[i]); 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) if (guideData && guideData.e_MissionConditionType == purpose)
urod.Common[11] += count; 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) function Add_MobCollection(urod, id, count)
{ {
if (!urod.MobKill[id]) urod.MobKill[id] = 0; if (!urod.MobKill[id]) urod.MobKill[id] = 0;
@ -307,7 +402,7 @@ function Get_Exp(lv) {
handlers.Save_CheatItem = function(args) handlers.Save_CheatItem = function(args)
{ {
var urod = Get_JsonUserData(); 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); Set_JsonUserData(urod);
} }
@ -325,6 +420,7 @@ handlers.Get_MailReward = function(args)
var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data; var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data;
if (!CheckNullOrEmpty(userdata.Mail)) if (!CheckNullOrEmpty(userdata.Mail))
{ {
var itemtable = Get_ItemTable();
var urod = Get_JsonUserData(); var urod = Get_JsonUserData();
var mailjson = JSON.parse(userdata.Mail.Value); var mailjson = JSON.parse(userdata.Mail.Value);
var existmail = false; var existmail = false;
@ -335,7 +431,7 @@ handlers.Get_MailReward = function(args)
if (maildate.getTime() === getdate.getTime()) if (maildate.getTime() === getdate.getTime())
{ {
existmail = true; existmail = true;
Add_Item(urod, mailjson[i].ItemID, mailjson[i].Amount); Add_Item(itemtable, urod, mailjson[i].ItemID, mailjson[i].Amount);
delete mailjson[i]; delete mailjson[i];
break; break;
} }
@ -362,10 +458,11 @@ handlers.Get_AllMail = function(args)
var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data; var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data;
if (!CheckNullOrEmpty(userdata.Mail)) if (!CheckNullOrEmpty(userdata.Mail))
{ {
var itemtable = Get_ItemTable();
var urod = Get_JsonUserData(); var urod = Get_JsonUserData();
var mailjson = JSON.parse(userdata.Mail.Value); var mailjson = JSON.parse(userdata.Mail.Value);
for (var i in mailjson) 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": "[]"} }); server.UpdateUserData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"Mail": "[]"} });
Set_JsonUserData(urod); Set_JsonUserData(urod);
@ -382,6 +479,7 @@ handlers.Save_StageResult = function(args) {
var urod = Get_JsonUserData(); var urod = Get_JsonUserData();
var table = Get_MissionTable(); var table = Get_MissionTable();
var itemtable = Get_ItemTable();
// 경험치 처리 // 경험치 처리
urod.PC.Exp += args.Exp; urod.PC.Exp += args.Exp;
@ -394,11 +492,8 @@ handlers.Save_StageResult = function(args) {
for (var key in items) { for (var key in items) {
var itemId = key; var itemId = key;
var itemCount = items[key]; var itemCount = items[key];
if (!urod.Item[itemId]) urod.Item[itemId] = [0, 0, 0]; Add_Item(itemtable, urod, itemId, itemCount);
urod.Item[itemId][0] += itemCount;
urod.Item[itemId][1] += itemCount;
Add_MissionCount(table, urod, "TAKE_GOODS", itemId, itemCount, false); Add_MissionCount(table, urod, "TAKE_GOODS", itemId, itemCount, false);
Add_MissionCount(table, urod, "TAKE_GOODS_LIMIT", 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", 2, elitemobcount, false);
Add_MissionCount(table, urod, "KILL_MONSTER_GRADE_ACC", 3, bossmobcount, false); Add_MissionCount(table, urod, "KILL_MONSTER_GRADE_ACC", 3, bossmobcount, false);
Set_JsonUserData(urod); Set_JsonUserData(urod);
return Get_Return(0); return Get_Return(0);
} }
@ -1169,6 +1262,11 @@ function Get_CouponTable()
var table = JSON.parse(server.GetTitleInternalData("CouponTable").Data.CouponTable); var table = JSON.parse(server.GetTitleInternalData("CouponTable").Data.CouponTable);
return table.servertable_coupon; return table.servertable_coupon;
} }
function Get_ItemTable()
{
var titleData = server.GetTitleInternalData({ Keys: ["ItemTable"] });
return JSON.parse(titleData.Data.ItemTable);
}
function Get_ShopTable() function Get_ShopTable()
{ {
var titleData = server.GetTitleInternalData({ Keys: ["ShopTable"] }); var titleData = server.GetTitleInternalData({ Keys: ["ShopTable"] });

View File

@ -1945,7 +1945,7 @@ public partial class ServerData
Equipment.Add(key, new List<ObscuredDouble> { amount, 0, 0 }); Equipment.Add(key, new List<ObscuredDouble> { amount, 0, 0 });
else else
Equipment[key][0] += amount; Equipment[key][0] += amount;
Equipment[key][1].RandomizeCryptoKey(); Equipment[key][0].RandomizeCryptoKey();
break; break;
case eItem.Skill: Add_Skill(id, (int)amount); 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] -= amount;
Enchant[key][0].RandomizeCryptoKey(); Enchant[key][0].RandomizeCryptoKey();
Enchant[key][3] -= amount; Enchant[key][3] += amount;
Enchant[key][3].RandomizeCryptoKey(); Enchant[key][3].RandomizeCryptoKey();
} }
break; break;
@ -2068,7 +2068,6 @@ public partial class ServerData
} }
public double Get_ItemAmount(int id) public double Get_ItemAmount(int id)
{ {
var itemdata = table_itemlist.Ins.Get_Data(id);
var key = Get_Key(id); var key = Get_Key(id);
if (Item.ContainsKey(key)) return Item[key][0]; if (Item.ContainsKey(key)) return Item[key][0];
else if (Equipment.ContainsKey(key)) return Equipment[key][0]; else if (Equipment.ContainsKey(key)) return Equipment[key][0];