游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6195|回复: 1

制作你的hl单人地图(转)

[复制链接]

18

主题

631

帖子

660

积分

高级会员

Rank: 4

积分
660
发表于 2003-12-26 11:30:00 | 显示全部楼层 |阅读模式
制作你的hl单人地图(上)

作者:x-man



序:今天好惨,一大早我这个同盟社挂牌管理员遇上了咱们正牌的管理员。于是有了一番对话



....................



(2003-11-30 10:09:2   X-man~死机中

今天手痒了,看需要什么样的教程啊?我马上写



(2003-11-30 10:12:35)   X-man~死机中

尽管说,只要不离地图制作的!!!统统的拿下!!!



(2003-11-30 10:10:14)    MESSIA

此处为一图标,做狮子大开口状(.........汗.....)



(2003-11-30 10:11:27)    MESSIA

单人任务



(2003-11-30 10:13:32)   X-man~死机中

cs还是其他的?(已经在发毛了,因为知道单人任务的实体之多是cs的若干倍)



(2003-11-30 10:13:37)    MESSIA

hl



(2003-11-30 10:16:3   X-man~死机中

好!!!是不是讲关于单人任务的 实体啊?(嘴硬而已,心理已经在感叹今天的假期了)



(2003-11-30 10:15:22)    MESSIA

是啊.



(2003-11-30 10:15:35)    MESSIA

一个基础的最简单的单人任务的制作



..................



我这是造了什么孽啊我,自己找麻烦么不是?哎,谁叫我喜欢吹呢!·!!5555555555555555~~~~~~~~



丑话说在前面:放下hl的实体已经有2年之久了,错误难免,大家原谅哦!!!好了不说了,

开始我们的hl单人任务之行!!!





a、第一个关卡

1、我们知道单人任务是一个关卡连一个关卡的。先说第一个关卡。玩家从那里开始呢?很简单的,只要在你地图里放上一个info_player_start实体就可以了,呵呵,是一个哦,单人嘛!!!!

至于我们一直在cs里用的info_player_deathmatch可不行哦,在hl里他是用在多人游戏里的!!!怎么用不用我说了吧。最基本的实体了!!!呵呵



2、单人游戏嘛,就是人和电脑玩嘛!!就要有怪物让你咔嚓啊!!呵呵,下来就讲怪物吧!!

怪物的实体很多,大家看看



monster_alien_controller

monster_alien_grunt //大黑

monster_alien_slave //发电绿

monster_apache//飞机

monster_babycrab//小透明爬虫

monster_barnacle//触手

monster_barney//守卫

monster_barney_dead

monster_bigmomma//大球

monster_bullchicken//喷酸的

monster_cockroach//小蟑螂(无害)

monster_flyer_flock//飞鸟(无害)

monster_furniture

monster_gargantua//超级大鬼(红眼)

monster_generic

monster_gman//拿公文包的

monster_grunt_repel

monster_handgrenade

monster_headcrab//爬虫

monster_hevsuit_dead

monster_hgrunt_dead

monster_houndeye //小电眼

monster_human_assassin//女狙击手

monster_human_grunt//特种兵

monster_icthyosaur

monster_leach

monster_miniturret

monster_nihilanth//BOSS 大树头

monster_osprey

monster_rat

monster_satchelcharge

monster_scientist

monster_scientist_dead

monster_sentry

monster_sitting_scientist

monster_snark//小红虫

monster_tentacle//树根怪

monster_tripmine

monster_turret//炮塔

monster_zombie//僵尸人

monstermaker



呵呵,不要被吓倒了,其实绝大部分是一样的,

只是对应的怪物种类或状态(活或死亡)不一样而已。

我挑几个出来说明!



monster_human_grunt

呵呵,就是对应人类士兵的哪个(又好象是里面的警卫,反正就是模型样子不一样嘛!!

手边又没有hl游戏,全凭记忆的,呵呵,大家谅解啊)



健值:

name:   实体名称嘛

TriggerTarget:    想让这个怪物触发什么东西么?比如开门什么的,在这里填上门的name吧

TriggerCondition: 想让怪物在什么时候触发上面提到的实体啊?呵呵,这是一个选项,

有很多,比如看到你就做,或者是血量被你打到50%以下去做或听到你的声音等等!!

自己看情况而定吧!!

squadname:所属小队,呵呵,给很多实体起同一个名字,他们就会是一支小分队

集体攻防行动了,小心哦

weapons:呵呵手上的武器,人嘛,手上总要有家伙的!!是个选项手上要拿什么自己选吧



标记:

waittillseen:     呵呵,直到他看见你才行动,有了这个就不用去触发他就会动了!!

gag:           呵呵,怪物闭嘴,不会乱哼哼了

monsterclip:   怪物将不会穿过 func_monsterclip 实体指定的区域

prisoner:      哈哈,囚犯。任人宰割的那种

squadleader:   呵呵,此人乃小分队领导

waitforscript:  忘了,5555555555

pre-disaster:   战斗中不是被你打死的,死于天灾,哈哈哈

fade crops:    当你看见他的时候,已经就只有半条命了,只需要上去补上一枪就行了



注意:这个实体其他实体如果健值和这个实体一样的可以参照哦!!(因为大部分就是这

样的实体,对应的怪物样子不一样而已,呵呵)



monstermaker

玩过半条命的地球人都知道!!有的怪物本来是没有的,而是凭空突然出现的,呵呵。

就是这个实体的功劳



健值:

name:呵呵不说了,地球人都知道啊

Target on release :当一个怪物产生是,他指定的实体将被触发

Monster Type :怪物类型,想出现什么怪物啊,随便,找一个相对应的怪物的实体填上

(比如:monster_barney)

Children's Name :指定上面的怪物实体的名称,以便给予行动脚本的安排

Number of monsters :范围:大于等于-1的整数。呵呵想一次出现多少怪物啊?-1的意思是无穷啊!!呵呵

Frequency:范围:大于等于-1的整数。上一批怪物出现后,间隔多少时间再出第二批啊?(上面是-1的话这个值就没有意义了),这里-1的意思是上次被你杀光了,下批才出来

Max live children :范围:大于等于-1的整数。最多同时允许多少怪物存在!!(如果老的不死新的将不会诞生),

-1在这里是无穷的意思,呵呵小心用了死机,哈哈哈



标记:

start on:呵呵,开始就自动制造怪物,不用你去触发了

Cyclic:这个我要好好解释了。不选这个标记的话:这个只有开和关2中状态,比如说,用开关触发他,

他就产生小怪物,直到我再次关闭他!很好理解是吧,那如果我选上呢?呵呵,那他的状态就可开关密切相关了,大家应该都知道开关实体有一个关于回复健值吧(Delay before reset ),当开关被触发后将会过一段时间才能被再次触发,这个时间段里他的状态是开!!!呵呵,哪个,这个标记选上的时候,该实体在这个开的状态下才会产生小怪物,开关复位了,小怪物也就同时没有了!!!呵呵懂了么?

Monsterclip:呵呵上面已经有了,不废话了



呵呵,怪物有了,但现在还是不会动的傻瓜,只会站着等你发花生米给他们,下面有请Info_node先生

呵呵,这个实体在cs里只是探照灯的目标实体,在hl就不一样了,他是给怪物安排行动路径用的!!!no健值,no标记。不过不要以为简单!!他是很复杂的,有太多太多的注意事项了。我以后有空专门会写文章的,现在你们要做的就是在需要怪物运动的地方放上他,多放一点,不要客气,这样怪物才会走来走去嘛!!

呵呵(工作原理和cs的bot路径简直就是一回事)



好了怪物会走了,那我们需要他不穿过某些地方怎么办或在某一些地方要限制他的局部的行动范围怎么办!!

呵呵,func_monsterclip来了。他的作用就是:他所定义的区域怪物同胞们是不会穿越的!!!就这样简单!!



不行了,顶不住了,休息先,明天继续!!!!!!!!1





我们这下子要学的就比较困难了,大家有心里准备啊,我尽量详细,不懂老规矩,发贴到论坛吧!!呵呵。
    好了,让我先把前面遗留的info_node实体讲完吧!!!呵呵其实info_node实体在hl里有2个:info_node和info_node_air。2个其实是一样的,只不过一个是用在地面的(info_node),一个是用在空中会飞的怪物(monster)实体而已(info_node_air)。为了表述方便,我就讲info_node了,反正2者是完全一样的!!!!!
info_node
呵呵,这个实体和我们一般用的火车的路径实体有点相似,他可以说是怪物的路径实体(会bot路径制作的朋友就更容易能够理解了)。
info_node实体是hl游戏里怪物(monster)ai的重要组成部分,说明白些就是为怪物运动起导航的作用。一张比较耐玩的单人地图里面有上百个乃至更多的info_node实体是必须的!!!(就象cs的bot嘛!!做的时候竿子越多,机器人就表现越不可捉摸!!)
info_node的使用很简单,没有健值没有标记,呵呵,只要在地图上放好放多就可以了,其他的游戏引擎会帮你处理的。引擎是这样工作的:在你载入地图的时候,引擎会自动的在你的各个node实体间建立路径帮你把所有的nod实体连起来,这个就是游戏里面的怪物运动的路径了,呵呵。注意:建立路径的复杂程度是和你选择的游戏的难度有关的!!难度越高,路径就越复杂,怪物的行动也就越具有多样性和不可测性。电脑建立这样的路径是需要时间的,一般来说时间的长短视你的电脑的配置和地图里info_node实体的多少而定!!呵呵,幸运的是,并不是每次要建立,他只在你这个难度级别第一次载入游戏的时候需要。以后就不需要了。当然,如果你改变了难度,呵呵,那就要重来了!!!!
   建立node路径的目的是让怪物能够有效率的和你作对(呵呵,和自己过不去,想到就想笑),比如说:在某一张地图,就说dust2吧,你能够通过很多的路线到达警察的老家,你从a区大道走,也就是a区大道的怪物来和你作对,其他的如你放在a区小道上的怪物就没有用场了(实体资源的浪费,呵呵不是么?),但如果你从放了足够多的node实体呢,就不一样了,a小道乃至b区所有你放的怪物都会根据你的方位(当然是电脑泻的密告诉他们你在那里,5555好赖皮的)按电脑建立的node路径自动找到最有效率的路线赶过来(呵呵。赶着来送死!!好玩)或阻击,或围堵、或追赶。呵呵,大家懂了么?呵呵,还没完呢?有一种例外的情况哦!!大家玩过hl的都知道,里面的守卫是可以跟你一起作战的,你到那里,他会跟到那里,呵呵,因为他答应了保护你啊(就是cs里的人质那样的跟着你嘛)!!!那么假设如果你到了没有node路径的地方呢!!呵呵,对于这种情况引擎是允许他忽略node路径继续跟着你的!!!也就是说,如果一个怪物是和你(玩家)有约定存在的话,那么,这个约定的优先权是大于node构成的路径的限制的。ok了么?呵呵
    下面讲讲info_node实体运用的细节注意问题
一般情况:
1、注意实体和墙的距离问题,呵呵,不要离墙太近了,你不希望,你的怪物宝宝老是蹭着墙发呆吧,我们建立moser类实体的时候,都会有一个实体的大小信息,这个信息就是我们要注意的,比如我建立一个怪物实体,他的尺寸是48*48*72(长*宽*高),那么,我们的info_node实体距离墙就不能少于24,呵呵,就是长或宽的一半,(如果尺寸是48*50*72,我们取大的哪个50,那么上面的最小值就是25了,呵呵)
这里info_node和墙的距离是指info_node实体中心和墙的距离哦!!!!
2、info_node实体允许和怪物实体重叠,或放在傍边、下面!!!
3、放置info_node记得放在地面以上(不是以下哦),
4、不要把info_node实体放在func_breakables, func_pushables等等这类实体的上面,下面或里面!!!切记,唯一的一个例外是func_wall实体!!!!你可以把他当作一般固体来处理!!!!
5、呵呵,放的时候也不要忘了注意高度!!记住哦,hl里的怪物可是不会蹲走的!!!
6、上下楼梯记得每一个台阶都要放哦
7、如果要让怪物能开门,记得门里门外都要放!!!!如果是转门,注意门里门外2个node是间距大于门打开时的宽度!!!!!呵呵,不要让怪物被打开的门夹住了啊!!!!
8、任何转角记得放上一个node实体!!!!
9、记住一点:任何info_node的位置所能看到的其他的info_node实体不能超过128个,否则引擎将不能正确的建立node路径!!!!!切记!切记

好了,node实体大概就讲到这里吧!!呵呵,我能记得的注意事项也就这么多了。毕竟是2年多没碰的东西了嘛!!呵呵,这样已经很不错了!!!!




制作你的hl单人地图(中)

作者:x-man



好了,吃饱喝足了,继续工作

3、呵呵,待宰的羔羊已经有了,我们宰人的武器在那里呢?呵呵,hl中默认玩家诞生可是2手空空的,连一把小刀都没有的。呵呵,我们可以用game_player_equip实体像在cs一样手动添加玩家一出生时的装备,因为cs地图常用到,就不说了。我来说说另一种方式:玩家到地图的某个地方检到枪支弹药装备道具等等。呵呵,来了

共有3大类:

a、ammo  弹药类

ammo_357

ammo_9mmAR

ammo_9mmbox

ammo_9mmclip

ammo_ARgrenades

ammo_buckshot

ammo_crossbow

ammo_gaussclip

ammo_rpgclip

没有什么好说的,就是在地上有弹药嘛,对应不用的武器的不同种类的弹药嘛

b、weapon  武器类

weapon_357

weapon_9mmAR

weapon_9mmhandgun

weapon_crossbow

weapon_crowbar

weapon_egon

weapon_gauss

weapon_handgrenade

weapon_hornetgun

weapon_rpg

weapon_satchel

weapon_shotgun

weapon_snark

weapon_tripmine

weaponbox

呵呵,对应不同的武器嘛,也没有什么好说的

weaponbox我要特别讲一下

呵呵,这个实体可不是武器哦,说笼统一点就是武器的弹药箱

使用方法:

关闭优化模式,手动添加健值,我把支持的健值例出来

357

9mm

ARgrenades

bolts

buckshot

Hand Grenade

rockets

Satchel Charge

Trip Mine

uranium

呵呵,不用怕,不同类型的弹药而已

值:   呵呵,就是数量了,看需要而定吧!!!

这个实体的好处就是可以一次给很多种类的弹药和弹药数量,比上面的ammo类的实体简单的多!!呵呵



c、item  道具类



item_airtank

item_antidote

item_battery

item_healthkit

item_longjump

item_security

item_suit



老样子,对应半条命里的什么装甲、钥匙卡、加血加装甲(地上那种玩家碰到就能加的那种)的各种增加游戏乐趣的小道具嘛



以上我个人认为实在是没有什么可以值得讲的很简单的实体了,大家有不懂的尽管到论坛发贴问!!我会一一回答大家的。



呵呵,枪也有了不是,还缺什么呢?

4、我们的英雄单枪匹马拿着武器斩妖除魔一路闯荡到了最后,要换关卡了(实质就是换地图嘛),

呵呵。我来介绍2个实体吧

trigger_changelevel和info_landmark

相当与我们在cs里常用的传送实体只不过一个是在同一个地图的传送,一个是不同地图之间的传送而已

trigger_changelevel

这个就是在不同地图间传送的实体,游戏里是不可见的,玩家一进入他的区域就会传送到他指定的下一个关卡了(地图),呵呵,他当然应该是在我们的第一个关卡里面的

健值:

new map name :  下一个关卡(也就是地图)的名称叫什么啊?填上吧。注意,不用写上后缀的,比如你设计的下一个关卡的地图是mike3636a.bsp,填上mike3636a即可。

landmak name:   在下一个关卡的那里出现啊?填上下一个关卡里的info_landmark实体的名称吧

标记:

没什么大用处,不说了(其实是忘了,呵呵。尴尬中.........,不过倒真的是不常用的)

好了,第一张地图搞好了,我要说第2张地图了info_landmark实体是应该在第2张地图的,在你第2张地图需要开始的地方建立一个第2张地图实体,给他起一个名字吧!!!!

注意:这个地图里的地图名好和前面的new map name吻合,info_landmark的名字要和前面的landmak name名字吻合。呵呵,很重要,别忘了



好了,基本的单人游戏的地图结构明显了。也讲的差不多了,在下次我要讲的是:

aiscripted_sequence、scripted_sentence、scripted_sequence这几个控制里面电脑人物ai、行动、对话之类比较高级的脚本控制类实体的运用,(呵呵,学好了简直可以让地图直接上演一个故事了)。这将会是高手进阶用的资料了,一般朋友可以不用理会,并且,我也会着重论述一下node实体注意事项。大家请期待哦!!!

哈哈哈。睡觉喽,888888888888888888888888888888


作者:X-man

制作你的hl单人地图(下)
作者:x-man
哇哇哇还剩这个下了,不写完总觉的不爽,我拼了!!!呵呵,来!我们继续!!!
这次的重点我在中篇说了,侧重于和怪物行动、ai有关的脚本类实体!!!开始
1、scripted_sequence
呵呵,这个实体可以让你的怪物宝宝执行表演预先编辑设计好的剧本!!哈哈,导演当然是你喽,让我们看看怎么样来用这个实体导演吧!!!
健值:
name:  呵呵名字嘛,有了名字我们就可以用其他实体来触发他了(无聊啊,每次都要讲!!!)
Target :目标,当这个实体执行完以后,这个健值指定的实体将会被出发
Killtarget:当这个实体执行完以后,这个健值指定的实体将会被删除
Delay:如果你需要在这个实体执行完以后延迟一段时间再触发上面2个健值指定的实体的时候,在这里天上你需要延迟的时间吧!!单位是秒!!!
Target Monster : 呵呵,需要表演怪物的名称嘛!!(也就是怪物实体的name),如果你需要一种类型所有的怪物同台表演,呵呵,可以给他们起同一个名字!!还有一种办法那就是把怪物的实体类型填上去,如:我在这里填上monster_scientist(科学家实体),呵呵,所有的科学家将一起表演!!!
Action Animation :呵呵,动作的名称。这个就需要一点model的知识了,呵呵,还好只有一点点,我就在这里讲了,大家听好(呵呵,看好比较贴切):一个mdl文件里包含的这个造型能够做的所有的动作,并给不同的动作起了不同的名字,这个健值所需要的就是要我们指定这个model做那一个动作,也就是填上我们需要他做的动作的名字!!!怎么得到这个动作的名字呢?呵呵,我们就需要装half-life model viewer这个软件了,就是哪个模型观察软件嘛!!!用法很简单的,呵呵估计大家都会,用这个软件载入一个你需要的模型,把软件的标签切到“sequence”项,看到没有,有一个下拉的菜单,这个就是model的动作名字的所在了,选不同的名字试试吧!!,ok,需要什么动作把这个动作的名字填在这个健值里就可以了!!!
Idle Animation :   空闲的动作!!!呵呵,其实很好理解的,这个也是指定动作的!!这个动作将在上面Action Animation 健值指定的动作完成以后执行,比如说你要一个科学家从a走到b,那他到了b以后总要做点是吧,呵呵,这个就是指定他到了后做的那些动作的,看书也好,吃饭也好随你的便!!!呵呵
Search Radius :搜索半径,呵呵,这个是让你指定一个半径,在这个半径以内的符合名字条件的怪物将依照这个实体的指定做特定的动作,当然,如果只想触发而不用这个自动功能的话就填上0吧!!
Repeat Rate ms :呵呵,和上面Search Radius健值有关,是指间隔多少时间搜索符合条件的怪物,单位为秒!!
Move to Position :怪物用何种方式 移动并表演scripted_sequence 实体指定的动作,呵呵这是一个选项,我来说明:
No:    怪物将表演scripted_sequence 实体指定的动作的而不管他在那里
Walk :怪物将走到scripted_sequence 实体所在位置。然后在开始表演scripted_sequence 实体指定的动作
run:呵呵和上面一样只不过是用跑的方式到达
Instantaneous:  呵呵,怪物将瞬移到scripted_sequence 实体所在位置然后在开始表演scripted_sequence 实体指定的动作
No - Turn to Face :不到达scripted_sequence 实体,只把脸朝向scripted_sequence 实体所在位置。然后在开始表演scripted_sequence 实体指定的动作。
呵呵不难吧,其实不是不难,是我写的好的缘故!!!!!!哈哈哈哈
标记:
Repeatable: 可以被引发多次
Leave Corpse :呵呵,留下尸体!怪物在按实体表演过程中如果不幸被你搞定的话,他的实体将留在地图,否则将消失!!
No Interuptions :呵呵,不知道怎么表达了。就说意思吧,在怪物执行该实体期间,就是无论出现什么样的情况,哪怕是你向怪物攻击,它也不会理会,直到该实体执行完毕(呵呵,怪物的无敌模式嘛)
Override AI :不理会ai,有时候,比如说该实体触发的时候怪物正好在和你开战,他的ai设定是不会让他执行这个实体的,这个选项就是让怪物强制执行这个实体!!!无论在什么情况下!!
No Script Move :呵呵,看看上面的Move to Position 健值,如果怪物到该实体的路中有个很深的坑呢?呵呵,Move to Position 健值里可没有对付这个的选项哦,那就把这个选上吧,怪物将不会忽略Move to Position 健值,用自身的ai来解决问题!!!(对了,ai什么意思应该知道吧!!!不懂请看影片《ai》哈哈哈)
呵呵终于完了一个,好长啊!!!
aiscripted_sequence
呵呵,这个和上面的scripted_sequence实体很相似,唯一的一个区别是,scripted_sequence实体在作用过程中游戏设定怪物的ai是在起着一定作用的,而这个实体则完全忽略了怪物原本游戏默认的ai设定,仅此而已,呵呵。
健值:相同的就不讲了,完全参照scripted_sequence实体,我把不同的说一下
AI Schedule when done :呵呵,就这么一个,这个就是射定怪物新的ai的,是选项
Default AI :默认的ai,呵呵用了这个就和scripted_sequence没有区别了
Ambush:呵呵,这才是这个实体的精华所在啊!!!埋伏!!嘿嘿,知道什么意思了吧!!!
健值:
呵呵,参照上面的实吧!!!!!
scripted_sentence
呵呵,上面和以前的文章说的都是怪物怎么做,这个就是怪物怎么说的实体了
健值:老规矩,有过的不说了
sentence name:呵呵,句子的名称,又要开始用到别的工具了(麻烦),呵呵,hl不象cs,所有东西在不同的文件夹,他把基本上所有的东西都用pak格式打包了(pak0.pak这个文件),我们可以用wally或pakscape这类工具浏览这个文件,怎么用!!呵呵,用了就知道了,会用资源管理器的地球人应该都没有问题的。在里面找到一个名为sentences.txt 的文件吧,把他打开.....呵呵,看不懂吧!我来举个例子:随便抽一行:
SC_QUESTION20 scientist/alienappeal
我来解释一下
SC_QUESTION20就是上面说的sentence name(句子的名称)了
scientist/alienappeal呵呵就是指这个名称对应的是scientist目录里的alienappeal.wav这个声音文件,(呵呵,有兴趣就听听吧!!我是没兴趣的,洋文偶地不懂的!!哈哈)
现在知道这个健值怎么填了吧!!!!!
speaker  type:呵呵,总有一个实体要说话吧!!哪个啊?把你要开口的实体的名字填上吧(name)。
sentence time:呵呵,多长时间说完啊!!!!!给个时间!!!!
Listener Type:听的对象,填谁该怪物说话就脸朝谁!!!把名字填上,呵呵,如果是你(玩家)呢?那就是“player”。
volume:呵呵,说话音量!!范围0~10
sound radius :  声音的半径嘛!!!自己填吧!!!!
标记:
fire once :呵呵,只说一变,也就是该实体只能引发一次
follower only:呵呵,忘了,反正是2种情况:就是在他没将完的时候你就跑了,一种是他追着你把话说完,另一种是站着把话说完,具体打勾是对应那一种忘了,呵呵自己试吧!!!
Interupt Speech :话没说完可以打断他(对着用使用健,默认是“e”)
concurrent:55555555~~~~~~~~实在是记不起来了我!!!!!!
哇靠终于讲完了我!!!哈哈哈哈
其实hl还有很多的实体,呵呵,问题是写简单的教程嘛!!!我也乐意偷懒,再说,这些对感兴趣的朋友已经够你们研究的了,我也就不说了,如果还有什么感兴趣而又不懂的hl的实体,呵呵,在论坛问吧,我会很乐意尽我所能帮你的!!!呵呵8888888888888888888,同志们!!!!!


0

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2012-9-27 18:59:00 | 显示全部楼层

Re:制作你的hl单人地图(转)

不错,不错,讨论的问题有价值。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-27 16:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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