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

Project1

 找回密码
 注册会员
搜索
楼主: 柳之一
打印 上一主题 下一主题

[原创发布] 快速存储Bitmap的Marshal(高难度API,不解释)

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

跳转到指定楼层
1
发表于 2008-5-27 00:31:39 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

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

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

x
vx xp均可以使用
object_id * 2 + 16 这个是关键中的关键。详细的部分请调查ruby的资源的rb_obj_id和DATA_PTR这个部分。

io形式等等按照自己的需求来自己设定
  1. class Font
  2. def marshal_dump;end
  3. def marshal_load(obj);end
  4. end
  5. class Bitmap
  6. # 传送到内存的API函数
  7. RtlMoveMemory_pi = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i')
  8. RtlMoveMemory_ip = Win32API.new('kernel32', 'RtlMoveMemory', 'ipi', 'i')
  9. def _dump(limit)
  10. data = "rgba" * width * height
  11. RtlMoveMemory_pi.call(data, address, data.length)
  12. [width, height, Zlib::Deflate.deflate(data)].pack("LLa*") # 压缩
  13. end
  14. def self._load(str)
  15. w, h, zdata = str.unpack("LLa*"); b = new(w, h)
  16. RtlMoveMemory_ip.call(b.address, Zlib::Inflate.inflate(zdata), w * h * 4); b
  17. end
  18. # [[[bitmap.object_id * 2 + 16] + 8] + 16] == 数据的开头
  19. #
  20. def address
  21. buffer, ad = "xxxx", object_id * 2 + 16
  22. RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 8
  23. RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 16
  24. RtlMoveMemory_pi.call(buffer, ad, 4); return buffer.unpack("L")[0]
  25. end
  26. end
复制代码
注意,这个脚本对于增强你的游戏性没有什么帮助,是关于如何储存图片的。
能打算使用这个的也是不需要范例的,要范例的估计也用不到。

不知道能不能解决 沉影不器 的 求把缓存里的bitmap压入存档的有效率的办法。如果不是的话,请原谅在下。
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

2
 楼主| 发表于 2008-5-27 04:46:45 | 显示全部楼层
以下引用Elegance于2008-5-26 20:27:01的发言:

沉了,好东西帮你顶下。

谢谢你,本来准备pm他的,谁知pm不了
系统信息:本贴由本区版主认可,66RPG感谢您的热情解答~
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

3
 楼主| 发表于 2008-5-27 05:05:07 | 显示全部楼层
对你有用就好。哎,我竟发这样非大众化的脚本,哪怕只有你一个知音,就满足了。
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

4
 楼主| 发表于 2008-5-28 04:08:54 | 显示全部楼层
以下引用Elegance于2008-5-27 18:01:31的发言:

http://tkool.web-ghost.net/wiki/wiki.cgi?page=Script%2FBitmap%A4%CEMarshal%C2%D0%B1%FE

http://jbbs.livedoor.jp/bbs/read.cgi/game/14836/1090833499/856


最终更新时间:2008年02月05日 23时46分45秒
投稿日: 2008/02/04(月) 19:26:05…………无言。

显然您不知道我在日站的身份,呵呵。除了法国的那个网站,基本上一些日站和英站都有我的id的。{/cy}
顺便说一下,那个wiki是用的2ch的。

2chって、なんにもいえないよ。2chはこのスクリプトのちょさくけんを持たないよ。このスクリプトは複数の人たちが論討したけっかだ、だれが投稿したのはわからない{/dy}
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

5
 楼主| 发表于 2008-5-28 04:48:54 | 显示全部楼层
以下引用yangff于2008-5-27 20:46:25的发言:

呵呵,脚本的实用性。话说到底是做什么的?

对其他人基本没有用,只是给沉影不起的在存档里高速存储图片用的。
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

6
 楼主| 发表于 2008-5-28 06:02:57 | 显示全部楼层
以下引用link006007于2008-5-27 21:56:13的发言:

哈`~!   来的正好   问lz一个问题(我基本卡死这地方了...):

一个指向 C++ 类的指针如何能被 ruby的Data_Wrap_Struct转换成VALUE?
其实不一定要Data_Wrap_Struct 只要能够被ruby保存就好

我建立了一个C的结构体保存C++类的指针, 然后把C结构体拿来Data_Wrap_Struct也会出错
不知道具体要怎么做...

typedef struct _holdCXXPTR{
   ;VALUE klass;
   void* pData;     // 保存C++PTR的, 本来想通过保存C结构体来保存C++类指针...
   ... ...
}HOLDCXXPTR;

莫非林克想把rm搬到c++上?
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

7
 楼主| 发表于 2008-6-1 05:03:07 | 显示全部楼层
以下引用沉影不器于2008-5-31 20:19:08的发言:

原来您在日站深造,难怪这个脚本的书写习惯看着很不爽,我给改写了一下

没有办法,大陆这里讨论技术气氛不够……{/gg}
2.5行脚本 = 让数值输入有个默认值
从这个帖子就能看出来吧,呵呵
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

8
 楼主| 发表于 2008-6-4 03:45:58 | 显示全部楼层
以下引用轮回者于2008-6-3 13:32:08的发言:

"rgba" 指的是红,绿,蓝,透明
是储存图片中某一点要用的4个参数.

好久不见。

话说,夏娜的那个输出图片的脚本好像就是用png的文件头然后逐点输出的
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

9
 楼主| 发表于 2008-8-6 20:55:41 | 显示全部楼层
我晕,你的短信竟然没有开{/gg}
参见ruby资源的rb_obj_id,还有DATA_PTR

我的ruby删了,不好意思麻烦您自己下吧。
里面有关于操作内存和Font的marshal
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

10
 楼主| 发表于 2008-8-9 20:17:52 | 显示全部楼层
以下引用link006007于2008-8-9 12:09:57的发言:

我一直很好奇  
我觉得  最关键是lz最早是怎么得到bitmap的图像数据是保存在Bitmap实例内存首地址偏移这么多的量之后的内存地址中的


日本的一个程序员告诉我的
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-3 08:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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