一款单机rpg游戏排行榜,忘记叫什么了...

您还未登陆,请登录后操作!
一个很老的西欧神话RPG游戏,忘记叫什么了,请大虾帮忙!
应该比较老,我第一玩电脑时接触到的,时间在97年。很怀念,想找下那样的感觉,特发此贴,请各位大哥帮忙。
游戏特征:游戏以西欧神话时代为背景,出来有一个男主人公,可以让你选择学黑魔法还是白魔法,后面会遇到另一个主人公,他知道白魔法,可以治疗。再到后面,会遇到一些能召唤怪兽的魔法师,你可以选择让他们加入你的队伍。升级后可以加点,还能得到一个什么徽章,可以去换装备。
战斗特征:战斗是走格式的,在攻击的时候画面下方会出现一个攻击的动作画面。平时还可以用一些辅助魔法,比如加血和瞬移等。可以在一些城市接一些支线任务去完成,得到奖赏。
其他特征:由于游戏比较老,我大概在10年前玩过,所以只觉得比较好玩,情节好象一般,好象还可以接一些支线任务。
个人感慨:很怀念第一次接触电脑玩这个游戏的感觉,我找了很久,没找到过,毕竟应该不是很出名的游戏,如果谁能帮我找到,我一定感激你!谢谢朋友的帮忙~由于本人积分有限,所以只能贡献20,望高手见谅!
您的举报已经提交成功,我们将尽快处理,谢谢!
大家还关注为什么面向对象的编程是有用的?(以一个角色扮演游戏为例) - 博客 - 伯乐在线
& 为什么面向对象的编程是有用的?(以一个角色扮演游戏为例)
| 标签: ,
本文面向的是那些刚刚接触编程,可能已经听说过”面向对象编程”,”OOP”,”类”,”继承/封装/多态”,以及其他计算机科学术语的,但是仍然没有真正明白如何使用OOP的朋友。在本文中,我将解释为什么使用OOP和如何轻松编码。这篇文章使用Python 3代码,但其概念适用于任何编程语言。
有两个关键的非面向对象编程概念需要马上理解:
重复的代码是一件坏事。
代码永远都在改变。
除了一些单任务和只运行一次的微小的”用完即弃”的程序,你几乎总是需要为了解决bug或增加新功能而更新你的代码。大部分编写良好的软件是那种可读性高,易于修改的软件。
如果你经常在你的程序中复制/黏贴代码,那么当你修改它的时候,就需要在很多地方做出同样的改动。这是棘手的。如果在某些地方遗漏了修改,你将到处修改bug或者实现的新功能有不一致性。重复的代码是一件坏事。程序中重复的代码将会把你置于bug和头痛之中。
函数让你摆脱重复的代码。你只需要将代码写到函数中一次,就可以在程序中的任何需要运行代码的地方调用它就可以。更新函数的代码就可以自动更新调用函数的地方。正如函数使得更新代码变得容易,使用面向对象编程技术也会组织你的代码使它更容易改变。记住代码总是在改变的。
一个角色扮演游戏栗子
大多数OOP教程都是令人作恶的。它们有”汽车”类和”鸣笛”方法,其他一些例子与新手写的或者之前接触过的实际程序都是不相关的。因此本博文将使用一个RPG类视频游戏(回忆下魔兽,宠物小精灵,或龙与地下城的世界)。我们已经习惯于将游戏中的事物想象成一些整数与字符的集合。看看Diablo(暗黑破坏神)角色屏幕或D&D角色表单上的数字:
从这些RPG视频游戏中去除图片,角色,装甲,其他对象只是变量形式的一个整数或者字符值的集合。不使用面向对象概念,你可以在Python中这样实现这些事物:
name = 'Elsa'
health = 50
magicPoints = 80
inventory = {'gold': 40, 'healing potion': 2, 'key': 1}
print('The hero %s has %s health.' % (name, health))
以上变量名都是非常通用的。为了在游戏中增加怪兽,你需要重命名玩家角色变量,并且增加一个怪兽角色:
heroName = 'Elsa'
heroHealth = 50
heroMagicPoints = 80
heroInventory = {'gold': 40, 'healing potion': 2, 'key': 1}
monsterName = 'Goblin'
monsterHealth = 20
monsterMagicPoints = 0
monsterInventory = {'gold': 12, 'dagger': 1}
print('The hero %s has %s health.' % (heroName, heroHealth))
当然你希望有更多的怪物,接着你会有类似monster1Name, monster2Name等等的变量。这不是一种好的编码方法,因此你可能会使用怪物变量列表:
monsterName = ['Goblin', 'Dragon', 'Goblin']
monsterHealth = [20, 300, 18]
monsterMagicPoints = [0, 200, 0]
monsterInventory = [{'gold': 12, 'dagger': 1}, {'gold': 890, 'magic amulet': 1}, {'gold': 15, 'dagger': 1}]
然后列表索引0处是第一个哥布林的状态,龙的状态在索引1处,另一个哥布林在索引2处。这样你可以在这些变量中存放很多怪物。
但是,这种代码容易导致错误。如果你的列表不同步,程序将无法正常工作。例如玩家击败了索引0处的哥布林,程序调用了vanquishMonster()函数。但这个函数有一个bug,它会(意外的)删除列表中的所有值除了monsterInventory:
def vanquishMonster(monsterIndex):
del monsterName[monsterIndex]
del monsterHealth[monsterIndex]
del monsterMagicPoints[monsterIndex]
# Note there is no del for monsterInventory
vanquishMonster(0)
怪兽列表最后看起来像这样:
monsterName = ['Dragon', 'Goblin']
monsterHealth = [300, 18]
monsterMagicPoints = [200, 0]
monsterInventory = [{'gold': 12, 'dagger': 1}, {'gold': 890, 'magic amulet': 1}, {'gold': 15, 'dagger': 1}]
现在龙的道具看起来跟之前哥布林的道具一样。第二个哥布林的道具是之前龙的道具。游戏迅速失控了。问题是你把一个怪物的数据散布在多个变量中。解决这个问题的方法是将一个怪物的数据放入一个字典里,然后使用一个字典列表:
monsters = [{'name': 'Goblin', 'health': 20, 'magic points': 0, 'inventory': {'gold': 12, 'dagger': 1}},
{'name': 'Dragon', 'health': 300, 'magic points': 200, 'inventory': {'gold': 890, 'magic amulet': 1}},
{'name': 'Goblin', 'health': 18, 'magic points': 0, 'inventory': {'gold': 15, 'dagger': 1}}]
啊哈!这段代码变得更加复杂了。例如,一个怪兽的状态是一个字典列表中的字典项。假如咒语或者道具栏也有它们自己的属性,且需要放到字典该怎么办?假如一个道具栏中的物品是一个背包,它本身包含了其他道具该怎么办?这个怪物列表会变得紧张。
这点是面向对象程序设计通过创建一个新的数据类型就可以解决的。
类是你程序中新数据类型的蓝图。面向对象编程对装甲,怪物等建模提供了新的方法,该方法比列表和字典的大杂烩好得多。虽然需要花些时间来熟悉OOP的概念。
事实上,因为英雄角色与怪兽们拥有相同的属性(健康值,状态值等等),我们只需要一个英雄与怪兽共享的通用的LivingThing类。你的代码可以变为:
class LivingThing():
def __init__(self, name, health, magicPoints, inventory):
self.name = name
self.health = health
self.magicPoints = magicPoints
self.inventory = inventory
# Create the LivingThing object for the hero.
hero = LivingThing('Elsa', 50, 80, {})
monsters = []
monsters.append(LivingThing('Goblin', 20, 0, {'gold': 12, 'dagger': 1}))
monsters.append(LivingThing('Dragon', 300, 200, {'gold': 890, 'magic amulet': 1}))
print('The hero %s has %s health.' % (hero.name, hero.health))
嘿,瞧瞧,使用类已经把我们的代码削减了一半,因为我们可以对玩家角色和怪兽使用同样的代码。
在上面的代码中,你可以定义新的数据类型/类(除了学院派,但是这两个术语基本上是一样的。参见)名为LivingThing。你可以实例化LivingThing变量/对象(重复一次,这两个术语基本上也是相同的)就好像你可以拥有整形值,字符值或布尔值一样。
上面代码特定于Python的细节:
class LivingThing():
上面class声明定义了一个新类,就像def声明定义一个新函数。该类名是LivingThing。
def __init__(self, name, health, magicPoints, inventory):
上面代码为LivingThing类定义了一个方法。”方法“只是命名属于这个类的函数。(参考)
这个方法很特别。__init__()用于类的构造函数(或者称为”构造方法”,”构造函数”,简写为”ctor”)。而一个类是一个新数据类型的蓝图,你还需要创建这个数据类型的值,以便于存储到变量或者使用函数传递。
当调用构造器创建新对象时,执行构造器中的代码,并返回一个新对象。这就是
hero = LivingThing('Elsa', 50, 80, {})
这行的意思。无论类名是什么,构造器总是被命名为__init__。
如果类没有__init__()方法,Python会为类提供通用的构造方法,该方法什么都不做。但是__init__()是初始化建立一个新对象的绝佳地方。
在Python语言中,方法中的第一个变量是self。self变量用于创建成员变量,后面会做解释。
构造函数体:
self.name = name
self.health = health
self.magicPoints = magicPoints
self.inventory = inventory
这看上去有点重复,但这段代码所作的就是对由构造函数创建的对象的成员变量赋值。成员变量开头是self.表示这些成员变量属于创建的对象,且不是函数中的普通局部变量。
调用构造器
# Create the LivingThing object for the hero.
hero = LivingThing('Elsa', 50, 80, {})
monsters = [LivingThing('Goblin', 20, 0, {'gold': 12, 'dagger': 1}),
LivingThing('Dragon', 300, 200, {'gold': 890, 'magic amulet': 1}),
LivingThing('Goblin', 18, 0, {'gold': 15, 'dagger': 1})]
print('The hero %s has %s health.' % (hero.name, hero.health))
Python中调用构造器就像是一个函数调用,该函数名为类名。因此LivingThing()就是调用LivingThing类的__init__()构造器。
LivingThing('Elsa', 50, 80, {})
调用创建了一个新的LivingThing对象,并保存在到hero变量里。以上代码还创建了3个怪兽LivingThing对象并保存在monsters列表中。
至此我们开始看到了面向对象编程的好处。如果其他程序员读了你的代码,当他们看到LivingThing()调用,他们知道他们可以搜索LivingThing类,然后从LivingThing类中找出所有他们想知道的细节。
但一个更大的好处是当你试图更新LivingThing类时才能体会的。
假如你想给你的RPG增加”饥饿”度属性。如果一个英雄或怪兽的饥饿度为0,他们一点也不饿。但如果他们的饥饿度超过100,那么他们将受到伤害并且健康值每天递减。你可以这样改变__init__()函数:
def __init__(self, name, health, magicPoints, inventory):
self.name = name
self.health = health
self.magicPoints = magicPoints
self.inventory = inventory
self.hunger = 0 # all living things start with hunger level 0
不需要修改其他任何代码行,你游戏中所有LivingThing对象现在都有了饥饿度。你不需要担心某些LivingThing对象有hunger成员变量,而有些没有:所有LivingThing对象都更新了。
你也不需要改变任何构造器调用,因为你没有在__init__()函数的参数列表总中增加一个新的饥饿度参数。这是因为队一个新的LivingThing对象的饥饿度来说0是一个很好的默认值。如果你在__init__()函数的参数列表总中增加一个新的饥饿度参数,那么你需要更新所有调用构造器的代码。但这对其他函数也是一样的。
如果你的RPG有很多类似的默认值,通过使用类的构造器进行默认值赋值,就可以避免当量的”样板”代码。
方法具有执行代码来影响对象本身的用途。例如,你可以编码来直接修改LivingThing对象的健康度:
hero = LivingThing('Elsa', 50, {})
hero.health -= 10 # Elsa takes 10 points of damage
但这样处理伤害不是一个非常健壮的方式。每当有什么东西受到伤害时就需要检查很多其他的游戏逻辑。例如,假设你想要检查一个角色在受到伤害后,它是否死亡。你需要这样的代码:
hero = LivingThing('Elsa', 50, {})
hero.health -= 10 # Elsa takes 10 points of damage
if hero.health & 0:
print(hero.name + ' has died!')
以上方法的问题是你需要检查各处代码来减少LivingThing对象的健康值。但是重复的代码是一件坏事。阻止重复的代码的非OOP方式可能是把以上方法放入一个函数中:
def takeDamage(livingThingObject, dmgAmount):
livingThingObject.health = self.health - dmgAmount
if livingThingObject.health & 0:
print(livingThingObject.name + ' is dead!')
hero = LivingThing('Elsa', 50, {})
takeDamage(hero, 10) # Elsa takes 10 points of damage
这是一个更好的解决方案,因为任何更新takeDamage()(例如装甲防护,保护性法术,增益效果等)只需要增加到takeDamage()函数中。
然而,不利的一面是,当您的程序规模增长,takeDamage()函数很容易迷失在其中。takeDamage()函数与LivingThing类的关系并不明显。如果你的程序有成百上千的函数,它将很难指出哪一个函数与LivingThing类有关系。
解决的方法是将这个函数变成LivingThing类的方法:
class LivingThing():
# ...other code in the class...
def takeDamage(self, dmgAmount):
self.health = self.health - dmgAmount
if self.health == 0:
print(self.name + ' is dead!')
# ...other code in the class...
hero = LivingThing('Elsa', 50, {})
hero.takeDamage(10) # Elsa takes 10 points of damage
一旦你的程序有很多类,每个类有许多方法和成员变量,你将开始看到OOP可以帮助组织你的程序而使他更易于管理。
公共与私有方法
方法与成员变量可以被标示为public或private。公共方法可以和公共成员变量可以在类内部或外部的任何代码调用和赋值。私有方法和私有成员变量只能在对象自己的类内部被调用和赋值。
在某些语言中,例如Java,这种”可以被调用/赋值”由编译器严格的保证。而Python,却没有”私有”和”公共”的概念。所有方法和成员变量都是”公共”的。然而,语言规定如果一个方法名开头是下划线,它就被认为是一个私有方法。这就是为什么你将看到_takeDamage()等方法了。你可以方便的编写代码从对象的类的外部调用私有函数或者设置私有成员变量,但你已经被彻底警告不要去这样做了。
公共/私有的区别的原因是为了解释类如何与外部代码进行交互的。(参考)类的程序员期望其他人不会编写代码调用私有方法或设置私有成员变量。
例如,takeDamage()方法包括健康值低于0就检查死亡。你可能想要在代码中添加各种各样的其他检查。护甲、敏捷性和防护法术来减少伤害的可能因素。LivingThing对象可能穿着一件魔法斗篷,通过增加抗损害值,而不是减少它们的健康值来进行治疗。这个游戏的所有逻辑都可以放入takeDamage()方法中。
如果你偶然的把代码放到那里,所有的OOP结构就毫无意义了
class LivingThing():
# ...code in the class...
hero = LivingThing('Elsa', 50, {})
# ...some more code...
if someCondition:
hero.health -= 50
语句hero.health -= 50会减少50点健康值,而不会考虑Elsa穿着哪种装甲,或者她有防护法术,或者她穿着魔法治疗披风。这段代码将直截了当的减少50点健康值。
很容易忘掉takeDamage()方法并且偶尔写出这样的代码。它不会检查英雄对象的健康值是否低于0。游戏继续运行好像Elsa还活着,及时她的健康值是负数!我们可以使用公共/私有成员和方法来避免这个bug。
如果你重命名health成员变量为_health且标记为私有的,那么当你写成这样就很容易捕获这个bug:
hero = LivingThing('Elsa', 50, {})
# ...some more code...
if someCondition:
hero._health -= 50 # WAIT! This code is outside the hero object's class but modifying a private member variable! This must be a bug!
在一种语言中如Java,如果编译器确保私有/公共访问,它就不可能编写非法访问自由成员和方法的程序。面向对象编程帮助我们防止这种bug。
使用LivingThing类表示龙是不错的,但是除了LivingThing类提供的属性外,龙有很多其他的属性。因此你想创建一个新的Dragon类,它包含如airSpeed和breathType(可以使用 'fire','blizzard', 'lightning', 'poison gas'等字符串表示)等成员变量。
因为Dragon对象也包含health,magicPoints,inventory和其他LivingThing对象的属性,你可以创建一个新的Dragon类,并且从LivingThing类复制/黏贴所有代码。但这将导致重复的代码这一坏习惯。
相反,可以使Dragon类作为LivingThing类的子类:
class LivingThing():
# ...other code in the class...
class Dragon(LivingThing):
# ...Dragon-specific code in the class...
实际上是说,”一个龙也是一种LivingThing,还有一些附加的方法和成员变量”。当你创建龙对象时,它会自动的拥有LivingThing的方法和成员变量(拯救我们脱离重复的代码)。但它也有龙特有的方法和成员变量。进一步说,任何处理LivingThing对象的代码都可以自动的操作龙对象,因为龙对象已经拥有了LivingThing成员变量和方法。这个原则被称为子类型多态性。
然而在实践中,继承是容易滥用的。你必须确保任何对LivingThing类做出的改变和更新都适用于Dragon类和所有其他LivingThing的子类。这可能不总是那么简单直接。
例如,如果你创建了LivingThing类的Monster和Hero子类,接着创建了Monster类的 FlyingMonster 和MagicalMonster子类,新的Dragon类继承自FlyingMonster 类还是MagicalMonster类?或者可能它只是Monster类的子类
这就是继承和OOP开始变得棘手且严谨的争论哪种是”正确”设计类的方式之所在。我希望报纸这篇博文简短而简单,因此我要把这些问题留给读者作为练习来调查。(参考
我讨厌由面向对象编程开始的面向初学者的程序教程。OOP是十分抽象的概念。有一些经验和编写过大型程序之前,你不会理解为什么使用类和对象使编程更容易。相反,它会给初学者留下一条陡峭的学习曲线去爬,他们不知道为什么攀登它。我希望这个RPG例子至少让你领略了为什么OOP是有帮助的。有更多的OOP。如果你想了解更多,试试搜索 和 。
如果你仍然对OOP概念感到迷惑,放心大胆的编写没有类的程序。你不需要它们,它们将导致过度设计的代码。但是一旦你已经有了一些编码经验,面向对象编程的好处会变得更加明显。祝你好运!
关于作者:
为作者带来更多读者;为读者筛选优质内容;专注IT互联网。
最新评论(期待您也参与评论)
汇集优质的Python技术文章和资源。人生苦短,我用Python!
JavaScript, CSS, HTML5 这里有前端的技术干货!
关注安卓移动开发业界动态,分享技术文章和优秀工具资源。
关注iOS移动开发业界动态,分享技术文章和优秀工具资源。
为作者带来更多读者;为读者筛选优质内容;专注IT互联网。
由数百名译者组成,立志翻译传播优秀的外文技术干货。
一个专门为IT单身男女服务的征婚传播平台。
收录优秀的工具资源,覆盖开发、设计、产品和管理等。
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线博客团队正试图以我们微薄的力量,把优秀的原创/译文分享给读者,做一个小而精的精选博客,为“快餐”添加一些“营养”元素。
欢迎关注更多频道
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选博客文章
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
(加好友请注明来意)
网站使用问题
请在询问或者反馈
& 2015 伯乐在线
赞助云主机, 赞助云存储这是一个很好的RPG游戏脚本真的!
提示: 这篇影评可能有剧透
  游戏的背景设定在中世纪的欧洲,主角的一堆父母在小时候神秘失踪的兄妹,父母失踪那晚这对兄妹进入一女巫的糖屋却被该女巫抓住, 哥哥被女巫强迫吃下【魔法糖】从此患上了【糖尿病】(被动状态,每若干小时会进入【行动不能】状态,但提前注射【胰岛素】则可避免),两兄妹最后奋起反抗杀死了女巫并且发现他们具有【魔法免疫】的天赋,从此他们就开始了他们的猎杀女巫之路。
  第一章:游戏一开始玩家可以控制我们的这两兄妹--具有极高纯物理伤害的DPS,在接受了市长所发布的【寻找被女巫拐走的孩子】的任务时,玩家会就下一个被冤枉为女巫并即将被烧死的女人(而这个女人将会成为团队唯一的治疗职业【白女巫】),猪脚在进行任务中可以抓到一名【黑女巫】对其拷问可以知道抓走孩子们的是【大黑女巫】,而【大黑女巫】则是想用这些孩子在【黑月】之时进行献祭从而使自己获得【火焰免疫】的特性,拷问进行到一半,【大黑女巫】协同同伙开始骚扰城市,此时触发战斗,(注意此战玩家必败)【大黑女巫】救走了被俘的同伴并让手下的【大脚怪】(后将作为MT加入玩家队伍)劫走走了最后一名孩子,而妹妹被他们的仰慕者(该仰慕者可成为团队成员【吟游诗人】)救走,哥哥则被【白女巫】救下并且在【白女巫】在湖边为其清洁伤口时,两人情不自禁在湖中发生了【哔——】。与此同时妹妹在寻找哥哥的时候被一直不满这一对兄妹的【市警长】带领的一群【抠脚大汉】袭击,千钧一刻之时,原本效忠于【大黑女巫】的【大脚怪】出现,团灭了【抠脚大汉】以及【市警长】,带走了昏迷的妹妹。【大脚怪】将妹妹带到湖边并为其疗伤,然后留下了自己的名字就离开了。
  第二章:哥哥在做完【哔——】之后继续搜寻的工作,却意外发现了自己儿时的房子,进入房间之后发现妹妹也在里面,此时与妹妹聊天则可出发剧情:【大黑女巫】突然出现,告诉了兄妹的身世——他们的母亲是法力强大的【大白女巫】,上一个【黑月】之时,【大黑女巫】为了得到【纯净的白女巫之心】从而故意散播谣言,致使兄妹的父母被烧死。谈话结束后触发与【大黑女巫】的BOSS战(此战玩家必败),战斗失败后【大黑女巫】抓走了妹妹已获得上一次【黑月】没有获得的【纯净的白女巫之心】,而伤势过重的哥哥则被【白女巫】治愈。
  第三章:于【白女巫】谈话可以触发新任务【营救妹妹】,【白女巫】从找到的【白巫术法典】中的巫术为所有武器进行【祝福】使他们具有了【破魔】以及【神圣】两项效果,随机小队前往【大黑女巫】的巢穴。进入巢穴后触发战斗,由于【黑女巫】数量比较庞大所以推荐使用【神圣祝福之重机枪】搭配【祝福之破魔弹】,战斗结束触发剧情:【大黑女巫】试图趁乱杀死妹妹取出【纯净的白女巫之心】,但被良心发现的【大脚怪】所阻止,恼羞成怒的【大黑女巫】使用魔法将他丢下了山崖,之后触发BOSS战(此时妹妹重新加入队伍)。BOSS血量下降到25%后第一阶段结束,BOSS逃跑,哥哥以及【白女巫】前去追赶,妹妹则前往山崖下查看【大脚怪】。第一小队成功追上BOSS,第二阶段战斗开始,BOSS血量下降到10%后进入【上帝模式】一回合秒杀玩家,第二阶段结束,此时触发剧情:【白女巫】为了救哥哥而牺牲,获得喘息的哥哥用他长得像【哔——】的枪轰击BOSS,BOSS逃入【糖果屋】,妹妹终于赶到(妹妹加入队伍),玩家进入【糖果屋】,BOSS战第三阶段开始,BOSS血量下降到0了触发剧情:哥哥由于【糖尿病】状态发作BOSS乘机反扑,妹妹拼死给哥哥打上了【胰岛素】解除了【行动不能】的状态,最终杀死了BOSS,此时点击【大黑女巫】尸体可以拾取【大黑女巫的头】以及【大黑女巫的魔杖】,拾取魔杖后系统提示:妹妹可以学习【魔法】。
  第四章:玩家将【大黑女巫的头】交给市长完成任务,然后似然小队又开始了新的旅途。
  囧,人才啊
  哈哈~我也觉得这部电影剧情就和游戏通关一样~
  清清楚楚!
  我先以为是暗黑狩魔猎人成长记,后来发现不止,WOW的兽人和人类后来也乱入了。我在想新组合会不会拍第二部???
  太牛逼了。
  这本子真的适合做游戏!
  我艹!你丫牛!
  【哔——】啊~~~
  不明白为什么那些黑女巫不用和哥哥啪啪啪的那个白女巫的心,反而去找妹妹那个战斗力这么强的
  同楼上的疑问啊~ 白女巫也忒弱了.........
  RPG的话,暗黑的风格必须的,爆虫那段。。。
  @King5268 这种电影就不要认真了嘛 @翻书贼
  好吧……
  Okay..........
  影评就是比电影好看....
  必须把这个脚本推荐给BLZ!
  亲儿子亲闺女们看看,么有MT你们啥也不是
  @眼瘦环肥 对的 没有MT神装DPS都是浮云
  @翻书贼 white witch和grand white witch不是一个级别的
  游戏攻略
  太有才了!!!!!!!!!!!!!!!!
  哇哈哈哈哈哈 这个真心牛
  好欢乐
  @翻书贼
  因为黑女巫不能直接用白女巫的心,成年白女巫的心脏太强她们受不了,所以他们才要找女主角,因为女主角继承了老妈的血脉,但同时没有法术,可以食用。同理,虽然后面那个白女巫很弱,但是本身会魔法又成年,所以黑女巫不能直接食用
  楼主写得一手好攻略,赞!
  好顶赞!
  好有才!
  因为妹妹传承了妈妈高阶白女巫的血统,用她的心才有效,那个啪啪啪的只是普通白女巫,没用的
  看着阵势,绝对会有第二部啊!!!
  确实合适做游戏,搞不好真的出游戏
  这。。笑尿了
  若干年之后应该会有学者研究《论魔法免疫的本质》以及《白魔法的遗传变异》……(卤煮西幻看多了忽略我吧)
  哈哈哈哈哈哈哈哈哈哈 人才啊
  不过这任务BUG了···NPC市长死了····交不了任务了····
  DND灵魂附体
  的确是游戏的脚本。。。。太奇葩的电影了。
  末尾很像鬼泣
  男猪脚发生了【哔——】的白女巫死得可惜也死得说不过去,要说雷纳可是中了弗兰克詹森两刀都不死,咋白女巫被刺了一下就死了呢!?
  因为辣过魔杖是红色传奇武器@经纬
  不科学,还期待更多【哔——】的故事咧,爱情动作片阅多了就会有审片疲劳,这种暧昧情节比较有感觉@夏日已老
  好棒好棒,从游戏的角度来看清清楚楚啊!
  good job O(∩_∩)O
  【哔——】~~
大黑女巫蛮靓~身材good
  最后一点:市-长在突袭那场戏里面已经被爆头了
  可以拿来跑团用的
  好好笑!
  喜闻乐见
  黑女巫是凤凰女啊,当然靓
  哈哈哈哈大脚怪才不是良心发现,他只是在不违背服务女巫的种族设定里,挑了他喜欢的一个伺候
  人才啊
  我也觉得眼熟,真是凤凰女。不过凤凰女在这部的脸大部分都被ps掉了。。。。
  真牛逼
  最后应该加入QTE对决BOSS
  除了市长早已挂掉无法最后交任务之外,真是一篇好攻略
  市场没死吧,死的那个是市场派来帮助他们的当地的导游。
  楼上,市长被警长杀了。
  楼上,想起来了,村长的确死了,不过就算死了也能选个新村长的吧,呵呵。
  楼主好棒点赞!
  好欢乐的游戏
  囧,人才啊
  
  
  赞一个
  挺不错的,还可以按照兄妹,开启双主角模式。
就是有一点,不知道适合做 战棋类,还是单纯的回合制,还是做成act游戏。。。 要是按照暗黑那种模式,做成arpg也是很有前途的吧
  不过有这么多需要剧情的特殊的战斗,战斗系统可能会比较混乱
  LZ强人一枚,鉴定完毕
LZ强人一枚,鉴定完毕
LZ强人一枚,鉴定完毕
  射射!
挺不错的,还可以按照兄妹,开启双主角模式。
就是有一点,不知道适合做 战棋类,还是单纯的回
挺不错的,还可以按照兄妹,开启双主角模式。
就是有一点,不知道适合做 战棋类,还是单纯的回合制,还是做成act游戏。。。 要是按照暗黑那种模式,做成arpg也是很有前途的吧
不过有这么多需要剧情的特殊的战斗,战斗系统可能会比较混乱
  感觉RSLG跟ARPG应该都可以哈哈
  吊的不对,楼主好强
  好强!已经在脑补画面建模精细度和部分QTE(比如最后打胰岛素)了...
  很不错的剧本啊
  好赞啊!!!!
  哈哈哈,好现实的剧情
  两人情不自禁在湖中发生了【哔——】____加一定的值,再一定的值
动作 / 恐怖 / 奇幻
托米·维尔科拉
杰瑞米·雷纳 / 杰玛·阿特登 / 法米克·詹森 / 托马斯·曼
& 2005-, all rights reserved

我要回帖

更多关于 rpg游戏 的文章

 

随机推荐