从零开始写一个武侠冒险游戏-3-地图生成_codea吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:933贴子:
从零开始写一个武侠冒险游戏-3-地图生成收藏
#从零开始写一个武侠冒险游戏-3-地图生成##概述前面两章我们设计了角色的状态, 绘制出了角色, 并且赋予角色动作, 现在是时候为我们的角色创造一个舞台了, 那就是游戏地图(我们目前做的是一个`2D` 游戏, 因此叫`地图`, 如果是 `3D`, 则叫`地形`). 地图生成也是游戏开发的一项基本技术, 涉及到方方面面的技能, 而且地图的数据结构要考虑到游戏里的其他景物跟角色的显示和交互, 对于整个游戏程序的效率起着决定性的影响, 不过我们这里先解决有没有的问题, 目标不太高, 能流畅运行就可以了.##最简原型跟我们一向提倡的大思路一致, 一切从简出发, 先弄个原型跑起来再说.& 经验之谈: 很多开发过程中的难题都是因为我们一开始就引入了过于复杂的问题, 制定了太大的目标, 试图一开始就把方方面面都考虑到, 结果无形中就增加了难度, 不得不承认, 这种顶层设计的思路是不太符合事物发展的规律的, 也不符合生物的进化规律, 所以实现起来就比较困难, 如果我们遵循从简单到复杂, 从原型到成品的开发思路, 就会发现开发过程变得顺利很多.###游戏地图原理简单说来, 游戏地图有两个层面, 一个是显示到屏幕上的图形图像, 一个是隐藏在图像后面的数据结构, 前者是游戏跟玩家交互的界面, 后者是游戏中绘制出来的各种对象跟程序交互的接口.比如玩家操纵一个游戏角色从左边一个位置走到右边一个位置, 玩家看到的是屏幕上角色的移动过程, 而程序在后面要记录玩家每时每刻的坐标, 以及该坐标在地图上对应的位置. 如果玩家看到地图上某个位置有一个可以操作的物体, 比如一个箱子, 玩家的角色想要靠近这个箱子然后打开它, 那么后台的地图数据库里首先要在地图的某个位置上有一个箱子, 然后再判断角色距离箱子的距离, 如果小于某个值, 那么就说明允许操作, 玩家开过箱子后, 还要把箱子的当前状态(已开启)再写回到数据库里, 等等诸如此类.###最简单的地图最简单的地图就是一张事先画好的图, 角色在这张图上移来移去, 这个功能我们在第2章就已经实现了, 但是按照这种方法实现的地图角色很难跟地图上的物体进行交互, 而且使用事先画好的图做地图还有一个问题就是如果整个游戏场景比较大的话就需要很多画预先存储到游戏中, 这样会导致较大的体积.所以, 我们采取另一种做法, 因为游戏场景中很多物体对象都是可以重复使用的, 比如树木, 岩石等等, 所以我们可以把这些基本对象提取出来事先绘制好, 或者使用预先做好的素材, 这样我们需要事先存储的内容就大大减少了, 然后再根据实际需要动态绘制上去, 这就是随机生成场景地图的做法.恰好我之前写过一个简单的[随机地图生成器](), 虽然比较简陋, 不过为了减少工作量, 还是可以拿来用用的, 当然, 直接用是不行的, 主要是以它做一个基础来进行改写.###原型目标首先明确一下我们这个地图原型的基本需求点:-可以灵活调整地图大小-可以随机插入`树木`/`矿物`/`建筑`等固定物体- 角色可以跟地图上的这些物体交互这是三个最基本的需求, 我们一步一步来实现这三个需求.###格子地面地图综合性能和实现难度方面的考虑, 我们的地图以网格的形式进行绘制和保存, 也就是以我们之前写好的那个[随机地图生成器]()为基本原型, 这样一方面可以灵活控制数据表的大小, 数据表中存储的最小单位就是一个预先设定好大小的格子, 另一方面写起来也比较简单, 还有不错的效率表现.首先确定我们的初始化参数和数据结构, 用这个函数来实现:```function initParams()
print(&Simple Map Sample!!&)
textMode(CORNER)
spriteMode(CORNER)
gridCount:网格数目,范围:1~100,例如,设为3则生成3*3的地图,设为100,则生成100*100的地图。
scaleX:单位网格大小比例,范围:1~100,该值越小,则单位网格越小;该值越大,则单位网格越大。
scaleY:同上,若与scaleX相同则单位网格是正方形格子。
plantSeed:植物生成几率,范围:大于4的数,该值越小,生成的植物越多;该值越大,生成的植物越少。
minerialSeed:矿物生成几率,范围:大于3的数,该值越小,生成的矿物越多;该值越大,生成的矿物越少。
gridCount = 50
scaleX = 50
scaleY = 50
plantSeed = 20.0
minerialSeed = 50.0
-- 根据地图大小申请图像
local w,h = (gridCount+1)*scaleX, (gridCount+1)*scaleY
imgMap = image(w,h)
-- 整个地图使用的全局数据表
mapTable = {}
-- 设置物体名称
tree1,tree2,tree3 = &松树&, &杨树&, &小草&
mine1,mine2 = &铁矿&, &铜矿&
-- 设置物体图像
imgTree1 = readImage(&Planet Cute:Tree Short&)
imgTree2 = readImage(&Planet Cute:Tree Tall&)
imgTree3 = readImage(&Platformer Art:Grass&)
imgMine1 = readImage(&Platformer Art:Mushroom&)
imgMine2 = readImage(&Small World:Treasure&)
-- 存放物体: 名称,图像
itemTable = {[tree1]=imgTree1,[tree2]=imgTree2,[tree3]=imgTree3,[mine1]=imgMine1,[mine2]=imgMine2}
mapTable = {{pos=vec2(1,1),plant=nil,mineral=mine1},{pos=vec2(1,2),plant=nil,mineral=nil},
{pos=vec2(1,3),plant=tree3,mineral=nil},{pos=vec2(2,1),plant=tree1,mineral=nil},
{pos=vec2(2,2),plant=tree2,mineral=mine2},{pos=vec2(2,3),plant=nil,mineral=nil},
{pos=vec2(3,1),plant=nil,mineral=nil},{pos=vec2(3,2),plant=nil,mineral=mine2},
{pos=vec2(3,3),plant=tree3,mineral=nil}}
end```接下来是绘制地面单位格子的函数, 现在是在每个格子上绘制一个矩形, 参数 `position` 是一个二维向量, 形如 `vec(1,2)` 则表示该格子位于第`1`行, 第`2`列, 代码如下:```-- 绘制单位格子地面function drawUnitGround(position)
local x,y = scaleX * position.x, scaleY * position.y
pushMatrix()
stroke(99, 94, 94, 255)
-- 网格线宽度
strokeWidth(1)
-- 地面颜色
fill(5,155,40,255)
-- fill(5,155,240,255)
rect(x,y,scaleX,scaleY)
popMatrix()end```用这两个函数来调用它:```-- 新建地图数据表, 插入地图上每个格子里的物体数据function createMapTable()
for i=1,gridCount,1 do
for j=1,gridCount,1 do
mapItem = {pos=vec2(i,j), plant=nil, mineral=nil}
table.insert(mapTable, mapItem)
updateMap()end-- 更新地图function updateMap()
setContext(imgMap)
for i = 1,gridCount*gridCount,1 do
local pos = mapTable[i].pos
-- 绘制地面
drawUnitGround(pos)
setContext()end-- 绘制地图function drawMap()
-- 绘制地图
sprite(imgMap,-scaleX,-scaleY)end```
###最基本原型的完整代码下面我们把实现这个最基本原型的完整代码列出来:```-- MapSample-- 初始化地图参数function initParams()
print(&地图初始化开始...&)
textMode(CORNER)
spriteMode(CORNER)
--[[ 参数说明:
gridCount:网格数目,范围:1~100,例如,设为3则生成3*3的地图,设为100,则生成100*100的地图。
scaleX:单位网格大小比例,范围:1~100,该值越小,则单位网格越小;该值越大,则单位网格越大。
scaleY:同上,若与scaleX相同则单位网格是正方形格子。
plantSeed:植物生成几率,范围:大于4的数,该值越小,生成的植物越多;该值越大,生成的植物越少。
minerialSeed:矿物生成几率,范围:大于3的数,该值越小,生成的矿物越多;该值越大,生成的矿物越少。
gridCount = 50
scaleX = 50
scaleY = 50
plantSeed = 20.0
minerialSeed = 50.0
-- 根据地图大小申请图像
local w,h = (gridCount+1)*scaleX, (gridCount+1)*scaleY
imgMap = image(w,h)
-- 整个地图使用的全局数据表
mapTable = {}
-- 设置物体名称
tree1,tree2,tree3 = &松树&, &杨树&, &小草&
mine1,mine2 = &铁矿&, &铜矿&
-- 设置物体图像
imgTree1 = readImage(&Planet Cute:Tree Short&)
imgTree2 = readImage(&Planet Cute:Tree Tall&)
imgTree3 = readImage(&Platformer Art:Grass&)
imgMine1 = readImage(&Platformer Art:Mushroom&)
imgMine2 = readImage(&Small World:Treasure&)
-- 存放物体: 名称,图像
itemTable = {[tree1]=imgTree1,[tree2]=imgTree2,[tree3]=imgTree3,[mine1]=imgMine1,[mine2]=imgMine2}
mapTable = {{pos=vec2(1,1),plant=nil,mineral=mine1},{pos=vec2(1,2),plant=nil,mineral=nil},
{pos=vec2(1,3),plant=tree3,mineral=nil},{pos=vec2(2,1),plant=tree1,mineral=nil},
{pos=vec2(2,2),plant=tree2,mineral=mine2},{pos=vec2(2,3),plant=nil,mineral=nil},
{pos=vec2(3,1),plant=nil,mineral=nil},{pos=vec2(3,2),plant=nil,mineral=mine2},
{pos=vec2(3,3),plant=tree3,mineral=nil}}
end-- 新建地图数据表, 插入地图上每个格子里的物体数据function createMapTable()
for i=1,gridCount,1 do
for j=1,gridCount,1 do
mapItem = {pos=vec2(i,j), plant=nil, mineral=nil}
table.insert(mapTable, mapItem)
updateMap()end-- 跟据地图数据表, 刷新地图function updateMap()
setContext(imgMap)
for i = 1,gridCount*gridCount,1 do
local pos = mapTable[i].pos
-- 绘制地面
drawUnitGround(pos)
setContext()end-- 绘制单位格子地面function drawUnitGround(position)
local x,y = scaleX * position.x, scaleY * position.y
pushMatrix()
stroke(99, 94, 94, 255)
-- 网格线宽度
strokeWidth(1)
-- 地面颜色
fill(5,155,40,255)
-- fill(5,155,240,255)
rect(x,y,scaleX,scaleY)
popMatrix()end-- 游戏主程序框架function setup()
displayMode(OVERLAY)
initParams()endfunction draw()
background(40, 40, 50)
-- 绘制地图
drawMap()end```看看截图:![只有地面的地图原型]( &只有地面的地图原型&)很好, 基本的格子地图写好了, 接着我们来解决在格子地图上随机插入`树木`/`矿物`/`建筑`等固定物体的功能.###插入物体因为我们已经在设计数据表时就考虑到了要插入固定物体, 所以现在需要做的就是写几个相关的函数, 首先是两个随机选取物体名字的函数:```-- 随机生成植物function randomPlant()
local seed = math.random(1.0, plantSeed)
local result = nil
if seed &= 1 and seed & 2 then result = tree1
elseif seed &= 2 and seed & 3 then result = tree2
elseif seed &= 3 and seed & 4 then result = tree3
elseif seed &= 4 and seed &= plantSeed then result = nil end
-- 返回随机选取的物体名字
return resultend-- 随机生成矿物function randomMinerial()
local seed = math.random(1.0, minerialSeed)
local result = nil
if seed &= 1 and seed & 2 then result = mine1
elseif seed &= 2 and seed & 3 then result = mine2
elseif seed &= 3 and seed &= minerialSeed then result = nil end
-- 返回随机选取的物体名字
return resultend```然后增加两个绘制函数, 来绘制出物体的图像:```-- 绘制单位格子内的植物function drawUnitTree(position,plant)
local x,y = scaleX * position.x, scaleY * position.y
pushMatrix()
-- 绘制植物图像
sprite(itemTable[plant], x, y, scaleX*6/10,scaleY)
--fill(100,100,200,255)
--text(plant,x,y)
popMatrix()end-- 绘制单位格子内的矿物function drawUnitMineral(position,mineral)
local x,y = scaleX * position.x, scaleY * position.y
pushMatrix()
-- 绘制矿物图像
sprite(itemTable[mineral], x+scaleX/2, y, scaleX/2, scaleX/2)
--fill(100,100,200,255)
--text(mineral,x+scaleX/2,y)
popMatrix()end```最后需要修改函数 `createMapTable()` 和 `updateMap()`, 在其中增加对 `plant` 和 `mineral` 的处理, 修改后的代码如下:```-- 新建地图数据表, 插入地图上每个格子里的物体数据, 目前为 plant
和 mineral 为空function createMapTable()
--local mapTable = {}
for i=1,gridCount,1 do
for j=1,gridCount,1 do
mapItem = {pos=vec2(i,j), plant=randomPlant(), mineral=randomMinerial()}
--mapItem = {pos=vec2(i,j), plant=nil, mineral=nil}
table.insert(mapTable, mapItem)
updateMap()end-- 跟据地图数据表, 刷新地图function updateMap()
setContext(imgMap)
for i = 1,gridCount*gridCount,1 do
local pos = mapTable[i].pos
local plant = mapTable[i].plant
local mineral = mapTable[i].mineral
-- 绘制地面
drawUnitGround(pos)
-- 绘制植物和矿物
if plant ~= nil then drawUnitTree(pos, plant) end
if mineral ~= nil then drawUnitMineral(pos, mineral) end
setContext()end```非常好, 第二个基本目标也完成了, 截个图:![插入植物矿物的完整地图]( &插入植物矿物的完整地图&) 看看现在的截图效果, 是不是感觉我们的原型正在一步步走向完善? 紧接着就要想办法实现角色跟地图上物体的交互了, 想做到这一点, 首先需要建立角色跟地图在地图数据表中的数据关联.
###建立角色跟地图的关联现在地图绘制好了, 角色也可以自由地在地图上活动了, 不过这只是我们看到的表面现象, 实际在隐藏于屏幕后面的程序代码中, 角色的位置跟地图的坐标(方格)并没有建立任何关联.例如, 角色在地图上看到一棵树, 他想要对这棵树做一些动作(`观察`/`浇水`/`砍伐` 等)进行交互, 如果角色选择了砍伐树, 那么最终树被砍倒之后我们还需要更新地图数据表, 把对应位置的树的图片更换成树根, 而实现角色跟树的交互, 就需要根据角色位置坐标跟树的位置坐标进行判断.我们知道树的位置坐标已经保存在地图的数据表中了, 但是角色的坐标跟地图的数据表还没有任何关系, 因为角色经常移动, 所以我们可以写一个函数, 根据角色的屏幕像素点坐标来计算所处的地图方格坐标, 代码如下:```-- 根据像素坐标值计算所处网格的 i,j 值function where(x,y)
local i = math.ceil((x+scaleX) / scaleX)
local j = math.ceil((y+scaleY) / scaleY)
return i,jend```有了这个函数, 我们只要把角色当前位置的像素点坐标输入, 就可以得到它所处网格的坐标, 这样就把角色跟地图从数据层面建立了关联. 后续就可以方便地通过这个接口来处理他们之间的交互了.为方便后续代码维护, 我们要把上述代码改写为一个`地图生成`类, 改写后的完整代码如下:```-- MapSampleMaps = class()function Maps:init()
gridCount:网格数目,范围:1~100,例如,设为3则生成3*3的地图,设为100,则生成100*100的地图。
scaleX:单位网格大小比例,范围:1~100,该值越小,则单位网格越小;该值越大,则单位网格越大。
scaleY:同上,若与scaleX相同则单位网格是正方形格子。
plantSeed:植物生成几率,范围:大于4的数,该值越小,生成的植物越多;该值越大,生成的植物越少。
minerialSeed:矿物生成几率,范围:大于3的数,该值越小,生成的矿物越多;该值越大,生成的矿物越少。
self.gridCount = 50
self.scaleX = 50
self.scaleY = 50
self.plantSeed = 20.0
self.minerialSeed = 50.0
-- 根据地图大小申请图像
local w,h = (self.gridCount+1)*self.scaleX, (self.gridCount+1)*self.scaleY
self.imgMap = image(w,h)
-- 整个地图使用的全局数据表
self.mapTable = {}
-- 设置物体名称
tree1,tree2,tree3 = &松树&, &杨树&, &小草&
mine1,mine2 = &铁矿&, &铜矿&
-- 设置物体图像
imgTree1 = readImage(&Planet Cute:Tree Short&)
imgTree2 = readImage(&Planet Cute:Tree Tall&)
imgTree3 = readImage(&Platformer Art:Grass&)
imgMine1 = readImage(&Platformer Art:Mushroom&)
imgMine2 = readImage(&Small World:Treasure&)
-- 存放物体: 名称,图像
self.itemTable = {[tree1]=imgTree1,[tree2]=imgTree2,[tree3]=imgTree3,[mine1]=imgMine1,[mine2]=imgMine2}
-- 尺寸为 3*3 的数据表示例
self.mapTable = {{pos=vec2(1,1),plant=nil,mineral=mine1},{pos=vec2(1,2),plant=nil,mineral=nil},
{pos=vec2(1,3),plant=tree3,mineral=nil},{pos=vec2(2,1),plant=tree1,mineral=nil},
{pos=vec2(2,2),plant=tree2,mineral=mine2},{pos=vec2(2,3),plant=nil,mineral=nil},
{pos=vec2(3,1),plant=nil,mineral=nil},{pos=vec2(3,2),plant=nil,mineral=mine2},
{pos=vec2(3,3),plant=tree3,mineral=nil}}
print(&地图初始化开始...&)
-- 根据初始参数值新建地图
self:createMapTable()
print(&OK, 地图初始化完成! &)end-- 新建地图数据表, 插入地图上每个格子里的物体数据function Maps:createMapTable()
--local mapTable = {}
for i=1,self.gridCount,1 do
for j=1,self.gridCount,1 do
self.mapItem = {pos=vec2(i,j), plant=self:randomPlant(), mineral=self:randomMinerial()}
--self.mapItem = {pos=vec2(i,j), plant=nil, mineral=nil}
table.insert(self.mapTable, self.mapItem)
self:updateMap()end-- 根据地图数据表, 刷新地图function Maps:updateMap()
setContext(self.imgMap)
for i = 1,self.gridCount*self.gridCount,1 do
local pos = self.mapTable[i].pos
local plant = self.mapTable[i].plant
local mineral = self.mapTable[i].mineral
-- 绘制地面
self:drawGround(pos)
-- 绘制植物和矿物
if plant ~= nil then self:drawTree(pos, plant) end
if mineral ~= nil then self:drawMineral(pos, mineral) end
setContext()endfunction Maps:drawMap()
sprite(self.imgMap,-self.scaleX,-self.scaleY)end-- 根据像素坐标值计算所处网格的 i,j 值function Maps.where(x,y)
local i = math.ceil((x+self.scaleX) / self.scaleX)
local j = math.ceil((y+self.scaleY) / self.scaleY)
return i,jend-- 随机生成植物function Maps:randomPlant()
local seed = math.random(1.0, self.plantSeed)
local result = nil
if seed &= 1 and seed & 2 then result = tree1
elseif seed &= 2 and seed & 3 then result = tree2
elseif seed &= 3 and seed & 4 then result = tree3
elseif seed &= 4 and seed &= self.plantSeed then result = nil end
return resultend-- 随机生成矿物function Maps:randomMinerial()
local seed = math.random(1.0, self.minerialSeed)
local result = nil
if seed &= 1 and seed & 2 then result = mine1
elseif seed &= 2 and seed & 3 then result = mine2
elseif seed &= 3 and seed &= self.minerialSeed then result = nil end
return resultendfunction Maps:getImg(name)
return self.itemTable[name]end-- 重置
function Maps:resetMapTable()
self.mapTable = self:createMapTable()end-- 绘制单位格子地面function Maps:drawGround(position)
local x,y = self.scaleX * position.x, self.scaleY * position.y
pushMatrix()
stroke(99, 94, 94, 255)
strokeWidth(1)
fill(5,155,40,255)
-- fill(5,155,240,255)
rect(x,y,self.scaleX,self.scaleY)
--sprite(&Documents:3D-Wall&,x,y,scaleX,scaleY)
popMatrix()end-- 绘制单位格子内的植物function Maps:drawTree(position,plant)
local x,y = self.scaleX * position.x, self.scaleY * position.y
pushMatrix()
-- 绘制植物图像
sprite(self.itemTable[plant],x,y,self.scaleX*6/10,self.scaleY)
--fill(100,100,200,255)
--text(plant,x,y)
popMatrix()end-- 绘制单位格子内的矿物function Maps:drawMineral(position,mineral)
local x,y = self.scaleX * position.x, self.scaleY * position.y
pushMatrix()
-- 绘制矿物图像
sprite(self.itemTable[mineral],x+self.scaleX/2,y,self.scaleX/2,self.scaleX/2)
--fill(100,100,200,255)
--text(mineral,x+self.scaleX/2,y)
popMatrix()end-- 游戏主程序框架function setup()
displayMode(OVERLAY)
myMap = Maps()endfunction draw()
background(40, 40, 50)
-- 绘制地图
myMap:drawMap()end```到目前为止, 我们在`地图生成原型`章节的目标基本完成, 下一章我们会尝试把 `状态` , `帧动画` 和 `地图生成` 这三个模块整合起来, 一般来说事物发展到 `三` 的阶段会由量变触发质变, 我们这个程序也一样, 会在这次整合之后, 从一个个零散简陋的原型, 一跃而成一个还能看得过去的基本框架, 是不是很期待? ###激动人心的新起点事实上, 把角色屏幕位置跟地图数据表建立关联之后, 我们的角色就真正存在于这个游戏世界中了, 它可以自由地跟地图上的每一个物体进行交互, 这意味着一个全新的激动人心的开始! 到现在为止, 我们游戏世界的基本框架已经搭建起来了, 我们可以在这个框架上试验自己对于武侠冒险游戏的各种新想法.
登录百度帐号推荐应用DunGen Unity游戏随机地图生成系统,Unity3D,游戏源码,6m5m游戏素材
请求处理中...
&DunGen Unity游戏随机地图生成系统,可以随机无缝生成地牢地图。Requires Unity 4.3.3 or& higher.DunGen allows you to procedurally generate a dungeon-like layout by piecing together rooms that you design in Unity.Unlike other procedural generation methods, you're not left with a barren set of corridors and only a vague blueprint of a dungeon - you get a fully-furnished, procedurally generated dungeon to your specification.
或 0 积分 ()
下载295浏览人数6510交付方式直接下载
注意:【1】本站只是个免费分享平台,并不敢保证所有源码人人都能编译,因素太多,旨在学习研究,如果您有顾虑或斤斤计较就请不要下载了,大家都不容易,互相理解,才能让更多的好资源出现!【2】本站资源仅限于学习研究,请在下载后24小时内删除,不要用于任何商业用途。【3】部分素材压缩包因体积过大而上传到百度等网盘上,如果发现在本站下载的压缩包只要有几K大小,说明该压缩包里只是网盘的下载链接,并非文件损坏,本站的所有素材都是经过了审核,大家可放心下载,欢迎监督反馈。【4】做个好平台真心不容易,我们一直在努力,因本站素材量大,难免会出现某网盘下载链接失效等问题,请大家及时反馈,我们会及时修正保证您可以拿到素材,请大家支持和理解!
免责声明:本网所展示的素材与服务信息由***双方自行提供,其真实性、准确性和合法性由信息发布人负责。本网不提供任何保证,并不承担任何法律责任,如有不妥之处请及时反馈,本网将会妥善处理。
友情提醒:本站旨在游戏开发的学习,所分享的素材资源均来源于网络,仅适用于学习参考,尊重版权,禁止用于任何商业用途,否则后果自负,所展示的素材版权归原作者或公司所有,如果本站素材侵犯了您的权益,请联系我们,我们将及时处理。
猜您喜欢的游戏素材
0金币 / 份
1金币 / 个
1金币 / 个
0金币 / 个
1金币 / 个
0金币 / 个
0金币 / 个
2金币 / 个
0金币 / 个
1金币 / 个
好评率99.6%后使用快捷导航没有帐号?
查看: 1125|回复: 20
新人欢迎积分1 阅读权限90积分49452精华35UID2827967帖子金钱55808 威望6
UID2827967帖子威望6 多玩草45 草
真武…襄州…
打坐完闲着没事,看到高台下的风景,想感受一下轻功飞度的感觉…然后飞着飞着就飞到了地图的尽头,想说,看看那有啥奇怪的东西…
当我到达尽头时,一睹空气墙拦在了我的面前
14:22:22 上传
嗯,是尽头,没错…
14:22:21 上传
然后怎么都过不去,有点不甘心,然后各种试图越过空气墙,当我到达死角再一次使用轻功时…我发现我到达了一个神秘的星空所在,还领悟了隐藏技能…凌空虚踏…
14:22:23 上传
14:22:23 上传
整个世界都颠倒了…有朋友告诉我说,打坐纪念一下吧…
然后点了打坐,我就回到地球了…
新人欢迎积分0 阅读权限40积分585精华0UID帖子金钱4175 威望0
Lv.4, 积分 585, 距离下一级还需 415 积分
UID帖子威望0 多玩草131 草
我就问你满不满足
兰将军威武
新人欢迎积分1 阅读权限90积分75186精华69UID5169207帖子金钱23003 威望20
还记得那狐岐山地宫中沉睡的碧瑶,那是我逝去的青春。
UID5169207帖子威望20 多玩草928 草
一本满足,有没有刻字到此一游
是男人就要开扎古
新人欢迎积分3 阅读权限99积分39327精华2UID229542帖子金钱197952 威望5
Lv.10, 积分 39327, 距离下一级还需 15673 积分
UID229542帖子威望5 多玩草936 草
能存发图吗?
14:28:55 上传
Be Reticent。
新人欢迎积分1 阅读权限90积分19775精华3UID帖子金钱10043 威望11
若只如初见。
UID帖子威望11 多玩草33 草
你应该喊句话,XXX到此一游 再截图
隐居的Sniper
新人欢迎积分0 阅读权限60积分2900精华0UID帖子金钱9161 威望5
Lv.6, 积分 2900, 距离下一级还需 2100 积分
UID帖子威望5 多玩草270 草
地球是圆的,感觉应该接到另一端的地图才对
服务器:新网一永生
游戏ID:筱精妖妖
她还没有牵手的人
傲 娇 纱
新人欢迎积分1 阅读权限120积分188575精华0UID帖子金钱1189973 威望62
素 纱 哥
Lv.14, 积分 188575, 距离下一级还需 61425 积分
UID帖子威望62 多玩草28306 草
梦到尽头是孤独
新人欢迎积分1 阅读权限80积分18132精华0UID帖子金钱30318 威望0
低调的华丽
Lv.8, 积分 18132, 距离下一级还需 1868 积分
UID帖子威望0 多玩草0 草
穿越了……
新人欢迎积分1 阅读权限99积分52994精华0UID帖子金钱471 威望22
Lv.10, 积分 52994, 距离下一级还需 2006 积分
UID帖子威望22 多玩草6 草
隐藏技能。。。我次奥
新人欢迎积分0 阅读权限50积分1657精华0UID帖子金钱7701 威望0
Lv.5, 积分 1657, 距离下一级还需 843 积分
UID帖子威望0 多玩草310 草
新人欢迎积分0 阅读权限50积分1550精华0UID7648205帖子金钱8406 威望0
Lv.5, 积分 1550, 距离下一级还需 950 积分
UID7648205帖子威望0 多玩草98 草
有点吊啊 !!!
市丸银x乱菊
新人欢迎积分1 阅读权限50积分1336精华0UID帖子金钱5485 威望0
Lv.5, 积分 1336, 距离下一级还需 1164 积分
UID帖子威望0 多玩草96 草
喊个到此一游啊????????
新人欢迎积分1 阅读权限130积分262253精华0UID帖子金钱742 威望11
我这把剑所能触及到的地方,就是我的国家!
UID帖子威望11 多玩草305 草
为何这么吊。
大名鼎鼎的铁坨
新人欢迎积分0 阅读权限99积分45285精华0UID帖子金钱52692 威望0
前南斯拉夫总统
Lv.10, 积分 45285, 距离下一级还需 9715 积分
UID帖子威望0 多玩草250 草
楼主可以加入国家地理爬山小组啦!!
终于沉剑了!
新人欢迎积分1 阅读权限90积分27227精华0UID4253274帖子金钱125859 威望10
Lv.9, 积分 27227, 距离下一级还需 7773 积分
UID4253274帖子威望10 多玩草8210 草
楼主穿越了
DNF功勋勋章
DNF功勋勋章
梦诛功勋火焰勋章
梦诛功勋火焰勋章
坦克世界功勋勋章
对坦克世界论坛做出卓越贡献的玩家
5153活动勋章
我去5153探探路
桃花岛认证汉纸勋章
妹纸看过来,我是真汉纸!
中秋纪念勋章
中秋纪念勋章
诛仙小碧瑶
诛仙MM专属勋章
天涯明月刀功勋勋章
这就是武侠
365天!天天有你
连续签到1年即可获得
元宝专属一阶勋章。已绝版
武林功勋勋章
武林功勋勋章
剑三功勋勋章
剑三功勋勋章
战舰世界功勋勋章
对战舰世界论坛有突出贡献者
天蝎座勋章
天蝎座勋章
参与桃花岛MM日历等活动获得专属限时勋章,喵!
我的心跳扑通扑通
小起之心,专属喜欢萌猫的你
长期混迹在深夜的宅基腐必备神器
风车无脸男
跟着它转动起来吧!
多玩2013年度庆典
快来参与2013年度活动吧!
马年新春勋章
手机APP马年迎春,马上有钱!
活动奖励勋章
活动奖励勋章
槲寄生下,接受你的吻
一颗只为你牵动的心
患难与共,同心同德
啊呜啊呜吃货就是我
有些烦恼丢掉了,才有风轻云淡的机会
我就是个死宅怎么了!
冬天必备暖心萌物
乖乖萌萌暖化吾心
春天纪念勋章
夏天纪念勋章
秋天纪念勋章
冬天纪念勋章
刀塔传奇荣誉勋章
贡献的证明、实力的证明,萌心小鹿,你的专属!
动漫喵耳勋章
动漫喵耳勋章
相恋情侣勋章
相恋情侣勋章
手机论坛勋章
APP发帖双倍积分,登陆即送勋章!
龙之谷活跃勋章
在龙之谷版面活跃而奖励的勋章
初级在线标兵
论坛在线时间达1000小时即可申请
中级人缘勋章
中级人缘勋章
甜蜜情侣勋章
甜蜜情侣勋章
需要金钱:1100
手机盒子客户端点击或扫描下载
Powered by