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

Project1

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

[已经解决] 如何用脚本安装游戏文件夹中的字体?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3770
在线时间
741 小时
注册时间
2016-6-2
帖子
211

开拓者

跳转到指定楼层
1
发表于 2018-1-26 17:04:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
字体可以手动地添加到系统字体文件夹。
可是能不能实现用脚本安装游戏文件夹中的字体?
个人认为的伪代码:
  1. font_name = 字体名称
  2. unless Font.exist?(font_name)
  3.   path_game = 游戏文件夹中的字体文件夹的名称
  4.   path_sys = 系统字体文件夹的名称
  5.   复制(font_name, path_game, path_sys)
  6. end
复制代码

如果不能,如何直接使用游戏文件夹中的字体文件夹中的字体呢?

Lv3.寻梦者

梦石
0
星屑
2709
在线时间
166 小时
注册时间
2018-1-19
帖子
89
2
发表于 2018-1-26 18:56:29 | 只看该作者
本帖最后由 mori13 于 2018-1-26 19:00 编辑

用win32API的kernel32的CopyFileA函数
类似代码如下

  1. #查找系统根目录
  2. dir = Win32API.new('kernel32','GetSystemDirectory','pl','l')
  3. dir_str = " " * 256
  4. dir.call(dir_str,255)
  5. dir_str = dir_str.split('system')[0]

  6. #字体查找
  7. font_name = "STXINWEI.ttf"  
  8. font_chn_name = "华文新魏"
  9. begin
  10. if FileTest.exist?(font_name)
  11.   copy = Win32API.new('kernel32',"CopyFileA",'ppl','')
  12.   copy.call(font_name, "#{dir_str}Fonts/#{font_name}",0)
  13.   font = Win32API.new('gdi32','AddFontResourceA','p','l')
  14.   sendmsg = Win32API.new('user32','SendMessageA','llll','l')
  15.   unless Font.exist?(font_chn_name)
  16.     font.call(font_name)
  17.     sendmsg.call(65535,29,0,0)
  18.   end
  19. end
  20. end
复制代码
求勾搭QwQ(bu)会使用脚本和事件QwQ虽然脚本还只是初级程度,还在学习ingQwQ
平常很闲,特别想回答问题和解决问题。再求勾搭呜呜呜QWQ
QQ:841155947
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1592
在线时间
280 小时
注册时间
2017-10-17
帖子
81
3
发表于 2018-1-26 21:24:47 | 只看该作者
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3770
在线时间
741 小时
注册时间
2016-6-2
帖子
211

开拓者

4
 楼主| 发表于 2018-1-27 14:12:01 | 只看该作者
上面两个都用了一下,可是没有用,
系统字体文件夹并没有出现我安装的字体。

点评

3楼的脚本可以直接读到文件夹里的字体,但是没有进行文件的copy  发表于 2018-2-27 20:04
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3770
在线时间
741 小时
注册时间
2016-6-2
帖子
211

开拓者

5
 楼主| 发表于 2018-2-6 12:24:26 | 只看该作者
话说,这个问题就没有办法解决吗?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9682
在线时间
570 小时
注册时间
2017-9-28
帖子
208
6
发表于 2018-2-6 13:34:58 | 只看该作者
本帖最后由 hyrious 于 2018-2-6 13:40 编辑

首先,只有 VA 可以不安装到系统而直接使用 Fonts 文件夹下的字体,RMXP 必须安装到系统

其次,安装到系统之后需要刷新一次系统字体表,这也是为啥你直接复制字体文件到相关文件夹不一定立即生效的原因(而正经安装方式就没问题)

下面给几个可选的建议
1. 切换到 RMVA
2. 游戏内外写清楚要玩家安装某些字体
3. 使用正经的安装字体姿势,和手动安装一回事,参考 https://superuser.com/questions/ ... dows-command-prompt

考虑到 Windows API 可能因为更新而使你的脚本失效,个人建议第 1 或第 2 条

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

喵喵喵
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2709
在线时间
166 小时
注册时间
2018-1-19
帖子
89
7
发表于 2018-2-6 19:48:57 | 只看该作者
本帖最后由 mori13 于 2018-2-6 19:54 编辑

是这样的,我的系统是在win7下运行。以下观点全部都是以我在2楼发的代码(源代码来源于《我的魔塔我做主之天塔》)
作为基础,并在下面附上我的范例工程
首先由于如果是在winXP下应该能直接复制到C盘里,出现了此类代码,而在win7上直接点击测试和运行 并没有能够
成功的复制到fonts目录里,我测试后发现是因为这是没有管理员权限,无法复制任何东西到C盘里,但是复制到D盘
或者桌面文件夹之类的都没有问题。在右键以管理员运行Game.exe就可以复制东西到C盘或者C:\\windows里了

其次说到字体问题,没有进行安装的字体,即便复制过去也是无法在fonts里找到的
而代码里虽然无法成功安装过去,但是却能把字体类似于注入到系统一样,能够被system使用,这也会是运行了代码
之后无法删除字体文件了。同时可以在游戏里,或者word之类的使用和找到这个字体。(第一次打开游戏无法显示字体,第二次
打开后就能显示字体了)。缺点是,重启电脑后系统好像会清除没成功安装的字体,字体也会被刷新掉。重启两次游戏后字体又能照常使用了

综上所述,字体无法成功复制安装到系统的fonts文件夹里,但是能安装到系统里一次使用,可以在游戏或者word等使用,能照常在游戏里使用需要安装的字体
(以win7为基础的说明,其他系统不清楚(没朋友帮偶测试呜呜呜))

下面是我的测试工程,字体来源于《黑色笔记本》范例的方正像素12字体

Project3.rar

383.02 KB, 下载次数: 110

评分

参与人数 1星屑 +75 +1 收起 理由
RyanBern + 75 + 1 认可答案

查看全部评分

求勾搭QwQ(bu)会使用脚本和事件QwQ虽然脚本还只是初级程度,还在学习ingQwQ
平常很闲,特别想回答问题和解决问题。再求勾搭呜呜呜QWQ
QQ:841155947
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 15:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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