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

Project1

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

[已经解决] 大家好,我想请教一个有关脚本的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
跳转到指定楼层
发表于 2012-12-2 19:29:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
前期有三个脚本windows_1,windows_2,windows_3
分别描述了三个窗口。

现在想做一个sence(名称为sence_1)脚本,把这三个窗口里同时显示出来,并且按esc退出。
我想显示的方法是,设定一个事件,当游戏主角激活事件后,显示一这个sence。
事件中引用脚本 $sence=Sence_1.new

那写sence脚本的具体思路是什么?
需要跟贴说明哪些问题?

或者给sence描述的一个传送门什么的......
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
23
 楼主| 发表于 2013-1-18 17:41:01 | 只看该作者
后知后觉 发表于 2012-12-21 20:41
从表面上看 精灵 是比窗口 在图像显示上更为基层的东西.
有些人用 精灵 重写 Window 总类.
不过实际中 默认 ...

大神您好,打搅了。

还是回问技能范围。

原有的技能范围不太够用,我想进行扩展。

但苦于不会设置,不知能不能介绍一下设置的大概方法,或者我没有说明白的话,追问一下
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6930
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

22
发表于 2012-12-21 20:41:37 | 只看该作者
从表面上看 精灵 是比窗口 在图像显示上更为基层的东西.
有些人用 精灵 重写 Window 总类.
不过实际中 默认的 Window 类貌似并不是用 精灵写的.
你可以把精灵看成是具有更多图像显示特效的无边框透明窗口.不过没有光标.
战斗场景默认的 所有精灵都集中在 Spriteset_Battle 里集中管理.
要控制好精灵和窗口的显示层级.除了调整他们的 z 值外.
还有另外一个很重要的东西  视口 Viewport
还有就是 z 是可以弄为 负数 的.











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
21
 楼主| 发表于 2012-12-20 16:52:33 | 只看该作者
dujian15 发表于 2012-12-20 16:41
我才有想法,还一点都没有开动......

我的想法是,两个矩阵 E矩阵和A矩阵

兄弟啊,不学脚本,做游戏永远得现别人的脚本妥协。

这种妥协的结果可能会是剧情,平衡全都飞掉……不好控制……
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
20
 楼主| 发表于 2012-12-20 16:41:00 | 只看该作者
cjlzbb 发表于 2012-12-20 16:30
我跟你一样想做那种有距离的回合制,用地球村的sideview,不过想法有些不同。  

我是想给每个角色开个变 ...

我才有想法,还一点都没有开动......

我的想法是,两个矩阵 E矩阵和A矩阵

EEEEAAA
EEEEAAA
EEEEAAA
EEEEAAA
EEEEAAA

整个矩阵命名为B 其中E与A坐标独立。

E与A之间的坐标换算关系为
大矩阵 B与E的换算关系为 B= E
与A为 B = A + 4

然后为这个矩阵画上7 * 5个矩形。

然后根据E和A的坐标,向sideview和$game_troop分别返回人物坐标,这样人物显示就没有问题了。

接下来所有的逻辑都封装到这个矩阵方法中了。

想到的矩阵方法:

1 换算 换算E A B三者的关系。六个方法
2 换算屏幕坐标 一个就行 用来保持与主程序的通信。
3 攻击距离计算: A - E或者 E - A      我是仿魔力宝贝的系统  同名小矩阵下战斗距离都为零。
4 攻击范围的扩展:如十字 整排


但是目前如何在战斗界面里 显示这个矩阵,我一点头脑没有。
最初是想显示个window_selectable的窗口,然后背景透明化。

但这窗口永远显示在人物之前,失败。

那就只能自己手动写精灵了。

问题1 我所知道的精灵只是一个显示动画的东西?可以像用window一样用么?
问题2 sence_battle的解析。
问题3 怎样测试精灵,以便即时观察效果
解决不掉这三个问题,我怕我也只能是停留在理论层次了,兄弟。

点评

