Project1
标题:
关于属性
[打印本页]
作者:
Hjdie
时间:
2011-1-3 18:05
标题:
关于属性
本帖最后由 Hjdie 于 2011-1-3 18:06 编辑
我想做个在获得变量1的增加的时候。人物的HP,攻击力增加。
于是我动手做了。
我做了3个并行事件。
分别用来处理人物的HP和攻击力增加。
最后我建了1个并行事件来判断什么时候变量1的获得。
我的想法
将变量1力量做1个记忆变量。然后不断判断记忆变量是否等于变量1的变量。如果不等于。就用现有变量-记忆变量获得差额。给予力量加成
- -。然后就是这个想法咋实现啊。。。我已经试了很多次了。。。
附上我自己做的工程。。。
附件
作者:
双叶GL
时间:
2011-1-3 20:11
本帖最后由 双叶GL 于 2011-1-3 20:32 编辑
做一个状态不可以吗?状态有个属性增加HP或者力量的百分比
未命名.jpg
(59.36 KB, 下载次数: 1)
下载附件
保存到相册
2011-1-3 20:31 上传
2.jpg
(38.3 KB, 下载次数: 1)
下载附件
保存到相册
2011-1-3 20:31 上传
这样的操作吗?
双叶GL于2011-1-3 20:35补充以下内容:
别老用并行,并行的意思是,在你事件发生时也会一同进行,你既然有开关操作就用自动好些,不然多了会很卡的
作者:
Hjdie
时间:
2011-1-3 20:57
本帖最后由 Hjdie 于 2011-1-3 20:59 编辑
回复
双叶GL
的帖子
我说的是
变量1=力量(代号。也可以是其他的如。智力。敏捷)
这个变量影响角色的属性。
比如+1。角色就HP+10。攻击+10
我头痛的是,我要创建一个循环的不断判断的事件来判断。现在有没有增加力量点数。如果有,那么就给角色的HP+10,攻击+10。
当然。在通常意义上来说,我可以把这个操作放入增加力量的那一个处理中。不过如果这样做。一定会让事件更加复杂了。。。
作者:
白鬼
时间:
2011-1-3 21:23
变量1会有哪几种方式来增加呢?
人工操作?物品使用?还是怎么的?
分析一下,然后在变量1有可能改动的进行判断,比你全程扫描式的判断要节省得多
作者:
1034209716
时间:
2011-1-3 21:55
提示:
作者被禁止或删除 内容自动屏蔽
作者:
Wind2010
时间:
2011-1-3 22:27
$占用的变量位置 = 1 #1号变量控制
$倍率 = 2 #1变量为2力量
#==============================================================================
# ■ 应该只需要力量吧?
#==============================================================================
class Interpreter
def command_122
# 初始化值
value = 0
shizi = $game_variables[$占用的变量位置]
# 操作数的分支
case @parameters[3]
when 0 # 恒量
value = @parameters[4]
when 1 # 变量
value = $game_variables[@parameters[4]]
when 2 # 随机数
value = @parameters[4] + rand(@parameters[5] - @parameters[4] + 1)
when 3 # 物品
value = $game_party.item_number(@parameters[4])
when 4 # 角色
actor = $game_actors[@parameters[4]]
if actor != nil
case @parameters[5]
when 0 # 等级
value = actor.level
when 1 # EXP
value = actor.exp
when 2 # HP
value = actor.hp
when 3 # SP
value = actor.sp
when 4 # MaxHP
value = actor.maxhp
when 5 # MaxSP
value = actor.maxsp
when 6 # 力量
value = actor.str
when 7 # 灵巧
value = actor.dex
when 8 # 速度
value = actor.agi
when 9 # 魔力
value = actor.int
when 10 # 攻击力
value = actor.atk
when 11 # 物理防御
value = actor.pdef
when 12 # 魔法防御
value = actor.mdef
when 13 # 回避修正
value = actor.eva
end
end
when 5 # 敌人
enemy = $game_troop.enemies[@parameters[4]]
if enemy != nil
case @parameters[5]
when 0 # HP
value = enemy.hp
when 1 # SP
value = enemy.sp
when 2 # MaxHP
value = enemy.maxhp
when 3 # MaxSP
value = enemy.maxsp
when 4 # 力量
value = enemy.str
when 5 # 灵巧
value = enemy.dex
when 6 # 速度
value = enemy.agi
when 7 # 魔力
value = enemy.int
when 8 # 攻击力
value = enemy.atk
when 9 # 物理防御
value = enemy.pdef
when 10 # 魔法防御
value = enemy.mdef
when 11 # 回避修正
value = enemy.eva
end
end
when 6 # 角色
character = get_character(@parameters[4])
if character != nil
case @parameters[5]
when 0 # X 坐标
value = character.x
when 1 # Y 坐标
value = character.y
when 2 # 朝向
value = character.direction
when 3 # 画面 X 坐标
value = character.screen_x
when 4 # 画面 Y 坐标
value = character.screen_y
when 5 # 地形标记
value = character.terrain_tag
end
end
when 7 # 其它
case @parameters[4]
when 0 # 地图 ID
value = $game_map.map_id
when 1 # 同伴人数
value = $game_party.actors.size
when 2 # 金钱
value = $game_party.gold
when 3 # 步数
value = $game_party.steps
when 4 # 游戏时间
value = Graphics.frame_count / Graphics.frame_rate
when 5 # 计时器
value = $game_system.timer / Graphics.frame_rate
when 6 # 存档次数
value = $game_system.save_count
end
end
# 循环全部操作
for i in @parameters[0] .. @parameters[1]
# 操作分支
case @parameters[2]
when 0 # 代入
$game_variables[i] = value
when 1 # 加法
$game_variables[i] += value
when 2 # 减法
$game_variables[i] -= value
when 3 # 乘法
$game_variables[i] *= value
when 4 # 除法
if value != 0
$game_variables[i] /= value
end
when 5 # 剩余
if value != 0
$game_variables[i] %= value
end
end
# 检查上限
if $game_variables[i] > 99999999
$game_variables[i] = 99999999
end
# 检查下限
if $game_variables[i] < -99999999
$game_variables[i] = -99999999
end
end
# 刷新地图
$game_map.need_refresh = true
if $game_variables[$占用的变量位置] != shizi
shizi -= $game_variables[$占用的变量位置]
shizi *= $倍率
$game_actors[1].str_plus -= shizi
end
# 继续
return true
end
end
复制代码
作者:
步兵中尉
时间:
2011-1-4 09:52
是否先说一下你游戏的系统是什么,添加了哪些脚本。
我记得一般情况下可以直接用属性来解决的啊
作者:
Hjdie
时间:
2011-1-4 12:52
本帖最后由 Hjdie 于 2011-1-5 21:55 编辑
各种回复:
首先游戏只需要3个基础属性。力量,智慧,敏捷
= =。此处的力量,智慧,敏捷均为自定义的属性。和XP规定的属性没有半毛钱的关系。
比如。XP规定角色力量+1,可以加10点HP,那么自定义的属性力量+1,可以加100点HP。
就是这种意思。
然后由基础属性引发出的扩展属性。如果HP,MP,物理攻击力。魔法攻击力,物理防御,魔法防御。。。等等。都是根据装备和基础属性来增加的
所以,如果我在每个增加自定义力量的地方在写上自定义力量的扩展属性加成。那么总有一些会漏掉。所以我想使用并行事件来判断整个游戏的3个基础自定义属性。
在确定了属性方针后,我觉得可以使用双循环的方法来写。
于是参考双循环的写法,自己制作了一个判断。不过总是有问题(如,力量和记忆力量总是出问题。力量加成无限制加。装备加了某个自定义属性后,不会减去相对应的加成。。等等)
游戏系统里没有使用任何脚本。- -。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1