XuYuanBBK PIXEL GAME CENTER
QQ 群 526266208
公众号 再续前缘游戏平台

资讯/霸业API及函数手册

霸业API及函数手册

更新于 2026-10-20共 250 条(数据 142 · 钩子 77 · 功能函数 31)

这本手册怎么用总说明

左边三组条目:霸业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_MenuTouchComfirm数据项

具体定义baye.data.g_MenuTouchComfirm
功能菜单项选中是否需要二次确认
用法读:在控制台或脚本里直接取这个值。写:给 baye.data.g_MenuTouchComfirm 赋值即可,引擎下一步就用新值(战场上的值改完要让相关界面刷新才看得见)。

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_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.mainMenuButtonRects[16]数据项

具体定义baye.data.g_engineConfig.mainMenuButtonRects[16]
功能主界面4个按钮的边框位置
所属baye.data.g_engineConfig

baye.data.g_engineConfig.periodMenuButtonRects[16]数据项

具体定义baye.data.g_engineConfig.periodMenuButtonRects[16]
功能时期界面4个按钮的边框位置
所属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.data.g_engineConfig.fixCityOffset纠正城市偏移
baye.data.g_engineConfig.fixThewOverFlow修复体力溢出bug
baye.data.g_engineConfig.fixFoodOverFlow修复出征刷粮草
baye.data.g_engineConfig.fixOverFlow16修复多处16位溢出
baye.data.g_engineConfig.fixConsumeMoney启用招降收费
baye.data.g_engineConfig.fixFightMoveOutRange修复战场瞬移
baye.data.g_engineConfig.fixAlienateComsumeThew修复离间减小敌将体力问题
baye.data.g_engineConfig.enableToolAttackRange启用"道具改变攻击范围"
baye.data.g_engineConfig.enable16bitConsumeMoney启用扩展金钱消耗(16位)
baye.data.g_engineConfig.enableScript启用脚本
baye.data.g_engineConfig.disableSL禁SL
baye.data.g_engineConfig.aiLevelUpSpeedAI升级速度 (0~100, 0使用原版默认策略)
baye.data.g_engineConfig.disableAgeGrow禁用年龄增长
baye.data.g_engineConfig.ratioOfFoodToArmsPerMouth市政兵力和粮耗(默认50,越大粮耗越少)
baye.data.g_engineConfig.ratioOfFoodToArmsPerDay战场兵力和粮耗参数(默认3,越大粮耗越少)
baye.data.g_engineConfig.armsPerDevotion征兵量和民忠的关系(默认20)
baye.data.g_engineConfig.armsPerMoney每个金钱能购买的士兵数(默认10)
baye.data.g_engineConfig.maxLevel最大等级
baye.data.g_engineConfig.responseNoteOfBettle"战斗提示"允许按键跳过(默认0,填2允许)
baye.data.g_engineConfig.aiDefenceModeAI行军策略,默认0追主将,1守城
baye.data.g_engineConfig.aiAttackMethodAI攻击时选择技能/普攻的算法(0原版,1优化版)
baye.data.g_engineConfig.batlleDisableWeatherChange禁止战场天气变化
baye.data.g_engineConfig.mainMenuButtonRects[16]主界面4个按钮的边框位置
baye.data.g_engineConfig.periodMenuButtonRects[16]时期界面4个按钮的边框位置
baye.data.g_engineConfig.saveFaceListAnchor[2]存档界面list左上角坐标

baye.hooks.aiFightCommand钩子函数

功能战场调用脚本进行行军计算及战斗命令选择,可利用此钩子实现自定义AI行军算法。
调用时机AI每次计算将领行军策略前

输入参数

参数类型说明
context.sIdxU8需要计算的行军将领的 战场序号

输出参数

参数类型说明
context.typeU8命令类型,0 普攻, 1 技能, 3 休息
context.paramU8技能序号(如果选择技能)
context.aIdxU8攻击或技能目标将领的 战场序号

baye.hooks.getSkillIds钩子函数

功能获取将领当前可使用的技能
调用时机战场每当AI或玩家使用技能前

输入参数

参数类型说明
context.generalIndexU8将领的 战场序号

输出参数

参数类型说明
context.skillIds[U8]技能号数组

返回值无

baye.hooks.calcAttackRange钩子函数

