依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

八字排盘系统济宁依星网络
查看: 7|回复: 0

[游戏架设教程] [传奇技术]增加小地图的第三种显示方式

[复制链接] 主动推送

3万

主题

3万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
33640
发表于 前天 21:56 | 显示全部楼层 |阅读模式
[传奇技术]增加小地图的第三种显示方式
喜欢大部分引擎的大地图的方式。。。
先改了一下客户端clmain.pas里的显示小地图的地方 就是改了按快捷键tab的。鼠标点的触发没有改。。。
原来的小地图有两种的,一种小的局部的。一个大点的全景的。。。分两个等级小地图。增加一个等级3吧。
  1. procedure TfrmMain.SwitchMiniMap(); //开关小地图
  2. var
  3.   i: Integer;
  4.   szMapTitle: string;
  5.   pMapDescInfo: pTMapDescInfo;
  6. begin
  7.   if not g_boViewMiniMap then
  8.   begin
  9.     if GetTickCount > g_dwQueryMsgTick then
  10.     begin
  11.       g_dwQueryMsgTick := GetTickCount + 3000;
  12.       frmMain.SendWantMiniMap;
  13.       g_nViewMinMapLv := 1;
  14.       g_boViewMiniMap := True;
  15.       DScreen.AddChatBoardString('等级1', clWhite, clBlue);
  16.     end;
  17.   end
  18.   else
  19.   begin
  20.           //增加一级
  21.           Inc(g_nViewMinMapLv);
  22.           DScreen.AddChatBoardString('等级+1', clWhite, clBlue);


  23.     if g_nViewMinMapLv = 2 then
  24.     begin
  25.       DScreen.AddChatBoardString('等级2', clWhite, clBlue);
  26.       //g_nViewMinMapLv := 0;
  27.       // g_boViewMiniMap := True;

  28.     end ;

  29.     if g_nViewMinMapLv > 3 then
  30.     begin
  31.       DScreen.AddChatBoardString('清空等级', clWhite, clBlue);
  32.       g_nViewMinMapLv := 0;
  33.       g_boViewMiniMap := False;
  34.     end;




  35.   end;

  36.   // 123456
  37.   g_xCurMapDescList.Clear;
  38.   for i := 0 to g_xMapDescList.count - 1 do
  39.   begin
  40.     szMapTitle := g_xMapDescList[i];
  41.     pMapDescInfo := pTMapDescInfo(g_xMapDescList.Objects[i]);
  42.     if (CompareText(g_xMapDescList[i], g_sMapTitle) = 0) and
  43.       (((pMapDescInfo.nFullMap = g_nViewMinMapLv) and
  44.       (pMapDescInfo.nFullMap = 1)) or ((g_nViewMinMapLv <> 1) and
  45.       (pMapDescInfo.nFullMap = 0))) then
  46.     begin
  47.       g_xCurMapDescList.AddObject(g_xMapDescList[i], TObject(pMapDescInfo));
  48.     end;
  49.   end;
  50. end;
