Project1

标题: 求助,RGSS3的代码参考 [打印本页]

作者: 寒冷魔王    时间: 2014-8-14 13:43
标题: 求助,RGSS3的代码参考
本帖最后由 寒冷魔王 于 2014-8-14 14:33 编辑

RGSS3的事件脚本,网上没找到 = =话说RGSS3我真的不熟,光做RGSS1的了
@taroxd 你出场的时候到了……
@喵呜喵5 顺便你也来……

比如$game_party什么的
目前主要需要变更事件图像的

备注是什么代码

算了= =求人不如求己。我还是自己研究吧……
作者: taroxd    时间: 2014-8-14 13:46
事件脚本都是自己编的,为什么要找呢?
作者: 喵呜喵5    时间: 2014-8-14 14:10
事件脚本都是自己编的,你总结不完的,最多就总结几个常用的就好了

像是这种主角强制前进一步的事件脚本什么的,
  1. $game_player.force_move_forward
复制代码
几辈子用不上,真要用上了也是像我现在这样直接现场编

我自己也有见到一个事件脚本合集(包含了一大堆的错误),实际上我自己平时就用到开关、变量、独立开关这几条,还是因为我总记不住这几个单词的怎么拼
https://rpg.blue/home.php?mod=sp ... o=blog&id=11604
之前还看到有人总结一个事件脚本列表然后说“赶快背下来吧”,这种不求所以然的感觉基本上也算X国教育的受害者了= =

完美代替甚至超越事件?拜托,事件本质上就是一个预先写好了的方便你使用的事件脚本而已
作者: 寒冷魔王    时间: 2014-8-14 14:25
本帖最后由 寒冷魔王 于 2014-8-14 14:43 编辑
喵呜喵5 发表于 2014-8-14 14:10
事件脚本都是自己编的,你总结不完的,最多就总结几个常用的就好了

像是这种主角强制前进一步的事件脚本什 ...


你发的那个目测是RGSS1的,RMVA调用会出错= =

在RGSS1上我也像你一样,毕竟用了那么多年了
然而RGSS3与RGSS1差距实在是太大,数据库什么的代码都换了(因此调用RGSS1的会出错)
而我又是头一次用RGSS3,完全不知道那个跟那个  = =
所以需要有东西参考一下

不过,你像
RUBY 代码复制
  1. for i in 0..10
  2. for x in 1...10
  3. for y in 2...9
  4. $game_switches[x][y] += i
  5. end
  6. end
  7. end

这样的代码事件完全不可能= =

而且我最喜欢用变量数组了
作者: taroxd    时间: 2014-8-14 14:30
寒冷魔王 发表于 2014-8-14 14:25
你发的那个目测是RGSS1的,RMVA调用会出错= =

在RGSS1上我也像你一样,毕竟用了那么多年了


参考的话多简单,把预置脚本过目一遍就可以了

另外你发的代码非常莫名其妙
作者: 寒冷魔王    时间: 2014-8-14 14:35
本帖最后由 寒冷魔王 于 2014-8-14 14:45 编辑
taroxd 发表于 2014-8-14 14:30
参考的话多简单,把预置脚本过目一遍就可以了

另外你发的代码非常莫名其妙 ...
  1. for x in 1...10
  2. $game_switches[x] = []
  3. end
  4. for i in 0..10
  5. for x in 1...10
  6. for y in 2...9
  7. $game_switches[x][y] = i if i==0
  8. $game_switches[x][y] += i * x -y
  9. end
  10. end
  11. end
  12. p $game_switches
复制代码
这样明白了吧
话说我只是随便举个例子而已……没有实际效果
可以用于地图的处理
id,x,y
作者: taroxd    时间: 2014-8-14 14:38
本帖最后由 taroxd 于 2014-8-14 14:51 编辑
寒冷魔王 发表于 2014-8-14 14:35
这样明白了吧
话说我只是随便举个例子而已……没有实际效果
可以用于地图的处理


我指的是,为什么要把 i 来一遍循环

作者: 寒冷魔王    时间: 2014-8-14 14:48
taroxd 发表于 2014-8-14 14:38
我指的是,为什么要把 i 来一遍循环

话说Ruby有二维数组吗
作者: taroxd    时间: 2014-8-14 14:52
本帖最后由 taroxd 于 2014-8-14 15:16 编辑
寒冷魔王 发表于 2014-8-14 14:48
话说Ruby有二维数组吗


数组的数组不就等效成二维数组了么

