赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 2977 |
最后登录 | 2020-5-5 |
在线时间 | 5 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 60
- 在线时间
- 5 小时
- 注册时间
- 2008-6-28
- 帖子
- 292
|
- #=============================================================================
- #定义城市内容的类,在游戏中可以调用,作为游戏中的城市载体而存在。。。实质上一个
- #城市的模板,全原创的定义,基本都是自己写脚本。因为rm本身是没有城市这个概念的。
- # ------- by:lhbadsl
- #=============================================================================
- class Lhbadsl_City_Base
- #--------------------------------------------------------------------------
- # ● 定义实例变量
- # 城市的主要参数是:金,民心,人口和可征兵数。
- #--------------------------------------------------------------------------
- attr_accessor :name # 城市名
- attr_accessor :level_original # 城市初始等级
- attr_accessor :level_max # 城市最高等级
- attr_accessor :level_plus # 城市等级修正
- attr_accessor :space # 城市空地数目
- attr_accessor :gold_original # 城市初始金
- attr_accessor :gold_plus # 城市金修正量
- attr_accessor :tax # 城市税率
- attr_accessor :people_original # 城市初始人口
- attr_accessor :people_plus # 城市人口修正量
- attr_accessor :burn_rate # 城市人口生育率
- attr_accessor :house_list_original # 城市可新建屋子列表
- attr_accessor :house_list # 城市已建成屋子列表
- attr_accessor :leader # 城主
- attr_accessor :belong # 城市阵营
- attr_accessor :occupy_time # 城市被占领时间
- attr_accessor :draft_rate # 可征兵占人口的比例
- attr_accessor :draft_plus # 可征兵修正量
- attr_accessor :morale_original # 城市初始民心
- attr_accessor :morale_plus # 城市民心修正量
- attr_accessor :morale_max # 民心极限
- attr_accessor :guard_original # 守城防御加成(城防初始值)
- attr_accessor :guard_plus # 城防修正量
- attr_accessor :guard_max # 城防最大值
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # 首先这个base_city只是城市的一个模型,所以它的所有初始参数都是空的,要在后
- # 面详细定义其参数后才可以叫做城市,而每个城市的参数都是不同的。。。其他的
- # 四大属性之类的表象,都是使用函数来表达的。。。。。。。。
- #--------------------------------------------------------------------------
- def initialize
- @name = ""
- @level_original = 0
- @level_max = 0
- @level_plus = 0
- @space = 0
- @gold_original = 0
- @gold_plus = 0
- @tax = 0
- @people_original = 0
- @people_plus = 0
- @burn_rate = 0
- #------------------------------------------------------------------------
- #可新建屋子在这里是可以自定义的,其中-1代表空房子,0~9代表不同的屋子,还
- #没有在这里完整的定义。
- #------------------------------------------------------------------------
- @house_list_original = []
- @house_list = []
- @leader = ""
- #-----------------------------------------------------
- #城市的阵营,0代表魏,1代表蜀,2代表吴,-1代表空白都市
- #-----------------------------------------------------
- @belong = -1
- @occupy_time = 0
- @draft_rate = 0
- @draft_plus = 0
- @draft = 0
- @morale_original = 0
- @morale_plus = 0
- @morale = 0
- @morale_max = 0
- @guard_original = 0
- @guard_plus = 0
- @guard = 0
- @guard_max = 0
- end
- end
- #=============================================================================
- #城市基本数据库类,这里定义了所有城市的原始数据,要和前面的城市模板类结合定义
- #再导入到城市群类中,就可以建立起庞大的城市群了。。。因为rm默认数据库里是没有
- #城市这个概念的,所以它的所有原始数据都必须用脚本数据库来定义,设定比较复杂。
- #定义使用的数据结构是数组。下面是它的基本结构:
- #基本结构:[1,名字;2,等级;3,最高等级;4,空地数目;5,初始金;
- #7,税率;8,初始人口;10,生育率;16,征兵率;18,初始民心;
- #20,民心最大值;21,初始城防;
- #23,最大城防]
- # ------------ by:lhbadsl
- #=============================================================================
- class Lhbadsl_City_Date
- attr_accessor :index
- attr_accessor :city_array
- def initialize(index)
- @index = index
- @city_array = date(@index)
- return @city_array
- end
- def date(index)
- case index
- when 0
- return ["徐州",0,3,4,100,0.1,20000,0.1,[1,2,3],0.1,60,100,500,2000]
- end
- end
- end
- #=============================================================================
- #城市数据处理的类别,主要是用来建立起单个的城市,本质就是把上面两个类数据合并
- #而特地定义的一个混合函数。。。本类主要在Lhbadsl_City_Group类的内部使用。。。
- # ------------ by:lhbadsl
- #=============================================================================
- class Lhbadsl_City_Single < Lhbadsl_City_Base
- def initialize(index)
- super()
- @index = index
- city = Lhbadsl_City_Date.new(@index).city_array
- @name = city[0]
- @level_original = city[1]
- @level_max = city[2]
- @level_plus = 0
- @space = city[3]
- @gold_original = city[4]
- @gold_plus = 0
- @tax = city[5]
- @people_original = city[6]
- @people_plus = 0
- @burn_rate = city[7]
- @house_list_original = city[8]
- @house_list = []
- @leader = ""
- @belong = -1
- @occupy_time = 0
- @draft_rate = city[9]
- @draft_plus = 0
- @morale_original = city[10]
- @morale_plus = 0
- @morale_max = city[11]
- @guard_original = city[12]
- @guard_plus = 0
- @guard_max = city[13]
- end
- end
- #=============================================================================
- #城市群类,这个类是按照City_Base的定义和城市数据库类的原始定义而自行建立的,在
- #游戏事件中,随时可以引用的城市表象类。。一切对城市的操作都要引用这个类。。实
- #例在scene_title类中定义,是为了所有的地方都可以引用,并且这个类的处理实在存档
- #之后和读档之前的,可以使到城市类能够储存在save中。。。。。
- # ------------ by:lhbadsl
- #=============================================================================
- class Lhbadsl_City_Group
- attr_accessor :max_index #这个是实际上脚本城市数据库的最大项目数
- attr_accessor :temp_array
- attr_accessor :citys
- attr_accessor :gold
- def initialize
- @max_index = 1
- for i in 0...@max_index
- @citys = []
- city_single = Lhbadsl_City_Single.new(i)
- @gold = city_single.gold_original
- @people = city_single.people_original
- #-------------------0------------------------1-----------------------2----------------------3----------------------4-----------------5-------------------------6---------------------7---------------8---------------------------9----------------------10--------------------11------------------------------12---------------------13-----------------14-----------------15-----------------------16---------------------17---------------------18--------------------------19----------------------20---------------------21-------------------------22---------------------23-----------24-----25--
- @temp_array = [city_single.name,city_single.level_original,city_single.level_max,city_single.level_plus,city_single.space,city_single.gold_original,city_single.gold_plus,city_single.tax,city_single.people_original,city_single.people_plus,city_single.burn_rate,city_single.house_list_original,city_single.house_list,city_single.leader,city_single.belong,city_single.occupy_time,city_single.draft_rate,city_single.draft_plus,city_single.morale_original,city_single.morale_plus,city_single.morale_max,city_single.guard_original,city_single.guard_plus,city_single.guard_max,@gold,@people]
- @citys.push(@temp_array)
- end
- end
- #-----------------------------------------
- #破城。。。。。。。
- #-----------------------------------------
- def breakcity(index)
- @citys[index][15] = 0
- @citys[index][24] = @citys[index][5]
- @citys[index][25] = @citys[index][8]
- end
- #-----------------------------------------
- #占领城市
- #-----------------------------------------
- def occupy(index)
- @citys[index][15] = $game_party.steps.to_i
- end
- #-----------------------------------------
- #获得现在金。。。。。
- #-----------------------------------------
- def gold(index)
- if @citys[index][15] != 0
- g = @citys[index][24] + ($game_party.steps.to_i - @citys[index][15]) * @citys[index][7] * @citys[index][25]/1000
- @citys[index][24] = g
- end
- end
- #-----------------------------------------
- #获得现在人口
- #-----------------------------------------
- def people(index)
- if @citys[index][15] != 0
- p = @citys[index][25] + ($game_party.steps.to_i - @citys[index][15]) * @citys[index][10]
- @citys[index][25] = p
- end
- end
-
- #---------------------------------------------------------------------------
- #用于更新数据而已。。。。
- #---------------------------------------------------------------------------
- def update
- for i in 0...@max_index
- self.people(i)
- self.gold(i)
- if @citys[i][15] != 0
- @citys[i][15] = $game_party.steps.to_i
- end
- end
- end
- end
复制代码
其实这样就可以定义一个房子的“内在”类别了。。。。。。。。。。不过要用事件来配合,楼主这个正是和我的表象方法想到了一块。。。。真是同感同感。。。。。。给点技术上的支持给你,参考下。。。。虽然不是同样一种东西,可是脚本大概是这样做的。。。 |
|