- - 好深奥  发表于 2012-12-20 16:49
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
696 小时
注册时间
2011-1-4
帖子
208
19
发表于 2012-12-20 16:30:17 | 只看该作者
dujian15 发表于 2012-12-20 15:19
大神您好,又有新问题请教了。

我跟你一样想做那种有距离的回合制,用地球村的sideview,不过想法有些不同。  

我是想给每个角色开个变量,角色1对应变量1 等等。然后随着变量1改变而改变坐标————同时改变状态。状态限制技能的使用,也就是例如以下这个例子

攻击,除“1米内”状态之外的其他状态都会沉默“攻击”技能。然后用“前进”或“后退”技能则能改变变量和状态。

但是现在卡在了变量改变坐标,其他都搞定了。你能帮下我么
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
18
 楼主| 发表于 2012-12-20 15:19:16 | 只看该作者
后知后觉 发表于 2012-12-18 00:57
1.
除了敏捷和幸运.别的属性好像都是相对独立的 没参与什么东西的计算
处理战斗伤害是调用的 Game_Battle ...

大神您好,又有新问题请教了。


由于改动战斗系统,可能要重新绘制战场,所以在研究精灵操作。

早期做一些简单的例如技能商店的脚本只,只需要写好window和sence,就可以了。而且可以通过事件,直观的看到。

但是精灵应该如何使用,我现在完全摸不到头脑。

有没有适用的教程可以参考的?

我主要就是想在战斗界面中,在人物和地图之间,再显示一个精灵,就是画我上次说的格子。
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
17
 楼主| 发表于 2012-12-18 08:24:31 | 只看该作者
后知后觉 发表于 2012-12-18 00:57
1.
除了敏捷和幸运.别的属性好像都是相对独立的 没参与什么东西的计算
处理战斗伤害是调用的 Game_Battle ...

追问,F1有中文版的么?
完全不懂日文......
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6930
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

16
发表于 2012-12-18 00:57:46 | 只看该作者
dujian15 发表于 2012-12-17 22:30
大神您好,又要麻烦您了。

是这样了,我看到您写过装备脚本,我下一步也打算从装备脚本和战斗系统动刀。 ...

1.
除了敏捷和幸运.别的属性好像都是相对独立的 没参与什么东西的计算
处理战斗伤害是调用的 Game_Battler 类的 item_apply
命中.躲避.波动.暴击.什么的都可以通过他找到.

2.
这个其实就是一个 技能、物品 的 【效果范围】的扩展.
Game_Action 类的 make_targets 就是生成 目标对象数组 的
把角色和战斗的2个矩阵看成是2个坐标系.最左上方的那点是 0,0 坐标
这样就可以通过 角色 和敌人的  index 计算出 矩阵中的坐标.
计算方法可以参考 光标窗口类里对光标位置的计算.
然后根据扩展的效果范围寻找作用对象.
可以以未知点的相对坐标为数据来进行设置效果范围.
比如我现在设置一个哈希表 内容是这样的
hash = {13 => [[0,0], [-1, 0], [1, 0], [0, -1], [0, 1]]}
13是新扩展的 scope.其值是一个以相对坐标为数据的数组
所谓的未知点就是玩家手动选择的攻击目标.
比如玩家选择了 index 为 4 的敌人.计算出 4 对应的坐标是 1,1
然后循环这个相对坐标数组  [[0,0], [-1, 0], [1, 0], [0, -1], [0, 1]]
就能算出 5 个坐标.然后就可以找到实际要攻击的敌人.我写的这是个十字坐标.
当然了这是我的方法 你可以自己去寻找别的更高效更方便设置的方法

3.
武器和护甲的父类是 RPG::EquipItem
在 F1 里能找到相关说明. RPG:: 这样开头的都是 数据库 的内容 要去F1里找
要给装备增加新的属性  可以在这个类里定义.
然后具体可以参考 mhp mmp 看默认脚本是怎么把装备属性算进角色能力里去的
至于每回合回复
可以去 Scene_Battle 的 turn_end 里加句子

