Project1
标题: 系统菜单,金钱窗口大小调整? 插件变量自定义? [打印本页]
作者: king 时间: 2017-12-16 22:13
标题: 系统菜单,金钱窗口大小调整? 插件变量自定义?
本帖最后由 king 于 2017-12-16 22:40 编辑
我是修改默认系统菜单,加入 地名和声望
1.声望是用变量15来控制的,我希望变量15可以修改,例如变量20,但是每次都打开插件编辑?
怎么做和yep插件那种点击直接输入变量值就行,可以自定义变量值?方便别人使用
2.金钱窗口被挡住,我发现就是修改 Window_Gold插件 height,是不行的,数字和图标会被档,怎么弄?
3.想 Window_MenuCommand 想加个图标,然后一直提示bimp……显示图片怎么弄?
作者: 幻の飞鱼 时间: 2017-12-17 20:37
本帖最后由 幻の飞鱼 于 2017-12-17 20:46 编辑
第一个问题虽然不知道意义在哪里,声望这种东西不能在一个变量上解决吗?为什么要换?你非要这样的话
让声望 = $gameVariables.value($gameVariables.value(16))
你的变量16是X,声望就等于变量X了吧,比如X为20,声望就等于变量20。
第二个问题,你的空间看起来是不够默认的金钱窗口显示了,它的contents上下都要padding空间的,没法显示全
在窗口里加一个Sprite,不要自带的contents了,直接drawtext到这个新加的Sprite上,勉强可以显示的下
或者索性重写一个WINDOWS
第三个我理解就是在drawtext之前加一个 this.contents.bitmap.blt.......然后把drawtext里的Y往右移动一个图标的宽度
作者: 在野月光族 时间: 2017-12-17 22:02
1、描述不清晰。
初步估计是:已使用的变量分配给对应的角色并同步刷新(声望值)?
如果是这样,
需要先将变量的编号与状态窗口中的角色序列进行关联。
比如 :
窗口角色 0 号 关联 变量15号
窗口角色 1 号 关联 变量20号
....
可以到Game_Actor 下进行关联,
然后菜单窗口选择角色时,触发的位置是:
Window_Selectable.prototype.select
在其下判断 当this.constructor 等于Window_MenuStatus 时,
就可以同步更新声望值了。
2、基本如楼上朋友所述。
不过还可以在Scene_Menu下创建金钱窗口后,
同步更改窗口高度、Y轴、内边距、字体大小,
然后refresh 刷新。
3、描述不清晰。
初步估计是:
指令窗口的文字的左或右贴上图标?
诸如:
…
<图标> 人物信息
<图标> 调整队伍
… ??
如果是,
则需要将该指令窗口的函数drawText
最后的参数改为“left”或“riht”,
然后在该窗口的contents 里直接blt 图标。
不过如果图标不是“IconSet.png”里的图片,
那这个图标的图片还需要预加载
作者: 在野月光族 时间: 2017-12-18 01:10
// 修正指令写出位置,让窗口文字腾出空间。
Window_MenuCommand.prototype.drawText = function(text, x, y, maxWidth, align) {
align = 'center' ; // 'left':居左、'center':居中、'right':居右
this.contents.drawText(text, x, y, maxWidth, this.lineHeight(), align);
};
// 假设图片放到了 \img\faces 文件夹,以下就自带图片'Nature.png' 为例。
var _sceneMenu_create = Scene_Menu.prototype.create;
Scene_Menu.prototype.create = function() {
_sceneMenu_create.call(this);
ImageManager.reserveFace('Nature'); // 预读
};
// 嵌入图标
var _sceneMenu_start = Scene_Menu.prototype.start;
Scene_Menu.prototype.start = function() {
_sceneMenu_start.call(this);
var img = ImageManager.loadFace('Nature'); // 加载
var cw = this._commandWindow; // 提取指令窗口控制权
cw._list.forEach(function(c, i){ // 遍历指令
var x = (i > 3? i%4 : i) * 144; // 计算图片横向的纵切位置
var y = (i > 3? 1 : 0) * 144; // 计算图片纵向的横切位置
var oy = i * cw.lineHeight(); // 计算指令窗口贴图的Y轴位置
/* 将图标由原图的144×144压缩到35×35的大小。*/
cw.contents.blt(img, x, y, 144, 144, 0, oy, 35, 35); // 贴图。
});
};
// 修正指令写出位置,让窗口文字腾出空间。
Window_MenuCommand.prototype.drawText = function(text, x, y, maxWidth, align) {
align = 'center' ; // 'left':居左、'center':居中、'right':居右
this.contents.drawText(text, x, y, maxWidth, this.lineHeight(), align);
};
// 假设图片放到了 \img\faces 文件夹,以下就自带图片'Nature.png' 为例。
var _sceneMenu_create = Scene_Menu.prototype.create;
Scene_Menu.prototype.create = function() {
_sceneMenu_create.call(this);
ImageManager.reserveFace('Nature'); // 预读
};
// 嵌入图标
var _sceneMenu_start = Scene_Menu.prototype.start;
Scene_Menu.prototype.start = function() {
_sceneMenu_start.call(this);
var img = ImageManager.loadFace('Nature'); // 加载
var cw = this._commandWindow; // 提取指令窗口控制权
cw._list.forEach(function(c, i){ // 遍历指令
var x = (i > 3? i%4 : i) * 144; // 计算图片横向的纵切位置
var y = (i > 3? 1 : 0) * 144; // 计算图片纵向的横切位置
var oy = i * cw.lineHeight(); // 计算指令窗口贴图的Y轴位置
/* 将图标由原图的144×144压缩到35×35的大小。*/
cw.contents.blt(img, x, y, 144, 144, 0, oy, 35, 35); // 贴图。
});
};
作者: king 时间: 2017-12-18 12:23
我把自己修改那些插件都关掉
把你的上面的代码 弄成插件放入游戏中,运行出现 提示找不到,F8显示这里出错
ImageManager.reserveFace('Nature');
可我有这图片啊,默认工程啊……
作者: 在野月光族 时间: 2017-12-18 13:59
这都是MV自带的,不是我凭空编出来的啊。
MV一般会在Scene_Boot里预读。
Window方面的预读也就封装了一下,
不过调用的也是这一类的方法。
个人是习惯写到Create。
我这边是MV1.5.0 for Win7
作者: king 时间: 2017-12-18 17:12
本帖最后由 king 于 2017-12-18 17:27 编辑
我把这段
// 假设图片放到了 \img\faces 文件夹,以下就自带图片'Nature.png' 为例。
var _sceneMenu_create = Scene_Menu.prototype.create;
Scene_Menu.prototype.create = function() {
_sceneMenu_create.call(this);
ImageManager.reserveFace('Nature'); // 预读
};
去掉就可以了,我想要原因可能是:这Face系统设定是要检查人物角色的,但是我这是纯指令菜单,没有人物信息,所以显示找不到…
很诡异的,必须把角色1的头像设定成Nature这图,才会显示图片
求一段正常显示图片的代码,就是img\pictures
作者: king 时间: 2017-12-18 17:18
第一问题:其实是这样的,我就想知道,怎么写代码? 才能像YEP这样,就是我可以在软件的编辑器里面,输入变量的值,而不是打开插件再编辑Window_Value.prototype.refresh = function() {
var x = this.textPadding();
var width = this.contents.width - this.textPadding() * 2;
this.contents.clear();
this.drawIcon(225, 0, 0);
this.drawTextEx("声望:"+$gameVariables.value(15), 40, 0);
};
Window_Value.prototype.refresh = function() {
var x = this.textPadding();
var width = this.contents.width - this.textPadding() * 2;
this.contents.clear();
this.drawIcon(225, 0, 0);
this.drawTextEx("声望:"+$gameVariables.value(15), 40, 0);
};
例如这个 $gameVariables.value(15) 里面的15,是可以通过编辑器来修改的,
作者: 幻の飞鱼 时间: 2017-12-18 17:34
低版本没预读,都是用监听来做了,可能1.5加了预读
我现在也是做多个文件监听做的烦的要死
1.5总算解决了这个问题啊
作者: 在野月光族 时间: 2017-12-18 18:28
本帖最后由 在野月光族 于 2017-12-18 18:46 编辑
读图那里试试这个模式:
作者: 灰白君 时间: 2017-12-21 03:01
厉害,大佬就是大佬,我这人不会JS,怎么办,我想跟你们一起学习!
作者: Fan723 时间: 2018-1-19 23:51
不知道楼主的插件修改好了没有?突然想在菜单加入个声望显示,可否请分享一下你的成果。拜谢!
作者: king 时间: 2018-1-20 10:25
声望显示
具体看插件内容
A_Window_Value.rar
(1.13 KB, 下载次数: 28, 售价: 1 星屑)
作者: Fan723 时间: 2018-1-20 13:22
本帖最后由 Fan723 于 2018-1-20 13:23 编辑
我给你修改成可自定义变量、位置、显示文本及图标的了,给你公开地发上来吧。
A_Window_Value.rar
(1.42 KB, 下载次数: 162)
作者: KTE 时间: 2018-1-21 08:31
大佬读取存档是怎么加上去的?
作者: zwlele1980 时间: 2020-4-24 18:28
想在菜单除了声望 在加一个 游戏时间的窗口怎么办啊
作者: 472453497 时间: 2020-4-25 07:29
mog自定义主菜单 插件,你需要这个。。
作者: PLeaseS 时间: 2020-4-25 10:46
事 件 菜 单
作者: beethoventk 时间: 2020-5-9 12:49
想做个名望系统,搞不懂咋弄
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |