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

Project1

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

[已经解决] 关于灯光脚本

[复制链接]

Lv2.观梦者

梦石
0
星屑
392
在线时间
52 小时
注册时间
2018-1-25
帖子
32
跳转到指定楼层
1
发表于 2019-2-28 20:20:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 筱叶子 于 2019-2-28 20:21 编辑

RUBY 代码复制
  1. #==============================================================================
  2. # ■ 灯光脚本 for VA 版本1.0.0
  3. #     12.14.2012
  4. #------------------------------------------------------------------------------
  5. #  脚本修改: dujian15
  6. #  脚本制作: Kylock (For XP 版本 by Near Fantastica)
  7. #==============================================================================
  8.  
  9.  
  10. # ■ 灯光脚本 for VX 版本1.1.1
  11. #     5.21.2008
  12. #------------------------------------------------------------------------------
  13. #  脚本制作: Kylock (For XP 版本 by Near Fantastica)
  14. #==============================================================================
  15. #   如果您想要启用脚本,请在需要灯光效果的事件添加一个注释.
  16. #   打开开关将禁用灯光效果,启用效果前会检查开关,如果已经添加注释但是开关开启,那么将会停止效果.
  17. #   译者的话:因为发现脚本有一些问题,所以是有改动过的,如果改的不对,请M我QQ或者留言.谢谢
  18. #
  19. #==============================================================================
  20. # ● 更新日志
  21. #------------------------------------------------------------------------------
  22. # 1.0 - 建立最初版本
  23. # 1.1 - 添加了新的效果: LIGHT2, TORCH, TORCH2
  24. #      - 更改了混合模式(使其看起来更好)
  25. #      - 对FIRE效果增加了红色
  26. # 1.1.1 -非官方更新
  27. #         -解决了效果FIRE 与 TORCH 效果当开关打开时没有消失的问题
  28. #         -简便了开关判断
  29. #==============================================================================
  30. # ● 支持的效果(您可以添加的注释)
  31. #------------------------------------------------------------------------------
  32. #   GROUND - 中等稳定的白光.
  33. #   FIRE   - 伴有轻微的闪烁的红色.
  34. #   LIGHT  - 小型稳定的白光.
  35. #   LIGHT2 -大型稳定的白光.
  36. #   TORCH  - 伴有强烈闪烁的大型稳定的红光.
  37. #   TORCH2 - 伴有中等烁的大型稳定的红光.
  38. #==============================================================================
  39.  
  40.   $lsig = 100           #开关号
  41.  
  42.  
  43. class Spriteset_Map
  44.   alias les_spriteset_map_initalize initialize
  45.   alias les_spriteset_map_dispose dispose
  46.   alias les_spriteset_map_update update
  47.   def initialize
  48.     @light_effects = []
  49.     setup_lights
  50.     les_spriteset_map_initalize
  51.     update
  52.   end
  53.   def dispose
  54.     les_spriteset_map_dispose
  55.     for effect in @light_effects
  56.       effect.light.dispose
  57.     end
  58.     @light_effects = []
  59.   end
  60.   def update
  61.     les_spriteset_map_update
  62.     update_light_effects
  63.   end
  64.   def setup_lights
  65.     for event in $game_map.events.values
  66.       next if event.list == nil
  67.       for i in 0...event.list.size
  68.         if event.list[i].code == 108 and event.list[i].parameters == ["GROUND"]
  69.           type = "GROUND"
  70.           light_effects = Light_Effect.new(event,type)
  71.           light_effects.light.zoom_x = 2
  72.           light_effects.light.zoom_y = 2
  73.           light_effects.light.opacity = 100
  74.           @light_effects.push(light_effects)
  75.         end
  76.         if event.list[i].code == 108 and event.list[i].parameters == ["FIRE"]
  77.           type = "FIRE"
  78.           light_effects = Light_Effect.new(event,type)
  79.           light_effects.light.zoom_x = 300 / 100.0
  80.           light_effects.light.zoom_y = 300 / 100.0
  81.           light_effects.light.opacity = 100
  82.           @light_effects.push(light_effects)
  83.         end
  84.         if event.list[i].code == 108 and event.list[i].parameters == ["LIGHT"]
  85.           type = "LIGHT"
  86.           light_effects = Light_Effect.new(event,type)
  87.           light_effects.light.zoom_x = 1
  88.           light_effects.light.zoom_y = 1
  89.           light_effects.light.opacity = 150
  90.           @light_effects.push(light_effects)
  91.         end
  92.         if event.list[i].code == 108 and event.list[i].parameters == ["LIGHT2"]
  93.           type = "LIGHT2"
  94.           light_effects = Light_Effect.new(event,type)
  95.           light_effects.light.zoom_x = 6
  96.           light_effects.light.zoom_y = 6
  97.           light_effects.light.opacity = 150
  98.           @light_effects.push(light_effects)
  99.         end
  100.         if event.list[i].code == 108 and event.list[i].parameters == ["TORCH"]
  101.           type = "TORCH"
  102.           light_effects = Light_Effect.new(event,type)
  103.           light_effects.light.zoom_x = 6
  104.           light_effects.light.zoom_y = 6
  105.           light_effects.light.opacity = 150
  106.           @light_effects.push(light_effects)
  107.         end
  108.         if event.list[i].code == 108 and event.list[i].parameters == ["TORCH2"]
  109.           type = "TORCH2"
  110.           light_effects = Light_Effect.new(event,type)
  111.           light_effects.light.zoom_x = 6
  112.           light_effects.light.zoom_y = 6
  113.           light_effects.light.opacity = 150
  114.           @light_effects.push(light_effects)
  115.         end
  116.       end
  117.     end
  118.     for effect in @light_effects
  119.       case effect.type
  120.       when "GROUND"
  121.         effect.light.x = (effect.event.screen_x * 8 - 400 - $game_map.display_x) / 8 - 8
  122.         effect.light.y = (effect.event.screen_y * 8 - 400 - $game_map.display_y) / 8 - 36
  123.         effect.light.blend_type = 1
  124.       when "FIRE"
  125.         effect.light.x = (effect.event.screen_x * 8 - 600 - $game_map.display_x) / 8 + rand(6) - 3 - 16
  126.         effect.light.y = (effect.event.screen_y * 8 - 600 - $game_map.display_y) / 8 + rand(6) - 3 - 48
  127.         effect.light.tone = Tone.new(255,-100,-255,   0)
  128.         effect.light.blend_type = 1
  129.       when "LIGHT"
  130.         effect.light.x = (effect.event.screen_x * 8 - 400 - $game_map.display_x) / 8
  131.         effect.light.y = (effect.event.screen_y * 8 - 400 - $game_map.display_y) / 8
  132.         effect.light.blend_type = 1
  133.       when "LIGHT2"
  134.         effect.light.x = (effect.event.screen_x * 8 - 1200 - $game_map.display_x) / 8 - 20
  135.         effect.light.y = (effect.event.screen_y * 8 - 1200 - $game_map.display_y) / 8
  136.         effect.light.blend_type = 1
  137.       when "TORCH"
  138.         effect.light.x = (effect.event.screen_x * 8 - 1200 - $game_map.display_x) / 8 - 20
  139.         effect.light.y = (effect.event.screen_y * 8 - 1200 - $game_map.display_y) / 8
  140.         effect.light.tone = Tone.new(255,-100,-255,   0)
  141.         effect.light.blend_type = 1
  142.       when "TORCH2"
  143.         effect.light.x = (effect.event.screen_x * 8 - 1200 - $game_map.display_x) / 8 - 20
  144.         effect.light.y = (effect.event.screen_y * 8 - 1200 - $game_map.display_y) / 8
  145.         effect.light.tone = Tone.new(255,-100,-255,   0)
  146.         effect.light.blend_type = 1
  147.       end
  148.     end
  149.   end
  150.   def update_light_effects
  151.     if $game_switches[$lsig]
  152.       for effect in @light_effects
  153.         effect.light.visible = false
  154.       end
  155.     else
  156.       for effect in @light_effects
  157.  
  158.         effect.light.visible = true
  159.       end
  160.     end
  161.     for effect in @light_effects
  162.       case effect.type
  163.       when "GROUND"
  164.         effect.light.x = (effect.event.screen_x * 8 - 400 - $game_map.display_x) / 8 - 8
  165.         effect.light.y = (effect.event.screen_y * 8 - 400 - $game_map.display_y) / 8 - 36
  166.       when "FIRE"
  167.         effect.light.x = (effect.event.screen_x * 8 - 600 - $game_map.display_x) / 8 + rand(6) - 3 - 16
  168.         effect.light.y = (effect.event.screen_y * 8 - 600 - $game_map.display_y) / 8 + rand(6) - 3 - 48
  169.         effect.light.opacity = rand(10) + 90
  170.       when "LIGHT"
  171.         effect.light.x = (-0.25 / 2 * $game_map.display_x) + (effect.event.x * 32) - 15
  172.         effect.light.y = (-0.25 / 2 * $game_map.display_y) + (effect.event.y * 32) - 15
  173.       when "LIGHT2"
  174.         effect.light.x = (effect.event.screen_x * 8 - 1200 - $game_map.display_x) / 8 - 20
  175.         effect.light.y = (effect.event.screen_y * 8 - 1200 - $game_map.display_y) / 8
  176.       when "TORCH"
  177.         effect.light.x = (effect.event.screen_x * 8 - 1200 - $game_map.display_x) / 8 - 20 + rand(20) - 10
  178.         effect.light.y = (effect.event.screen_y * 8 - 1200 - $game_map.display_y) / 8 + rand(20) - 10
  179.         effect.light.opacity = rand(30) + 70
  180.       when "TORCH2"
  181.         effect.light.x = (effect.event.screen_x * 8 - 1200 - $game_map.display_x) / 8 - 20
  182.         effect.light.y = (effect.event.screen_y * 8 - 1200 - $game_map.display_y) / 8
  183.         effect.light.opacity = rand(10) + 90
  184.       end
  185.     end
  186.   end
  187. end
  188.  
  189. class Light_Effect
  190.   attr_accessor :light
  191.   attr_accessor :event
  192.   attr_accessor :type
  193.   def initialize(event, type)
  194.     [url=home.php?mod=space&uid=22469]@light[/url]= Sprite.new
  195.     @light.bitmap = Cache.picture("le.png")
  196.     @light.visible = true
  197.     @light.z = 1000
  198.     @event = event
  199.     @type = type
  200.   end
  201. end


