Ver Fonte

fixed: 角标模块再增加了唤灵师获得新言灵/武器的提示.

王刚 há 3 anos atrás
pai
commit
ac539e86e5

+ 5 - 4
Gameserver/Amfphp/main.php

@@ -24,16 +24,16 @@ function getRootURL() {
 }
 
 /**
- * 一种优化方案, 如果部署环境可以支持动态代码生成,将会减少与redis网络通信的次数. 
+ * 一种优化方案, 如果部署环境可以支持动态代码生成,将会减少与redis网络通信的次数.
  * (在云服务器实验中,开了不如不开效率高 ̄□ ̄||,而且文件模式需要在多台机子中分发.-gwang2017)
- * 经验证,复杂逻辑(会多次读取配置信息时)可以有效改善性能. -gwang 2020.11.24 
+ * 经验证,复杂逻辑(会多次读取配置信息时)可以有效改善性能. -gwang 2020.11.24
  * @var boolean (部署环境)是否允许代码生成
  */
 define('CodeGen_Enabled', false)
         and CodeGen_Enabled
         and define('CodeGen_Folder', ROOTDIR . '/../../CodeGen/');              # 代码生成功能的输出位置
 
-require_once ROOTDIR . '/AutoLoad.php';                                         # 初始化框架自动加载机制 
+require_once ROOTDIR . '/AutoLoad.php';                                         # 初始化框架自动加载机制
 
 /**
  * get dao instance,
@@ -58,7 +58,7 @@ function gMem() {
     static $cmem = null;
     if ($cmem == null) {
         $nosql = config::Inst()->nosql;
-//        $use_ext = true;                # 使用扩展,测试用(暂时仅支持php7)                       
+//        $use_ext = true;                # 使用扩展,测试用(暂时仅支持php7)
 //        if ($use_ext) {
 //            $cmem = new \Redis();       # 还是需要重写下, 之前的CRedisUtil已经增加了json_encode/decode.
 //            $cmem->connect($nosql->host, $nosql->port);
@@ -66,6 +66,7 @@ function gMem() {
 //        } else {
         $cmem = new CRedisUtil();
         $cmem->conn($nosql->host, $nosql->port, $nosql->pwd);
+
 //        }
     }
     return $cmem;

+ 40 - 1
Gameserver/Amfphp/process/EventProc/CornerSignEventProc.php

@@ -28,6 +28,11 @@ class OperateEventType extends Enum {
     const Arena_FreeTimes = 18;                                                 // 竞技场 可进入
     const Gift = 19;                                                            // 礼包
     const Gift_Day = 20;                                                        // 每日礼包
+    const Role = 21;                                                            // 角色模块
+    const Role_Attribute = 22;                                                  // 角色  属性(有新的可升级的道具)
+    const Role_YanLing = 23;                                                    // 角色 有新言灵
+    const Role_Weapon = 24;                                                     // 角色 有新武器
+
 }
 
 /**
@@ -36,13 +41,18 @@ class OperateEventType extends Enum {
  * @author Administrator
  */
 class CornerSignEventProc {
+    // <editor-fold defaultstate="collapsed" desc="礼包">
 
     /**
      * 每日礼包提示
      */
-    public static function OnNewDay(){
+    public static function OnNewDay() {
         req()->userInfo->game->privateState->cornerSignNotifications[] = OperateEventType::Gift_Day;
     }
+
+// </editor-fold>
+    // <editor-fold defaultstate="collapsed" desc="任务">
+
     /**
      * 剧情任务状态有更新(新增/完成)
      */
@@ -57,6 +67,9 @@ class CornerSignEventProc {
         req()->userInfo->game->privateState->cornerSignNotifications[] = OperateEventType::Task_Daily;
     }
 
+// </editor-fold>
+    // <editor-fold defaultstate="collapsed" desc="言灵">
+
     /**
      * 言灵召唤状态,解锁新的战士
      */
@@ -78,6 +91,9 @@ class CornerSignEventProc {
         req()->userInfo->game->privateState->cornerSignNotifications[] = OperateEventType::Call_Archer;
     }
 
+// </editor-fold>
+    // <editor-fold defaultstate="collapsed" desc="背包">
+
     /**
      * 包裹--获得新的武器
      */
@@ -106,6 +122,8 @@ class CornerSignEventProc {
         req()->userInfo->game->privateState->cornerSignNotifications[] = OperateEventType::Bag_Material;
     }
 
+// </editor-fold>
+
     /**
      * 排行榜--战力奖励状态有变化
      */
@@ -137,6 +155,27 @@ class CornerSignEventProc {
         req()->userInfo->game->privateState->cornerSignNotifications[] = OperateEventType::Notice_New;
     }
 
+    /**
+     * 角色 属性(有新的可升级道具)
+     */
+    public static function OnRoleAttribute() {
+        req()->userInfo->game->privateState->cornerSignNotifications[] = OperateEventType::Role_Attribute;
+    }
+
+    /**
+     * 角色 言灵(有新的可替换/装备言灵)
+     */
+    public static function OnRoleYanling() {
+        req()->userInfo->game->privateState->cornerSignNotifications[] = OperateEventType::Role_YanLing;
+    }
+
+    /**
+     * 角色 武器(有新的可装备/替换武器)
+     */
+    public static function OnRoleWeapon() {
+        req()->userInfo->game->privateState->cornerSignNotifications[] = OperateEventType::Role_YanLing;
+    }
+
     /**
      * AAA
      */

+ 33 - 32
Gameserver/Amfphp/process/StoreProc.php

@@ -637,15 +637,15 @@ class StoreProc {
      * @return type
      */
     public static function AddMultiItemInStore($goodsStr, $src = 1, $mask = 0) {
-        $user = req()->userInfo->game;    
-        $ary = explode(";", $goodsStr);       
-        //$unlockNum = $user->privateState->expandNum * 5;      
-        //$n = self::countStoreNum();            
+        $user = req()->userInfo->game;
+        $ary = explode(";", $goodsStr);
+        //$unlockNum = $user->privateState->expandNum * 5;
+        //$n = self::countStoreNum();
         foreach ($ary as $value) {
             $val = explode(",", $value);
             $cid = "";
             my_Assert(count($val) > 1, "解析奖励字符串出错");
-                       
+
             list( $itemId, $num) = $val;                                        # ID, 数量
             $smItem = GameConfig::item_base_getItem($itemId);                   # 道具mo
             switch ($smItem->subType) {                                         # 根据类型分别添加到容器中
@@ -684,12 +684,14 @@ class StoreProc {
                         $cid = StoreProc::PutEquipInStore($itemId);
                     }
                     CornerSignEventProc::OnBag_new_Weapon();
+                    CornerSignEventProc::OnRoleWeapon();
                     break;
                 case 401:                                                       # 言灵
                     for ($n = 0; $n < $num; $n++) {
                         $cid = StoreProc::PutYanLingInStore($itemId);
                     }
                     CornerSignEventProc::OnBag_new_Yanling();
+                    CornerSignEventProc::OnRoleYanling();
                     break;
                 case 501:                                                       # 限购礼包
                     $itemMO = GameConfig::item_package_getItem($itemId);
@@ -772,29 +774,29 @@ class StoreProc {
         //$num += count((array)$user->store->items);
         $itemNum = 0;
         foreach ($itemDic as $key => $num) {
-            if($num == 0){
+            if ($num == 0) {
                 continue;
             }
-            
-            if($num > 99999){
+
+            if ($num > 99999) {
                 $itemNum += 2;
             } else {
                 $itemNum += 1;
             }
-        }              
-        
+        }
+
         //var_dump($num);
         //var_dump('-----------------');
-      
-        $itemNum += count((array)$user->store->equipment);
+
+        $itemNum += count((array) $user->store->equipment);
         //var_dump($num);
         //var_dump('-----------------');
-        $itemNum += count((array)$user->store->yanling);    
+        $itemNum += count((array) $user->store->yanling);
         //var_dump($itemNum);
         return $itemNum;
     }
 
-     /**
+    /**
      * [6401]向包裹中添加物品
      */
     public static function AddItemInStore() {
@@ -821,14 +823,14 @@ class StoreProc {
      * 将装备放入背包
      * @param type $itemId
      */
-    static function PutEquipInStore($itemId) {              
+    static function PutEquipInStore($itemId) {
         $privateState = req()->userInfo->game->privateState;
-        $unlockNum = $privateState->expandNum * 5;    
+        $unlockNum = $privateState->expandNum * 5;
         //var_dump("wuqi==============");
-        $n = self::countStoreNum();  
+        $n = self::countStoreNum();
         $initNum = GameConfig::globalsettings()->Item_Packet_InitNum_New;
-	my_Assert($n<$unlockNum+$initNum, "背包容量不够请扩容");
-        
+        my_Assert($n < $unlockNum + $initNum, "背包容量不够请扩容");
+
         if (!CommUtil::isPropertyExists($privateState, "currentId")) {          // 如果仓库中已经有这种元素,则其数目+1
             req()->userInfo->game->privateState->currentId = 1;
         }
@@ -851,12 +853,12 @@ class StoreProc {
     static function PutYanLingInStore($itemId) {
         //my_Assert(count((array) req()->userInfo->game->store->yanling) < 100, ErrCode::store_yanling_bagfull);
         $privateState = req()->userInfo->game->privateState;
-        $unlockNum = $privateState->expandNum * 5;   
+        $unlockNum = $privateState->expandNum * 5;
         //var_dump("yanling==============");
-        $n = self::countStoreNum();  
+        $n = self::countStoreNum();
         $initNum = GameConfig::globalsettings()->Item_Packet_InitNum_New;
-	my_Assert($n<$unlockNum+$initNum, "背包容量不够请扩容");
-        
+        my_Assert($n < $unlockNum + $initNum, "背包容量不够请扩容");
+
         if (!CommUtil::isPropertyExists($privateState, "currentId")) {          # 如果仓库中已经有这种元素,则其数目+1
             req()->userInfo->game->privateState->currentId = 1;
         }
@@ -877,11 +879,11 @@ class StoreProc {
      */
     static function PutTaskCardInStore($itemId) {
         $privateState = req()->userInfo->game->privateState;
-        $unlockNum = $privateState->expandNum * 5;    
+        $unlockNum = $privateState->expandNum * 5;
         //var_dump("task==============");
-        //$n = self::countStoreNum();     
-	//my_Assert($n<$unlockNum+50, "背包容量不够请扩容");
-        
+        //$n = self::countStoreNum();
+        //my_Assert($n<$unlockNum+50, "背包容量不够请扩容");
+
         if (!CommUtil::isPropertyExists($privateState, "currentId")) {          # 如果仓库中已经有这种元素,则其数目+1
             req()->userInfo->game->privateState->currentId = 1;
         }
@@ -928,18 +930,17 @@ class StoreProc {
      */
     static function PutOverlyingItemInStore($itemId, $num = 1) {
         //var_dump("item==============".$itemId);
-        $unlockNum = req()->userInfo->game->privateState->expandNum * 5;      
-        $n = self::countStoreNum();   
+        $unlockNum = req()->userInfo->game->privateState->expandNum * 5;
+        $n = self::countStoreNum();
         $initNum = GameConfig::globalsettings()->Item_Packet_InitNum_New;
-	my_Assert($n < $unlockNum+$initNum, "背包容量不够请扩容");
-      
+        my_Assert($n < $unlockNum + $initNum, "背包容量不够请扩容");
+
         $items = req()->userInfo->game->store->items;                           # dic: itemid=>number
         if (CommUtil::isPropertyExists($items, $itemId)) {                      # 如果仓库中已经有这种元素,则其数目+=num
             $items->$itemId += $num;
         } else {                                                                # 如果仓库中没有这种元素,则其数目置为num
             $items->$itemId = $num;
         }
-                
     }
 
     /**

+ 5 - 1
Gameserver/Amfphp/util/CRedisUtil.php

@@ -161,9 +161,10 @@ class CRedisUtil {
      * @param string $host
      * @param string $port
      * @param string $pwd
+     * @param string $db 数据库, 不建议输入参数, 如果是购买云实例只有一个db.
      * @return \CRedisUtil
      */
-    public function conn($host, $port, $pwd = "") {
+    public function conn($host, $port, $pwd = "", $db = 0) {
 //        DebugHelper::print_stack_trace();
         $this->redis = new \Predis\Client(array(
             'scheme' => 'tcp',
@@ -171,6 +172,9 @@ class CRedisUtil {
             'port' => $port,
             'password' => $pwd,
         ));
+        if ($db != 0) {
+            $this->redis->select($db);
+        }
 //        $this->keyDic = new \stdClass();
         return $this;
     }