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

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 잘못된 우편을
// -1 중복 로그인, -2 금지 유저
function Get_Error(token)
function Get_Error(readonlydata, token)
{
var uidata = server.GetUserInternalData({ PlayFabId: currentPlayerId }).Data;
var titledata = Get_TitleData();
var jbSplit = titledata.PassIDs.split(',');
for ( var i in jbSplit )
const PassIDs = [ "20037ADFE4BC365B", "24595CBA317234B8" ];
if (PassIDs.includes(currentPlayerId))
{
if(jbSplit[i] == currentPlayerId)
return 0;
log.info("Pass by PassIDs.");
return 0; // 지정된 아이디면 그냥 통과
}
if(uidata.CurToken.Value != token)
if (readonlydata.Data.CurToken.Value != token)
return -1;
else if(!CheckNullOrEmpty(uidata.BanUser))
/*
else if (!CheckNullOrEmpty(uidata.BanUser))
return -2;
else if(!CheckNullOrEmpty(uidata.BanChat))
else if (!CheckNullOrEmpty(uidata.BanChat))
return 1;
*/
else
return 0;
}
@ -161,8 +161,8 @@ function Del_Mail(itemname)
}
handlers.Get_UserInfo = function (args)
{
var urod = server.GetUserReadOnlyData({ PlayFabId: currentPlayerId }).Data;
return Get_Return(Get_Error(args.Token), { GetUserReadOnlyData: urod });
var readonlydata = Get_UserReadOnlyData();
return Get_Return(Get_Error(readonlydata, args.Token), { GetUserReadOnlyData: readonlydata.Data });
}
handlers.Get_OtherUserInfo = function (args)
{
@ -176,28 +176,28 @@ handlers.Get_OtherUserInfo = function (args)
handlers.ServerSave_LoginToken = function(args)
{
//var urod = server.GetUserReadOnlyData({ PlayFabId: currentPlayerId }).Data;
server.UpdateUserInternalData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"CurToken": args.Token } });
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"CurToken": args.Token} });
//server.UpdateUserInternalData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"CurToken": args.Token } });
}
handlers.ServerSave_AllData = function(args)
{
var error = Get_Error(args.Token);
if(error < 0) return {error:error};
log.info(args.AllData);
var error = Get_Error(Get_UserReadOnlyData(), args.Token);
if (error < 0) return Get_Return(error);
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"UserInfo": JSON.stringify(args.AllData)} });
return {
error: error
}
return Get_Return(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)
{
@ -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);
if (!itemdata) {
@ -241,7 +241,9 @@ function Add_Item(itemtable, urod, itemid, amount, isCheat)
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)
{
@ -291,6 +293,9 @@ function Add_Item(itemtable, urod, itemid, amount, isCheat)
}
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][0] >= amount)
@ -402,15 +407,26 @@ function Get_Exp(lv) {
handlers.Save_CheatItem = function(args)
{
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);
}
handlers.Get_MailList = function(args)
{
var error = Get_Error(args.Token);
var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data;
return Get_Return(error, { Mail: JSON.parse(userdata.Mail.Value) });
var readonlydata = Get_UserReadOnlyData();
var mailList = [];
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)
{
@ -420,6 +436,7 @@ handlers.Get_MailReward = function(args)
var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data;
if (!CheckNullOrEmpty(userdata.Mail))
{
var table = Get_MissionTable();
var itemtable = Get_ItemTable();
var urod = Get_JsonUserData();
var mailjson = JSON.parse(userdata.Mail.Value);
@ -431,7 +448,7 @@ handlers.Get_MailReward = function(args)
if (maildate.getTime() === getdate.getTime())
{
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];
break;
}
@ -458,11 +475,12 @@ handlers.Get_AllMail = function(args)
var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data;
if (!CheckNullOrEmpty(userdata.Mail))
{
var table = Get_MissionTable();
var itemtable = Get_ItemTable();
var urod = Get_JsonUserData();
var mailjson = JSON.parse(userdata.Mail.Value);
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": "[]"} });
Set_JsonUserData(urod);
@ -493,11 +511,7 @@ handlers.Save_StageResult = function(args) {
var itemId = key;
var itemCount = items[key];
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);
Add_MissionCount(table, urod, "TAKE_GOODS_ACC", itemId, itemCount, false);
Add_Item(table, itemtable, urod, itemId, itemCount);
}
// 몬스터 킬 처리

View File

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