功能计算攻击范围
调用时机战场每次下攻击命令

输入参数

参数类型说明
context.personIndexU8将领 序号
context.terU8将领所处地形
context.typeU8攻击类型,0 普攻,1 技能
context.skillIdU8技能 ID

输出参数

参数类型说明
context.range[U8]攻击范围矩阵
context.rangeSizeU8攻击范围矩阵的边长,如5x5矩阵填写5

baye.hooks.showSkill钩子函数

功能施展技能是否成功 可用于调整技能成功率。
调用时机施展技能时

输入参数

参数类型说明
context.terU8将领所处地形
context.skillIdU8技能 ID

输出参数

参数类型说明
context.resultU8是否成功,0 失败, 1 成功 (原context.success)

baye.hooks.giveTool钩子函数

功能用于控制赏赐命令是否成功
调用时机执行赏赐命令,道具即将被装到人物时

输入参数

参数类型说明
context.personIndexU8将领所处地形
context.toolIndexU8技能 ID

输出参数

参数类型说明
context.resultU8是否成功,0 失败, 1 成功

baye.hooks.takeOffTool钩子函数

功能用于控制没收命令是否成功
调用时机执行赏赐命令,道具即将被装到人物时

输入参数

参数类型说明
context.personIndexU8将领所处地形
context.toolIndexU8技能`ID`

输出参数

参数类型说明
context.resultU8是否成功,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.OrderIdU8命令ID
context.PersonU8执行命令的人物
context.CityU8执行命令的城池
context.ObjectU8执行命令的目标人物ID或目标城池ID
context.ArmsU16兵力(运输)
context.FoodU16粮草(运输)
context.MoneyU16金钱(运输)
context.ConsumeU8命令耗时(暂无用处)
context.TimeCountU8命令累时(暂无用处)

输出参数无

返回值

return 0;代表由钩子处理, 将跳过引擎默认处理程序
return -1;将使用引擎默认处理程序

baye.hooks.willExecuteOrder钩子函数

功能上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。
调用时机即将执行某命令

输入参数

参数类型说明
context.OrderIdU8命令ID
context.PersonU8执行命令的人物
context.CityU8执行命令的城池
context.ObjectU8执行命令的目标人物ID或目标城池ID
context.ArmsU16兵力(运输)
context.FoodU16粮草(运输)
context.MoneyU16金钱(运输)
context.ConsumeU8命令耗时(暂无用处)
context.TimeCountU8命令累时(暂无用处)

输出参数无

返回值

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.cityIndexU8城池序号
context.commandIndexU8命令序号

输出参数无

返回值

return 0;代表由钩子处理, 将跳过引擎默认处理程序
return 1;提示错误 并跳过引擎默认处理程序
return -1;将使用引擎默认处理程序

baye.hooks.willGiveTool钩子函数

功能上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。
调用时机即将赏赐某道具给某人

输入参数

参数类型说明
context.cityIndexU8城池序号
context.personIndexU8人物序号
context.toolIndexU8道具序号

输出参数无

返回值

return 0;代表由钩子处理, 将跳过引擎默认处理程序
return -1;将使用引擎默认处理程序

baye.hooks.willTakeOffTool钩子函数

功能上游只写了「自由」,即该钩子不限定用途:引擎在下面的时机调用,做什么由脚本决定。
调用时机即将没收某人某道具

输入参数

参数类型说明
context.cityIndexU8城池序号
context.personIndexU8人物序号
context.toolIndexU8道具序号

输出参数无

返回值

return 0;代表由钩子处理, 将跳过引擎默认处理程序
return -1;将使用引擎默认处理程序

baye.hooks.countAttackHurt钩子函数

功能计算普通攻击对兵力伤害
调用时机计算普通攻击对兵力伤害

输入参数无, 攻防双方数据已存储于全局变量 baye.data.g_GenAtt[] 中

输出参数

参数类型说明
context.hurtU8兵力伤害值

返回值

return 0;代表由钩子处理, 将跳过引擎默认处理程序
return -1;将使用引擎默认处理程序

baye.hooks.countSkillHurt钩子函数

功能计算技能对兵力和粮草的伤害
调用时机计算技能对兵力和粮草的伤害

输入参数攻防双方数据已存储于全局变量 baye.data.g_GenAtt[] 中