4.修改 Game_Party 的 battle_members











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
15
 楼主| 发表于 2012-12-17 22:30:24 | 只看该作者
后知后觉 发表于 2012-12-14 18:31
直接定义 方法3 就可以了
如果再次定义方法1 方法2 的话 .就会有替换覆盖的作用.
很多脚本冲突就是因为  ...

大神您好,又要麻烦您了。

是这样了,我看到您写过装备脚本,我下一步也打算从装备脚本和战斗系统动刀。

问题1:  初期的想法是这样的,系统中人物的八围 血 魔 物攻 物防 魔攻 魔防 敏捷 幸运

可以被看作是 血 魔 力量 体质 智力 精神 敏捷 幸运 对应三个攻击属性 三个防御属性

我是这么想的,如果想做出职业特色来,就需要让不同的属性决定某种职业的技能伤害或者技能加成。

如 战士这个职业,力量在增加伤害的同时,还增加爆击伤害 表问默许脚本里有没有关于属性换算的部分,比如多少敏捷折算成1%的爆击神马的。


问题 2 战斗系统的描述,我想仿魔力宝贝,增加战斗距离和格子攻击的概念。

具体的描述是这样的:


敌人方画出一个3 * 5矩阵 我方是 3 * 3 的矩阵

敌敌敌
敌 我我我
敌敌敌 我我我
敌 我我我
敌敌敌

当第一排有敌人时 不能攻击到后一排的敌人。

然后也可以定义技能的攻击距离 如弓术和魔法可以不受战斗距离限制。

技能的攻击除了单体和全体外,还可以增加十字攻击 或者打击一排这种。

不求您能告诉我写的方法,我想知道我应该需要先读哪一部分的脚本,如果这么写,会不会影响到重新编写AI?。

问题 3 这个相对简单一点

新的战斗资源 能量 EP值  每回合固定恢复40 最大值100 可以受到一些装备的加成 如 增加到110 同时这个人也使用法力。所以 不能用MP值山寨。

需要找到哪一部分脚本,然后在技能中如何设置?应该是修改备注吧。

问题 4 宠物系统的思路。

我的想法是
1 用不着抓宠物 完全是任务获得 然后再通过任务进化宠物。(脚本解决 无须多言 )

2 宠物和队友一样 但宠物不出现在菜单中 只在特定列表中出现,这个目前我也能做到。

3 宠物也是队友 但不出现在队友的火车中

4 六个人加上三只宠物 队伍一共九人 宠物自动战斗 不需要人来控制。
  但 队伍中的位置需要分人 人物位置 和宠物位置 宠物超过三只 人物超过六人 则不能入队。

以上四个问题比较复杂,如果大神时间 紧张 告诉我需要读哪部分的脚本,我自己找找看。

不知大神还有什么其它的联系方式?
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6930
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

14
发表于 2012-12-14 18:31:35 | 只看该作者
本帖最后由 后知后觉 于 2012-12-14 18:42 编辑
dujian15 发表于 2012-12-14 14:35
我想给一个类制作一个新的方法。

比如,在默认脚本中,有一个


直接定义 方法3 就可以了
如果再次定义方法1 方法2 的话 .就会有替换覆盖的作用.
很多脚本冲突就是因为 他们对某个默认脚本中的同一方法都进行了再定义.而实际情况只会以最后一次定义为准.
也就是更靠近 Main 脚本的地方

还有种情况就是在现有基础上给某方法增加点内容.而不是完全替换
可以用  alias 取别名
这是我自装备系统里的一小段

  1.   alias hzhj_equip_system_param_plus param_plus
  2.   def param_plus(param_id)
  3.     plus = hzhj_equip_system_param_plus(param_id)
  4.     val = equips.compact.inject(plus) {|r, e| r += e.gps[param_id] }
  5.     val + RPG::EquipItem.esp(equip_set, param_id)
  6.   end
复制代码
作用就是在现有 param_plus 的效果上追加一点内容











你知道得太多了

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-6-16 00:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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