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

Project1

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

[已经解决] 数组怎么递进,怎么和系统变量运算

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2015-12-11
帖子
6
跳转到指定楼层
1
发表于 2015-12-11 22:10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 RyanBern 于 2015-12-27 09:51 编辑

我要建个数组,数组中每个单元,依次和系统变量进行运算,结果判定是否进入下个循环。现在循环停不上来。对不起,新人还是不能理解。我想要的是,数组与变量11的差值,要显示出来的,另外,差值小于等于0时,lv+1
这样的效果,大神门例子写完后,用菜单test1测试一下结果。谢谢。

请教育各位大神帮忙看看。{:2_280:}
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_Check
  3. #------------------------------------------------------------------------------
  4. #  显示评分画面窗口。
  5. #==============================================================================
  6.  
  7. class Window_Check < Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #     actor : 角色
  11.   #--------------------------------------------------------------------------
  12.   def initialize(actor)
  13.     super(0, 0, 620, 480)
  14.     self.contents = Bitmap.new(width - 18, height - 18)
  15.     @actor = actor
  16.     self.contents.font.size = 20
  17.     $v = 0
  18.     refresh
  19.  
  20.   end
  21.  
  22.  
  23.   #--------------------------------------------------------------------------
  24.   # ● 刷新
  25.   #--------------------------------------------------------------------------
  26.   def refresh
  27.     self.contents.clear  
  28.  
  29.      #——定义
  30.  
  31.      $lastexp = [10,20,30,40,50,60,70,80,90,100]
  32.  
  33.      $lvexp = $lastexp[$v].to_i - $game_variables[11]
  34.      if $lvexp <= 0
  35.        $game_variables[15]+=1
  36.       $v+=1
  37.      end  
  38.  
  39.     #——lv
  40.     self.contents.font.color = system_color
  41.     self.contents.draw_text(120, 50, 128, 28, "lv")
  42.     self.contents.font.color = normal_color
  43.     self.contents.draw_text(200, 50, 80, 28, $game_variables[15] .to_s, 2)
  44.  
  45.      #——lvexp
  46.     self.contents.font.color = system_color
  47.     self.contents.draw_text(120, 85, 128, 28, "lvexp")
  48.     self.contents.font.color = normal_color
  49.  
  50.     self.contents.draw_text(200, 85, 70, 28, $lvexp .to_s,2)
  51.  
  52.      #——描绘lastexp   
  53.     self.contents.font.color = system_color
  54.     self.contents.draw_text(120, 15, 128, 28,"nowexp")
  55.     self.contents.font.color = normal_color
  56.     self.contents.draw_text(190, 15, 100, 28, $game_variables[11] .to_s, 2)
  57.  
  58.  
  59.     #——挑战关卡次数
  60.     def totalcs
  61.     @totalcs = $game_variables[255]+$game_variables[265]+$game_variables[285]
  62.     end
  63.     self.contents.font.color = system_color
  64.     self.contents.draw_text(330,15,128,28,"挑战关卡次数")
  65.     self.contents.font.color = normal_color
  66.     self.contents.draw_text(380,15,120,28, totalcs.to_s, 2)
  67.     self.contents.draw_text(520,15,100,28, "次")
  68.  
  69.     #——成功关卡次数
  70.     def totalvs
  71.     @totalvs = $game_variables[256]+$game_variables[266]+$game_variables[286]
  72.     end
  73.     self.contents.font.color = system_color
  74.     self.contents.draw_text(330,50,128,28,"成功关卡次数")
  75.     self.contents.font.color = normal_color
  76.     self.contents.draw_text(380,50,120,28, totalvs.to_s, 2)
  77.     self.contents.draw_text(520,50,100,28, "次")
  78.  
  79.  
  80.  
  81.  
  82.   end #def refresh
  83. end   #class

test01.rar

343.4 KB, 下载次数: 2

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

