Project1

标题: 注释法——将事件分类 [打印本页]

作者: 小湖    时间: 2007-1-28 05:34
标题: 注释法——将事件分类
范例:http://www.freefilehosting.net/download/Njk2MzU=

好不容易找了个外国的上传空间……

进去点下DOWNLOAD下载……


RMXP中一个事件可以是一个初始化,一个剧情,一个NPC,或者是一个宝箱,但是对于RMXP来说,他们只是一个事件而已,所以当有些处理要涉及到某类事件的时候就会比较麻烦。

比如有一堆NPC,有男有女,现在剧情要求所有男的跳一下,当然,你可以去看那些男NPC是什么编号的,然后使用设置路线,但是如果日后又添加了一个男NPC,你就需要去修改这个设置路线会比较麻烦~如果使用以下的注释法就可以将事件形象上的“分类”,让RMXP可以认出什么事件是男的{/hx}

这里就用到了看似没有的事件功能——注释~

首先先在这些男的NPC的事件第一行都插入注释“男”,注意一定是第一行,后面会讲,OK,分类成功!

这么简单?其实也差不多,只是后面要用到这一点~

然后剧情中使用事件中的脚本写下:

  1. for event in $game_map.events.values
  2. if event.list[0] == nil
  3.   next
  4. end
  5. if event.list[0].parameters != ["男"]
  6.   next
  7. end
  8. event.animation_id = 98
  9. end
复制代码


怎么样很简单吧,下面我大致讲解下
第一行for event in $game_map.events.values可以理解为在这个地图所有的事件进行循环判断;
后一段:

  1. if event.list[0] == nil
  2.   next
  3. end
复制代码

是指如果事件第一行没有写,也就是一个空事件的划就NEXT(跳过),防止下面的判断发生错误;
后一段:

  1. if event.list[0].parameters != ["男"]
  2.   next
  3. end
复制代码

这个就是重点,意思是如果这个事件的第一行不是注释“男”的话也就NEXT了,反过来说,如果这个事件的第一行是注释“男”的话,就能运行一下的event.animation_id = 98(该事件播放98号动画)

另外一些事件可以在第一行写注释“女”,然后

  1. if event.list[0].parameters != ["男"]
  2.   next
  3. end
复制代码

改成

  1. if event.list[0].parameters != ["女"]
  2.   next
  3. end
复制代码

下面的程序也就作用在这些“女人”上面了{/cy}

以后还要添加什么NPC的话,有需要添一行注释就能让RMXP知道是男是女了,不写的话也不会有副作用

范例是做好了,找个空间上传上来……

              [本贴由 叶舞枫 于 2007-4-1 19:53:41 进行了编辑]
作者: 小湖    时间: 2007-1-28 05:34
标题: 注释法——将事件分类
范例:http://www.freefilehosting.net/download/Njk2MzU=

好不容易找了个外国的上传空间……

进去点下DOWNLOAD下载……


RMXP中一个事件可以是一个初始化,一个剧情,一个NPC,或者是一个宝箱,但是对于RMXP来说,他们只是一个事件而已,所以当有些处理要涉及到某类事件的时候就会比较麻烦。

比如有一堆NPC,有男有女,现在剧情要求所有男的跳一下,当然,你可以去看那些男NPC是什么编号的,然后使用设置路线,但是如果日后又添加了一个男NPC,你就需要去修改这个设置路线会比较麻烦~如果使用以下的注释法就可以将事件形象上的“分类”,让RMXP可以认出什么事件是男的{/hx}

这里就用到了看似没有的事件功能——注释~

首先先在这些男的NPC的事件第一行都插入注释“男”,注意一定是第一行,后面会讲,OK,分类成功!

这么简单?其实也差不多,只是后面要用到这一点~

然后剧情中使用事件中的脚本写下:

  1. for event in $game_map.events.values
  2. if event.list[0] == nil
  3.   next
  4. end
  5. if event.list[0].parameters != ["男"]
  6.   next
  7. end
  8. event.animation_id = 98
  9. end
复制代码


怎么样很简单吧,下面我大致讲解下
第一行for event in $game_map.events.values可以理解为在这个地图所有的事件进行循环判断;
后一段:

  1. if event.list[0] == nil
  2.   next
  3. end
复制代码

是指如果事件第一行没有写,也就是一个空事件的划就NEXT(跳过),防止下面的判断发生错误;
后一段:

  1. if event.list[0].parameters != ["男"]
  2.   next
  3. end
复制代码

这个就是重点,意思是如果这个事件的第一行不是注释“男”的话也就NEXT了,反过来说,如果这个事件的第一行是注释“男”的话,就能运行一下的event.animation_id = 98(该事件播放98号动画)

另外一些事件可以在第一行写注释“女”,然后

  1. if event.list[0].parameters != ["男"]
  2.   next
  3. end
复制代码

改成

  1. if event.list[0].parameters != ["女"]
  2.   next
  3. end
复制代码

下面的程序也就作用在这些“女人”上面了{/cy}

以后还要添加什么NPC的话,有需要添一行注释就能让RMXP知道是男是女了,不写的话也不会有副作用

范例是做好了,找个空间上传上来……

              [本贴由 叶舞枫 于 2007-4-1 19:53:41 进行了编辑]
作者: 小湖    时间: 2007-1-28 05:43
学校的FTP不敢用………………{/jk}
作者: 魔神之影    时间: 2007-1-28 05:44
哦,不错!
可以干些比较委琐的事……{/hx}
作者: sizz123    时间: 2007-1-28 05:45
万岁!我一直在想这个功能呢!{/hx}
作者: 小湖    时间: 2007-1-28 06:14
另外
list[0]
后面那个0就是第一行,1是第二行,依此类推……
所以有时候可以给一个事件分多个类,比如又是怪,又是火系免疫
做ARPG的时候攻击的时候是判断怪,用火魔法攻击可以再判断第二行是不是火系免疫等等……
作者: 亿万星辰    时间: 2007-1-28 06:28
首行注释本来就是很好用的东西

以前也有不少例子是用首行注释的
作者: 美兽    时间: 2007-1-28 16:14
记得最早就是在一个古老的ARPG脚本里见到这个,时间再后推好像就是鼠标了???
作者: 亿万星辰    时间: 2007-1-28 17:38
好象那个伪横版也是,还有就是那个增加事件页启动条件的后来也用了首行注释,接着就是鼠标响应,丫丫岭……{/hx}
作者: 俺来也    时间: 2007-1-28 18:17
不错,不错,我最近刚好要用到类似的效果

这样做的效果好像跟你一样:
在Game_Event添加attr_reader:event
for event in $game_map.events.values
if event.event.name == "男"
event.animation_id = 98
end
end




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