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

Project1

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

[原创发布] 黑科技记忆碎片

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7508
在线时间
1227 小时
注册时间
2008-12-14
帖子
555
跳转到指定楼层
1
发表于 2020-6-27 12:51:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 if216 于 2021-8-4 14:15 编辑

以下是一些黑科技,是记录,不是教学,不解释。

13.死了变灰(sprite)
  1. this.setColorTone([0, 0, 0, 255]);
复制代码


12.画图正解

  1.         let bitmap = ImageManager.loadPicture(pname);
  2.         this.contents.blt(bitmap, 0, 0, 400, 410, 0, 0, 400, 410);
复制代码


11. 反混淆
jsbeautifier.org

10.MZ下怎么在战斗中打开阵型窗口

  1. SceneManager.push(class Scene_Formation extends Scene_Menu {
  2.     start() {
  3.         super.start();
  4.         this.commandFormation();
  5.     }
  6.     createCommandWindow() { /* No command window */ }
  7.     statusWindowRect() {
  8.         const rect = super.statusWindowRect();
  9.         return new Rectangle(0, rect.y, Graphics.boxWidth, rect.height);
  10.     }
  11.     onFormationCancel() { SceneManager.pop(); }
  12. });
复制代码


9.怎么匹配出note栏记录的id

  1.   const tid = txt.match(/<troops:(.*)>/i)[1];
复制代码


8.怎么获得event的note栏

  1. let event = $gameMap.event(eid);
  2. let txt = event ? event.event().note : "";
复制代码


7.一个有意思的问题,已知actor,怎么他是当前party中的第几人呢?好像没有这种倒推的函数。所以写循环找

  1.         var actorid = $gameVariables.value(13); //actor已知,初始化按自己需求写
  2.         var partyid = 0;
  3.         for (const actor of $gameParty.members())
  4.         {
  5.                 partyid++;
  6.                 if(actor._actorId==actorid)
  7.                 {
  8.                   break;
  9.                 }
  10.         }
  11.         //partyid 就是在party中的索引,顺次了
复制代码


6.得到当前的角色

  1. $gameParty.menuActor().actorID()

  2. $gameParty._menuActorId
复制代码


5.战斗场景如果新加窗口,会变成无模式窗口,和actorCommandWindow操作互相影响,解决办法是找到下列函数,重写将这个窗口是否激活加进去

  1. Scene_Battle.prototype.isAnyInputWindowActive = function() {
  2.     return (
  3.         this._partyCommandWindow.active ||
  4.         this._actorCommandWindow.active ||
  5.         this._skillWindow.active ||
  6.         this._itemWindow.active ||
  7.         this._actorWindow.active ||
  8.         this._enemyWindow.active ||
  9.         (this._confirmWindow && this._confirmWindow.active)     //i do
  10.     );
  11. };
复制代码


4.关闭 始终奔跑 和 记住指令

  1. Window_Options.prototype.makeCommandList = function() {
  2.     //this.addGeneralOptions();
  3.     this.addVolumeOptions();
  4. };
复制代码




3.简化namebox,\n<1>就会显示角色1的名字,\n<莎士比亚>则会显示 莎士比亚

  1. Window_NameBox.prototype.refresh = function(text, position) {
  2.                 this.show();
  3.                 var n = parseInt(text);
  4.                 var actor = n >= 1 ? $gameActors.actor(n) : null;
  5.                 if(actor)
  6.                         text = actor._name;
  7.                 else
  8.                         ;
  9.                 this._text = Yanfly.Param.MSGNameBoxText + text;
  10.                 console.log(this._text);
  11.                 this._position = position;
  12.                 this.width = this.windowWidth();
  13.                 this.createContents();
  14.                 this.contents.clear();
  15.                 this.resetFontSettings();
  16.                 this.changeTextColor(this.textColor(Yanfly.Param.MSGNameBoxColor));
  17.                 var padding = eval(Yanfly.Param.MSGNameBoxPadding) / 2;
  18.                 this.drawTextEx(this._text, padding, 0, this.contents.width);
  19.                 this._parentWindow.adjustWindowSettings();
  20.                 this._parentWindow.updatePlacement();
  21.                 this.adjustPositionX();
  22.                 this.adjustPositionY();
  23.                 this.open();
  24.                 this.activate();
  25.                 this._closeCounter = 4;
  26.                 return '';
  27. };
复制代码


2.读取skill技能备注中所有非尖括号的内容
  1.       var note = $dataSkills[skill.id].note;

  2.       note = note.replace(/\<[^\>]*\>/g,"");;

  3.       note = note.replace(/(^\s*)|(\s*$)/g,'');
复制代码



1.实时屏蔽cancel功能
因为某种功能用到的部分代码
  1. Window_SrpgSkillList.prototype.processCancel = function() {
  2.     if(!$gameTemp._isActedButNoMove)
  3.     {  
  4.       SoundManager.playCancel();
  5.       this.updateInputData();
  6.       this.deactivate();
  7.       this.callCancelHandler();
  8.     }
  9.     else
  10.     {
  11.       ;
  12.     }
  13. };
复制代码


其中Window_SrpgSkillList是某个继承window_selectable 的子类

$gameTemp._isActedButNoMove是某个全局变量,用以控制 返回功能的打开和关闭

那么这样你就可以在不同情况下允许或者禁止使用 cancel 返回功能
需要购买本人MV插件必须先加wx好友。加不上wx就是本人忙,没时间卖。原则上太久以前的插件也不想卖,因为我也忘了,维护上会不给力。wx名:alskyif    本人插件地址:
   LCK_SRPG梦幻模拟战、火焰纹章类系统
   究极立绘ADV系统

   究极换装统合系统
   究极! 回想与CG系统
   消息文字的距离调整  
   自动返回上一张地图

Lv2.观梦者

梦石
0
星屑
512
在线时间
48 小时
注册时间
2018-4-17
帖子
29
2
发表于 2020-7-5 20:51:46 | 只看该作者
感谢,很好用
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

漾夕☽星化残月☾

梦石
0
星屑
8472
在线时间
3847 小时
注册时间
2015-5-12
帖子
2076

剧作品鉴家

3
发表于 2021-6-28 23:17:52 | 只看该作者
大佬好像一年没来论坛了?最近还结案单吗
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 19:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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