《魔兽世界插件》教程---21点扑克游戏 Blackjack

2 篇文章 0 订阅
订阅专栏

1.效果图



因为我是新手,只能做一个非常简单的插件,21点扑克游戏。比较有趣吧,插件也可以做一个游戏?游戏中的游戏!


2.编写魔兽世界插件准备

  1. 首先你要一个最新的魔兽世界客户端,我的有26G大小。记得要申请一个试玩账户,试玩账户不会消耗游戏时间,可不能用正常账户,那调试代码烧点卡烧的厉害!
  2. 用什么编辑器呢?魔兽世界插件大部分是Lua,一部分是XML,SciTE比较适合Lua,但我感觉用NotePad++比较好。前期可能要用下一个大型的编辑器叫"AddOn Studio for World of Warcraft",有点像VS。它用来调试XML不错。
  3. 还要准备3个第三方魔兽世界插件来帮助我们!BugGrabber,BugSack,TinyPad。前面两个是调试用的,如果我们写的插件有错误的话会提示第几行,什么错误。TinyPad是一个游戏内记事本功能的插件,可以在里面写Lua脚本,直接游戏运行,当我们要测试少量的wow API比较有用
  4. 看完《Programming in Lua, 3rd Edition》和《Beginning Lua with World of Warcraft Add-ons》(真的看完就不用往下看这篇教程了=。=,对英语阅读有一定要求,但不难)
  5. 比较有用的网站,www.google.com, www.wowwiki.com。暴雪是没有公布插件API的,只能google了。


总结下跟一般的编程一样的。

运行效果查看:魔兽世界客户端+试玩账户

编辑器:首推NotePad++,SciTEAddOn Studio

调试:!BugGrabber,BugSack,TinyPad + print("") ,print 可以在游戏中打印日志,我们可以打印变量来调试。

教程:《Beginning Lua with World of Warcraft Add-ons》 


当然不能每次重启魔兽世界客户端来看修改效果,我们可以做一个简单的宏来重载所有UI,当你修改了你的插件的XML或者Lua文件时,可以重载所有UI来看到修改效果。当然Shift+点击BugSack也有同样的效果。修改toc或者新增图片,音乐资源是不能靠重载UI来生效的,要重启魔兽世界客户端。


3.还是先写一个插件版的Hello World吧


把上面提到的三个插件!BugGrabber,BugSack,TinyPad,google下,都下载下来。拷贝到\Interface\AddOns 目录下。进入游戏,输入/pad 就可以打开TinyPad了,我们输入print("Hello World"),再点击上面的菜单有个功能是run this page as a script,就可以看到效果了。




4.写一个简单插件界面吧



点击Click按钮就会调用我们一个Lua函数,点击Close,整个界面就会隐藏。



这次是一个完整的插件,名字叫testButton,包括三个文件:

Frame.lua  -- 用来存放脚本

Frame       -- 用来描述界面,以XML编写

testButton.toc -- 用来描述我们的插件,比如插件支持的魔兽世界版本,插件名字,插件作者,插件包含文件等等。


先来看下testButton.toc


## Author: Walle
## Interface: 50400
## Title: testButton
## Version: 1.0
Frame.xml
Frame.lua

再看下xml,里面有两个button