RUBY 代码复制
  1. 1.upto(9) do |x|
  2.   $game_switches[x] = Array.new(9) do |y|
  3.     y >= 2 ? (0..10).inject(0) {|a, i| a + i * x - y } : nil
  4.   end
  5. end
  6. p $game_switches

作者: 羁绊的守望者    时间: 2014-8-14 15:00
寒冷魔王 发表于 2014-8-14 14:48
话说Ruby有二维数组吗

别说二维了,你想要四维五维都是可以的
作者: 冰之滄月    时间: 2014-8-14 15:05
"备注"是这个代码:#
作者: 寒冷魔王    时间: 2014-8-14 15:14
taroxd 发表于 2014-8-14 14:52
数组的数组不就等效成二维数组了么

1.upto(9) do |x|

我说的是这种:
0.0,0.1,0.2
1.0,1.1,1.2
类似这样调用arry[x,y]
作者: taroxd    时间: 2014-8-14 15:18
寒冷魔王 发表于 2014-8-14 15:14
我说的是这种:
0.0,0.1,0.2
1.0,1.1,1.2

要么用RGSS的Table类,要么自己定义一个就是咯~
作者: 寒冷魔王    时间: 2014-8-14 15:27
taroxd 发表于 2014-8-14 15:18
要么用RGSS的Table类,要么自己定义一个就是咯~

话说为什么调用p Game_Party.new.actors会出错?明明输出Game_Party.new是显示了@actors了啊,而且我用.items都没事
作者: 寒冷魔王    时间: 2014-8-14 15:32
本帖最后由 寒冷魔王 于 2014-8-14 15:33 编辑

@余烬之中
RUBY 代码复制
  1. a = []
  2. for i in 0..20
  3.   for j in 0..10
  4.     a[i] = [] if a[i] == nil
  5.     a[i][j] = 2014
  6.   end
  7. end
  8. p a[0,0]#[]

RGSS1,3中都是这种效果



作者: 余烬之中    时间: 2014-8-14 15:33
寒冷魔王 发表于 2014-8-14 15:27
话说为什么调用p Game_Party.new.actors会出错?明明输出Game_Party.new是显示了@actors了啊,而且我用.i ...

点评里没说清楚 = =!

all_members会返回全队员列表数组 每一项都是一个Game_Actor
members根据战斗或非战斗返回战斗队员或者非战斗队员 每一项都是一个Game_Actor
battle_members返回战斗队员 每一项都是一个Game_Actor

@actors不支持直接访问 它保存的是队员的索引号
作者: taroxd    时间: 2014-8-14 15:33
寒冷魔王 发表于 2014-8-14 15:32
@余烬之中
a = []
for i in 0..20

当然的,你是要访问 a 的“从下标0开始的0个元素”嘛

总之你需要这样的二维数组实现的话,自己定义不就好了
作者: 余烬之中    时间: 2014-8-14 15:37
寒冷魔王 发表于 2014-8-14 15:32
@余烬之中
a = []
for i in 0..20

打开你VA的F1手册,找到ruby内建类--Object--Array 里面有这样一段

self[start, length]
Returns an array containing length items from start. If the start value is negative, counts backward from the end of the array (the index of the last element is -1).If length is longer than the length of the array from start, the length of the overlong portion is ignored. Returns nil if length is negative.


意思就是 通过ary[a, b],并不是访问二维数组的a,b位置,而是从数组的a位置开始,截取连续b个元素并放在一个新数组中返回

示例
  1. a = [1, 2, 3, 4, 5, 6]
  2. p a[3, 3] #=> [4, 5, 6]
复制代码

作者: 正太君    时间: 2014-8-14 15:41
各位大大的脚本太深奥了,看样子我搞不定...我先闪了...
作者: taroxd    时间: 2014-8-14 15:45
本帖最后由 taroxd 于 2014-8-14 17:00 编辑

给你定义了一个多维数组玩玩(不检查错误,你愿意的话可以检查参数个数。现在多余的参数会被丢弃。)

each 之类的方法也很容易加上的

RUBY 代码复制
  1. class MultiArray
  2.  
  3.   def initialize(dimention = 2)
  4.     @dimention = dimention
  5.     @data = []
  6.   end
  7.  
  8.   def [](first, *indice)
  9.     return @data[first] if @dimention == 1
  10.     row(first)[*indice]
  11.   end
  12.  
  13.   def []=(first, *indice, value)
  14.     return @data[first] = value if @dimention == 1
  15.     row(first)[*indice] = value
  16.   end
  17.  
  18.   private
  19.  
  20.   def row(i)
  21.     @data[i] ||= MultiArray.new(@dimention - 1)
  22.   end
  23.  
  24. end
  25.  
  26. arr = MultiArray.new(3)
  27. arr[0,1,2] = 3
  28. p arr[0,1,2] #=> 3
  29. p arr[1,2,3] #=> nil
  