2
发表于 2015-12-11 22:29:04 | 只看该作者
本帖最后由 cinderelmini 于 2015-12-11 22:32 编辑
  1. #==============================================================================
  2. # ■ Window_Check
  3. #------------------------------------------------------------------------------
  4. #  显示评分画面窗口。
  5. #==============================================================================

  6. class Window_Check < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     actor : 角色
  10.   #--------------------------------------------------------------------------
  11.   def initialize(actor)
  12.     super(0, 0, 620, 480)
  13.     self.contents = Bitmap.new(width - 18, height - 18)
  14.     @actor = actor
  15.     self.contents.font.size = 20
  16.     $lastexp = [10,20,30,40,50,60,70,80,90,100]
  17.     $lvexp = 0
  18.     refresh

  19.   end
  20.   

  21.   #--------------------------------------------------------------------------
  22.   # ● 刷新
  23.   #--------------------------------------------------------------------------
  24.   def refresh
  25.     self.contents.clear  
  26.    
  27.      #——定义

  28.      for lexp in $lastexp.dup
  29.        if lexp > $game_variables[11]
  30.          break
  31.        else
  32.          $lvexp = lexp - $game_variables[11]
  33.          $game_variables[15]+=1
  34.        end  
  35.      end  
  36.    
  37.     #——lv
  38.     self.contents.font.color = system_color
  39.     self.contents.draw_text(120, 50, 128, 28, "lv")
  40.     self.contents.font.color = normal_color
  41.     self.contents.draw_text(200, 50, 80, 28, $game_variables[15] .to_s, 2)
  42.    
  43.      #——lvexp
  44.     self.contents.font.color = system_color
  45.     self.contents.draw_text(120, 85, 128, 28, "lvexp")
  46.     self.contents.font.color = normal_color
  47.    
  48.     self.contents.draw_text(200, 85, 70, 28, $lvexp .to_s,2)
  49.    
  50.      #——描绘lastexp   
  51.     self.contents.font.color = system_color
  52.     self.contents.draw_text(120, 15, 128, 28,"nowexp")
  53.     self.contents.font.color = normal_color
  54.     self.contents.draw_text(190, 15, 100, 28, $game_variables[11] .to_s, 2)

  55.    
  56.     #——挑战关卡次数
  57.     totalcs = $game_variables[255]+$game_variables[265]+$game_variables[285]
  58.     self.contents.font.color = system_color
  59.     self.contents.draw_text(330,15,128,28,"挑战关卡次数")
  60.     self.contents.font.color = normal_color
  61.     self.contents.draw_text(380,15,120,28, totalcs.to_s, 2)
  62.     self.contents.draw_text(520,15,100,28, "次")
  63.    
  64.     #——成功关卡次数
  65.     totalvs = $game_variables[256]+$game_variables[266]+$game_variables[286]
  66.     self.contents.font.color = system_color
  67.     self.contents.draw_text(330,50,128,28,"成功关卡次数")
  68.     self.contents.font.color = normal_color
  69.     self.contents.draw_text(380,50,120,28, totalvs.to_s, 2)
  70.     self.contents.draw_text(520,50,100,28, "次")
  71.    

  72.    
  73.    
  74.   end #def refresh
  75. end   #class
复制代码
这样?

评分

参与人数 1星屑 +150 收起 理由
myownroc + 150 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2015-12-11
帖子
6
3
 楼主| 发表于 2015-12-12 09:42:17 | 只看该作者
cinderelmini 发表于 2015-12-11 22:29
这样?

不行,测试test1时,变量11刷新变化后,刷新1新,等级就升一次,另外,数组的值还是第一个位置。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
451
在线时间
228 小时
注册时间
2015-2-23
帖子
241
4
发表于 2015-12-12 14:38:58 | 只看该作者
本帖最后由 枫の叶 于 2015-12-12 18:04 编辑

不知道是不是我理解错误,
楼主是不是先定义一个经验的数组,然后根据变量11号的值来判断等级,那么可以这样
  1. $lastexp = [10,20,30,40,50,60,70,80,90,100]
  2. now_lv = 1
  3. unless $game_variables[11] == 0
  4.   $lastexp.each do |i|
  5.     if (i / $game_variables[11]) == 1
  6.       now_lv = $lastexp.index(i) + 2
  7.       break
  8.     end
  9.   end
  10. end
  11. return now_lv
复制代码
now_lv 就是等级。
制作XP特效,找我。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2015-12-11
帖子
6
5
 楼主| 发表于 2015-12-13 09:54:35 | 只看该作者
枫の叶 发表于 2015-12-12 14:38
不知道是不是我理解错误,
楼主是不是先定义一个经验的数组,然后根据变量11号的值来判断等级,那么可以这 ...

数组中值是下级经验,变量11的变化,来升级,等级变化后,数组进入下个值。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
451
在线时间
228 小时
注册时间
2015-2-23
帖子
241
6
发表于 2015-12-13 17:54:58 | 只看该作者
本帖最后由 枫の叶 于 2015-12-13 17:57 编辑