<Ui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.blizzard.com/wow/ui/">

	<Frame name="Frame1" parent="UIParent" toplevel="true" enableMouse="true" movable="true" clampedToScreen="true">
		<Size>
			<AbsDimension x="200" y="200" />
		</Size>
		<Anchors>
			<Anchor point="CENTER">
				<Offset x="-35" y="34" />
			</Anchor>
		</Anchors>
		<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
			<BackgroundInsets>
				<AbsInset left="11" right="12" top="12" bottom="11" />
			</BackgroundInsets>
			<TileSize>
				<AbsValue val="32" />
			</TileSize>
			<EdgeSize>
				<AbsValue val="32" />
			</EdgeSize>
		</Backdrop>
		<Frames>
			<Button name="BtnClose" inherits="UIPanelButtonTemplate" text="Close">
				<Size>
					<AbsDimension x="75" y="23" />
				</Size>
				<Anchors>
					<Anchor point="TOPLEFT">
						<Offset x="69" y="-134" />
					</Anchor>
				</Anchors>
				<Scripts>
				   <OnClick>
					  self:GetParent():Hide()
				   </OnClick>
				</Scripts>
			</Button>
			
			<Button name="BtnClick" inherits="UIPanelButtonTemplate" text="Click">
				<Size>
					<AbsDimension x="75" y="23" />
				</Size>
				<Anchors>
					<Anchor point="TOPLEFT">
						<Offset x="69" y="-100" />
					</Anchor>
				</Anchors>
				<Scripts>
				   <OnClick>
				      BtnClick()
				   </OnClick>
				</Scripts>
			</Button>
		</Frames>
		<Scripts>
		    <OnLoad>
			    self:RegisterForDrag("LeftButton")
			</OnLoad>
            <OnDragStart>
			    self:StartMoving()
			</OnDragStart>
			<OnDragStop>
			    self:StopMovingOrSizing()
			</OnDragStop>
		</Scripts>
	</Frame>
	
</Ui>

这个XML看起来有点复杂,可以用Addon Studio 建一个项目,拖个按钮进去,玩玩。就大致了解上面的东西了。无论是Frame还是Button等都有大小用下面的来表示一个200x200的。

<Size>
            <AbsDimension x="200" y="200" />

 </Size>

Anchors 来表示位置。point可以设置CENTER,TOP,LEFT等等,下面的Offset是偏移量,比如你设置了CENTER,那么-35就是中心偏左35。

<Anchors>
            <Anchor point="CENTER">
                <Offset x="-35" y="34" />
            </Anchor>
        </Anchors>

Backdrop表示Fram的边框,直接从Addon Studio抄下来。

我们注意到Button有个属性是inherits,继承的意思

inherits="UIPanelButtonTemplate" 这里表示简单的继承了WOW原生的按钮样式,按钮可以设置非常复杂的样式,这里不再赘述,大家可以参考WOW API。

XML中都可以加脚本,比如这里:

<Scripts>
                   <OnClick>
                      self:GetParent():Hide()
                   </OnClick>
  </Scripts>

它的效果就是简单的使整个都隐藏起来。

我们对整个Frame还增加了拖动效果。

还有必须说明的是一般用XML能实现的,直接用Lua代码也可以的。

比如设置宽度,高度,可以这样写:

Frame1:SetWidth(500)

Frame1:SetHeight(500)

大家可以在tinypad中,执行看下效果。不单单是改变属性,创建一个按钮也可以用Lua代码的。大家可以去Google。


最后看下Frame.lua

它里面就是一个简单的function:

function BtnClick()
    print ("BtnClick")
end

testbutton项目下载 http://www.waitingfy.com/?attachment_id=1058


5.还是先介绍下21点的游戏规则


回到我们的扑克游戏来。

懂的童鞋就直接可以跳过了,容我摘抄一段:

21点一般用到1-8副牌。庄家给每个玩家发两张牌,一张牌面朝上(叫明牌),一张牌面朝下(叫暗牌);给自己发两张牌,一张暗牌,一张明牌。大家手中扑克点数的计算是:K、Q、J 和 10 牌都算作 10 点。A 牌既可算作1 点也可算作11 点,由玩家自己决定。其余所有2 至9 牌均按其原面值计算。首先玩家开始要牌,如果玩家拿到的前两张牌是一张 A 和一张10点牌,就拥有黑杰克(Blackjack);此时,如果庄家没有黑杰克,玩家就能赢得2倍的赌金(1赔2)。如果庄家的明牌有一张A,则玩家可以考虑买不买保险,金额是赌筹的一半。如果庄家是blackjack,那么玩家拿回保险金并且直接获胜;如果庄家没有blackjack则玩家输掉保险继续游戏。没有黑杰克的玩家可以继续拿牌,可以随意要多少张。目的是尽量往21点靠,靠得越近越好,最好就是21点了。在要牌的过程中,如果所有的牌加起来超过21点,玩家就输了——叫爆掉(Bust),游戏也就结束了。假如玩家没爆掉,又决定不再要牌了,这时庄家就把他的那张暗牌打开来。一般到17点或17点以上不再拿牌,但也有可能15到16点甚至12到13点就不再拿牌或者18到19点继续拿牌。假如庄家爆掉了,那他就输了。假如他没爆掉,那么你就与他比点数大小,大为赢。一样的点数为平手,你可以把你的赌注拿回来。