复制代码
然后修改playscn.pas  等级3显示一个400*400的大地图全景。。
  1.         //画迷你小地图
  2. procedure TPlayScene.DrawMiniMap(Surface: TCustomCanvas);
  3. var
  4.   D, dd                     : TCustomLockableTexture; //画布
  5.   v                         : Boolean;
  6.   mx, my, nX, nY, i         : Integer;
  7.   Actor                     : TActor;
  8.   X, Y                      : Integer;
  9.   btColor                   : byte;
  10.   rx, ry, rrx, rry          : Real;
  11.   S                         : string;
  12.   tMapPath                  : array of TPoint;
  13.   pMapDescInfo              : pTMapDescInfo;
  14. begin
  15.            //ih小地图索引小于0退出.
  16.   if g_nMiniMapIndex < 0 then Exit;
  17.            //地图索引. 大于300
  18.   if g_nMiniMapIndex >= 300 then begin
  19.                     //读取  Data\NewopUI.data里的补丁.
  20.     D := g_opui.Images[g_nMiniMapIndex + 1];   //ASP注释
  21.   end else
  22.                //读取Data\mmap.data的数据.
  23.     D := g_WMMapImages.Images[g_nMiniMapIndex];

  24.   if D = nil then begin
  25.           //为空的话呢 画迷你地图为假...
  26.     g_DrawingMiniMap := False;
  27.     Exit;
  28.   end;

  29.   if g_nViewMinMapLv = 1 then begin
  30.     mx := (g_MySelf.m_nCurrX * 48) div 32;
  31.     my := g_MySelf.m_nCurrY;
  32.     //g_MiniMapRC 整数矩形 为IntRect
  33.     //左右上底部的坐标.............,   细看很简单的...
  34.     g_MiniMapRC.Left := _MAX(0, mx - 60);
  35.     g_MiniMapRC.Top := _MAX(0, my - 60);
  36.     g_MiniMapRC.Right := _MIN(D.ClientRect.Right, g_MiniMapRC.Left + 120);
  37.     g_MiniMapRC.Bottom := _MIN(D.ClientRect.Bottom, g_MiniMapRC.Top + 120);

  38.         //画写混合为真.
  39.     if g_DrawMiniBlend then begin
  40. //      DrawBlend_Mix(Surface, (SCREENWIDTH - 120), 0, D, g_MiniMapRC.Left, g_MiniMapRC.Top, 120, 120, 0);    //ASP注释

  41.       Surface.DrawAlpha((SCREENWIDTH - 120), 0, g_MiniMapRC, D, 120)
  42.     end else begin
  43.       Surface.Draw(SCREENWIDTH - 120, 0, g_MiniMapRC, D, False); //ASP注释
  44.     end;

  45.     g_DrawingMiniMap := True;

  46.     //            闪烁时间 +300    自身在地图上的小点..
  47.     if GetTickCount > m_dwBlinkTime + 300 then begin
  48.       m_dwBlinkTime := GetTickCount;
  49.       m_boViewBlink := not m_boViewBlink;
  50.     end;
  51.     if m_boViewBlink then begin

  52.       mx := (SCREENWIDTH - 120) + (g_MySelf.m_nCurrX * 48) div 32 - g_MiniMapRC.Left;
  53.       my := (g_MySelf.m_nCurrY * 32) div 32 - g_MiniMapRC.Top;
  54.               //向右填充
  55.       Surface.FillRect(IntRectBDS(mx - 1, my - 1, 1 + 2, 1 + 2), GetRGB(255));
  56.     end;
  57.                //历一次列表......演员列表...
  58.     for i := 0 to m_ActorList.Count - 1 do begin //opt
  59.       Actor := TActor(m_ActorList[i]);
  60.                 //此演员的各种状态..   正常的话...
  61.       if (Actor <> nil) and not Actor.m_boDeath and Actor.m_boVisible and Actor.m_boHoldPlace and (Actor <> g_MySelf) then begin
  62.                                    //找范围 再进行显示...
  63.                        //演员与自身的x并Y 10距离的绝对值。。就是10*10范围吧。
  64.         if (abs(Actor.m_nCurrX - g_MySelf.m_nCurrX) <= 10) and (abs(Actor.m_nCurrY - g_MySelf.m_nCurrY) <= 10) then begin
  65.                    //屏的高度-120+ 演员当前坐标*45/42-地图的左边
  66.           mx := (SCREENWIDTH - 120) + (Actor.m_nCurrX * 48) div 32 - g_MiniMapRC.Left;
  67.                        //当前坐标-小地图上面坐标?
  68.           my := Actor.m_nCurrY - g_MiniMapRC.Top;
  69.           case Actor.m_btRace of    //根据演员的race决定是什么色..
  70.             12, 24, 50: btColor := 250;  //一些是紫色...
  71.             54, 55, 81: btColor := 0;
  72.             0: begin
  73.                 if Actor.m_btNameColor = 255 then
  74.                   btColor := 251
  75.                 else
  76.                   btColor := Actor.m_btNameColor;
  77.                 {if Actor.m_btIsHero <> 0 then
  78.                   btColor := 147
  79.                 else
  80.                   btColor := 251;}
  81.               end;
  82.           else
  83.             btColor := 249; //其它为249
  84.           end;
  85.           if Actor.m_btNameColor = 253 then btColor := 253;
  86.           //根据颜色处理小点...
  87.           Surface.FillRect(IntRectBDS(mx - 1, my - 1, 1 + 2, 1 + 2), GetRGB(btColor));
  88.         end;
  89.       end;
  90.     end;
  91.     //123456
  92.                    //当前地图备注列表    确定显示名字。。。
  93.     for i := 0 to g_xCurMapDescList.Count - 1 do begin
  94.       pMapDescInfo := pTMapDescInfo(g_xCurMapDescList.Objects[i]);
  95.       mx := (SCREENWIDTH - 120) + (pMapDescInfo.nPointX * 48) div 32 - g_MiniMapRC.Left;
  96.       my := pMapDescInfo.nPointY - g_MiniMapRC.Top;
  97.       if (mx >= SCREENWIDTH - 120) and ((my >= 0) and (my <= 120)) then begin
  98.         if g_DrawMiniBlend then
  99.           Surface.BoldTextOut( mx, my, pMapDescInfo.nColor, FontBorderColor, pMapDescInfo.szPlaceName)
  100.         else
  101.           Surface.BoldTextOut( mx, my, pMapDescInfo.nColor, FontBorderColor, pMapDescInfo.szPlaceName)
  102.       end;
  103.     end;

  104.               //如果显示小地图坐标。画出坐标。
  105.     if g_ShowMiniMapXY then begin
  106.       rx := g_MySelf.m_nCurrX + (g_nMouseX - (SCREENWIDTH - (g_MiniMapRC.Right - g_MiniMapRC.Left)) - ((g_MiniMapRC.Right - g_MiniMapRC.Left) div 2)) * 2 / 3;
  107.       ry := g_MySelf.m_nCurrY + (g_nMouseY - (g_MiniMapRC.Bottom - g_MiniMapRC.Top) div 2);
  108.       if (rx >= 0) and (ry >= 0) then begin
  109.         S := Format('%s:%s', [IntToStr(Round(rx)), IntToStr(Round(ry))]);
  110.         with Surface do begin
  111.           try
  112.             TextOut(SCREENWIDTH - FontManager.Default.TextWidth(S) - 02, g_MiniMapRC.Bottom - g_MiniMapRC.Top - 14, IntToStr(Round(rx)) + ':' + IntToStr(Round(ry)));  //ASP注释
  113.           finally
  114.           end;
  115.         end;
  116.       end;
  117.     end;
  118.             //地图路径不为空。。。 中键寻路 显示路径吧。。。
  119.     if g_MapPath <> nil then
  120.       if g_MoveStep <= High(g_MapPath) then
  121.         for i := g_MoveStep to High(g_MapPath) do begin
  122.           mx := (SCREENWIDTH - 120) + (g_MapPath[i].X * 48) div 32 - g_MiniMapRC.Left;
  123.           my := g_MapPath[i].Y - g_MiniMapRC.Top;
  124.           if (mx >= SCREENWIDTH - 120) and ((my >= 0) and (my <= 120)) then
  125.           Surface.FillRect(IntRectBDS(mx, my, 1, 1), GetRGB(224));
  126.         end;

  127.           //下面就是g_nViewMinMapLv >= 2的了。。。就是再变大一点的地图。。
  128.   end;

  129.   if g_nViewMinMapLv = 2 then


  130.   begin
  131.     g_MiniMapRC.Left := SCREENWIDTH - MINIMAPSIZE;
  132.     g_MiniMapRC.Top := 0;
  133.     g_MiniMapRC.Right := SCREENWIDTH;
  134.     g_MiniMapRC.Bottom := MINIMAPSIZE;
  135.     Surface.StretchDraw(g_MiniMapRC,d.ClientRect, d,true);
  136. //    if g_DrawMiniBlend then begin
  137. //      g_DsMiniMapPixel.StretchDraw(g_MapRect, D.ClientRect, D, False);      //ASP注释
  138. //      DrawBlend_Mix(Surface, (SCREENWIDTH - MINIMAPSIZE), 0, g_DsMiniMapPixel, 0, 0, MINIMAPSIZE, MINIMAPSIZE, 0);
  139. //    end else
  140. //      Surface.StretchDraw(g_MiniMapRC, D.ClientRect, D, False);

  141.     g_DrawingMiniMap := True;
  142.     if GetTickCount > m_dwBlinkTime + 300 then begin
  143.       m_dwBlinkTime := GetTickCount;
  144.       m_boViewBlink := not m_boViewBlink;
  145.     end;
  146.     rx := D.Width / (MINIMAPSIZE * 1.5);
  147.     ry := D.Height / MINIMAPSIZE;
  148.     rrx := rx;
  149.     rry := ry;
  150.     if m_boViewBlink then begin
  151.       mx := g_MiniMapRC.Left + Round(g_MySelf.m_nCurrX / rx);
  152.       my := Round(g_MySelf.m_nCurrY / ry);
  153.       Surface.FillRect(IntRectBDS(mx - 1, my - 1, 1 + 2, 1 + 2), GetRGB(255));
  154.     end;

  155.     if g_boOpenAutoPlay and (g_APMapPath <> nil) then begin
  156.       nX := Round(12 / rx);
  157.       nY := Round(12 / ry);
  158.       SetLength(tMapPath, High(g_APMapPath) + 1);
  159.       for i := 0 to High(g_APMapPath) do begin
  160.         mx := Round(g_APMapPath[i].X / rx);
  161.         my := Round(g_APMapPath[i].Y / ry);
  162.         tMapPath[i] := Point(SCREENWIDTH - MINIMAPSIZE + mx, my);
  163.         Surface.FillRect(IntRectBDS(SCREENWIDTH - 200 + mx - 1, my - 1, 1 + 1, 1 + 1), GetRGB(249));

  164. //        with Surface.Canvas do begin         //ASP注释
  165. //          if i = g_APStep then
  166. //            Pen.Color := clRed
  167. //          else
  168. //            Pen.Color := clLime;
  169. //          Brush.Color := clBlack;
  170. //          Brush.Style := bsClear;
  171. //          RoundRect((SCREENWIDTH - 200 + mx + nX), (0 + my + nY), (SCREENWIDTH - 200 + mx - nX), (0 + my - nY), nX * 2, nY * 2);
  172. //          Release;
  173. //        end;
  174.       end;

  175. //      with Surface.Canvas do begin   //ASP注释
  176. //        Pen.Color := GetRGB(151);
  177. //        Brush.Color := clBlack;
  178. //        Brush.Style := bsClear;
  179. //        Polygon(tMapPath);
  180. //        Release;
  181. //      end;

  182.     end;

  183.     if g_MapPath <> nil then begin
  184.       if g_MoveStep <= High(g_MapPath) then
  185.         for i := g_MoveStep to High(g_MapPath) do begin
  186.           mx := SCREENWIDTH - 200 + Round(g_MapPath[i].X / rx);
  187.           my := Round(g_MapPath[i].Y / ry);
  188.           Surface.FillRect(IntRectBDS(mx, my, 1, 1), GetRGB(224));
  189.         end;
  190.     end;
  191.     //123456
  192.     for i := 0 to g_xCurMapDescList.Count - 1 do begin
  193.       pMapDescInfo := pTMapDescInfo(g_xCurMapDescList.Objects[i]);
  194.       mx := SCREENWIDTH - 200 + Round(pMapDescInfo.nPointX / rrx);
  195.       my := Round(pMapDescInfo.nPointY / rry);
  196.         if g_DrawMiniBlend then
  197.           Surface.BoldTextOut( mx, my, pMapDescInfo.nColor, FontBorderColor, pMapDescInfo.szPlaceName)
  198.         else
  199.           Surface.BoldTextOut( mx, my, pMapDescInfo.nColor, FontBorderColor, pMapDescInfo.szPlaceName)
  200.     end;
  201.     if g_ShowMiniMapXY then begin
  202.       rx := (g_nMouseX - g_MiniMapRC.Left) * (Map.m_MapHeader.wWidth / MINIMAPSIZE);
  203.       ry := g_nMouseY * (Map.m_MapHeader.wHeight / MINIMAPSIZE);
  204.       if (rx >= 0) and (ry >= 0) then begin
  205.         S := Format('%s:%s', [IntToStr(Round(rx)), IntToStr(Round(ry))]);
  206.         with Surface do begin
  207. //          Windows.SetBkMode(Handle, TRANSPARENT);
  208.           try

  209.             TextOut(SCREENWIDTH - FontManager.Default.TextWidth(S) - 2, MINIMAPSIZE - 14, S);   //ASP注释
  210.           finally
  211. //            Release;
  212.           end;
  213.         end;
  214.       end;
  215.     end;
  216.   end;

  217.   if g_nViewMinMapLv = 3 then

  218.   begin
  219.         //这是第三种显示,大一点的...
  220.         //
  221.         //400*400
  222.         //
  223.     g_MiniMapRC.Left := SCREENWIDTH - 400;
  224.     g_MiniMapRC.Top := 0;
  225.     g_MiniMapRC.Right := SCREENWIDTH;
  226.     g_MiniMapRC.Bottom := 400;
  227.     Surface.StretchDraw(g_MiniMapRC,d.ClientRect, d,true);
  228. //    if g_DrawMiniBlend then begin
  229. //      g_DsMiniMapPixel.StretchDraw(g_MapRect, D.ClientRect, D, False);      //ASP注释
  230. //      DrawBlend_Mix(Surface, (SCREENWIDTH - MINIMAPSIZE), 0, g_DsMiniMapPixel, 0, 0, MINIMAPSIZE, MINIMAPSIZE, 0);
  231. //    end else
  232. //      Surface.StretchDraw(g_MiniMapRC, D.ClientRect, D, False);

  233.     g_DrawingMiniMap := True;
  234.     if GetTickCount > m_dwBlinkTime + 300 then begin
  235.       m_dwBlinkTime := GetTickCount;
  236.       m_boViewBlink := not m_boViewBlink;
  237.     end;


  238.     rx := D.Width / (400*1.5);
  239.     ry := D.Height / 400;
  240.     rrx := rx;
  241.     rry := ry;
  242.     //查看闪烁
  243.     if m_boViewBlink then begin
  244.       mx := g_MiniMapRC.Left + Round(g_MySelf.m_nCurrX / rx);
  245.       my := Round(g_MySelf.m_nCurrY / ry);
  246.       Surface.FillRect(IntRectBDS(mx - 1, my - 1, 1 + 2, 1 + 2), GetRGB(255));
  247.     end;

  248.     if g_boOpenAutoPlay and (g_APMapPath <> nil) then begin
  249.       nX := Round(12 / rx);
  250.       nY := Round(12 / ry);
  251.       SetLength(tMapPath, High(g_APMapPath) + 1);
  252.       for i := 0 to High(g_APMapPath) do begin
  253.         mx := Round(g_APMapPath[i].X / rx);
  254.         my := Round(g_APMapPath[i].Y / ry);
  255.         tMapPath[i] := Point(SCREENWIDTH - 400 + mx, my);
  256.         Surface.FillRect(IntRectBDS(SCREENWIDTH - 400 + mx - 1, my - 1, 1 + 1, 1 + 1), GetRGB(249));

  257. //        with Surface.Canvas do begin         //ASP注释
  258. //          if i = g_APStep then
  259. //            Pen.Color := clRed
  260. //          else
  261. //            Pen.Color := clLime;
  262. //          Brush.Color := clBlack;
  263. //          Brush.Style := bsClear;
  264. //          RoundRect((SCREENWIDTH - 200 + mx + nX), (0 + my + nY), (SCREENWIDTH - 200 + mx - nX), (0 + my - nY), nX * 2, nY * 2);
  265. //          Release;
  266. //        end;
  267.       end;

  268. //      with Surface.Canvas do begin   //ASP注释
  269. //        Pen.Color := GetRGB(151);
  270. //        Brush.Color := clBlack;
  271. //        Brush.Style := bsClear;
  272. //        Polygon(tMapPath);
  273. //        Release;
  274. //      end;

  275.     end;

  276.     if g_MapPath <> nil then begin
  277.       if g_MoveStep <= High(g_MapPath) then
  278.         for i := g_MoveStep to High(g_MapPath) do begin
  279.           mx := SCREENWIDTH - 400 + Round(g_MapPath[i].X / rx);
  280.           my := Round(g_MapPath[i].Y / ry);
  281.           Surface.FillRect(IntRectBDS(mx, my, 1, 1), GetRGB(224));
  282.         end;
  283.     end;
  284.     //123456
  285.     for i := 0 to g_xCurMapDescList.Count - 1 do begin
  286.       pMapDescInfo := pTMapDescInfo(g_xCurMapDescList.Objects[i]);
  287.       mx := SCREENWIDTH - 400 + Round(pMapDescInfo.nPointX / rrx);
  288.       my := Round(pMapDescInfo.nPointY / rry);
  289.         if g_DrawMiniBlend then
  290.           Surface.BoldTextOut( mx, my, pMapDescInfo.nColor, FontBorderColor, pMapDescInfo.szPlaceName)
  291.         else
  292.           Surface.BoldTextOut( mx, my, pMapDescInfo.nColor, FontBorderColor, pMapDescInfo.szPlaceName)
  293.     end;
  294.     if g_ShowMiniMapXY then begin
  295.       rx := (g_nMouseX - g_MiniMapRC.Left) * (Map.m_MapHeader.wWidth / 400);
  296.       ry := g_nMouseY * (Map.m_MapHeader.wHeight / 400);
  297.       if (rx >= 0) and (ry >= 0) then begin
  298.         S := Format('%s:%s', [IntToStr(Round(rx)), IntToStr(Round(ry))]);
  299.         with Surface do begin
  300. //          Windows.SetBkMode(Handle, TRANSPARENT);
  301.           try

  302.             TextOut(SCREENWIDTH - FontManager.Default.TextWidth(S) - 2, 400 - 14, S);   //ASP注释
  303.           finally
  304. //            Release;
  305.           end;
  306.         end;
  307.       end;
  308.     end;




  309.   end;


  310. end;
复制代码
其实就是一个很简单的框架来的。。
大地图居中不会。加边框也不会。。。。
还有就是最大的这种地图的中键寻路也不准确。。。。找到寻路的代码。暂时还不会改。。。
请各位大哥指教。
扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员6折;永久VIP4折
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|小黑屋|依星资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2026-8-3 06:20

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表