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

Project1

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

[原创发布] [不是创意的创意]灼眼夏娜的10s脚本的一些小改进[12/29更新]

 关闭 [复制链接]

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1702
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

跳转到指定楼层
1
发表于 2009-8-28 11:54:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 精灵使者 于 2009-12-29 21:26 编辑

以前的10s脚本用着很顺手,给大家带来了福音。但是精灵测试依然会随机出现hangup的错误,而且容易出错……
http://rpg.blue/web/index.php?doc-view-4285
这是以前的传送门。
它其中的这段
  1. class << Graphics

  2. alias origin_update update unless method_defined? :origin_update

  3. def update
  4.   Thread.critical = true
  5.   origin_update
  6.   Thread.critical = false
  7. end

  8. end
复制代码
只注重了update的防止冲突工作,而精灵发现的hangup结果大多数都是出现在installize和dispose下……
莫非……根据ProfessionR的提醒,transition,freeze,还有update是graphics的三部分……
而在transition阶段的时候如果执行update,肯定会死机或者报错……
解决办法如下:
紧急修正一个死循环的错误恩……
  1. class << Graphics
  2. @@frozen = false
  3. alias origin_update update unless method_defined? :origin_update
  4. alias origin_transition transition unless method_defined? :origin_transition

  5. def update
  6.   @@frozen = true
  7.   origin_update
  8.   @@frozen = false
  9. end
  10. def transition(*args)
  11.   @@frozen = true
  12.   origin_transition(*args)
  13.   @@frozen = false
  14. end
  15. def frozen_plus
  16.     return @@frozen
  17. end
  18. end
  19. if @update_thread.nil?
  20. @update_thread = Thread.new{loop{Graphics.update if !Graphics.frozen_plus ;
  21. sleep(9)}}
  22. end
复制代码
精灵刚刚才发现的新版本……
  1. if @update_thread.nil?
  2. @update_thread = Thread.new{loop{Graphics.update;sleep(9)}}
  3. end
  4. class << Graphics
  5. alias origin_update update unless method_defined? :origin_update
  6. alias origin_transition transition unless method_defined? :origin_transition
  7. alias origin_freeze freeze unless method_defined? :origin_freeze

  8. def update
  9.   Thread.critical = true
  10.   origin_update
  11.   Thread.critical = false
  12. end
  13. def transition(*args)
  14.   Thread.critical = true
  15.   origin_transition(*args)
  16.   Thread.critical = false
  17. end
  18. def freeze
  19.   Thread.critical = true
  20.   origin_freeze
  21.   Thread.critical = false
  22. end
  23. end
复制代码
这样做是不是更加简洁一点……不过这两段脚本原理都有异曲同工之妙,希望大家任意选用。

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1702
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

20
 楼主| 发表于 2009-12-29 21:21:03 | 只看该作者
顶上来,少写个冒号,紧急修正……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1235
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

19
发表于 2009-9-27 22:13:17 | 只看该作者
我做了个类病毒的东东
我都不会hand up
赤点 发表于 2009-8-28 15:24


"hand up"不是交出吗?

是hangup么?

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1702
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

18
 楼主| 发表于 2009-9-7 18:00:51 | 只看该作者
不需要了恩。
这两段脚本都有这一句恩,请放心使用
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

  /) /)<

梦石
0
星屑
4212
在线时间
4890 小时
注册时间
2009-2-16
帖子
8434

开拓者短篇七成年组季军

17
发表于 2009-9-7 10:45:05 | 只看该作者
插入这段脚本就会避免"脚本已备份"?
那这句  @update_thread = Thread.new{loop{Graphics.update;sleep(9)}} if @update_thread.nil?  还用插入不?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
10236
在线时间
4438 小时
注册时间
2005-10-22
帖子
6975

开拓者贵宾

16
发表于 2009-9-1 00:54:44 | 只看该作者
在用VX的DLL配合RMXP开发的某人飘过
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1702
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

15
 楼主| 发表于 2009-8-31 22:39:54 | 只看该作者
嘛啊……就当作一个手段吧……
多着不多少者不少……
巨型游戏大概能用得上。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-5-18
帖子
39
14
发表于 2009-8-30 09:15:05 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1702
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

13
 楼主| 发表于 2009-8-28 18:03:08 | 只看该作者
本帖最后由 精灵使者 于 2009-9-6 19:40 编辑

啊,据我所知,梦单,魔力,包括我的大游戏都会显示脚本备份,恩。
尤其是一些低配置机器在运行的时候。
精灵刚刚发现thread.critical的说法……希望问问大家。
Thread.critical = newstate
当其值为真时,将不会进行线程切换。若当前线程挂起(stop)或有信号(signal)干预时,其值将自动变为false。

但是,当使用Thread.new生成新线程时,新线程将被执行。另外,还可以使用Thread.pass进行显式地切换。

它返回布尔值。在赋值形式中,它返回右边的newstate。

注意: 若涉及到I/O,GC或扩展库的问题时,该标识可能会被忽视.若想进行互斥操作的话,不要使用该方法,而应该使用Mutex或Monitor.


所以我主楼更新了critical的版本,不知道是否可以使用。

不过我感觉,如果是前面的frozen版本的话,transition的时候会造成无限循环而消耗资源——所以推荐后面的critical版本……不过frozen版本已经同步更新了,欢迎大家使用。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3427
在线时间
3628 小时
注册时间
2006-9-6
帖子
37402

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

12
发表于 2009-8-28 17:18:12 | 只看该作者
一般不会出现脚本已备份吧……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-22 13:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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