参数类型说明
context.skillIdU8技能ID
context.originU8原始目标对象,AOE时使用

输出参数

参数类型说明
context.hurtU8兵力伤害值
context.provU8粮草伤害值
context.stateU8输出异常状态

返回值

return 0;代表由钩子处理, 将跳过引擎默认处理程序
return -1;将使用引擎默认处理程序

baye.hooks.battleBuildAttackAttriutes钩子函数

功能计算将领的攻防等属性
调用时机计算将领的攻防等属性

输入参数

参数类型说明
context.indexU8计算结果存储位置
context.generalIndexU8将领的 战场序号

输出参数将结果存储于存储于全局变量 baye.data.g_GenAtt[context.index] 中

返回值

return 0;代表由钩子处理, 将跳过引擎默认处理程序
return -1;将使用引擎默认处理程序

baye.hooks.battleDrivePersonState钩子函数

功能驱动战场将领自定义状态 可用于自定义状态造成将领兵力伤害或补给。
调用时机驱动战场将领自定义状态

输入参数

参数类型说明
context.generalIndexU8将领的 战场序号

输出参数无

返回值0 有变化, 1 无变化

baye.hooks.getMaxArms钩子函数

功能获取人物最大可分配兵力
调用时机玩家或AI执行分配命令前

输入参数

参数类型说明
context.personIndexU8将领的序号

输出参数

参数类型说明
context.maxArmsU8最大兵力

返回值

return 0;代表由钩子处理, 将跳过引擎默认处理程序
return -1;将使用引擎默认处理程序

baye.hooks.getToolPropertyValue钩子函数

功能获取道具属性值
调用时机显示道具属性表时

输入参数

参数类型说明
context.toolIndexU8道具序号
context.propertyIndexU8属性序号

输出参数

参数类型说明
context.valueString属性值

返回值无

baye.hooks.getToolPropertyTitle钩子函数

功能获取道具属性表头
调用时机显示道具属性表时

输入参数

参数类型说明
context.propertyIndexU8属性序号

输出参数

参数类型说明
context.titleString属性表头字串

返回值无

相关全局配置

baye.data.toolPropertiesCountU8属性表列数量
baye.data.toolPropertiesDisplayWitdh[U8]属性表各列宽度

baye.hooks.getPersonPropertyValue钩子函数

功能获取人物属性值
调用时机显示人物属性表时

输入参数

参数类型说明
context.personIndexU8人物序号
context.propertyIndexU8属性序号

输出参数

参数类型说明
context.valueString属性值

返回值无

baye.hooks.getPersonPropertyTitle钩子函数

功能获取人物属性表头
调用时机显示人物属性表时

输入参数

参数类型说明
context.propertyIndexU8属性序号

输出参数

参数类型说明
context.titleString属性值

返回值无

相关全局配置

baye.data.personPropertiesCountU8属性表列数量
baye.data.personPropertiesDisplayWitdh[U8]属性表各列宽度

baye.hooks.getCityPropertyDisplay钩子函数

功能获取城池属性行
调用时机显示城池属性时

输入参数

参数类型说明
context.cityIndexU8城市序号
context.propertyIndexU8属性序号

输出参数

参数类型说明
context.displayString属性行

返回值无

相关全局配置

baye.data.cityPropertiesCountU8属性表行数量

baye.hooks.getFighterInfo钩子函数

功能战场上获取人物信息字符串
调用时机战场上查看人物信息时

输入参数

参数类型说明
context.generalIndexU8人物战场序号

输出参数

参数类型说明
context.infoString面板显示文本信息

返回值

return 0;代表由钩子处理, 将跳过引擎默认处理程序
return -1;将使用引擎默认处理程序

baye.hooks.getTerrainInfo钩子函数

功能战场上获取地形信息字符串
调用时机战场上查看地形信息时

输入参数

参数类型说明
context.terU8地形序号

输出参数

参数类型说明
context.infoString面板显示文本信息

返回值

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.personIndexU8人物序号

输出参数

参数类型说明
context.nameString人物名称

返回值

return 0;代表由钩子处理, 将跳过引擎默认处理程序
return -1;将使用引擎默认处理程序

baye.hooks.showStateChanged钩子函数