数组中的值每个单元对应一级的经验,只是一个模板,不用依照当前经验让它进入下一个值,
只需要用当前经验依次与它的每个单元比对就行了。
可以把下面的方法放入你的那个窗口里,获取的等级就是 lv_count 。


RUBY 代码复制
  1. def lv_count
  2.   lastexp = [10,20,30,40,50,60,70,80,90,100]
  3.   now_lv = 1
  4.   lastexp.each do |i|
  5.     if $game_variables[11] >= i
  6.       now_lv = lastexp.index(i) + 2
  7.       break
  8.     end
  9.   end
  10.   return now_lv
  11. end
制作XP特效,找我。
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

7
发表于 2015-12-13 21:35:32 | 只看该作者
接楼上,另一种写法:
RUBY 代码复制
  1. def lv_count
  2.   lastexp = [10,20,30,40,50,60,70,80,90,100]
  3.   lvl = lastexp.index{|x| x > $game_variables[11]}
  4.   lvl.nil? ? lastexp.size + 1 : lvl + 1
  5. end

评分

参与人数 1星屑 +150 收起 理由
myownroc + 150 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2015-12-11
帖子
6
8
 楼主| 发表于 2015-12-14 10:09:10 手机端发表。 | 只看该作者
RyanBern 发表于 2015-12-13 21:35
接楼上,另一种写法:
def lv_count
  lastexp = [10,20,30,40,50,60,70,80,90,100]

对不起,新人还是不能理解。我想要的是,数组与变量11的差值,要显示出来的,另外,差值小于等于0时,lv+1
这样的效果,大神门例子写完后,用菜单test1测试一下结果。谢谢。

点评

还是木有搞懂。可以说大概效果,不要只说一点细节。或许有其他方法。  发表于 2015-12-14 18:18
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2015-12-11
帖子
6
9
 楼主| 发表于 2015-12-14 20:36:46 | 只看该作者
小虾米上学 发表于 2015-12-14 10:09
对不起,新人还是不能理解。我想要的是,数组与变量11的差值,要显示出来的,另外,差值小于等于0时,lv+ ...

我想要的效果是:类似声望等级效果,需要人物达到一定声望,才能提升声望等级,才能开通一些地图FB,希望通过做任务得到声望值(V11变量),希望建立声望经验的判定数组的。还能看出差多少经验,声望升级。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
451
在线时间
228 小时
注册时间
2015-2-23
帖子
241
10
发表于 2015-12-14 22:03:35 | 只看该作者
RUBY 代码复制
  1. module Fy
  2. Prestige_mod = [10,20,30,40,50,60,70,80,90,100] #声望经验的升级标准。
  3. Prestige_exp_vi = 11                            #记录声望经验的变量ID。
  4. Prestige_lv_vi  = 15                            #记录声望等级的变量ID。
  5. Prestige_next_lv = 16                       #记录下一等级所需经验的变量ID。
  6. end
  7. class Game_Variables
  8.   def []=(variable_id, value)
  9.     if variable_id <= 5000
  10.       @data[variable_id] = value
  11.       ################################################################
  12.       if variable_id == Fy::Prestige_exp_vi
  13.         @data[Fy::Prestige_lv_vi] = 0
  14.         @data[Fy::Prestige_next_lv] = Fy::Prestige_mod[0]
  15.         return if @data[variable_id] == 0
  16.         Fy::Prestige_mod.each do |i|
  17.           if ((i-1) / @data[variable_id]) == 1
  18.             @data[Fy::Prestige_lv_vi] = Fy::Prestige_mod.index(i)
  19.             @data[Fy::Prestige_next_lv] = Fy::Prestige_mod[@data[Fy::Prestige_lv_vi]]
  20.             break
  21.           end
  22.         end
  23.         ore = Fy::Prestige_mod.clone
  24.         if @data[variable_id] >= ore.pop
  25.           @data[Fy::Prestige_lv_vi] = Fy::Prestige_mod.size
  26.           @data[Fy::Prestige_next_lv] = 10000
  27.         end
  28.       end
  29.       ##################################################################
  30.     end
  31.   end
  32. end


这个全部用变量储存声望的一些数据。改变声望经验的变量数值,其它两个变量<声望等级和下一级经验>会自动对应的跟着改变,
在描绘时就只需要描绘几个变量就行了。
声望等级初始值是0级,如果声望经验大于或等于经验模板最后那个数,就不再升级,显示的下一级经验是10000。

评分

参与人数 1梦石 +1 收起 理由
myownroc + 1 认可答案

查看全部评分

制作XP特效,找我。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 14:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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