Browse Source

广告概率设置

wuwangdong 4 years ago
parent
commit
85a5cac50b

+ 36 - 1
assets/script/before/view/data/HarvestData.ts

@@ -1,5 +1,7 @@
 /**收获界面数据类 */
 
+import { RateConfig } from "../../../game/data/AdData";
+import Guide from "../../../game/module/guide/Guide";
 import { Data } from "../../../mk/data/Data";
 
 const { ccclass } = cc._decorator;
@@ -21,7 +23,15 @@ export default class HarvestData extends Data {
         this.node_fly = node;
         this.config = gData.gameData.getProductMap(this.plantID);
 
-        mk.ui.openPanel('game/prefab/uiPanel/HarvestPanel');
+        let isTeaching = mk.guide.isGuiding();
+        let rand = Math.random();
+        let rate = gData.adData.getPerByEcpm(RateConfig.RC_superDouble);
+        if (!isTeaching && rand <= rate) {
+            mk.ui.openPanel('game/prefab/uiPanel/HarvestPanel');
+        } else {
+            this.getNormalReward();
+        }
+
     }
 
     setAdData(data) {
@@ -38,4 +48,29 @@ export default class HarvestData extends Data {
         //mk.ui.openPanel('module/reward/reward');
         gData.harvestData.call = null;
     }
+
+    async getNormalReward() {
+        let data = { id: this.config.id };
+        let response = await mk.http.sendData('redMoney/addRedMoneyByFarm', data);
+
+        if (response && response.errcode != 0) {
+            return;
+        }
+
+        //奖励弹窗
+        if (response.data.redMoneyAddition <= 0) {
+            console.log('返回奖励为0')
+        }
+        else {
+            this.getType = 0;
+            let rewardData = [{ rewardType: 1, rewardNum: response.data.redMoneyAddition }];
+            gData.reward.data = rewardData;
+            gData.reward.callback = this.call;
+
+
+            let world_Pos = this.node_fly.parent.convertToWorldSpaceAR(this.node_fly.getPosition());
+            gData.reward.getReward(world_Pos);
+            //mk.ui.openPanel('module/reward/reward');
+        }
+    }
 }

+ 78 - 9
assets/script/game/data/AdData.ts

@@ -262,19 +262,26 @@ export class AdData {
      * @type  1:弹出全屏插屏广告  2:延时弹出大插屏  3:先弹出插屏,再弹出大插屏  4:互推红包
      */
     checkShowFullInter(type, des = null) {
-        let per = this.getPerByEcpm();
-        let pop = Math.random() < per;
-        if (!pop) {
-            return;
-        }
+        let per = 0;
+        let pop = true;
         switch (type) {
             case 1:
+                per = this.getPerByEcpm(RateConfig.RC_fullScreen);
+                pop = Math.random() < per;
+                if (!pop) {
+                    return;
+                }
                 if (this.FullScreenAdArr.indexOf(this.ecpmLevel.toString()) == -1) {
                     return;
                 }
                 mk.ad.showInterAd(1, des);
                 break;
             case 2:
+                per = this.getPerByEcpm(RateConfig.RC_tableScreen);
+                pop = Math.random() < per;
+                if (!pop) {
+                    return;
+                }
                 let delayArr = gData.gameData.configs.ServerConfig.AdDelay.split(',');
                 let min = parseFloat(delayArr[0]);
                 let max = parseFloat(delayArr[1]);
@@ -284,6 +291,12 @@ export class AdData {
                 }, delay);
                 break;
             case 3:
+
+                per = this.getPerByEcpm(RateConfig.RC_tableScreen);
+                pop = Math.random() < per;
+                if (!pop) {
+                    return;
+                }
                 let delayArr1 = gData.gameData.configs.ServerConfig.AdDelay.split(',');
                 let min1 = parseFloat(delayArr1[0]);
                 let max1 = parseFloat(delayArr1[1]);
@@ -297,6 +310,12 @@ export class AdData {
                 }, delay1);
                 break;
             case 4:
+                per = this.getPerByEcpm(RateConfig.RC_moreGameRedBag);
+                pop = Math.random() < per;
+                if (!pop) {
+                    return;
+                }
+
                 gData.moreGame.popNewOpenRedBag();
                 break;
         }
@@ -394,16 +413,56 @@ export class AdData {
 
 
 
-    getPerByEcpm() {
+    getPerByEcpm(type: RateConfig = RateConfig.RC_fullScreen) {
         // //test
         // return 0.26;
         let forceAd = gData.gameData.configs.ForceAd;
         let len = forceAd.length;
         let per = 0;
         for (var i = 0; i < len; i++) {
-            if (gData.gameData.adShowConfig.average_ecpm <= parseInt(forceAd[i].ecpmMax)) {
-                per = parseFloat(forceAd[i].percent);
-                break;
+            switch (type) {
+                case RateConfig.RC_fullScreen:
+                    if (gData.gameData.adShowConfig.average_ecpm <= parseInt(forceAd[i].ecpmMax)) {
+                        per = parseFloat(forceAd[i].percent);
+                        break;
+                    }
+                    break;
+                case RateConfig.RC_tableScreen:
+                    if (gData.gameData.adShowConfig.average_ecpm <= parseInt(forceAd[i].ecpmMax)) {
+                        per = parseFloat(forceAd[i].percent);
+                        break;
+                    }
+                    break;
+                case RateConfig.RC_banner:
+                    if (gData.gameData.adShowConfig.average_ecpm <= parseInt(forceAd[i].ecpmMax)) {
+                        per = parseFloat(forceAd[i].percent);
+                        break;
+                    }
+                    break;
+                case RateConfig.RC_infrormationFlow:
+                    if (gData.gameData.adShowConfig.average_ecpm <= parseInt(forceAd[i].ecpmMax)) {
+                        per = parseFloat(forceAd[i].percent);
+                        break;
+                    }
+                    break;
+                case RateConfig.RC_splash:
+                    if (gData.gameData.adShowConfig.average_ecpm <= parseInt(forceAd[i].ecpmMax)) {
+                        per = parseFloat(forceAd[i].percent);
+                        break;
+                    }
+                    break;
+                case RateConfig.RC_superDouble:
+                    if (gData.gameData.adShowConfig.average_ecpm <= parseInt(forceAd[i].ecpmMax)) {
+                        per = parseFloat(forceAd[i].percent);
+                        break;
+                    }
+                    break;
+                case RateConfig.RC_moreGameRedBag:
+                    if (gData.gameData.adShowConfig.average_ecpm <= parseInt(forceAd[i].ecpmMax)) {
+                        per = parseFloat(forceAd[i].percent);
+                        break;
+                    }
+                    break;
             }
         }
 
@@ -434,4 +493,14 @@ export enum AdFun {
     harvest = 9,        //收获超级加倍视频
     farmMap = 10,       //图鉴领取视频
     lineUp = 11,        //插队视频
+}
+
+export enum RateConfig {
+    RC_fullScreen,
+    RC_tableScreen,
+    RC_banner,
+    RC_infrormationFlow,
+    RC_splash,
+    RC_superDouble,
+    RC_moreGameRedBag
 }

+ 1 - 1
assets/script/game/data/GameData.ts

@@ -515,7 +515,7 @@ export class GameData {
         let flyRed = true;
         switch (this.nextType) {
             case 0:
-                mk.tip.pop('农场已满,无法继续生产');
+                //mk.tip.pop('农场已满,无法继续生产');
                 //弹出收获、生虫、加速
                 if (!this.checkCanHarvest()) {
                     if (!this.checkCanClearSick()) {

+ 1 - 1
assets/script/game/data/HttpData.ts

@@ -5,7 +5,7 @@
 export class HttpData {
 
     /** 服务器类型 0测试服 1正式服 2李扬服 3悍国服 */
-    public serverType: number = 1;
+    public serverType: number = 0;
 
     public getServerUrl(): string {
         switch (this.serverType) {

+ 10 - 7
assets/script/game/game/Game.ts

@@ -1,4 +1,5 @@
 import JsbSystem from "../../mk/system/JsbSystem";
+import { RateConfig } from "../data/AdData";
 import { DataEventId, GameProp, ProductType, VideoAdType } from "../data/GameData";
 
 const { ccclass, property } = cc._decorator;
@@ -95,7 +96,11 @@ export default class Game extends cc.Component {
 
         console.log("===[Jsbsystem 显示开屏广告================================")
         if (mk.ad.ifShowAd) {
-            JsbSystem.showSplash();
+            let rand = Math.random();
+            let rate = gData.adData.getPerByEcpm(RateConfig.RC_splash);
+            if (rand <= rate) {
+                JsbSystem.showSplash();
+            }
         }
 
     }
@@ -173,11 +178,9 @@ export default class Game extends cc.Component {
             }
         }
 
-        if(!this.isShowAddProductTimesUI)
-        {
+        if (!this.isShowAddProductTimesUI) {
             this.isShowAddProductTimesUI = true;
-            if(add > 0)
-            {
+            if (add > 0) {
                 gData.gameData.restoreProductTimes = add;
                 mk.ui.openPanel('module/speedUpUI/restoreProductTimes');
             }
@@ -202,7 +205,7 @@ export default class Game extends cc.Component {
     private initInfo() {
         this.lbl_redMoney.string = gData.gameData.playerProp.redMoney / 100 + "";
         gData.gameData.init_coin = false;
-        
+
         if (gData.gameData.playerProp.userFarmTaskInfo) {
             let com = gData.gameData.playerProp.userFarmTaskInfo.completeCount;
             let count = gData.gameData.playerProp.userFarmTaskInfo.taskCount;
@@ -229,7 +232,7 @@ export default class Game extends cc.Component {
         gData.gameData.init_coin = false;
 
         if (gData.gameData.addHb > 0) {
-            let add =  Math.round(gData.gameData.addHb / 100);
+            let add = Math.round(gData.gameData.addHb / 100);
             this.lbl_addHb.string = "+" + add.toString();
             gData.gameData.addHb = 0;
 

+ 9 - 0
assets/script/game/module/speedUpUI/RestoreProductTimes.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "8ba09dc5-0152-482b-bfbd-3955512a70f7",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 13 - 0
assets/script/mk/system/AdSystem.ts

@@ -1,3 +1,4 @@
+import { RateConfig } from "../../game/data/AdData";
 import { BannerAdType, InterAdType, InterFullAdType, VideoAdType } from "../../game/data/GameData";
 import { IADSDKMgr } from "../sdk/ad/IADSDKMgr";
 
@@ -127,6 +128,12 @@ export default class AdSystem {
             return;
         }
 
+        let per = gData.adData.getPerByEcpm(RateConfig.RC_infrormationFlow);
+        let pop = Math.random() < per;
+        if (!pop) {
+            return;
+        }
+
         if (cc.sys.platform != cc.sys.WECHAT_GAME) {
             if (cc.sys.os == cc.sys.OS_ANDROID) {
                 this.adSdk.showNative(type);
@@ -220,6 +227,12 @@ export default class AdSystem {
             return;
         }
 
+        let per = gData.adData.getPerByEcpm(RateConfig.RC_banner);
+        let pop = Math.random() < per;
+        if (!pop) {
+            return;
+        }
+
         this.bannerAdType = bannerAdType;
         mk.console.logSingle('banner', 'showBanner');
         // console.log("===[AdSystem gameData.adShowConfig", gData.gameData.adShowConfig.is_show_banner);