作者: 寒冷魔王    时间: 2014-8-14 15:48
余烬之中 发表于 2014-8-14 15:37
打开你VA的F1手册,找到ruby内建类--Object--Array 里面有这样一段
  1.   #--------------------------------------------------------------------------
  2.   # ● 获取参战角色的最大数
  3.   #--------------------------------------------------------------------------
  4.   def max_battle_members
  5.     return 4   #*
  6.   end
复制代码
刚刚发现改这里可以变更战斗最大人数(实测有效)
作者: taroxd    时间: 2014-8-14 17:04
本帖最后由 taroxd 于 2014-8-14 17:06 编辑
寒冷魔王 发表于 2014-8-14 15:48
刚刚发现改这里可以变更战斗最大人数(实测有效)


@余烬之中

说到这种东西,我们不妨看一看 max_tp 的定义(先不吐槽为什么不叫mtp方便我元编程偷懒),再看看 tp_rate 和 regenerate_tp。

嗯就是这样
作者: 寒冷魔王    时间: 2014-8-14 17:11
taroxd 发表于 2014-8-14 15:45
给你定义了一个多维数组玩玩(不检查错误,你愿意的话可以检查参数个数。现在多余的参数会被丢弃。)

each ...

p arr   CMCC网络太差= =才打开
#<MultiArray:0x650d204 @dimention=3, @data=[#<MultiArray:0x650d1c8 @dimention=2,
@data=[nil, #<MultiArray:0x650d164 @dimention=1, @data=[nil, nil, 3]>]>, #<Mult
iArray:0x650cb24 @dimention=2, @data=[nil, nil, #<MultiArray:0x650cac0 @dimentio
n=1, @data=[]>]>]>
作者: 寒冷魔王    时间: 2014-8-14 17:12
本帖最后由 寒冷魔王 于 2014-8-14 17:13 编辑
taroxd 发表于 2014-8-14 13:46
事件脚本都是自己编的,为什么要找呢?


p arr   CMCC网络太差= =才打开
#<MultiArray:0x650d204 @dimention=3, @data=[#<MultiArray:0x650d1c8 @dimention=2,
@data=[nil, #<MultiArray:0x650d164 @dimention=1, @data=[nil, nil, 3]>]>, #<Mult
iArray:0x650cb24 @dimention=2, @data=[nil, nil, #<MultiArray:0x650cac0 @dimentio
n=1, @data=[]>]>]>

不是理想中的效果
作者: taroxd    时间: 2014-8-14 17:17
寒冷魔王 发表于 2014-8-14 17:12
p arr   CMCC网络太差= =才打开
#

自己定义 inspect 不就好了
作者: 寒冷魔王    时间: 2014-8-14 17:26
本帖最后由 寒冷魔王 于 2014-8-14 17:31 编辑

@余烬之中 如何获取备注文字?
@taroxd
作者: taroxd    时间: 2014-8-14 17:44
寒冷魔王 发表于 2014-8-14 17:26
@余烬之中 如何获取备注文字?
@taroxd

RPG::Xxxx#note 方法
作者: 余烬之中    时间: 2014-8-14 17:45
寒冷魔王 发表于 2014-8-14 17:26
@余烬之中 如何获取备注文字?
@taroxd

item.note

我想起来@@taroxd 那个丧心病狂的note_any系列了
作者: taroxd    时间: 2014-8-14 17:48
余烬之中 发表于 2014-8-14 17:45
item.note

我想起来@@taroxd 那个丧心病狂的note_any系列了

哪里丧心病狂了,我自己一直在用的好不好
作者: 寒冷魔王    时间: 2014-8-14 18:33
本帖最后由 寒冷魔王 于 2014-8-14 18:38 编辑
余烬之中 发表于 2014-8-14 17:45
item.note

我想起来@@taroxd 那个丧心病狂的note_any系列了


+1他的回复
def note
end
note
确实丧心病狂= =

现在知道了需要用$data(光想着Game了= =)
作者: kuerlulu    时间: 2014-8-14 18:35
围观LS一群大触卖萌
顺便水经验
顺便建议LZ想要什么方法先翻一下Game_开头的脚本, 如果没有的话我们还能自己定义进去.
顺便其实xp可以设置队伍最大人数的, 就是位置没有va这么显而易见.




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