아이템 사용 시 아이템 사용 미션

Get_Error 호출에서 api 호출을 하나 줄이기 위해 토큰 저장을 유저 데이터에 하자
This commit is contained in:
Ino 2025-07-01 01:47:49 +09:00
parent 19e496144b
commit e18e337442
2 changed files with 57 additions and 39 deletions

View File

@ -85,23 +85,23 @@ handlers.aaTest = function(args)
// 에러 정리 : 0 정상, 1 채팅 금지 유저, 2 서버 점검, 3 잘못된 우편을 // 에러 정리 : 0 정상, 1 채팅 금지 유저, 2 서버 점검, 3 잘못된 우편을
// -1 중복 로그인, -2 금지 유저 // -1 중복 로그인, -2 금지 유저
function Get_Error(token) function Get_Error(readonlydata, token)
{ {
var uidata = server.GetUserInternalData({ PlayFabId: currentPlayerId }).Data; const PassIDs = [ "20037ADFE4BC365B", "24595CBA317234B8" ];
var titledata = Get_TitleData(); if (PassIDs.includes(currentPlayerId))
var jbSplit = titledata.PassIDs.split(',');
for ( var i in jbSplit )
{ {
if(jbSplit[i] == currentPlayerId) log.info("Pass by PassIDs.");
return 0; return 0; // 지정된 아이디면 그냥 통과
} }
if(uidata.CurToken.Value != token) if (readonlydata.Data.CurToken.Value != token)
return -1; return -1;
else if(!CheckNullOrEmpty(uidata.BanUser)) /*
else if (!CheckNullOrEmpty(uidata.BanUser))
return -2; return -2;
else if(!CheckNullOrEmpty(uidata.BanChat)) else if (!CheckNullOrEmpty(uidata.BanChat))
return 1; return 1;
*/
else else
return 0; return 0;
} }
@ -161,8 +161,8 @@ function Del_Mail(itemname)
} }
handlers.Get_UserInfo = function (args) handlers.Get_UserInfo = function (args)
{ {
var urod = server.GetUserReadOnlyData({ PlayFabId: currentPlayerId }).Data; var readonlydata = Get_UserReadOnlyData();
return Get_Return(Get_Error(args.Token), { GetUserReadOnlyData: urod }); return Get_Return(Get_Error(readonlydata, args.Token), { GetUserReadOnlyData: readonlydata.Data });
} }
handlers.Get_OtherUserInfo = function (args) handlers.Get_OtherUserInfo = function (args)
{ {
@ -176,28 +176,28 @@ handlers.Get_OtherUserInfo = function (args)
handlers.ServerSave_LoginToken = function(args) handlers.ServerSave_LoginToken = function(args)
{ {
//var urod = server.GetUserReadOnlyData({ PlayFabId: currentPlayerId }).Data; server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"CurToken": args.Token} });
server.UpdateUserInternalData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"CurToken": args.Token } }); //server.UpdateUserInternalData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"CurToken": args.Token } });
} }
handlers.ServerSave_AllData = function(args) handlers.ServerSave_AllData = function(args)
{ {
var error = Get_Error(args.Token); var error = Get_Error(Get_UserReadOnlyData(), args.Token);
if(error < 0) return {error:error}; if (error < 0) return Get_Return(error);
log.info(args.AllData);
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"UserInfo": JSON.stringify(args.AllData)} }); server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"UserInfo": JSON.stringify(args.AllData)} });
return { return Get_Return(error);
error: error
}
} }
/////////////////////////////////// 서버 처리 /////////////////////////////////// 서버 처리
function Get_JsonUserData() function Get_UserReadOnlyData()
{ {
return JSON.parse(server.GetUserReadOnlyData({ PlayFabId: currentPlayerId }).Data.UserInfo.Value); return server.GetUserReadOnlyData({ PlayFabId: currentPlayerId });
}
function Get_JsonUserData(readonlydata)
{
return JSON.parse(readonlydata.Data.UserInfo.Value);
} }
function Set_JsonUserData(urod) function Set_JsonUserData(urod)
{ {
@ -233,7 +233,7 @@ function Get_Return(errorval, add) {
} }
*/ */
} }
function Add_Item(itemtable, urod, itemid, amount, isCheat) function Add_Item(table, itemtable, urod, itemid, amount, isCheat)
{ {
var itemdata = itemtable.find(f => f.n_ItemID === itemid); var itemdata = itemtable.find(f => f.n_ItemID === itemid);
if (!itemdata) { if (!itemdata) {
@ -241,7 +241,9 @@ function Add_Item(itemtable, urod, itemid, amount, isCheat)
return; return;
} }
log.info("add item : " + itemid + ', ' + amount + ", " + itemdata.e_ItemType); 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_ACC", itemid, itemCount, false);
switch (itemdata.e_ItemType) switch (itemdata.e_ItemType)
{ {
@ -291,6 +293,9 @@ function Add_Item(itemtable, urod, itemid, amount, isCheat)
} }
function Use_Item(urod, itemid, amount) function Use_Item(urod, itemid, amount)
{ {
Add_MissionCount(table, urod, "CONSUME_GOODS", itemid, itemCount, false);
Add_MissionCount(table, urod, "CONSUME_GOODS_ACC", itemid, itemCount, false);
if (urod.Item[itemid]) if (urod.Item[itemid])
{ {
if (urod.Item[itemid][0] >= amount) if (urod.Item[itemid][0] >= amount)
@ -402,15 +407,26 @@ function Get_Exp(lv) {
handlers.Save_CheatItem = function(args) handlers.Save_CheatItem = function(args)
{ {
var urod = Get_JsonUserData(); var urod = Get_JsonUserData();
Add_Item(Get_ItemTable(), urod, args.ID, args.Amount, true); Add_Item(Get_MissionTable(), Get_ItemTable(), urod, args.ID, args.Amount, true);
Set_JsonUserData(urod); Set_JsonUserData(urod);
} }
handlers.Get_MailList = function(args) handlers.Get_MailList = function(args)
{ {
var error = Get_Error(args.Token); var readonlydata = Get_UserReadOnlyData();
var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data; var mailList = [];
return Get_Return(error, { Mail: JSON.parse(userdata.Mail.Value) });
if (readonlydata.Data.Mail && readonlydata.Data.Mail.Value)
{
try {
mailList = JSON.parse(readonlydata.Data.Mail.Value);
} catch (e) {
log.error("Mail JSON Parse Error: " + e);
mailList = []; // 파싱 실패시 빈 목록 반환
}
}
return Get_Return(Get_Error(readonlydata, args.Token), { Mail: mailList });
} }
handlers.Get_MailReward = function(args) handlers.Get_MailReward = function(args)
{ {
@ -420,6 +436,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 table = Get_MissionTable();
var itemtable = Get_ItemTable(); 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);
@ -431,7 +448,7 @@ handlers.Get_MailReward = function(args)
if (maildate.getTime() === getdate.getTime()) if (maildate.getTime() === getdate.getTime())
{ {
existmail = true; existmail = true;
Add_Item(itemtable, urod, mailjson[i].ItemID, mailjson[i].Amount); Add_Item(table, itemtable, urod, mailjson[i].ItemID, mailjson[i].Amount);
delete mailjson[i]; delete mailjson[i];
break; break;
} }
@ -458,11 +475,12 @@ 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 table = Get_MissionTable();
var itemtable = Get_ItemTable(); 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(itemtable, urod, mailjson[i].ItemID, mailjson[i].Amount); Add_Item(table, 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);
@ -493,11 +511,7 @@ handlers.Save_StageResult = function(args) {
var itemId = key; var itemId = key;
var itemCount = items[key]; var itemCount = items[key];
Add_Item(itemtable, urod, itemId, itemCount); Add_Item(table, itemtable, urod, itemId, itemCount);
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_ACC", itemId, itemCount, false);
} }
// 몬스터 킬 처리 // 몬스터 킬 처리

View File

@ -340,6 +340,7 @@ public class ServerInfo : MyCoroutine
Dictionary<string, object> jsonData = Json.Deserialize(urod.FunctionResult.ToString()) as Dictionary<string, object>; Dictionary<string, object> jsonData = Json.Deserialize(urod.FunctionResult.ToString()) as Dictionary<string, object>;
var gurod = Json.Serialize(jsonData["GetUserReadOnlyData"]); var gurod = Json.Serialize(jsonData["GetUserReadOnlyData"]);
var gurodjson = Json.Deserialize(gurod) as Dictionary<string, object>; var gurodjson = Json.Deserialize(gurod) as Dictionary<string, object>;
bool newUser = false;
if (gurodjson.ContainsKey("UserInfo")) if (gurodjson.ContainsKey("UserInfo"))
{ // 기존 유저 { // 기존 유저
@ -353,14 +354,17 @@ public class ServerInfo : MyCoroutine
else else
{ // 신규 유저 { // 신규 유저
m_ServerData = new ServerData(); m_ServerData = new ServerData();
newUser = true;
} }
DataCheckMgr.Ins.Set(); DataCheckMgr.Ins.Set();
OptionInfo.Ins.Set_UI(); OptionInfo.Ins.Set_UI();
// 서버 데이터 가져오기 완료 // 서버 데이터 가져오기 완료
if (IsNewUser()) SetFirstName(_servercomplete, true); if (newUser) // 기본 데이터 서버에 저장하고 닉네임 만들기
else _servercomplete(false); Write(() => { SetFirstName(_servercomplete, true); });
else
_servercomplete(false);
} }
//catch //catch
//{ //{
@ -377,7 +381,7 @@ public class ServerInfo : MyCoroutine
} }
void SetFirstName(Action<bool> _servercomplete, bool newuser) void SetFirstName(Action<bool> _servercomplete, bool newuser)
{ {
var nick = DSUtil.Format("마녀{0}", Random.Range(100000, 1000000)); var nick = DSUtil.Format("힘민지{0}", Random.Range(100000, 1000000));
UpdateUserTitleDisplayName(nick, UpdateUserTitleDisplayName(nick,
() => { _servercomplete(newuser); }, () => { _servercomplete(newuser); },
() => { SetFirstName(_servercomplete, newuser); }); () => { SetFirstName(_servercomplete, newuser); });