请问插入到脚本目录里以后使用,测试游戏显示第194行错误是什么原因

Lv3.寻梦者

梦石
0
星屑
4397
在线时间
1910 小时
注册时间
2010-12-21
帖子
2365
2
发表于 2019-2-28 20:29:27 | 只看该作者
本帖最后由 黄亦天 于 2019-2-28 20:31 编辑

改成@light = Spritr.new试试
是不是在论坛上复制的时候没复制好多了个链接?

啊,还真有个链接,论坛内@会自动变成@别人,这就尴尬了。

点评

因为论坛里有叫light的人所以变成了url吗……  发表于 2019-2-28 21:28
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
392
在线时间
52 小时
注册时间
2018-1-25
帖子
32
3
 楼主| 发表于 2019-2-28 20:58:39 | 只看该作者
黄亦天 发表于 2019-2-28 20:29
改成@light = Spritr.new试试
是不是在论坛上复制的时候没复制好多了个链接?

谢谢回复,进去测试是没问题了……但是又遇到新的问题,这个脚本注释里写的使用方法是直接在灯光事件里添加脚本如:LIGHT2吗……我理解它注释里是这个意思,但是进入有灯光的那张地图有新的错误,是不是我脚本的写法有错误,还是脚本有什么地方没改……(图片的名字那行我肯定改了)
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4397
在线时间
1910 小时
注册时间
2010-12-21
帖子
2365
4
发表于 2019-2-28 21:12:53 | 只看该作者
本帖最后由 黄亦天 于 2019-2-28 21:16 编辑
筱叶子 发表于 2019-2-28 20:58
谢谢回复,进去测试是没问题了……但是又遇到新的问题,这个脚本注释里写的使用方法是直接在灯光事件里添 ...


