Project1

标题: 无法复制随机生成的武器!求解决 [打印本页]

作者: 木许许    时间: 2014-9-25 11:15
标题: 无法复制随机生成的武器!求解决
本帖最后由 木许许 于 2014-9-29 09:22 编辑

用了RY版的复制武器脚本,但是在主站上的打造随机武器工程中,复制随机生成的武器会出错:比如把生成的33号武器复制给3号
这是工程
Hao_新打造系统v1.1.rar (283.44 KB, 下载次数: 71)



复制武器脚本的脚本
  1. copy_weapon(原始武器ID, 目标武器ID)
复制代码
  1. def copy_weapon(from, to)
  2.   d = load_data("Data/Weapons.rxdata")
  3.   c = load_data("Data/Classes.rxdata")
  4.   d[to]=d[from].clone
  5.   d[to].id = to
  6.   c.each do |cl|
  7.     next if cl.nil?
  8.     cl.weapon_set.push(to) if cl.weapon_set.include?(from)
  9.   end
  10.   filename = "Data/Weapons.rxdata"
  11.   filename1 = "Data/Classes.rxdata"
  12.   file = File.open(filename, "wb")
  13.   file1 = File.open(filename1, "wb")
  14.   Marshal.dump(d,file)
  15.   Marshal.dump(c,file1)
  16.   file.close
  17.   file1.close
  18.   $data_weapons = load_data(filename)
  19.   $data_classes = load_data(filename1)
  20. end
复制代码
打造绝对属于自己的武器范例
http://6rweb.sinaapp.com/articles/4706
作者: chd114    时间: 2014-9-25 22:41
TypeError···你确定你的脚本没有写错什么吗?
作者: 木许许    时间: 2014-9-26 08:28
chd114 发表于 2014-9-25 22:41
TypeError···你确定你的脚本没有写错什么吗?

两个脚本分开使用没问题,放在一起用于复制打造出来的武器就出错
作者: chd114    时间: 2014-9-26 16:42
木许许 发表于 2014-9-25 15:28
两个脚本分开使用没问题,放在一起用于复制打造出来的武器就出错

那我下工程看下,不过我这里四开彩虹岛刚开始会有点卡···可能晚上给你弄好
作者: chd114    时间: 2014-9-26 19:34
你的数据库的武器最大种类数量设置问题,最大种类数量还是32,你那个复制的是33号,那个脚本判定的是不存在所以会出错,解决方法就是把武器数量设置改大,如果有很多武器的话最好改到999
作者: 牧徐徐    时间: 2014-9-26 21:00
chd114 发表于 2014-9-26 19:34
你的数据库的武器最大种类数量设置问题,最大种类数量还是32,你那个复制的是33号,那个脚本判定的是不存在 ...

那个新打造系统的脚本会自动在数据库末尾扩展一个武器位,我要复制的就是这个扩展出来的武器,所以把武器数量设置改得再大也没用
作者: chd114    时间: 2014-9-26 21:05
牧徐徐 发表于 2014-9-26 04:00
那个新打造系统的脚本会自动在数据库末尾扩展一个武器位,我要复制的就是这个扩展出来的武器,所以把武器 ...

我知道,但是你还是得自己手动设置扩展武器位,否则当然是不能复制的
作者: 木许许    时间: 2014-9-27 10:36
chd114 发表于 2014-9-26 21:05
我知道,但是你还是得自己手动设置扩展武器位,否则当然是不能复制的


那到底要怎么设才不会出错?
作者: chd114    时间: 2014-9-27 10:39
木许许 发表于 2014-9-26 17:36
那到底要怎么设才不会出错?

不偷懒,把数据库里的武器最大值改了就行
作者: 木许许    时间: 2014-9-28 09:34
chd114 发表于 2014-9-27 10:39
不偷懒,把数据库里的武器最大值改了就行


我说过了,改大了没用,就算改到999,新生成的武器编号就变成1000了!
作者: chd114    时间: 2014-9-28 22:11
木许许 发表于 2014-9-27 16:34
我说过了,改大了没用,就算改到999,新生成的武器编号就变成1000了!

放假我再把你脚本改下···
作者: 国产吃货    时间: 2014-9-29 00:19
楼主的思路是错误的。
复制随机生成的武器应该保存在存档里而不是数据库里。
作者: 木许许    时间: 2014-9-29 09:25
国产吃货 发表于 2014-9-29 00:19
楼主的思路是错误的。
复制随机生成的武器应该保存在存档里而不是数据库里。 ...

是不是应该修改这个复制的脚本?那这个脚本要怎么改成可以读取存档里的武器数据呢?
  1. def copy_weapon(from, to)
  2.   d = load_data("Data/Weapons.rxdata")
  3.   c = load_data("Data/Classes.rxdata")
  4.   d[to]=d[from].clone
  5.   d[to].id = to
  6.   c.each do |cl|
  7.     next if cl.nil?
  8.     cl.weapon_set.push(to) if cl.weapon_set.include?(from)
  9.   end
  10.   filename = "Data/Weapons.rxdata"
  11.   filename1 = "Data/Classes.rxdata"
  12.   file = File.open(filename, "wb")
  13.   file1 = File.open(filename1, "wb")
  14.   Marshal.dump(d,file)
  15.   Marshal.dump(c,file1)
  16.   file.close
  17.   file1.close
  18.   $data_weapons = load_data(filename)
  19.   $data_classes = load_data(filename1)
  20. end
复制代码

作者: 牧徐徐    时间: 2014-10-8 09:14
历时9天之顶
作者: chd114    时间: 2014-10-8 23:05
木许许 发表于 2014-9-28 16:25
是不是应该修改这个复制的脚本?那这个脚本要怎么改成可以读取存档里的武器数据呢? ...

你那个装备生成不是直接新建一个ID生成,而是判断从前往后数,没有设定的那个装备的ID那里开始设置,比如你数据库扩到了999个,只有前31个武器有设置,后面的没设置,那么新生成的是从第32个开始而不是从第1000个开始
作者: zxcgood2009    时间: 2014-10-9 23:40
因为我实在是不会脚本,所以根本不会改你的脚本,
不过我觉得你没必要弄的那么复杂,直接把武器+1就好了啊,这样就有2件了。
闲的蛋疼我用Scene_Item删除了好多好多,改了一个希望不要骂我坑啊。
你看一下这种方法解决你的问题

全新打造系统v1.1.zip

305.8 KB, 下载次数: 37


作者: 木许许    时间: 2014-10-10 08:17
chd114 发表于 2014-10-8 23:05
你那个装备生成不是直接新建一个ID生成,而是判断从前往后数,没有设定的那个装备的ID那里开始设置,比如 ...

错,如果我扩到了999个,只有前31个武器有设置,在数据库生成的新武器是1000号,再生成一次就是1001号
作者: 木许许    时间: 2014-10-10 09:25
zxcgood2009 发表于 2014-10-9 23:40
因为我实在是不会脚本,所以根本不会改你的脚本,
不过我觉得你没必要弄的那么复杂,直接把武器+1就好了啊 ...

谢谢!我希望可以复制一件随机生成的武器到一个数据库的空白位置(比如40号),用来作为中转物品,而不是武器+1,最后目的其实是不同存档的角色共享一件随机生成的武器,所以其它的问题诸如数据库继承之类先不考虑,第一步先想实现复制随机武器的所有属性给40号武器
作者: 木许许    时间: 2014-10-17 11:48
7天又过去了
作者: 木许许    时间: 2014-10-24 12:00
又是7天~
作者: 木许许    时间: 2014-11-5 11:52
12天~~~~~~~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1