diff --git a/extensions/GameAnalyticsExt/AndroidSource/Java/GameAnalyticsExt.java b/extensions/GameAnalyticsExt/AndroidSource/Java/GameAnalyticsExt.java new file mode 100644 index 00000000..0a49933a --- /dev/null +++ b/extensions/GameAnalyticsExt/AndroidSource/Java/GameAnalyticsExt.java @@ -0,0 +1,252 @@ +package ${YYAndroidPackageName}; + +import ${YYAndroidPackageName}.RunnerActivity; +import com.yoyogames.runner.RunnerJNILib; +import com.gameanalytics.sdk.*; +import org.json.JSONArray; +import org.json.JSONException; +import java.util.ArrayList; + +public class GameAnalyticsExt +{ + public void configureAvailableCustomDimensions01(String json) + { + ArrayList list = new ArrayList(); + + try + { + JSONArray jsonArray = new JSONArray(json); + for(int i = 0; i < jsonArray.length(); ++i) + { + list.add(jsonArray.getString(i)); + } + } + catch (JSONException e) + { + } + + GameAnalytics.configureAvailableCustomDimensions01(list.toArray(new String[0])); + } + + public void configureAvailableCustomDimensions02(String json) + { + ArrayList list = new ArrayList(); + + try + { + JSONArray jsonArray = new JSONArray(json); + for(int i = 0; i < jsonArray.length(); ++i) + { + list.add(jsonArray.getString(i)); + } + } + catch (JSONException e) + { + } + + GameAnalytics.configureAvailableCustomDimensions02(list.toArray(new String[0])); + } + + public void configureAvailableCustomDimensions03(String json) + { + ArrayList list = new ArrayList(); + + try + { + JSONArray jsonArray = new JSONArray(json); + for(int i = 0; i < jsonArray.length(); ++i) + { + list.add(jsonArray.getString(i)); + } + } + catch (JSONException e) + { + } + + GameAnalytics.configureAvailableCustomDimensions03(list.toArray(new String[0])); + } + + public void configureAvailableResourceCurrencies(String json) + { + ArrayList list = new ArrayList(); + + try + { + JSONArray jsonArray = new JSONArray(json); + for(int i = 0; i < jsonArray.length(); ++i) + { + list.add(jsonArray.getString(i)); + } + } + catch (JSONException e) + { + } + + GameAnalytics.configureAvailableResourceCurrencies(list.toArray(new String[0])); + } + + public void configureAvailableResourceItemTypes(String json) + { + ArrayList list = new ArrayList(); + + try + { + JSONArray jsonArray = new JSONArray(json); + for(int i = 0; i < jsonArray.length(); ++i) + { + list.add(jsonArray.getString(i)); + } + } + catch (JSONException e) + { + } + + GameAnalytics.configureAvailableResourceItemTypes(list.toArray(new String[0])); + } + + public void configureBuild(String build) + { + GameAnalytics.configureBuild(build); + } + + public void configureSdkGameEngineVersion(String version) + { + GameAnalytics.configureSdkGameEngineVersion(version); + } + + public void configureGameEngineVersion(String version) + { + GameAnalytics.configureGameEngineVersion(version); + } + + public void configureUserId(String id) + { + GameAnalytics.configureUserId(id); + } + + public void initialize(String gameKey, String gameSecret) + { + GameAnalytics.initialize(RunnerActivity.CurrentActivity, gameKey, gameSecret); + } + + public void addBusinessEventJson(String json) + { + try + { + JSONArray jsonArray = new JSONArray(json); + GameAnalytics.addBusinessEvent(jsonArray.getString(0), jsonArray.getInt(1), jsonArray.getString(2), jsonArray.getString(3), jsonArray.getString(4)); + } + catch (JSONException e) + { + } + } + + public void addBusinessEventWithReceipt(String currency, double amount, String itemType, String itemId, String cartType, String receipt, String store, String signature) + { + GameAnalytics.addBusinessEvent(currency, (int)Math.round(amount), itemType, itemId, cartType, receipt, store, signature); + } + + public void addResourceEventJson(String json) + { + try + { + JSONArray jsonArray = new JSONArray(json); + GameAnalytics.addResourceEvent(jsonArray.getInt(0), jsonArray.getString(1), (float)jsonArray.getDouble(2), jsonArray.getString(3), jsonArray.getString(4)); + } + catch (JSONException e) + { + } + } + + public void addProgressionEvent(double status, String progression1, String progression2, String progression3) + { + GameAnalytics.addProgressionEvent((int)Math.round(status), progression1, progression2, progression3); + } + + public void addProgressionEventWithScoreJson(String json) + { + try + { + JSONArray jsonArray = new JSONArray(json); + GameAnalytics.addProgressionEvent(jsonArray.getInt(0), jsonArray.getString(1), jsonArray.getString(2), jsonArray.getString(3), jsonArray.getDouble(4)); + } + catch (JSONException e) + { + } + } + + public void addDesignEvent(String eventId) + { + GameAnalytics.addDesignEvent(eventId); + } + + public void addDesignEventWithValue(String eventId, double value) + { + GameAnalytics.addDesignEvent(eventId, value); + } + + public void addErrorEvent(double severity, String message) + { + GameAnalytics.addErrorEvent((int)Math.round(severity), message); + } + + public void setEnabledInfoLog(double flag) + { + GameAnalytics.setEnabledInfoLog(flag != 0.0); + } + + public void setEnabledVerboseLog(double flag) + { + GameAnalytics.setEnabledVerboseLog(flag != 0.0); + } + + public void setEnabledManualSessionHandling(double flag) + { + GameAnalytics.setEnabledManualSessionHandling(flag != 0.0); + } + + public void setCustomDimension01(String dimension) + { + GameAnalytics.setCustomDimension01(dimension); + } + + public void setCustomDimension02(String dimension) + { + GameAnalytics.setCustomDimension02(dimension); + } + + public void setCustomDimension03(String dimension) + { + GameAnalytics.setCustomDimension03(dimension); + } + + public void startSession() + { + GameAnalytics.startSession(); + } + + public void endSession() + { + GameAnalytics.endSession(); + } + + public String getRemoteConfigsValueAsString(String key) + { + return GameAnalytics.getRemoteConfigsValueAsString(key); + } + + public String getRemoteConfigsValueAsStringWithDefaultValue(String key, String defaultValue) + { + return GameAnalytics.getRemoteConfigsValueAsString(key, defaultValue); + } + + public double isRemoteConfigsReady() + { + return GameAnalytics.isRemoteConfigsReady() ? 1 : 0; + } + + public String getRemoteConfigsContentAsString() + { + return GameAnalytics.getRemoteConfigsContentAsString(); + } +} diff --git a/extensions/GameAnalyticsExt/GameAnalytics.UWP.dll b/extensions/GameAnalyticsExt/GameAnalytics.UWP.dll new file mode 100644 index 00000000..39b2eeb8 Binary files /dev/null and b/extensions/GameAnalyticsExt/GameAnalytics.UWP.dll differ diff --git a/extensions/GameAnalyticsExt/GameAnalytics.UWP_x64.dll b/extensions/GameAnalyticsExt/GameAnalytics.UWP_x64.dll new file mode 100644 index 00000000..3f8fccab Binary files /dev/null and b/extensions/GameAnalyticsExt/GameAnalytics.UWP_x64.dll differ diff --git a/extensions/GameAnalyticsExt/GameAnalytics.dll b/extensions/GameAnalyticsExt/GameAnalytics.dll new file mode 100644 index 00000000..98c97f13 Binary files /dev/null and b/extensions/GameAnalyticsExt/GameAnalytics.dll differ diff --git a/extensions/GameAnalyticsExt/GameAnalytics.js b/extensions/GameAnalyticsExt/GameAnalytics.js new file mode 100644 index 00000000..9c075576 --- /dev/null +++ b/extensions/GameAnalyticsExt/GameAnalytics.js @@ -0,0 +1,5 @@ +(function(scope){ +var public_enums,gameanalytics,CryptoJS=CryptoJS||function(o){function t(){}var e={},n=e.lib={},i=n.Base={extend:function(e){t.prototype=this;var n=new t;return e&&n.mixIn(e),n.hasOwnProperty("init")||(n.init=function(){n.$super.init.apply(this,arguments)}),(n.init.prototype=n).$super=this,n},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var n in e)e.hasOwnProperty(n)&&(this[n]=e[n]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},d=n.WordArray=i.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=null!=n?n:4*e.length},toString:function(e){return(e||a).stringify(this)},concat:function(e){var n=this.words,t=e.words,i=this.sigBytes;if(e=e.sigBytes,this.clamp(),i%4)for(var r=0;r>>2]|=(t[r>>>2]>>>24-r%4*8&255)<<24-(i+r)%4*8;else if(65535>>2]=t[r>>>2];else n.push.apply(n,t);return this.sigBytes+=e,this},clamp:function(){var e=this.words,n=this.sigBytes;e[n>>>2]&=4294967295<<32-n%4*8,e.length=o.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var n=[],t=0;t>>2]>>>24-i%4*8&255;t.push((r>>>4).toString(16)),t.push((15&r).toString(16))}return t.join("")},parse:function(e){for(var n=e.length,t=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new d.init(t,n/2)}},s=r.Latin1={stringify:function(e){var n=e.words;e=e.sigBytes;for(var t=[],i=0;i>>2]>>>24-i%4*8&255));return t.join("")},parse:function(e){for(var n=e.length,t=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new d.init(t,n)}},l=r.Utf8={stringify:function(e){try{return decodeURIComponent(escape(s.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return s.parse(unescape(encodeURIComponent(e)))}},u=n.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new d.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=l.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var n=this._data,t=n.words,i=n.sigBytes,r=this.blockSize,a=i/(4*r);if(e=(a=e?o.ceil(a):o.max((0|a)-this._minBufferSize,0))*r,i=o.min(4*e,i),e){for(var s=0;s>>7)^(v<<14|v>>>18)^v>>>3)+m[c-7]+((g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10)+m[c-16]}v=u+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&d^~o&l)+f[c]+m[c],g=((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+(i&r^i&a^r&a),u=l,l=d,d=o,o=s+v|0,s=a,a=r,r=i,i=v+g|0}t[0]=t[0]+i|0,t[1]=t[1]+r|0,t[2]=t[2]+a|0,t[3]=t[3]+s|0,t[4]=t[4]+o|0,t[5]=t[5]+d|0,t[6]=t[6]+l|0,t[7]=t[7]+u|0},_doFinalize:function(){var e=this._data,n=e.words,t=8*this._nDataBytes,i=8*e.sigBytes;return n[i>>>5]|=128<<24-i%32,n[14+(64+i>>>9<<4)]=r.floor(t/4294967296),n[15+(64+i>>>9<<4)]=t,e.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}});n.SHA256=i._createHelper(a),n.HmacSHA256=i._createHmacHelper(a)}(Math),function(){var l=CryptoJS.enc.Utf8;CryptoJS.algo.HMAC=CryptoJS.lib.Base.extend({init:function(e,n){e=this._hasher=new e.init,"string"==typeof n&&(n=l.parse(n));var t=e.blockSize,i=4*t;n.sigBytes>i&&(n=e.finalize(n)),n.clamp();for(var r=this._oKey=n.clone(),a=this._iKey=n.clone(),s=r.words,o=a.words,d=0;d>>2]>>>24-r%4*8&255)<<16|(n[r+1>>>2]>>>24-(r+1)%4*8&255)<<8|n[r+2>>>2]>>>24-(r+2)%4*8&255,s=0;s<4&&r+.75*s>>6*(3-s)&63));if(n=i.charAt(64))for(;e.length%4;)e.push(n);return e.join("")},parse:function(e){var n=e.length,t=this._map;!(i=t.charAt(64))||-1!=(i=e.indexOf(i))&&(n=i);for(var i=[],r=0,a=0;a>>6-a%4*2;i[r>>>2]|=(s|o)<<24-r%4*8,r++}return d.create(i,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),function(e){var n,t,i,r,a,s,o,d,l,u,c,v,g;(n=e.EGAErrorSeverity||(e.EGAErrorSeverity={}))[n.Undefined=0]="Undefined",n[n.Debug=1]="Debug",n[n.Info=2]="Info",n[n.Warning=3]="Warning",n[n.Error=4]="Error",n[n.Critical=5]="Critical",(t=e.EGAProgressionStatus||(e.EGAProgressionStatus={}))[t.Undefined=0]="Undefined",t[t.Start=1]="Start",t[t.Complete=2]="Complete",t[t.Fail=3]="Fail",(i=e.EGAResourceFlowType||(e.EGAResourceFlowType={}))[i.Undefined=0]="Undefined",i[i.Source=1]="Source",i[i.Sink=2]="Sink",(r=e.EGAAdAction||(e.EGAAdAction={}))[r.Undefined=0]="Undefined",r[r.Clicked=1]="Clicked",r[r.Show=2]="Show",r[r.FailedShow=3]="FailedShow",r[r.RewardReceived=4]="RewardReceived",(a=e.EGAAdError||(e.EGAAdError={}))[a.Undefined=0]="Undefined",a[a.Unknown=1]="Unknown",a[a.Offline=2]="Offline",a[a.NoFill=3]="NoFill",a[a.InternalError=4]="InternalError",a[a.InvalidRequest=5]="InvalidRequest",a[a.UnableToPrecache=6]="UnableToPrecache",(s=e.EGAAdType||(e.EGAAdType={}))[s.Undefined=0]="Undefined",s[s.Video=1]="Video",s[s.RewardedVideo=2]="RewardedVideo",s[s.Playable=3]="Playable",s[s.Interstitial=4]="Interstitial",s[s.OfferWall=5]="OfferWall",s[s.Banner=6]="Banner",o=e.http||(e.http={}),(d=o.EGAHTTPApiResponse||(o.EGAHTTPApiResponse={}))[d.NoResponse=0]="NoResponse",d[d.BadResponse=1]="BadResponse",d[d.RequestTimeout=2]="RequestTimeout",d[d.JsonEncodeFailed=3]="JsonEncodeFailed",d[d.JsonDecodeFailed=4]="JsonDecodeFailed",d[d.InternalServerError=5]="InternalServerError",d[d.BadRequest=6]="BadRequest",d[d.Unauthorized=7]="Unauthorized",d[d.UnknownResponseCode=8]="UnknownResponseCode",d[d.Ok=9]="Ok",d[d.Created=10]="Created",l=e.events||(e.events={}),(u=l.EGASdkErrorCategory||(l.EGASdkErrorCategory={}))[u.Undefined=0]="Undefined",u[u.EventValidation=1]="EventValidation",u[u.Database=2]="Database",u[u.Init=3]="Init",u[u.Http=4]="Http",u[u.Json=5]="Json",(c=l.EGASdkErrorArea||(l.EGASdkErrorArea={}))[c.Undefined=0]="Undefined",c[c.BusinessEvent=1]="BusinessEvent",c[c.ResourceEvent=2]="ResourceEvent",c[c.ProgressionEvent=3]="ProgressionEvent",c[c.DesignEvent=4]="DesignEvent",c[c.ErrorEvent=5]="ErrorEvent",c[c.InitHttp=9]="InitHttp",c[c.EventsHttp=10]="EventsHttp",c[c.ProcessEvents=11]="ProcessEvents",c[c.AddEventsToStore=12]="AddEventsToStore",c[c.AdEvent=20]="AdEvent",(v=l.EGASdkErrorAction||(l.EGASdkErrorAction={}))[v.Undefined=0]="Undefined",v[v.InvalidCurrency=1]="InvalidCurrency",v[v.InvalidShortString=2]="InvalidShortString",v[v.InvalidEventPartLength=3]="InvalidEventPartLength",v[v.InvalidEventPartCharacters=4]="InvalidEventPartCharacters",v[v.InvalidStore=5]="InvalidStore",v[v.InvalidFlowType=6]="InvalidFlowType",v[v.StringEmptyOrNull=7]="StringEmptyOrNull",v[v.NotFoundInAvailableCurrencies=8]="NotFoundInAvailableCurrencies",v[v.InvalidAmount=9]="InvalidAmount",v[v.NotFoundInAvailableItemTypes=10]="NotFoundInAvailableItemTypes",v[v.WrongProgressionOrder=11]="WrongProgressionOrder",v[v.InvalidEventIdLength=12]="InvalidEventIdLength",v[v.InvalidEventIdCharacters=13]="InvalidEventIdCharacters",v[v.InvalidProgressionStatus=15]="InvalidProgressionStatus",v[v.InvalidSeverity=16]="InvalidSeverity",v[v.InvalidLongString=17]="InvalidLongString",v[v.DatabaseTooLarge=18]="DatabaseTooLarge",v[v.DatabaseOpenOrCreate=19]="DatabaseOpenOrCreate",v[v.JsonError=25]="JsonError",v[v.FailHttpJsonDecode=29]="FailHttpJsonDecode",v[v.FailHttpJsonEncode=30]="FailHttpJsonEncode",v[v.InvalidAdAction=31]="InvalidAdAction",v[v.InvalidAdType=32]="InvalidAdType",v[v.InvalidString=33]="InvalidString",(g=l.EGASdkErrorParameter||(l.EGASdkErrorParameter={}))[g.Undefined=0]="Undefined",g[g.Currency=1]="Currency",g[g.CartType=2]="CartType",g[g.ItemType=3]="ItemType",g[g.ItemId=4]="ItemId",g[g.Store=5]="Store",g[g.FlowType=6]="FlowType",g[g.Amount=7]="Amount",g[g.Progression01=8]="Progression01",g[g.Progression02=9]="Progression02",g[g.Progression03=10]="Progression03",g[g.EventId=11]="EventId",g[g.ProgressionStatus=12]="ProgressionStatus",g[g.Severity=13]="Severity",g[g.Message=14]="Message",g[g.AdAction=15]="AdAction",g[g.AdType=16]="AdType",g[g.AdSdkName=17]="AdSdkName",g[g.AdPlacement=18]="AdPlacement"}(gameanalytics=gameanalytics||{}),function(e){var n,t,i,r,a,s;(n=e.EGAErrorSeverity||(e.EGAErrorSeverity={}))[n.Undefined=0]="Undefined",n[n.Debug=1]="Debug",n[n.Info=2]="Info",n[n.Warning=3]="Warning",n[n.Error=4]="Error",n[n.Critical=5]="Critical",(t=e.EGAProgressionStatus||(e.EGAProgressionStatus={}))[t.Undefined=0]="Undefined",t[t.Start=1]="Start",t[t.Complete=2]="Complete",t[t.Fail=3]="Fail",(i=e.EGAResourceFlowType||(e.EGAResourceFlowType={}))[i.Undefined=0]="Undefined",i[i.Source=1]="Source",i[i.Sink=2]="Sink",(r=e.EGAAdAction||(e.EGAAdAction={}))[r.Undefined=0]="Undefined",r[r.Clicked=1]="Clicked",r[r.Show=2]="Show",r[r.FailedShow=3]="FailedShow",r[r.RewardReceived=4]="RewardReceived",(a=e.EGAAdError||(e.EGAAdError={}))[a.Undefined=0]="Undefined",a[a.Unknown=1]="Unknown",a[a.Offline=2]="Offline",a[a.NoFill=3]="NoFill",a[a.InternalError=4]="InternalError",a[a.InvalidRequest=5]="InvalidRequest",a[a.UnableToPrecache=6]="UnableToPrecache",(s=e.EGAAdType||(e.EGAAdType={}))[s.Undefined=0]="Undefined",s[s.Video=1]="Video",s[s.RewardedVideo=2]="RewardedVideo",s[s.Playable=3]="Playable",s[s.Interstitial=4]="Interstitial",s[s.OfferWall=5]="OfferWall",s[s.Banner=6]="Banner"}(public_enums=public_enums||{}),function(e){!function(e){var t,n;(n=t=t||{})[n.Error=0]="Error",n[n.Warning=1]="Warning",n[n.Info=2]="Info",n[n.Debug=3]="Debug";var i=(r.setInfoLog=function(e){r.instance.infoLogEnabled=e},r.setVerboseLog=function(e){r.instance.infoLogVerboseEnabled=e},r.i=function(e){if(r.instance.infoLogEnabled){var n="Info/"+r.Tag+": "+e;r.instance.sendNotificationMessage(n,t.Info)}},r.w=function(e){var n="Warning/"+r.Tag+": "+e;r.instance.sendNotificationMessage(n,t.Warning)},r.e=function(e){var n="Error/"+r.Tag+": "+e;r.instance.sendNotificationMessage(n,t.Error)},r.ii=function(e){if(r.instance.infoLogVerboseEnabled){var n="Verbose/"+r.Tag+": "+e;r.instance.sendNotificationMessage(n,t.Info)}},r.d=function(e){if(r.debugEnabled){var n="Debug/"+r.Tag+": "+e;r.instance.sendNotificationMessage(n,t.Debug)}},r.prototype.sendNotificationMessage=function(e,n){switch(n){case t.Error:console.error(e);break;case t.Warning:console.warn(e);break;case t.Debug:"function"==typeof console.debug?console.debug(e):console.log(e);break;case t.Info:console.log(e)}},r.instance=new r,r.Tag="GameAnalytics",r);function r(){r.debugEnabled=!1}e.GALogger=i}(e.logging||(e.logging={}))}(gameanalytics=gameanalytics||{}),function(e){var n,l,t;function u(){}n=e.utilities||(e.utilities={}),l=e.logging.GALogger,u.getHmac=function(e,n){var t=CryptoJS.HmacSHA256(n,e);return CryptoJS.enc.Base64.stringify(t)},u.stringMatch=function(e,n){return!(!e||!n)&&n.test(e)},u.joinStringArray=function(e,n){for(var t="",i=0,r=e.length;i>2,r=(3&n)<<4|(t=e.charCodeAt(l++))>>4,a=(15&t)<<2|(o=e.charCodeAt(l++))>>6,d=63&o,isNaN(t)?a=d=64:isNaN(o)&&(d=64),s=s+u.keyStr.charAt(i)+u.keyStr.charAt(r)+u.keyStr.charAt(a)+u.keyStr.charAt(d),n=t=o=0,i=r=a=d=0,le)return d.w(a+" validation failed: array cannot exceed "+e+" values. It has "+r.length+" values."),!1;for(var s=0;sv.MaxNumberOfEntries},v.select=function(e,n,t,i){void 0===n&&(n=[]),void 0===t&&(t=!1),void 0===i&&(i=0);var r=v.getStore(e);if(!r)return null;for(var a=[],s=0;si&&(a=a.slice(0,i+1)),a},v.update=function(e,n,t){void 0===t&&(t=[]);var i=v.getStore(e);if(!i)return!1;for(var r=0;r=l.MaxCount)){var a=o.getHmac(i,t),s=new XMLHttpRequest;s.onreadystatechange=function(){if(4===s.readyState){if(!s.responseText)return;if(200!=s.status)return void d.w("sdk error failed. response code not 200. status code: "+s.status+", description: "+s.statusText+", body: "+s.responseText);l.countMap[n]=l.countMap[n]+1}},s.open("POST",e,!0),s.setRequestHeader("Content-Type","application/json"),s.setRequestHeader("Authorization",a);try{s.send(t)}catch(e){console.error(e)}}},l.MaxCount=10,l.countMap={},l.timestampMap={},t=l,n.SdkErrorTask=t}(gameanalytics=gameanalytics||{}),function(e){var u,p,S,c,A,h,v,g,f,m,n;function y(){this.protocol="https",this.hostName="api.gameanalytics.com",this.version="v2",this.remoteConfigsVersion="v1",this.baseUrl=this.protocol+"://"+this.hostName+"/"+this.version,this.remoteConfigsBaseUrl=this.protocol+"://"+this.hostName+"/remote_configs/"+this.remoteConfigsVersion,this.initializeUrlPath="init",this.eventsUrlPath="events",this.useGzip=!1}u=e.http||(e.http={}),p=e.state.GAState,S=e.logging.GALogger,c=e.utilities.GAUtilities,A=e.validators.GAValidator,h=e.tasks.SdkErrorTask,v=e.events.EGASdkErrorCategory,g=e.events.EGASdkErrorArea,f=e.events.EGASdkErrorAction,m=e.events.EGASdkErrorParameter,y.prototype.requestInit=function(e,n){var t=p.getGameKey(),i=this.remoteConfigsBaseUrl+"/"+this.initializeUrlPath+"?game_key="+t+"&interval_seconds=0&configs_hash="+e,r=p.getInitAnnotations(),a=JSON.stringify(r);if(a){var s=this.createPayloadData(a,this.useGzip),o=[];o.push(a),y.sendRequest(i,s,o,this.useGzip,y.initRequestCallback,n)}else n(u.EGAHTTPApiResponse.JsonEncodeFailed,null)},y.prototype.sendEventsInArray=function(e,n,t){if(0!=e.length){var i=p.getGameKey(),r=this.baseUrl+"/"+i+"/"+this.eventsUrlPath,a=JSON.stringify(e);if(a){var s=this.createPayloadData(a,this.useGzip),o=[];o.push(a),o.push(n),o.push(e.length.toString()),y.sendRequest(r,s,o,this.useGzip,y.sendEventInArrayRequestCallback,t)}else t(u.EGAHTTPApiResponse.JsonEncodeFailed,null,n,e.length)}},y.prototype.sendSdkErrorEvent=function(e,n,t,i,r,a,s){if(p.isEventSubmissionEnabled()&&A.validateSdkErrorEvent(a,s,e,n,t)){var o,d=this.baseUrl+"/"+a+"/"+this.eventsUrlPath,l="",u=p.getSdkErrorEventAnnotations(),c=y.sdkErrorCategoryString(e);l+=u.error_category=c;var v=y.sdkErrorAreaString(n);l+=":"+(u.error_area=v);var g=y.sdkErrorActionString(t);u.error_action=g;var f=y.sdkErrorParameterString(i);if(0y.MAX_ERROR_MESSAGE_LENGTH&&(m=r.substring(0,y.MAX_ERROR_MESSAGE_LENGTH)),u.reason=m}var E=[];E.push(u),(o=JSON.stringify(E))?h.execute(d,l,o,s):S.w("sendSdkErrorEvent: JSON encoding failed.")}},y.sendEventInArrayRequestCallback=function(e,n,t,i){void 0===i&&(i=null),i[0],i[1];var r,a,s=i[2],o=parseInt(i[3]);r=e.responseText,a=e.status;var d=y.instance.processRequestResponse(a,e.statusText,r,"Events");if(d==u.EGAHTTPApiResponse.Ok||d==u.EGAHTTPApiResponse.Created||d==u.EGAHTTPApiResponse.BadRequest){var l=r?JSON.parse(r):{};if(null==l)return t(u.EGAHTTPApiResponse.JsonDecodeFailed,null,s,o),void y.instance.sendSdkErrorEvent(v.Http,g.EventsHttp,f.FailHttpJsonDecode,m.Undefined,r,p.getGameKey(),p.getGameSecret());u.EGAHTTPApiResponse.BadRequest,t(d,l,s,o)}else t(d,null,s,o)},y.sendRequest=function(e,n,t,i,r,a){var s=new XMLHttpRequest,o=p.getGameSecret(),d=c.getHmac(o,n),l=[];for(var u in l.push(d),t)l.push(t[u]);if(s.onreadystatechange=function(){4===s.readyState&&r(s,e,a,l)},s.open("POST",e,!0),s.setRequestHeader("Content-Type","application/json"),s.setRequestHeader("Authorization",d),i)throw new Error("gzip not supported");try{s.send(n)}catch(e){console.error(e.stack)}},y.initRequestCallback=function(e,n,t,i){var r,a;void 0===i&&(i=null),i[0],i[1],r=e.responseText,a=e.status;var s=r?JSON.parse(r):{},o=y.instance.processRequestResponse(a,e.statusText,r,"Init");if(o==u.EGAHTTPApiResponse.Ok||o==u.EGAHTTPApiResponse.Created||o==u.EGAHTTPApiResponse.BadRequest){if(null==s)return t(u.EGAHTTPApiResponse.JsonDecodeFailed,null,"",0),void y.instance.sendSdkErrorEvent(v.Http,g.InitHttp,f.FailHttpJsonDecode,m.Undefined,r,p.getGameKey(),p.getGameSecret());if(o!==u.EGAHTTPApiResponse.BadRequest){var d=A.validateAndCleanInitRequestResponse(s,o===u.EGAHTTPApiResponse.Created);d?t(o,d,"",0):t(u.EGAHTTPApiResponse.BadResponse,null,"",0)}else t(o,null,"",0)}else t(o,null,"",0)},y.prototype.createPayloadData=function(e,n){if(n)throw new Error("gzip not supported");return e},y.prototype.processRequestResponse=function(e,n,t,i){return t?200===e?u.EGAHTTPApiResponse.Ok:201===e?u.EGAHTTPApiResponse.Created:0===e||401===e?u.EGAHTTPApiResponse.Unauthorized:400===e?u.EGAHTTPApiResponse.BadRequest:500===e?u.EGAHTTPApiResponse.InternalServerError:u.EGAHTTPApiResponse.UnknownResponseCode:u.EGAHTTPApiResponse.NoResponse},y.sdkErrorCategoryString=function(e){switch(e){case v.EventValidation:return"event_validation";case v.Database:return"db";case v.Init:return"init";case v.Http:return"http";case v.Json:return"json"}return""},y.sdkErrorAreaString=function(e){switch(e){case g.BusinessEvent:return"business";case g.ResourceEvent:return"resource";case g.ProgressionEvent:return"progression";case g.DesignEvent:return"design";case g.ErrorEvent:return"error";case g.InitHttp:return"init_http";case g.EventsHttp:return"events_http";case g.ProcessEvents:return"process_events";case g.AddEventsToStore:return"add_events_to_store"}return""},y.sdkErrorActionString=function(e){switch(e){case f.InvalidCurrency:return"invalid_currency";case f.InvalidShortString:return"invalid_short_string";case f.InvalidEventPartLength:return"invalid_event_part_length";case f.InvalidEventPartCharacters:return"invalid_event_part_characters";case f.InvalidStore:return"invalid_store";case f.InvalidFlowType:return"invalid_flow_type";case f.StringEmptyOrNull:return"string_empty_or_null";case f.NotFoundInAvailableCurrencies:return"not_found_in_available_currencies";case f.InvalidAmount:return"invalid_amount";case f.NotFoundInAvailableItemTypes:return"not_found_in_available_item_types";case f.WrongProgressionOrder:return"wrong_progression_order";case f.InvalidEventIdLength:return"invalid_event_id_length";case f.InvalidEventIdCharacters:return"invalid_event_id_characters";case f.InvalidProgressionStatus:return"invalid_progression_status";case f.InvalidSeverity:return"invalid_severity";case f.InvalidLongString:return"invalid_long_string";case f.DatabaseTooLarge:return"db_too_large";case f.DatabaseOpenOrCreate:return"db_open_or_create";case f.JsonError:return"json_error";case f.FailHttpJsonDecode:return"fail_http_json_decode";case f.FailHttpJsonEncode:return"fail_http_json_encode"}return""},y.sdkErrorParameterString=function(e){switch(e){case m.Currency:return"currency";case m.CartType:return"cart_type";case m.ItemType:return"item_type";case m.ItemId:return"item_id";case m.Store:return"store";case m.FlowType:return"flow_type";case m.Amount:return"amount";case m.Progression01:return"progression01";case m.Progression02:return"progression02";case m.Progression03:return"progression03";case m.EventId:return"event_id";case m.ProgressionStatus:return"progression_status";case m.Severity:return"severity";case m.Message:return"message"}return""},y.instance=new y,y.MAX_ERROR_MESSAGE_LENGTH=256,n=y,u.GAHTTPApi=n}(gameanalytics=gameanalytics||{}),function(E){var g,f,m,p,S,A,h,l,y,b,e;function C(){}g=E.events||(E.events={}),f=E.store.GAStore,m=E.store.EGAStore,p=E.store.EGAStoreArgsOperator,S=E.state.GAState,A=E.logging.GALogger,h=E.utilities.GAUtilities,l=E.http.EGAHTTPApiResponse,y=E.http.GAHTTPApi,b=E.validators.GAValidator,C.customEventFieldsErrorCallback=function(e,n){if(S.isEventSubmissionEnabled()){var t=new Date;C.timestampMap[e]||(C.timestampMap[e]=t),C.countMap[e]||(C.countMap[e]=0),3600<=(t.getTime()-C.timestampMap[e].getTime())/1e3&&(C.timestampMap[e]=t,C.countMap[e]=0),C.countMap[e]>=C.MAX_ERROR_COUNT||E.threading.GAThreading.performTaskOnGAThread(function(){C.addErrorEvent(E.EGAErrorSeverity.Warning,n,null,!0),C.countMap[e]=C.countMap[e]+1})}},C.addSessionStartEvent=function(){if(S.isEventSubmissionEnabled()){var e={};e.category=C.CategorySessionStart,S.incrementSessionNum(),f.setItem(S.getGameKey(),S.SessionNumKey,S.getSessionNum().toString()),C.addDimensionsToEvent(e);var n=S.instance.currentGlobalCustomEventFields;C.addCustomFieldsToEvent(e,S.validateAndCleanCustomFields(n,C.customEventFieldsErrorCallback)),C.addEventToStore(e),A.i("Add SESSION START event"),C.processEvents(C.CategorySessionStart,!1)}},C.addSessionEndEvent=function(){if(S.isEventSubmissionEnabled()){var e=S.getSessionStart(),n=S.getClientTsAdjusted()-e;n<0&&(A.w("Session length was calculated to be less then 0. Should not be possible. Resetting to 0."),n=0);var t={};t.category=C.CategorySessionEnd,t.length=n,C.addDimensionsToEvent(t);var i=S.instance.currentGlobalCustomEventFields;C.addCustomFieldsToEvent(t,S.validateAndCleanCustomFields(i,C.customEventFieldsErrorCallback)),C.addEventToStore(t),A.i("Add SESSION END event."),C.processEvents("",!1)}},C.addBusinessEvent=function(e,n,t,i,r,a,s){if(void 0===r&&(r=null),S.isEventSubmissionEnabled()){var o=b.validateBusinessEvent(e,n,r,t,i);if(null==o){var d={};S.incrementTransactionNum(),f.setItem(S.getGameKey(),S.TransactionNumKey,S.getTransactionNum().toString()),d.event_id=t+":"+i,d.category=C.CategoryBusiness,d.currency=e,d.amount=n,d[S.TransactionNumKey]=S.getTransactionNum(),r&&(d.cart_type=r),C.addDimensionsToEvent(d);var l={};if(a&&0C.MaxEventCount){if(!(s=f.select(m.Events,i,!0,C.MaxEventCount)))return;var o=s[s.length-1].client_ts;if(i.push(["client_ts",p.LessOrEqual,o]),!(s=f.select(m.Events,i)))return;r.push(["client_ts",p.LessOrEqual,o])}if(A.i("Event queue: Sending "+s.length+" events."),!f.update(m.Events,a,r))return;for(var d=[],l=0;l\nrepositories {\n maven { url 'https://maven.gameanalytics.com/release' }\n maven { url 'https://maven.google.com' }\n}\n\ndependencies {\n implementation \"com.gameanalytics.sdk:gameanalytics-android:6.2.9\"\n implementation 'com.google.android.gms:play-services-appset:16.0.2'\n}\n", + "hasConvertedCodeInjection": true, + "ioscodeinjection": "", + "tvoscodeinjection": "", + "iosSystemFrameworkEntries": [ + {"resourceType":"GMExtensionFrameworkEntry","resourceVersion":"1.0","name":"AdSupport.framework","weakReference":false,"embed":0,}, + {"resourceType":"GMExtensionFrameworkEntry","resourceVersion":"1.0","name":"SystemConfiguration.framework","weakReference":false,"embed":0,}, + ], + "tvosSystemFrameworkEntries": [], + "iosThirdPartyFrameworkEntries": [], + "tvosThirdPartyFrameworkEntries": [], + "IncludedResources": [], + "androidPermissions": [ + "android.permission.INTERNET", + "android.permission.ACCESS_NETWORK_STATE", + ], + "copyToTargets": 35184372089070, + "iosCocoaPods": "", + "tvosCocoaPods": "", + "iosCocoaPodDependencies": "", + "tvosCocoaPodDependencies": "", + "parent": { + "name": "확장 기능", + "path": "folders/확장 기능.yy", + }, +} \ No newline at end of file diff --git a/extensions/GameAnalyticsExt/GameAnalyticsIOS.ext b/extensions/GameAnalyticsExt/GameAnalyticsIOS.ext new file mode 100644 index 00000000..e69de29b diff --git a/extensions/GameAnalyticsExt/GameAnalytics_x64.dll b/extensions/GameAnalyticsExt/GameAnalytics_x64.dll new file mode 100644 index 00000000..211dc751 Binary files /dev/null and b/extensions/GameAnalyticsExt/GameAnalytics_x64.dll differ diff --git a/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsExt.h b/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsExt.h new file mode 100644 index 00000000..1b1a2e57 --- /dev/null +++ b/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsExt.h @@ -0,0 +1,40 @@ +@interface GameAnalyticsExt : NSObject +{ +} + +-(void)configureAvailableCustomDimensions01:(char *)list; +-(void)configureAvailableCustomDimensions02:(char *)list; +-(void)configureAvailableCustomDimensions03:(char *)list; +-(void)configureAvailableResourceCurrencies:(char *)list; +-(void)configureAvailableResourceItemTypes:(char *)list; +-(void)configureBuild:(char *)build; +-(void)configureSdkGameEngineVersion:(char *)gameEngineSdkVersion; +-(void)configureGameEngineVersion:(char *)gameEngineVersion; +-(void)configureUserId:(char *)userId; +-(void)initialize:(char *)gameKey gameSecret:(char *)gameSecret; +-(void)addBusinessEventJson:(char *)json; +-(void)addBusinessEvent:(char *)currency amount:(double)amount itemType:(char *)itemType itemId:(char *)itemId cartType:(char *)cartType; +-(void)addBusinessEventWithReceipt:(char *)currency amount:(double)amount itemType:(char *)itemType itemId:(char *)itemId cartType:(char *)cartType receipt:(char *)receipt; +-(void)addBusinessEventAndAutoFetchReceipt:(char *)currency amount:(double)amount itemType:(char *)itemType itemId:(char *)itemId cartType:(char *)cartType; +-(void)addResourceEventJson:(char *)json; +-(void)addResourceEvent:(double)flowType currency:(char *)currency amount:(double)amount itemType:(char *)itemType itemId:(char *)itemId; +-(void)addProgressionEvent:(double)progressionStatus progression01:(char *)progression01 progression02:(char *)progression02 progression03:(char *)progression03; +-(void)addProgressionEventWithScoreJson:(char *)json; +-(void)addProgressionEventWithScore:(double)progressionStatus progression01:(char *)progression01 progression02:(char *)progression02 progression03:(char *)progression03 score:(double)score; +-(void)addDesignEvent:(char *)eventId; +-(void)addDesignEventWithValue:(char *)eventId value:(double)value; +-(void)addErrorEvent:(double)severity message:(char *)message; +-(void)setEnabledInfoLog:(double)flag; +-(void)setEnabledVerboseLog:(double)flag; +-(void)setManualSessionHandling:(double)flag; +-(void)startSession; +-(void)endSession; +-(void)setCustomDimension01:(char *)customDimension; +-(void)setCustomDimension02:(char *)customDimension; +-(void)setCustomDimension03:(char *)customDimension; +-(const char *)getRemoteConfigsValueAsString:(char *)key; +-(const char *)getRemoteConfigsValueAsStringWithDefaultValue:(char *)key defaultValue:(char *)defaultValue; +-(double)isRemoteConfigsReady; +-(const char *)getRemoteConfigsContentAsString; + +@end diff --git a/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsExt.mm b/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsExt.mm new file mode 100644 index 00000000..003aa960 --- /dev/null +++ b/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsExt.mm @@ -0,0 +1,379 @@ +// +// GameAnalyticsUnity.m +// GA-SDK-IOS +// +// Copyright (c) GameAnalytics. All rights reserved. +// + +#import "GameAnalyticsExt.h" +#import "GameAnalytics.h" + +@implementation GameAnalyticsExt + +-(void)configureAvailableCustomDimensions01:(char *)list +{ + NSString *list_string = list != NULL ? [NSString stringWithUTF8String:list] : nil; + NSArray *list_array = nil; + if (list_string) { + list_array = [NSJSONSerialization JSONObjectWithData:[list_string dataUsingEncoding:NSUTF8StringEncoding] + options:kNilOptions + error:nil]; + } + [GameAnalytics configureAvailableCustomDimensions01:list_array]; +} + +-(void)configureAvailableCustomDimensions02:(char *)list +{ + NSString *list_string = list != NULL ? [NSString stringWithUTF8String:list] : nil; + NSArray *list_array = nil; + if (list_string) { + list_array = [NSJSONSerialization JSONObjectWithData:[list_string dataUsingEncoding:NSUTF8StringEncoding] + options:kNilOptions + error:nil]; + } + [GameAnalytics configureAvailableCustomDimensions02:list_array]; +} + +-(void)configureAvailableCustomDimensions03:(char *)list +{ + NSString *list_string = list != NULL ? [NSString stringWithUTF8String:list] : nil; + NSArray *list_array = nil; + if (list_string) { + list_array = [NSJSONSerialization JSONObjectWithData:[list_string dataUsingEncoding:NSUTF8StringEncoding] + options:kNilOptions + error:nil]; + } + [GameAnalytics configureAvailableCustomDimensions03:list_array]; +} + +-(void)configureAvailableResourceCurrencies:(char *)list +{ + NSString *list_string = list != NULL ? [NSString stringWithUTF8String:list] : nil; + NSArray *list_array = nil; + if (list_string) { + list_array = [NSJSONSerialization JSONObjectWithData:[list_string dataUsingEncoding:NSUTF8StringEncoding] + options:kNilOptions + error:nil]; + } + [GameAnalytics configureAvailableResourceCurrencies:list_array]; +} + +-(void)configureAvailableResourceItemTypes:(char *)list +{ + NSString *list_string = list != NULL ? [NSString stringWithUTF8String:list] : nil; + NSArray *list_array = nil; + if (list_string) { + list_array = [NSJSONSerialization JSONObjectWithData:[list_string dataUsingEncoding:NSUTF8StringEncoding] + options:kNilOptions + error:nil]; + } + [GameAnalytics configureAvailableResourceItemTypes:list_array]; +} + +-(void)configureSdkGameEngineVersion:(char *)gameEngineSdkVersion +{ + NSString *gameEngineSdkVersionString = gameEngineSdkVersion != NULL ? [NSString stringWithUTF8String:gameEngineSdkVersion] : nil; + [GameAnalytics configureSdkVersion:gameEngineSdkVersionString]; +} + +-(void)configureGameEngineVersion:(char *)gameEngineVersion +{ + NSString *gameEngineVersionString = gameEngineVersion != NULL ? [NSString stringWithUTF8String:gameEngineVersion] : nil; + [GameAnalytics configureEngineVersion:gameEngineVersionString]; +} + +-(void)configureBuild:(char *)build +{ + NSString *buildString = build != NULL ? [NSString stringWithUTF8String:build] : nil; + [GameAnalytics configureBuild:buildString]; +} + +-(void)configureUserId:(char *)userId +{ + NSString *userIdString = userId != NULL ? [NSString stringWithUTF8String:userId] : nil; + [GameAnalytics configureUserId:userIdString]; +} + +-(void)initialize:(char *)gameKey gameSecret:(char *)gameSecret{ + NSString *gameKeyString = gameKey != NULL ? [NSString stringWithUTF8String:gameKey] : nil; + NSString *gameSecretString = gameSecret != NULL ? [NSString stringWithUTF8String:gameSecret] : nil; + [GameAnalytics initializeWithGameKey:gameKeyString gameSecret:gameSecretString]; +} + +-(void)addBusinessEventJson:(char *)json +{ + NSString *json_string = json != NULL ? [NSString stringWithUTF8String:json] : nil; + + if(json_string) + { + NSArray *array = [NSJSONSerialization JSONObjectWithData:[json_string dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:nil]; + [GameAnalytics addBusinessEventWithCurrency:[array objectAtIndex:0] + amount:[[array objectAtIndex:1] integerValue] + itemType:[array objectAtIndex:2] + itemId:[array objectAtIndex:3] + cartType:[array objectAtIndex:4] + receipt:nil]; + } +} + +-(void)addBusinessEvent:(char *)currency amount:(double)amount itemType:(char *)itemType itemId:(char *)itemId cartType:(char *)cartType +{ + NSString *currencyString = currency != NULL ? [NSString stringWithUTF8String:currency] : nil; + NSInteger amountInteger = (NSInteger)((int)amount); + NSString *itemTypeString = itemType != NULL ? [NSString stringWithUTF8String:itemType] : nil; + NSString *itemIdString = itemId != NULL ? [NSString stringWithUTF8String:itemId] : nil; + NSString *cartTypeString = cartType != NULL ? [NSString stringWithUTF8String:cartType] : nil; + NSString *receiptString = nil; + + [GameAnalytics addBusinessEventWithCurrency:currencyString + amount:amountInteger + itemType:itemTypeString + itemId:itemIdString + cartType:cartTypeString + receipt:receiptString]; +} + +-(void)addBusinessEventWithReceipt:(char *)currency amount:(double)amount itemType:(char *)itemType itemId:(char *)itemId cartType:(char *)cartType receipt:(char *)receipt +{ + NSString *currencyString = currency != NULL ? [NSString stringWithUTF8String:currency] : nil; + NSInteger amountInteger = (NSInteger)((int)amount); + NSString *itemTypeString = itemType != NULL ? [NSString stringWithUTF8String:itemType] : nil; + NSString *itemIdString = itemId != NULL ? [NSString stringWithUTF8String:itemId] : nil; + NSString *cartTypeString = cartType != NULL ? [NSString stringWithUTF8String:cartType] : nil; + NSString *receiptString = receipt != NULL ? [NSString stringWithUTF8String:receipt] : nil; + + [GameAnalytics addBusinessEventWithCurrency:currencyString + amount:amountInteger + itemType:itemTypeString + itemId:itemIdString + cartType:cartTypeString + receipt:receiptString]; +} + +-(void)addBusinessEventAndAutoFetchReceipt:(char *)currency amount:(double)amount itemType:(char *)itemType itemId:(char *)itemId cartType:(char *)cartType +{ + NSString *currencyString = currency != NULL ? [NSString stringWithUTF8String:currency] : nil; + NSInteger amountInteger = (NSInteger)((int)amount); + NSString *itemTypeString = itemType != NULL ? [NSString stringWithUTF8String:itemType] : nil; + NSString *itemIdString = itemId != NULL ? [NSString stringWithUTF8String:itemId] : nil; + NSString *cartTypeString = cartType != NULL ? [NSString stringWithUTF8String:cartType] : nil; + + [GameAnalytics addBusinessEventWithCurrency:currencyString + amount:amountInteger + itemType:itemTypeString + itemId:itemIdString + cartType:cartTypeString + autoFetchReceipt:TRUE]; +} + +-(void)addResourceEventJson:(char *)json +{ + NSString *json_string = json != NULL ? [NSString stringWithUTF8String:json] : nil; + + if(json_string) + { + NSArray *array = [NSJSONSerialization JSONObjectWithData:[json_string dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:nil]; + [GameAnalytics addResourceEventWithFlowType:(GAResourceFlowType)[[array objectAtIndex:0] intValue] + currency:[array objectAtIndex:1] + amount:[array objectAtIndex:2] + itemType:[array objectAtIndex:3] + itemId:[array objectAtIndex:4]]; + } +} + +-(void)addResourceEvent:(double)flowType currency:(char *)currency amount:(double)amount itemType:(char *)itemType itemId:(char *)itemId +{ + NSString *currencyString = currency != NULL ? [NSString stringWithUTF8String:currency] : nil; + NSNumber *amountNumber = [NSNumber numberWithFloat:amount]; + NSString *itemTypeString = itemType != NULL ? [NSString stringWithUTF8String:itemType] : nil; + NSString *itemIdString = itemId != NULL ? [NSString stringWithUTF8String:itemId] : nil; + int flowTypeInt = (int)flowType; + + [GameAnalytics addResourceEventWithFlowType:(GAResourceFlowType)flowTypeInt + currency:currencyString + amount:amountNumber + itemType:itemTypeString + itemId:itemIdString]; +} + +-(void)addProgressionEvent:(double)progressionStatus progression01:(char *)progression01 progression02:(char *)progression02 progression03:(char *)progression03 +{ + NSString *progression01String = progression01 != NULL ? [NSString stringWithUTF8String:progression01] : nil; + NSString *progression02String = progression02 != NULL ? [NSString stringWithUTF8String:progression02] : nil; + NSString *progression03String = progression03 != NULL ? [NSString stringWithUTF8String:progression03] : nil; + int progressionStatusInt = (int)progressionStatus; + + if(progression01String && progression01String.length == 0) + { + progression01String = nil; + } + if(progression02String && progression02String.length == 0) + { + progression02String = nil; + } + if(progression03String && progression03String.length == 0) + { + progression03String = nil; + } + + [GameAnalytics addProgressionEventWithProgressionStatus:(GAProgressionStatus)progressionStatusInt + progression01:progression01String + progression02:progression02String + progression03:progression03String]; +} + +-(void)addProgressionEventWithScoreJson:(char *)json +{ + NSString *json_string = json != NULL ? [NSString stringWithUTF8String:json] : nil; + + if(json_string) + { + NSArray *array = [NSJSONSerialization JSONObjectWithData:[json_string dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:nil]; + + NSString *progression01String = [array objectAtIndex:1]; + NSString *progression02String = [array objectAtIndex:2]; + NSString *progression03String = [array objectAtIndex:3]; + + if(progression01String && progression01String.length == 0) + { + progression01String = nil; + } + if(progression02String && progression02String.length == 0) + { + progression02String = nil; + } + if(progression03String && progression03String.length == 0) + { + progression03String = nil; + } + + [GameAnalytics addProgressionEventWithProgressionStatus:(GAProgressionStatus)[[array objectAtIndex:0] intValue] + progression01:progression01String + progression02:progression02String + progression03:progression03String + score:[[array objectAtIndex:4] integerValue]]; + } +} + +-(void)addProgressionEventWithScore:(double)progressionStatus progression01:(char *)progression01 progression02:(char *)progression02 progression03:(char *)progression03 score:(double)score +{ + NSString *progression01String = progression01 != NULL ? [NSString stringWithUTF8String:progression01] : nil; + NSString *progression02String = progression02 != NULL ? [NSString stringWithUTF8String:progression02] : nil; + NSString *progression03String = progression03 != NULL ? [NSString stringWithUTF8String:progression03] : nil; + int progressionStatusInt = (int)progressionStatus; + + if(progression01String && progression01String.length == 0) + { + progression01String = nil; + } + if(progression02String && progression02String.length == 0) + { + progression02String = nil; + } + if(progression03String && progression03String.length == 0) + { + progression03String = nil; + } + + [GameAnalytics addProgressionEventWithProgressionStatus:(GAProgressionStatus)progressionStatusInt + progression01:progression01String + progression02:progression02String + progression03:progression03String + score:score]; +} + +-(void)addDesignEvent:(char *)eventId +{ + NSString *eventIdString = eventId != NULL ? [NSString stringWithUTF8String:eventId] : nil; + + [GameAnalytics addDesignEventWithEventId:eventIdString value:nil]; +} + +-(void)addDesignEventWithValue:(char *)eventId value:(double)value +{ + NSString *eventIdString = eventId != NULL ? [NSString stringWithUTF8String:eventId] : nil; + NSNumber *valueNumber = [NSNumber numberWithDouble:value]; + + [GameAnalytics addDesignEventWithEventId:eventIdString value:valueNumber]; +} + +-(void)addErrorEvent:(double)severity message:(char *)message +{ + NSString *messageString = message != NULL ? [NSString stringWithUTF8String:message] : nil; + int severityInt = (int)severity; + + [GameAnalytics addErrorEventWithSeverity:(GAErrorSeverity)severityInt message:messageString]; +} + +-(void)setEnabledInfoLog:(double)flag +{ + [GameAnalytics setEnabledInfoLog:(flag != 0.0)]; +} + +-(void)setEnabledVerboseLog:(double)flag +{ + [GameAnalytics setEnabledVerboseLog:(flag != 0.0)]; +} + +-(void)setManualSessionHandling:(double)flag +{ + [GameAnalytics setEnabledManualSessionHandling:(flag != 0.0)]; +} + +-(void)startSession +{ + [GameAnalytics startSession]; +} + +-(void)endSession +{ + [GameAnalytics endSession]; +} + +-(void)setCustomDimension01:(char *)customDimension +{ + NSString *customDimensionString = customDimension != NULL ? [NSString stringWithUTF8String:customDimension] : nil; + [GameAnalytics setCustomDimension01:customDimensionString]; +} + +-(void)setCustomDimension02:(char *)customDimension +{ + NSString *customDimensionString = customDimension != NULL ? [NSString stringWithUTF8String:customDimension] : nil; + [GameAnalytics setCustomDimension02:customDimensionString]; +} + +-(void)setCustomDimension03:(char *)customDimension +{ + NSString *customDimensionString = customDimension != NULL ? [NSString stringWithUTF8String:customDimension] : nil; + [GameAnalytics setCustomDimension03:customDimensionString]; +} + +-(const char *)getRemoteConfigsValueAsString:(char *)key +{ + NSString *keyString = key != NULL ? [NSString stringWithUTF8String:key] : nil; + NSString *result = [GameAnalytics getRemoteConfigsValueAsString:keyString]; + + return result != nil ? [result UTF8String] : NULL; +} + +-(const char *)getRemoteConfigsValueAsStringWithDefaultValue:(char *)key defaultValue:(char *)defaultValue +{ + NSString *keyString = key != NULL ? [NSString stringWithUTF8String:key] : nil; + NSString *defaultValueString = key != NULL ? [NSString stringWithUTF8String:defaultValue] : nil; + NSString *result = [GameAnalytics getRemoteConfigsValueAsString:keyString defaultValue:defaultValueString]; + + return result != nil ? [result UTF8String] : NULL; +} + +-(double)isRemoteConfigsReady +{ + return [GameAnalytics isRemoteConfigsReady] ? 1 : 0; +} + +-(const char *)getRemoteConfigsContentAsString +{ + NSString *result = [GameAnalytics getRemoteConfigsConfigurations]; + return result != nil ? [result UTF8String] : NULL; +} + +@end diff --git a/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsSDK/GameAnalytics.h b/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsSDK/GameAnalytics.h new file mode 100644 index 00000000..199d193f --- /dev/null +++ b/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsSDK/GameAnalytics.h @@ -0,0 +1,672 @@ +// +// GameAnalytics.h +// GA-SDK-IOS +// +// Copyright (c) 2015 GameAnalytics. All rights reserved. +// + +#import + +/*! + @enum + @discussion + This enum is used to specify flow in resource events + @constant GAResourceFlowTypeSource + Used when adding to a resource currency + @constant GAResourceFlowTypeSink + Used when subtracting from a resource currency + */ +typedef enum GAResourceFlowType : NSInteger { + GAResourceFlowTypeSource = 1, + GAResourceFlowTypeSink = 2 +} GAResourceFlowType; + + +/*! + @enum + @discussion + his enum is used to specify status for progression event + @constant GAProgressionStatusStart + User started progression + @constant GAProgressionStatusComplete + User succesfully ended a progression + @constant GAProgressionStatusFail + User failed a progression + */ +typedef enum GAProgressionStatus : NSInteger { + GAProgressionStatusStart = 1, + GAProgressionStatusComplete = 2, + GAProgressionStatusFail = 3 +} GAProgressionStatus; + + +/*! + @enum + @discussion + his enum is used to specify severity of an error event + @constant GAErrorSeverityDebug + @constant GAErrorSeverityInfo + @constant GAErrorSeverityWarning + @constant GAErrorSeverityError + @constant GAErrorSeverityCritical + */ +typedef enum GAErrorSeverity : NSInteger { + GAErrorSeverityDebug = 1, + GAErrorSeverityInfo = 2, + GAErrorSeverityWarning = 3, + GAErrorSeverityError = 4, + GAErrorSeverityCritical = 5 +} GAErrorSeverity; + +//Similar to IRemoteConfigsListener in the GameAnalytics Android library +@protocol GARemoteConfigsDelegate +@optional +- (void) onRemoteConfigsUpdated; // Updated everytime when configurations are added +@end + + + +@class GameAnalytics; + +@interface GameAnalytics : NSObject + + +/*! + @method + + @abstract Define available 1st custom dimensions + + @discussion Example usage: +

+ NSArray *dimensionArray = @[@"dimA", @"dimB", @"dimC"];
+ [GameAnalytics configureAvailableCustomDimensions01:dimensionArray]; +
+ + @param customDimensions + Must be an array of strings.
+ Array max length=20, String max length=32) + + @availability Available since 2.0.0 + + @attribute Note! This method must be called before initializing the SDK + */ ++ (void)configureAvailableCustomDimensions01:(NSArray *)customDimensions; + +/*! + @method + + @abstract Set available 2nd custom dimensions + + @discussion Example usage: +

+ NSArray *available = @[@"dimD", @"dimE", @"dimF"];
+ [GameAnalytics configureAvailableCustomDimensions02:dimensionArray; +
+ + @param customDimensions + Must be an array of strings.
+ (Array max length=20, String max length=32) + + @availability Available since 2.0.0 + + @attribute Note! This method must be called before initializing the SDK + */ ++ (void)configureAvailableCustomDimensions02:(NSArray *)customDimensions; + +/*! + @method + + @abstract Set available 3rd custom dimensions + + @discussion Example usage: +

+ NSArray *available = @[@"dimA", @"dimB", @"dimC"];
+ [GameAnalytics configureAvailableCustomDimensions03:dimensionArray]; +
+ + @param customDimensions + Must be an array of strings.
+ (Array max length=20, String max length=32) + + @availability Available since 2.0.0 + + @attribute Note! This method must be called before initializing the SDK + */ ++ (void)configureAvailableCustomDimensions03:(NSArray *)customDimensions; + +/*! + @method + + @abstract Set available resource currencies + + @discussion Example usage: +

+ NSArray *availableCurrencies = @[@"gems", @"gold"];
+ [GameAnalytics configureAvailableResourceCurrencies:availableCurrencies]; +
+ + @param resourceCurrencies + Must be an array of strings.
+ (Array max length=20, String max length=32) + + @availability Available since 2.0.0 + + @attribute Note! This method must be called before initializing the SDK + */ ++ (void)configureAvailableResourceCurrencies:(NSArray *)resourceCurrencies; + +/*! + @method + + @abstract Set available resource item types + + @discussion Example usage: +

+ NSArray *availableItemTypes = @[@"upgrades", @"powerups"];
+ [GameAnalytics configureAvailableResourceItemTypes:availableItemTypes]; +
+ + @param resourceItemTypes + Must be an array of strings.
+ (Array max length=20, String max length=32) + + @availability Available since 2.0.0 + + @attribute Note! This method must be called before initializing the SDK + */ ++ (void)configureAvailableResourceItemTypes:(NSArray *)resourceItemTypes; + +/*! + @method + + @abstract Set app build version + + @discussion Example usage: +

+ [GameAnalytics configureBuild:@"0.0.1"];
+ 
+ + @param build + (String max length=32) + + @availability Available since 2.0.0 + + @attribute Note! This method must be called before initializing the SDK + */ ++ (void)configureBuild:(NSString *)build; + +/*! + @method + + @abstract Set a custom unique user_id identifying the user. + + @discussion Example usage: +

+ [GameAnalytics configureUserId:@"24566"];
+ 
+ + @param userId + (String max length=64) + + @availability Available since 2.2.0 + + @attribute Note! This method must be called before initializing the SDK + */ ++ (void)configureUserId:(NSString *)userId; + + +/* @IF WRAPPER */ + +/* + Used ONLY by GameAnalytics wrapper SDK's (for example Unity). + Never call this manually! + */ ++ (void)configureSdkVersion:(NSString *)wrapperSdkVersion; +/* @ENDIF WRAPPER */ + +/*! + @method + + @abstract Set app engine version + + @discussion Example usage: +

+ [GameAnalytics configureEngineVersion:@"unreal 4.8.1"];
+ 
+ + @param engineVersion + (String) + + @availability Available since 2.0.0 + + @attribute Note! This method must be called before initializing the SDK + */ ++ (void)configureEngineVersion:(NSString *)engineVersion; + +/*! + @method + + @abstract Configure the game key and secret key before initializing. Used by certain frameworks (like Frabric.io) needing to set the keys during configure phase. + + @discussion + Example usage: +

+ [GameAnalytics configureGameKey:@"123456789ABCDEFGHIJKLMNOPQRSTU" gameSecret:@"123456789ABCDEFGHIJKLMNOPQRSTU12345678"];
+ 
+ + @param gameKey + (String) + @param gameSecret + (String) + + @availability Available since 2.0.8 + + */ ++ (void)configureGameKey:(NSString *)gameKey + gameSecret:(NSString *)gameSecret; + +/*! + @method + + @abstract Initialize GameAnalytics SDK + + @discussion + Example usage: +

+ [GameAnalytics initializeWithGameKey:@"123456789ABCDEFGHIJKLMNOPQRSTU" gameSecret:@"123456789ABCDEFGHIJKLMNOPQRSTU12345678"];
+ 
+ + @param gameKey + (String) + @param gameSecret + (String) + + @availability Available since 2.0.0 + */ ++ (void)initializeWithGameKey:(NSString *)gameKey + gameSecret:(NSString *)gameSecret; + + + +/*! + @method + + @abstract Initialize GameAnalytics SDK when the game key and game secret has been configured earlier. + + @discussion Example usage: +

+ [GameAnalytics initializeWithConfiguredGameKeyAndGameSecret];
+ 
+ + @availability Available since 2.0.8 + + @attribute Note! This method can only be used if the configureGameKey:gameSecret: method is called before. + + */ ++ (void)initializeWithConfiguredGameKeyAndGameSecret; + + +/*! + @method + + @abstract Add new business event with receipt + + @param currency + Currency code in ISO 4217 format. (e.g. USD) + @param amount + Amount in cents (int). (e.g. 99) + @param itemType + Item Type bought. (e.g. Gold Pack) + @param itemId + Item bought. (e.g. 1000 gold) + @param receipt + Transaction receipt string. (Optional, can be nil) + + @availability Available since 2.0.0 + + @attribute Note! This method cannot be called before initialize method has been triggered + */ ++ (void)addBusinessEventWithCurrency:(NSString *)currency + amount:(NSInteger)amount + itemType:(NSString *)itemType + itemId:(NSString *)itemId + cartType:(NSString *)cartType + receipt:(NSString *)receipt; + +/*! + @method + + @abstract Add new business event + + @param currency + Currency code in ISO 4217 format. (e.g. USD) + @param amount + (Integer) Amount in cents. (e.g. 99) + @param itemType + Item Type bought. (e.g. Gold Pack) + @param itemId + Item bought. (e.g. 1000 gold) + @param autoFetchReceipt + Should the SDK automatically fetch the transaction receipt and add it to the event + + @availability Available since 1.0.0 + + @attribute Note! This method cannot be called before initialize method has been triggered + */ ++ (void)addBusinessEventWithCurrency:(NSString *)currency + amount:(NSInteger)amount + itemType:(NSString *)itemType + itemId:(NSString *)itemId + cartType:(NSString *)cartType + autoFetchReceipt:(BOOL)autoFetchReceipt; + +/*! + @method + + @abstract Add new resource event + + @param flowType + Add or substract resource.
(See. GAResourceFlowType) + @param currency + One of the available currencies set in configureAvailableResourceCurrencies + @param amount + Amount sourced or sinked + @param itemType + One of the available item types set in configureAvailableResourceItemTypes + @param itemId + Item id (string max length=32) + + @availability Available since 2.0.0 + + @attribute Note! This method cannot be called before initialize method has been triggered + */ ++ (void)addResourceEventWithFlowType:(GAResourceFlowType)flowType + currency:(NSString *)currency + amount:(NSNumber *)amount + itemType:(NSString *)itemType + itemId:(NSString *)itemId; + +/*! + @method + + @abstract Add new progression event + + @param progressionStatus + Status of added progression.
(See. GAProgressionStatus) + @param progression01 + 1st progression (e.g. world01) + @param progression02 + 2nd progression (e.g. level01) + @param progression03 + 3rd progression (e.g. phase01) + + @availability Available since 1.0.0 + + @attribute Note! This method cannot be called before initialize method has been triggered + */ ++ (void)addProgressionEventWithProgressionStatus:(GAProgressionStatus)progressionStatus + progression01:(NSString *)progression01 + progression02:(NSString *)progression02 + progression03:(NSString *)progression03; + +/*! + @method + + @abstract Add new progression event with score + + @param progressionStatus + Status of added progression.
(See. GAProgressionStatus) + @param progression01 + 1st progression (e.g. world01) + @param progression02 + 2nd progression (e.g. level01) + @param progression03 + 3rd progression (e.g. phase01) + + @availability Available since 2.0.0 + + @attribute Note! This method cannot be called before initialize method has been triggered + */ ++ (void)addProgressionEventWithProgressionStatus:(GAProgressionStatus)progressionStatus + progression01:(NSString *)progression01 + progression02:(NSString *)progression02 + progression03:(NSString *)progression03 + score:(NSInteger)score; + +/*! + @method + + @abstract Add new design event without a value + + @param eventId + String can consist of 1 to 5 segments.
+ Segments are seperated by ':' and segments can have a max length of 32.
+ (e.g. segment1:anotherSegment:gold) + + @availability Available since 2.0.0 + + @attribute Note! This method cannot be called before initialize method has been triggered + */ ++ (void)addDesignEventWithEventId:(NSString *)eventId; + +/*! + @method + + @abstract Add new design event with a value + + @param eventId + String can consist of 1 to 5 segments.
+ segments are seperated by ':' and segments can have a max length of 32.
+ (e.g. segment1:anotherSegment:gold) + @param value + Number value of event + + @availability Available since 2.0.0 + + @attribute Note! This method cannot be called before initialize method has been triggered + */ ++ (void)addDesignEventWithEventId:(NSString *)eventId + value:(NSNumber *)value; + + +/*! + @method + + @abstract Add new error event + + @param severity + Severity of error (See. GAErrorSeverity) + @param message + Error message (Optional, can be nil) + + @availability Available since 2.0.0 + + @attribute Note! This method cannot be called before initialize method has been triggered + */ ++ (void)addErrorEventWithSeverity:(GAErrorSeverity)severity + message:(NSString *)message; + +/*! + @method + + @abstract Get remote configs value as string + + @param key + The key declared in the webtool + + @availability Available since (TBD) + + @attribute Note! This method cannot be called before initialize method has been triggered + */ ++ (NSString *)getRemoteConfigsValueAsString:(NSString*) key; + + +/*! + @method + + @abstract Get remote configs value as string + + @param key + The key declared in the webtool + + @param defaultValue + Fallback default value for when the method does not find a value under the specified key + + @availability Available since (TBD) + + @attribute Note! This method cannot be called before initialize method has been triggered + */ ++ (NSString *) getRemoteConfigsValueAsString:(NSString *) key + defaultValue:(NSString *)defaultValue; + +/*! + @method + + @abstract Get remote configs configurations + + @availability Available since (TBD) + + @attribute For internal use. + */ ++ (NSString *) getRemoteConfigsConfigurations; + +/*! + @method + + @abstract Use this to set the delegate for the Remote Configs to retreive information about the status of loading configurations + + @availability Available since (TBD) + */ ++ (void) setRemoteConfigsDelegate:(id)newDelegate; + +/*! + @method + + @abstract Call for checking if remote configs values are loaded and ready + + @availability Available since (TBD) + + @attribute Note! This method should not be called before initialize method has been triggered + */ ++ (BOOL) isRemoteConfigsReady; + +/*! + @method + + @abstract Enable info logging to console + + @param flag + Enable or disable info log mode + + @availability Available since 2.0.0 + + */ ++ (void)setEnabledInfoLog:(BOOL)flag; + + +/*! + @method + + @abstract Enable verbose info logging of analytics. Will output event JSON data to console. + + @param flag + Enable or disable verbose info log mode + + @availability Available since 2.0.0 + + */ ++ (void)setEnabledVerboseLog:(BOOL)flag; + + +/*! + @method + + @abstract Enable manual session handling. + This will disable the automatic session stop/start when the app goes to background/foreground and it is then needed to call endSession & startSession manually. + Remember to call endSession when the app is going to background. + The first session will always be started automatically when initialize is called. + + @param flag + Enable or disable manual session handling. + + @availability Available since 2.2.2 + + */ ++ (void)setEnabledManualSessionHandling:(BOOL)flag; + + +/*! + @method + + @abstract Start a new session. + - if sdk is initialized + - if manual session handling is enabled + If a current session is currently active then it will end this session and start a new. + + + @availability Available since 2.2.2 + + */ ++ (void)startSession; + + +/*! + @method + + @abstract End an active session. + - if sdk is initialized + - manual session handling is enabled + - a session is active + + @availability Available since 2.2.2 + + */ ++ (void)endSession; + + +/*! + @method + + @abstract Set 1st custom dimension + + @param dimension01 + One of the available dimension values set in configureAvailableCustomDimensions01
+ Will persist cross session. Set to nil to reset. + + @availability Available since 2.0.0 + + @attribute Note! Must be called after setAvailableCustomDimensions01WithCustomDimensions + */ ++ (void)setCustomDimension01:(NSString *)dimension01; + +/*! + @method + + @abstract Set 2nd custom dimension + + @param dimension02 + One of the available dimension values set in configureAvailableCustomDimensions02
+ Will persist cross session. Set to nil to reset. + + @availability Available since 2.0.0 + + @attribute Note! Must be called after setAvailableCustomDimensions02 + */ ++ (void)setCustomDimension02:(NSString *)dimension02; + +/*! + @method + + @abstract Set 3rd custom dimension + + @param dimension03 + One of the available dimension values set in configureAvailableCustomDimensions03
+ Will persist cross session. Set to nil to reset. + + @availability Available since 2.0.0 + + @attribute Note! Must be called after setAvailableCustomDimensions03W + */ ++ (void)setCustomDimension03:(NSString *)dimension03; + +@end diff --git a/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsSDK/libGameAnalytics.a b/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsSDK/libGameAnalytics.a new file mode 100644 index 00000000..f5a5dc01 Binary files /dev/null and b/extensions/GameAnalyticsExt/iOSSource/GameAnalyticsSDK/libGameAnalytics.a differ diff --git a/extensions/GameAnalyticsExt/libGameAnalytics.dylib b/extensions/GameAnalyticsExt/libGameAnalytics.dylib new file mode 100644 index 00000000..3e827aa9 Binary files /dev/null and b/extensions/GameAnalyticsExt/libGameAnalytics.dylib differ diff --git a/extensions/GameAnalyticsExt/libGameAnalytics.so b/extensions/GameAnalyticsExt/libGameAnalytics.so new file mode 100644 index 00000000..4d2fc569 Binary files /dev/null and b/extensions/GameAnalyticsExt/libGameAnalytics.so differ diff --git a/objects/code/Create_0.gml b/objects/code/Create_0.gml index 75c63f49..a91a0e64 100644 --- a/objects/code/Create_0.gml +++ b/objects/code/Create_0.gml @@ -6,11 +6,15 @@ twitch_chat_connect("woowakgood","우왁굳","oauth:43rzue6rdcldus9fomqrwmtfuaum + + //discord presence #macro DISCORD_APP_ID "1060792404300546049" ready = false; discord_presence_reloading = 0 +check_achievement_state = 0 +check_ending_credit_state = 0 if (!np_initdiscord(DISCORD_APP_ID, true, np_steam_app_id_empty)) { //show_error("NekoPresence init fail.", true); diff --git a/objects/code/Draw_73.gml b/objects/code/Draw_73.gml index 80c77ed2..b055f629 100644 --- a/objects/code/Draw_73.gml +++ b/objects/code/Draw_73.gml @@ -25,7 +25,7 @@ if global.choice > 0 { if global.show_credits > 0 { - draw_text_kl_scale(xx,yy-v_x*54,"다회차 플레이를 하시겠어요?",192*v_x,-1,global.choice,c_white,0,0,font0,1/2.5*v_x,1/2.5*v_x,0) + draw_text_kl_scale(xx,yy-v_x*54,"다회차 플레이를 하시겠어요? (총 플레이한 회차 : "+string(global.replayed)+"회)",192*v_x,-1,global.choice,c_white,0,0,font0,1/2.5*v_x,1/2.5*v_x,0) draw_text_kl_scale(xx,yy-v_x*16,"(플레이어가 현재 장비 중인 무기와, 최대 체력 및 도전과제를 제외하고 모든 데이터를 초기화합니다)",160*v_x,-1,global.choice*0.8,c_white,0,0,font0,1/3.5*v_x,1/3.5*v_x,0) draw_text_kl_scale(xx,yy+v_x*16,"(다회차 플레이시, 기존 몬스터들이 더욱 강력해지고, 히든 보스를 만나보실 수 있습니다)",160*v_x,-1,global.choice*0.8,c_white,0,0,font0,1/4*v_x,1/4*v_x,0) } diff --git a/objects/code/Other_10.gml b/objects/code/Other_10.gml index 17cc26ab..d9d894f3 100644 --- a/objects/code/Other_10.gml +++ b/objects/code/Other_10.gml @@ -1,6 +1,67 @@ -/// @description Insert description here +/// @description statistics // You can write your code in this editor +/** +//statistics +ga_setEnabledInfoLog(true); +ga_setEnabledVerboseLog(true); +ga_configureBuild(string(global.game_ver)); +var array = ga_array("golds","using_weapon","total_died","cleared_level","ending_fading","ending_cannot_rewind","ending_end_of_world","ending_gameover","ending_runner","total_replayed","maximum_upgrade","playtime","using_accesories"); +ga_configureAvailableResourceItemTypes(array); + + +ga_initialize("9b0ef5613e331d4d5f015817d5b6c7ba", "b65be6dc2ff3a35d6eba98df5cbc238af3509516"); + + +//보유 골드량 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "golds", string(global.gold)); + +//현재 사용중인 무기 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "using_weapon", string(global.n_sword)); + +//총 사망 횟수 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "total_died", string(global.total_died)); + +//총 클리어한 섹터 = 보스 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "cleared_level", string(global.opened_sector)); + +//소멸 엔딩 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "ending_fading", string(global.achievement_name[1])); + +//회귀 불능 엔딩 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "ending_cannot_rewind", string(global.achievement_name[2])); + +//세계의 종말 엔딩 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "ending_end_of_world", string(global.achievement_name[3])); + +//게임 오버 엔딩 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "ending_gameover", string(global.achievement_name[4])); + +//도망자 엔딩 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "ending_runner", string(global.achievement_name[5])); + +//다회차 횟수 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "total_replayed", string(global.replayed)); + + +var maximum_upgrades = 0; +for(var i = 0; i <= global.total_weapon_num; i++) +{ +//웨폰 보유 유무 + if global.weapon_upgraded[i] > maximum_upgrades + { + maximum_upgrades = global.weapon_upgraded[i]; + } +} + + +//무기 - 최대 강화량 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "maximum_upgrade", string(maximum_upgrades)); + +//플레이 타임 +ga_addProgressionEvent(GA_PROGRESSIONSTATUS_COMPLETE, "playtime", string(global.playtime)); + +**/ diff --git a/objects/code/Other_3.gml b/objects/code/Other_3.gml index 160e3b42..2ebc05e2 100644 --- a/objects/code/Other_3.gml +++ b/objects/code/Other_3.gml @@ -4,8 +4,9 @@ save_and_load_data(1,0) +//ga_onQuit(); if room != menu { //network_destroy(code.server); game_end(); -} \ No newline at end of file +} diff --git a/objects/code/Other_70.gml b/objects/code/Other_70.gml index 95f68067..065e3213 100644 --- a/objects/code/Other_70.gml +++ b/objects/code/Other_70.gml @@ -10,7 +10,7 @@ window_set_caption("Project Wak"); ready = true; show_debug_message("date: " + string(date_current_datetime())); np_setpresence_timestamps(date_current_datetime(), 0, false); -np_setpresence_more("Small image text", "Large image text", false); +np_setpresence_more("", "메인 매뉴", false); //np_setpresence() should ALWAYS come the last!! discord_presence_reloading = 1; diff --git a/objects/code/Step_1.gml b/objects/code/Step_1.gml index c97e5b81..27018c29 100644 --- a/objects/code/Step_1.gml +++ b/objects/code/Step_1.gml @@ -574,6 +574,7 @@ global.slow_motion += global.slow_motion*0.03 audio_stop_sound(global.boss_bgm_file) global.blur_range = 0 global.playing_scene = 0 + discord_presence_reloading = 1 obj_camera.t_x = _revive_xx obj_camera.t_y = _revive_yy obj_camera.x = _revive_xx diff --git a/objects/code/Step_2.gml b/objects/code/Step_2.gml index cdb126e4..21e95e02 100644 --- a/objects/code/Step_2.gml +++ b/objects/code/Step_2.gml @@ -10,9 +10,22 @@ if discord_presence_reloading > 0 discord_presence_reloading ++ } -if global.show_credits <= 0 && discord_presence_reloading > 30 +if check_achievement_state != global.show_achievement +{ +discord_presence_reloading = 1 +check_achievement_state = global.show_achievement +} + +if (check_ending_credit_state != 1 && instance_exists(obj_wakdroid_ending) && global.show_credits > 0) +{ +discord_presence_reloading = 1 +check_ending_credit_state = 1 +} + +if (global.show_credits <= 0 || check_ending_credit_state = 1) && discord_presence_reloading > 30 { var n_sword_text = "guarding_"+string(global.n_sword); +np_setpresence_more("", "", false); ////////////////////////////////////////////////////////////////////////////////// @@ -20,53 +33,51 @@ var n_sword_text = "guarding_"+string(global.n_sword); { global.n_sector_discord = -1 } - - if room = room_sector_B02_1 || room = room_sector_B02_2 + if (room = room_sector_B02_1 || room = room_sector_B02_2) { global.n_sector_discord = 2 } - if room = room_main { global.n_sector_discord = -3 } - - if room = room_sector_B03_2_remaked || room = room_sector_B03_3_remaked + if (room = room_sector_B03_2_remaked || room = room_sector_B03_3_remaked) { global.n_sector_discord = 3 } - if room = room_sector_B04_2 { global.n_sector_discord = 4 } - if room = room_sector_B05_2 { global.n_sector_discord = 5 } - if room = room_sector_B06_2 { global.n_sector_discord = 6 } - if room = room_sector_B07 { global.n_sector_discord = 7 } - if room = room_sector_outside { global.n_sector_discord = 0 } - if room = room_sector_runaway { global.n_sector_discord = -2 } - - + if global.show_achievement > 0 + { + global.n_sector_discord = -4 + } + if check_ending_credit_state = 1 + { + global.n_sector_discord = -5 + } + var n_sector_text = "해안가 근처 동굴 입구"; @@ -101,14 +112,63 @@ var n_sword_text = "guarding_"+string(global.n_sword); } else if global.n_sector_discord = -2 { + np_setpresence_more("", "장착 중인 무기", false); np_setpresence("Sector-B??", "연구소 탈출 중...", string(n_sword_text), ""); } else if global.n_sector_discord = -3 { - np_setpresence("Sector-Main", "아지트에서 정비 중...", string(n_sword_text), ""); + var cal_days = floor(global.left_time/24) + var cal_time = global.left_time - cal_days*24 + np_setpresence_more("", "장착 중인 무기", false); + np_setpresence("D-day ["+string(cal_days)+"일 "+string(cal_time)+"시간 남음]", "아지트에서 정비 중...", string(n_sword_text), ""); + } + else if global.n_sector_discord = -4 + { + var cleared_achievement = 0 + for(var i = 0; i <= 24; i++) + { + if global.achievement[i] > 0 + { + cleared_achievement ++ + } + } + np_setpresence("(총 달성한 도전과제 : "+string(cleared_achievement)+"/24)","도전과제 창","npc"+string(irandom_range(1,8)), ""); + } + else if global.n_sector_discord = -5 + { + var difficulty__ = "하드 코어" + if global.difficulty = 2 + { + difficulty__ = "매우 어려움" + } + if global.difficulty = 1.5 + { + difficulty__ = "어려움" + } + if global.difficulty = 1 + { + difficulty__ = "보통" + if global.time_plusment = 2 + { + difficulty__ = "쉬움" + if global.super_easy = 2 + { + difficulty__ = "매우 쉬움" + } + } + } + + var __ending_name = global.gameover_reason_title + if __ending_name = -4 + { + __ending_name = "엔딩 크레딧" + } + + np_setpresence(string(global.replayed)+"회차 / "+string(difficulty__)+" / "+string(global.total_died)+"회 사망",string(__ending_name),"npc"+string(irandom_range(1,8)), ""); } else { + np_setpresence_more("", "장착 중인 무기", false); np_setpresence(string(n_sector_text), "연구소 탐험 중...", string(n_sword_text), ""); } diff --git a/objects/obj_angel/Step_0.gml b/objects/obj_angel/Step_0.gml index 132d3e44..2c4f41c5 100644 --- a/objects/obj_angel/Step_0.gml +++ b/objects/obj_angel/Step_0.gml @@ -258,7 +258,11 @@ if activated = 1 { if !instance_exists(wall1) { - np_setpresence("창의 기사 엔젤로이드","연구소의 수호자", "spr_icon325", ""); + if global.show_credits <= 0 + { + np_setpresence_more("", "보스전", false); + np_setpresence("창의 기사 엔젤로이드","연구소의 수호자", "spr_icon325", ""); + } wall1 = instance_create_depth(x-560,1696,player.depth+3,obj_floor_tile3) diff --git a/objects/obj_guisangadoo/Step_0.gml b/objects/obj_guisangadoo/Step_0.gml index 989d292d..ad2ef256 100644 --- a/objects/obj_guisangadoo/Step_0.gml +++ b/objects/obj_guisangadoo/Step_0.gml @@ -205,7 +205,11 @@ b_alpha_ += (t_b_alpha_ - b_alpha_)*0.08 if !instance_exists(wall1) { instance_destroy(normal_mob) - np_setpresence("암흑 속의 왁귀상어","", "spr_icon325", ""); + if global.show_credits <= 0 + { + np_setpresence_more("", "보스전", false); + np_setpresence("암흑 속의 왁귀상어","", "spr_icon325", ""); + } wall1 = instance_create_depth(xstart-350,992,player.depth+3,obj_floor_tile3) wall1.image_xscale = -1 diff --git a/objects/obj_last_boss/Step_0.gml b/objects/obj_last_boss/Step_0.gml index 0930e4c0..f28c6bf6 100644 --- a/objects/obj_last_boss/Step_0.gml +++ b/objects/obj_last_boss/Step_0.gml @@ -188,7 +188,11 @@ else { if !instance_exists(wall1) { - np_setpresence("폭주한 왁드로이드","", "spr_icon325", ""); + if global.show_credits <= 0 + { + np_setpresence_more("", "보스전", false); + np_setpresence("폭주한 왁드로이드","", "spr_icon325", ""); + } wall1 = instance_create_depth(xstart-650,ystart-1200,player.depth+3,obj_floor_tile3) wall1.image_yscale = 32 diff --git a/objects/obj_map_tile7_2168193/Step_0.gml b/objects/obj_map_tile7_2168193/Step_0.gml index beb73c84..7fcc5171 100644 --- a/objects/obj_map_tile7_2168193/Step_0.gml +++ b/objects/obj_map_tile7_2168193/Step_0.gml @@ -51,7 +51,7 @@ global.show_guide_mes = "점점 이 연구소 지하의 끝이 보이는 것 같 } -if abs(player.x-2805) <= 32 && show_mes = 1 && global.show_credits = 0 +if abs(player.x-2805) <= 32 && show_mes = 1 && global.show_credits = 0 && instance_exists(obj_angel) { show_mes++ global.show_guide_mes_spr = 6 diff --git a/objects/obj_messi/Step_0.gml b/objects/obj_messi/Step_0.gml index f922ad90..88ccb402 100644 --- a/objects/obj_messi/Step_0.gml +++ b/objects/obj_messi/Step_0.gml @@ -601,7 +601,11 @@ if activated = 1 player.guarding = 2 if !instance_exists(wall1) { - np_setpresence("화염의 거대 안드로이드 메시","거대 왁두의 권속", "spr_icon325", ""); + if global.show_credits <= 0 + { + np_setpresence_more("", "보스전", false); + np_setpresence("화염의 거대 안드로이드 메시","거대 왁두의 권속", "spr_icon325", ""); + } wall1 = instance_create_depth(xstart-700,ystart-400,player.depth+3,obj_floor_tile3) diff --git a/objects/obj_simhae_doo/Step_0.gml b/objects/obj_simhae_doo/Step_0.gml index e1a9cc64..1e22bfa0 100644 --- a/objects/obj_simhae_doo/Step_0.gml +++ b/objects/obj_simhae_doo/Step_0.gml @@ -220,7 +220,11 @@ b_alpha_ += (t_b_alpha_ - b_alpha_)*0.08 { instance_destroy(normal_mob) + if global.show_credits <= 0 + { + np_setpresence_more("", "보스전", false); np_setpresence("암흑 속의 심해두","", "spr_icon325", ""); + } wall1 = instance_create_depth(xstart-520,992,player.depth+3,obj_floor_tile3) wall1.image_xscale = -1 diff --git a/objects/obj_twin_eye/Step_0.gml b/objects/obj_twin_eye/Step_0.gml index 8d3a056d..1ba02bf4 100644 --- a/objects/obj_twin_eye/Step_0.gml +++ b/objects/obj_twin_eye/Step_0.gml @@ -414,7 +414,12 @@ else { if !instance_exists(wall1) { - np_setpresence("객관안과 스킵안","", "spr_icon325", ""); + + if global.show_credits <= 0 + { + np_setpresence_more("", "보스전", false); + np_setpresence("객관안과 스킵안","", "spr_icon325", ""); + } wall1 = instance_create_depth(xstart-650,ystart-1200,player.depth+3,obj_floor_tile3) wall1.image_yscale = 32 diff --git a/objects/obj_wak_doo/Step_0.gml b/objects/obj_wak_doo/Step_0.gml index 2d0d2968..99d7b0ab 100644 --- a/objects/obj_wak_doo/Step_0.gml +++ b/objects/obj_wak_doo/Step_0.gml @@ -452,7 +452,11 @@ player.guarding = 2 if !instance_exists(wall1) { - np_setpresence("프로토타입 거대 왁두 mk.2","", "spr_icon325", ""); + if global.show_credits <= 0 + { + np_setpresence_more("", "보스전", false); + np_setpresence("프로토타입 거대 왁두 mk.2","", "spr_icon325", ""); + } wall1 = instance_create_depth(2368-200,512,player.depth+3,obj_floor_tile3) wall1.image_yscale = 4.5 diff --git a/objects/obj_wakdroid_ending/Step_0.gml b/objects/obj_wakdroid_ending/Step_0.gml index 6466c982..439ea755 100644 --- a/objects/obj_wakdroid_ending/Step_0.gml +++ b/objects/obj_wakdroid_ending/Step_0.gml @@ -925,6 +925,7 @@ global.never_move = 1 player.image_alpha = 0 show_cinematic_sec = 1 room_goto(tuto_room) + global.gameover_reason_title = "[진엔딩]" bgm__ = audio_play_sound(ending_cinematic,0,true) } } diff --git a/objects/obj_worm/Step_0.gml b/objects/obj_worm/Step_0.gml index 703133a6..434d4394 100644 --- a/objects/obj_worm/Step_0.gml +++ b/objects/obj_worm/Step_0.gml @@ -288,7 +288,11 @@ else if !instance_exists(wall1) { + if global.show_credits <= 0 + { + np_setpresence_more("", "보스전", false); np_setpresence("하수도 속의 거대 쌉벌레두","", "spr_icon325", ""); + } wall1 = instance_create_depth(xstart-1300,ystart-1200,player.depth+3,obj_floor_tile3) wall1.image_yscale = 32 diff --git a/objects/player/Step_0.gml b/objects/player/Step_0.gml index f235c142..d7b189dc 100644 --- a/objects/player/Step_0.gml +++ b/objects/player/Step_0.gml @@ -4780,7 +4780,7 @@ down_attack_with_rage++ } - if (global.awakening <= 0 && down_attack_with_rage_dis/64 > 3) + if (global.awakening <= 0 && down_attack_with_rage_dis/64 > 3) || (global.awakening > 0 && down_attack_with_rage_dis/64 > 5) { down_dis = 0 down_attack_with_rage_dis = 0 diff --git a/options/extensions/GameAnalyticsExt.json b/options/extensions/GameAnalyticsExt.json new file mode 100644 index 00000000..08ca92a5 --- /dev/null +++ b/options/extensions/GameAnalyticsExt.json @@ -0,0 +1,9 @@ +{ + "extensionId": { + "name": "GameAnalyticsExt", + "path": "extensions/GameAnalyticsExt/GameAnalyticsExt.yy" + }, + "resourceVersion": "1.0", + "resourceType": "GMExtensionConfigSet", + "configurables": null +} \ No newline at end of file diff --git a/project wak.yyp b/project wak.yyp index 6b9cfa4d..aff425ec 100644 --- a/project wak.yyp +++ b/project wak.yyp @@ -22,17 +22,18 @@ {"id":{"name":"pl_move_skeleton_attack_beat_saber_katana","path":"sprites/pl_move_skeleton_attack_beat_saber_katana/pl_move_skeleton_attack_beat_saber_katana.yy",},"order":92,}, {"id":{"name":"pl_move_skeleton_attack_beat_saber_black280","path":"sprites/pl_move_skeleton_attack_beat_saber_black280/pl_move_skeleton_attack_beat_saber_black280.yy",},"order":34,}, {"id":{"name":"fire_ball_effect","path":"objects/fire_ball_effect/fire_ball_effect.yy",},"order":60,}, + {"id":{"name":"ga_getRemoteConfigsValueAsString","path":"scripts/ga_getRemoteConfigsValueAsString/ga_getRemoteConfigsValueAsString.yy",},"order":15,}, {"id":{"name":"obj_statue_1","path":"objects/obj_statue_1/obj_statue_1.yy",},"order":45,}, {"id":{"name":"swing_sfx1","path":"sounds/swing_sfx1/swing_sfx1.yy",},"order":13,}, {"id":{"name":"pl_move_skeleton_rush_slice_blue","path":"sprites/pl_move_skeleton_rush_slice_blue/pl_move_skeleton_rush_slice_blue.yy",},"order":79,}, {"id":{"name":"sprite173141","path":"sprites/sprite173141/sprite173141.yy",},"order":18,}, {"id":{"name":"obj_hand","path":"objects/obj_hand/obj_hand.yy",},"order":15,}, - {"id":{"name":"create_buble_effect","path":"scripts/create_buble_effect/create_buble_effect.yy",},"order":31,}, + {"id":{"name":"create_buble_effect","path":"scripts/create_buble_effect/create_buble_effect.yy",},"order":30,}, {"id":{"name":"wait_plz","path":"sounds/wait_plz/wait_plz.yy",},"order":47,}, {"id":{"name":"spr_lab_computer","path":"sprites/spr_lab_computer/spr_lab_computer.yy",},"order":52,}, {"id":{"name":"dash_effect","path":"objects/dash_effect/dash_effect.yy",},"order":6,}, {"id":{"name":"master_bgm","path":"sounds/master_bgm/master_bgm.yy",},"order":61,}, - {"id":{"name":"http_errors","path":"scripts/http_errors/http_errors.yy",},"order":26,}, + {"id":{"name":"http_errors","path":"scripts/http_errors/http_errors.yy",},"order":25,}, {"id":{"name":"pl_move_skeleton_suicide_green","path":"sprites/pl_move_skeleton_suicide_green/pl_move_skeleton_suicide_green.yy",},"order":38,}, {"id":{"name":"setting_parents","path":"objects/setting_parents/setting_parents.yy",},"order":56,}, {"id":{"name":"kiyahou","path":"sounds/kiyahou/kiyahou.yy",},"order":73,}, @@ -43,6 +44,7 @@ {"id":{"name":"spr_drone","path":"sprites/spr_drone/spr_drone.yy",},"order":102,}, {"id":{"name":"Sprite197","path":"sprites/Sprite197/Sprite197.yy",},"order":34,}, {"id":{"name":"pl_move_skeleton_spin_jump","path":"sprites/pl_move_skeleton_spin_jump/pl_move_skeleton_spin_jump.yy",},"order":24,}, + {"id":{"name":"ga_setEnabledInfoLog","path":"scripts/ga_setEnabledInfoLog/ga_setEnabledInfoLog.yy",},"order":25,}, {"id":{"name":"twitch_init","path":"scripts/twitch_init/twitch_init.yy",},"order":7,}, {"id":{"name":"pl_move_skeleton_laser_skill_sec_black279","path":"sprites/pl_move_skeleton_laser_skill_sec_black279/pl_move_skeleton_laser_skill_sec_black279.yy",},"order":33,}, {"id":{"name":"obj_lightning","path":"objects/obj_lightning/obj_lightning.yy",},"order":16,}, @@ -60,7 +62,7 @@ {"id":{"name":"guard","path":"sounds/guard/guard.yy",},"order":50,}, {"id":{"name":"effect_down_attack","path":"objects/effect_down_attack/effect_down_attack.yy",},"order":21,}, {"id":{"name":"effect","path":"objects/effect/effect.yy",},"order":11,}, - {"id":{"name":"dev_mes","path":"scripts/dev_mes/dev_mes.yy",},"order":23,}, + {"id":{"name":"dev_mes","path":"scripts/dev_mes/dev_mes.yy",},"order":22,}, {"id":{"name":"simhaedoo_knockback_attacked","path":"objects/simhaedoo_knockback_attacked/simhaedoo_knockback_attacked.yy",},"order":13,}, {"id":{"name":"pl_move_hyumpanchi_spin269","path":"sprites/pl_move_hyumpanchi_spin269/pl_move_hyumpanchi_spin269.yy",},"order":28,}, {"id":{"name":"pl_move_skeleton_suicide_red254","path":"sprites/pl_move_skeleton_suicide_red254/pl_move_skeleton_suicide_red254.yy",},"order":9,}, @@ -73,12 +75,13 @@ {"id":{"name":"map1","path":"sprites/map1/map1.yy",},"order":15,}, {"id":{"name":"Sprite76","path":"sprites/Sprite76/Sprite76.yy",},"order":4,}, {"id":{"name":"Sprite324","path":"sprites/Sprite324/Sprite324.yy",},"order":25,}, - {"id":{"name":"save_user_rank","path":"scripts/save_user_rank/save_user_rank.yy",},"order":21,}, + {"id":{"name":"save_user_rank","path":"scripts/save_user_rank/save_user_rank.yy",},"order":20,}, {"id":{"name":"sword_attack_parents","path":"objects/sword_attack_parents/sword_attack_parents.yy",},"order":52,}, {"id":{"name":"tic_tak","path":"sounds/tic_tak/tic_tak.yy",},"order":93,}, {"id":{"name":"Sprite301","path":"sprites/Sprite301/Sprite301.yy",},"order":2,}, {"id":{"name":"suicide_option","path":"objects/suicide_option/suicide_option.yy",},"order":45,}, {"id":{"name":"swing_sfx3","path":"sounds/swing_sfx3/swing_sfx3.yy",},"order":15,}, + {"id":{"name":"ga_isRemoteConfigsReady","path":"scripts/ga_isRemoteConfigsReady/ga_isRemoteConfigsReady.yy",},"order":17,}, {"id":{"name":"Sprite147","path":"sprites/Sprite147/Sprite147.yy",},"order":6,}, {"id":{"name":"obj_tp_door","path":"objects/obj_tp_door/obj_tp_door.yy",},"order":36,}, {"id":{"name":"Shader3","path":"shaders/Shader3/Shader3.yy",},"order":2,}, @@ -95,12 +98,12 @@ {"id":{"name":"rage_mode_knockback","path":"objects/rage_mode_knockback/rage_mode_knockback.yy",},"order":25,}, {"id":{"name":"room_sector_B03_2_remaked","path":"rooms/room_sector_B03_2_remaked/room_sector_B03_2_remaked.yy",},"order":7,}, {"id":{"name":"room_sector_runaway","path":"rooms/room_sector_runaway/room_sector_runaway.yy",},"order":14,}, - {"id":{"name":"Script30","path":"scripts/Script30/Script30.yy",},"order":29,}, + {"id":{"name":"Script30","path":"scripts/Script30/Script30.yy",},"order":28,}, {"id":{"name":"Sprite202","path":"sprites/Sprite202/Sprite202.yy",},"order":39,}, {"id":{"name":"obj_camera","path":"objects/obj_camera/obj_camera.yy",},"order":5,}, {"id":{"name":"effect_special_skill_attacked","path":"objects/effect_special_skill_attacked/effect_special_skill_attacked.yy",},"order":18,}, {"id":{"name":"obj_map_tile9222223","path":"objects/obj_map_tile9222223/obj_map_tile9222223.yy",},"order":68,}, - {"id":{"name":"hp_minus_for_mob","path":"scripts/hp_minus_for_mob/hp_minus_for_mob.yy",},"order":22,}, + {"id":{"name":"hp_minus_for_mob","path":"scripts/hp_minus_for_mob/hp_minus_for_mob.yy",},"order":21,}, {"id":{"name":"sprite64_2","path":"sprites/sprite64_2/sprite64_2.yy",},"order":6,}, {"id":{"name":"pl_move_skeleton_laser_skill","path":"sprites/pl_move_skeleton_laser_skill/pl_move_skeleton_laser_skill.yy",},"order":14,}, {"id":{"name":"spr_move_run247","path":"sprites/spr_move_run247/spr_move_run247.yy",},"order":3,}, @@ -146,7 +149,7 @@ {"id":{"name":"change_running_key_to_other","path":"objects/change_running_key_to_other/change_running_key_to_other.yy",},"order":31,}, {"id":{"name":"pl_move_skeleton_attack1","path":"sprites/pl_move_skeleton_attack1/pl_move_skeleton_attack1.yy",},"order":5,}, {"id":{"name":"Sprite298","path":"sprites/Sprite298/Sprite298.yy",},"order":0,}, - {"id":{"name":"http_ip_get","path":"scripts/http_ip_get/http_ip_get.yy",},"order":27,}, + {"id":{"name":"http_ip_get","path":"scripts/http_ip_get/http_ip_get.yy",},"order":26,}, {"id":{"name":"pl_move_skeleton_guard_red255","path":"sprites/pl_move_skeleton_guard_red255/pl_move_skeleton_guard_red255.yy",},"order":10,}, {"id":{"name":"simhaedoo_bullet","path":"sprites/simhaedoo_bullet/simhaedoo_bullet.yy",},"order":37,}, {"id":{"name":"Sprite179","path":"sprites/Sprite179/Sprite179.yy",},"order":5,}, @@ -163,6 +166,7 @@ {"id":{"name":"twitch_stream_get_thumbnail","path":"scripts/twitch_stream_get_thumbnail/twitch_stream_get_thumbnail.yy",},"order":13,}, {"id":{"name":"pl_move_hyumpanchi270","path":"sprites/pl_move_hyumpanchi270/pl_move_hyumpanchi270.yy",},"order":29,}, {"id":{"name":"spr_jump261","path":"sprites/spr_jump261/spr_jump261.yy",},"order":2,}, + {"id":{"name":"ga_trace","path":"scripts/ga_trace/ga_trace.yy",},"order":29,}, {"id":{"name":"obj_broken_door","path":"objects/obj_broken_door/obj_broken_door.yy",},"order":59,}, {"id":{"name":"Sprite289","path":"sprites/Sprite289/Sprite289.yy",},"order":17,}, {"id":{"name":"obj_map_tile7_2168193","path":"objects/obj_map_tile7_2168193/obj_map_tile7_2168193.yy",},"order":15,}, @@ -176,12 +180,13 @@ {"id":{"name":"hit_sfx3","path":"sounds/hit_sfx3/hit_sfx3.yy",},"order":9,}, {"id":{"name":"Sprite288","path":"sprites/Sprite288/Sprite288.yy",},"order":61,}, {"id":{"name":"Sprite281","path":"sprites/Sprite281/Sprite281.yy",},"order":68,}, + {"id":{"name":"ga_configureBuild","path":"scripts/ga_configureBuild/ga_configureBuild.yy",},"order":11,}, {"id":{"name":"obj_simhae_doo","path":"objects/obj_simhae_doo/obj_simhae_doo.yy",},"order":16,}, {"id":{"name":"pl_move_skeleton_pering_beat_saber_red","path":"sprites/pl_move_skeleton_pering_beat_saber_red/pl_move_skeleton_pering_beat_saber_red.yy",},"order":84,}, {"id":{"name":"Sprite300","path":"sprites/Sprite300/Sprite300.yy",},"order":1,}, {"id":{"name":"jyunne_a_i_upne","path":"sounds/jyunne_a_i_upne/jyunne_a_i_upne.yy",},"order":44,}, {"id":{"name":"Sprite309","path":"sprites/Sprite309/Sprite309.yy",},"order":10,}, - {"id":{"name":"set_value_case","path":"scripts/set_value_case/set_value_case.yy",},"order":43,}, + {"id":{"name":"set_value_case","path":"scripts/set_value_case/set_value_case.yy",},"order":41,}, {"id":{"name":"room_sector_B05_2","path":"rooms/room_sector_B05_2/room_sector_B05_2.yy",},"order":10,}, {"id":{"name":"already_all_died","path":"sounds/already_all_died/already_all_died.yy",},"order":77,}, {"id":{"name":"change_suicide_key_to_other","path":"objects/change_suicide_key_to_other/change_suicide_key_to_other.yy",},"order":34,}, @@ -226,7 +231,9 @@ {"id":{"name":"Sprite18088","path":"sprites/Sprite18088/Sprite18088.yy",},"order":1,}, {"id":{"name":"view_shake_received","path":"scripts/view_shake_received/view_shake_received.yy",},"order":11,}, {"id":{"name":"spr_gun_fire_effect","path":"sprites/spr_gun_fire_effect/spr_gun_fire_effect.yy",},"order":32,}, + {"id":{"name":"ga_setEnabledEventSubmission","path":"scripts/ga_setEnabledEventSubmission/ga_setEnabledEventSubmission.yy",},"order":24,}, {"id":{"name":"pl_move_skeleton_laser_skill_sec_black","path":"sprites/pl_move_skeleton_laser_skill_sec_black/pl_move_skeleton_laser_skill_sec_black.yy",},"order":69,}, + {"id":{"name":"ga_getRemoteConfigsContentAsString","path":"scripts/ga_getRemoteConfigsContentAsString/ga_getRemoteConfigsContentAsString.yy",},"order":14,}, {"id":{"name":"spr_cursor","path":"sprites/spr_cursor/spr_cursor.yy",},"order":12,}, {"id":{"name":"pl_move_skeleton_spin_attack1","path":"sprites/pl_move_skeleton_spin_attack1/pl_move_skeleton_spin_attack1.yy",},"order":7,}, {"id":{"name":"spr_stetue290291292293","path":"sprites/spr_stetue290291292293/spr_stetue290291292293.yy",},"order":65,}, @@ -235,7 +242,7 @@ {"id":{"name":"effect_special_skill","path":"objects/effect_special_skill/effect_special_skill.yy",},"order":17,}, {"id":{"name":"beatsaber_block_attacked","path":"objects/beatsaber_block_attacked/beatsaber_block_attacked.yy",},"order":19,}, {"id":{"name":"spr_jump_wakdroid272","path":"sprites/spr_jump_wakdroid272/spr_jump_wakdroid272.yy",},"order":23,}, - {"id":{"name":"red_glow_effect","path":"scripts/red_glow_effect/red_glow_effect.yy",},"order":33,}, + {"id":{"name":"red_glow_effect","path":"scripts/red_glow_effect/red_glow_effect.yy",},"order":32,}, {"id":{"name":"map2","path":"sprites/map2/map2.yy",},"order":16,}, {"id":{"name":"spr_jump","path":"sprites/spr_jump/spr_jump.yy",},"order":3,}, {"id":{"name":"obj_pipeline_7","path":"objects/obj_pipeline_7/obj_pipeline_7.yy",},"order":42,}, @@ -269,7 +276,7 @@ {"id":{"name":"swing_sfx2","path":"sounds/swing_sfx2/swing_sfx2.yy",},"order":14,}, {"id":{"name":"background","path":"sprites/background/background.yy",},"order":21,}, {"id":{"name":"Sprite155","path":"sprites/Sprite155/Sprite155.yy",},"order":22,}, - {"id":{"name":"check_mouse_place","path":"scripts/check_mouse_place/check_mouse_place.yy",},"order":37,}, + {"id":{"name":"check_mouse_place","path":"scripts/check_mouse_place/check_mouse_place.yy",},"order":36,}, {"id":{"name":"obj_computer","path":"objects/obj_computer/obj_computer.yy",},"order":63,}, {"id":{"name":"spr_throw","path":"sprites/spr_throw/spr_throw.yy",},"order":103,}, {"id":{"name":"sibalruna","path":"sounds/sibalruna/sibalruna.yy",},"order":45,}, @@ -293,14 +300,18 @@ {"id":{"name":"pl_move_skeleton_guard_blue","path":"sprites/pl_move_skeleton_guard_blue/pl_move_skeleton_guard_blue.yy",},"order":81,}, {"id":{"name":"map7_2","path":"sprites/map7_2/map7_2.yy",},"order":27,}, {"id":{"name":"sprite571","path":"sprites/sprite571/sprite571.yy",},"order":29,}, + {"id":{"name":"ga_endSession","path":"scripts/ga_endSession/ga_endSession.yy",},"order":13,}, {"id":{"name":"spr_stetue290","path":"sprites/spr_stetue290/spr_stetue290.yy",},"order":62,}, {"id":{"name":"sprite173","path":"sprites/sprite173/sprite173.yy",},"order":10,}, {"id":{"name":"twitch_chat_connect","path":"scripts/twitch_chat_connect/twitch_chat_connect.yy",},"order":3,}, {"id":{"name":"laser_sfx_sec","path":"sounds/laser_sfx_sec/laser_sfx_sec.yy",},"order":80,}, + {"id":{"name":"ga_configureAvailableResourceCurrencies","path":"scripts/ga_configureAvailableResourceCurrencies/ga_configureAvailableResourceCurrencies.yy",},"order":9,}, {"id":{"name":"Sprite159","path":"sprites/Sprite159/Sprite159.yy",},"order":24,}, {"id":{"name":"obj_bullet_for_player","path":"objects/obj_bullet_for_player/obj_bullet_for_player.yy",},"order":11,}, {"id":{"name":"Sprite314","path":"sprites/Sprite314/Sprite314.yy",},"order":15,}, {"id":{"name":"pl_move_skeleton_attack_beat_saber","path":"sprites/pl_move_skeleton_attack_beat_saber/pl_move_skeleton_attack_beat_saber.yy",},"order":21,}, + {"id":{"name":"ga_addDesignEvent","path":"scripts/ga_addDesignEvent/ga_addDesignEvent.yy",},"order":1,}, + {"id":{"name":"util_ga_arrayToJsonString","path":"scripts/util_ga_arrayToJsonString/util_ga_arrayToJsonString.yy",},"order":30,}, {"id":{"name":"window","path":"scripts/window/window.yy",},"order":0,}, {"id":{"name":"obj_light","path":"objects/obj_light/obj_light.yy",},"order":57,}, {"id":{"name":"dash_attack_sfx","path":"sounds/dash_attack_sfx/dash_attack_sfx.yy",},"order":43,}, @@ -310,8 +321,10 @@ {"id":{"name":"obj_simhaedoo_ring","path":"objects/obj_simhaedoo_ring/obj_simhaedoo_ring.yy",},"order":18,}, {"id":{"name":"twitch_stream_remove","path":"scripts/twitch_stream_remove/twitch_stream_remove.yy",},"order":14,}, {"id":{"name":"BG_light_broken","path":"objects/BG_light_broken/BG_light_broken.yy",},"order":35,}, + {"id":{"name":"ga_setCustomDimension03","path":"scripts/ga_setCustomDimension03/ga_setCustomDimension03.yy",},"order":23,}, {"id":{"name":"shFlash","path":"shaders/shFlash/shFlash.yy",},"order":0,}, {"id":{"name":"Sprite212","path":"sprites/Sprite212/Sprite212.yy",},"order":10,}, + {"id":{"name":"ga_addProgressionEvent","path":"scripts/ga_addProgressionEvent/ga_addProgressionEvent.yy",},"order":3,}, {"id":{"name":"spr_lightning_sec","path":"sprites/spr_lightning_sec/spr_lightning_sec.yy",},"order":36,}, {"id":{"name":"boss_shower","path":"sprites/boss_shower/boss_shower.yy",},"order":20,}, {"id":{"name":"font0","path":"fonts/font0/font0.yy",},"order":2,}, @@ -319,9 +332,11 @@ {"id":{"name":"simhae_doo_none_clip268","path":"sprites/simhae_doo_none_clip268/simhae_doo_none_clip268.yy",},"order":21,}, {"id":{"name":"pl_move_skeleton_down_attack_beat_saber","path":"sprites/pl_move_skeleton_down_attack_beat_saber/pl_move_skeleton_down_attack_beat_saber.yy",},"order":11,}, {"id":{"name":"twitch_log","path":"scripts/twitch_log/twitch_log.yy",},"order":8,}, + {"id":{"name":"ga_configureAvailableCustomDimensions03","path":"scripts/ga_configureAvailableCustomDimensions03/ga_configureAvailableCustomDimensions03.yy",},"order":8,}, {"id":{"name":"chat_up","path":"scripts/chat_up/chat_up.yy",},"order":1,}, {"id":{"name":"obj_water_behind","path":"objects/obj_water_behind/obj_water_behind.yy",},"order":64,}, {"id":{"name":"obj_pipeline_blocked","path":"objects/obj_pipeline_blocked/obj_pipeline_blocked.yy",},"order":50,}, + {"id":{"name":"GameAnalyticsExt","path":"extensions/GameAnalyticsExt/GameAnalyticsExt.yy",},"order":2,}, {"id":{"name":"obj_statue","path":"objects/obj_statue/obj_statue.yy",},"order":23,}, {"id":{"name":"Sprite319","path":"sprites/Sprite319/Sprite319.yy",},"order":20,}, {"id":{"name":"item_shine","path":"sprites/item_shine/item_shine.yy",},"order":5,}, @@ -339,6 +354,7 @@ {"id":{"name":"thunder_sfx","path":"sounds/thunder_sfx/thunder_sfx.yy",},"order":84,}, {"id":{"name":"obj_map_tile3","path":"objects/obj_map_tile3/obj_map_tile3.yy",},"order":4,}, {"id":{"name":"bomb_sfx","path":"sounds/bomb_sfx/bomb_sfx.yy",},"order":38,}, + {"id":{"name":"ga_array","path":"scripts/ga_array/ga_array.yy",},"order":5,}, {"id":{"name":"charging_attack","path":"objects/charging_attack/charging_attack.yy",},"order":0,}, {"id":{"name":"send_one","path":"scripts/send_one/send_one.yy",},"order":3,}, {"id":{"name":"obj_map_tile7_1","path":"objects/obj_map_tile7_1/obj_map_tile7_1.yy",},"order":9,}, @@ -373,7 +389,7 @@ {"id":{"name":"Sprite155__","path":"sprites/Sprite155__/Sprite155__.yy",},"order":23,}, {"id":{"name":"map8_2199204221230231","path":"sprites/map8_2199204221230231/map8_2199204221230231.yy",},"order":55,}, {"id":{"name":"beatsaber_block","path":"objects/beatsaber_block/beatsaber_block.yy",},"order":18,}, - {"id":{"name":"mdDrawGaussian","path":"scripts/mdDrawGaussian/mdDrawGaussian.yy",},"order":40,}, + {"id":{"name":"mdDrawGaussian","path":"scripts/mdDrawGaussian/mdDrawGaussian.yy",},"order":39,}, {"id":{"name":"code_bubble_surf","path":"objects/code_bubble_surf/code_bubble_surf.yy",},"order":25,}, {"id":{"name":"fire_turret","path":"objects/fire_turret/fire_turret.yy",},"order":24,}, {"id":{"name":"Object160","path":"objects/Object160/Object160.yy",},"order":24,}, @@ -403,6 +419,7 @@ {"id":{"name":"drum_chigi","path":"sounds/drum_chigi/drum_chigi.yy",},"order":79,}, {"id":{"name":"pl_move_hyumpanchi_hakase","path":"sprites/pl_move_hyumpanchi_hakase/pl_move_hyumpanchi_hakase.yy",},"order":54,}, {"id":{"name":"Sprite77","path":"sprites/Sprite77/Sprite77.yy",},"order":27,}, + {"id":{"name":"ga_configureAvailableResourceItemTypes","path":"scripts/ga_configureAvailableResourceItemTypes/ga_configureAvailableResourceItemTypes.yy",},"order":10,}, {"id":{"name":"pl_move_skeleton_spin_attack_beat_saber_green","path":"sprites/pl_move_skeleton_spin_attack_beat_saber_green/pl_move_skeleton_spin_attack_beat_saber_green.yy",},"order":31,}, {"id":{"name":"pl_move_skeleton_attack_beat_saber_black","path":"sprites/pl_move_skeleton_attack_beat_saber_black/pl_move_skeleton_attack_beat_saber_black.yy",},"order":68,}, {"id":{"name":"obj_floor_tile4","path":"objects/obj_floor_tile4/obj_floor_tile4.yy",},"order":19,}, @@ -426,6 +443,7 @@ {"id":{"name":"it_s_over","path":"sounds/it_s_over/it_s_over.yy",},"order":100,}, {"id":{"name":"Sprite158","path":"sprites/Sprite158/Sprite158.yy",},"order":7,}, {"id":{"name":"angel_ring_attack","path":"objects/angel_ring_attack/angel_ring_attack.yy",},"order":14,}, + {"id":{"name":"ga_configureAvailableCustomDimensions01","path":"scripts/ga_configureAvailableCustomDimensions01/ga_configureAvailableCustomDimensions01.yy",},"order":6,}, {"id":{"name":"follower_bgm","path":"sounds/follower_bgm/follower_bgm.yy",},"order":110,}, {"id":{"name":"map6","path":"sprites/map6/map6.yy",},"order":20,}, {"id":{"name":"normal_mob","path":"objects/normal_mob/normal_mob.yy",},"order":13,}, @@ -444,14 +462,16 @@ {"id":{"name":"pl_move_skeleton_down_attack1","path":"sprites/pl_move_skeleton_down_attack1/pl_move_skeleton_down_attack1.yy",},"order":8,}, {"id":{"name":"send_one_ID","path":"scripts/send_one_ID/send_one_ID.yy",},"order":4,}, {"id":{"name":"pl_move_skeleton_laser_skill_sec","path":"sprites/pl_move_skeleton_laser_skill_sec/pl_move_skeleton_laser_skill_sec.yy",},"order":22,}, - {"id":{"name":"keyconverter","path":"scripts/keyconverter/keyconverter.yy",},"order":42,}, + {"id":{"name":"ga_setEnabledVerboseLog","path":"scripts/ga_setEnabledVerboseLog/ga_setEnabledVerboseLog.yy",},"order":27,}, + {"id":{"name":"keyconverter","path":"scripts/keyconverter/keyconverter.yy",},"order":40,}, {"id":{"name":"obj_bed","path":"objects/obj_bed/obj_bed.yy",},"order":1,}, {"id":{"name":"hit_sfx1","path":"sounds/hit_sfx1/hit_sfx1.yy",},"order":7,}, + {"id":{"name":"ga_initialize","path":"scripts/ga_initialize/ga_initialize.yy",},"order":16,}, {"id":{"name":"effect_attack4_attacked","path":"objects/effect_attack4_attacked/effect_attack4_attacked.yy",},"order":10,}, {"id":{"name":"hit_sfx2_beat_saber","path":"sounds/hit_sfx2_beat_saber/hit_sfx2_beat_saber.yy",},"order":82,}, {"id":{"name":"chat_reading_voice_jururu","path":"sounds/chat_reading_voice_jururu/chat_reading_voice_jururu.yy",},"order":121,}, {"id":{"name":"Note1","path":"notes/Note1/Note1.yy",},"order":0,}, - {"id":{"name":"check_equipment","path":"scripts/check_equipment/check_equipment.yy",},"order":35,}, + {"id":{"name":"check_equipment","path":"scripts/check_equipment/check_equipment.yy",},"order":34,}, {"id":{"name":"Sprite320","path":"sprites/Sprite320/Sprite320.yy",},"order":21,}, {"id":{"name":"obj_pipeline_5","path":"objects/obj_pipeline_5/obj_pipeline_5.yy",},"order":41,}, {"id":{"name":"obj_statue_2","path":"objects/obj_statue_2/obj_statue_2.yy",},"order":46,}, @@ -468,6 +488,7 @@ {"id":{"name":"swing_2","path":"sounds/swing_2/swing_2.yy",},"order":12,}, {"id":{"name":"gyu_seong_red_ef","path":"objects/gyu_seong_red_ef/gyu_seong_red_ef.yy",},"order":3,}, {"id":{"name":"pl_move_skeleton_down_attack_beat_saber_red261","path":"sprites/pl_move_skeleton_down_attack_beat_saber_red261/pl_move_skeleton_down_attack_beat_saber_red261.yy",},"order":16,}, + {"id":{"name":"ga_addResourceEvent","path":"scripts/ga_addResourceEvent/ga_addResourceEvent.yy",},"order":4,}, {"id":{"name":"message_sfx","path":"sounds/message_sfx/message_sfx.yy",},"order":19,}, {"id":{"name":"spr_move_run_wakdroid246","path":"sprites/spr_move_run_wakdroid246/spr_move_run_wakdroid246.yy",},"order":1,}, {"id":{"name":"room_sector_B06_2","path":"rooms/room_sector_B06_2/room_sector_B06_2.yy",},"order":11,}, @@ -493,12 +514,14 @@ {"id":{"name":"effect_sting_free_attacked","path":"objects/effect_sting_free_attacked/effect_sting_free_attacked.yy",},"order":16,}, {"id":{"name":"block_laser","path":"objects/block_laser/block_laser.yy",},"order":32,}, {"id":{"name":"shine_effect_option","path":"objects/shine_effect_option/shine_effect_option.yy",},"order":39,}, + {"id":{"name":"ga_setCustomDimension02","path":"scripts/ga_setCustomDimension02/ga_setCustomDimension02.yy",},"order":22,}, {"id":{"name":"room_sector_B03_1","path":"rooms/room_sector_B03_1/room_sector_B03_1.yy",},"order":5,}, + {"id":{"name":"ga_onResume","path":"scripts/ga_onResume/ga_onResume.yy",},"order":19,}, {"id":{"name":"pl_move_skeleton_down_attack_beat_saber_katana","path":"sprites/pl_move_skeleton_down_attack_beat_saber_katana/pl_move_skeleton_down_attack_beat_saber_katana.yy",},"order":87,}, {"id":{"name":"ip_enterbar","path":"objects/ip_enterbar/ip_enterbar.yy",},"order":50,}, {"id":{"name":"Sprite296","path":"sprites/Sprite296/Sprite296.yy",},"order":6,}, {"id":{"name":"Sprite142","path":"sprites/Sprite142/Sprite142.yy",},"order":9,}, - {"id":{"name":"skill_combo_cancle_n_motion","path":"scripts/skill_combo_cancle_n_motion/skill_combo_cancle_n_motion.yy",},"order":34,}, + {"id":{"name":"skill_combo_cancle_n_motion","path":"scripts/skill_combo_cancle_n_motion/skill_combo_cancle_n_motion.yy",},"order":33,}, {"id":{"name":"simhae_doo_none_clip","path":"sprites/simhae_doo_none_clip/simhae_doo_none_clip.yy",},"order":4,}, {"id":{"name":"broken_platfrom","path":"objects/broken_platfrom/broken_platfrom.yy",},"order":70,}, {"id":{"name":"pl_hurt_wakdroid","path":"sprites/pl_hurt_wakdroid/pl_hurt_wakdroid.yy",},"order":66,}, @@ -514,6 +537,7 @@ {"id":{"name":"spr_stetue290291292","path":"sprites/spr_stetue290291292/spr_stetue290291292.yy",},"order":64,}, {"id":{"name":"devil_doo","path":"sprites/devil_doo/devil_doo.yy",},"order":11,}, {"id":{"name":"code","path":"objects/code/code.yy",},"order":4,}, + {"id":{"name":"ga_configureUserId","path":"scripts/ga_configureUserId/ga_configureUserId.yy",},"order":12,}, {"id":{"name":"draw_text_kl_scale","path":"scripts/draw_text_kl_scale/draw_text_kl_scale.yy",},"order":6,}, {"id":{"name":"melt_effect","path":"objects/melt_effect/melt_effect.yy",},"order":65,}, {"id":{"name":"Sprite170","path":"sprites/Sprite170/Sprite170.yy",},"order":26,}, @@ -523,7 +547,7 @@ {"id":{"name":"obj_start_menu","path":"objects/obj_start_menu/obj_start_menu.yy",},"order":1,}, {"id":{"name":"spr_broken_door","path":"sprites/spr_broken_door/spr_broken_door.yy",},"order":51,}, {"id":{"name":"obj_chatbox","path":"objects/obj_chatbox/obj_chatbox.yy",},"order":8,}, - {"id":{"name":"draw_screen_rgb_split","path":"scripts/draw_screen_rgb_split/draw_screen_rgb_split.yy",},"order":30,}, + {"id":{"name":"draw_screen_rgb_split","path":"scripts/draw_screen_rgb_split/draw_screen_rgb_split.yy",},"order":29,}, {"id":{"name":"obj_floor_tile1","path":"objects/obj_floor_tile1/obj_floor_tile1.yy",},"order":16,}, {"id":{"name":"pl_move_skeleton_suicide","path":"sprites/pl_move_skeleton_suicide/pl_move_skeleton_suicide.yy",},"order":13,}, {"id":{"name":"change_w_key_to_other","path":"objects/change_w_key_to_other/change_w_key_to_other.yy",},"order":29,}, @@ -570,6 +594,7 @@ {"id":{"name":"tp_door","path":"sprites/tp_door/tp_door.yy",},"order":38,}, {"id":{"name":"effect_parents","path":"objects/effect_parents/effect_parents.yy",},"order":19,}, {"id":{"name":"yee_sae_kki","path":"sounds/yee_sae_kki/yee_sae_kki.yy",},"order":17,}, + {"id":{"name":"ga_addBusinessEvent","path":"scripts/ga_addBusinessEvent/ga_addBusinessEvent.yy",},"order":0,}, {"id":{"name":"pl_move_hyumpanchi_attack_based11","path":"sprites/pl_move_hyumpanchi_attack_based11/pl_move_hyumpanchi_attack_based11.yy",},"order":26,}, {"id":{"name":"map8_2199","path":"sprites/map8_2199/map8_2199.yy",},"order":37,}, {"id":{"name":"effect_lilla_attack","path":"objects/effect_lilla_attack/effect_lilla_attack.yy",},"order":6,}, @@ -578,6 +603,7 @@ {"id":{"name":"Sprite182","path":"sprites/Sprite182/Sprite182.yy",},"order":31,}, {"id":{"name":"wak_rio","path":"sounds/wak_rio/wak_rio.yy",},"order":29,}, {"id":{"name":"tp_door207","path":"sprites/tp_door207/tp_door207.yy",},"order":44,}, + {"id":{"name":"ga_startSession","path":"scripts/ga_startSession/ga_startSession.yy",},"order":28,}, {"id":{"name":"simhae_doo265","path":"sprites/simhae_doo265/simhae_doo265.yy",},"order":20,}, {"id":{"name":"pl_move_skeleton_spin","path":"sprites/pl_move_skeleton_spin/pl_move_skeleton_spin.yy",},"order":25,}, {"id":{"name":"ssip","path":"sounds/ssip/ssip.yy",},"order":40,}, @@ -595,12 +621,14 @@ {"id":{"name":"spr_lilla_bot_attack","path":"sprites/spr_lilla_bot_attack/spr_lilla_bot_attack.yy",},"order":58,}, {"id":{"name":"lab_explosion","path":"sounds/lab_explosion/lab_explosion.yy",},"order":106,}, {"id":{"name":"light_a","path":"objects/light_a/light_a.yy",},"order":1,}, - {"id":{"name":"cre_buble_ef","path":"scripts/cre_buble_ef/cre_buble_ef.yy",},"order":28,}, + {"id":{"name":"cre_buble_ef","path":"scripts/cre_buble_ef/cre_buble_ef.yy",},"order":27,}, {"id":{"name":"audience_1","path":"sprites/audience_1/audience_1.yy",},"order":50,}, + {"id":{"name":"ga_setCustomDimension01","path":"scripts/ga_setCustomDimension01/ga_setCustomDimension01.yy",},"order":21,}, {"id":{"name":"effect_sting_free","path":"objects/effect_sting_free/effect_sting_free.yy",},"order":15,}, {"id":{"name":"obj_messi","path":"objects/obj_messi/obj_messi.yy",},"order":17,}, {"id":{"name":"obj_map_tile9222","path":"objects/obj_map_tile9222/obj_map_tile9222.yy",},"order":67,}, {"id":{"name":"footstep_sfx","path":"sounds/footstep_sfx/footstep_sfx.yy",},"order":4,}, + {"id":{"name":"ga_onStop","path":"scripts/ga_onStop/ga_onStop.yy",},"order":20,}, {"id":{"name":"ini_open_protect","path":"scripts/ini_open_protect/ini_open_protect.yy",},"order":12,}, {"id":{"name":"red_circle_effect_devil","path":"objects/red_circle_effect_devil/red_circle_effect_devil.yy",},"order":59,}, {"id":{"name":"golem_sfx","path":"sounds/golem_sfx/golem_sfx.yy",},"order":126,}, @@ -612,7 +640,7 @@ {"id":{"name":"pl_move_skeleton_down_attack_beat_saber_red","path":"sprites/pl_move_skeleton_down_attack_beat_saber_red/pl_move_skeleton_down_attack_beat_saber_red.yy",},"order":39,}, {"id":{"name":"obj_namebar","path":"objects/obj_namebar/obj_namebar.yy",},"order":9,}, {"id":{"name":"save_and_load_data","path":"scripts/save_and_load_data/save_and_load_data.yy",},"order":19,}, - {"id":{"name":"sign_k","path":"scripts/sign_k/sign_k.yy",},"order":32,}, + {"id":{"name":"sign_k","path":"scripts/sign_k/sign_k.yy",},"order":31,}, {"id":{"name":"wak_doo","path":"sprites/wak_doo/wak_doo.yy",},"order":2,}, {"id":{"name":"audience_21","path":"sprites/audience_21/audience_21.yy",},"order":49,}, {"id":{"name":"spr_ssab_bulrae263","path":"sprites/spr_ssab_bulrae263/spr_ssab_bulrae263.yy",},"order":18,}, @@ -635,7 +663,7 @@ {"id":{"name":"main_menu_option","path":"objects/main_menu_option/main_menu_option.yy",},"order":60,}, {"id":{"name":"change_s_key_to_other","path":"objects/change_s_key_to_other/change_s_key_to_other.yy",},"order":28,}, {"id":{"name":"Sprite322","path":"sprites/Sprite322/Sprite322.yy",},"order":23,}, - {"id":{"name":"give_item","path":"scripts/give_item/give_item.yy",},"order":36,}, + {"id":{"name":"give_item","path":"scripts/give_item/give_item.yy",},"order":35,}, {"id":{"name":"spr_lightning","path":"sprites/spr_lightning/spr_lightning.yy",},"order":34,}, {"id":{"name":"quake_effect_1","path":"sprites/quake_effect_1/quake_effect_1.yy",},"order":11,}, {"id":{"name":"obj_pipeline_3","path":"objects/obj_pipeline_3/obj_pipeline_3.yy",},"order":39,}, @@ -650,7 +678,7 @@ {"id":{"name":"BG_1","path":"sprites/BG_1/BG_1.yy",},"order":1,}, {"id":{"name":"simhae_doo_bullet","path":"objects/simhae_doo_bullet/simhae_doo_bullet.yy",},"order":12,}, {"id":{"name":"obj_pipeline_6","path":"objects/obj_pipeline_6/obj_pipeline_6.yy",},"order":43,}, - {"id":{"name":"draw_outline","path":"scripts/draw_outline/draw_outline.yy",},"order":38,}, + {"id":{"name":"draw_outline","path":"scripts/draw_outline/draw_outline.yy",},"order":37,}, {"id":{"name":"ending_cinematic","path":"sounds/ending_cinematic/ending_cinematic.yy",},"order":112,}, {"id":{"name":"bg_achievement","path":"objects/bg_achievement/bg_achievement.yy",},"order":26,}, {"id":{"name":"obj_statue_3","path":"objects/obj_statue_3/obj_statue_3.yy",},"order":47,}, @@ -671,6 +699,7 @@ {"id":{"name":"wak_drone","path":"objects/wak_drone/wak_drone.yy",},"order":11,}, {"id":{"name":"pl_move_skeleton_spin_attack_beat_saber_red","path":"sprites/pl_move_skeleton_spin_attack_beat_saber_red/pl_move_skeleton_spin_attack_beat_saber_red.yy",},"order":40,}, {"id":{"name":"spr_floor","path":"sprites/spr_floor/spr_floor.yy",},"order":6,}, + {"id":{"name":"ga_setEnabledManualSessionHandling","path":"scripts/ga_setEnabledManualSessionHandling/ga_setEnabledManualSessionHandling.yy",},"order":26,}, {"id":{"name":"pl_move_skeleton_pering_beat_saber_blue","path":"sprites/pl_move_skeleton_pering_beat_saber_blue/pl_move_skeleton_pering_beat_saber_blue.yy",},"order":85,}, {"id":{"name":"Sprite312","path":"sprites/Sprite312/Sprite312.yy",},"order":12,}, {"id":{"name":"Sprite172","path":"sprites/Sprite172/Sprite172.yy",},"order":0,}, @@ -711,6 +740,7 @@ {"id":{"name":"rage_mode_knockback_attacked","path":"objects/rage_mode_knockback_attacked/rage_mode_knockback_attacked.yy",},"order":26,}, {"id":{"name":"spr_wakrugot_turret262","path":"sprites/spr_wakrugot_turret262/spr_wakrugot_turret262.yy",},"order":17,}, {"id":{"name":"Sprite209","path":"sprites/Sprite209/Sprite209.yy",},"order":99,}, + {"id":{"name":"ga_configureAvailableCustomDimensions02","path":"scripts/ga_configureAvailableCustomDimensions02/ga_configureAvailableCustomDimensions02.yy",},"order":7,}, {"id":{"name":"ending_sec_bgm","path":"sounds/ending_sec_bgm/ending_sec_bgm.yy",},"order":111,}, {"id":{"name":"effect_attack2","path":"objects/effect_attack2/effect_attack2.yy",},"order":5,}, {"id":{"name":"wak_turret","path":"objects/wak_turret/wak_turret.yy",},"order":9,}, @@ -724,6 +754,7 @@ {"id":{"name":"BG_light","path":"objects/BG_light/BG_light.yy",},"order":34,}, {"id":{"name":"menu","path":"rooms/menu/menu.yy",},"order":0,}, {"id":{"name":"pl_move_skeleton_rush_slice_katana","path":"sprites/pl_move_skeleton_rush_slice_katana/pl_move_skeleton_rush_slice_katana.yy",},"order":91,}, + {"id":{"name":"ga_addErrorEvent","path":"scripts/ga_addErrorEvent/ga_addErrorEvent.yy",},"order":2,}, {"id":{"name":"tp_door207208","path":"sprites/tp_door207208/tp_door207208.yy",},"order":45,}, {"id":{"name":"change_use_item_key","path":"objects/change_use_item_key/change_use_item_key.yy",},"order":37,}, {"id":{"name":"bg_status_guidebook","path":"objects/bg_status_guidebook/bg_status_guidebook.yy",},"order":61,}, @@ -751,14 +782,15 @@ {"id":{"name":"Sprite304","path":"sprites/Sprite304/Sprite304.yy",},"order":5,}, {"id":{"name":"map4","path":"sprites/map4/map4.yy",},"order":18,}, {"id":{"name":"obj_obstacle","path":"objects/obj_obstacle/obj_obstacle.yy",},"order":69,}, + {"id":{"name":"ga_onQuit","path":"scripts/ga_onQuit/ga_onQuit.yy",},"order":18,}, {"id":{"name":"obj_map_tile1","path":"objects/obj_map_tile1/obj_map_tile1.yy",},"order":2,}, {"id":{"name":"pl_move_skeleton_pering_katana","path":"sprites/pl_move_skeleton_pering_katana/pl_move_skeleton_pering_katana.yy",},"order":96,}, {"id":{"name":"minigame","path":"sounds/minigame/minigame.yy",},"order":98,}, {"id":{"name":"bg_status","path":"objects/bg_status/bg_status.yy",},"order":48,}, {"id":{"name":"interaction_bgm","path":"sounds/interaction_bgm/interaction_bgm.yy",},"order":103,}, {"id":{"name":"effect_attack_s","path":"objects/effect_attack_s/effect_attack_s.yy",},"order":2,}, - {"id":{"name":"set_surf_outline","path":"scripts/set_surf_outline/set_surf_outline.yy",},"order":39,}, - {"id":{"name":"encryption_ip","path":"scripts/encryption_ip/encryption_ip.yy",},"order":25,}, + {"id":{"name":"set_surf_outline","path":"scripts/set_surf_outline/set_surf_outline.yy",},"order":38,}, + {"id":{"name":"encryption_ip","path":"scripts/encryption_ip/encryption_ip.yy",},"order":24,}, {"id":{"name":"mob_faint","path":"sounds/mob_faint/mob_faint.yy",},"order":18,}, {"id":{"name":"obj_pillar","path":"objects/obj_pillar/obj_pillar.yy",},"order":44,}, {"id":{"name":"swing_lightsaber_sfx2","path":"sounds/swing_lightsaber_sfx2/swing_lightsaber_sfx2.yy",},"order":23,}, @@ -785,7 +817,7 @@ {"id":{"name":"spr_twin_eyes","path":"sprites/spr_twin_eyes/spr_twin_eyes.yy",},"order":6,}, {"id":{"name":"sprite64_6","path":"sprites/sprite64_6/sprite64_6.yy",},"order":21,}, {"id":{"name":"final_battle","path":"sounds/final_battle/final_battle.yy",},"order":97,}, - {"id":{"name":"analyze_en_ip","path":"scripts/analyze_en_ip/analyze_en_ip.yy",},"order":24,}, + {"id":{"name":"analyze_en_ip","path":"scripts/analyze_en_ip/analyze_en_ip.yy",},"order":23,}, {"id":{"name":"rewinding_sfx","path":"sounds/rewinding_sfx/rewinding_sfx.yy",},"order":87,}, {"id":{"name":"mdGaussian","path":"shaders/mdGaussian/mdGaussian.yy",},"order":3,}, {"id":{"name":"pl_hurt_wakdroid276","path":"sprites/pl_hurt_wakdroid276/pl_hurt_wakdroid276.yy",},"order":24,}, @@ -831,7 +863,7 @@ "Folders": [ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Animation Curves","folderPath":"folders/Animation Curves.yy","order":2,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Sequences","folderPath":"folders/Sequences.yy","order":1,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"객체","folderPath":"folders/객체.yy","order":10,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"객체","folderPath":"folders/객체.yy","order":11,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"attack_effect","folderPath":"folders/객체/attack_effect.yy","order":16,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"BG_UI","folderPath":"folders/객체/BG_UI.yy","order":14,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"for_credit","folderPath":"folders/객체/for_credit.yy","order":17,}, @@ -839,12 +871,12 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"mob","folderPath":"folders/객체/mob.yy","order":15,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"attck__effect","folderPath":"folders/객체/mob/attck__effect.yy","order":0,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"경로","folderPath":"folders/경로.yy","order":5,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"글꼴","folderPath":"folders/글꼴.yy","order":8,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"룸","folderPath":"folders/룸.yy","order":11,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"글꼴","folderPath":"folders/글꼴.yy","order":9,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"룸","folderPath":"folders/룸.yy","order":12,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"소리","folderPath":"folders/소리.yy","order":4,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"쉐이더","folderPath":"folders/쉐이더.yy","order":7,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"스크립트","folderPath":"folders/스크립트.yy","order":6,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"twitch_chat_","folderPath":"folders/스크립트/twitch_chat_.yy","order":41,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"쉐이더","folderPath":"folders/쉐이더.yy","order":8,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"스크립트","folderPath":"folders/스크립트.yy","order":7,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"twitch_chat_","folderPath":"folders/스크립트/twitch_chat_.yy","order":42,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"스프라이트","folderPath":"folders/스프라이트.yy","order":0,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"boss","folderPath":"folders/스프라이트/boss.yy","order":5,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"effects","folderPath":"folders/스프라이트/effects.yy","order":2,}, @@ -855,9 +887,10 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"player_texture","folderPath":"folders/스프라이트/player_texture.yy","order":4,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"ui","folderPath":"folders/스프라이트/ui.yy","order":1,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"타일 세트","folderPath":"folders/타일 세트.yy","order":3,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"타임라인","folderPath":"folders/타임라인.yy","order":9,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"필기","folderPath":"folders/필기.yy","order":12,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"확장 기능","folderPath":"folders/확장 기능.yy","order":13,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"타임라인","folderPath":"folders/타임라인.yy","order":10,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"필기","folderPath":"folders/필기.yy","order":13,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"확장 기능","folderPath":"folders/확장 기능.yy","order":14,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Statics","folderPath":"folders/스크립트/Statics.yy","order":43,}, ], "AudioGroups": [ {"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,}, diff --git a/scripts/ga_addBusinessEvent/ga_addBusinessEvent.gml b/scripts/ga_addBusinessEvent/ga_addBusinessEvent.gml new file mode 100644 index 00000000..a52d2b75 --- /dev/null +++ b/scripts/ga_addBusinessEvent/ga_addBusinessEvent.gml @@ -0,0 +1,60 @@ +/// @description add business event +/// @param ... businesss event arguments +function ga_addBusinessEvent() { + + if (argument_count == 5) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + addBusinessEventJson_android(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_ios) + { + addBusinessEventJson_ios(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_windows) + { + addBusinessEventJson_windows(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_macosx) + { + addBusinessEventJson_mac(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_linux) + { + addBusinessEventJson_linux(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_uwp) + { + addBusinessEventJson_uwp(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + } + else + { + addBusinessEventJson_html(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + } + else if (argument_count == 6 && os_type == os_ios) + { + if(is_string(argument[5])) + { + addBusinessEventWithReceiptIOS(argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]); + } + else if(argument[5] == true) + { + addBusinessEventAndAutoFetchReceipt(argument[0], argument[1], argument[2], argument[3], argument[4]); + } + else + { + addBusinessEventJson_ios(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + } + else if (argument_count == 7 && os_type == os_android) + { + addBusinessEventWithReceiptAndroid(argument[0], argument[1], argument[2], argument[3], argument[4], argument[5], "google_play", argument[6]); + } + + +} diff --git a/scripts/ga_addBusinessEvent/ga_addBusinessEvent.yy b/scripts/ga_addBusinessEvent/ga_addBusinessEvent.yy new file mode 100644 index 00000000..8b51a2a4 --- /dev/null +++ b/scripts/ga_addBusinessEvent/ga_addBusinessEvent.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_addBusinessEvent", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_addDesignEvent/ga_addDesignEvent.gml b/scripts/ga_addDesignEvent/ga_addDesignEvent.gml new file mode 100644 index 00000000..b6ec7c1a --- /dev/null +++ b/scripts/ga_addDesignEvent/ga_addDesignEvent.gml @@ -0,0 +1,76 @@ +/// @description add design event +/// @param {string} eventId event id +/// @param {real} ?value optional value +function ga_addDesignEvent() { + + if(argument_count == 1) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + addDesignEvent_android(argument[0]); + } + else if(os_type == os_ios) + { + addDesignEvent_ios(argument[0]); + } + else if(os_type == os_windows) + { + addDesignEvent_windows(argument[0], "{}", false); + } + else if(os_type == os_macosx) + { + addDesignEvent_mac(argument[0], "{}", false); + } + else if(os_type == os_linux) + { + addDesignEvent_linux(argument[0], "{}", false); + } + else if(os_type == os_uwp) + { + addDesignEvent_uwp(argument[0], "{}", false); + } + } + else + { + addDesignEvent_html(argument[0]); + } + } + else if(argument_count == 2) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + addDesignEventWithValue_android(argument[0], argument[1]); + } + else if(os_type == os_ios) + { + addDesignEventWithValue_ios(argument[0], argument[1]); + } + else if(os_type == os_windows) + { + addDesignEventWithValue_windows(argument[0], argument[1], "{}", false); + } + else if(os_type == os_macosx) + { + addDesignEventWithValue_mac(argument[0], argument[1], "{}", false); + } + else if(os_type == os_linux) + { + addDesignEventWithValue_linux(argument[0], argument[1], "{}", false); + } + else if(os_type == os_uwp) + { + addDesignEventWithValue_uwp(argument[0], argument[1], "{}", false); + } + } + else + { + addDesignEventWithValue_html(argument[0], argument[1]); + } + } + + +} diff --git a/scripts/ga_addDesignEvent/ga_addDesignEvent.yy b/scripts/ga_addDesignEvent/ga_addDesignEvent.yy new file mode 100644 index 00000000..1ea9fca0 --- /dev/null +++ b/scripts/ga_addDesignEvent/ga_addDesignEvent.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_addDesignEvent", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_addErrorEvent/ga_addErrorEvent.gml b/scripts/ga_addErrorEvent/ga_addErrorEvent.gml new file mode 100644 index 00000000..b45e4fdb --- /dev/null +++ b/scripts/ga_addErrorEvent/ga_addErrorEvent.gml @@ -0,0 +1,39 @@ +/// @description add error event +/// @param {real} severity +/// @param {string} message +function ga_addErrorEvent() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + addErrorEvent_android(argument[0], argument[1]); + } + else if(os_type == os_ios) + { + addErrorEvent_ios(argument[0], argument[1]); + } + else if(os_type == os_windows) + { + addErrorEvent_windows(argument[0], argument[1], "{}", false); + } + else if(os_type == os_macosx) + { + addErrorEvent_mac(argument[0], argument[1], "{}", false); + } + else if(os_type == os_linux) + { + addErrorEvent_linux(argument[0], argument[1], "{}", false); + } + else if(os_type == os_uwp) + { + addErrorEvent_uwp(argument[0], argument[1], "{}", false); + } + } + else + { + addErrorEvent_html(argument[0], argument[1]); + } + + +} diff --git a/scripts/ga_addErrorEvent/ga_addErrorEvent.yy b/scripts/ga_addErrorEvent/ga_addErrorEvent.yy new file mode 100644 index 00000000..203f03b3 --- /dev/null +++ b/scripts/ga_addErrorEvent/ga_addErrorEvent.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_addErrorEvent", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_addProgressionEvent/ga_addProgressionEvent.gml b/scripts/ga_addProgressionEvent/ga_addProgressionEvent.gml new file mode 100644 index 00000000..2ff50081 --- /dev/null +++ b/scripts/ga_addProgressionEvent/ga_addProgressionEvent.gml @@ -0,0 +1,223 @@ +/// @description add progression event +/// @param {real} status progression status use (GA_PROGRESSIONSTATUS_START, GA_PROGRESSIONSTATUS_COMPLETE or GA_PROGRESSIONSTATUS_FAIL) +/// @param {string} progression1 first progression field (for example world) +/// @param {string} progression2 second progression field (for example level) +/// @param {string} progression3 second progression field (for example phase) +/// @param {real} ?score progression score +function ga_addProgressionEvent() { + + var status = argument[0]; + + if(argument_count == 2) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + addProgressionEvent_android(status, argument[1], "", ""); + } + else if(os_type == os_ios) + { + addProgressionEvent_ios(status, argument[1], "", ""); + } + else if(os_type == os_windows) + { + addProgressionEvent_windows(util_ga_arrayToJsonString(ga_array(status, argument[1], "", ""))); + } + else if(os_type == os_macosx) + { + addProgressionEvent_mac(util_ga_arrayToJsonString(ga_array(status, argument[1], "", ""))); + } + else if(os_type == os_linux) + { + addProgressionEvent_linux(util_ga_arrayToJsonString(ga_array(status, argument[1], "", ""))); + } + else if(os_type == os_uwp) + { + addProgressionEvent_uwp(util_ga_arrayToJsonString(ga_array(status, argument[1], "", ""))); + } + } + else + { + addProgressionEvent_html(status, argument[1], "", ""); + } + } + else if(argument_count == 3) + { + if(is_real(argument[2])) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + addProgressionEventWithScoreJson_android(util_ga_arrayToJsonString(ga_array(status, argument[1], "", "", argument[2]))); + } + else if(os_type == os_ios) + { + addProgressionEventWithScoreJson_ios(util_ga_arrayToJsonString(ga_array(status, argument[1], "", "", argument[2]))); + } + else if(os_type == os_windows) + { + addProgressionEventWithScoreJson_windows(util_ga_arrayToJsonString(ga_array(status, argument[1], "", "", argument[2]))); + } + else if(os_type == os_macosx) + { + addProgressionEventWithScoreJson_mac(util_ga_arrayToJsonString(ga_array(status, argument[1], "", "", argument[2]))); + } + else if(os_type == os_linux) + { + addProgressionEventWithScoreJson_linux(util_ga_arrayToJsonString(ga_array(status, argument[1], "", "", argument[2]))); + } + else if(os_type == os_uwp) + { + addProgressionEventWithScoreJson_uwp(util_ga_arrayToJsonString(ga_array(status, argument[1], "", "", argument[2]))); + } + } + else + { + addProgressionEventWithScoreJson_html(util_ga_arrayToJsonString(ga_array(status, argument[1], "", "", argument[2]))); + } + } + else + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + addProgressionEvent_android(status, argument[1], argument[2], ""); + } + else if(os_type == os_ios) + { + addProgressionEvent_ios(status, argument[1], argument[2], ""); + } + else if(os_type == os_windows) + { + addProgressionEvent_windows(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], ""))); + } + else if(os_type == os_macosx) + { + addProgressionEvent_mac(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], ""))); + } + else if(os_type == os_linux) + { + addProgressionEvent_linux(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], ""))); + } + else if(os_type == os_uwp) + { + addProgressionEvent_uwp(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], ""))); + } + } + else + { + addProgressionEvent_html(status, argument[1], argument[2], ""); + } + } + } + else if(argument_count == 4) + { + if(is_real(argument[3])) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + addProgressionEventWithScoreJson_android(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], "", argument[3]))); + } + else if(os_type == os_ios) + { + addProgressionEventWithScoreJson_ios(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], "", argument[3]))); + } + else if(os_type == os_windows) + { + addProgressionEventWithScoreJson_windows(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], "", argument[3]))); + } + else if(os_type == os_macosx) + { + addProgressionEventWithScoreJson_mac(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], "", argument[3]))); + } + else if(os_type == os_linux) + { + addProgressionEventWithScoreJson_linux(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], "", argument[3]))); + } + else if(os_type == os_uwp) + { + addProgressionEventWithScoreJson_uwp(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], "", argument[3]))); + } + } + else + { + addProgressionEventWithScoreJson_html(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], "", argument[3]))); + } + } + else + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + addProgressionEvent_android(status, argument[1], argument[2], argument[3]); + } + else if(os_type == os_ios) + { + addProgressionEvent_ios(status, argument[1], argument[2], argument[3]); + } + else if(os_type == os_windows) + { + addProgressionEvent_windows(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], argument[3]))); + } + else if(os_type == os_macosx) + { + addProgressionEvent_mac(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], argument[3]))); + } + else if(os_type == os_linux) + { + addProgressionEvent_linux(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], argument[3]))); + } + else if(os_type == os_uwp) + { + addProgressionEvent_uwp(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], argument[3]))); + } + } + else + { + addProgressionEvent_html(status, argument[1], argument[2], argument[3]); + } + } + } + else if(argument_count == 5) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + addProgressionEventWithScoreJson_android(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_ios) + { + addProgressionEventWithScoreJson_ios(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_windows) + { + addProgressionEventWithScoreJson_windows(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_macosx) + { + addProgressionEventWithScoreJson_mac(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_linux) + { + addProgressionEventWithScoreJson_linux(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_uwp) + { + addProgressionEventWithScoreJson_uwp(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], argument[3], argument[4]))); + } + } + else + { + addProgressionEventWithScoreJson_html(util_ga_arrayToJsonString(ga_array(status, argument[1], argument[2], argument[3], argument[4]))); + } + } + + +} diff --git a/scripts/ga_addProgressionEvent/ga_addProgressionEvent.yy b/scripts/ga_addProgressionEvent/ga_addProgressionEvent.yy new file mode 100644 index 00000000..8dbed6ac --- /dev/null +++ b/scripts/ga_addProgressionEvent/ga_addProgressionEvent.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_addProgressionEvent", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_addResourceEvent/ga_addResourceEvent.gml b/scripts/ga_addResourceEvent/ga_addResourceEvent.gml new file mode 100644 index 00000000..72531b49 --- /dev/null +++ b/scripts/ga_addResourceEvent/ga_addResourceEvent.gml @@ -0,0 +1,42 @@ +/// @description add resource event +/// @param {real} flowType resource flow type (GA_RESOURCEFLOWTYPE_SINK or GA_RESOURCEFLOWTYPE_SOURCE) +/// @param {string} currency resource currency +/// @param {real} amount amount of resource +/// @param {string} itemType item type +/// @param {string} itemId item id +function ga_addResourceEvent() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + addResourceEventJson_android(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_ios) + { + addResourceEventJson_ios(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_windows) + { + addResourceEventJson_windows(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_macosx) + { + addResourceEventJson_mac(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_linux) + { + addResourceEventJson_linux(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + else if(os_type == os_uwp) + { + addResourceEventJson_uwp(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + } + else + { + addResourceEventJson_html(util_ga_arrayToJsonString(ga_array(argument[0], argument[1], argument[2], argument[3], argument[4]))); + } + + +} diff --git a/scripts/ga_addResourceEvent/ga_addResourceEvent.yy b/scripts/ga_addResourceEvent/ga_addResourceEvent.yy new file mode 100644 index 00000000..389b43f6 --- /dev/null +++ b/scripts/ga_addResourceEvent/ga_addResourceEvent.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_addResourceEvent", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_array/ga_array.gml b/scripts/ga_array/ga_array.gml new file mode 100644 index 00000000..8db9557f --- /dev/null +++ b/scripts/ga_array/ga_array.gml @@ -0,0 +1,30 @@ +/// @description returns an array with the arguments as elements +/// @param ... arguments to use as array elements +function ga_array() { + + var array; + + for(var i = 0; i < argument_count; ++i) + { + if(is_string(argument[i])) + { + array[i] = string(argument[i]); + } + else if(is_real(argument[i])) + { + array[i] = real(argument[i]); + } + else if(is_bool(argument[i])) + { + array[i] = bool(argument[i]); + } + else + { + ga_trace("ga_array() argument" + i + " is not a string or number"); + } + } + + return array; + + +} diff --git a/scripts/ga_array/ga_array.yy b/scripts/ga_array/ga_array.yy new file mode 100644 index 00000000..683b080f --- /dev/null +++ b/scripts/ga_array/ga_array.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_array", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_configureAvailableCustomDimensions01/ga_configureAvailableCustomDimensions01.gml b/scripts/ga_configureAvailableCustomDimensions01/ga_configureAvailableCustomDimensions01.gml new file mode 100644 index 00000000..9bd9b30d --- /dev/null +++ b/scripts/ga_configureAvailableCustomDimensions01/ga_configureAvailableCustomDimensions01.gml @@ -0,0 +1,45 @@ +/// @description configure available 01 custom dimensions +/// @param {real} array instance id of ga_array object +function ga_configureAvailableCustomDimensions01(argument0) { + + if (is_array(argument0)) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + configureAvailableCustomDimensions01_android(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_ios) + { + configureAvailableCustomDimensions01_ios(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_windows) + { + configureAvailableCustomDimensions01_windows(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_macosx) + { + configureAvailableCustomDimensions01_mac(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_linux) + { + configureAvailableCustomDimensions01_linux(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_uwp) + { + configureAvailableCustomDimensions01_uwp(util_ga_arrayToJsonString(argument0)); + } + } + else + { + configureAvailableCustomDimensions01_html(util_ga_arrayToJsonString(argument0)); + } + } + else + { + ga_trace("ga_configureAvailableCustomDimensions01() argument is not an array"); + } + + +} diff --git a/scripts/ga_configureAvailableCustomDimensions01/ga_configureAvailableCustomDimensions01.yy b/scripts/ga_configureAvailableCustomDimensions01/ga_configureAvailableCustomDimensions01.yy new file mode 100644 index 00000000..3cbb6898 --- /dev/null +++ b/scripts/ga_configureAvailableCustomDimensions01/ga_configureAvailableCustomDimensions01.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_configureAvailableCustomDimensions01", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_configureAvailableCustomDimensions02/ga_configureAvailableCustomDimensions02.gml b/scripts/ga_configureAvailableCustomDimensions02/ga_configureAvailableCustomDimensions02.gml new file mode 100644 index 00000000..389c296f --- /dev/null +++ b/scripts/ga_configureAvailableCustomDimensions02/ga_configureAvailableCustomDimensions02.gml @@ -0,0 +1,45 @@ +/// @description configure available 02 custom dimensions +/// @param {real} array instance id of ga_array object +function ga_configureAvailableCustomDimensions02(argument0) { + + if (is_array(argument0)) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + configureAvailableCustomDimensions02_android(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_ios) + { + configureAvailableCustomDimensions02_ios(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_windows) + { + configureAvailableCustomDimensions02_windows(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_macosx) + { + configureAvailableCustomDimensions02_mac(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_linux) + { + configureAvailableCustomDimensions02_linux(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_uwp) + { + configureAvailableCustomDimensions02_uwp(util_ga_arrayToJsonString(argument0)); + } + } + else + { + configureAvailableCustomDimensions02_html(util_ga_arrayToJsonString(argument0)); + } + } + else + { + ga_trace("ga_configureAvailableCustomDimensions02() argument is not an array"); + } + + +} diff --git a/scripts/ga_configureAvailableCustomDimensions02/ga_configureAvailableCustomDimensions02.yy b/scripts/ga_configureAvailableCustomDimensions02/ga_configureAvailableCustomDimensions02.yy new file mode 100644 index 00000000..76eb9470 --- /dev/null +++ b/scripts/ga_configureAvailableCustomDimensions02/ga_configureAvailableCustomDimensions02.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_configureAvailableCustomDimensions02", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_configureAvailableCustomDimensions03/ga_configureAvailableCustomDimensions03.gml b/scripts/ga_configureAvailableCustomDimensions03/ga_configureAvailableCustomDimensions03.gml new file mode 100644 index 00000000..ee1ba4bd --- /dev/null +++ b/scripts/ga_configureAvailableCustomDimensions03/ga_configureAvailableCustomDimensions03.gml @@ -0,0 +1,45 @@ +/// @description configure available 03 custom dimensions +/// @param {real} array instance id of ga_array object +function ga_configureAvailableCustomDimensions03(argument0) { + + if (is_array(argument0)) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + configureAvailableCustomDimensions03_android(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_ios) + { + configureAvailableCustomDimensions03_ios(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_windows) + { + configureAvailableCustomDimensions03_windows(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_macosx) + { + configureAvailableCustomDimensions03_mac(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_linux) + { + configureAvailableCustomDimensions03_linux(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_uwp) + { + configureAvailableCustomDimensions03_uwp(util_ga_arrayToJsonString(argument0)); + } + } + else + { + configureAvailableCustomDimensions03_html(util_ga_arrayToJsonString(argument0)); + } + } + else + { + ga_trace("ga_configureAvailableCustomDimensions03() argument is not an array"); + } + + +} diff --git a/scripts/ga_configureAvailableCustomDimensions03/ga_configureAvailableCustomDimensions03.yy b/scripts/ga_configureAvailableCustomDimensions03/ga_configureAvailableCustomDimensions03.yy new file mode 100644 index 00000000..9b1a88ac --- /dev/null +++ b/scripts/ga_configureAvailableCustomDimensions03/ga_configureAvailableCustomDimensions03.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_configureAvailableCustomDimensions03", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_configureAvailableResourceCurrencies/ga_configureAvailableResourceCurrencies.gml b/scripts/ga_configureAvailableResourceCurrencies/ga_configureAvailableResourceCurrencies.gml new file mode 100644 index 00000000..40a113fe --- /dev/null +++ b/scripts/ga_configureAvailableResourceCurrencies/ga_configureAvailableResourceCurrencies.gml @@ -0,0 +1,45 @@ +/// @description configure available resource currencies +/// @param {real} array instance id of ga_array object +function ga_configureAvailableResourceCurrencies(argument0) { + + if (is_array(argument0)) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + configureAvailableResourceCurrencies_android(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_ios) + { + configureAvailableResourceCurrencies_ios(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_windows) + { + configureAvailableResourceCurrencies_windows(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_macosx) + { + configureAvailableResourceCurrencies_mac(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_linux) + { + configureAvailableResourceCurrencies_linux(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_uwp) + { + configureAvailableResourceCurrencies_uwp(util_ga_arrayToJsonString(argument0)); + } + } + else + { + configureAvailableResourceCurrencies_html(util_ga_arrayToJsonString(argument0)); + } + } + else + { + ga_trace("ga_configureAvailableResourceCurrencies() argument is not an array"); + } + + +} diff --git a/scripts/ga_configureAvailableResourceCurrencies/ga_configureAvailableResourceCurrencies.yy b/scripts/ga_configureAvailableResourceCurrencies/ga_configureAvailableResourceCurrencies.yy new file mode 100644 index 00000000..b6349020 --- /dev/null +++ b/scripts/ga_configureAvailableResourceCurrencies/ga_configureAvailableResourceCurrencies.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_configureAvailableResourceCurrencies", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_configureAvailableResourceItemTypes/ga_configureAvailableResourceItemTypes.gml b/scripts/ga_configureAvailableResourceItemTypes/ga_configureAvailableResourceItemTypes.gml new file mode 100644 index 00000000..4d538e8a --- /dev/null +++ b/scripts/ga_configureAvailableResourceItemTypes/ga_configureAvailableResourceItemTypes.gml @@ -0,0 +1,45 @@ +/// @description configure available resource item types +/// @param {real} array instance id of ga_array object +function ga_configureAvailableResourceItemTypes(argument0) { + + if (is_array(argument0)) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + configureAvailableResourceItemTypes_android(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_ios) + { + configureAvailableResourceItemTypes_ios(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_windows) + { + configureAvailableResourceItemTypes_windows(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_macosx) + { + configureAvailableResourceItemTypes_mac(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_linux) + { + configureAvailableResourceItemTypes_linux(util_ga_arrayToJsonString(argument0)); + } + else if(os_type == os_uwp) + { + configureAvailableResourceItemTypes_uwp(util_ga_arrayToJsonString(argument0)); + } + } + else + { + configureAvailableResourceItemTypes_html(util_ga_arrayToJsonString(argument0)); + } + } + else + { + ga_trace("ga_configureAvailableResourceItemTypes() argument is not an array"); + } + + +} diff --git a/scripts/ga_configureAvailableResourceItemTypes/ga_configureAvailableResourceItemTypes.yy b/scripts/ga_configureAvailableResourceItemTypes/ga_configureAvailableResourceItemTypes.yy new file mode 100644 index 00000000..ab996b82 --- /dev/null +++ b/scripts/ga_configureAvailableResourceItemTypes/ga_configureAvailableResourceItemTypes.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_configureAvailableResourceItemTypes", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_configureBuild/ga_configureBuild.gml b/scripts/ga_configureBuild/ga_configureBuild.gml new file mode 100644 index 00000000..0fd8ba01 --- /dev/null +++ b/scripts/ga_configureBuild/ga_configureBuild.gml @@ -0,0 +1,38 @@ +/// @description set build number +/// @param {string} build number +function ga_configureBuild() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + configureBuild_android(argument[0]); + } + else if(os_type == os_ios) + { + configureBuild_ios(argument[0]); + } + else if(os_type == os_windows) + { + configureBuild_windows(argument[0]); + } + else if(os_type == os_macosx) + { + configureBuild_mac(argument[0]); + } + else if(os_type == os_linux) + { + configureBuild_linux(argument[0]); + } + else if(os_type == os_uwp) + { + configureBuild_uwp(argument[0]); + } + } + else + { + configureBuild_html(argument[0]); + } + + +} diff --git a/scripts/ga_configureBuild/ga_configureBuild.yy b/scripts/ga_configureBuild/ga_configureBuild.yy new file mode 100644 index 00000000..81f36064 --- /dev/null +++ b/scripts/ga_configureBuild/ga_configureBuild.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_configureBuild", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_configureUserId/ga_configureUserId.gml b/scripts/ga_configureUserId/ga_configureUserId.gml new file mode 100644 index 00000000..1d11603f --- /dev/null +++ b/scripts/ga_configureUserId/ga_configureUserId.gml @@ -0,0 +1,38 @@ +/// @description set user id +/// @param {string} user id +function ga_configureUserId() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + configureUserId_android(argument[0]); + } + else if(os_type == os_ios) + { + configureUserId_ios(argument[0]); + } + else if(os_type == os_windows) + { + configureUserId_windows(argument[0]); + } + else if(os_type == os_macosx) + { + configureUserId_mac(argument[0]); + } + else if(os_type == os_linux) + { + configureUserId_linux(argument[0]); + } + else if(os_type == os_uwp) + { + configureUserId_uwp(argument[0]); + } + } + else + { + configureUserId_html(argument[0]); + } + + +} diff --git a/scripts/ga_configureUserId/ga_configureUserId.yy b/scripts/ga_configureUserId/ga_configureUserId.yy new file mode 100644 index 00000000..4b68d1f0 --- /dev/null +++ b/scripts/ga_configureUserId/ga_configureUserId.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_configureUserId", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_endSession/ga_endSession.gml b/scripts/ga_endSession/ga_endSession.gml new file mode 100644 index 00000000..46071a8b --- /dev/null +++ b/scripts/ga_endSession/ga_endSession.gml @@ -0,0 +1,37 @@ +/// @description end session +function ga_endSession() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + endSession_android(); + } + else if(os_type == os_ios) + { + endSession_ios(); + } + else if(os_type == os_windows) + { + endSession_windows(); + } + else if(os_type == os_macosx) + { + endSession_mac(); + } + else if(os_type == os_linux) + { + endSession_linux(); + } + else if(os_type == os_uwp) + { + endSession_uwp(); + } + } + else + { + endSession_html(); + } + + +} diff --git a/scripts/ga_endSession/ga_endSession.yy b/scripts/ga_endSession/ga_endSession.yy new file mode 100644 index 00000000..4c011f02 --- /dev/null +++ b/scripts/ga_endSession/ga_endSession.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_endSession", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_getRemoteConfigsContentAsString/ga_getRemoteConfigsContentAsString.gml b/scripts/ga_getRemoteConfigsContentAsString/ga_getRemoteConfigsContentAsString.gml new file mode 100644 index 00000000..bb45e1a6 --- /dev/null +++ b/scripts/ga_getRemoteConfigsContentAsString/ga_getRemoteConfigsContentAsString.gml @@ -0,0 +1,39 @@ +/// @description returns string of command center content +function ga_getRemoteConfigsContentAsString() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + return getRemoteConfigsContentAsString_android(); + } + else if(os_type == os_ios) + { + return getRemoteConfigsContentAsString_ios(); + } + else if(os_type == os_windows) + { + return getRemoteConfigsContentAsString_windows(); + } + else if(os_type == os_macosx) + { + return getRemoteConfigsContentAsString_mac(); + } + else if(os_type == os_linux) + { + return getRemoteConfigsContentAsString_linux(); + } + else if(os_type == os_uwp) + { + return getRemoteConfigsContentAsString_uwp(); + } + } + else + { + return getRemoteConfigsContentAsString_html(); + } + + return ""; + + +} diff --git a/scripts/ga_getRemoteConfigsContentAsString/ga_getRemoteConfigsContentAsString.yy b/scripts/ga_getRemoteConfigsContentAsString/ga_getRemoteConfigsContentAsString.yy new file mode 100644 index 00000000..14c85429 --- /dev/null +++ b/scripts/ga_getRemoteConfigsContentAsString/ga_getRemoteConfigsContentAsString.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_getRemoteConfigsContentAsString", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_getRemoteConfigsValueAsString/ga_getRemoteConfigsValueAsString.gml b/scripts/ga_getRemoteConfigsValueAsString/ga_getRemoteConfigsValueAsString.gml new file mode 100644 index 00000000..79f7cbe0 --- /dev/null +++ b/scripts/ga_getRemoteConfigsValueAsString/ga_getRemoteConfigsValueAsString.gml @@ -0,0 +1,78 @@ +/// @description get command center value as a string +/// @param {string} command center key +/// @param {real} ?defaultValue optional default value to return if key was not found +function ga_getRemoteConfigsValueAsString() { + + if(argument_count == 1) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + return getRemoteConfigsValueAsString_android(argument[0]); + } + else if(os_type == os_ios) + { + return getRemoteConfigsValueAsString_ios(argument[0]); + } + else if(os_type == os_windows) + { + return getRemoteConfigsValueAsString_windows(argument[0]); + } + else if(os_type == os_macosx) + { + return getRemoteConfigsValueAsString_mac(argument[0]); + } + else if(os_type == os_linux) + { + return getRemoteConfigsValueAsString_linux(argument[0]); + } + else if(os_type == os_uwp) + { + return getRemoteConfigsValueAsString_uwp(argument[0]); + } + } + else + { + return getRemoteConfigsValueAsString_html(argument[0]); + } + } + else if(argument_count == 2) + { + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + return getRemoteConfigsValueAsStringWithDefaultValue_android(argument[0]); + } + else if(os_type == os_ios) + { + return getRemoteConfigsValueAsStringWithDefaultValue_ios(argument[0]); + } + else if(os_type == os_windows) + { + return getRemoteConfigsValueAsStringWithDefaultValue_windows(argument[0]); + } + else if(os_type == os_macosx) + { + return getRemoteConfigsValueAsStringWithDefaultValue_mac(argument[0]); + } + else if(os_type == os_linux) + { + return getRemoteConfigsValueAsStringWithDefaultValue_linux(argument[0]); + } + else if(os_type == os_uwp) + { + return getRemoteConfigsValueAsStringWithDefaultValue_uwp(argument[0]); + } + } + else + { + return getRemoteConfigsValueAsStringWithDefaultValue_html(argument[0]); + } + } + + return ""; + + +} diff --git a/scripts/ga_getRemoteConfigsValueAsString/ga_getRemoteConfigsValueAsString.yy b/scripts/ga_getRemoteConfigsValueAsString/ga_getRemoteConfigsValueAsString.yy new file mode 100644 index 00000000..45730341 --- /dev/null +++ b/scripts/ga_getRemoteConfigsValueAsString/ga_getRemoteConfigsValueAsString.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_getRemoteConfigsValueAsString", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_initialize/ga_initialize.gml b/scripts/ga_initialize/ga_initialize.gml new file mode 100644 index 00000000..365360f1 --- /dev/null +++ b/scripts/ga_initialize/ga_initialize.gml @@ -0,0 +1,48 @@ +/// @description initialize sdk with given keys +/// @param {string} key game key +/// @param {string} secret secret key +function ga_initialize(argument0, argument1) { + + var GA_VERSION = "gamemaker 4.0.7"; + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + configureSdkGameEngineVersion_android(GA_VERSION); + native_ga_initialize_android(argument0, argument1); + } + else if(os_type == os_ios) + { + configureSdkGameEngineVersion_ios(GA_VERSION); + native_ga_initialize_ios(argument0, argument1); + } + else if(os_type == os_windows) + { + configureSdkGameEngineVersion_windows(GA_VERSION); + native_ga_initialize_windows(argument0, argument1); + } + else if(os_type == os_macosx) + { + configureSdkGameEngineVersion_mac(GA_VERSION); + native_ga_initialize_mac(argument0, argument1); + } + else if(os_type == os_linux) + { + configureSdkGameEngineVersion_linux(GA_VERSION); + native_ga_initialize_linux(argument0, argument1); + } + else if(os_type == os_uwp) + { + configureSdkGameEngineVersion_uwp(GA_VERSION); + native_ga_initialize_uwp(argument0, argument1); + } + } + else + { + configureSdkGameEngineVersion_html(GA_VERSION); + native_ga_initialize_html(argument0, argument1); + } + + +} diff --git a/scripts/ga_initialize/ga_initialize.yy b/scripts/ga_initialize/ga_initialize.yy new file mode 100644 index 00000000..e86789a3 --- /dev/null +++ b/scripts/ga_initialize/ga_initialize.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_initialize", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_isRemoteConfigsReady/ga_isRemoteConfigsReady.gml b/scripts/ga_isRemoteConfigsReady/ga_isRemoteConfigsReady.gml new file mode 100644 index 00000000..cbec21d6 --- /dev/null +++ b/scripts/ga_isRemoteConfigsReady/ga_isRemoteConfigsReady.gml @@ -0,0 +1,39 @@ +/// @description checks if command center is ready or not +function ga_isRemoteConfigsReady() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + return isRemoteConfigsReady_android(); + } + else if(os_type == os_ios) + { + return isRemoteConfigsReady_ios(); + } + else if(os_type == os_windows) + { + return isRemoteConfigsReady_windows(); + } + else if(os_type == os_macosx) + { + return isRemoteConfigsReady_mac(); + } + else if(os_type == os_linux) + { + return isRemoteConfigsReady_linux(); + } + else if(os_type == os_uwp) + { + return isRemoteConfigsReady_uwp(); + } + } + else + { + return isRemoteConfigsReady_html(); + } + + return false; + + +} diff --git a/scripts/ga_isRemoteConfigsReady/ga_isRemoteConfigsReady.yy b/scripts/ga_isRemoteConfigsReady/ga_isRemoteConfigsReady.yy new file mode 100644 index 00000000..a252ea5d --- /dev/null +++ b/scripts/ga_isRemoteConfigsReady/ga_isRemoteConfigsReady.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_isRemoteConfigsReady", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_onQuit/ga_onQuit.gml b/scripts/ga_onQuit/ga_onQuit.gml new file mode 100644 index 00000000..0d96cb19 --- /dev/null +++ b/scripts/ga_onQuit/ga_onQuit.gml @@ -0,0 +1,5 @@ +function ga_onQuit() { + ga_onStop(); + + +} diff --git a/scripts/ga_onQuit/ga_onQuit.yy b/scripts/ga_onQuit/ga_onQuit.yy new file mode 100644 index 00000000..b214735a --- /dev/null +++ b/scripts/ga_onQuit/ga_onQuit.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_onQuit", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_onResume/ga_onResume.gml b/scripts/ga_onResume/ga_onResume.gml new file mode 100644 index 00000000..36caa5bc --- /dev/null +++ b/scripts/ga_onResume/ga_onResume.gml @@ -0,0 +1,29 @@ +/// @description resume session (start new session) +function ga_onResume() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_windows) + { + onResume_windows(); + } + else if(os_type == os_macosx) + { + onResume_mac(); + } + else if(os_type == os_linux) + { + onResume_linux(); + } + else if(os_type == os_uwp) + { + onResume_uwp(); + } + } + else + { + onResume_html(); + } + + +} diff --git a/scripts/ga_onResume/ga_onResume.yy b/scripts/ga_onResume/ga_onResume.yy new file mode 100644 index 00000000..fb754d72 --- /dev/null +++ b/scripts/ga_onResume/ga_onResume.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_onResume", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_onStop/ga_onStop.gml b/scripts/ga_onStop/ga_onStop.gml new file mode 100644 index 00000000..c33bf2df --- /dev/null +++ b/scripts/ga_onStop/ga_onStop.gml @@ -0,0 +1,29 @@ +/// @description call on stop game +function ga_onStop() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_windows) + { + onStop_windows(); + } + else if(os_type == os_macosx) + { + onStop_mac(); + } + else if(os_type == os_linux) + { + onStop_linux(); + } + else if(os_type == os_uwp) + { + onStop_uwp(); + } + } + else + { + onStop_html(); + } + + +} diff --git a/scripts/ga_onStop/ga_onStop.yy b/scripts/ga_onStop/ga_onStop.yy new file mode 100644 index 00000000..72cf9493 --- /dev/null +++ b/scripts/ga_onStop/ga_onStop.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_onStop", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_setCustomDimension01/ga_setCustomDimension01.gml b/scripts/ga_setCustomDimension01/ga_setCustomDimension01.gml new file mode 100644 index 00000000..b36bb05d --- /dev/null +++ b/scripts/ga_setCustomDimension01/ga_setCustomDimension01.gml @@ -0,0 +1,38 @@ +/// @description set current custom dimension 01 +/// @param {string} dimension +function ga_setCustomDimension01() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + setCustomDimension01_android(argument[0]); + } + else if(os_type == os_ios) + { + setCustomDimension01_ios(argument[0]); + } + else if(os_type == os_windows) + { + setCustomDimension01_windows(argument[0]); + } + else if(os_type == os_macosx) + { + setCustomDimension01_mac(argument[0]); + } + else if(os_type == os_linux) + { + setCustomDimension01_linux(argument[0]); + } + else if(os_type == os_uwp) + { + setCustomDimension01_uwp(argument[0]); + } + } + else + { + setCustomDimension01_html(argument[0]); + } + + +} diff --git a/scripts/ga_setCustomDimension01/ga_setCustomDimension01.yy b/scripts/ga_setCustomDimension01/ga_setCustomDimension01.yy new file mode 100644 index 00000000..70117bb0 --- /dev/null +++ b/scripts/ga_setCustomDimension01/ga_setCustomDimension01.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_setCustomDimension01", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_setCustomDimension02/ga_setCustomDimension02.gml b/scripts/ga_setCustomDimension02/ga_setCustomDimension02.gml new file mode 100644 index 00000000..a7b65147 --- /dev/null +++ b/scripts/ga_setCustomDimension02/ga_setCustomDimension02.gml @@ -0,0 +1,38 @@ +/// @description set current custom dimension 02 +/// @param {string} dimension +function ga_setCustomDimension02() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + setCustomDimension02_android(argument[0]); + } + else if(os_type == os_ios) + { + setCustomDimension02_ios(argument[0]); + } + else if(os_type == os_windows) + { + setCustomDimension02_windows(argument[0]); + } + else if(os_type == os_macosx) + { + setCustomDimension02_mac(argument[0]); + } + else if(os_type == os_linux) + { + setCustomDimension02_linux(argument[0]); + } + else if(os_type == os_uwp) + { + setCustomDimension02_uwp(argument[0]); + } + } + else + { + setCustomDimension02_html(argument[0]); + } + + +} diff --git a/scripts/ga_setCustomDimension02/ga_setCustomDimension02.yy b/scripts/ga_setCustomDimension02/ga_setCustomDimension02.yy new file mode 100644 index 00000000..97a6f2fd --- /dev/null +++ b/scripts/ga_setCustomDimension02/ga_setCustomDimension02.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_setCustomDimension02", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_setCustomDimension03/ga_setCustomDimension03.gml b/scripts/ga_setCustomDimension03/ga_setCustomDimension03.gml new file mode 100644 index 00000000..5b17eeef --- /dev/null +++ b/scripts/ga_setCustomDimension03/ga_setCustomDimension03.gml @@ -0,0 +1,38 @@ +/// @description set current custom dimension 03 +/// @param {string} dimension +function ga_setCustomDimension03() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + setCustomDimension03_android(argument[0]); + } + else if(os_type == os_ios) + { + setCustomDimension03_ios(argument[0]); + } + else if(os_type == os_windows) + { + setCustomDimension03_windows(argument[0]); + } + else if(os_type == os_macosx) + { + setCustomDimension03_mac(argument[0]); + } + else if(os_type == os_linux) + { + setCustomDimension03_linux(argument[0]); + } + else if(os_type == os_uwp) + { + setCustomDimension03_uwp(argument[0]); + } + } + else + { + setCustomDimension03_html(argument[0]); + } + + +} diff --git a/scripts/ga_setCustomDimension03/ga_setCustomDimension03.yy b/scripts/ga_setCustomDimension03/ga_setCustomDimension03.yy new file mode 100644 index 00000000..9330cf7c --- /dev/null +++ b/scripts/ga_setCustomDimension03/ga_setCustomDimension03.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_setCustomDimension03", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_setEnabledEventSubmission/ga_setEnabledEventSubmission.gml b/scripts/ga_setEnabledEventSubmission/ga_setEnabledEventSubmission.gml new file mode 100644 index 00000000..b61bdc82 --- /dev/null +++ b/scripts/ga_setEnabledEventSubmission/ga_setEnabledEventSubmission.gml @@ -0,0 +1,38 @@ +/// @description enable or disable manual session handling +/// @param {real} true or false +function ga_setEnabledEventSubmission() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + setEnabledEventSubmission_android(argument[0]); + } + else if(os_type == os_ios) + { + setEnabledEventSubmission_ios(argument[0]); + } + else if(os_type == os_windows) + { + setEnabledEventSubmission_windows(argument[0]); + } + else if(os_type == os_macosx) + { + setEnabledEventSubmission_mac(argument[0]); + } + else if(os_type == os_linux) + { + setEnabledEventSubmission_linux(argument[0]); + } + else if(os_type == os_uwp) + { + setEnabledEventSubmission_uwp(argument[0]); + } + } + else + { + setEnabledEventSubmission_html(argument[0]); + } + + +} diff --git a/scripts/ga_setEnabledEventSubmission/ga_setEnabledEventSubmission.yy b/scripts/ga_setEnabledEventSubmission/ga_setEnabledEventSubmission.yy new file mode 100644 index 00000000..a8afb79e --- /dev/null +++ b/scripts/ga_setEnabledEventSubmission/ga_setEnabledEventSubmission.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_setEnabledEventSubmission", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_setEnabledInfoLog/ga_setEnabledInfoLog.gml b/scripts/ga_setEnabledInfoLog/ga_setEnabledInfoLog.gml new file mode 100644 index 00000000..376651aa --- /dev/null +++ b/scripts/ga_setEnabledInfoLog/ga_setEnabledInfoLog.gml @@ -0,0 +1,38 @@ +/// @description enable or disable info logging +/// @param {real} true or false +function ga_setEnabledInfoLog() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + setEnabledInfoLog_android(argument[0]); + } + else if(os_type == os_ios) + { + setEnabledInfoLog_ios(argument[0]); + } + else if(os_type == os_windows) + { + setEnabledInfoLog_windows(argument[0]); + } + else if(os_type == os_macosx) + { + setEnabledInfoLog_mac(argument[0]); + } + else if(os_type == os_linux) + { + setEnabledInfoLog_linux(argument[0]); + } + else if(os_type == os_uwp) + { + setEnabledInfoLog_uwp(argument[0]); + } + } + else + { + setEnabledInfoLog_html(argument[0]); + } + + +} diff --git a/scripts/ga_setEnabledInfoLog/ga_setEnabledInfoLog.yy b/scripts/ga_setEnabledInfoLog/ga_setEnabledInfoLog.yy new file mode 100644 index 00000000..a1de5efd --- /dev/null +++ b/scripts/ga_setEnabledInfoLog/ga_setEnabledInfoLog.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_setEnabledInfoLog", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_setEnabledManualSessionHandling/ga_setEnabledManualSessionHandling.gml b/scripts/ga_setEnabledManualSessionHandling/ga_setEnabledManualSessionHandling.gml new file mode 100644 index 00000000..894e6978 --- /dev/null +++ b/scripts/ga_setEnabledManualSessionHandling/ga_setEnabledManualSessionHandling.gml @@ -0,0 +1,38 @@ +/// @description enable or disable manual session handling +/// @param {real} true or false +function ga_setEnabledManualSessionHandling() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + setEnabledManualSessionHandling_android(argument[0]); + } + else if(os_type == os_ios) + { + setEnabledManualSessionHandling_ios(argument[0]); + } + else if(os_type == os_windows) + { + setEnabledManualSessionHandling_windows(argument[0]); + } + else if(os_type == os_macosx) + { + setEnabledManualSessionHandling_mac(argument[0]); + } + else if(os_type == os_linux) + { + setEnabledManualSessionHandling_linux(argument[0]); + } + else if(os_type == os_uwp) + { + setEnabledManualSessionHandling_uwp(argument[0]); + } + } + else + { + setEnabledManualSessionHandling_html(argument[0]); + } + + +} diff --git a/scripts/ga_setEnabledManualSessionHandling/ga_setEnabledManualSessionHandling.yy b/scripts/ga_setEnabledManualSessionHandling/ga_setEnabledManualSessionHandling.yy new file mode 100644 index 00000000..45f8c66c --- /dev/null +++ b/scripts/ga_setEnabledManualSessionHandling/ga_setEnabledManualSessionHandling.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_setEnabledManualSessionHandling", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_setEnabledVerboseLog/ga_setEnabledVerboseLog.gml b/scripts/ga_setEnabledVerboseLog/ga_setEnabledVerboseLog.gml new file mode 100644 index 00000000..b363a666 --- /dev/null +++ b/scripts/ga_setEnabledVerboseLog/ga_setEnabledVerboseLog.gml @@ -0,0 +1,38 @@ +/// @description enable or disable verbose logging +/// @param {real} true or false +function ga_setEnabledVerboseLog() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + setEnabledVerboseLog_android(argument[0]); + } + else if(os_type == os_ios) + { + setEnabledVerboseLog_ios(argument[0]); + } + else if(os_type == os_windows) + { + setEnabledVerboseLog_windows(argument[0]); + } + else if(os_type == os_macosx) + { + setEnabledVerboseLog_mac(argument[0]); + } + else if(os_type == os_linux) + { + setEnabledVerboseLog_linux(argument[0]); + } + else if(os_type == os_uwp) + { + setEnabledVerboseLog_uwp(argument[0]); + } + } + else + { + setEnabledVerboseLog_html(argument[0]); + } + + +} diff --git a/scripts/ga_setEnabledVerboseLog/ga_setEnabledVerboseLog.yy b/scripts/ga_setEnabledVerboseLog/ga_setEnabledVerboseLog.yy new file mode 100644 index 00000000..c82df13a --- /dev/null +++ b/scripts/ga_setEnabledVerboseLog/ga_setEnabledVerboseLog.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_setEnabledVerboseLog", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_startSession/ga_startSession.gml b/scripts/ga_startSession/ga_startSession.gml new file mode 100644 index 00000000..73c5925d --- /dev/null +++ b/scripts/ga_startSession/ga_startSession.gml @@ -0,0 +1,37 @@ +/// @description start session +function ga_startSession() { + + if(os_browser == browser_not_a_browser) + { + if(os_type == os_android) + { + startSession_android(); + } + else if(os_type == os_ios) + { + startSession_ios(); + } + else if(os_type == os_windows) + { + startSession_windows(); + } + else if(os_type == os_macosx) + { + startSession_mac(); + } + else if(os_type == os_linux) + { + startSession_linux(); + } + else if(os_type == os_uwp) + { + startSession_uwp(); + } + } + else + { + startSession_html(); + } + + +} diff --git a/scripts/ga_startSession/ga_startSession.yy b/scripts/ga_startSession/ga_startSession.yy new file mode 100644 index 00000000..c307f8ad --- /dev/null +++ b/scripts/ga_startSession/ga_startSession.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_startSession", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/ga_trace/ga_trace.gml b/scripts/ga_trace/ga_trace.gml new file mode 100644 index 00000000..d7758cc0 --- /dev/null +++ b/scripts/ga_trace/ga_trace.gml @@ -0,0 +1,25 @@ +/// @description print arguments to log +/// @param ... arguments to print +function ga_trace() { + + if (!variable_global_exists("ga_logfile")) + { + global.ga_logfile = "logs/ga_log.txt"; + var f = file_text_open_write(global.ga_logfile); + file_text_close(f); + } + + var r = "GameAnalytics: " + string(argument[0]), i; + for (i = 1; i < argument_count; i++) + { + r += ", " + string(argument[i]); + } + + var log_file = file_text_open_append(global.ga_logfile); + file_text_write_string(log_file, r); + file_text_writeln(log_file); + file_text_close(log_file); + show_message(r); + + +} diff --git a/scripts/ga_trace/ga_trace.yy b/scripts/ga_trace/ga_trace.yy new file mode 100644 index 00000000..942e8156 --- /dev/null +++ b/scripts/ga_trace/ga_trace.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "ga_trace", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file diff --git a/scripts/save_and_load_data/save_and_load_data.gml b/scripts/save_and_load_data/save_and_load_data.gml index 7802afd5..5ad9fb71 100644 --- a/scripts/save_and_load_data/save_and_load_data.gml +++ b/scripts/save_and_load_data/save_and_load_data.gml @@ -2,8 +2,18 @@ // https://help.yoyogames.com/hc/en-us/articles/360005277377 for more information function save_and_load_data(argument0,argument1) { + //save if argument0 = 1 //save { + //online statistics + with(code) + { + if (object_index = code) + { + event_user(0) + } + } + ini_open_protect("Project_wak_beta_04.ini") //도전과제 diff --git a/scripts/util_ga_arrayToJsonString/util_ga_arrayToJsonString.gml b/scripts/util_ga_arrayToJsonString/util_ga_arrayToJsonString.gml new file mode 100644 index 00000000..71d8fd99 --- /dev/null +++ b/scripts/util_ga_arrayToJsonString/util_ga_arrayToJsonString.gml @@ -0,0 +1,50 @@ +/// @description utility function to format a ga_array object as a json string +/// @param {real} array instance id of ga_array object +function util_ga_arrayToJsonString(argument0) { + + var result = "[]"; + + if (is_array(argument0)) + { + var array = argument0; + + var length = array_length_1d(array); + result = "["; + for(var i = 0; i < length; ++i) + { + if(is_string(array[i])) + { + result += "\"" + string(array[i]) + "\""; + if(i < length - 1) + { + result += ","; + } + } + else if(is_real(array[i])) + { + result += string(array[i]); + if(i < length - 1) + { + result += ","; + } + } + else if(is_bool(array[i])) + { + result += string(array[i]); + if(i < length - 1) + { + result += ","; + } + } + else + { + ga_trace("ga_arrayToJsonString() element at index=" + i + " is not a string or number"); + } + } + result += "]"; + } + + return result; + + +} diff --git a/scripts/util_ga_arrayToJsonString/util_ga_arrayToJsonString.yy b/scripts/util_ga_arrayToJsonString/util_ga_arrayToJsonString.yy new file mode 100644 index 00000000..12da6196 --- /dev/null +++ b/scripts/util_ga_arrayToJsonString/util_ga_arrayToJsonString.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "util_ga_arrayToJsonString", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Statics", + "path": "folders/스크립트/Statics.yy", + }, +} \ No newline at end of file