没记错的话是添加一个注释,里面写上LIGHT2之类的。
不是添加事件脚本。

脚本不会用的时候可以考虑找个范例工程。

点评

好了解决了,谢谢,刚才我用过注释但是没效果(用的GROUND)大概是眼瞎了ORZ,又试了一遍用LIGHT2就好啦,亮多了  发表于 2019-2-28 21:21
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
392
在线时间
52 小时
注册时间
2018-1-25
帖子
32
5
 楼主| 发表于 2019-2-28 21:30:16 | 只看该作者
黄亦天 发表于 2019-2-28 21:12
没记错的话是添加一个注释,里面写上LIGHT2之类的。
不是添加事件脚本。

等下……我突然发现我知道为啥刚才用注释觉得没效果了,这次测试我是直接在有灯光的这个地图上的打开的游戏……,灯就很亮……但是我如果从另一个地图转到有灯光的这个地图就不亮了……这又是为啥

这张就是从别的地图上过来的

这张就是直接在这张地图上打开的
第一张明显就是没效果……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4397
在线时间
1910 小时
注册时间
2010-12-21
帖子
2365
6
发表于 2019-2-28 21:32:53 | 只看该作者
筱叶子 发表于 2019-2-28 21:30
等下……我突然发现我知道为啥刚才用注释觉得没效果了,这次测试我是直接在有灯光的这个地图上的打开的游 ...