没做这个游戏之前我也大致知道21点游戏规则,没有想到还有个保险的东西。大家可以去搜下有关21点的flash游戏来玩下。


6.Lua基础教程


老实说,我写这个插件不是为了写一个帮助的插件,是想要学习下Lua的语法。所以看《Programming in Lua, 3rd Edition》就很有必要。

下面只是列举下一些非常基础的Lua语法,用来做我们这次《21点扑克游戏》足够用了。21点扑克游戏,我写了一个函数来得到手里牌的总的值。我们知道A这个牌比较特殊,即可当1,也可做11,但不可能有两张牌都作为11,总的就是>=22就爆掉了。下面这个函数比较简单,先尝试循环所有的牌,对值相加,如果没有A的话就直接返回,如果有A的话,尝试把它以11点来算,如果没爆的话就是最佳值。

function GetTotalValue(cards)
   local containAce = false              --//变量用local关键词,没有local就是全局变量
   local totalValue = 0
   local anotherTotalValue = 0
   for i, v in ipairs(cards) do          --//for 循环
       totalValue = totalValue + v.value
	   if v.value == 1 then          --//if 列子
	      containAce = true
	   end                           --//if 结束
   end                                   --//for 循环结束
   if containAce then
      anotherTotalValue = totalValue + 10 --// change Ace's value to 11
   end
   
   if containAce and anotherTotalValue <= 21 then 
      return anotherTotalValue
   end
   
   return totalValue
end

简单解释下就是Lua中可以以一行作为结束,都不用加;,局部变量前缀是local,有点像Javascript中的var,但Lua的Local也可以直接不写就是全局变量了。Lua会有很多end,for循环结束有end,if结束也有end,function结束也是end。C++ 中的 && 和 || 在 Lua中是 and 和 or,另外 C++中的 != 在 Lua 中是 ~=


Lua中最重要的就是Table,它没有Javascript中的Array,但这个Table比Array还要强大。再来看一个例子,是我们这个游戏的初始化牌的方法。总共牌共有52张。