功能自定义显示状态变化
调用时机战场上一条计谋/技能结算完、目标将领的状态确实发生了变化之后触发,且状态不是「正常」也不是「阵亡」时才会调。紧接着引擎默认会弹一个「某某+状态名」的提示框 ⇒ 钩子 return 0 就是抢掉这个提示框、显示由你接管。(按引擎源码调用点整理,源码:src/FightSub.c · _CommonJNAction())

输入参数

参数类型说明
context.generalIndexU8战场序号
context.stateU8变化后的状态

输出参数

无

返回值

return 0;代表由钩子处理, 将跳过引擎默认处理程序
return -1;将使用引擎默认处理程序

baye.hooks.drawGenerals钩子函数

功能显示所有将领图片 用于自定义将领战场图
调用时机战场地图每一「整屏重画将领」的时刻调用一次:进入战场后首次显示、地图滚动完重画、将领行动或获得经验后刷新等,都走同一个入口 FgtShowGen(act)。context.frame 传的就是这个 act(动画帧偏移)。return 0 ⇒ 引擎跳过「逐个将领画立绘」的默认循环,这一屏所有将领的图都得钩子自己画完(想只接管某几个,配合 drawOneGeneral 一起看)。(按引擎源码调用点整理,源码:src/Fight.c · FgtShowGen())

输入参数

参数类型说明
context.frameU8帧序号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.generalIndexU8将领战场序号

输出参数

无

返回值

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.generalIndexU8将领战场序号

输出参数

参数类型说明
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.generalIndexU8将领战场序号

输出参数

参数类型说明
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.codeU16文字的GBK编码

输出参数

参数类型说明
context.indexU16对应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.indexU16初始选中序号

baye.hooks.willChangeMenuSelection钩子函数

调用时机即将menu变更选中项

输入参数

参数类型说明
context.indexU16变更后的选中项

baye.hooks.willCloseMenu钩子函数

调用时机即将关闭menu

输入参数

参数类型说明
context.indexU16最终选中项

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 字段)。

输出参数

返回值类型说明
—U80 新君登基(开新局);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.indexU8当前选中项在君主队列里的下标
context.generalIndexU16该下标对应的君主 PersonID

输出参数

无返回值,引擎不读结果(纯观察型钩子)。源码位置:src/gamEng.c · GamGetKingInner() 里的 UPDATE_UI() 宏。

baye.hooks.didShowMainMap钩子函数

功能大地图(城市一览)完成一次实际重绘之后回调,适合做「地图画完了再叠东西」的时机。
调用时机城市界面里 showflag 置位且非贴图模式时,ShowCityMap() 画完的那一刻。同一屏只调一次,不会每帧重复。

输入参数

无。

输出参数

无,引擎不读返回值。源码位置:src/cityedit.c · GetCitySetInner()。

baye.hooks.meetFight钩子函数

功能两军相遇、马上要开打之前问一句:这仗到底打不打。返回 0 就跳过战斗,将领直接留在城里,等于「不战而退」。
调用时机命令执行阶段(BattleDrv())里,敌军主将已确认、出征将领数组 genArray 刚填好之后。

输入参数

参数类型说明
context.cityU8交战城市的索引

输出参数

返回值类型说明
—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钩子函数

功能接管策略阶段的主功能菜单(原版三项:结束本轮 / 记录 / 确定退出),返回值当作玩家选了第几项。
调用时机玩家策略环节里,每次要弹主功能菜单时。

输入参数

无。

输出参数

返回值类型说明
—U80 结束本方策略(进入电脑策略);1 打开记录管理,之后继续玩家策略;2 退出游戏。注意:定义了钩子时,选 2 不再二次确认,直接退

源码位置:src/tactic.c · FunctionMenu()。

baye.hooks.onMenuIdle钩子函数

功能通用列表菜单每次刷新时回调,可以拿到当前选中下标。适合做「选中某项时额外画点东西」。
调用时机引擎里所有走 PlcSplMenuInner() 的列表菜单,每完成一次绘制(含滚动条刷新)就调一次。

输入参数

参数类型说明
context.indexU16当前选中项在整个列表里的下标(不是屏显行号)

输出参数

无返回值。源码位置:src/PublicFun.c · PlcSplMenuInner()。

baye.hooks.fightStatusBarTouched钩子函数