迷,是不是调整地图色调的问题?
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
392
在线时间
52 小时
注册时间
2018-1-25
帖子
32
7
 楼主| 发表于 2019-2-28 21:51:04 | 只看该作者
本帖最后由 筱叶子 于 2019-2-28 21:54 编辑
黄亦天 发表于 2019-2-28 21:32
迷,是不是调整地图色调的问题?


我先后尝试了在前一张地图设置更改色调(继承到下一张地图),在有灯光的这张地图上更改色调,在前一张地图末尾传送的时候设置传送后更改色调,都没用……色调暗了肯定没问题,但是灯光都没效果(当然测试的时候肯定是要从前一张地图走到有灯光的这张)只有测试的时候直接在本张地图上打开才有效果……我也觉得好迷哈哈哈前边脚本有个开关好像也跟这个没关系吧大概……因为毕竟默认关闭是开启灯光那应该就是正确的不用改ORZ

事件大概是这样写的↑很简洁,第二行脚本是固定图片位置用的和这个脚本没关系……更改色调就是单纯的改,就一行……就不发出来了……都是并行处理
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4397
在线时间
1910 小时
注册时间
2010-12-21
帖子
2365
8
发表于 2019-2-28 21:56:29 | 只看该作者
筱叶子 发表于 2019-2-28 21:51
我先后尝试了在前一张地图设置更改色调(继承到下一张地图),在有灯光的这张地图上更改色调,在前一张地 ...


记得范例里都是把注释放在第一行的,这到底是个什么问题我也没见过。
实在不行就在场景移动前后加个黑屏【淡入淡出
进场景前关掉灯光,进场景后再开启【
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
392
在线时间
52 小时
注册时间
2018-1-25
帖子
32
9
 楼主| 发表于 2019-2-28 23:55:25 | 只看该作者
黄亦天 发表于 2019-2-28 21:56
记得范例里都是把注释放在第一行的,这到底是个什么问题我也没见过。
实在不行就在场景移动前后加个黑屏 ...

各种改了还是不行哈哈哈……我突然发现我固定图片也有点问题,不过和这个帖子没关系,是个小问题……毕竟只是个灯芯,我回来发帖再问那个就是了……主要这个灯光脚本散发光芒和灯芯没啥关系我才发现……
于是我随便打开一个新的测试文件做了两张地图,用这个脚本在两张地图上都做了色调更改,效果还是一样哒……直接在第二个范例地图中打开灯光亮亮哒
但是从第一个地图的小路过去就啥也没啦……灯芯显示图片我都给省了(不过图片和固定图片的脚本都在附件里有),就一行注释的事件,色调更改也是都一行,两个地图都有,可以对比。然后就没有其他事件了~
也拿上来发给大佬看一下……我也再研究研究……实在没有解决办法我就去换个脚本,当时用这个主要还是因为灯光种类还挺多的……如果能解决问题,用这个当然最好了……

灯光.zip

1.44 MB, 下载次数: 95

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

梦石
1
星屑
21010
在线时间
4886 小时
注册时间
2014-12-22
帖子
1527

开拓者

10
发表于 2019-3-1 14:40:53 | 只看该作者
本帖最后由 shencao 于 2019-3-1 14:43 编辑

试验了一下,这个脚本效果很奇怪
我在第一个地图设置灯光,换了地图直接继承了上一个地图的灯光,就是说第二个地图上会直接显示的第一个地图的灯光
好像确实只有一开始载入的地图才有灯光,我也不懂为什么
开关控制灯光也是不是开关的值对应控制的,而是开关一次改变一次灯光状态(?大概?)如果我在别的地图把开关打开,在这个地图上还得再开一次才有效果(但是此时开关的值和原来是反的)就感觉很别扭
既然这个脚本是移植的,个人觉得可能脚本本身编写就有点问题?不太适合va用?感觉还是别用了吧囧

灯光可以用普通事件做的。
把灯光做成行走图
灯光事件的“自主移动”里,自定义 移动路线:更改合成方式:加法(不用循环),频率调到最高(如果不是最高,一开始改变为加法的时候会有一个时间差)。改为加法是为了发光效果
如果想要动态灯光,把动态做进行走图里,选择踏步动画就能做动态灯光了
基本上是够用的。
还是想用脚本的话找找其他的吧,记得半生和Khas的灯光脚本都很多人用的,你可以本区搜索一下关键字灯光
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 23:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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