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

Project1

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

[已经解决] 关于脚本中各种全局变量以及用脚本新建事件的问题

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
508
在线时间
1478 小时
注册时间
2011-9-17
帖子
1316

开拓者贵宾

跳转到指定楼层
1
发表于 2011-10-12 22:59:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 各种压力的猫君 于 2011-10-13 15:23 编辑

我以前就问过一些,不过现在又要问了:


就是写脚本的时候遇到了很多需要从输入的值中读取信息
但是在脚本中,它对应的是什么呢?(图中“小红”)



另外,事件类确实很复杂啊
RPG::Event
RPG::Event::Page  (= = P居然是个表情)
RPG::Event::Page::Condition
RPG::Event::Page::Graphic
都看了一下,但是还是不知道如何用脚本新建一个事件

简化一下吧,大概就是建一个事件:

只要做成这样就行了,所在地图ID,坐标X,Y  都已知
不要再加事件进去了,因为是批量进行了
怎么写都不知道怎么动手……
$game_events(不知道是不是叫这个名字)结构太复杂了,看不懂

点评

发脚本要用代码框 - - 不想用代码框点高级模式右面禁用表情打上√  发表于 2011-10-12 23:44
我帖子中要有是不HX的空白,请Ctrl + A

Lv2.观梦者

梦石
0
星屑
255
在线时间
227 小时
注册时间
2009-7-26
帖子
216
2
发表于 2011-10-12 23:31:29 | 只看该作者
本帖最后由 darkscout3000 于 2011-10-12 11:05 编辑

先回答第一个问题
事件的名字这个嘛是在Game_Map类里头,有个@map属性
  1. @map.events[id].name
复制代码
这里用的就是RPG::Event类

第二个问题
这个其实一点都不复杂
你需要做三件事情

第一步,在地图的数据中加入事件
Game_Map类里头有个@events属性,纪录了地图上所有的事件
你需要做的就是加一个事件进去,把这段插入 Game_Map 类
  1. def add_event(x, y, name, picture_name)
  2.   event = RPG::Event.new(x,y, name)
  3.   event.name = name                      # 事件名字
  4.   event.id = @events.keys.max + 1 # 事件ID
  5.   event.pages[0].graphic.character_name = picture_name  #事件图像
  6.   event.pages[0].walk_anime = true      #选项「移动时动画」的真伪值。
  7.   event.pages[0].step_anime = true      #选项「停止时动画」的真伪值。
  8.   event.pages[0].direction_fix  = false   #选项「固定朝向」的真伪值。
  9.   event.pages[0].through = false          #选项「充许穿透」的真伪值。
  10.   event.pages[0].always_on_top           #选项「在最前面显示」的真伪值。
  11.   event.pages[0].trigger = 0         #触发条件(0:决定键,1:与主角接触,2:与事件接触,3:自动执行,4:并行处理)。
  12.   event.pages[0].list.push(RPG::MoveCommand(355, ["脚本代码第一行", "脚本第二行" ...])) # 355 是执行脚本的代码
  13.   @events[event.id] = event
  14.   return event.id
  15. end
复制代码
那个pages其实很好理解,你知道每个事件都有很多事件页吧?pages[0]就是第一页
你在地图上添加事件不是可以选择一个角色图片么?你就用那个里头的名字就好了(只要名字,不要路径)
大多属性还是比较直观的,就是加入事件比较麻烦

第二步,把事件添加到地图精灵组
事件在地图上显示是Spriteset_Map类控制的
总之先在Spriteset_Map类中加入以下方法
  1. def add_event_sprite(event_id)
  2.   sprite = Sprite_Character.new(@viewport1, $game_map.events[event_id])
  3.   @character_sprites.push(sprite)
  4. end
复制代码
第三步,让事件显示出来
最后是Scene_Map类
加入以下方法
  1. def add_event(x, y, name, picture_name)
  2.   event_id = $game_map.add_event(x,y,name,picture_name)
  3.   @spriteset.add_event_sprite(event_id)
复制代码
这样就基本完成了
剩下的就是写个脚本(前提是你在地图上)

  1. $scene.add_event(10,10,"noob", "001-Fighter01")
复制代码
然后阿尔西斯就在地图坐标(10,10)出现了⋯⋯

如果有bug就问吧,毕竟是凭记忆打的代码⋯⋯

���

点评

哈哈,果然我的记忆力还是不够完善啊,不过能帮到你就好  发表于 2011-10-13 22:27
运行了一下,有些错误 RPG::MoveCommand……应该是EventCommand 另外Sprite_Character要的参数是Game_Event类不是Event类, 加一句: event = Game_Event.new(map_id,event) 谢谢   发表于 2011-10-13 22:16

评分

参与人数 1+1 收起 理由
aceamuro + 1 这个对于随机生成场上敌人太必要了,感谢聚.

查看全部评分

不要吐槽我⋯⋯
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

3
发表于 2011-10-13 09:29:54 | 只看该作者
来补充一下,完全用脚本新建一个事件,不如用脚本从某个地图里复制一个模板事件到指定的地图制定的位置,这样你需要初始化的东西就少多了,只需要把关键性的一些属性修改一下就好了。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
508
在线时间
1478 小时
注册时间
2011-9-17
帖子
1316

开拓者贵宾

4
 楼主| 发表于 2011-10-13 11:29:53 | 只看该作者
darkscout3000 发表于 2011-10-12 23:31
先回答第一个问题
事件的名字这个嘛是在Game_Map类里头,有个@map属性这里用的就是RPG::Event类

非常感谢,马上就去做做看
我帖子中要有是不HX的空白,请Ctrl + A
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 01:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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