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

Project1

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

[已经解决] 如何更改武器属性而不影响数据库属性?

[复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
5 小时
注册时间
2009-10-31
帖子
22
跳转到指定楼层
1
发表于 2010-9-6 20:53:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv4.逐梦者

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

贵宾

2
发表于 2010-9-6 23:24:04 | 只看该作者
其实这个效果是一个很常见的效果
但是默认的却是以 物品、武器、防具、特技的 ID
来作为 hash 的主键.
这样一来想要做相同ID的同类道具的话就很麻烦.
因为这个牵涉到太多太多的东西了.
首先是角色要记录的不是武器的ID号.而是那个武器的对象.
然后修改角色属性的计算定义.
修改 道具的持有数. 计算方式
然后要改物品场景.装备场景.战斗场景(物品、特技的使用).商店场景.
以及事件解释器(Interpreter)的和这些道具的增减有关的内容可能都需要更改.

结论就是你自己不会写的话就去找找现成的 装备打造/锻造/随机属性/强化
找这类的脚本参考参考...

还个事件的方法就是...
武器1号叫 铜剑.
武器2号叫 铜剑+1
武器3号叫 铜剑+2
....
传说中的雷死人不偿命就是说的这个了.

点评

moy
雷死人不偿命的东西往往很实在......  发表于 2010-9-7 01:24

评分

参与人数 1星屑 +200 收起 理由
六祈 + 200 认可答案

查看全部评分












你知道得太多了

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42404
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

3
发表于 2010-9-7 08:52:43 | 只看该作者
回复 kirbym 的帖子


    可以制造一个武器,再取走原来的武器.
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
288
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

4
发表于 2010-9-7 09:52:52 | 只看该作者
本帖最后由 铃仙·优昙华院·因幡 于 2010-9-7 10:01 编辑

weapon = $game_party.actors[0].weapon_id
new_weapon = $data_weapons[weapon].dup
new_weapon.name = "铜剑+1"

最好是对某个具体的武器来修改,这个不会影响原数据库里的武器信息。

$data_weapons[$data_weapons.size] = new_weapon

然后再往数据库里添加,最后保存到文件里去。

---------------------------------------------------------------
我好早好早之前坑掉的一个道具合成脚本的思路就是这样的。

不过这样有的问题就是对后面添加的序号很混乱,虽然在ID 999之前的道具会被 RM 显示出来,但是数据库是变动的,要想添加后面的道具就很麻烦。

=============================

另一种做法不许呀修改数据库,不过要改的地方也比较多, 思路是这样的:
1. 先在对应的类(比如 RPG::Weapon)里添加一些属性,比如每级增加的属性数;
2. 修改其中某一条属性,比如 武器说明, 改成 [武器说明, 强化次数]
3. 修改 2 中修改的属性的读接口, 比如  description , 可以改成这样
   def description
        return description[0]
    end
4. 在获取道具相关数据的时候,做数据修正调整就好
5. 为人物添加道具的时候,修改之前的属性就好。

不过也有一个问题就是 在显示的时候,需要分开~~~~

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1030
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

5
发表于 2010-9-7 11:19:30 | 只看该作者
這不是甚麼新技術……

    id = $game_party.actors[0].weapon_id
    new_weapon = $data_weapons[id].clone
    new_weapon.id = $data_weapons.size
    $data_weapons << new_weapon
    $data_weapons[-1].name = "铜剑+1"
    $game_party.actors[0].equip(0, new_weapon.id)
... on save
    Marshal.dump($data_weapons, file)
... on read
    $data_weapons        = Marshal.load(file)

大概就是這樣。簡單來說,就是把整個武器庫寫入存檔,在讀取記錄的時候覆蓋由默認武器庫來的數據,而不改變默認數據庫。

评分

参与人数 1星屑 +200 收起 理由
六祈 + 200 认可答案

查看全部评分

不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv4.逐梦者

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

贵宾

6
发表于 2010-9-7 13:31:54 | 只看该作者
本帖最后由 后知后觉 于 2010-9-7 13:33 编辑

额.这个思路到是没想过.省事了不少.
如果做的是.战斗后怪物掉的装备都是随机属性的话.那长篇游戏到后期.
这个的资源占用量就太大了.
毕竟这样的效果更适合于 长篇游戏.
只是做做装备强化/锻造这类的就是很好的做法了.

点评

这个貌似也很不错~~~  发表于 2010-9-8 21:09
那到是可以...哎.可惜我现在在做的系统已经按照之前的思路把这方面都改好了.= =我那是只要失去了引用(丢弃/卖出)就会被GC回收.  发表于 2010-9-7 14:02
考虑动态写新的数据库呀~~跟存档id有关的weaponx.data~~  发表于 2010-9-7 13:38











你知道得太多了

回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
5 小时
注册时间
2009-10-31
帖子
22
7
 楼主| 发表于 2010-9-8 21:05:57 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者

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

贵宾

8
发表于 2010-9-9 00:16:29 | 只看该作者
本帖最后由 后知后觉 于 2010-9-9 00:25 编辑

禾西 前辈不是已经都写出来了嘛.
如果还要再清楚一点的话.那你先说说你想要干嘛.

你说的 “给角色1一把铜剑”

这个 “给” 一字是个什么概念?

默认的系统所有角色可是共用 一个物品栏 的.

如果是更改已经装备上的武器的属性的话.那就是 禾西前辈 写的那样了












你知道得太多了

回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1030
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

9
发表于 2010-9-9 13:38:41 | 只看该作者
本帖最后由 禾西 于 2010-9-9 13:41 编辑
如果做的是.战斗后怪物掉的装备都是随机属性的话.那长篇游戏到后期.
这个的资源占用量就太大了.
后知后觉 发表于 2010-9-7 13:31


不知道說的是不是一個東西,但是如果覺得可能遊戲後期會有太多廢用武器的話,可以這樣考慮:
1.永遠不調用作為藍本的武器.也就是說即使是白板依然是副本而不是正本
2.在取得時加入數據庫,在失去時從數據庫中刪掉
3.按照上述的做法,後期會有很多指向nil的id.事實上用一個簡單的方法就能把這些空白id重新應用起來.方法就是
  1. for i in 1...$data_weapons.size+1
  2.   if $data_weapons[ i ].nil?
  3.     new_weapon.id = i
  4.     $data_weapons[i] = new_weapon
  5.   end
  6. end
复制代码
當然,以上的理論都與樓主的問題沒有多大關系……純有感而發罷了。

点评

是的……本來想寫的,但中途去了個廁所回來就忘記了(望天)  发表于 2010-9-9 14:35
找到一个nil之后是不是要break掉循环呢~~~  发表于 2010-9-9 14:25
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 20:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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