太阳TS基础框架(solar)

太阳ts相关支持信息

太阳rpg编辑器官网

太阳rpg编辑器QQ群941442872

太阳rpg编辑器 TS(Typescript)做图视频教学

编辑器基础使用教学

TS做图基础方向与常犯错误

【T党学习TS的必看】T触发转TS触发

TS里4个字符的物编id转number id可使用以下方法互转:

let idNum: any=FourCC("hooo")//字符串转10进制的整数id

let idStr = id2string(idNum)//10进制的整数转4个字符

新建地图(TS)模板 即可获得太阳ts的基础库

这些库能帮助你完成最常用的功能

  • 包含CJ、BJ、japi、DZapi、部分ydwe函数(比如冲锋、任意单位伤害事件)

其中bj与ydwe由lua库实现(blizzard.lua、solar_addons.lua)

APP.ts为入口文件。

里面推荐初始化State(通常我们写的逻辑业务都是State)

可查看库里的其他State以获得State的编程思路

里面默认没有启用ECS系统(通常这个系统不是超复杂的游戏 不需要使用它 以减轻学习成本)

State (推荐,轻量版的ECS编程风格)

State主要是逻辑跟参数分开 参数通过静态变量config设置

State里启动逻辑触发 逻辑触发通过读取config里的数据来工作

比如击杀不同单位获得不同经验:
config.hpea(单位类型) = 10 (奖励值)
config.hfoo(单位类型) = 20 (奖励值)
然后触发里监听单位死亡事件
if(config.死亡单位类型) 即config有这个单位的奖励值配置信息
然后就增加 凶手单位经验值 + config[死亡的单位类型]

  • 为什么要以这种方式做:

此方式能达到业务数据与代码逻辑分离
通常死亡单位加经验值的代码逻辑是不会变的
而config里的奖励数值经常需要调整或新增
通过在另一个StateConfig文件里来专门配置config值,就可以只关注数据了
再进一步,如果我们的配置StateConfig是通过xlsx自动生成的 就可以实现在表格里调整这些数据了
通过以上架构思维可借助太阳rpg编辑器的xlsx编译器实现xlsx做图
基础逻辑代码不用重复写 通过不同的xlsx配置项来组装不同地图 减少重复劳动

AddExpOnKillState.ts
import {Trigger} from "solar/w3ts/handles/trigger";

export default class AddExpOnKillState {
//死亡单位类型 与 奖励经验值
static config: { [id: string]: number } = {}

constructor() {
let trigger = new Trigger()
trigger.registerAnyUnitEvent(EVENT_PLAYER_UNIT_DEATH)
trigger.addAction(() => {
if (!IsUnitType(GetKillingUnit(), UNIT_TYPE_HERO)) {
//凶手不是英雄就退出后续逻辑
return
}
let deathUnitTypeStr = id2string(GetUnitTypeId(GetTriggerUnit()));
let addExp = AddExpOnKillState.config[deathUnitTypeStr]
if (addExp) {
AddHeroXP(GetKillingUnit(), addExp, true)
}
})
}
}
AddExpOnKillStateConfig.ts
import AddExpOnKillState from "./AddExpOnKillState";

export default function AddExpOnKillStateConfig() {
AddExpOnKillState.config.hpea = 10;
AddExpOnKillState.config.hfoo = 20;
}

扩展阅读

新建地图(Pcg)测试 能获得更多的ts库

这些库主要是偏功能业务了 比如每秒加属性 刷兵 伤害系统 各种模拟等等!

  • 可以从这里找到需要的库复制粘贴到自己的地图中使用
  • 不推荐完全在此模板下做图,因为这包括了很多TS库,大部分功能不适合同时出现在当前地图

更新Solar基础TS框架

在左侧文件树右键>新建>添加TS支持基础文件 即可覆盖旧版本的TS基础文件以达到更新太阳TS框架