设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2520|回复: 3
打印 上一主题 下一主题

[RMVA发布] 战斗胜利后的处理

[复制链接]

Lv1.梦旅人

梦石
0
星屑
105
在线时间
297 小时
注册时间
2009-1-7
帖子
216
跳转到指定楼层
发表于 2013-11-9 15:59:29 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
我跟各位朋友一样,都在用RMVA实现着自己小小的梦想。这个过程一定是曲折,但是前进的。我们在这一路上都应该互帮互助。

从今天早上到现在,我一直在探索一种杀敌任务(要求杀死多少的敌人才能完成的任务)的逻辑,现在经过初步测试,终于完成了,我将这个方法分享给大家。

注:
1.在这个范例中,任务是通过物品的形式出现的,即获得物品就默认接受任务。使用物品可以查看任务描述,如果满足提交条件还可以进行提交。
2.这个范例应该还有很多需要改进的地方。
3.如果有独立的任务系统,可以跳过前面的步骤,直奔脚本。
4.如果完整按照这个范例来实现杀敌任务系统的话,有以下几个弊端:公共事件太多;物品太多;变量太多;战斗胜利后的判断代码太多;在综合敌群中(敌群中有包含任务怪以外的怪物)功能较弱。

好!我们开始吧。

一、创建一个任务物品:


注:
1.效果范围一定要选择无,这样做的目的是为了使用该物品就立刻执行公共事件,无需选择人物。
2.公共事件稍候讲解。
3.使用场合:也可以设置在战斗中也能使用,不过战斗没有胜利,杀敌数不会增加。

二、设定任务怪:只需要选择一种怪物就行,图略。

注:在本例中,任务怪的ID是37,名称是豺狼战士。

三、设定敌群:一定要是包含任务怪的敌群,图略。

注:在本例中,敌群的ID是37,只有2个怪物,均是豺狼战士。

四、新建一个公共事件:


注:
1.触发条件就选择正常执行。
2.在本例中,使用第13号变量来存储已经杀死的任务怪数目。
3.公共事件逻辑:使用物品后出现任务描述,包括完成条件和奖励。之后再出现当前的任务进度,如果已经满足完成条件则让玩家选择是否提交。如果玩家选择是,则奖励物品给玩家,删除1个任务物品(第一步创建的,因为可以堆叠,所以可以完成多次,但每次均要使用),设置13号变量(这个不必纠结,具体情况具体分析)减去任务杀敌目标(本例是10个)。如果没有满足任务完成条件,则只出现当前的任务进度。
4.玩家选择提交任务后,一定要删除1个任务物品,并且减去变量。

五、重头戏:脚本:


注:
1.这个module在默认代码中有存在,我们新建一个,防止修改默认脚本。
2.27代表任务物品ID。
3.37代表敌群ID。
4.if $game_party.has_item?(item,false) and $game_troop.troop == troops:如果队伍里存在ID为27的物品且当前的敌群是ID为37的敌群。
5.2代表当前敌群任务怪的数量。
6.if语句可根据具体情况稍作更改。
7.这段脚本初步可以使用,但有个缺点:只要出现任务怪的敌群,都必须进行判断。

六、测试:

1.未遇敌前:第13号变量显示0,表示当前没有杀死任务1个任务怪。


2.遇敌:


3.战斗胜利后:第13号变量显示2,表示当前已经杀死2个任务怪。


4.使用任务物品的测试过程略。

总之,这个范例只是个初步的范例,还有很多需要改进的地方。我只是给大家分享在战斗胜利后,增加任务杀敌数的方法。

对于新手而言,脚本是十分讨厌的,虽然不可避免,但能省则省。所以本例并没有采用论坛里流行的任务系统。但杀敌数的计算还是需要小小的脚本。尽管如此,还是折磨了我将近一天。

希望这个范例能给大家一点启示。对这个范例的改进我会写在跟贴中。

评分

参与人数 1星屑 +400 收起 理由
怪蜀黍 + 400 态度认真,值得鼓励!

查看全部评分

游戏群组:https://rpg.blue/forum.php?mod=group&fid=565在这里你可以看到我在制作游戏过程中分享的内容。

Lv1.梦旅人

梦石
0
星屑
49
在线时间
46 小时
注册时间
2013-11-16
帖子
274
3
发表于 2013-11-17 10:24:57 | 只看该作者
那个关于音乐的素材我倒是有,很好听http://dl.vmall.com/c0z9u3yl0b喜欢的话来我空间。
周杰伦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
105
在线时间
297 小时
注册时间
2009-1-7
帖子
216
2
 楼主| 发表于 2013-11-10 18:05:10 | 只看该作者
protosssonny 发表于 2013-11-10 11:29
首先鼓励发布技术。我有几点要说:
1、因为讨伐令不止一种,所有最好能加一个定义如:def item_task ,然后 ...

还可以这样写啊!受教不少。
游戏群组:https://rpg.blue/forum.php?mod=group&fid=565在这里你可以看到我在制作游戏过程中分享的内容。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4679
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

1
发表于 2013-11-10 11:29:41 | 只看该作者
首先鼓励发布技术。我有几点要说:
1、因为讨伐令不止一种,所有最好能加一个定义如:def item_task ,然后在这个定义里面写XX讨伐令的具体内容,默认定义只要加一句item_task即可,免得像XP的默认定义那样过于臃肿,一个定义就数百行。
2、利用块化简定义,比如
  1. Item_Task = {27 => 37, 28 => 38, 29 => 39} # 物品和队伍常数对应哈希表
  2. def item_task
  3.   Item_Task.each do |i|
  4.     item = $data_items[i[0]]
  5.     troop = $data_troops[i[1]]
  6.     if $game_party.has_item?(item,false) and $game_troop.troop == troop
  7.       $game_variables[13] += troop.size # 最好这样写,但是也有弊端,我会在第三点里说
  8.     end
  9.   end
  10. end
复制代码
3、如果直接在这里就计算加上队伍敌人数量,万一敌人逃跑则也会被加入被【杀死】的行列,不符合逻辑,所以还应该加上一个关于敌人是否死亡的判断,具体写法参考经验值的获得。
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-6 16:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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