cyzhao 3 anni fa
parent
commit
1348487ef6

+ 8 - 2
Gameserver/Amfphp/model/User/Info_NewMap.php

@@ -35,6 +35,12 @@ class Info_NewMap extends Object_ext {
      */
     public $huichengquanRecord = null;
     
+    /**
+     * 当前地图所在区里面的回城券使用地的mapid
+     * @var type
+     */
+    public $lastMapId;
+    
     function __construct($arg = null) {
         if (null === $arg) {
             // 直接初始化8个大陆的基本数据
@@ -62,11 +68,11 @@ class Info_NewMap extends Object_ext {
             $footHold = new Ins_FootHold();
             $footHold->mapId = $mo->gateId;
             $footHold->curMapType = $mo->mapType;
-            $this->unlockedFootholds->$initMapid = $footHold; 
+            $this->unlockedFootholds->$dixiachengId = $footHold; 
             
             
             $this->unlockMapTypeList = ObjectInit();                            #初始化--已经解锁的地图上的区域、npc、道具等等信息      
-            $this->huichengquanRecord = ObjectInit();                                #
+            $this->huichengquanRecord = ObjectInit();                                #                      
         } else {
             parent::__construct($arg);
         }

+ 16 - 2
Gameserver/Amfphp/process/MapProc.php

@@ -81,7 +81,8 @@ class MapProc {
         $data->position_y = $y;
         $data->position_z = $z;
         
-        $newMap->huichengquanRecord->$mid = $data;
+        $newMap->huichengquanRecord->$mapId = $data;
+        $newMap->lastMapId = $mapId;
         
         ctx()->newMap = $newMap;
 
@@ -272,9 +273,22 @@ class MapProc {
         # 检查目标地图是否已经解锁
         my_Assert(isset($newMap->unlockedFootholds->$targetMapId), ErrCode::map_NotUnlocked);
         $newMap->curMapId = $targetMapId;
+        
+        $gateZone = GameConfig::gate_zone();
+        my_Assert($gateZone != null, ErrCode::err_const_no);
+        foreach ($gateZone as $zoneid => $val) {
+            $list = explode(',', $val->contains);
+            if(in_array($targetMapId, $list)){
+                $mid = $list[0];
+                break;
+            }
+        } 
+        
+        $newMap->lastMapId = $mid;
+        
         ctx()->newMap = $newMap;
         UserProc::updateUserInfo();
-        return Resp::ok();
+        return Resp::ok($newMap);
     }
 
     /**

+ 9 - 2
Gameserver/Amfphp/process/UserProc.php

@@ -451,8 +451,15 @@ class UserProc {
             $footHold = new Ins_FootHold();
             $footHold->mapId = $mo->gateId;
             $footHold->curMapType = $mo->mapType;
-            $this->unlockedFootholds->$dixiachengId = $footHold; 
-        }             
+            $game->newMap->unlockedFootholds->$dixiachengId = $footHold; 
+        }   
+        
+        foreach ($game->newMap->unlockedFootholds as $mapid => $val) {
+            if($val->mapId != $mapid){
+                $game->newMap->unlockedFootholds->$mapid->mapId = $mapid;
+                break;
+            }
+        }
             
     }