资讯/霸业API及函数手册
霸业API及函数手册
这本手册怎么用总说明
左边三组条目:霸业API 是引擎导出的数据(baye.data.*),钩子函数是引擎来问你的地方(baye.hooks.*),功能函数是你随时可以调的工具(baye.*)。
点任意一条,右边显示它的具体定义、功能、调用时机、输入输出参数与类型、返回值、示例用法。条目多的(比如某个对象带一堆子项)在树里可以再展开一层。
坐标统一用逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128;ASCII 字符宽 6、汉字宽 12、行高 12。上游文档没写全的参数(比如 drawText 漏掉的第 4 参)按引擎源码补齐;凭代码推断出来的地方一律标 【推断】,看到标错请直接指出。
想先弄懂「钩子是什么、脚本怎么装进 lib、怎么在浏览器里调」,看配套的《霸业开发指导手册》。
baye.data.g_FightMap[]数据项
| 具体定义 | baye.data.g_FightMap[] |
| 功能 | 战斗地图屏显缓存 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_FightMap[] 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_FightPath[]数据项
| 具体定义 | baye.data.g_FightPath[] |
| 功能 | 战斗行军计算 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_FightPath[] 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_FgtAtkRng[]数据项
| 具体定义 | baye.data.g_FgtAtkRng[] |
| 功能 | 攻击范围 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_FgtAtkRng[] 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_TileId数据项
| 具体定义 | baye.data.g_TileId |
| 功能 | 当前地图所用tile的ID |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_TileId 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_EneTmpProv数据项
| 具体定义 | baye.data.g_EneTmpProv |
| 功能 | 战斗模块,敌人粮草临时变量 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_EneTmpProv 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_MapWid数据项
| 具体定义 | baye.data.g_MapWid |
| 功能 | 战斗地图宽度 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_MapWid 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_MapHgt数据项
| 具体定义 | baye.data.g_MapHgt |
| 功能 | 战斗地图高度 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_MapHgt 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_FightMapData[]数据项
| 具体定义 | baye.data.g_FightMapData[] |
| 功能 | 战场地形数据矩阵 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_FightMapData[] 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_screenWidth数据项
| 具体定义 | baye.data.g_screenWidth |
| 功能 | 屏幕宽度 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_screenWidth 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_screenHeight数据项
| 具体定义 | baye.data.g_screenHeight |
| 功能 | 屏幕高度 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_screenHeight 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_FlipDrawing数据项
| 具体定义 | baye.data.g_FlipDrawing |
| 功能 | 镜像绘图 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_FlipDrawing 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_disablePushMessage数据项
| 具体定义 | baye.data.g_disablePushMessage |
| 功能 | 屏蔽消息 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_disablePushMessage 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_FoucsX数据项
| 具体定义 | baye.data.g_FoucsX |
| 功能 | 光标的地图坐标 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_FoucsX 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_FoucsY数据项
| 具体定义 | baye.data.g_FoucsY |
| 功能 | 当前地图显示的起始坐标(与相邻项成对) |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_FoucsY 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_MapSX数据项
| 具体定义 | baye.data.g_MapSX |
| 功能 | 当前地图显示的起始坐标 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_MapSX 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_MapSY数据项
| 具体定义 | baye.data.g_MapSY |
| 功能 | (上游未给说明) |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_MapSY 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_PathSX数据项
| 具体定义 | baye.data.g_PathSX |
| 功能 | 行军范围地图起始坐标(与相邻项成对) |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_PathSX 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_PathSY数据项
| 具体定义 | baye.data.g_PathSY |
| 功能 | 行军范围地图起始坐标 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_PathSY 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_PUseSX数据项
| 具体定义 | baye.data.g_PUseSX |
| 功能 | 行军范围使用起始坐标(与相邻项成对) |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_PUseSX 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_PUseSY数据项
| 具体定义 | baye.data.g_PUseSY |
| 功能 | 行军范围使用起始坐标 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_PUseSY 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_BakUpX数据项
| 具体定义 | baye.data.g_BakUpX |
| 功能 | 将领坐标备份(与相邻项成对) |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_BakUpX 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_BakUpY数据项
| 具体定义 | baye.data.g_BakUpY |
| 功能 | 将领坐标备份 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_BakUpY 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_CityX数据项
| 具体定义 | baye.data.g_CityX |
| 功能 | 城市坐标(与相邻项成对) |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_CityX 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_CityY数据项
| 具体定义 | baye.data.g_CityY |
| 功能 | 城市坐标 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_CityY 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_FgtOver数据项
| 具体定义 | baye.data.g_FgtOver |
| 功能 | 战斗是否结束 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_FgtOver 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_FgtWeather数据项
| 具体定义 | baye.data.g_FgtWeather |
| 功能 | 战场天气情况 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_FgtWeather 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_FgtBoutCnt数据项
| 具体定义 | baye.data.g_FgtBoutCnt |
| 功能 | 战斗回合计数 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_FgtBoutCnt 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_MainGenIdx数据项
| 具体定义 | baye.data.g_MainGenIdx |
| 功能 | 主将序号 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_MainGenIdx 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_LookEnemy数据项
| 具体定义 | baye.data.g_LookEnemy |
| 功能 | 是否观看敌人移动 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_LookEnemy 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_LookMovie数据项
| 具体定义 | baye.data.g_LookMovie |
| 功能 | 是否观看战斗动画 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_LookMovie 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_MoveSpeed数据项
| 具体定义 | baye.data.g_MoveSpeed |
| 功能 | 战斗中移动速度 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_MoveSpeed 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_FgtParam.Mode数据项
| 具体定义 | baye.data.g_FgtParam.Mode |
| 功能 | 玩家的战斗模式FGT_DF|FGT_AT |
| 所属 | baye.data.g_FgtParam |
baye.data.g_FgtParam.Way数据项
| 具体定义 | baye.data.g_FgtParam.Way |
| 功能 | 战斗进攻方向 |
| 所属 | baye.data.g_FgtParam |
baye.data.g_FgtParam.MapId数据项
| 具体定义 | baye.data.g_FgtParam.MapId |
| 功能 | 城市战斗地图 |
| 所属 | baye.data.g_FgtParam |
baye.data.g_FgtParam.CityIndex数据项
| 具体定义 | baye.data.g_FgtParam.CityIndex |
| 功能 | 城市id |
| 所属 | baye.data.g_FgtParam |
baye.data.g_FgtParam.MProvender数据项
| 具体定义 | baye.data.g_FgtParam.MProvender |
| 功能 | 玩家粮草 |
| 所属 | baye.data.g_FgtParam |
baye.data.g_FgtParam.EProvender数据项
| 具体定义 | baye.data.g_FgtParam.EProvender |
| 功能 | 敌人粮草 |
| 所属 | baye.data.g_FgtParam |
baye.data.g_FgtParam.GenArray[20]数据项
| 具体定义 | baye.data.g_FgtParam.GenArray[20] |
| 功能 | 将领队列 |
| 所属 | baye.data.g_FgtParam |
baye.data.g_FgtParam数据对象(含子项)
| 具体定义 | baye.data.g_FgtParam |
| 功能 | 战斗模块接口参数 |
子项一览(点名称看单条说明):
| 子项 | 说明 |
|---|---|
baye.data.g_FgtParam.Mode | 玩家的战斗模式FGT_DF|FGT_AT |
baye.data.g_FgtParam.Way | 战斗进攻方向 |
baye.data.g_FgtParam.MapId | 城市战斗地图 |
baye.data.g_FgtParam.CityIndex | 城市id |
baye.data.g_FgtParam.MProvender | 玩家粮草 |
baye.data.g_FgtParam.EProvender | 敌人粮草 |
baye.data.g_FgtParam.GenArray[20] | 将领队列 |
baye.data.g_GenPos[?].x数据项
| 具体定义 | baye.data.g_GenPos[?].x |
| 功能 | 地图坐标x |
| 所属 | baye.data.g_GenPos[20] |
baye.data.g_GenPos[?].y数据项
| 具体定义 | baye.data.g_GenPos[?].y |
| 功能 | 地图坐标y |
| 所属 | baye.data.g_GenPos[20] |
baye.data.g_GenPos[?].hp数据项
| 具体定义 | baye.data.g_GenPos[?].hp |
| 功能 | 生命 |
| 所属 | baye.data.g_GenPos[20] |
baye.data.g_GenPos[?].mp数据项
| 具体定义 | baye.data.g_GenPos[?].mp |
| 功能 | 技能点 |
| 所属 | baye.data.g_GenPos[20] |
baye.data.g_GenPos[?].move数据项
| 具体定义 | baye.data.g_GenPos[?].move |
| 功能 | 移动力 |
| 所属 | baye.data.g_GenPos[20] |
baye.data.g_GenPos[?].active数据项
| 具体定义 | baye.data.g_GenPos[?].active |
| 功能 | 将领执行命令能力 |
| 所属 | baye.data.g_GenPos[20] |
baye.data.g_GenPos[?].state数据项
| 具体定义 | baye.data.g_GenPos[?].state |
| 功能 | 状态 |
| 所属 | baye.data.g_GenPos[20] |
baye.data.g_GenPos[20]数据对象(含子项)
| 具体定义 | baye.data.g_GenPos[20] |
| 功能 | 将领地图位置及基本属性 |
子项一览(点名称看单条说明):
baye.data.g_GenAtt[?].canny数据项
| 具体定义 | baye.data.g_GenAtt[?].canny |
| 功能 | 中计谋的可能性 |
| 所属 | baye.data.g_GenAtt[2] |
baye.data.g_GenAtt[?].ter数据项
| 具体定义 | baye.data.g_GenAtt[?].ter |
| 功能 | 将领所在地形 |
| 所属 | baye.data.g_GenAtt[2] |
baye.data.g_GenAtt[?].bile数据项
| 具体定义 | baye.data.g_GenAtt[?].bile |
| 功能 | 愤怒值 |
| 所属 | baye.data.g_GenAtt[2] |
baye.data.g_GenAtt[?].armsType数据项
| 具体定义 | baye.data.g_GenAtt[?].armsType |
| 功能 | 兵种 |
| 所属 | baye.data.g_GenAtt[2] |
baye.data.g_GenAtt[?].at数据项
| 具体定义 | baye.data.g_GenAtt[?].at |
| 功能 | 攻击力 |
| 所属 | baye.data.g_GenAtt[2] |
baye.data.g_GenAtt[?].df数据项
| 具体定义 | baye.data.g_GenAtt[?].df |
| 功能 | 防御力 |
| 所属 | baye.data.g_GenAtt[2] |
baye.data.g_GenAtt[?].generalIndex数据项
| 具体定义 | baye.data.g_GenAtt[?].generalIndex |
| 功能 | 将领id |
| 所属 | baye.data.g_GenAtt[2] |
baye.data.g_GenAtt[2]数据对象(含子项)
| 具体定义 | baye.data.g_GenAtt[2] |
| 功能 | 攻击状态下的两个将领属性 |
子项一览(点名称看单条说明):
baye.data.g_AutoUpdateMapXY数据项
| 具体定义 | baye.data.g_AutoUpdateMapXY |
| 功能 | 玩家君主(与相邻项成对) |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_AutoUpdateMapXY 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_PlayerKing数据项
| 具体定义 | baye.data.g_PlayerKing |
| 功能 | 玩家君主 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_PlayerKing 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_YearDate数据项
| 具体定义 | baye.data.g_YearDate |
| 功能 | 当前日期 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_YearDate 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_MonthDate数据项
| 具体定义 | baye.data.g_MonthDate |
| 功能 | 当前日期 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_MonthDate 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_PIdx数据项
| 具体定义 | baye.data.g_PIdx |
| 功能 | 历史时期 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_PIdx 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_Persons[?].OldBelong数据项
| 具体定义 | baye.data.g_Persons[?].OldBelong |
| 功能 | 俘虏的旧归属 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].Belong数据项
| 具体定义 | baye.data.g_Persons[?].Belong |
| 功能 | 归属 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].Level数据项
| 具体定义 | baye.data.g_Persons[?].Level |
| 功能 | 等级 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].Force数据项
| 具体定义 | baye.data.g_Persons[?].Force |
| 功能 | 武力 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].IQ数据项
| 具体定义 | baye.data.g_Persons[?].IQ |
| 功能 | 智力 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].Devotion数据项
| 具体定义 | baye.data.g_Persons[?].Devotion |
| 功能 | 忠诚 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].Character数据项
| 具体定义 | baye.data.g_Persons[?].Character |
| 功能 | 性格 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].Experience数据项
| 具体定义 | baye.data.g_Persons[?].Experience |
| 功能 | 经验 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].Thew数据项
| 具体定义 | baye.data.g_Persons[?].Thew |
| 功能 | 体力 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].ArmsType数据项
| 具体定义 | baye.data.g_Persons[?].ArmsType |
| 功能 | 兵种 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].Arms数据项
| 具体定义 | baye.data.g_Persons[?].Arms |
| 功能 | 兵力 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].Equip[2]数据项
| 具体定义 | baye.data.g_Persons[?].Equip[2] |
| 功能 | 装备 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[?].Age数据项
| 具体定义 | baye.data.g_Persons[?].Age |
| 功能 | 年龄 |
| 所属 | baye.data.g_Persons[250] |
baye.data.g_Persons[250]数据对象(含子项)
| 具体定义 | baye.data.g_Persons[250] |
| 功能 | 存放人才属性指针 |
子项一览(点名称看单条说明):
baye.data.g_Cities[?].State数据项
| 具体定义 | baye.data.g_Cities[?].State |
| 功能 | (上游未给说明) |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].Belong数据项
| 具体定义 | baye.data.g_Cities[?].Belong |
| 功能 | 归属 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].SatrapId数据项
| 具体定义 | baye.data.g_Cities[?].SatrapId |
| 功能 | 太守编号 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].FarmingLimit数据项
| 具体定义 | baye.data.g_Cities[?].FarmingLimit |
| 功能 | 农业上限 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].Farming数据项
| 具体定义 | baye.data.g_Cities[?].Farming |
| 功能 | 农业开发度 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].CommerceLimit数据项
| 具体定义 | baye.data.g_Cities[?].CommerceLimit |
| 功能 | 商业上限 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].Commerce数据项
| 具体定义 | baye.data.g_Cities[?].Commerce |
| 功能 | 商业开发度 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].PeopleDevotion数据项
| 具体定义 | baye.data.g_Cities[?].PeopleDevotion |
| 功能 | 民忠 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].AvoidCalamity数据项
| 具体定义 | baye.data.g_Cities[?].AvoidCalamity |
| 功能 | 防灾 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].PopulationLimit数据项
| 具体定义 | baye.data.g_Cities[?].PopulationLimit |
| 功能 | 人口上限 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].Population数据项
| 具体定义 | baye.data.g_Cities[?].Population |
| 功能 | 人口 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].Money数据项
| 具体定义 | baye.data.g_Cities[?].Money |
| 功能 | 金钱 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].Food数据项
| 具体定义 | baye.data.g_Cities[?].Food |
| 功能 | 粮食 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].MothballArms数据项
| 具体定义 | baye.data.g_Cities[?].MothballArms |
| 功能 | 后备兵力 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].PersonQueue数据项
| 具体定义 | baye.data.g_Cities[?].PersonQueue |
| 功能 | 人才队列 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].Persons数据项
| 具体定义 | baye.data.g_Cities[?].Persons |
| 功能 | 人才数 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].ToolQueue数据项
| 具体定义 | baye.data.g_Cities[?].ToolQueue |
| 功能 | 道具队列 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[?].Tools数据项
| 具体定义 | baye.data.g_Cities[?].Tools |
| 功能 | 道具数 |
| 所属 | baye.data.g_Cities[38] |
baye.data.g_Cities[38]数据对象(含子项)
| 具体定义 | baye.data.g_Cities[38] |
| 功能 | 存放城市属性指针 |
子项一览(点名称看单条说明):
baye.data.g_PersonsQueue[PERSON_MAX]数据项
| 具体定义 | baye.data.g_PersonsQueue[PERSON_MAX] |
| 功能 | 人才队列 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_PersonsQueue[PERSON_MAX] 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_GoodsQueue[GOODS_MAX]数据项
| 具体定义 | baye.data.g_GoodsQueue[GOODS_MAX] |
| 功能 | 道具队列 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_GoodsQueue[GOODS_MAX] 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_CityPos数据项
| 具体定义 | baye.data.g_CityPos |
| 功能 | 当前城市地图显示位置结构 |
| 用法 | 读:在控制台或脚本里直接取这个值。写:给 baye.data.g_CityPos 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。 |
baye.data.g_Tools[?].idx数据项
| 具体定义 | baye.data.g_Tools[?].idx |
| 功能 | 道具序号 |
| 所属 | baye.data.g_Tools[] |
baye.data.g_Tools[?].useflag数据项
| 具体定义 | baye.data.g_Tools[?].useflag |
| 功能 | 使用标志:是被使用还是被装备 |
| 所属 | baye.data.g_Tools[] |
baye.data.g_Tools[?].atRange[30]数据项
| 具体定义 | baye.data.g_Tools[?].atRange[30] |
| 功能 | 攻击范围数据 |
| 所属 | baye.data.g_Tools[] |
baye.data.g_Tools[?].changeAttackRange数据项
| 具体定义 | baye.data.g_Tools[?].changeAttackRange |
| 功能 | 是否改变攻击范围 |
| 所属 | baye.data.g_Tools[] |
baye.data.g_Tools[?].at数据项
| 具体定义 | baye.data.g_Tools[?].at |
| 功能 | 对武力的加层 |
| 所属 | baye.data.g_Tools[] |
baye.data.g_Tools[?].iq数据项
| 具体定义 | baye.data.g_Tools[?].iq |
| 功能 | 对智力的加层 |
| 所属 | baye.data.g_Tools[] |
baye.data.g_Tools[?].move数据项
| 具体定义 | baye.data.g_Tools[?].move |
| 功能 | 对移动力的加层 |
| 所属 | baye.data.g_Tools[] |
baye.data.g_Tools[?].arm数据项
| 具体定义 | baye.data.g_Tools[?].arm |
| 功能 | 对兵种的改变 |
| 所属 | baye.data.g_Tools[] |
baye.data.g_Tools[]数据对象(含子项)
| 具体定义 | baye.data.g_Tools[] |
| 功能 | 存放道具属性指针 |
子项一览(点名称看单条说明):
| 子项 | 说明 |
|---|---|
baye.data.g_Tools[?].idx | 道具序号 |
baye.data.g_Tools[?].useflag | 使用标志:是被使用还是被装备 |
baye.data.g_Tools[?].atRange[30] | 攻击范围数据 |
baye.data.g_Tools[?].changeAttackRange | 是否改变攻击范围 |
baye.data.g_Tools[?].at | 对武力的加层 |
baye.data.g_Tools[?].iq | 对智力的加层 |
baye.data.g_Tools[?].move | 对移动力的加层 |
baye.data.g_Tools[?].arm | 对兵种的改变 |
baye.data.g_Skills[?].aim数据项
| 具体定义 | baye.data.g_Skills[?].aim |
| 功能 | 施展目标 |
| 所属 | baye.data.g_Skills[] |
baye.data.g_Skills[?].state数据项
| 具体定义 | baye.data.g_Skills[?].state |
| 功能 | 技能对目标状态的影响 |
| 所属 | baye.data.g_Skills[] |
baye.data.g_Skills[?].power数据项
| 具体定义 | baye.data.g_Skills[?].power |
| 功能 | 对兵力的基本伤害 |
| 所属 | baye.data.g_Skills[] |
baye.data.g_Skills[?].destroy数据项
| 具体定义 | baye.data.g_Skills[?].destroy |
| 功能 | 对粮草的基本伤害 |
| 所属 | baye.data.g_Skills[] |
baye.data.g_Skills[?].useMp数据项
| 具体定义 | baye.data.g_Skills[?].useMp |
| 功能 | 消耗技能点 |
| 所属 | baye.data.g_Skills[] |
baye.data.g_Skills[?].weather[5]数据项
| 具体定义 | baye.data.g_Skills[?].weather[5] |
| 功能 | 天气效果(0为不可施展 1-100%效果) |
| 所属 | baye.data.g_Skills[] |
baye.data.g_Skills[?].eland[8]数据项
| 具体定义 | baye.data.g_Skills[?].eland[8] |
| 功能 | 敌人所在地形效果(0为不可施展 1-100%效果) |
| 所属 | baye.data.g_Skills[] |
baye.data.g_Skills[?].oland[8]数据项
| 具体定义 | baye.data.g_Skills[?].oland[8] |
| 功能 | 我方所在地形效果(0为不可施展 1-100%效果) |
| 所属 | baye.data.g_Skills[] |
baye.data.g_Skills[?].earm[6]数据项
| 具体定义 | baye.data.g_Skills[?].earm[6] |
| 功能 | 敌人兵种加层(0为不可施展 1-100%效果) |
| 所属 | baye.data.g_Skills[] |
baye.data.g_Skills[]数据对象(含子项)
| 具体定义 | baye.data.g_Skills[] |
| 功能 | 技能属性 |
子项一览(点名称看单条说明):
| 子项 | 说明 |
|---|---|
baye.data.g_Skills[?].aim | 施展目标 |
baye.data.g_Skills[?].state | 技能对目标状态的影响 |
baye.data.g_Skills[?].power | 对兵力的基本伤害 |
baye.data.g_Skills[?].destroy | 对粮草的基本伤害 |
baye.data.g_Skills[?].useMp | 消耗技能点 |
baye.data.g_Skills[?].weather[5] | 天气效果(0为不可施展 1-100%效果) |
baye.data.g_Skills[?].eland[8] | 敌人所在地形效果(0为不可施展 1-100%效果) |
baye.data.g_Skills[?].oland[8] | 我方所在地形效果(0为不可施展 1-100%效果) |
baye.data.g_Skills[?].earm[6] | 敌人兵种加层(0为不可施展 1-100%效果) |
baye.data.g_engineConfig.fixCityOffset数据项
| 具体定义 | baye.data.g_engineConfig.fixCityOffset |
| 功能 | 纠正城市偏移 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.fixThewOverFlow数据项
| 具体定义 | baye.data.g_engineConfig.fixThewOverFlow |
| 功能 | 修复体力溢出bug |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.fixFoodOverFlow数据项
| 具体定义 | baye.data.g_engineConfig.fixFoodOverFlow |
| 功能 | 修复出征刷粮草 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.fixOverFlow16数据项
| 具体定义 | baye.data.g_engineConfig.fixOverFlow16 |
| 功能 | 修复多处16位溢出 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.fixConsumeMoney数据项
| 具体定义 | baye.data.g_engineConfig.fixConsumeMoney |
| 功能 | 启用招降收费 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.fixFightMoveOutRange数据项
| 具体定义 | baye.data.g_engineConfig.fixFightMoveOutRange |
| 功能 | 修复战场瞬移 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.fixAlienateComsumeThew数据项
| 具体定义 | baye.data.g_engineConfig.fixAlienateComsumeThew |
| 功能 | 修复离间减小敌将体力问题 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.enableToolAttackRange数据项
| 具体定义 | baye.data.g_engineConfig.enableToolAttackRange |
| 功能 | 启用"道具改变攻击范围" |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.enable16bitConsumeMoney数据项
| 具体定义 | baye.data.g_engineConfig.enable16bitConsumeMoney |
| 功能 | 启用扩展金钱消耗(16位) |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.enableScript数据项
| 具体定义 | baye.data.g_engineConfig.enableScript |
| 功能 | 启用脚本 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.disableSL数据项
| 具体定义 | baye.data.g_engineConfig.disableSL |
| 功能 | 禁SL |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.aiLevelUpSpeed数据项
| 具体定义 | baye.data.g_engineConfig.aiLevelUpSpeed |
| 功能 | AI升级速度 (0~100, 0使用原版默认策略) |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.disableAgeGrow数据项
| 具体定义 | baye.data.g_engineConfig.disableAgeGrow |
| 功能 | 禁用年龄增长 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.ratioOfFoodToArmsPerMouth数据项
| 具体定义 | baye.data.g_engineConfig.ratioOfFoodToArmsPerMouth |
| 功能 | 市政兵力和粮耗(默认50,越大粮耗越少) |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.ratioOfFoodToArmsPerDay数据项
| 具体定义 | baye.data.g_engineConfig.ratioOfFoodToArmsPerDay |
| 功能 | 战场兵力和粮耗参数(默认3,越大粮耗越少) |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.armsPerDevotion数据项
| 具体定义 | baye.data.g_engineConfig.armsPerDevotion |
| 功能 | 征兵量和民忠的关系(默认20) |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.armsPerMoney数据项
| 具体定义 | baye.data.g_engineConfig.armsPerMoney |
| 功能 | 每个金钱能购买的士兵数(默认10) |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.maxLevel数据项
| 具体定义 | baye.data.g_engineConfig.maxLevel |
| 功能 | 最大等级 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.responseNoteOfBettle数据项
| 具体定义 | baye.data.g_engineConfig.responseNoteOfBettle |
| 功能 | "战斗提示"允许按键跳过(默认0,填2允许) |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.aiDefenceMode数据项
| 具体定义 | baye.data.g_engineConfig.aiDefenceMode |
| 功能 | AI行军策略,默认0追主将,1守城 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.aiAttackMethod数据项
| 具体定义 | baye.data.g_engineConfig.aiAttackMethod |
| 功能 | AI攻击时选择技能/普攻的算法(0原版,1优化版) |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.batlleDisableWeatherChange数据项
| 具体定义 | baye.data.g_engineConfig.batlleDisableWeatherChange |
| 功能 | 禁止战场天气变化 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig.saveFaceListAnchor[2]数据项
| 具体定义 | baye.data.g_engineConfig.saveFaceListAnchor[2] |
| 功能 | 存档界面list左上角坐标 |
| 所属 | baye.data.g_engineConfig |
baye.data.g_engineConfig数据对象(含子项)
| 具体定义 | baye.data.g_engineConfig |
| 功能 | 引擎参数设置 |
子项一览(点名称看单条说明):
baye.hooks.aiFightCommand钩子函数
| 功能 | 战场调用脚本进行行军计算及战斗命令选择,可利用此钩子实现自定义AI行军算法。 |
| 调用时机 | AI每次计算将领行军策略前 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.sIdx | U8 | 需要计算的行军将领的 战场序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.type | U8 | 命令类型,0 普攻, 1 技能, 3 休息 |
| context.param | U8 | 技能序号(如果选择技能) |
| context.aIdx | U8 | 攻击或技能目标将领的 战场序号 |
baye.hooks.getSkillIds钩子函数
| 功能 | 获取将领当前可使用的技能 |
| 调用时机 | 战场每当AI或玩家使用技能前 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.generalIndex | U8 | 将领的 战场序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.skillIds | [U8] | 技能号数组 |
返回值无
baye.hooks.calcAttackRange钩子函数
| 功能 | 计算攻击范围 |
| 调用时机 | 战场每次下攻击命令 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.personIndex | U8 | 将领 序号 |
| context.ter | U8 | 将领所处地形 |
| context.type | U8 | 攻击类型,0 普攻,1 技能 |
| context.skillId | U8 | 技能 ID |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.range | [U8] | 攻击范围矩阵 |
| context.rangeSize | U8 | 攻击范围矩阵的边长,如5x5矩阵填写5 |
baye.hooks.showSkill钩子函数
| 功能 | 施展技能是否成功 可用于调整技能成功率。 |
| 调用时机 | 施展技能时 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.ter | U8 | 将领所处地形 |
| context.skillId | U8 | 技能 ID |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.result | U8 | 是否成功,0 失败, 1 成功 (原context.success) |
baye.hooks.giveTool钩子函数
| 功能 | 用于控制赏赐命令是否成功 |
| 调用时机 | 执行赏赐命令,道具即将被装到人物时 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.personIndex | U8 | 将领所处地形 |
| context.toolIndex | U8 | 技能 ID |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.result | U8 | 是否成功,0 失败, 1 成功 |
baye.hooks.takeOffTool钩子函数
| 功能 | 用于控制没收命令是否成功 |
| 调用时机 | 执行赏赐命令,道具即将被装到人物时 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.personIndex | U8 | 将领所处地形 |
| context.toolIndex | U8 | 技能`ID` |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.result | U8 | 是否成功,0 失败, 1 成功 |
baye.hooks.didOpenNewGame钩子函数
| 功能 | 上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。 |
| 调用时机 | 新开局时 |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.didLoadGame钩子函数
| 功能 | 上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。 |
| 调用时机 | 成功读档后 |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.willSaveGame钩子函数
| 功能 | 上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。 |
| 调用时机 | 执行存档前 |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.tacticStage1钩子函数
| 功能 | 自定义插入点:引擎在该时机调用,做什么完全由脚本决定(读写数据、下命令、打日志都行)。 |
| 调用时机 | 每回合在更新完各城池太守之后、进入玩家策略界面之前触发一次。(按引擎源码调用点整理) |
| 输入参数 | 无 |
| 输出参数 | 无 |
引擎的运行,最顶层分为如下几个阶段循环运行:
- 判断统一或全军覆灭
- 更新每个城池的太守
- 玩家策略中 (玩家操作下各种命令,策略结束后继续后续步骤)
- 电脑策略中
- 执行命令(包括市政和军备等命令)
- 执行数据更新策略(如粮草收获等)
现脚本系统在此间插入了5个钩子点:
- 判断统一或全军覆灭
- 更新每个城池的太守
- 调用tacticStage1
- 玩家策略中 (玩家操作下各种命令,策略结束后继续后续步骤)
- 调用tacticStage2
- 电脑策略中
- 调用tacticStage3
- 执行命令(包括市政和军备等命令)
- 调用tacticStage4
- 执行数据更新策略(如粮草收获等)
- 调用tacticStage5
baye.hooks.tacticStage2钩子函数
| 功能 | 自定义插入点:引擎在该时机调用,做什么完全由脚本决定(读写数据、下命令、打日志都行)。 |
| 调用时机 | 玩家结束本轮策略(选了「结束本轮」)之后、电脑开始策略之前触发一次。(按引擎源码调用点整理) |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.tacticStage3钩子函数
| 功能 | 自定义插入点:引擎在该时机调用,做什么完全由脚本决定(读写数据、下命令、打日志都行)。 |
| 调用时机 | 电脑策略结束之后、执行本轮命令队列(市政、军备等已下达的命令)之前触发一次。(按引擎源码调用点整理) |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.tacticStage4钩子函数
| 功能 | 自定义插入点:引擎在该时机调用,做什么完全由脚本决定(读写数据、下命令、打日志都行)。 |
| 调用时机 | 命令队列执行完毕之后、做环境数据更新(粮草收获等)之前触发一次。(按引擎源码调用点整理) |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.tacticStage5钩子函数
| 功能 | 自定义插入点:引擎在该时机调用,做什么完全由脚本决定(读写数据、下命令、打日志都行)。 |
| 调用时机 | 本轮环境数据更新完成之后触发,是本轮的最后一个插入点;接着引擎进入下一回合。(按引擎源码调用点整理) |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.willAddOrder钩子函数
| 功能 | 上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。 |
| 调用时机 | 即将下达某命令 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.OrderId | U8 | 命令ID |
| context.Person | U8 | 执行命令的人物 |
| context.City | U8 | 执行命令的城池 |
| context.Object | U8 | 执行命令的目标人物ID或目标城池ID |
| context.Arms | U16 | 兵力(运输) |
| context.Food | U16 | 粮草(运输) |
| context.Money | U16 | 金钱(运输) |
| context.Consume | U8 | 命令耗时(暂无用处) |
| context.TimeCount | U8 | 命令累时(暂无用处) |
输出参数无
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.willExecuteOrder钩子函数
| 功能 | 上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。 |
| 调用时机 | 即将执行某命令 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.OrderId | U8 | 命令ID |
| context.Person | U8 | 执行命令的人物 |
| context.City | U8 | 执行命令的城池 |
| context.Object | U8 | 执行命令的目标人物ID或目标城池ID |
| context.Arms | U16 | 兵力(运输) |
| context.Food | U16 | 粮草(运输) |
| context.Money | U16 | 金钱(运输) |
| context.Consume | U8 | 命令耗时(暂无用处) |
| context.TimeCount | U8 | 命令累时(暂无用处) |
输出参数无
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.enterBattle钩子函数
| 功能 | 上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。 |
| 调用时机 | 进入战场 |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.battleStage1钩子函数
| 功能 | 自定义插入点:引擎在该时机调用,做什么完全由脚本决定(读写数据、下命令、打日志都行)。 |
| 调用时机 | 每回合在回合时间步进(满 30 天恢复将领激活、变天气、查粮草、驱动状态)之前触发一次。(按引擎源码调用点整理) |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.battleStage2钩子函数
| 功能 | 自定义插入点:引擎在该时机调用,做什么完全由脚本决定(读写数据、下命令、打日志都行)。 |
| 调用时机 | 回合时间步进之后、玩家战场策略(给将领下命令)开始之前触发一次。(按引擎源码调用点整理) |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.battleStage3钩子函数
| 功能 | 自定义插入点:引擎在该时机调用,做什么完全由脚本决定(读写数据、下命令、打日志都行)。 |
| 调用时机 | 玩家策略结束之后、AI 策略开始之前触发一次。(按引擎源码调用点整理) |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.battleStage4钩子函数
| 功能 | 自定义插入点:引擎在该时机调用,做什么完全由脚本决定(读写数据、下命令、打日志都行)。 |
| 调用时机 | AI 策略结束之后、结算本回合粮草消耗之前触发一次。(按引擎源码调用点整理) |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.battleStage5钩子函数
| 功能 | 自定义插入点:引擎在该时机调用,做什么完全由脚本决定(读写数据、下命令、打日志都行)。 |
| 调用时机 | 粮草消耗结算之后触发,是本回合的最后一个插入点;接着回到 battleStage1 进入下一回合。(按引擎源码调用点整理) |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.exitBattle钩子函数
| 功能 | 上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。 |
| 调用时机 | 战争结束 |
| 输入参数 | 无 |
| 输出参数 | 无 |
baye.hooks.cityMakeCommand钩子函数
| 功能 | 上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。 |
| 调用时机 | 城池菜单选择某命令 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.cityIndex | U8 | 城池序号 |
| context.commandIndex | U8 | 命令序号 |
输出参数无
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return 1; | 提示错误 并跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.willGiveTool钩子函数
| 功能 | 上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。 |
| 调用时机 | 即将赏赐某道具给某人 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.cityIndex | U8 | 城池序号 |
| context.personIndex | U8 | 人物序号 |
| context.toolIndex | U8 | 道具序号 |
输出参数无
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.willTakeOffTool钩子函数
| 功能 | 上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。 |
| 调用时机 | 即将没收某人某道具 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.cityIndex | U8 | 城池序号 |
| context.personIndex | U8 | 人物序号 |
| context.toolIndex | U8 | 道具序号 |
输出参数无
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.countAttackHurt钩子函数
| 功能 | 计算普通攻击对兵力伤害 |
| 调用时机 | 计算普通攻击对兵力伤害 |
输入参数无, 攻防双方数据已存储于全局变量 baye.data.g_GenAtt[] 中
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.hurt | U8 | 兵力伤害值 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.countSkillHurt钩子函数
| 功能 | 计算技能对兵力和粮草的伤害 |
| 调用时机 | 计算技能对兵力和粮草的伤害 |
输入参数攻防双方数据已存储于全局变量 baye.data.g_GenAtt[] 中
| 参数 | 类型 | 说明 |
|---|---|---|
| context.skillId | U8 | 技能ID |
| context.origin | U8 | 原始目标对象,AOE时使用 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.hurt | U8 | 兵力伤害值 |
| context.prov | U8 | 粮草伤害值 |
| context.state | U8 | 输出异常状态 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.battleBuildAttackAttriutes钩子函数
| 功能 | 计算将领的攻防等属性 |
| 调用时机 | 计算将领的攻防等属性 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.index | U8 | 计算结果存储位置 |
| context.generalIndex | U8 | 将领的 战场序号 |
输出参数将结果存储于存储于全局变量 baye.data.g_GenAtt[context.index] 中
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.battleDrivePersonState钩子函数
| 功能 | 驱动战场将领自定义状态 可用于自定义状态造成将领兵力伤害或补给。 |
| 调用时机 | 驱动战场将领自定义状态 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.generalIndex | U8 | 将领的 战场序号 |
输出参数无
返回值0 有变化, 1 无变化
baye.hooks.getMaxArms钩子函数
| 功能 | 获取人物最大可分配兵力 |
| 调用时机 | 玩家或AI执行分配命令前 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.personIndex | U8 | 将领的序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.maxArms | U8 | 最大兵力 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.getToolPropertyValue钩子函数
| 功能 | 获取道具属性值 |
| 调用时机 | 显示道具属性表时 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.toolIndex | U8 | 道具序号 |
| context.propertyIndex | U8 | 属性序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.value | String | 属性值 |
返回值无
baye.hooks.getToolPropertyTitle钩子函数
| 功能 | 获取道具属性表头 |
| 调用时机 | 显示道具属性表时 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.propertyIndex | U8 | 属性序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.title | String | 属性表头字串 |
返回值无
相关全局配置
| baye.data.toolPropertiesCount | U8 | 属性表列数量 |
| baye.data.toolPropertiesDisplayWitdh | [U8] | 属性表各列宽度 |
baye.hooks.getPersonPropertyValue钩子函数
| 功能 | 获取人物属性值 |
| 调用时机 | 显示人物属性表时 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.personIndex | U8 | 人物序号 |
| context.propertyIndex | U8 | 属性序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.value | String | 属性值 |
返回值无
baye.hooks.getPersonPropertyTitle钩子函数
| 功能 | 获取人物属性表头 |
| 调用时机 | 显示人物属性表时 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.propertyIndex | U8 | 属性序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.title | String | 属性值 |
返回值无
相关全局配置
| baye.data.personPropertiesCount | U8 | 属性表列数量 |
| baye.data.personPropertiesDisplayWitdh | [U8] | 属性表各列宽度 |
baye.hooks.getCityPropertyDisplay钩子函数
| 功能 | 获取城池属性行 |
| 调用时机 | 显示城池属性时 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.cityIndex | U8 | 城市序号 |
| context.propertyIndex | U8 | 属性序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.display | String | 属性行 |
返回值无
相关全局配置
| baye.data.cityPropertiesCount | U8 | 属性表行数量 |
baye.hooks.getFighterInfo钩子函数
| 功能 | 战场上获取人物信息字符串 |
| 调用时机 | 战场上查看人物信息时 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.generalIndex | U8 | 人物战场序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.info | String | 面板显示文本信息 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.getTerrainInfo钩子函数
| 功能 | 战场上获取地形信息字符串 |
| 调用时机 | 战场上查看地形信息时 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.ter | U8 | 地形序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.info | String | 面板显示文本信息 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.showAbout钩子函数
| 调用时机 | 显示开发群组页面 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.willShowPKAnimation钩子函数
| 调用时机 | 即将显示战斗动画 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.didShowPKAnimation钩子函数
| 调用时机 | 战斗动画之后 |
baye.hooks.showMiniMap钩子函数
| 调用时机 | 显示小地图 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.showMainHelp钩子函数
| 调用时机 | 主策略界面按下 帮助 键或点击 屏幕右下角 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.didShowFightStateBar钩子函数
| 调用时机 | 战场完成状态栏显示 |
baye.hooks.didRefreshFightStateBar钩子函数
| 调用时机 | 战场完成状态栏刷新 |
baye.hooks.didShowFightSituation钩子函数
| 调用时机 | 完成显示战场形势图 |
baye.hooks.didRefreshFightSituation钩子函数
| 调用时机 | 战场形势图刷新 |
baye.hooks.loadFightMap钩子函数
| 功能 | 加载战场地形数据矩阵 |
| 调用时机 | 进入战场 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
示例
baye.hooks.loadFightMap = function() {
var city = baye.data.g_FgtParam.CityIndex;
var name = baye.getCityName(city);
console.log('城池序号:' + city);
console.log('城池名称:' + name);
console.log('进攻方向:' + baye.data.g_FgtParam.Way);
switch (name) {
case '汉中': {
baye.data.g_MapWid = 17;
baye.data.g_MapHgt = 18;
baye.data.g_FightMapData = [
1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 3, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1,
1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1,
1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1,
1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 5, 1, 2, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1,20,16,16,16,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,17,20,16,24,
1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1,17,17,17,17,
1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1,17,23,16,21,
1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 5, 1, 1,23,16,16,16,
];
break;
}
default:
return -1;
}
return 0;
};
baye.hooks.getPersonName钩子函数
| 功能 | 自定义人物名称 |
| 调用时机 | 引擎每次需要显示某个人物的名字时都会走这里(对话、状态栏、城池人物列表、菜单等处都调它,源码里 GetPersonName() 有 31 处调用点),取到名字当场就用。钩子写回 context.name 后 return 0 ⇒ 直接用这个名字;return -1 ⇒ 回退到引擎默认按将星表/人物表取名。(按引擎源码调用点整理,源码:src/showface.c · GetPersonName()) |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.personIndex | U8 | 人物序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.name | String | 人物名称 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.showStateChanged钩子函数
| 功能 | 自定义显示状态变化 |
| 调用时机 | 战场上一条计谋/技能结算完、目标将领的状态确实发生了变化之后触发,且状态不是「正常」也不是「阵亡」时才会调。紧接着引擎默认会弹一个「某某+状态名」的提示框 ⇒ 钩子 return 0 就是抢掉这个提示框、显示由你接管。(按引擎源码调用点整理,源码:src/FightSub.c · _CommonJNAction()) |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.generalIndex | U8 | 战场序号 |
| context.state | U8 | 变化后的状态 |
输出参数
无
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.drawGenerals钩子函数
| 功能 | 显示所有将领图片 用于自定义将领战场图 |
| 调用时机 | 战场地图每一「整屏重画将领」的时刻调用一次:进入战场后首次显示、地图滚动完重画、将领行动或获得经验后刷新等,都走同一个入口 FgtShowGen(act)。context.frame 传的就是这个 act(动画帧偏移)。return 0 ⇒ 引擎跳过「逐个将领画立绘」的默认循环,这一屏所有将领的图都得钩子自己画完(想只接管某几个,配合 drawOneGeneral 一起看)。(按引擎源码调用点整理,源码:src/Fight.c · FgtShowGen()) |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.frame | U8 | 帧序号0或1 |
输出参数
无
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.countMove钩子函数
| 功能 | 计算人物移动力 结果存放于g_GenPos |
| 调用时机 | 引擎计算某个将领的移动力时调用,位置在 CountMoveP(i) 的最开头 ⇒ 定义了就轮不到默认公式(兵种基础移动力+马匹+体力那套加成)。两个触发点:进入战场时逐个将领算基础属性(CountBaseAttr()),以及每次为该将领算移动范围前。结果自己写进 baye.data.g_GenPos[generalIndex].move,return 0 跳过默认计算。(按引擎源码调用点整理,源码:src/FgtCount.c · CountMoveP()) |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.generalIndex | U8 | 将领战场序号 |
输出参数
无
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
示例
baye.hooks.countMove = function(c) {
baye.data.g_GenPos[c.generalIndex].move = 2;
}
baye.hooks.countLandResistance钩子函数
| 功能 | 计算地形对人物的阻力 结果存放于g_GenPos |
| 调用时机 | 在 FgtTransMove(idx) 把「地形」换算成「移动力消耗」之前调用:引擎先准备一个 256 字节的空数组交给 context.result,钩子往里写各地形对该将领的阻力,return 0 后这份数组就顶替默认的 dFgtLandR 地形阻力表。触发时机跟着移动范围计算走:每次要显示某将领能走哪些格子时算一遍。(按引擎源码调用点整理,源码:src/FgtCount.c · FgtTransMove()) |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.generalIndex | U8 | 将领战场序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.result | [U8] | 各地形对人物的阻力 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
示例
baye.hooks.countLandResistance = function(context) {
// 0x80 0x81 0x82 0x83 ... 阻力依次递增
// 输出46种地形对将领的阻力
for (var i = 0; i < 46; i++) context.result[i] = 0x81;
}
baye.hooks.countMoveRange钩子函数
| 功能 | 计算人物移动范围 结果存放于g_FightPath |
| 调用时机 | 在移动范围计算入口 FgtCountPath(idx) 的最开头调用,此时引擎已把 15×15 格子的左上角 g_PathSX / g_PathSY 设为该将领坐标各减 7(将领在正中)。return 0 ⇒ 跳过默认整套行军算法(移动力→增援→地形阻力→障碍标记),baye.data.g_FightPath 由钩子写满。两个触发点:玩家选中将领要显示可走范围时,以及 AI 侧取就近将领命令时。(按引擎源码调用点整理,源码:src/FgtCount.c · FgtCountPath(),调用方 src/Fight.c · FgtGenMove()、src/FgtPkAi.c · FgtGetMCmdNear()) |
使用此钩子可完全自定义计算将领移动范围
此钩子可代替 [移动力钩子+阻力钩子] 实现更灵活的移动范围计算
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.generalIndex | U8 | 将领战场序号 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| baye.data.g_FightPath | [U8] | 移动范围[15x15]矩阵, 0x80以上不可达 0x80及以下可到达 0x81以上不可到达 * 0x00 0x80 不显示光标但可以到达 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
示例
baye.hooks.countMoveRange = function(context) {
for (var i = 0; i < 15*15; i++) {
baye.data.g_FightPath[i] = 0x79;
}
}
baye.hooks.fontImageForChar钩子函数
| 功能 | 获取扩展字体图片序号 用于显示GB2312不支持的字体 |
| 调用时机 | 引擎画文字时逐字走到这里,但有两个前提:配置里开了自定义字体(g_engineConfig.useCustomFont 管汉字、useCustomFontEn 管 ASCII),并且这个字符的点阵还不在缓存里 —— 开了 cacheCustomFont 时同一个字只问一次,之后复用缓存的点阵。钩子把 context.index 写成 assets/003_MAIN_SPE.assets/1 下的图片序号,引擎解码那张图、画在这个字该占的位置上。引擎这边不采纳返回值(源码里只调不判),写回 context.index 就算生效。(按引擎源码调用点整理,源码:src/comOut.c · GamCustomChar(),由 GamChinese()/GamAscii() 调用) |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.code | U16 | 文字的GBK编码 |
输出参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.index | U16 | 对应assets/003_MAIN_SPE.assets/1/下的图片序号 |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
示例
baye.hooks.fontImageForChar = function(c) {
// index为 assets/003_MAIN_SPE.assets/1 下图片序号
var index = {
0x82e0: 0, // 傕
0x90aa: 1, // 惇
0xb574: 2, // 祎
0x8faa: 3, // 彧
0xe041: 4, // 郃
0xab64: 5, // 玠
0xae8f: 6, // 畯
0x85b1: 7, // 叡
}[c.code];
if (index != undefined) {
c.index = index;
}
};
baye.hooks.willOpenMenu钩子函数
| 调用时机 | 即将显示menu时调用 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.index | U16 | 初始选中序号 |
baye.hooks.willChangeMenuSelection钩子函数
| 调用时机 | 即将menu变更选中项 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.index | U16 | 变更后的选中项 |
baye.hooks.willCloseMenu钩子函数
| 调用时机 | 即将关闭menu |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.index | U16 | 最终选中项 |
baye.hooks.fightCountWinner钩子函数
| 调用时机 | 电脑攻打电脑计算胜利方 |
baye.hooks.willShowCityInfo钩子函数
| 调用时机 | 显示城市状态 |
示例
baye.hooks.willShowCityInfo = function(c) { console.log("city:" + c.city); }
baye.hooks.fightWillShowHelp钩子函数
| 调用时机 | 战场即将显示帮助(包括武将信息和地形信息) |
返回值
| return 0; | 代表由钩子处理, 将跳过引擎默认处理程序 |
| return -1; | 将使用引擎默认处理程序 |
baye.hooks.chooseGameEntry钩子函数
| 功能 | 接管主界面四个入口按钮的选择,返回值直接当作玩家点了第几项。 |
| 调用时机 | 引擎启动进入主菜单循环时,每一轮开头调一次。 |
输入参数
无(源码调用点没有绑定任何 context 字段)。
输出参数
| 返回值 | 类型 | 说明 |
|---|---|---|
| — | U8 | 0 新君登基(开新局);1 重返沙场(读档);2 制作群组;3 卸甲归田(退出,引擎主菜单返回 false) |
源码位置:src/gamEng.c · GamMainChose()。
baye.hooks.loadPeriod钩子函数
| 功能 | 接管「新君登基」里的历史时期选择。原版是弹一个年份菜单再调 LoadPeriod(idx + 1);定义了这个钩子,那段整个被跳过,加载时期要自己调。 |
| 调用时机 | chooseGameEntry 返回 0(新君登基)之后紧接着调。 |
输入参数
无。
输出参数
| 返回值 | 类型 | 说明 |
|---|---|---|
| — | U8 | 只有 1 会继续往下走(进入君主选择);其它值一律 goto loop_end,等于退回主菜单 |
源码位置:src/gamEng.c · GamMainChose()。
baye.hooks.chooseActor钩子函数
| 功能 | 接管「选哪位君主」这一步,返回值直接当作玩家选中的君主 ID,可用于固定开局、随机开局或自定义君主列表。 |
| 调用时机 | 时期加载完、GetAllKings() 取到本时期君主队列之后。 |
输入参数
无。注意君主队列是引擎局部数组,钩子里拿不到,要自己从 baye.data.g_Persons 里按 Belong 筛。
输出参数
| 返回值 | 类型 | 说明 |
|---|---|---|
| — | U16 | 君主的 PersonID;填 0xffff 表示取消,引擎跳出这一局 |
返回值随后赋给 g_PlayerKing,也就是玩家扮演谁。源码位置:src/gamEng.c · GamMainChose()。
baye.hooks.choosingActorUpdate钩子函数
| 功能 | 君主选择界面每刷新一次就回调一次,可用来在自绘层里同步高亮、滚动条或额外信息。 |
| 调用时机 | 君主列表重绘时(初次进入、上下移动选中项都会触发)。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.index | U8 | 当前选中项在君主队列里的下标 |
| context.generalIndex | U16 | 该下标对应的君主 PersonID |
输出参数
无返回值,引擎不读结果(纯观察型钩子)。源码位置:src/gamEng.c · GamGetKingInner() 里的 UPDATE_UI() 宏。
baye.hooks.didShowMainMap钩子函数
| 功能 | 大地图(城市一览)完成一次实际重绘之后回调,适合做「地图画完了再叠东西」的时机。 |
| 调用时机 | 城市界面里 showflag 置位且非贴图模式时,ShowCityMap() 画完的那一刻。同一屏只调一次,不会每帧重复。 |
输入参数
无。
输出参数
无,引擎不读返回值。源码位置:src/cityedit.c · GetCitySetInner()。
baye.hooks.meetFight钩子函数
| 功能 | 两军相遇、马上要开打之前问一句:这仗到底打不打。返回 0 就跳过战斗,将领直接留在城里,等于「不战而退」。 |
| 调用时机 | 命令执行阶段(BattleDrv())里,敌军主将已确认、出征将领数组 genArray 刚填好之后。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.city | U8 | 交战城市的索引 |
输出参数
| 返回值 | 类型 | 说明 |
|---|---|---|
| — | U8 | 非 0 照常开战(引擎默认就是 1);0 跳过本场战斗,走「把将领加回城市」那条分支 |
源码位置:src/citycmdd.c · BattleDrv()。
baye.hooks.tacticStageUser钩子函数
| 功能 | 玩家策略阶段开始时回调,用来决定「这一轮还要不要走引擎默认的玩家操作界面」。 |
| 调用时机 | 每回合玩家策略环节的最开头,在 PlayerTactic() 之前。位置在 tacticStage1 之后、tacticStage2 之前。 |
输入参数
无。
输出参数
| 返回值 | 类型 | 说明 |
|---|---|---|
| — | S16 | -1(没定义钩子时引擎也返回 -1)=照常进入 PlayerTactic();返回其它值=跳过默认玩家操作,直接弹主功能菜单 |
源码位置:src/tactic.c · GameDevDrv()。
baye.hooks.mainSystemMenu钩子函数
| 功能 | 接管策略阶段的主功能菜单(原版三项:结束本轮 / 记录 / 确定退出),返回值当作玩家选了第几项。 |
| 调用时机 | 玩家策略环节里,每次要弹主功能菜单时。 |
输入参数
无。
输出参数
| 返回值 | 类型 | 说明 |
|---|---|---|
| — | U8 | 0 结束本方策略(进入电脑策略);1 打开记录管理,之后继续玩家策略;2 退出游戏。注意:定义了钩子时,选 2 不再二次确认,直接退 |
源码位置:src/tactic.c · FunctionMenu()。
baye.hooks.onMenuIdle钩子函数
| 功能 | 通用列表菜单每次刷新时回调,可以拿到当前选中下标。适合做「选中某项时额外画点东西」。 |
| 调用时机 | 引擎里所有走 PlcSplMenuInner() 的列表菜单,每完成一次绘制(含滚动条刷新)就调一次。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.index | U16 | 当前选中项在整个列表里的下标(不是屏显行号) |
输出参数
无返回值。源码位置:src/PublicFun.c · PlcSplMenuInner()。
baye.hooks.fightStatusBarTouched钩子函数
| 功能 | 战场上触摸点落在「状态栏」区域内时回调,可拦截这次触摸自己做交互。 |
| 调用时机 | 战场焦点移动逻辑里,判断触摸命中状态栏矩形的那一刻。在返回按钮、信息按钮的判定之前。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.x | U16 | 触摸点屏幕横坐标 |
| context.y | U16 | 触摸点屏幕纵坐标 |
输出参数
| 返回值 | 类型 | 说明 |
|---|---|---|
| — | S32 | 0 表示这次触摸已经处理完,引擎直接 break 不再往下判;其它值(含没定义钩子时的 -1)=继续走引擎原有判定 |
源码位置:src/Fight.c · FgtGetFoucsInner()。
baye.hooks.fightChooseAction钩子函数
| 功能 | 接管战场里单个将领的「命令菜单」,返回值当作玩家选的命令。可用来增删命令、或让命令自动选定。 |
| 调用时机 | 战场上轮到某个玩家将领行动、要弹命令菜单时(FgtGetPCmd() 循环内,每选一次调一次)。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.index | U32 | 该将领的 战场序号 |
输出参数
| 返回值 | 类型 | 说明 |
|---|---|---|
| — | U8 | 0 CMD_ATK 攻击;1 CMD_STGM 计谋;2 CMD_LOOK 查看;3 CMD_REST 休息;0xFF MNU_EXIT 取消该将领行动 |
常量定义见 src/baye/fight.h。源码位置:src/Fight.c · FgtGetPCmd()。
baye.hooks.fightChooseSkill钩子函数
| 功能 | 接管「选计谋/技能」这一步,返回值当作玩家选中的技能索引。 |
| 调用时机 | 命令菜单返回 CMD_STGM(1)之后紧接着调。若该将领处于禁咒状态,引擎会先 break,不会调到这个钩子。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.index | U32 | 施展者的 战场序号 |
输出参数
| 返回值 | 类型 | 说明 |
|---|---|---|
| — | U32 | 技能索引(随后按 SID(param) 解释);0xFFFF 表示取消这次计谋 |
源码位置:src/Fight.c · FgtGetPCmd()。
baye.hooks.fightOpenMainMenu钩子函数
| 功能 | 接管战场系统菜单(原版:继续 / 全军撤退 / 观看动画 / 行军速度),返回值当作玩家选的项。 |
| 调用时机 | 战场中打开系统菜单时,每次要弹菜单调一次。 |
输入参数
无。
输出参数
| 返回值 | 类型 | 说明 |
|---|---|---|
| — | U8 | 0 关闭菜单继续作战;1 全军撤退(直接把 g_FgtOver 判为 FGT_LOSE,随后与 0 走同一段收尾);2 观看动画设置;3 行军速度设置;0xFF 退出。注意:钩子接管后「全军撤退」不再二次确认 |
源码位置:src/FightSub.c · FgtMainMenu()。
baye.hooks.canUseSkill钩子函数
| 功能 | 判定一个技能能不能打到这个目标上,返回值直接当作判定结果。可用来加自定义克制、地形限制或免疫规则。 |
| 调用时机 | 战场上每次要检查「目标承受该技能的条件是否满足」时,AI 和玩家都会走到;在引擎原有的兵种、地形判定之前,钩子一返回,后面那些检查就不跑了。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.skillIndex | U8 | 计谋(技能)序号 |
| context.same | U8 | 源码形参 same,同列/同类标记,用于区分判定分支 |
| context.attackerIndex | U8 | 施展者的 战场序号 |
| context.targetIndex | U8 | 目标的 战场序号 |
输出参数
| 返回值 | 类型 | 说明 |
|---|---|---|
| — | U8 | 0 不满足(技能不可用);非 0 满足 |
源码位置:src/FgtPkAi.c · FgtJNChkAim()(原函数注释:「检测目标承受该技能的条件是否满足」)。
baye.hooks.drawMapUnit钩子函数
| 功能 | 接管战场地图单块地形的绘制。定义了这个钩子,引擎原来那句 gam_drawpic() 就不跑了——也就是每一块地形都得你自己画。 |
| 调用时机 | 两种:FgtShowMap() 整屏重绘时,一屏 15×16 块逐块回调;FgtMapUnitShow() 单块刷新时(光标移动、将领走开复原)回调一次。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.x | U8 | 这块地形的屏幕横坐标 |
| context.y | U8 | 这块地形的屏幕纵坐标 |
| context.tile | U16 | 地图数组下标;整屏重绘时是屏内序号,单块刷新时是 (ty - g_MapSY) * SCR_MAPWID + tx - g_MapSX。地形贴图 ID 取 baye.data.g_FightMap[tile] |
| context.flag | U8 | 绘制标志,透传给 gam_drawpic();整屏重绘固定 0,单块刷新由调用方给(用于反色一类的效果) |
输出参数
无返回值。源码位置:src/Fight.c · FgtShowMap()、FgtMapUnitShow()。
baye.hooks.drawOneGeneral钩子函数
| 功能 | 接管战场地图上单个将领的绘制。定义后引擎不再画默认立绘,也不再画禁咒/待命这些异常状态图标——这些都得自己补。 |
| 调用时机 | 战场每次刷新一屏将领时,对每个「在可视范围内」的将领各调一次(FgtShowGen() 循环内,先画它脚下那块地形再调本钩子)。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| context.index | U8 | 将领的 战场序号 |
| context.pic | U8 | 算好的立绘图片序号(已含待机动画帧偏移);引擎默认画的是 idx + 1 |
| context.frame | U8 | 动画帧偏移量 act |
| context.x | U8 | 屏幕横坐标 |
| context.y | U8 | 屏幕纵坐标 |
输出参数
无返回值。源码位置:src/Fight.c · FgtShowGen()。
baye.getPersonName(index)功能函数
| 具体定义 | baye.getPersonName(index) → String |
| 功能 | 按人物序号取人物名称。 |
| 用法 | 只读。名字是引擎按人物表 + 将星表算出来的;要改显示出来的名字,写钩子 baye.hooks.getPersonName,不是改这个函数的返回值。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| index | U8 | 人物序号 = g_Persons 的下标,从 0 开始。(和 getPersonNameByID 的 1 基编号差 1,别混用) |
返回值
String:人物名称。序号越界时的行为未考证【推断】返回空串。
示例
console.log(baye.getPersonName(0));
baye.getToolName(index)功能函数
| 具体定义 | baye.getToolName(index) → String |
| 功能 | 按道具序号取道具名称。 |
| 用法 | 只读。给对话、菜单、物品栏标题拼字符串用。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| index | U8 | 道具序号 = g_Tools 的下标,从 0 开始。 |
返回值
String:道具名称。
示例
// 上游 demos.js:208
baye.say(c.personIndex, "全新[" + baye.getToolName(3) + "]已打造成功!");
baye.getSkillName(index)功能函数
| 具体定义 | baye.getSkillName(index) → String |
| 功能 | 按技能序号取技能名称。 |
| 用法 | 只读。把技能列表喂给 choose / centerChoose 之前,就用它拼名字数组。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| index | U8 | 技能序号 = g_Skills 的下标,从 0 开始。 |
返回值
String:技能名称。
示例
var names = [];
names.push(baye.getSkillName(0), baye.getSkillName(1));
baye.centerChoose(40, 30, names, 0, function (ind) { console.log(names[ind]); });
baye.getCityName(index)功能函数
| 具体定义 | baye.getCityName(index) → String |
| 功能 | 按城池序号取城池名称。 |
| 用法 | 只读。全国 38 座城(CITY_MAX),序号 0-37。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| index | U8 | 城池序号 = g_Cities 的下标,从 0 开始。 |
返回值
String:城池名称。
示例
// 上游 printCity 里的写法
console.log(baye.getCityName(i));
baye.setCustomData(data)功能函数
| 具体定义 | baye.setCustomData(data) |
| 功能 | 存一段自定义数据,随存档一起保存。 |
| 用法 | 整段覆盖旧值,不是追加。JS 侧按 UTF-8 编码后写进引擎缓冲区(bridge.js:396),所以想存结构化内容就自己序列化。开局写、读档后取,是版本自定义数据最常用的落点。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| data | String | 要存的内容。 |
返回值
无。
示例
baye.setCustomData(JSON.stringify({ lib: "1.2.3.5", flag: 1 }));
baye.getCustomData()功能函数
输入参数
无。
| 具体定义 | baye.getCustomData() → String |
| 功能 | 取出之前用 setCustomData 存的自定义数据。 |
| 用法 | 按 UTF-8 解码回 JS 字符串(bridge.js:390)。读档之后调,拿到的才是本次存档里的值。 |
返回值
String:之前存的内容;没存过返回 null(引擎返回指针 0 时 JS 直接给 null),所以先判空再 JSON.parse。
示例
var d = JSON.parse(baye.getCustomData() || "{}");
baye.alert(msg, then)功能函数
| 具体定义 | baye.alert(msg, then) |
| 功能 | 显示文字提示(引擎的提示框)。 |
| 用法 | 异步:调用只是把动作挂进 g_asyncActionID,引擎在下一步才画框,框消失后回调 then。停留时长写死在 C 代码里,脚本改不了(源码:src/PublicFun.c · GamMsgBox())。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| msg | String | 提示内容。JS 侧按 GBK 塞进 g_asyncActionStringParam(bridge.js:405),超长会被引擎截断【推断:上限取决于引擎缓冲区大小,未实测】。 |
| then | Function | 提示框结束后的回调,引擎不往这里传参数。 |
返回值
无。要 Promise 写法用 baye.asyncAlert(msg)。
示例
// 上游 demos.js:174
baye.alert("没收失败!");
baye.say(personIndex, msg, then)功能函数
| 具体定义 | baye.say(personIndex, msg, then) |
| 功能 | 显示人物对话(带头像的对话框)。 |
| 用法 | 异步。对话至少显示约 3 秒,期间按键可以跳过(源码:src/infdeal.c · ShowGReport())。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| personIndex | U8 | 说话人物的序号 = g_Persons 下标,用来取头像。传 0xff 表示没有说话人【推断】。 |
| msg | String | 对话内容,支持 \n 换行。 |
| then | Function | 对话框关闭后的回调,引擎不传参数。 |
返回值
无。要 Promise 写法用 baye.asyncSay(...)。
示例
// 上游 demos.js:173
baye.say(ctx.personIndex, "你算哪根葱?\n" + baye.getToolName(ctx.toolIndex) + "岂是你想拿走就拿走?", function () {
baye.alert("没收失败!");
});
baye.delay(ticks, flag, then)功能函数
| 具体定义 | baye.delay(ticks, flag, then) |
| 功能 | 延时(引擎的等待动作)。 |
| 用法 | 异步:ticks 个数走满、或者等到按键,才走 then。用来做对话节奏和动画间隔。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| ticks | U16 | 时长,单位 1/100 秒(100 ≈ 1 秒);传 0 = 一直等到有按键。 |
| flag | U8 | 打断方式:1 = 任意键可打断,2 = 只有功能键 / 触摸可打断,0 = 不可打断。 |
| then | Function | 结束后的回调,收到引擎回传的按键消息(g_asyncActionParams[0])。 |
返回值
无。要 Promise 写法用 baye.asyncDelay(...)。
示例
baye.delay(100, 1, function (key) { console.log("等满 1 秒或被按键,按键码:" + key); });
baye.playSPE(x, y, speid, index, flag, then)功能函数
| 具体定义 | baye.playSPE(x, y, speid, index, flag, then) |
| 功能 | 播放一段 SPE 动画。 |
| 用法 | 异步。x / y 只决定动画左上角的位置(逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128),画面尺寸由资源本身决定。源码:src/PublicFun.c · PlcMovie()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| x | U8 | 动画左上角横坐标。 |
| y | U8 | 动画左上角纵坐标。 |
| speid | U16 | SPE 资源 ID(引擎资源表里的编号,开场动画常用 3)。 |
| index | U16 | 该资源内的子项序号,JS 侧从 0 开始,引擎内部会 +1。 |
| flag | U8 | 位域:0x01 = 响应按键,0x02 = 播完不清背景,0x04 = 反向播放【推断】;不关心就传 0。 |
| then | Function | 播完或被打断后的回调:0xff = 自然播完,否则是打断它的按键扫描码。 |
返回值
无。要 Promise 写法用 baye.asyncPlaySPE(...)。
示例
// 上游 demos.js:576:开场动画
baye.playSPE(0, 0, 3, 0, 0);
baye.choose(x, y, w, h, items, init, then)功能函数
| 具体定义 | baye.choose(x, y, w, h, items, init, then) |
| 功能 | 在指定位置显示一个文字选择菜单。 |
| 用法 | 异步。JS 先把每一项按宽度 floor(w/6) 截断、再用空格补齐成等宽行(ASCII 算 1、汉字算 2;截断函数 truncate 见 bridge.js:340),拼成一个字符串交给引擎 ⇒ 菜单宽度决定每行能放几个字。源码:src/PublicFun.c · GamChoose()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| x | U8 | 菜单矩形左上角横坐标(逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128)。 |
| y | U8 | 菜单矩形左上角纵坐标。 |
| w | U8 | 菜单宽度,同时决定每项的显示宽度 = floor(w/6)。 |
| h | U8 | 菜单高度,也决定一次能显示几行。 |
| items | Array<String> | 菜单项文字数组。 |
| init | U8 | 初始高亮项在 items 里的下标,从 0 开始。 |
| then | Function | 回调,收到选中项的下标(0 基)。玩家点框外取消时收到 baye.None(即 0xffff)。 |
返回值
无。要 Promise 写法用 baye.asyncChoose(...)。
示例
// 上游 demos.js:251
var items = ["继续", "取消"];
baye.choose(4, 5, 40, 30, items, 1, function (ind) {
console.log("Choosing: " + ind);
return ind == 0 ? -1 : 0;
});
baye.centerChoose(w, h, items, init, then)功能函数
| 具体定义 | baye.centerChoose(w, h, items, init, then) |
| 功能 | 居中显示文字选择菜单。 |
| 用法 | choose 的便捷版:JS 先算 x = (g_screenWidth - w) / 2、y = (g_screenHeight - h) / 2,再原样转调 baye.choose(bridge.js:502)。除坐标外的参数含义与 choose 完全一致。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| w | U8 | 菜单宽度(同 choose)。 |
| h | U8 | 菜单高度(同 choose)。 |
| items | Array<String> | 菜单项文字数组(同 choose)。 |
| init | U8 | 初始高亮项下标(同 choose)。 |
| then | Function | 回调,收到选中项下标。玩家点框外取消时收到 baye.None(即 0xffff)。 |
返回值
无(内部转调 choose)。要 Promise 写法用 baye.asyncCenterChoose(...)。
示例
// 上游 examples.js:309
baye.centerChoose(100, 80, ["简单", "困难"], 0, function (idx) {
if (idx == baye.None) { return 0; } // 取消
baye.loadPeriod(1);
});
baye.choosePerson(items, init, then)功能函数
| 具体定义 | baye.choosePerson(items, init, then) |
| 功能 | 显示人物选择界面(带头像的列表)。 |
| 用法 | 异步。items 里的人物编号被逐个写进引擎的 U16 参数区(g_asyncActionU16ParamArray),items.length 当第 0 个参数传给 C 侧。源码:src/showface.c · ShowPersonControl()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| items | Array<U8> | 候选人物编号数组(g_Persons 下标),要选几个人就放几项。 |
| init | U8 | 初始选中项——是 items 里的序号,不是人物编号。 |
| then | Function | 回调,收到选中项在 items 里的序号(源码:showface.c:902/926)⇒ 要人物编号得自己 items[ind] 取。玩家点框外取消时收到 baye.None(即 0xffff)。 |
返回值
无。要 Promise 写法用 baye.asyncChoosePerson(...)。
示例
// 上游 demos.js:260 把回调值直接当人物编号用了
// ⇒ items 若不是从 0 开始连续编号,那样取名字会取错
var items = [0, 5, 12];
baye.choosePerson(items, 0, function (ind) {
console.log(baye.getPersonName(items[ind]));
});
baye.chooseTool(items, init, then)功能函数
| 具体定义 | baye.chooseTool(items, init, then) |
| 功能 | 显示道具选择界面。 |
| 用法 | 和 choosePerson 是同一段桥接写法:逐项写进 g_asyncActionU16ParamArray,长度当第 0 个参数(bridge.js:525)。源码:platform/js/script.c · ShowGoodsControl()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| items | Array<U8> | 候选道具编号数组(g_Tools 下标)。 |
| init | U8 | 初始选中项(items 里的序号)。 |
| then | Function | 回调值【推断:与 choosePerson 同构,应是 items 里的序号】。玩家点框外取消时收到 baye.None(即 0xffff)。 |
返回值
无。要 Promise 写法用 baye.asyncChooseTool(...)。
示例
var items = [0, 3, 7];
baye.chooseTool(items, 0, function (ind) {
console.log(baye.getToolName(items[ind]));
});
baye.getPersonByName(name)功能函数
| 具体定义 | baye.getPersonByName(name) → Object |
| 功能 | 按名字找人物,直接返回人物数据对象。 |
| 用法 | 纯 JS 遍历 g_Persons,逐个用 getPersonName(i) 比字符串(bridge.js:576)⇒ 名字必须和引擎显示的完全一致,同名时返回第一个。返回的是引用,改字段就是改这个人。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| name | String | 人物名。 |
返回值
Object:g_Persons[i] 的引用;没找到是 undefined(不是 null),先判空再用。
配套:baye.getPersonIdByName(name) 同样查找,但返回下标 i(bridge.js:585)。
示例
var p = baye.getPersonByName("关羽");
if (p) { p.Force = 5; }
baye.getCityByName(name)功能函数
| 具体定义 | baye.getCityByName(name) → Object |
| 功能 | 按名字找城池,直接返回城池数据对象。 |
| 用法 | 纯 JS 遍历 g_Cities,逐个用 getCityName(i) 比字符串(bridge.js:608)⇒ 返回的是引用,改字段就是改这座城。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| name | String | 城池名。 |
返回值
Object:g_Cities[i] 的引用;没找到是 undefined。
示例
var c = baye.getCityByName("洛阳");
if (c) { c.Money += 1000; }
baye.getFighterIndexByName(name)功能函数
| 具体定义 | baye.getFighterIndexByName(name) → U8 |
| 功能 | 按名字找战场上的将领序号。 |
| 用法 | 遍历 g_FgtParam.GenArray,把每一项 -1 当人物下标去比名字(bridge.js:617)⇒ 拿到的是战场序号(0-19),可以直接喂给 g_GenPos[?]、g_GenAtt[?]、getPersonByGeneralIndex。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| name | String | 战场将领的名字。 |
返回值
U8:战场序号;没找到是 undefined。
配套:baye.getFighterPositionByName(name) = g_GenPos[该序号],想直接拿坐标就用它(bridge.js:627)。
示例
var i = baye.getFighterIndexByName("关羽");
if (i != undefined) { console.log(baye.data.g_GenPos[i].x, baye.data.g_GenPos[i].y); }
baye.getPersonNameByID(id)功能函数
| 具体定义 | baye.getPersonNameByID(id) → String |
| 功能 | 按归属编号取显示名,专门用来打印 Belong 这类字段。 |
| 用法 | 内部先处理两个特殊值,其余按 1 基换算:实际取的是 getPersonName(id - 1)(bridge.js:632)⇒ 别把 g_Persons 的 0 基下标直接传进来。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| id | U8 | 归属编号:0 = 无主,返回 "-";0xff = 俘虏,返回 "俘虏";其余是 1 基的人物编号。 |
返回值
String:要显示的名字。id 大于 255 或越界时的行为未考证【推断】。
示例
// 上游 printCity 里就是这么用的
var belong = baye.getPersonNameByID(city.Belong);
baye.putPersonInCity(city, person)功能函数
| 具体定义 | baye.putPersonInCity(city, person) → U8 |
| 功能 | 往城池中添加人物。 |
| 用法 | 直通 C 侧 AddPerson。上游原话:注意需要手动删除原城池中该人物 —— 这个函数只会「加」,不管旧城里的挂名,所以调人进城要「先删原城、再加新城」两步一起做。源码:src/cityedit.c · AddPerson()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| city | U8 | 目标城池下标(小于 CITY_MAX = 38)。 |
| person | U8 | 人物下标(g_Persons,0 基)。 |
返回值
U8:1 = 成功,0 = 失败(参数越界或城塞不下)。
示例
var p = baye.getPersonByName("关羽");
var from = baye.getCityByPerson(p); // bridge.js:595,0xff = 不在任何城
baye.deletePersonInCity(from, p);
baye.putPersonInCity(3, p);
baye.putToolInCity(city, tool, hide)功能函数
| 具体定义 | baye.putToolInCity(city, tool, hide) → U8 |
| 功能 | 往城池中添加道具。 |
| 用法 | 转 C 侧 AddGoodsEx(city, tool, !hide)(bridge.js:697)—— 第三个参数是取反后传下去的。源码:src/cityedit.c · AddGoodsEx()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| city | U8 | 目标城池下标。 |
| tool | U8 | 道具下标(g_Tools,0 基)。 |
| hide | Boolean | 真值 ⇒ 不把这个道具标记成「已被发现」(不写 0x8000 标志位,cityedit.c:181),玩家的道具列表里就先看不见它;假值 = 正常入库可见。 |
返回值
U8:【推断】插入位置 + 1,0 表示失败;上游示例里都没用返回值。
示例
// 上游 demos.js:207:打造出新道具
baye.putToolInCity(c.cityIndex, 3);
baye.deletePersonInCity(city, person)功能函数
| 具体定义 | baye.deletePersonInCity(city, person) → U8 |
| 功能 | 删除城池中的人物。 |
| 用法 | 直通 C 侧 DelPerson,只动这座城的人员队列,人物本身的数据还在。源码:src/cityedit.c · DelPerson()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| city | U8 | 城池下标。 |
| person | U8 | 人物下标(0 基)。 |
返回值
U8:1 = 删掉了,0 = 这座城里没有这个人。
示例
var p = baye.getPersonByName("关羽");
baye.deletePersonInCity(baye.getCityByPerson(p), p);
baye.deleteToolInCity(city, tool)功能函数
| 具体定义 | baye.deleteToolInCity(city, tool) → U8 |
| 功能 | 删除城中道具。 |
| 用法 | 直通 C 侧 DelGoods,生产、消耗类逻辑都靠它扣材料。源码:src/cityedit.c · DelGoods()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| city | U8 | 城池下标,≥ CITY_MAX 直接返回 0。 |
| tool | U8 | 道具下标,≥ GOODS_MAX 同样返回 0。 |
返回值
U8:1 = 删掉了,0 = 参数越界或城里没这个道具。
示例
// 上游 demos.js:206:扣掉材料
baye.deleteToolInCity(c.cityIndex, c.toolIndex);
baye.getPersonByGeneralIndex(gIndex)功能函数
| 具体定义 | baye.getPersonByGeneralIndex(gIndex) → Object |
| 功能 | 战场序号 → 人物数据对象。 |
| 用法 | 读 g_FgtParam.GenArray[gIndex],再 -1 当下标去取 g_Persons(bridge.js:709)。战场上的钩子几乎只给 generalIndex,所以这是钩子里最常调的一句。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| gIndex | U8 | 战场序号(GenArray 的下标,0-19)。 |
返回值
Object:人物数据引用。该位置没排将领时(GenArray[gIndex] 为 0)会算成 g_Persons[-1] ⇒ 拿到 undefined,源码没做保护,用之前判空。
配套:baye.getTerrainByGeneralIndex(index) 返回该将领所在地形编号(bridge.js:689)。
示例
// 上游 demos.js:48
var person = baye.getPersonByGeneralIndex(context.generalIndex);
baye.drawText(x, y, text, scr)功能函数
| 具体定义 | baye.drawText(x, y, text, scr) → U16 |
| 功能 | 在屏幕上绘文字。 |
| 用法 | 上游文档漏写了第 4 个参数 scr,源码里是有的(bridge.js:725)。字符宽度 ASCII 6、汉字 12,行高 12;文字先写进 GBK 缓冲区再画。源码:src/comOut.c · GamStrShow()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| x | U8 | 起笔横坐标(逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128)。 |
| y | U8 | 起笔纵坐标。 |
| text | String | 要画的文字,支持 \n 自动换行。 |
| scr | U8 | 非 0 = 画到虚拟屏 g_VisScr,省略 = 画实屏。和 drawImage 的 scr 语义相反,别混用。 |
返回值
U16:本次消耗掉的字节数(按 GBK 算);写到超出屏幕底部时返回 0 ⇒ 可以用来判断还能不能继续往下排。
示例
// 上游 demos.js:598
baye.drawText(0, 0, text);
// 多行:版本信息页
var t = "版本信息\n引擎:" + baye.data.g_engineVersion;
var used = baye.drawText(0, 0, t);
baye.drawImage(x, y, resid, resitem, picIndex, scr)功能函数
| 具体定义 | baye.drawImage(x, y, resid, resitem, picIndex, scr) |
| 功能 | 画一张图(从引擎资源里取一帧贴到屏幕)。 |
| 用法 | 上游文档只写了 5 个参数,桥接层实际是 6 个(bridge.js:731)。资源 ID 常用 baye.data.g_TileId(当前地图的 tile 资源),人物帧资源是 4。源码:src/PublicFun.c · PlcRPicShowEx()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| x | U8 | 贴图左上角横坐标(逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128)。 |
| y | U8 | 贴图左上角纵坐标。 |
| resid | U16 | 资源 ID。 |
| resitem | U16 | 资源内的子项序号,JS 侧 0 基(C 侧 +1)。 |
| picIndex | U16 | 帧号,JS 侧 0 基(C 侧 +1);超出该资源的帧数时什么都不画。 |
| scr | U8 | 语义与别处相反:只有传 1 时走「虚拟屏」那支,其余值(含省略)都画实屏 —— JS 把 scr == 1 ? 0 : 1 交给 C(bridge.js:731)。 |
返回值
无。
示例
// 上游 examples.js:603 / 622
baye.drawImage(x, y, baye.data.g_TileId, 0, pic, scr);
baye.drawImage(x, y, 4, 0, pic, 1);
baye.clearRect(left, top, right, bottom, scr)功能函数
| 具体定义 | baye.clearRect(left, top, right, bottom, scr) |
| 功能 | 清除矩形(把这一块刷成背景)。 |
| 用法 | 坐标是闭区间,含右下角那一格;上游文档只写 4 参,第 5 参 scr 源码里有。源码:src/sys.c · SysLcdPartClear()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| left | U8 | 左边界横坐标。 |
| top | U8 | 上边界纵坐标。 |
| right | U8 | 右边界横坐标(含)。 |
| bottom | U8 | 下边界纵坐标(含)。 |
| scr | U8 | 非 0 = 清虚拟屏,省略 = 清实屏。 |
返回值
无。
配套:baye.clearScreen() 就是清 0,0 → g_screenWidth,g_screenHeight(bridge.js:755),整屏刷新直接用它。
示例
// 上游 examples.js:396
baye.clearRect(0, 0, 60, 30);
baye.drawText(0, 0, "字体预览");
baye.revertRect(left, top, right, bottom, scr)功能函数
| 具体定义 | baye.revertRect(left, top, right, bottom, scr) |
| 功能 | 反显矩形(把这块像素取反)。 |
| 用法 | 再调一次就翻回来,所以做「选中高亮」最省事的办法就是进一次、出一次各调一遍。坐标同样是闭区间。源码:src/sys.c · SysLcdReverse()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| left | U8 | 左边界横坐标。 |
| top | U8 | 上边界纵坐标。 |
| right | U8 | 右边界横坐标(含)。 |
| bottom | U8 | 下边界纵坐标(含)。 |
| scr | U8 | 非 0 = 作用于虚拟屏,省略 = 实屏。 |
返回值
无。
示例
// 上游 examples.js:326:从 (x,y) 起盖 w×h 的格子,闭区间所以要 -1
baye.revertRect(x, y, x + w - 1, y + h - 1);
baye.drawLine(startX, startY, endX, endY)功能函数
| 具体定义 | baye.drawLine(startX, startY, endX, endY) |
| 功能 | 画直线。 |
| 用法 | 桥接层把颜色写死成 1、而且只能画实屏(bridge.js:743 没往下传 scr),这两个值脚本改不了。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| startX | U8 | 起点横坐标(逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128)。 |
| startY | U8 | 起点纵坐标。 |
| endX | U8 | 终点横坐标,端点包含在内。 |
| endY | U8 | 终点纵坐标,端点包含在内。 |
返回值
无。
示例
// 上游示例里没找到调用点,下面是最小用法
baye.drawLine(0, 0, 60, 30);
baye.drawRect(left, top, right, bottom, scr)功能函数
| 具体定义 | baye.drawRect(left, top, right, bottom, scr) |
| 功能 | 画矩形边框(只描边,不填内部)。 |
| 用法 | 颜色在 JS 侧写死 1(bridge.js:747);要填内部就得自己一行行 drawLine。上游文档少写了第 5 参 scr。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| left | U8 | 左边界横坐标。 |
| top | U8 | 上边界纵坐标。 |
| right | U8 | 右边界横坐标。 |
| bottom | U8 | 下边界纵坐标。 |
| scr | U8 | 非 0 = 画到虚拟屏,省略 = 实屏。 |
返回值
无。
示例
// 上游 examples.js:574:给选中的格子描一圈
baye.drawRect(x, y, x + 35, y + 35, 1);
baye.drawText(x, y, "ITEM" + idx);
baye.drawDot(x, y, color)功能函数
| 具体定义 | baye.drawDot(x, y, color) |
| 功能 | 画点。 |
| 用法 | 屏幕是逻辑坐标 × g_scale 物理像素,所以一「点」实际是 g_scale² 个小方块(默认 2 ⇒ 4 个物理像素)。源码:src/sys.c · bayeLcdDot()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| x | U8 | 横坐标(逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128)。 |
| y | U8 | 纵坐标。 |
| color | U8 | 0 = 擦除;非 0 = 用全局 g_paintColor(0-255 灰度,默认 0xff,sys.c:30)着色 ⇒ 想换深浅先改 baye.data.g_paintColor。 |
返回值
无。
示例
// 上游示例里没找到调用点
baye.data.g_paintColor = 170;
baye.drawDot(10, 10, 1);
baye.getNumber(min, max, then)功能函数
| 具体定义 | baye.getNumber(min, max, then) |
| 功能 | 让玩家输入一个数字(可用于输入密码等)。 |
| 用法 | 异步:引擎弹数字调节框,确认后走 then。初值被 JS 固定写成 max(bridge.js:444)⇒ 要指定初值用 baye.getNumber2(init, min, max, then)。源码:src/tactic.c · NumOperate()。 |
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| min | U16 | 允许的最小值。 |
| max | U16 | 允许的最大值,同时是当前初值。调试模式下会被强改成 10000(tactic.c:1176)。 |
| then | Function | 回调,收到玩家确认的数值。玩家点框外取消时收到 baye.None(即 0xffff)。 |
返回值
无。要 Promise 写法用 baye.asyncGetNumber(...)。
示例
// 上游原例
baye.hooks.showMainHelp = function (context) {
var min = 100;
var max = 200;
baye.getNumber(min, max, function (c) { console.log("选择了:" + c); });
}