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
事件脚本都是自己编的,你总结不完的,最多就总结几个常用的就好了
像是这种主角强制前进一步的事件脚本什么的,$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,完全不知道那个跟那个 = =
所以需要有东西参考一下
不过,你像
for i in 0 ..10
for x in 1 ...10
for y in 2 ...9
$game_switches [ x] [ y] += i
end
end
end
for i in 0 ..10
for x in 1 ...10
for y in 2 ...9
$game_switches [ x] [ y] += i
end
end
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
参考的话多简单,把预置脚本过目一遍就可以了
另外你发的代码非常莫名其妙 ...for x in 1...10
$game_switches[x] = []
end
for i in 0..10
for x in 1...10
for y in 2...9
$game_switches[x][y] = i if i==0
$game_switches[x][y] += i * x -y
end
end
end
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有二维数组吗
数组的数组不就等效成二维数组了么
1 .upto ( 9 ) do |x|
$game_switches [ x] = Array .new ( 9 ) do |y|
y >= 2 ? ( 0 ..10 ) .inject ( 0 ) { |a, i| a + i * x - y } : nil
end
end
p $game_switches
1 .upto ( 9 ) do |x|
$game_switches [ x] = Array .new ( 9 ) do |y|
y >= 2 ? ( 0 ..10 ) .inject ( 0 ) { |a, i| a + i * x - y } : nil
end
end
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 编辑
@余烬之中
a = [ ]
for i in 0 ..20
for j in 0 ..10
a[ i] = [ ] if a[ i] == nil
a[ i] [ j] = 2014
end
end
p a[ 0 ,0 ] #[]
a = [ ]
for i in 0 ..20
for j in 0 ..10
a[ i] = [ ] if a[ i] == nil
a[ i] [ j] = 2014
end
end
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个元素并放在一个新数组中返回
示例a = [1, 2, 3, 4, 5, 6]
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 之类的方法也很容易加上的
class MultiArray
def initialize( dimention = 2 )
@dimention = dimention
@data = [ ]
end
def [ ] ( first, *indice)
return @data [ first] if @dimention == 1
row( first) [ *indice]
end
def [ ] =( first, *indice, value)
return @data [ first] = value if @dimention == 1
row( first) [ *indice] = value
end
private
def row( i)
@data [ i] ||= MultiArray.new ( @dimention - 1 )
end
end
arr = MultiArray.new ( 3 )
arr[ 0 ,1 ,2 ] = 3
p arr[ 0 ,1 ,2 ] #=> 3
p arr[ 1 ,2 ,3 ] #=> nil
class MultiArray
def initialize( dimention = 2 )
@dimention = dimention
@data = [ ]
end
def [ ] ( first, *indice)
return @data [ first] if @dimention == 1
row( first) [ *indice]
end
def [ ] =( first, *indice, value)
return @data [ first] = value if @dimention == 1
row( first) [ *indice] = value
end
private
def row( i)
@data [ i] ||= MultiArray.new ( @dimention - 1 )
end
end
arr = MultiArray.new ( 3 )
arr[ 0 ,1 ,2 ] = 3
p arr[ 0 ,1 ,2 ] #=> 3
p arr[ 1 ,2 ,3 ] #=> nil
作者: 寒冷魔王 时间: 2014-8-14 15:48
余烬之中 发表于 2014-8-14 15:37
打开你VA的F1手册,找到ruby内建类--Object--Array 里面有这样一段 #--------------------------------------------------------------------------
# ● 获取参战角色的最大数
#--------------------------------------------------------------------------
def max_battle_members
return 4 #*
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