功能战场上触摸点落在「状态栏」区域内时回调,可拦截这次触摸自己做交互。
调用时机战场焦点移动逻辑里,判断触摸命中状态栏矩形的那一刻。在返回按钮、信息按钮的判定之前。

输入参数

参数类型说明
context.xU16触摸点屏幕横坐标
context.yU16触摸点屏幕纵坐标

输出参数

返回值类型说明
—S320 表示这次触摸已经处理完,引擎直接 break 不再往下判;其它值(含没定义钩子时的 -1)=继续走引擎原有判定

源码位置:src/Fight.c · FgtGetFoucsInner()。

baye.hooks.fightChooseAction钩子函数

功能接管战场里单个将领的「命令菜单」,返回值当作玩家选的命令。可用来增删命令、或让命令自动选定。
调用时机战场上轮到某个玩家将领行动、要弹命令菜单时(FgtGetPCmd() 循环内,每选一次调一次)。

输入参数

参数类型说明
context.indexU32该将领的 战场序号

输出参数

返回值类型说明
—U80 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.indexU32施展者的 战场序号

输出参数

返回值类型说明
—U32技能索引(随后按 SID(param) 解释);0xFFFF 表示取消这次计谋

源码位置:src/Fight.c · FgtGetPCmd()。

baye.hooks.fightOpenMainMenu钩子函数

功能接管战场系统菜单(原版:继续 / 全军撤退 / 观看动画 / 行军速度),返回值当作玩家选的项。
调用时机战场中打开系统菜单时,每次要弹菜单调一次。

输入参数

无。

输出参数

返回值类型说明
—U80 关闭菜单继续作战;1 全军撤退(直接把 g_FgtOver 判为 FGT_LOSE,随后与 0 走同一段收尾);2 观看动画设置;3 行军速度设置;0xFF 退出。注意:钩子接管后「全军撤退」不再二次确认

源码位置:src/FightSub.c · FgtMainMenu()。

baye.hooks.canUseSkill钩子函数

功能判定一个技能能不能打到这个目标上,返回值直接当作判定结果。可用来加自定义克制、地形限制或免疫规则。
调用时机战场上每次要检查「目标承受该技能的条件是否满足」时,AI 和玩家都会走到;在引擎原有的兵种、地形判定之前,钩子一返回,后面那些检查就不跑了。

输入参数

参数类型说明
context.skillIndexU8计谋(技能)序号
context.sameU8源码形参 same,同列/同类标记,用于区分判定分支
context.attackerIndexU8施展者的 战场序号
context.targetIndexU8目标的 战场序号

输出参数

返回值类型说明
—U80 不满足(技能不可用);非 0 满足

源码位置:src/FgtPkAi.c · FgtJNChkAim()(原函数注释:「检测目标承受该技能的条件是否满足」)。

baye.hooks.drawMapUnit钩子函数

功能接管战场地图单块地形的绘制。定义了这个钩子,引擎原来那句 gam_drawpic() 就不跑了——也就是每一块地形都得你自己画。
调用时机两种:FgtShowMap() 整屏重绘时,一屏 15×16 块逐块回调;FgtMapUnitShow() 单块刷新时(光标移动、将领走开复原)回调一次。

输入参数

参数类型说明
context.xU8这块地形的屏幕横坐标
context.yU8这块地形的屏幕纵坐标
context.tileU16地图数组下标;整屏重绘时是屏内序号,单块刷新时是 (ty - g_MapSY) * SCR_MAPWID + tx - g_MapSX。地形贴图 ID 取 baye.data.g_FightMap[tile]
context.flagU8绘制标志,透传给 gam_drawpic();整屏重绘固定 0,单块刷新由调用方给(用于反色一类的效果)

输出参数

无返回值。源码位置:src/Fight.c · FgtShowMap()、FgtMapUnitShow()。

baye.hooks.drawOneGeneral钩子函数

功能接管战场地图上单个将领的绘制。定义后引擎不再画默认立绘,也不再画禁咒/待命这些异常状态图标——这些都得自己补。
调用时机战场每次刷新一屏将领时,对每个「在可视范围内」的将领各调一次(FgtShowGen() 循环内,先画它脚下那块地形再调本钩子)。

输入参数

