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

Project1

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

[有事请教] 请教如何用代码改变第3号地图第6号事件第9页的角色图片

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
跳转到指定楼层
1
发表于 2023-6-6 15:48:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 taeckle 于 2023-6-6 16:49 编辑

假设打算设置的角色图片名称为: "/data/Characters/大花狗.png",

(直接在RPG Maker XP上编辑当前地图(第3号地图)第6号事件第9页太难受了) 我们想用代码来设置事件角色图片,还请大家指点一二,多谢了!

点评

$game_map.events[3]啥的,然后就不会弄了  发表于 2023-6-6 15:52

Lv4.逐梦者

梦石
0
星屑
7802
在线时间
1343 小时
注册时间
2015-8-15
帖子
752
2
发表于 2023-6-6 17:06:54 | 只看该作者
第9页代表什么
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
3
 楼主| 发表于 2023-6-6 17:23:06 | 只看该作者
本帖最后由 taeckle 于 2023-6-6 17:25 编辑

  class Game_Event < Game_Character
def set_page_picture(page_id=0,pic="大花狗.png")
  @event.pages[page_id].graphic.character_name=pic
  end
end



然后:
$game_map.events[6].set_page_picture(9,"抓老鼠.png")
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7802
在线时间
1343 小时
注册时间
2015-8-15
帖子
752
4
发表于 2023-6-7 08:06:17 | 只看该作者
本帖最后由 金芒芒 于 2023-6-7 11:49 编辑
taeckle 发表于 2023-6-6 17:23
然后:
$game_map.events[6].set_page_picture(9,"抓老鼠.png")


思路是这样脚本我不是很会
if $game_map.map_id==3
$game_switches[12] = true
end
def set_page_picture(page_id=0,pic="大花狗.png")
if $game_switches[12] = true

@event.pages[page_id].graphic.character_name=pic
end


