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

Project1

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

[有事请教] 【已解决】如何在脚本中的t和e=一个在事件可以调用的值

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7802
在线时间
1343 小时
注册时间
2015-8-15
帖子
752
跳转到指定楼层
1
发表于 2023-8-18 08:15:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 金芒芒 于 2023-8-21 17:13 编辑

  t= Marshal::load(Marshal.dump(team_selected_troops))
  e = Marshal::load(Marshal.dump(enermy_selected_troops))

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 命令 : 自定义战斗
  3.   #--------------------------------------------------------------------------
  4.   def command_custom_battle#定义命令_自定义战斗
  5.     # 演奏确定 SE
  6.     $game_system.se_play($data_system.decision_se)
  7.      #$游戏系统。se播放($数据系统。未指定文件或目录
  8.  
  9.     choose_map_main#选择主地图
  10. # map_info = $custom_battle_next_map_id#@map_info#地图信息=@地图信息
  11.   #如果选择随机地图随机士兵
  12. # if ! @force_back and map_info[0] == -1#如果!@强制返回并地图信息[0]==-1
  13. #   make_random_efs_game#生成随机efs_game
  14. #   return
  15. # end
  16. #---------------------------------------------------- ↑↓   
  17.     #如果@强制后退或@强制后退==无
  18.     if ! @force_back or @force_back == nil
  19.     #自定义主战场(0,@地图信息[1],@地图信息[2])data_id
  20.     custom_battle_main(0,@map_info[1],@map_info[2])
  21.     #团队选定部队=@选定部队
  22.     team_selected_troops = @selected_units
  23.  
  24.  
  25.     #如果@强制后退或@强制后退==无
  26.     if ! @force_back or @force_back == nil
  27.       #自定义主战场(1,@地图信息[1],@地图信息[2])
  28.       custom_battle_main(1,@map_info[1],@map_info[2])
  29.       #敌人选定部队=@选定部队
  30.       if $game_switches[18] == true
  31.       #true是打开,false是关闭
  32.       #敌军enermy精选部队
  33.  
  34.       enermy_selected_troops =[[17],[18],[19],[21],[16]] #@selected_units
  35.  
  36.  
  37.       # @group_one.x = 928
  38.  
  39.     #  @group_one.y = 544
  40.     #  @group_two.x = 1248
  41.     #  @group_two.y = 640
  42.  
  43.       end
  44.       if $game_switches[19] == true
  45.       enermy_selected_troops =[ [5,5],[5,5,5],[5,5],[5,5,5],[5,5,5,5,5] ]
  46.     end
  47.  
  48.  
  49.       #如果@强制后退或@强制后退==无
  50.       if ! @force_back or @force_back == nil
  51.         choose_hero_main#选择英雄主
  52.         selected_hero = nil
  53.         #selected_hero = @selected_hero#选定的英雄=@选定的英雄
  54.         #如果@强制后退或@强制后退==无
  55.         if ! @force_back or @force_back == nil
  56.  
  57.         team_army = Game_Army_Slg.new(0)
  58.         #enermy军队
  59.         enermy_army = Game_Army_Slg.new(1)
  60.         team_army.create_empty_army
  61.         enermy_army.create_empty_army
  62.         #team_army.load_twoD_Array(team_selected_troops,selected_hero)
  63.         team_army.load_twoD_Array(team_selected_troops,selected_hero)
  64.         enermy_army.load_twoD_Array(enermy_selected_troops)
  65.        # 切换地图画面
  66.  
  67.      #team_army.set_groups_name#团队军队。设置团队名称[@character.group-1]
  68. #--------------------------------------------------------------------------------
  69.     t= Marshal::load(Marshal.dump(team_selected_troops))
  70.  
  71.     a=t.flatten
  72.     x=457
  73.     for i in 0...a.size
  74.     $game_screen.pictures[i+1].show("头像#{a[i]}", 0,x, 550, 100, 100, 255, 0)
  75.     x-=87
  76.     end
  77. -----------------------------------------------------------------------------
  78.  
  79.     e = Marshal::load(Marshal.dump(enermy_selected_troops))
  80.     b=e.flatten
  81.     x=544
  82.     for i in 0...b.size
  83.     $game_screen.pictures[6+i+1].show("头像#{b[i]}", 0,x, 550, 100, 100, 255, 0)
  84.     x+=87
  85.     end
  86.         #$自定义战斗下一个战斗者团队=团队军队
  87.         $custom_battle_next_fighter_team = team_army
  88.         #$自定义战斗下一个战斗者敌军=敌军军队
  89.         $custom_battle_next_fighter_enermy = enermy_army
  90.         #$自定义战斗下一个地图ID=16
  91.         $custom_battle_next_map_id = 16#map_info[0]
  92.        #if $game_switches[19] == true
  93.        # a = [1, 2, 3, 5, 8]
  94.        # $custom_battle_next_map_id  = a[rand(a.size)]
  95.        # end
  96.         $game_party.setup_starting_members#游戏部分设置启动成员
  97.  
  98.  
  99.  
  100.     # 设置初期位置的地图##############1356622
  101.        $game_map.setup(30)
  102.     # 主角向初期位置移动
  103.         $game_player.moveto(0, 0)
  104.  
  105.  
  106.     # 刷新主角
  107.         $game_player.refresh
  108.     # 执行地图设置的 BGM 与 BGS 的自动切换
  109.         $game_map.autoplay
  110.  
  111.  
  112.  
  113.  
  114.     # 刷新地图 (执行并行事件)
  115.         $game_map.update
  116.     # 切换地图画面
  117.         $scene = Scene_Map.new
  118.  
  119.          # $scene = Scene_Map.new
  120.           #efs_title_main
  121.  
  122.          else # fourth
  123.         @force_back = false#@强制后退=错误
  124.         Graphics.update #图形更新
  125.         efs_title_update#EFS标题更新
  126.         end   
  127.  
  128.  
  129.       else # third
  130.       @force_back = false#@强制后退=错误
  131.       Graphics.update#图形更新
  132.       efs_title_update#EFS标题更新
  133.       end   
  134.     else # second
  135.     @force_back = false#@强制后退=错误
  136.     Graphics.update#图形更新
  137.     efs_title_update#EFS标题更新
  138.     end
  139.  
  140.    else #1st
  141.      @force_back = false#@强制后退=错误
  142.      Graphics.update#图形更新
  143.      efs_title_update#EFS标题更新
  144.    end
  145.  
  146.   end
  147. end

