麦甜甜圈


  • 首页

  • 分类

  • 关于

  • 过往作品

  • 一些个有意思的链接

zhimeihua-auto-checkin

发表于 2025-09-19 | 分类于 Python |

简单的致美化自动签到脚本,用法见脚本内容

阅读全文 »

RMMV 简易的诅咒装备

发表于 2025-09-17 | 分类于 RPG Maker |

装备上后就无法脱下的装备,用法见脚本内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//=============================================================================
/*:
* SimpleCursedEquip.js
* @plugindesc v1.00 不可卸下的装备
* @author 烁灵 更多脚本请访问 www.hknmtt.com
*
* @help
* 在物品备注中填写:
* <诅咒装备>
* 则该装备无法被卸下
* 可以用插件指令
* $gameParty.members()[index].forceChangeEquip(slotId, null);
* 来强制卸下装备,index为队员序号(从0开始)slotId为装备槽位序号(从0开始)
*/
//=============================================================================
(function(){
var sl_Game_Actor_isEquipChangeOk = Game_Actor.prototype.isEquipChangeOk
Game_Actor.prototype.isEquipChangeOk = function(slotId) {
var origResult = sl_Game_Actor_isEquipChangeOk.apply(this, arguments);
var equip = this.equips()[slotId];
var cursed = equip && equip.note && equip.note.indexOf("<诅咒装备>") >= 0;
return origResult && !cursed;
};
})()