参数类型说明
context.indexU8将领的 战场序号
context.picU8算好的立绘图片序号(已含待机动画帧偏移);引擎默认画的是 idx + 1
context.frameU8动画帧偏移量 act
context.xU8屏幕横坐标
context.yU8屏幕纵坐标

输出参数

无返回值。源码位置:src/Fight.c · FgtShowGen()。

baye.getPersonName(index)功能函数

具体定义baye.getPersonName(index) → String
功能按人物序号取人物名称。
用法只读。名字是引擎按人物表 + 将星表算出来的;要改显示出来的名字,写钩子 baye.hooks.getPersonName,不是改这个函数的返回值。

输入参数

参数类型说明
indexU8人物序号 = g_Persons 的下标,从 0 开始。(和 getPersonNameByID 的 1 基编号差 1,别混用)

返回值

String:人物名称。序号越界时的行为未考证【推断】返回空串。

示例

console.log(baye.getPersonName(0));

baye.getToolName(index)功能函数

具体定义baye.getToolName(index) → String
功能按道具序号取道具名称。
用法只读。给对话、菜单、物品栏标题拼字符串用。

输入参数

参数类型说明
indexU8道具序号 = g_Tools 的下标,从 0 开始。

返回值

String:道具名称。

示例

// 上游 demos.js:208
baye.say(c.personIndex, "全新[" + baye.getToolName(3) + "]已打造成功!");

baye.getSkillName(index)功能函数

具体定义baye.getSkillName(index) → String
功能按技能序号取技能名称。
用法只读。把技能列表喂给 choose / centerChoose 之前,就用它拼名字数组。

输入参数

参数类型说明
indexU8技能序号 = 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。

输入参数

参数类型说明
indexU8城池序号 = g_Cities 的下标,从 0 开始。

返回值

String:城池名称。

示例

// 上游 printCity 里的写法
console.log(baye.getCityName(i));

baye.setCustomData(data)功能函数

具体定义baye.setCustomData(data)
功能存一段自定义数据,随存档一起保存。
用法整段覆盖旧值,不是追加。JS 侧按 UTF-8 编码后写进引擎缓冲区(bridge.js:396),所以想存结构化内容就自己序列化。开局写、读档后取,是版本自定义数据最常用的落点。

输入参数

参数类型说明
dataString要存的内容。

返回值

无。

示例

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())。

输入参数

参数类型说明
msgString提示内容。JS 侧按 GBK 塞进 g_asyncActionStringParam(bridge.js:405),超长会被引擎截断【推断:上限取决于引擎缓冲区大小,未实测】。
thenFunction提示框结束后的回调,引擎不往这里传参数。

返回值

无。要 Promise 写法用 baye.asyncAlert(msg)。

示例

// 上游 demos.js:174
baye.alert("没收失败!");

baye.say(personIndex, msg, then)功能函数

具体定义baye.say(personIndex, msg, then)
功能显示人物对话(带头像的对话框)。
用法异步。对话至少显示约 3 秒,期间按键可以跳过(源码:src/infdeal.c · ShowGReport())。

输入参数

参数类型说明
personIndexU8说话人物的序号 = g_Persons 下标,用来取头像。传 0xff 表示没有说话人【推断】。
msgString对话内容,支持 \n 换行。
thenFunction对话框关闭后的回调,引擎不传参数。

返回值

无。要 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。用来做对话节奏和动画间隔。

输入参数

