880 lines
26 KiB
JavaScript
880 lines
26 KiB
JavaScript
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
//
|
||
// Welcome to your first Cloud Script revision!
|
||
//
|
||
// Cloud Script runs in the PlayFab cloud and has full access to the PlayFab Game Server API
|
||
// (https://api.playfab.com/Documentation/Server), and it runs in the context of a securely
|
||
// authenticated player, so you can use it to implement logic for your game that is safe from
|
||
// client-side exploits.
|
||
//
|
||
// Cloud Script functions can also make web requests to external HTTP
|
||
// endpoints, such as a database or private API for your title, which makes them a flexible
|
||
// way to integrate with your existing backend systems.
|
||
//
|
||
// There are several different options for calling Cloud Script functions:
|
||
//
|
||
// 1) Your game client calls them directly using the "ExecuteCloudScript" API,
|
||
// passing in the function name and arguments in the request and receiving the
|
||
// function return result in the response.
|
||
// (https://api.playfab.com/Documentation/Client/method/ExecuteCloudScript)
|
||
//
|
||
// 2) You create PlayStream event actions that call them when a particular
|
||
// event occurs, passing in the event and associated player profile data.
|
||
// (https://api.playfab.com/playstream/docs)
|
||
//
|
||
// 3) For titles using the Photon Add-on (https://playfab.com/marketplace/photon/),
|
||
// Photon room events trigger webhooks which call corresponding Cloud Script functions.
|
||
//
|
||
// The following examples demonstrate all three options.
|
||
//
|
||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
handlers.aaTest = function(args)
|
||
{
|
||
//var now = new Date();
|
||
//log.info(now.getFullYear());
|
||
//log.info(now.getMonth());
|
||
//log.info(now.getDate());
|
||
|
||
//var curTime = new Date();
|
||
//log.info(curTime);
|
||
//var t1 = new Date(curTime.setHours(curTime.getHours() + 1));
|
||
//log.info(t1);
|
||
//var t2 = new Date(t1.setDate(t1.getDate() + 1));
|
||
//log.info(t2);
|
||
|
||
//server.UpdatePlayerStatistics({PlayFabId: currentPlayerId, Statistics : [
|
||
//{
|
||
// "StatisticName": "PetBattle",
|
||
// "Value": 1000
|
||
//}
|
||
//]});
|
||
|
||
/*
|
||
var playerprofile = server.GetPlayerCombinedInfo({ PlayFabId: currentPlayerId,
|
||
"InfoRequestParameters":
|
||
{
|
||
"GetPlayerProfile": true,
|
||
"ProfileConstraints":
|
||
{
|
||
"ShowTotalValueToDateInUsd": true,
|
||
"ShowDisplayName": true
|
||
}
|
||
}
|
||
});
|
||
log.info(playerprofile);
|
||
if(!CheckNullOrEmpty(playerprofile.InfoResultPayload.PlayerProfile.TotalValueToDateInUSD))
|
||
{
|
||
log.info(playerprofile.InfoResultPayload.PlayerProfile.TotalValueToDateInUSD);
|
||
var price = playerprofile.InfoResultPayload.PlayerProfile.TotalValueToDateInUSD / 100;
|
||
log.info(parseInt(price * 50));
|
||
}
|
||
else
|
||
log.info('<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>');
|
||
*/
|
||
}
|
||
|
||
// 에러 정리 : 0 정상, 1 채팅 금지 유저, 2 서버 점검, 3 잘못된 우편을
|
||
// -1 중복 로그인, -2 금지 유저
|
||
function Get_Error(token)
|
||
{
|
||
var uidata = server.GetUserInternalData({ PlayFabId: currentPlayerId }).Data;
|
||
var titledata = Get_TitleData();
|
||
var jbSplit = titledata.PassIDs.split(',');
|
||
for ( var i in jbSplit )
|
||
{
|
||
if(jbSplit[i] == currentPlayerId)
|
||
return 0;
|
||
}
|
||
|
||
if(uidata.CurToken.Value != token)
|
||
return -1;
|
||
else if(!CheckNullOrEmpty(uidata.BanUser))
|
||
return -2;
|
||
else if(!CheckNullOrEmpty(uidata.BanChat))
|
||
return 1;
|
||
else
|
||
return 0;
|
||
}
|
||
|
||
handlers.Send_Mail = function(args)
|
||
{
|
||
Add_Mail(args);
|
||
}
|
||
|
||
function Add_Mail(args)
|
||
{
|
||
var makemail = {};
|
||
//makemail.Seq = dt.getFullYear() + '-' + dt.getMonth().toString().padStart(2,'0') + '-' + dt.getDate().toString().padStart(2,'0') + '_' +
|
||
// dt.getHours().toString().padStart(2,'0') + ':' + dt.getMinutes().toString().padStart(2,'0') + ':' + dt.getSeconds().toString().padStart(2,'0');
|
||
makemail.Reward = args.Reward;
|
||
makemail.RewardAmount = args.RewardAmount;
|
||
makemail.ID = CheckNullOrEmpty(args.ID) ? 0 : args.ID;
|
||
makemail.Msg = args.Msg;
|
||
makemail.IsShopItem = CheckNullOrEmpty(args.IsShopItem) ? 0 : args.IsShopItem;
|
||
|
||
var day = CheckNullOrEmpty(args.Day) ? 3 : args.Day;
|
||
var dt = Get_CurKoreaTime();
|
||
makemail.RemainTime = new Date(dt.setDate(dt.getDate() + day));
|
||
|
||
var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data;
|
||
var mailjson = [];
|
||
if (!CheckNullOrEmpty(userdata.Mail))
|
||
mailjson = JSON.parse(userdata.Mail.Value);
|
||
mailjson.push(makemail);
|
||
|
||
// 시간 지난 메일 확인 후 삭제
|
||
for(var i in mailjson)
|
||
{
|
||
var mailtime = new Date(mailjson[i].RemainTime);
|
||
var nowtime = Get_CurKoreaTime();
|
||
if(mailtime - nowtime < 0)
|
||
delete mailjson[i];
|
||
}
|
||
mailjson = mailjson.filter(function(x) { return x !== null }); // null 모두 지우기
|
||
|
||
server.UpdateUserData({ PlayFabId: currentPlayerId, Data: {"Mail": JSON.stringify(mailjson)} });
|
||
|
||
return {
|
||
result : mailjson
|
||
};
|
||
}
|
||
function Del_Mail(itemname)
|
||
{
|
||
var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data;
|
||
var mailjson = JSON.parse(userdata.Mail.Value);
|
||
var mailindex = mailjson.findIndex(f=>f.Reward == itemname);
|
||
if(mailindex > -1)
|
||
{
|
||
mailjson.splice(mailindex, 1);
|
||
server.UpdateUserData({ PlayFabId: currentPlayerId, Data: {"Mail": JSON.stringify(mailjson)} });
|
||
return true;
|
||
}
|
||
else
|
||
log.info(itemname + ' 아이템을 우편함에서 찾지 못했습니다.');
|
||
return false;
|
||
}
|
||
handlers.Get_MailList = function(args)
|
||
{
|
||
var error = Get_Error(args.Token);
|
||
var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data;
|
||
if (!CheckNullOrEmpty(userdata.Mail))
|
||
{
|
||
return {
|
||
error: error,
|
||
Mail: JSON.parse(userdata.Mail.Value)
|
||
};
|
||
}
|
||
else
|
||
{
|
||
return {
|
||
error: error
|
||
}
|
||
}
|
||
}
|
||
handlers.Get_MailReward = function(args)
|
||
{
|
||
var error = Get_Error(args.Token);
|
||
if(error < 0) return {error:error};
|
||
|
||
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"UserInfo": JSON.stringify(args.AllData)} });
|
||
|
||
var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data;
|
||
if (!CheckNullOrEmpty(userdata.Mail))
|
||
{
|
||
var mailjson = JSON.parse(userdata.Mail.Value);
|
||
var existmail = false;
|
||
var getdate = new Date(args.RemainTime);
|
||
for (var i in mailjson)
|
||
{
|
||
var maildate = new Date(mailjson[i].RemainTime);
|
||
if (maildate.getTime() === getdate.getTime())
|
||
{
|
||
existmail = true;
|
||
delete mailjson[i];
|
||
break;
|
||
}
|
||
}
|
||
mailjson = mailjson.filter(function(x) { return x !== null }); // null 모두 지우기
|
||
|
||
if(existmail)
|
||
{
|
||
server.UpdateUserData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"Mail": JSON.stringify(mailjson)} });
|
||
|
||
return {
|
||
error : error,
|
||
Mail: mailjson
|
||
};
|
||
}
|
||
else
|
||
{
|
||
return {
|
||
error : 3
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return {
|
||
error : 3
|
||
}
|
||
}
|
||
}
|
||
handlers.Get_AllMail = function(args)
|
||
{
|
||
var error = Get_Error(args.Token);
|
||
if(error < 0) return {error:error};
|
||
|
||
var userdata = server.GetUserData({ PlayFabId: currentPlayerId, Keys: ["Mail"] }).Data;
|
||
if (!CheckNullOrEmpty(userdata.Mail))
|
||
{
|
||
var mailjson = JSON.parse(userdata.Mail.Value);
|
||
server.UpdateUserData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"Mail": "[]"} });
|
||
|
||
return {
|
||
error : error,
|
||
Mail: mailjson
|
||
};
|
||
}
|
||
else
|
||
{
|
||
return {
|
||
error : 3
|
||
}
|
||
}
|
||
}
|
||
handlers.Get_UserInfo = function (args)
|
||
{
|
||
var urod = server.GetUserReadOnlyData({ PlayFabId: currentPlayerId }).Data;
|
||
|
||
return {
|
||
error: Get_Error(args.Token),
|
||
GetUserReadOnlyData: urod
|
||
};
|
||
}
|
||
handlers.Get_OtherUserInfo = function (args)
|
||
{
|
||
var urod = server.GetUserReadOnlyData({ PlayFabId: args.ID }).Data;
|
||
|
||
return {
|
||
error: Get_Error(args.Token),
|
||
GetUserReadOnlyData: urod
|
||
};
|
||
}
|
||
|
||
handlers.ServerSave_LoginToken = function(args)
|
||
{
|
||
//var urod = server.GetUserReadOnlyData({ PlayFabId: currentPlayerId }).Data;
|
||
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};
|
||
|
||
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"UserInfo": JSON.stringify(args.AllData)} });
|
||
|
||
return {
|
||
error: error
|
||
}
|
||
}
|
||
|
||
handlers.Write_UnityInApp = function(args)
|
||
{
|
||
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"UserInfo": JSON.stringify(args.AllData)} });
|
||
Add_ShopMail(args.ProductID);
|
||
|
||
log.info("args.IsEditor " + args.IsEditor);
|
||
if (args.IsEditor)
|
||
{
|
||
log.info("아이템 저장 " + args.ProductID);
|
||
server.GrantItemsToUser( { PlayFabID: currentPlayerId, ItemIds : [args.ProductID] });
|
||
}
|
||
|
||
return {
|
||
error: Get_Error(args.Token)
|
||
}
|
||
}
|
||
handlers.Write_Onestore = function(args)
|
||
{
|
||
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"UserInfo": JSON.stringify(args.AllData)} });
|
||
Add_ShopMail(args.ProductID);
|
||
|
||
var customData = { };
|
||
customData["Receipt"] = args.Receipt;
|
||
|
||
server.GrantItemsToUsers({
|
||
"ItemGrants": [{
|
||
"PlayFabId" : currentPlayerId,
|
||
"ItemId" : args.ProductID,
|
||
"Data" : customData
|
||
}]
|
||
});
|
||
|
||
return {
|
||
error: Get_Error(args.Token)
|
||
}
|
||
}
|
||
|
||
function Add_ShopMail(productid)
|
||
{
|
||
var shoptable = Get_ShopTable();
|
||
var finddata = shoptable.find(f=>f.InappID == productid);
|
||
if(!CheckNullOrEmpty(finddata))
|
||
{
|
||
var maildata = {};
|
||
maildata.Day = 30;
|
||
maildata.Reward = finddata.Item;
|
||
maildata.ID = finddata.ID;
|
||
maildata.RewardAmount = finddata.Amount;
|
||
maildata.Msg = finddata.Name;
|
||
maildata.IsShopItem = 1;
|
||
Add_Mail(maildata);
|
||
}
|
||
}
|
||
|
||
handlers.SendMail_Daily = function(args)
|
||
{
|
||
var error = Get_Error(args.Token);
|
||
if(error < 0) return {error:error};
|
||
|
||
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"UserInfo": JSON.stringify(args.AllData)} });
|
||
if(args.IsKing)
|
||
Add_ShopMail("com.filgoodbandits.john.dailyking");
|
||
if(args.IsGod)
|
||
Add_ShopMail("com.filgoodbandits.john.dailygod");
|
||
if(args.IsGemSubscribe)
|
||
{
|
||
var maildata = {};
|
||
maildata.Day = 30;
|
||
maildata.Reward = "GemSubscribeBox1";
|
||
maildata.RewardAmount = 1;
|
||
maildata.Msg = "그리폰이 배달한 주머니입니다.";
|
||
Add_Mail(maildata);
|
||
}
|
||
if(args.IsGemSubscribe2)
|
||
{
|
||
var maildata = {};
|
||
maildata.Day = 30;
|
||
maildata.Reward = "GemSubscribeBox2";
|
||
maildata.RewardAmount = 1;
|
||
maildata.Msg = "흰토끼가 배달한 주머니입니다.";
|
||
Add_Mail(maildata);
|
||
}
|
||
if(args.IsGemSubscribe3)
|
||
{
|
||
var maildata = {};
|
||
maildata.Day = 30;
|
||
maildata.Reward = "GemSubscribeBox3";
|
||
maildata.RewardAmount = 1;
|
||
maildata.Msg = "모조 거북이 배달한 주머니입니다.";
|
||
Add_Mail(maildata);
|
||
}
|
||
|
||
return {
|
||
error: error
|
||
}
|
||
}
|
||
handlers.GuideQuestComplete = function(args)
|
||
{
|
||
var error = Get_Error(args.Token);
|
||
if(error < 0) return {error:error};
|
||
|
||
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"UserInfo": JSON.stringify(args.AllData)} });
|
||
|
||
var maildata = {};
|
||
maildata.Reward = "Gem";
|
||
maildata.RewardAmount = 1000;
|
||
maildata.Msg = "가이드 퀘스트 완료를 축하합니다.";
|
||
Add_Mail(maildata);
|
||
|
||
return {
|
||
error: error
|
||
}
|
||
}
|
||
|
||
handlers.SaveToStageRank = function(args)
|
||
{
|
||
var error = Get_Error(args.Token);
|
||
if(error < 0) return {error:error};
|
||
|
||
server.UpdatePlayerStatistics({PlayFabId: currentPlayerId, Statistics : [
|
||
{
|
||
"StatisticName": "Stage",
|
||
"Value": args.MaxStage
|
||
}
|
||
]});
|
||
|
||
return {
|
||
error: error
|
||
}
|
||
}
|
||
handlers.SaveToDragonRank = function(args)
|
||
{
|
||
var error = Get_Error(args.Token);
|
||
if(error < 0) return {error:error};
|
||
|
||
server.UpdatePlayerStatistics({PlayFabId: currentPlayerId, Statistics : [
|
||
{
|
||
"StatisticName": "Dragon",
|
||
"Value": args.Lv
|
||
}
|
||
]});
|
||
|
||
return {
|
||
error: error
|
||
}
|
||
}
|
||
|
||
handlers.Check_CanBuyInapp = function(args)
|
||
{ // 인앱 구매전 에러 확인용
|
||
return {
|
||
error: Get_Error(args.Token)
|
||
}
|
||
}
|
||
|
||
handlers.Del_TitlePlayer = function(args)
|
||
{
|
||
if(!CheckNullOrEmpty(args.Agree))
|
||
server.DeletePlayer({PlayFabId: currentPlayerId});
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
handlers.Set_BestStageRank = function(args)
|
||
{
|
||
server.UpdatePlayerStatistics({PlayFabId: currentPlayerId, Statistics : [
|
||
{
|
||
"StatisticName": "Best Stage",
|
||
"Value": args.Stage
|
||
}
|
||
]});
|
||
}
|
||
|
||
handlers.Send_Cheat = function()
|
||
{
|
||
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"Cheat": "Use" } });
|
||
server.UpdatePlayerStatistics({PlayFabId: currentPlayerId, Statistics : [
|
||
{
|
||
"StatisticName": "Best Stage",
|
||
"Value": 1
|
||
},
|
||
{
|
||
"StatisticName": "WeeklyPvP",
|
||
"Value": 0
|
||
},
|
||
{
|
||
"StatisticName": "BossRaid",
|
||
"Value": 0
|
||
},
|
||
{
|
||
"StatisticName": "Reset Best Stage",
|
||
"Value": 0
|
||
}
|
||
]});
|
||
}
|
||
|
||
handlers.Use_Coupon = function(args)
|
||
{
|
||
log.info(args.Coupon);
|
||
|
||
var error = Get_Error(args.Token);
|
||
if(error < 0) return {error:error};
|
||
|
||
var userdata = server.GetUserData({ PlayFabId: currentPlayerId }).Data;
|
||
var couponinfo = [];
|
||
if(!CheckNullOrEmpty(userdata.CouponInfo)) couponinfo = JSON.parse(userdata.CouponInfo.Value);
|
||
|
||
var coupontable = Get_CouponTable();
|
||
var findcoupon = coupontable.find(f=>f.Coupon == args.Coupon);
|
||
if(findcoupon != null)
|
||
{ // 전체 쿠폰
|
||
var nowtime = Get_CurKoreaTime();
|
||
var starttime = new Date(findcoupon.StartTime);
|
||
var endtime = new Date(findcoupon.EndTime);
|
||
|
||
if(nowtime - starttime > 0 && endtime - nowtime > 0)
|
||
{
|
||
var find = couponinfo.find(f=>f == findcoupon.Index);
|
||
if(find == null)
|
||
{
|
||
// 참여 여부 저장
|
||
couponinfo.push(findcoupon.Index);
|
||
server.UpdateUserData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"CouponInfo": JSON.stringify(couponinfo)} });
|
||
|
||
// 보상 지급
|
||
var RtnValue = [];
|
||
var makereward = {};
|
||
|
||
var reward1 = findcoupon.Reward1.split(',');
|
||
makereward.Reward = reward1[0];
|
||
makereward.RewardAmount = reward1[1];
|
||
RtnValue.push(makereward);
|
||
|
||
var reward2 = [];
|
||
if(!CheckNullOrEmpty(findcoupon.Reward2))
|
||
{
|
||
makereward = {};
|
||
reward2 = findcoupon.Reward2.split(',');
|
||
makereward.Reward = reward2[0];
|
||
makereward.RewardAmount = reward2[1];
|
||
RtnValue.push(makereward);
|
||
}
|
||
|
||
return {
|
||
error: error,
|
||
Rewards: '{"Rewards":' + JSON.stringify(RtnValue) + '}'
|
||
};
|
||
}
|
||
}
|
||
}
|
||
|
||
return {
|
||
error: 4
|
||
};
|
||
}
|
||
|
||
handlers.Send_Push = function(args)
|
||
{
|
||
var urod = server.GetUserReadOnlyData({ PlayFabId: currentPlayerId }).Data;
|
||
var common = JSON.parse(urod.UserInfo.Value).Common;
|
||
var isSendAgree = false;
|
||
var profile = server.GetPlayerProfile( {PlayFabId: currentPlayerId, ProfileConstraints: {ShowLocations: true}} );
|
||
if (profile.PlayerProfile.Locations[profile.PlayerProfile.Locations.length - 1].CountryCode == "KR")
|
||
{
|
||
var dt = new Date();
|
||
dt.setHours(dt.getHours() + 9);
|
||
if(dt.getHours() >= 8 && dt.getHours() <= 21)
|
||
isSendAgree = common.NotificationAgreeDaytime;
|
||
else
|
||
isSendAgree = common.NotificationAgreeNighttime;
|
||
}
|
||
|
||
if (isSendAgree)
|
||
{ // try to send push notification
|
||
try
|
||
{
|
||
server.SendPushNotification(
|
||
{
|
||
Recipient : currentPlayerId,
|
||
Package :
|
||
{
|
||
Message : args.Msg,
|
||
Title: args.Title
|
||
}
|
||
});
|
||
}
|
||
catch (ex)
|
||
{
|
||
log.info("Target player has not registered for Push Notifications");
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
handlers.CafeEvent_Lv5 = function(args)
|
||
{
|
||
var userdata = server.GetUserData({ PlayFabId: currentPlayerId }).Data;
|
||
var eventinfo = [];
|
||
if(!CheckNullOrEmpty(userdata.EventInfo)) eventinfo = JSON.parse(userdata.EventInfo.Value);
|
||
|
||
var find = eventinfo.find(f=>f.Event == "Lv10");
|
||
if(find == null)
|
||
{
|
||
// 참여 여부 저장
|
||
var eventwrite = {};
|
||
eventwrite.Event = "Lv10";
|
||
eventinfo.push(eventwrite);
|
||
server.UpdateUserData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"EventInfo": JSON.stringify(eventinfo)} });
|
||
|
||
var mail = {};
|
||
mail.Reward = "Gem";
|
||
mail.RewardAmount = 2000;
|
||
mail.Msg = "공식카페 마녀 레벨5 달성 이벤트 보상";
|
||
Add_Mail(mail);
|
||
|
||
log.info("Lv5 보상 지급");
|
||
}
|
||
else
|
||
log.info("Lv5 보상을 이미 지급한 유저입니다.");
|
||
}
|
||
handlers.CafeEvent_SNS = function(args)
|
||
{
|
||
var userdata = server.GetUserData({ PlayFabId: currentPlayerId }).Data;
|
||
var eventinfo = [];
|
||
if(!CheckNullOrEmpty(userdata.EventInfo)) eventinfo = JSON.parse(userdata.EventInfo.Value);
|
||
|
||
var find = eventinfo.find(f=>f.Event == "SNS");
|
||
if(find == null)
|
||
{
|
||
// 참여 여부 저장
|
||
var eventwrite = {};
|
||
eventwrite.Event = "SNS";
|
||
eventinfo.push(eventwrite);
|
||
server.UpdateUserData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"EventInfo": JSON.stringify(eventinfo)} });
|
||
|
||
var mail = {};
|
||
mail.Reward = "Gem";
|
||
mail.RewardAmount = 10000;
|
||
mail.Msg = "SNS 이벤트 보상입니다.";
|
||
Add_Mail(mail);
|
||
|
||
log.info("SNS 보상 지급");
|
||
}
|
||
else
|
||
log.info("SNS 보상을 이미 지급한 유저입니다.");
|
||
}
|
||
handlers.CafeEvent_Greeting = function(args)
|
||
{
|
||
var userdata = server.GetUserData({ PlayFabId: currentPlayerId }).Data;
|
||
var eventinfo = [];
|
||
if(!CheckNullOrEmpty(userdata.EventInfo)) eventinfo = JSON.parse(userdata.EventInfo.Value);
|
||
|
||
var find = eventinfo.find(f=>f.Event == "Greeting");
|
||
if(find == null)
|
||
{
|
||
// 참여 여부 저장
|
||
var eventwrite = {};
|
||
eventwrite.Event = "Greeting";
|
||
eventinfo.push(eventwrite);
|
||
server.UpdateUserData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"EventInfo": JSON.stringify(eventinfo)} });
|
||
|
||
var mail = {};
|
||
mail.Reward = "Gem";
|
||
mail.RewardAmount = 3000;
|
||
mail.Msg = "공식카페 이벤트 오픈 전 인사 보상입니다.";
|
||
Add_Mail(mail);
|
||
|
||
log.info("오픈 전 인사 보상 지급");
|
||
}
|
||
else
|
||
log.info("오픈 전 인사 보상을 이미 지급한 유저입니다.");
|
||
}
|
||
handlers.CafeEvent_MyFarm = function(args)
|
||
{
|
||
var userdata = server.GetUserData({ PlayFabId: currentPlayerId }).Data;
|
||
var eventinfo = [];
|
||
if(!CheckNullOrEmpty(userdata.EventInfo)) eventinfo = JSON.parse(userdata.EventInfo.Value);
|
||
|
||
var find = eventinfo.find(f=>f.Event == "MyFarm");
|
||
if(find == null)
|
||
{
|
||
// 참여 여부 저장
|
||
var eventwrite = {};
|
||
eventwrite.Event = "MyFarm";
|
||
eventinfo.push(eventwrite);
|
||
server.UpdateUserData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"EventInfo": JSON.stringify(eventinfo)} });
|
||
|
||
var mail = {};
|
||
mail.Reward = "Inven";
|
||
mail.ID = 50;
|
||
mail.RewardAmount = 50;
|
||
mail.Msg = "마이팜 인증 보상입니다.";
|
||
Add_Mail(mail);
|
||
|
||
log.info("마이팜 인증 보상 지급");
|
||
}
|
||
else
|
||
log.info("마이팜 인증 보상을 이미 지급한 유저입니다.");
|
||
}
|
||
|
||
handlers.SendMail_DailyInit = function(args)
|
||
{
|
||
var maildata = {};
|
||
maildata.Reward = "DailyInit";
|
||
maildata.RewardAmount = 0;
|
||
maildata.Msg = "일일 초기화 아이템\n바로 사용해주세요!!";
|
||
maildata.Day = 1;
|
||
Add_Mail(maildata);
|
||
}
|
||
|
||
handlers.CheckError = function(args)
|
||
{
|
||
var urod = server.GetUserReadOnlyData({ PlayFabId: currentPlayerId }).Data;
|
||
var uinfo = JSON.parse(urod.UserInfo.Value);
|
||
|
||
var existnull = false;
|
||
for(var i in uinfo.Common)
|
||
{
|
||
if(uinfo.Common[i] == null)
|
||
{
|
||
uinfo.Common[i] = 0;
|
||
existnull = true;
|
||
}
|
||
}
|
||
|
||
if(existnull)
|
||
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"UserInfo": JSON.stringify(uinfo)} });
|
||
|
||
/*
|
||
if(uinfo.Money[3] < 0)
|
||
{
|
||
var gem1 = JSON.parse(server.GetTitleInternalData("StoneMinus").Data.StoneMinus);
|
||
gem1.push(currentPlayerId);
|
||
server.SetTitleInternalData({ PlayFabId: currentPlayerId, Key: "StoneMinus", Value: JSON.stringify(gem1) });
|
||
}
|
||
|
||
if(uinfo.Money[0] < 0)
|
||
{
|
||
var gem1 = JSON.parse(server.GetTitleInternalData("GemMinus").Data.GemMinus);
|
||
gem1.push(currentPlayerId);
|
||
server.SetTitleInternalData({ PlayFabId: currentPlayerId, Key: "GemMinus", Value: JSON.stringify(gem1) });
|
||
}
|
||
*/
|
||
}
|
||
|
||
handlers.Update_BackUp = function(args)
|
||
{
|
||
BackUpUserInfo();
|
||
}
|
||
function BackUpUserInfo()
|
||
{
|
||
var urod = server.GetUserReadOnlyData({ PlayFabId: currentPlayerId }).Data;
|
||
var uinfo = JSON.parse(urod.UserInfo.Value);
|
||
var uprod = server.GetUserPublisherData({ PlayFabId: currentPlayerId }).Data;
|
||
var index = 1;
|
||
if(CheckNullOrEmpty(uprod.Key))
|
||
{
|
||
index = 1;
|
||
}
|
||
else
|
||
index = uprod.Key.Value;
|
||
|
||
if(index == 1)
|
||
server.UpdateUserPublisherReadOnlyData({ PlayFabId: currentPlayerId, Data: { UserInfo1 : JSON.stringify(uinfo)} });
|
||
else if(index == 2)
|
||
server.UpdateUserPublisherReadOnlyData({ PlayFabId: currentPlayerId, Data: { UserInfo2 : JSON.stringify(uinfo)} });
|
||
else if(index == 3)
|
||
server.UpdateUserPublisherReadOnlyData({ PlayFabId: currentPlayerId, Data: { UserInfo3 : JSON.stringify(uinfo)} });
|
||
else if(index == 4)
|
||
server.UpdateUserPublisherReadOnlyData({ PlayFabId: currentPlayerId, Data: { UserInfo4 : JSON.stringify(uinfo)} });
|
||
else if(index == 5)
|
||
server.UpdateUserPublisherReadOnlyData({ PlayFabId: currentPlayerId, Data: { UserInfo5 : JSON.stringify(uinfo)} });
|
||
else if(index == 6)
|
||
server.UpdateUserPublisherReadOnlyData({ PlayFabId: currentPlayerId, Data: { UserInfo6 : JSON.stringify(uinfo)} });
|
||
else if(index == 7)
|
||
server.UpdateUserPublisherReadOnlyData({ PlayFabId: currentPlayerId, Data: { UserInfo7 : JSON.stringify(uinfo)} });
|
||
else if(index == 8)
|
||
server.UpdateUserPublisherReadOnlyData({ PlayFabId: currentPlayerId, Data: { UserInfo8 : JSON.stringify(uinfo)} });
|
||
else if(index == 9)
|
||
server.UpdateUserPublisherReadOnlyData({ PlayFabId: currentPlayerId, Data: { UserInfo9 : JSON.stringify(uinfo)} });
|
||
|
||
++index;
|
||
if(index > 9) index = 1;
|
||
server.UpdateUserPublisherData({ PlayFabId: currentPlayerId, Data: { Key : index } });
|
||
}
|
||
|
||
handlers.Update_Mail = function(args)
|
||
{
|
||
// 점검 보상 우편
|
||
var makemail = {};
|
||
makemail.Reward = "Gem";
|
||
makemail.RewardAmount = 500;
|
||
var kortime = Get_CurKoreaTime();
|
||
makemail.Msg = (kortime.getMonth() + 1) + '월 ' + kortime.getDate() + '일 점검 보상입니다.';
|
||
makemail.Day = 1;
|
||
Add_Mail(makemail);
|
||
|
||
//if(!CheckNullOrEmpty(urod.EventInfo))
|
||
//{
|
||
// server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Data: {"EventInfo": null} });
|
||
//}
|
||
}
|
||
|
||
handlers.CheckOtherData = function(args)
|
||
{
|
||
var uidata = server.GetUserInternalData({ PlayFabId: args.ID }).Data;
|
||
if(!CheckNullOrEmpty(uidata.BanUser))
|
||
return {
|
||
error: -2
|
||
};
|
||
|
||
var error = 0;
|
||
var urod = server.GetUserReadOnlyData({ PlayFabId: args.ID }).Data.UserInfo.Value;
|
||
var json = JSON.parse(urod);
|
||
if(json.Common[49] == 0 || json.Common[49] != args.PW)
|
||
error = -1;
|
||
|
||
return {
|
||
error: error,
|
||
};
|
||
}
|
||
handlers.GetOtherData = function(args)
|
||
{
|
||
server.UpdateUserInternalData({ PlayFabId: args.ID, Permission: "Public", Data: {"BanUser": 1 } });
|
||
|
||
var urod = server.GetUserReadOnlyData({ PlayFabId: args.ID }).Data.UserInfo.Value;
|
||
var json = JSON.parse(urod);
|
||
json.Common[49] = 0;
|
||
server.UpdateUserReadOnlyData({ PlayFabId: currentPlayerId, Permission: "Public", Data: {"UserInfo": JSON.stringify(json)} });
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
function Get_Inventory()
|
||
{
|
||
return server.GetUserInventory({ PlayFabId: currentPlayerId });
|
||
}
|
||
function Get_Tables()
|
||
{
|
||
return server.GetTitleInternalData({ Keys: null }).Data;
|
||
}
|
||
function Get_TitleData()
|
||
{
|
||
return server.GetTitleData({ Keys: null }).Data;
|
||
}
|
||
function Get_PvPVersion()
|
||
{
|
||
var result = server.GetLeaderboard({
|
||
StatisticName: "WeeklyPvP",
|
||
StartPosition: 0,
|
||
MaxResultsCount: 0
|
||
});
|
||
|
||
return result.Version;
|
||
}
|
||
function Get_CouponTable()
|
||
{
|
||
var table = JSON.parse(server.GetTitleInternalData("CouponTable").Data.CouponTable);
|
||
return table.servertable_coupon;
|
||
}
|
||
function Get_ShopTable()
|
||
{
|
||
var table = JSON.parse(server.GetTitleInternalData("ShopTable").Data.ShopTable);
|
||
return table.table_shop;
|
||
}
|
||
function Get_PlayOCoupons()
|
||
{
|
||
var poc = JSON.parse(server.GetTitleInternalData("PlayO").Data.PlayO);
|
||
return poc.Coupons;
|
||
}
|
||
function Get_CurKoreaTime()
|
||
{
|
||
var curServerTime = new Date();
|
||
return new Date(curServerTime.setHours(curServerTime.getHours() + 9));
|
||
}
|
||
function CheckNullOrEmpty(value)
|
||
{
|
||
if (value == "" || value == null || value == undefined || (value != null && typeof value == "object" && !Object.keys(value).length))
|
||
return true;
|
||
return false;
|
||
}
|
||
function getRandomFloat(min, max) { return Math.random() * (max - min) + min; }
|
||
function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }
|
||
function sleep(milliseconds)
|
||
{
|
||
const date = Date.now();
|
||
let currentDate = null;
|
||
do {
|
||
currentDate = Date.now();
|
||
} while (currentDate - date < milliseconds);
|
||
} |