POKER_CARD_NAME = "%s of %s"
POKER_CARDS = {            --//Table好像内部是一个hashtable,所以可以这样用。这样POKER_CARDS["K"] 就== "King"了
	K = "King",
	Q = "Queen",
	J = "Jack",
	["10"] = "Ten",
	["9"] = "Nine",
	["8"] = "Eight",
	["7"] = "Seven",
	["6"] = "Six",
	["5"] = "Five",
	["4"] = "Four",
	["3"] = "Three",
	["2"] = "Two",
	A = "Ace",
}
POKER_SUITS = {
	H = "Hearts",
	D = "Diamonds",
	C = "Clubs",
	S = "Spades",
}
local ranks = {"K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "2", "A"} --//也可以直接初始话这样,index是用1开始的比较奇怪。
local suits = {"H", "D", "C", "S"}
local cards = {}
local cardsByRank = {}

local value = 10
for i, r in ipairs(ranks) do
	cardsByRank[r] = {}
	for i, s in ipairs(suits) do
		cards[#cards + 1] = {  --// #cards可以得到cards这个table的长度,这里每个card又是一个table
			rank = POKER_CARDS[r],
			suit = POKER_SUITS[s],
			name = POKER_CARD_NAME:format(POKER_CARDS[r], POKER_SUITS[s]), --//string类型中有简单的format语法
			code = r..s,
			value = value
		}
		cardsByRank[r][s] = cards[#cards]
	end
	if i >= 4 then
	   value = value - 1
	end
	
end

7.再讲下别的注意事项


我们这个插件游戏中,需要用到扑克的图片。魔兽世界插件是支持图片显示的,用Frame中的texture就可以了。具体大家可以看代码,图片格式支持两种,一种是TGA,另外一种我忘了。图片大小比较变态,要(2的n次方) x (2的n次方)。比如一个64x128就是合格的图片大小。

魔兽世界插件也支持音乐播放,好像支持mp3格式和ogg格式。大家可以用"格式工厂"软件来转换。播放音乐的API是PlaySoundFile,参数是路径。

function InsurancePayMusic()
    PlaySoundFile("Interface\\AddOns\\BlackJack\\sounds\\ins_pay.ogg")
end


8.这次做的插件下载地址


记得进入游戏记得要先输入/bj 才能打开这个插件,默认是隐藏的。

http://www.waitingfy.com/?attachment_id=1053


也可以访问github地址: https://github.com/waitingfy/BlackJack


参考:

《魔兽世界插件》教程

《Programming in Lua, 3rd Edition》

《Beginning Lua with World of Warcraft Add-ons》

魔兽世界LUA插件开发
xMakubex的博客
03-28 4403
魔兽世界LUA插件开发
BlackJack--21扑克游戏Java实现
weixin_44580146的博客
11-01 3151
本次面向对象实践课课程作业要求实现一个blackJack21扑克游戏游戏规则自行了解,还是较有趣味性的。 一、游戏演示 二、设计类图: 三、代码实现 1、牌与牌堆类 /** * 扑克花色 */ public enum Color { DIAMND, //方块 HEART, //红心 CLUB, //梅花 SPADE //黑桃 } public class Card { private int point; private .
魔兽世界插件编写普及教程
03-09
魔兽插件编写普及教程 ADDONS编写普及 作者:VVER
魔兽世界插件开发案例
欢迎来到我的技术博客!这里是一个专注于软件开发的地方,我将分享关于 Java、Python、C++ 和易语言等多种编程语言的教程、技巧、最佳实践以及开发经验。
09-14 576
【代码】魔兽世界插件开发案例。
WOW插件制作指南PDF+WOW魔兽世界的APIs教程
08-02
WOW插件制作指南PDF+WOW魔兽世界的APIs教程。很详细很详细很详细
魔兽世界插件编写教程与资料
02-07
有一本《Programming in Lua》,lua版本是5.1,用于插件的功能代码编写 2份wow插件的简单实例教程 外带wow的API手册供查询 wow插件编写资料实在太少,CWDG可能是目前中文资料最多的地方,英文的推荐wowwiki或者wowprogram
blackjack1.0德州21扑克牌HTML5源码.zip
11-01
html5源代码源代码《德州21扑克牌》德克萨斯扑克全称Texas Hold’em poker,中文简称德州扑克。它是一种玩家对玩家的公共牌类游戏。一张台面至少2人,最多22人,一般是由2-10人参加。德州扑克一共有52张牌,没有...
HTML5扑克游戏-21扑克牌.rar
07-10
HTML5扑克游戏-21扑克牌,这种游戏有很多种写法,不过现在HTML5似乎非常流行了,用HTML5写出21的德州扑克游戏,也是有另一番风味哦,特别是动画效果不亚于电脑版,学习编写网页游戏的,可不要错过这个例子。
blackjack-simulator:用python模拟的二十一纸牌游戏
04-13
from blackjack import Player , Dealer , Table , Game , DealerStrat jack = Player ( strategy = DealerStrat ( max_hit_value = 18 ), name = 'Jack' ) zack = Player ( strategy = DealerStrat ( max_hit_...
SEIR-ruby-blackjack-1:SEIR RUTH组1 Ruby 21游戏
03-08
这个游戏是基于经典的桌面游戏——21Blackjack),它融合了策略、概率和娱乐性,深受程序员和游戏爱好者的喜爱。 21游戏的基本规则是:玩家和庄家各自从一副扑克牌中抽取两张牌,目标是使手牌数接近21,但...
WOW插件制作指南PDF+WOW魔兽世界的APIs教程
03-06
WOW插件制作指南PDF+WOW魔兽世界的APIs教程
WoW Carbonite Addon-开源
06-29
这是一个很棒的任务和地图插件的粉丝上传。
魔兽世界编程宝典中文版Part2
09-20
阅读完本书,您将学会如何对魔兽世界界面进行自定义修改。如果您初学编程,将从本书学习到lua和xml的基础知识,以及如何开始编写自己的第一个插件。如果您已经熟悉一些原始插件,那么可以直接跳到本书的第ⅲ第ⅳ部分,使用模板、函数钩、自定义图形、状态标题等。本书有助于您发布自己的插件,使wow更加有趣。      本书是创建wow插件的指南和参考手册。本书分为5部分,其主题的复杂程度逐渐由低到高。第ⅰ部分介绍了lua和xml,使读者快速地上手这两门语言,便于创建插件。第ⅱ部分讨论了插件的初步构成,以及事件驱动(event-driven)的魔兽世界插件编程的基本概念。在本部分,读者将创建自己的第一个插件,并熟悉wow中的常用api。第ⅲ部分通过从头到尾实现一些插件,将读者引入更加高级的主题中。第ⅳ部分为整个api的完备参考,包括函数、工具集、事件以及安全模板。第ⅴ部分为附录
魔兽世界插件编写-第一个插件-空插件 EmptyAddOns
05-30 3647
魔兽世界插件开发 插件教程 插件编写WOW插件源代码 插件学习空插件 EmptyAddOns 最简单的插件 第一个插件编写一个能被魔兽世界正确加载的最小的插件,能免的都免掉。
魔兽世界插件开发-暴雪设计工具/命令
05-29 5530
魔兽世界插件开发插件教程插件编写WOW插件源代码 插件学习魔兽世界命令指令宏 公众号:鸿石散人 魔兽世界游戏内提供了一些开发调试工具和命令,对于编写插件非常有用。这两天看了不少的魔兽世界的达人教学视频,反正是说得我都晕了,还是自己记录一下比较好。 什么是魔兽世界的命令和宏 命令(Command) 命令:指特定文本字符,是要求系统执行某种操作的标识符。 魔兽世界里边的命令通常指的是斜杠命令,就是在聊天窗口中输入的字符前加入斜杠,魔兽世界客...
魔兽世界_第一个窗体插件开发
最新发布
欢迎来到我的技术博客!这里是一个专注于软件开发的地方,我将分享关于 Java、Python、C++ 和易语言等多种编程语言的教程、技巧、最佳实践以及开发经验。
09-14 400
【代码】魔兽世界_第一个窗体插件开发。
C++实现21扑克游戏:策略与界面优化
"C++课程设计的21扑克游戏样本" 在这个C++课程设计中,学生被要求实现一个21扑克游戏游戏规则简单:玩家最多可以拿五张牌,如果总数超过21,则玩家出局;在不超过21的情况下,玩家与庄家比较数大小...
写文章

热门文章

  • 向量点积(Dot Product),向量叉积(Cross Product) 72500
  • python获得两个数组交集、并集、差集的方法 47798
  • 休闲游戏中使用redis作为排行榜数据存储 32609
  • 来谈谈C++ 位运算 & | << >> ^ ~ % 28852
  • 什么是 “动态规划” , 用两个经典问题举例。 25447

分类专栏

  • 数据结构 & 算法 付费 66篇
  • python 付费 73篇
  • 量化投资 付费 50篇
  • cocos2d-x 小游戏实战 13篇
  • Android 软件开发 20篇
  • Android 中使用OpenGL ES进行2D开发 5篇
  • Android 2D 游戏开发 7篇
  • Objective-c 1篇
  • MFC 7篇
  • DirectX 14篇
  • 其他教程 8篇
  • C++基础 14篇
  • 3D 中的数学基础 9篇
  • cocos2d-x 36篇
  • boost 1篇
  • wordpress 3篇
  • qt 10篇
  • cocos2d html5 7篇
  • lua 2篇
  • javascript 3篇
  • OpenCV 1篇
  • 安全
  • 概率 1篇
  • 设计模式 1篇
  • 游戏简单特效实现 3篇
  • redis 5篇
  • 动画 1篇
  • cocos2d lua 2篇
  • photoshop 7篇
  • Spring 6篇
  • scrapy 20篇
  • docker 4篇
  • mongodb 7篇
  • react native 2篇
  • yii 5篇
  • pytorch 4篇
  • mysql 6篇
  • http 1篇
  • pandas 7篇
  • hadoop 3篇
  • hive 1篇
  • hbase 4篇
  • spark 12篇
  • scala 2篇
  • puppeteer 1篇
  • elasticsearch 1篇
  • flume 4篇
  • kafka 7篇
  • spark streaming 4篇
  • storm 9篇
  • node.js 5篇
  • Spark mllib 9篇
  • tensorflow 9篇
  • sklearn 3篇
  • numpy 2篇
  • keras 2篇
  • linux 1篇
  • django 1篇
  • flutter 1篇

最新评论

  • Mac 安装 talib

    sinat_34078172: mac M1 安装 talib 亲测有效 https://zhuanlan.zhihu.com/p/572630326

  • C++ Copy Constructor (拷贝构造函数,复制构造函数)

    qiuzen: 感谢分享,希望加个微信好友(我的微信:bianzici),我是C++初学者

  • 来谈谈C++ 位运算 & | << >> ^ ~ %

    Wu_fangeha: 4. >> 是不是应该写“左边自动补0”?

  • Face Normals & Vertex Normals(面法线跟顶点法线的区别)

    ning_ww: “During the transformation stages, it is possible for vertex normals to become non-normal”,请教博主,请问这句话什么意思啊,为什么会变得non-normal呢?

  • 用candlestick_ohlc 画k线

    AMING20220827: mpl_finance 已在2020年替换为 mplfinance

最新文章

  • 2021年终总结,完善交易需要用的工具的一年
  • mysql group by 某一列然后按照时间降序排序
  • php 调用python代码
2021年3篇
2020年7篇
2019年40篇
2018年181篇
2017年23篇
2016年4篇
2015年54篇
2014年52篇
2013年50篇
2012年37篇

目录

目录

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瓦力冫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家创鑫玻璃钢雕塑何生商场美陈的立体平面设计茶陵玻璃钢卡通雕塑商场美陈课件通用玻璃钢雕塑常用解决方案玻璃钢雕塑厂生产江阴商场春季美陈广州机器人玻璃钢雕塑贵州学校玻璃钢动物雕塑小品制作枣庄小品系列玻璃钢雕塑玻璃钢雕塑用什么防水防晒海商场楼梯美陈玻璃钢罗汉雕塑玻璃钢浮雕雕塑厂家松原雕塑玻璃钢卡通大连仿铜玻璃钢雕塑定做北京商场亮化美陈玻璃钢造型雕塑哪家比较好山东玻璃钢雕塑摆件费用赣州佛像玻璃钢雕塑销售电话水泥直塑和玻璃钢雕塑优劣海口商场美陈性价比出众玻璃钢雕塑接洽天天软文推广楚雄玻璃钢门头雕塑附近玻璃钢卡通雕塑定做价格乳山玻璃钢浮雕人物山水雕塑材质好的大型玻璃钢雕塑深圳开业商场美陈玻璃钢能不能用来做雕塑平凉仿真人物玻璃钢雕塑厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化