参数类型说明
ticksU16时长,单位 1/100 秒(100 ≈ 1 秒);传 0 = 一直等到有按键。
flagU8打断方式:1 = 任意键可打断,2 = 只有功能键 / 触摸可打断,0 = 不可打断。
thenFunction结束后的回调,收到引擎回传的按键消息(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()。

输入参数

参数类型说明
xU8动画左上角横坐标。
yU8动画左上角纵坐标。
speidU16SPE 资源 ID(引擎资源表里的编号,开场动画常用 3)。
indexU16该资源内的子项序号,JS 侧从 0 开始,引擎内部会 +1。
flagU8位域:0x01 = 响应按键,0x02 = 播完不清背景,0x04 = 反向播放【推断】;不关心就传 0。
thenFunction播完或被打断后的回调: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()。

输入参数

参数类型说明
xU8菜单矩形左上角横坐标(逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128)。
yU8菜单矩形左上角纵坐标。
wU8菜单宽度,同时决定每项的显示宽度 = floor(w/6)。
hU8菜单高度,也决定一次能显示几行。
itemsArray<String>菜单项文字数组。
initU8初始高亮项在 items 里的下标,从 0 开始。
thenFunction回调,收到选中项的下标(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 完全一致。

输入参数

参数类型说明
wU8菜单宽度(同 choose)。
hU8菜单高度(同 choose)。
itemsArray<String>菜单项文字数组(同 choose)。
initU8初始高亮项下标(同 choose)。
thenFunction回调,收到选中项下标。玩家点框外取消时收到 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()。

输入参数

参数类型说明
itemsArray<U8>候选人物编号数组(g_Persons 下标),要选几个人就放几项。
initU8初始选中项——是 items 里的序号,不是人物编号。
thenFunction回调,收到选中项在 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()。

输入参数

参数类型说明
itemsArray<U8>候选道具编号数组(g_Tools 下标)。
initU8初始选中项(items 里的序号)。
thenFunction回调值【推断:与 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)⇒ 名字必须和引擎显示的完全一致,同名时返回第一个。返回的是引用,改字段就是改这个人。

输入参数

参数类型说明
nameString人物名。

返回值

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)⇒ 返回的是引用,改字段就是改这座城。

输入参数

参数类型说明
nameString城池名。

返回值

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。

输入参数

参数类型说明
nameString战场将领的名字。

返回值

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 基下标直接传进来。

输入参数

参数类型说明
idU8归属编号: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()。

输入参数

参数类型说明
cityU8目标城池下标(小于 CITY_MAX = 38)。
personU8人物下标(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()。

输入参数

参数类型说明
cityU8目标城池下标。
toolU8道具下标(g_Tools,0 基)。
hideBoolean真值 ⇒ 不把这个道具标记成「已被发现」(不写 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()。

输入参数

参数类型说明
cityU8城池下标。
personU8人物下标(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()。

输入参数

参数类型说明
cityU8城池下标,≥ CITY_MAX 直接返回 0。
toolU8道具下标,≥ 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,所以这是钩子里最常调的一句。

输入参数

参数类型说明
gIndexU8战场序号(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()。

输入参数

参数类型说明
xU8起笔横坐标(逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128)。
yU8起笔纵坐标。
textString要画的文字,支持 \n 自动换行。
scrU8非 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()。

输入参数

参数类型说明
xU8贴图左上角横坐标(逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128)。
yU8贴图左上角纵坐标。
residU16资源 ID。
resitemU16资源内的子项序号,JS 侧 0 基(C 侧 +1)。
picIndexU16帧号,JS 侧 0 基(C 侧 +1);超出该资源的帧数时什么都不画。
scrU8语义与别处相反:只有传 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()。

输入参数

参数类型说明
leftU8左边界横坐标。
topU8上边界纵坐标。
rightU8右边界横坐标(含)。
bottomU8下边界纵坐标(含)。
scrU8非 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()。

输入参数

参数类型说明
leftU8左边界横坐标。
topU8上边界纵坐标。
rightU8右边界横坐标(含)。
bottomU8下边界纵坐标(含)。
scrU8非 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),这两个值脚本改不了。

输入参数

参数类型说明
startXU8起点横坐标(逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128)。
startYU8起点纵坐标。
endXU8终点横坐标,端点包含在内。
endYU8终点纵坐标,端点包含在内。

返回值

无。

示例

// 上游示例里没找到调用点,下面是最小用法
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。

输入参数

参数类型说明
leftU8左边界横坐标。
topU8上边界纵坐标。
rightU8右边界横坐标。
bottomU8下边界纵坐标。
scrU8非 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()。

输入参数

参数类型说明
xU8横坐标(逻辑坐标:原点屏幕左上角,1 单位 = g_scale 个物理像素(默认 2),全屏 208×128)。
yU8纵坐标。
colorU80 = 擦除;非 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()。

输入参数

参数类型说明
minU16允许的最小值。
maxU16允许的最大值,同时是当前初值。调试模式下会被强改成 10000(tactic.c:1176)。
thenFunction回调,收到玩家确认的数值。玩家点框外取消时收到 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); });
}
API 手册钩子函数功能函数baye 引擎 看开发指导手册 返回资讯