Project1

标题: 物品自动储存 [打印本页]

作者: TERENCE    时间: 2008-2-23 09:38
标题: 物品自动储存
经事件触发后玩家的所得物品能全部自动储存(並全部失去),
再经由事件触发后玩家之前的所得物品能全部自动还原(不影响后来的所得物品)。

这种效果怎么做??
(\跟物品银行大不同/)

[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 越前リョーマ    时间: 2008-2-23 18:16
物品毕竟不是事件能够控制的……
作者: IamI    时间: 2008-2-23 18:33
LS那不是传说中的水吗?= =
纯理论上要建立一个表来保存被收走的物品,但是,最麻烦的是,这种变量存盘以后就化作一缕青烟了,如果这个问题能解决的话,那么也不难。
作者: TERENCE    时间: 2008-2-23 18:33
以下引用越前リョーマ于2008-2-23 10:16:49的发言:

物品毕竟不是事件能够控制的……

如果用脚本那要怎么写??

作者: 越前リョーマ    时间: 2008-2-23 18:36
超过事件思想的范围……

提取各个持有物品的编号和分别拥有的数量,
物品全部消失(一句话脚本就可以了)。
取时——提取原来提取好的各个持有物品的编号的物品增加数量。

PS。……好吧,我说的全是废话……
作者: TERENCE    时间: 2008-2-23 18:50
以下引用越前リョーマ于2008-2-23 10:36:43的发言:

超过事件思想的范围……

提取各个持有物品的编号和分别拥有的数量,
物品全部消失(一句话脚本就可以了)。
取时——提取原来提取好的各个持有物品的编号的物品增加数量。

PS。……好吧,我说的全是废话……

重点就是要如何提取!!
如果有N种物品,那岂不是要用2*N个变量来存。
{/gg}汗~
作者: TERENCE    时间: 2008-2-23 18:58

以下引用IamI于2008-2-23 10:55:00的发言:

准备动手(不保证完成),先问2个问题:
一、XP还是VX?
二、存储在哪个地方?(或者干脆禁止存盘,这样完工几率大一些)

如果要自己动手的话,那么思想很简单,物品不用保存,数量存至一个$Array,那么就是多少物品ID多少数量。

1.XP
2.(什么是存储在哪个地方?)
作者: TERENCE    时间: 2008-2-23 18:59
改悬赏:完成脚本者VIP+1
作者: IamI    时间: 2008-2-23 19:02
存盘的时候
    Marshal.dump($game_system, file)
    Marshal.dump($game_switches, file)
    Marshal.dump($game_variables, file)
    Marshal.dump($game_self_switches, file)
    Marshal.dump($game_screen, file)
    Marshal.dump($game_actors, file)
    Marshal.dump($game_party, file)
    Marshal.dump($game_troop, file)
    Marshal.dump($game_map, file)
    Marshal.dump($game_player, file)

就只存这么点东西……为了防止数据丢失,那么要存哪里捏?
PS:不管存哪里都必动脚本
还有,收完50%税VIP值有半点~
作者: TERENCE    时间: 2008-2-23 19:07
$game_player可行吗?
作者: IamI    时间: 2008-2-23 19:18
占楼,估计要大概10分钟(不保证完成)
作者: yangff    时间: 2008-2-23 19:23
class Game_Party
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :actors                   # 角色
  attr_reader   :gold                     # 金钱
  attr_reader   :steps                    # 步数
  attr_accessor :items                    # - -
end
使用:
保存:
save_data($game_party.items,保存的文件名)
$game_party.items = {}
读取:
a = load_data(保存的文件名)
$game_party.items = a
---------------------------------------------
如要删除:
File.delete(保存的文件名)
作者: IamI    时间: 2008-2-23 19:27
看样子我得不需要了呢……呵呵
添加脚本:
class Game_Party
  alias old_init initialize
  def initialize
    old_init
    @saves = {}
  end
  def all_in_save
    for i in @items.keys
      @saves = @items
      @items.delete(i)
    end
  end
  def all_in_item
    for i in @saves.keys
      if @items == nil
        @items = @saves
      else
        @items += @saves
      end
      @saves.delete(i)
    end
  end
  def all_delete
    @saves = {}
  end
end

全转:$game_party.all_in_save
全转回:$game_party.all_in_item
全删:$game_party.all_delete
最后还是用了party阿……
顺便说一句LS,那个……你会把中间得到的物品全覆盖掉的……
作者: yangff    时间: 2008-2-23 19:39
LS你登火星、上飞机、关机、砸电脑后会。。。。
作者: TERENCE    时间: 2008-2-23 19:40
以下引用IamI于2008-2-23 11:27:33的发言:

看样子我得不需要了呢……呵呵
添加脚本:

class Game_Party
alias old_init initialize
def initialize
   old_init
   @saves = {}
end
def all_in_save
   for i in @items.keys
     @saves = @items
     @items.delete(i)
   end
end
def all_in_item
   for i in @saves.keys
     if @items == nil
       @items = @saves
     else
       @items += @saves
     end
     @saves.delete(i)
   end
end
def all_delete
   @saves = {}
end
end


全转:$game_party.all_in_save
全转回:$game_party.all_in_item
全删:$game_party.all_delete
最后还是用了party阿……
顺便说一句LS,那个……你会把中间得到的物品全覆盖掉的……


[本贴由作者于 2008-2-23 11:31:51 最后编辑]

这样是可行的,但武器和防具就不行了。
作者: IamI    时间: 2008-2-23 19:42
to yangff
好了,不开玩笑了,LZ正在版务大吵大闹(其实没那么严重),问你一下,VB的动态连接库怎么做?在VS里翻了N久没找到……(回答请PM我好吗……)
还有LZ,要武器和防具的话我帮你再写好了,反正现在闲得慌.,要全部转移?
作者: TERENCE    时间: 2008-2-23 19:57
以下引用IamI于2008-2-23 11:42:22的发言:

还有LZ,要武器和防具的话我帮你再写好了,反正现在闲得慌.,要全部转移?

角色正在装备的武器和防具不转移(不自动储存)。
Thanks!!
作者: IamI    时间: 2008-2-23 20:09
感觉就好像在抄……
class Game_Party
  alias old_init initialize
  def initialize
    old_init
    @saves = {}
    @saveW = {}
    @saveA = {}
  end
  def all_in_save
    for i in @items.keys
      @saves = @items
      @items.delete(i)
    end
    for i in @weapons.keys
      @saveW = @weapons
      @weapons.delete(i)
    end
    for i in @armors.keys
      @saveA = @armors
      @armors.delete(i)
    end
  end
  def all_in_item
    for i in @saves.keys
      if @items == nil
        @items = @saves
      else
        @items += @saves
      end
      @saves.delete(i)
    end
    for i in @saveW.keys
      if @weapons == nil
        @weapons = @saveW
      else
        @weapons += @saveW
      end
      @saveW.delete(i)
    end
    for i in @saveA.keys
      if @armors == nil
        @armors = @saveA
      else
        @armors += @saveA
      end
      @saveA.delete(i)
    end     
  end
  def all_delete
    @saves = {}
    @saveW = {}
    @saveA = {}
  end
end
方法不变,三个整合在一起了(可以吗?)
遵照约定,角色身上的装备没有扒 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: TERENCE    时间: 2008-2-23 20:20
OK!正确无误~~
感谢IamI~
(现在我在版务区争取选赏VIP回覆)
作者: TERENCE    时间: 2008-2-24 00:57
选赏VIP回覆,履行承诺!
感谢IamI解答~
{/hx}
作者: IamI    时间: 2009-6-12 08:00
准备动手(不保证完成),先问2个问题:
一、XP还是VX?
二、存储在哪个地方?(或者干脆禁止存盘,这样完工几率大一些)

如果要自己动手的话,那么思想很简单,物品不用保存,数量存至一个$Array,那么就是多少物品ID多少数量。




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