【原创翻译】Tonypa 基于瓦片地图的游戏开发教程 (Tonypa's tile-based tutorials)

发表于 2024-04-25 | 分类于 教程 |

教程地址:http://www.gotoandplay.it/_articles/2004/02/tonypa.php

教程原作者地址(已失效):http://www.tonypa.pri.ee/

看到一篇非常棒的 2D 瓦片地图游戏开发教程,对瓦片地图游戏进行了手把手级别深入浅出的系统教学。鉴于原文已经是 2004 年的教程,且作者原始博客已经无法访问,为了避免教程遗失,在这里对该教程进行翻译留档。

原文在 Flash 环境使用 ActionScript 进行开发,由于 Flash 播放器在各浏览器上都已停止支持,本文并不能直接展示原教程的示例,仅提供镜像下载。本文也会使用 HTML5 + PixiJS 对教程中的示例进行复刻,仅供参考。

阅读全文 »

Could not find com.github.mcxtzhang:SwipeDelMenuLayout:V1.3.0 问题处理

发表于 2023-10-11 | 分类于 笔记 |

问题

工地安卓项目编译时(2023.10.11)突然报 Could not find com.github.mcxtzhang:SwipeDelMenuLayout:V1.3.0

解决

检查发现该组件在 jitpack.io 上 V1.3.0 版本为 Error 状态,临时改为使用 V1.2.5 版本编译通过。

1
api 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.2.5'

pic

npm install 报 Refusing to delete xxx 问题处理

发表于 2023-05-12 | 分类于 笔记 |

问题

在配置工地项目环境时,执行 npm install 初始化时,报错: Refusing to delete xxx

1
2
3
4
5
6
7
8
9
10
11
12
13
3621 verbose stack Error: Refusing to delete E:\git\xxx\node_modules\_babel-eslint@10.1.0@babel-eslint\node_modules\@babel\traverse\node_modules\@babel\generator\node_modules\.bin\jsesc.ps1: ../../../../_jsesc@2.5.2@jsesc/bin/jsesc symlink target is not controlled by npm E:\git\xxx\node_modules\_babel-eslint@10.1.0@babel-eslint\node_modules\@babel\traverse\node_modules\@babel\generator\node_modules\jsesc
43621 verbose stack at clobberFail (D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\lib\rm.js:121:12)
43621 verbose stack at isSafeToRm (D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\lib\rm.js:111:15)
43621 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\lib\rm.js:54:5
43621 verbose stack at LOOP (D:\nodejs_12.22.12\node_modules\npm\node_modules\slide\lib\chain.js:7:26)
43621 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\slide\lib\chain.js:18:7
43621 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\lib\rm.js:138:14
43621 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\node_modules\iferr\index.js:11:16
43621 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\node_modules\iferr\index.js:11:16
43621 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\node_modules\iferr\index.js:11:16
43621 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\node_modules\iferr\index.js:11:16
43621 verbose stack at callback (D:\nodejs_12.22.12\node_modules\npm\node_modules\graceful-fs\polyfills.js:295:20)
43621 verbose stack at FSReqCallback.oncomplete (fs.js:168:21)
1
2
3
4
5
6
7
8
9
10
11
12
13
46159 verbose stack Error: Refusing to delete E:\git\xxx\node_modules\_babel-eslint@10.1.0@babel-eslint\node_modules\@babel\traverse\node_modules\.bin\parser.ps1: ../../../../_@babel_parser@7.21.8@@babel/parser/bin/babel-parser.js symlink target is not controlled by npm E:\git\xxx\node_modules\_babel-eslint@10.1.0@babel-eslint\node_modules\@babel\traverse\node_modules\@babel\parser
46159 verbose stack at clobberFail (D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\lib\rm.js:121:12)
46159 verbose stack at isSafeToRm (D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\lib\rm.js:111:15)
46159 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\lib\rm.js:54:5
46159 verbose stack at LOOP (D:\nodejs_12.22.12\node_modules\npm\node_modules\slide\lib\chain.js:7:26)
46159 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\slide\lib\chain.js:18:7
46159 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\lib\rm.js:138:14
46159 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\node_modules\iferr\index.js:11:16
46159 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\node_modules\iferr\index.js:11:16
46159 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\node_modules\iferr\index.js:11:16
46159 verbose stack at D:\nodejs_12.22.12\node_modules\npm\node_modules\gentle-fs\node_modules\iferr\index.js:11:16
46159 verbose stack at callback (D:\nodejs_12.22.12\node_modules\npm\node_modules\graceful-fs\polyfills.js:295:20)
46159 verbose stack at FSReqCallback.oncomplete (fs.js:168:21)

解决
经过反复更换 node、npm 版本无果,删除 package-lock.json 无效,删除 .npmrc 无效后,尝试根据报错删除对应文件,如

E:\git\xxx\node_modules\_babel-eslint@10.1.0@babel-eslint\node_modules\@babel\traverse\node_modules\@babel\generator\node_modules\.bin\jsesc.ps1

E:\git\xxx\node_modules\_babel-eslint@10.1.0@babel-eslint\node_modules\@babel\traverse\node_modules\@babel\generator\node_modules\.bin\jsesc.cmd

E:\git\xxx\node_modules\_babel-eslint@10.1.0@babel-eslint\node_modules\@babel\traverse\node_modules\@babel\generator\node_modules\.bin\jsesc

E:\git\xxx\node_modules\_babel-eslint@10.1.0@babel-eslint\node_modules\@babel\traverse\node_modules\.bin\parser.ps1

E:\git\xxx\node_modules\_babel-eslint@10.1.0@babel-eslint\node_modules\@babel\traverse\node_modules\.bin\parser.cmd

E:\git\xxx\node_modules\_babel-eslint@10.1.0@babel-eslint\node_modules\@babel\traverse\node_modules\.bin\parser

后,再次执行 npm install 不再报错,安装成功。

一次常规apk逆向

发表于 2022-10-01 | 分类于 黑科技 |

Apktool 解包打包

  1. 下载最新版 apktool.jar 和 apktool.bat

    Installation for Apktool

  2. 将 apk(以base.apk为例) 与 apktool.jar 和 apktool.bat 放在同一目录

  3. 解包

    1
    apktool.bat d base.apk

    生成 base 文件夹

  4. 修改文件

  5. 打包

    1
    apktool.bat b base

    在 ./base/dist 中找到 base.apk

使用 SignApk 重新签名

  1. 生成 keystore 签名文件

    1
    keytool -genkey -alias 别名 -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
  2. 将 keystore 文件转换为 pk8 和 x509.pem 此部分参考这里

    1. 生成 pk12 文件

      1
      keytool -importkeystore -srckeystore test.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
    2. 生成 rsa.pem

      1
      openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem
    3. 复制 BEGIN CERTIFICATE、END CERTIFICATE 部分(包含这两行)到新文件 cert.x509.pem,即是我们最后需要的 x509.pem 证书文件

    4. 生成 pk8 文件

      1
      openssl pkcs8 -topk8 -outform DER -in tmp.rsa.pem -inform PEM -out private.pk8 -nocrypt
  3. 下载 SignApk,将 base.apk 放入 signapk 目录

  4. 签名

    1
    java -jar signapk.jar cert.x509.pem private.pk8 base.apk new.apk

RMVA切换到后台时停止BGM思路

发表于 2022-10-01 | 分类于 RPG Maker |

微博图床挂了……
效果
借助 @晴兰 和 @yangff 大佬的 WndProc 总算实现了切换后台事件的监听,之前从第三方 Player 入手一直不成功,目测是加载 RGSSXXX.dll 后 WndProc 被接管了。
WIN32API
这样一来就可以处理 RM 默认切到后台后渲染暂停但 BGM 继续播放的情况,避免演出和音乐不同步。

原版 Audio 没有暂停,续播功能只支持 ogg 格式,需要使用第三方音乐引擎。

目前找到的有

  • SEAL

  • FMOD(注意 fmod 收费)

代码:

阅读全文 »

仿羊了个羊消除玩法原型

发表于 2022-09-21 | 分类于 Cocos2d-X |

羊了个羊消除玩法原型

包含消除玩法场景及一个关卡编辑器

引擎:Cocos Creator 3.6.0

在线演示:移动端

截图:

游戏场景

游戏场景(main)

关卡层数据编辑器

关卡层数据编辑器(面板->map_editor->关卡编辑器)

源码地址:

阅读全文 »

Go North! 古诺打砖块~

发表于 2021-12-29 | 分类于 Cocos2d-X |

说明

Go North! 古诺打砖块小游戏~

为论坛复活准备的投稿坑,然而并没有复活……

作为好久没填坑的练手,使用 Cocos Creator 2.4.4 制作。

今年好咸啊。

去年也好咸。

点击这里(手机)/这里(PC)进入

截图

pic

点到线段的最短位置

发表于 2020-01-10 | 分类于 JavaScript |

效果

计算点到线段的最短位置,效果如下:



代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/**
* 定义向量
*/
var Vec2 = function(x, y) {
this.x = x;
this.y = y;
};
Vec2.prototype.add = function(vector, out) {
out = out || new Vec2();
out.x = this.x + vector.x;
out.y = this.y + vector.y;
return out;
};

Vec2.prototype.sub = function (vector, out) {
out = out || new Vec2();
out.x = this.x - vector.x;
out.y = this.y - vector.y;
return out;
};

Vec2.prototype.magSqr = function () {
return this.x * this.x + this.y * this.y;
};

Vec2.prototype.mul = function (num, out) {
out = out || new Vec2();
out.x = this.x * num;
out.y = this.y * num;
return out;
};

Vec2.prototype.dot = function (vector) {
return this.x * vector.x + this.y * vector.y;
};

Vec2.prototype.project = function (vector) {
return vector.mul(this.dot(vector) / vector.dot(vector));
};

/**
* 计算点到直线距离最短的点(垂足或离点最近的两端点)
* @param {*} x
* @param {*} y
* @param {*} x1
* @param {*} y1
* @param {*} x2
* @param {*} y2
*/
function calcShortestPoint(x, y, x1, y1, x2, y2) {
var op = new Vec2(x, y);
var op1 = new Vec2(x1, y1);
var op2 = new Vec2(x2, y2);

// 做垂足
var p1p2 = op2.sub(op1);
var p1p = op.sub(op1);
var p2p = op.sub(op2);
var proj_pp2_p1p2 = p2p.project(p1p2);
var ot = op2.add(proj_pp2_p1p2); // t的坐标
// 计算距离
var pt = op.sub(ot);
var tp1 = op1.sub(ot);
var tp2 = op2.sub(ot);
var len2_pp1 = p1p.magSqr();
var len2_pp2 = p2p.magSqr();
var len2_pt = pt.magSqr();
var pos = [op1, op2, ot][[len2_pp1, len2_pp2, len2_pt].indexOf(Math.min(len2_pp1, len2_pp2, len2_pt))];
// 判断垂足点在线段内
if (tp1.magSqr() + tp2.magSqr() - p1p2.magSqr() > 0) {
pos = [op1, op2][[len2_pp1, len2_pp2].indexOf(Math.min(len2_pp1, len2_pp2))];
}
return pos;
}

算法解析

阅读全文 »
12…6
烁灵SureBrz

烁灵SureBrz

52 日志
14 分类
49 标签
邻家的小屋
  • 橡皮擦擦
  • ShiinaYASHIRO Games
© 2013 - 2025 烁灵SureBrz |
由 Hexo 强力驱动
主题 - NexT.Mist