Lv3.寻梦者

梦石
0
星屑
4721
在线时间
387 小时
注册时间
2012-11-8
帖子
276
2
发表于 2023-8-18 09:17:50 | 只看该作者
作为全局变量或者实例变量,事件中用脚本调用
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7802
在线时间
1343 小时
注册时间
2015-8-15
帖子
752
3
 楼主| 发表于 2023-8-18 10:03:34 | 只看该作者
本帖最后由 金芒芒 于 2023-8-18 10:42 编辑
qq634488405 发表于 2023-8-18 09:17
作为全局变量或者实例变量,事件中用脚本调用


全局变量是这样吗
t($game_variables[1]) = Marshal::load(Marshal.dump(team_selected_troops))
还是
$t[1] = Marshal::load(Marshal.dump(team_selected_troops))


回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14614
在线时间
2151 小时
注册时间
2016-9-20
帖子
861
4
发表于 2023-8-20 11:51:43 | 只看该作者
咋看去上去楼主的Marshal::load 的双引号是什么作用的, 我看读取里是Marshal.load , 会不会是楼主定义了什么新方法
我在某游戏里找到这个储读档方法,不知有没用
RUBY 代码复制
  1. #储存
  2.   name="Data/save.sys"
  3.   file = File.open(name, "wb")
  4.   Marshal.dump($game_variables[1234], file)
  5.   file.close
  6.  
  7.  
  8.  
  9.  
  10. #读取
  11. name="Data/save.sys"
  12. if FileTest.exist?(name)
  13.     file = File.open(name, "rb")
  14. $game_variables[1234]=Marshal.load(file)
  15.     file.close
  16.   end

点评

原来如此,谢指导  发表于 2023-8-21 18:03
.dup也只能算浅拷贝,数组中的数组或字符串就不能被复制,Marshal这个则是从内到外完全复制一份  发表于 2023-8-21 08:28
他那个是其他太太教的方法似乎相当於.dup  发表于 2023-8-20 17:05
我发的贴子大多未经整理是草稿抱歉
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39592
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

5
发表于 2023-8-20 14:19:28 | 只看该作者
建议不要自己定义全局变量,可以挂靠在游戏已有的全局变量中。
如果你的变量不需要存档,可以挂靠在$game_temp下;需要存档,可以根据设计挂靠在$game_party或$game_system上。

当然,你这个场景显然和战斗有关,我估计你是在战斗中传递数值,那可以挂靠在$game_troop上。

class Game_Troop
  attr_accessor :你的变量名称_用下划线代替空格
end

比如:
class Game_Troop
  attr_accessor :t
end

之后,你就可以通过 $game_troop.t = 1,然后在脚本中通过$game_troop.t读到这个1。
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7802
在线时间
1343 小时
注册时间
2015-8-15
帖子
752
6
 楼主| 发表于 2023-8-21 11:52:55 | 只看该作者
ppspssss 发表于 2023-8-20 11:51
咋看去上去楼主的Marshal::load 的双引号是什么作用的, 我看读取里是Marshal.load , 会不会是楼主定义了什 ...

因为数组是选着数组  也就是a=[[],[],[],[],[]]未知数,所以要Marshal::load(Marshal.dump(a)
a=变量,可以在事件中调用
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7802
在线时间
1343 小时
注册时间
2015-8-15
帖子
752
7
 楼主| 发表于 2023-8-21 11:54:13 | 只看该作者
KB.Driver 发表于 2023-8-20 14:19
建议不要自己定义全局变量,可以挂靠在游戏已有的全局变量中。
如果你的变量不需要存档,可以挂靠在$game_t ...

谢谢应该是可以用了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-21 20:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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