自己拼也可以
RUBY 代码复制
  1. =begin
  2. 教程内容
  3.  
  4. 先声明:这个不是教学,你可以把它当作查询手册。(写死我了……)。如果有你需要的脚本而这里没有收录,请到留言板提出,谢谢!
  5.  
  6. 使用方法:由于高级教学栏目有防盗措施,所以你没法直接选择后拷贝粘贴。不是说估计刁难人,这是和我推荐的学习方法有关= = 你需要哪个就自己找一下,或者用ctrl+f搜索一下,自己在事件里面打1、2遍,以后这个知识就是你自己的了。如果每次都ctrl+v ctrl+v,什么时候才能学会呢?
  7. 更改角色图形
  8. $game_actors[1].set_graphic("010-Lancer02", 0, "fire_battle", 0)
  9. $game_player.refresh
  10.  
  11. 显示文章:
  12. $game_temp.message_text= ""
  13. 显示引号中的文章。
  14.  
  15. 更改文章选项:
  16. $game_system.message_position =0,1,2
  17. 表示上、中、下,三个位置
  18.  
  19. $game_system.message_frame = 0 ,1
  20. 0表示不透明,其他的话就透明
  21.  
  22. 设置移动里的透明
  23. class Game_Character
  24. attr_writer :opacity
  25. end
  26. 加入这个脚本到MAIN前。然后在需要处放入以下代码
  27. $game_map.events[1].opacity = 0
  28.  
  29. 面向角色
  30. $game_map.events[1].turn_toward_player
  31.  
  32. 后退一步
  33. $game_map.events[1].move_backward
  34.  
  35.  
  36. 等待:
  37. @wait_count = X
  38. 等待X帧
  39.  
  40. 中断事件处理:
  41. command_end
  42.  
  43. 把某一个事件暂时消除
  44. $game_map.events[X].erase
  45. 其中X表示把X号事件暂时消除,如果是消除本事件X = @event_id
  46.  
  47. 执行公共事件:
  48. $game_temp.common_event_id = 编号
  49. 执行编号的公共事件。注意,这个执行和直接在事件中的公共事件有微妙区别。
  50.  
  51. 开关操作:
  52. $game_switches[编号] = true / false
  53. true是打开,false是关闭
  54.  
  55. 变量操作:
  56. $game_variables[编号] = 数值
  57. 这里有一些常用的内容:
  58. rand(100):返回0-99的随机数
  59. rand(100)+10000:返回10000-10099的随机数
  60. $game_party.item_number(编号):编号物品的个数
  61.  
  62. $game_party.actors[0]
  63. 角色相关:以下为某编号的角色的相关属性
  64. 生命:$game_actors[编号].hp
  65. 精神:$game_actors[编号].sp
  66. 经验:$game_actors[编号].exp
  67. 等级:$game_actors[编号].level
  68. 最大生命:$game_actors[编号].maxhp
  69. 最大精神:$game_actors[编号].maxsp
  70. 力量:$game_actors[编号].str
  71. 灵巧:$game_actors[编号].dex
  72. 速度:$game_actors[编号].agi
  73. 魔力:$game_actors[编号].int
  74. 攻击力:$game_actors[编号].atk
  75. 物理防御:$game_actors[编号].pdef
  76. 魔法防御:$game_actors[编号].mdef
  77. 回避修正:$game_actors[编号].eva
  78. 姓名:$game_actors[编号].name
  79. 职业编号:$game_actors[编号].class_id
  80. 职业名称:$game_actors[编号].class_name
  81. 武器编号:$game_actors[编号].weapon_id
  82. 防具1编号:$game_actors[编号].armor1_id
  83. 防具2编号:$game_actors[编号].armor2_id
  84. 防具3编号:$game_actors[编号].armor3_id
  85. 防具4编号:$game_actors[编号].armor4_id
  86. 完全回复:$game_actors[编号].recover_all
  87. 领悟特技:$game_actors[编号].learn_skill(编号)
  88. 遗忘特技:$game_actors[编号].forget_skill(编号)
  89.  
  90. 位置(前卫返回0,中卫返回1,后卫返回2):$data_classes[$game_actors[编号].class_id].position
  91. 学会特技总数:$game_actors[编号].skills.size
  92.  
  93. 敌人:$game_troop.enemies[编号]
  94. 敌人拥有角色的部分功能,包括.hp,.sp,.maxhp,.maxsp,.str,.dex,.agi,.int,.atk,.pdef,.mdef,.eva
  95.  
  96. 地图的事件属性:
  97. $game_map.events[编号].x,$game_map.events[编号].y
  98. 编号事件的x,y坐标
  99. $game_map.events[编号].screen_x,$game_map.events[编号].screen_y
  100. 编号事件的屏幕x,y坐标
  101. $game_map.events[编号].direction
  102. 编号事件的朝向
  103. $game_map.events[编号].terrain_tag
  104. 编号事件所处的地形标志
  105. $game_map.events[编号].moveto(x,y)
  106. 把事件扔到(x,y)
  107. ——————————————————以上几个事件的,如果要求为角色,则为“$game_player.x”等
  108.  
  109. 地图ID:$game_map.map_id
  110. 同伴总人数:$game_party.actors.size
  111. 步数:$game_party.steps
  112. 金钱:$game_party.gold
  113. 游戏总时间(秒数):Graphics.frame_count / Graphics.frame_rate
  114. 游戏总帧数:Graphics.frame_count
  115. 游戏帧速率(可直接=n调整):Graphics.frame_rate
  116. 计时器剩余秒数:$game_system.timer / Graphics.frame_rate
  117. 存档次数:$game_system.save_count
  118.  
  119. 独立开关操作:
  120. $game_self_switches[[地图编号,事件编号,"A"]] = true/false
  121. 把地图编号的地图上的事件编号的事件的A开关打开。其实不光ABCD,还可以建立更多独立开关,不过调用也得用同样脚本。
  122.  
  123. 计时器打开:
  124. $game_system.timer = 需要的秒数;$game_system.timer_working = true
  125.  
  126. 计时器关闭:
  127. $game_system.timer_working = false
  128.  
  129. 增减金钱:
  130. $game_party.gain_gold(金钱量)
  131.  
  132. 增减物品:
  133. $game_party.gain_item(物品编号,数量)
  134. 举例:
  135. $game_party.gain_item(rand(10),rand(10)):随机获得0-9号中某一物品,数量为0-9随机。
  136.  
  137. 增减武器:
  138. $game_party.gain_weapon(物品编号,数量)
  139.  
  140. 增减防具:
  141. $game_party.gain_armor(物品编号,数量)
  142.  
  143. 清空现有所有物品:
  144. $game_party.items.clear
  145.  
  146. 清空所有武器:
  147. $game_party.weapons.clear
  148.  
  149. 清空所有防具:
  150. $game_party.armors.clear
  151.  
  152. 角色替换:
  153. 加入角色:$game_party.add_actor(编号)
  154. 删除角色:$game_party.remove_actor(编号)
  155. 初始化角色:$game_party[编号].setup(编号)
  156.  
  157. 更改窗口外观:
  158. $game_system.windowskin_name = 文件名
  159.  
  160. 更改禁止存档
  161. $game_system.save_disabled = true/false
  162.  
  163. 更改禁止菜单:
  164. $game_system.menu_disabled = true/false
  165.  
  166. 更改禁止遇敌:
  167. $game_system.encounter_disabled = true/false
  168.  
  169. 地图卷动:
  170. $game_map.start_scroll(方向,距离,速度)
  171.  
  172. 地图某角色显示动画:
  173. 事件:$game_map.events[id].animation_id = 动画编号
  174. 角色:$game_player.animation_id = 动画编号
  175.  
  176. 角色透明:
  177. $game_player.transparent = true/false
  178.  
  179. 等待移动结束:
  180. @move_route_waiting = true
  181.  
  182. 开始更改色调:
  183. $game_screen.start_tone_change(Tone.new(R,G,B,A),帧数)
  184.  
  185. 画面闪烁:
  186. $game_screen.start_flash(Color.new(R,G,B,A),帧数)
  187.  
  188. 画面振动:
  189. $game_screen.start_shake(力度,速度,帧数)
  190.  
  191. 显示图片:
  192. $游戏屏幕。图片[编号]。显示(名称、原点、x、y、缩放x、缩放y、不透明度、混合类型)
  193. $game_screen.pictures[number].show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
  194. 移动图片:
  195. $game_screen.pictures[number].move(duration, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
  196. 其中:
  197.   #     name         : 文件名
  198.   #     origin       : 原点
  199.   #     x            : X 坐标
  200.   #     y            : Y 坐标
  201.   #     zoom_x       : X 方向放大率
  202.   #     zoom_y       : Y 方向放大率
  203.   #     opacity      : 不透明度
  204.   #     blend_type   : 合成方式
  205.   #     duration     : 时间
  206.  
  207. 旋转图片:
  208. $game_screen.pictures[number].rotate(速度)
  209.  
  210. 删除图片:
  211. $game_screen.pictures[number].erase
  212.  
  213. 显示动画(战斗中)
  214. battler.animation_id = 动画编号
  215. battler可以是敌人或者自己人,请先定义。
  216.  
  217. 显示伤害:
  218. battler.damage = 伤害值
  219. battler.damage_pop = true
  220. 注意,这个显示伤害可以让伤害值为字符串!并不会真的减血,减血用battler.hp -= 数值
  221. battler.criticle = true 这个还可以打开会心一击标志
  222.  
  223. 战斗中断:
  224. $game_temp.battle_abort = true
  225.  
  226. 调用菜单:
  227. $game_temp.menu_calling = true
  228.  
  229. 调用存档画面:
  230. $game_temp.save_calling = true
  231.  
  232. 游戏结束:
  233. $game_temp.gameover = true
  234.  
  235. 返回标题画面:
  236. $game_temp.to_title = true
  237.  
  238. 强行启动事件:
  239. $game_map.events[编号].start
  240.  
  241. 通行判定:
  242. $game_player.passable?(x,y,方向)
  243. 用来判断地图某处是否在某个方向可通行
  244.  
  245. 正在移动判定:
  246. $game_player.moving?
  247. $game_map.events[编号].moving?
  248.  
  249. 播放效果:
  250. Audio.bgm_play("文件名",音量,节奏速度)
  251. Audio.bgs_play("文件名",音量,节奏速度)
  252. Audio.me_play("文件名",音量,节奏速度)
  253. Audio.se_play("文件名",音量,节奏速度)
  254. 播放bgm,bgs,me,se
  255.  
  256. Audio.bgm_stop
  257. Audio.bgs_stop
  258. Audio.me_stop
  259. Audio.se_stop
  260. 停止播放bgm,bgs,me,se
  261.  
  262. $game_system.playing_bgm,$game_system.playing_bgs
  263. 获得演奏中的bgm,bgs
  264.  
  265. game_system.bgm_memorize,game_system.bgm_restore
  266. game_system.bgs_memorize,game_system.bgs_restore
  267. 记忆、还原bgm,bgs
  268.  
  269. 判断某角色在队伍中:$game_party.actors.include?($game_actors[编号])
  270.  
  271. 判断是否学过某特技:$game_actors[编号].skill_learn?(特技编号)
  272.  
  273. 按下某键的时候:Input.press?(键),Input.trigger?(键)
  274. 这两个请参考脚本中的其他定义推理
  275.  
  276. =end




评分

参与人数 1+1 收起 理由
taeckle + 1 多谢指点!

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
24
星屑
7477
在线时间
249 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

5
发表于 2023-6-7 18:00:39 | 只看该作者
本帖最后由 纯属小虫 于 2023-6-8 12:17 编辑

咳咳,感觉够呛......
每次过图的时候,都会重新读取$game_map ,$game_events又是从$game_map 里读取的,所以$game_events 也会重新读取。
这些读取的数据源头都是这一行代码:@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
所以,源文件在 Data/Map%03d.rxdata 里

简单来说就是,事件相关的信息都是临时变量
即使你把他们改了,【过图】或者【重启游戏】之后,它们都会归于原位......
除非魔改一波数据结构,以及存档读档的格式,才能比较好的实现题干的功能。

当然,如果只是单纯地想临时修改的话,也容易
不过执行该指令的位置必须就在【3】号地图里

随便一个事件脚本,执行以下内容即可
$game_map.events[6].pages[9].graphic.character_name =  "/data/Characters/大花狗.png"

以此思路,灵活应用一下,可以有这样的做法:
你可以在该地图创建一个自动执行,或者并行处理的事件(推荐并行处理),然后让该事件在满足某条件下,执行上述的脚本
从而间接满足“永久改变”

emmmm...应该是这样把,我我我...没试过哈,你自己测试一下~

点评

嗷嗷!数组应该是复数的~~感谢指正  发表于 2023-6-8 12:16
对了,发现一个小错误, "$game_map.events[6].page[9].graphic.character_name = "/data/Characters/大花狗.png""这里应该是"pages"不是"page"  发表于 2023-6-8 06:56
好的,多谢大神指点!感谢!  发表于 2023-6-8 06:54

评分

参与人数 1+1 收起 理由
taeckle + 1 我很赞同!

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-21 18:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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