Skip to content

Releases: jyanf/Custom_SL

v2.9.1b

02 Jul 19:42
Compare
Choose a tag to compare

shady-packer 2.9 更新日志

Loader

  • 修复了文件夹内文件变更时的自动重载问题
  • 调整了加载顺序以支持更多自定义情况

Lua 相关

  • 修复了createObject偶然崩溃的 bug
  • 新增 memory.new(size)memory.delete(ptr) 内存管理函数
  • 修复了custom hook的竞态条件问题
  1. 开放更多功能:

    • battle.ObjectBase

      • .center -- Vector2f (中心点坐标)
      • .isGui -- boolean (是否作为GUI绘制)
      • .skillIndex -- integer (必杀索引)
      • .shadowOn -- boolean (阴影开关)
      • .shadowOffset -- number (阴影纵向偏移量)
    • battle.Object

      • .layer -- integer(±1) (图层)
      • .gpShort -- integer[6]数组 (短整型通用参数)
      • .gpFloat -- number[3]数组 (浮点型通用参数)
      • .customData -- number[?]不定长数组 (自定义数据)
    • battle.Player

      • .gpShort -- integer[6]数组 (短整型通用参数)
      • .gpFloat -- number[6]数组 (浮点型通用参数)
      • .teamId/isRight -- integer(1P=0, 2P=1) (左右标识)
      • .paletteId -- integer (配色ID)
      • .input -- gui.KeyInputLight (实时输入)
      • .inputBuffered -- gui.KeyInputLight (缓冲输入)
    • gui.Cursor

      • .isVisible -- boolean (光标可见性)
      • .sfxId -- integer, no_sfx=-1 (音效ID,-1表示无音效)
      • .max -- integer, const (最大项数,常量)
      • .page -- integer, const (当前页码,常量)
      • :getPosition(index) -> integer, integer (获取位置坐标)
      • :setPageRows(rows) -> void (设置每页行数)
      • :pgUp()
      • :pgDn()
    • soku.playBGM(path, fadeOut, fadeIn)

      • 播放背景音乐,支持淡入淡出效果
      • 参数:路径|nil, 淡出时间(帧), 淡入时间(帧)
    • soku.Vector2f 新增函数

      • :length() -> number (向量长度)
      • :angle() -> number (角度值,范围-180~180)
      • :cross(other) -> number (向量叉积)
      • :dot(other) -> number (向量点积)
  2. 新增 soku.Vector2f 元方法,支持表达式操作:

    • __add 加法,例如:1+vec, vec+1, vec1+vec2
    • __sub 减法,例如:1-vec, vec-1, vec1-vec2
    • __mul 乘法,例如:vec*2, 2*vec
    • __div 除法,例如:vec/2
    • __unm 取负,例如:-vec
    • __eq 相等判断,例如:vec1==vec2
    • __tostring 转换为字符串输出,例如:print(vec)
  3. createObject 参数优化

    • 参数 customData 现在可以自动转换为浮点数组:

      • 数字 1 → 转换为 {0,0,1}
      • nil → 转换为 {0,0,0}
      • 表格 → 保持原样 {table[1], table[2],...}
      • 不再需要手动调用 string.pack()!
    • 参数 direction 默认继承创建者的方向

    • 参数 x, y 默认继承创建者位置,支持用一个soku.Vector2f 变量代替

    • 示例:

      -- 新写法
      player:createObject(800, player.position+soku.Vector2f(50,100), nil, 1, {0,0,1,2})
      
      -- 等效旧写法
      player:createObject(800, player.position.x+50, player.position.y+100, 
                         player.direction, 1, string.pack("<ffff",0,0,1,2))
    • 同样适用于 Object.createChild, Object.createObject

  4. 新增 GUI 弹窗支持 (实验性功能):

    • gui.Renderer 新增属性

      .MSG_CLOSED = -1  -- 消息窗口未打开
      .MSG_WAIT = 0     -- 等待用户响应
      .MSG_OK = 1       -- 用户选择确定
      .MSG_CANCEL = 2   -- 用户选择取消
      .MSG_YES = 3      -- 用户选择是
      .MSG_NO = 4       -- 用户选择否
      .showResult       -- 显示结果状态枚举
    • 新增方法

      • :ShowMessage(text) -> boolean (显示对话框)
      • :ShowChoice(text, defaultYes) -> boolean (显示带选择的对话框)
      • :RemoveMessage() -> boolean (移除消息)