Player
玩家
add
(method) Player:add(key: string|y3.Const.PlayerAttr, value: number)
增加属性值
@param key
— 属性名
@param value
— 值
add_global_save_data
(method) Player:add_global_save_data(key: string, value: integer)
增加全局存档
@param key
— 键
@param value
— 值
add_tech_level
(method) Player:add_tech_level(tech_type: py.TechKey, level: integer)
增加科技等级
@param tech_type
— 科技等级
@param level
— 等级
create_unit
(method) Player:create_unit(unit_id: py.UnitKey, point?: Point, facing?: number)
-> Unit
创建单位
@param unit_id
— 单位类型
@param point
— 单位
@param facing
— 朝向
custom_event_manager
EventManager?
display_info
(method) Player:display_info(msg: string, localize?: boolean)
向玩家发送提示
@param msg
— 消息
@param localize
— 是否支持语言环境
display_message
(method) Player:display_message(message: string, localize?: boolean)
对玩家显示文本消息
@param message
— 消息
@param localize
— 是否支持语言环境
enable_vignetting
function Player.enable_vignetting(player: Player, is_enable: boolean)
@param player
— 玩家
@param is_enable
— 开关
设置暗角开关
event
fun(self: Player, event: "玩家-加入游戏", callback: fun(trg: Trigger, data: EventParam.玩家-加入游戏)):Trigger
event_dispatch
(method) CustomEvent:event_dispatch(event_name: string, ...any)
-> any
2. any
3. any
4. any
发起自定义事件(回执模式),与通知模式不同,允许插入结算。
可以接受到事件的返回值,有多处注册事件时会按照注册顺序调用,
当任何事件回调返回了非 nil
的值后,后续触发器将不再调用。
Obj:event_on('获取', function (trigger,...)
print('获取1')
return 1
end)
Obj:event_on('获取', function (trigger,...)
print('获取2')
return 2
end)
local result = Obj:event_dispatch('获取')
print('结果为:', result)
以上代码会打印:
获取1
结果为: 1
event_dispatch_with_args
(method) CustomEvent:event_dispatch_with_args(event_name: string, args: any, ...any)
-> any
2. any
3. any
4. any
发起带事件参数的自定义事件(回执模式)
event_notify
(method) CustomEvent:event_notify(event_name: string, ...any)
发起自定义事件(通知模式),同一个对象身上只会有一个正在执行的事件, 当发生插入结算时,后面的事件会进入队列
Obj:event_on('获得', function ()
print('触发获得')
print('发起移除前')
Obj:event_notify('移除') -- 实际业务中,可能你获得的buff把你自己杀死了,而死亡会清除buff
print('发起移除后')
end)
Obj:event_on('移除', function ()
print('触发移除')
end)
Obj:event_notify('获得')
这段代码会打印:
触发获得
发起移除前
发起移除后
触发移除
event_notify_with_args
(method) CustomEvent:event_notify_with_args(event_name: string, args: any[], ...any)
发起带事件参数的自定义事件(通知模式)
event_on
(method) CustomEvent:event_on(...any)
-> Trigger
注册自定义事件,当触发时,会执行回调函数。
Obj:event_on('输入', function (trigger, ...)
print('触发了输入事件', ...)
end)
Obj:event_notify('输入', '123', '456')
以上会打印:
触发了输入事件 123 456
注册时可以指定事件的参数:
Obj:event_on('输入', {'123'}, function (trigger, ...)
print('触发了输入事件', ...)
end)
Obj:event_notify('输入', 1) -- 不能触发事件
Obj:event_notify_with_args('输入', {'123'}, 2) -- 可以触发事件
Obj:event_notify_with_args('输入', {'456'}, 3) -- 不能触发事件
Obj:event_notify_with_args('输入', {'123', '666'}, 4) -- 可以触发事件
exit_game
(method) Player:exit_game()
退出游戏
get_achieve_point
(method) Player:get_achieve_point()
-> integer|true
获取玩家当前地图的成就点数
get_all_units
(method) Player:get_all_units()
-> unit_group: UnitGroup
属于某玩家的所有单位
@return unit_group
— 单位组
get_attr
(method) Player:get_attr(key: string|y3.Const.PlayerAttr)
-> role_res: number
获取玩家属性
@param key
— 属性名
@return role_res
— 玩家属性
get_by_handle
function Player.get_by_handle(py_player: py.Role)
-> Player
get_by_id
function Player.get_by_id(id: integer)
-> player: Player
转换玩家ID为玩家
@param id
— 玩家ID
@return player
— 玩家
get_by_string
function Player.get_by_string(str: string)
-> Player?
根据字符串获取玩家,字符串是通过 tostring(Player)
或是使用ECA中的“任意变量转化为字符串”获得的。
get_camp
(method) Player:get_camp()
-> py.Camp
get_color
(method) Player:get_color()
-> HEX颜色: string
获取玩家颜色
get_controller
(method) Player:get_controller()
-> role_type: y3.Const.RoleType
获取玩家控制者类型
@return role_type
— 玩家控制者类型
get_custom_event_manager
(method) CustomEvent:get_custom_event_manager()
-> EventManager?
get_exp_rate
(method) Player:get_exp_rate()
-> exp_rate: number
获取经验获得率
@return exp_rate
— 经验获得率
get_id
(method) Player:get_id()
-> role_id_num: integer
获取玩家ID
@return role_id_num
— 玩家ID
get_local
function Player.get_local()
-> Player
获取本地玩家,注意这可能会导致不同步!
警告:如果你不确定这个函数在做什么,请不要使用它!
已废弃:请改用
y3.player.with_local
get_map_level
(method) Player:get_map_level()
-> integer
获取玩家的此地图平台等级
get_map_level_rank
(method) Player:get_map_level_rank()
-> integer
获取玩家在本地图的平台等级排名
get_mouse_pos
(method) Player:get_mouse_pos()
-> point: Point
获取鼠标在游戏内的所在点。
必须先设置 y3.config.sync.mouse = true
。
@return point
— 点
get_mouse_pos_x
(method) Player:get_mouse_pos_x()
-> pos_x: number
获取鼠标在屏幕上的X坐标
@return pos_x
— X坐标
get_mouse_pos_y
(method) Player:get_mouse_pos_y()
-> pos_y: number
获取鼠标在屏幕上的y坐标
@return pos_y
— Y坐标
get_mouse_ui_x_percent
(method) Player:get_mouse_ui_x_percent()
-> x_per: number
获取玩家鼠标屏幕坐标X的占比。
必须先设置 y3.config.sync.mouse = true
。
@return x_per
— X的占比
get_mouse_ui_y_percent
(method) Player:get_mouse_ui_y_percent()
-> y_per: number
获取玩家鼠标屏幕坐标y的占比。
必须先设置 y3.config.sync.mouse = true
。
@return y_per
— Y的占比
get_name
(method) Player:get_name()
-> role_name: string
获取玩家名字
@return role_name
— 玩家名字
get_operation_key
(method) Player:get_operation_key(key: py.NormalKey, assist_key: py.RecordKey)
-> shortcut: py.EditableGameFunc
获取玩家响应键盘按键的基础操作(过滤掉禁止设置的)
@param key
— 键名
@param assist_key
— 键盘按键
@return shortcut
— 基础操作
get_platform_icon
(method) Player:get_platform_icon()
-> icon: string
获取玩家平台头像
@return icon
— 平台头像
get_platform_icon_url
(method) Player:get_platform_icon_url()
-> icon_url: string
获取玩家平台头像下载地址
@return icon_url
— 平台头像下载地址
get_platform_id
(method) Player:get_platform_id()
-> plat_aid: integer
获取玩家平台唯一ID
@return plat_aid
— 平台唯一ID
get_platform_level
(method) Player:get_platform_level()
-> map_level: integer
获取玩家平台等级
@return map_level
— 平台等级
get_platform_model
(method) Player:get_platform_model()
-> model: py.ModelKey
获取玩家平台外观模型
@return model
— 模型id
get_platform_name
(method) Player:get_platform_name()
-> name: string
获取玩家唯一名称
@return name
— 属性名称
get_platform_uuid
(method) Player:get_platform_uuid()
-> string
获取玩家加密UUID
get_played_times
(method) Player:get_played_times()
-> integer
获取玩家在本地图的累计局数
get_rank_num
(method) Player:get_rank_num(key: integer)
-> rank_num: integer
获取整数存档玩家排名
@param key
— 存档key
@return rank_num
— 整数存档玩家排名
get_res_icon
function Player.get_res_icon(key: py.RoleResKey)
-> icon: integer
获取玩家属性的货币图标
@param key
— 属性名
@return icon
— 图标id
get_res_keys
function Player.get_res_keys(only_coin: boolean)
-> py.RoleResKey[]
获取所有玩家属性的属性名
@param only_coin
— 只获取货币类型的玩家属性
get_res_name
function Player.get_res_name(key: py.RoleResKey)
-> name: string
获取玩家属性名称
@param key
— 属性名
@return name
— 属性名称
get_save_data_bool_value
(method) Player:get_save_data_bool_value(index: integer)
-> bool_value: boolean
布尔型玩家存档数据
@param index
— 存档key
@return bool_value
— 布尔型玩家存档数据
get_save_data_float
(method) Player:get_save_data_float(key: integer)
-> int_value: number
实数型存档数据
@param key
— 存档key
@return int_value
— 实数型存档数据
get_save_data_int
(method) Player:get_save_data_int(key: integer)
-> int_value: integer
获取整数型存档数据
@param key
— 存档key
@return int_value
— 整数型存档数据
get_save_data_string
(method) Player:get_save_data_string(key: integer)
-> str_value: string
字符串型玩家存档数据
@param key
— 存档key
@return str_value
— 字符串玩家存档数据
get_save_data_table
(method) Player:get_save_data_table(key: integer)
-> table_value: table?
表格型玩家存档数据
@param key
— 存档key
@return table_value
— 表格型玩家存档数据
get_selecting_unit
(method) Player:get_selecting_unit()
-> Unit?
get_selecting_unit_group
(method) Player:get_selecting_unit_group()
-> UnitGroup?
get_state
(method) Player:get_state()
-> role_status: y3.Const.RoleStatus
获取玩家游戏状态
@return role_status
— 玩家游戏状态
See: y3.Const.RoleStatus
get_store_item_end_time
(method) Player:get_store_item_end_time(id: py.StoreKey)
-> store_item_end_time: integer
玩家平台道具到期时间戳
@param id
— 平台道具id
@return store_item_end_time
— 平台道具到期时间戳
get_store_item_number
(method) Player:get_store_item_number(id: py.StoreKey)
-> store_item_cnt: integer
玩家平台道具数量
@param id
— 平台道具id
@return store_item_cnt
— 平台道具数量
get_team_id
(method) Player:get_team_id()
-> camp_id: integer
获取队伍ID
@return camp_id
— 队伍ID
get_tech_level
(method) Player:get_tech_level(tech_id: py.TechKey)
-> tech_level: integer
获取科技等级
@param tech_id
— 科技id
@return tech_level
— 科技等级
handle
py.Role
玩家
id
integer
is_achieve_unlock
(method) Player:is_achieve_unlock(id: string)
-> boolean
判断指定成就是否解锁
is_enemy
(method) Player:is_enemy(player: Player)
-> is_enemy: boolean
玩家间是否是敌对关系
@param player
— 玩家
@return is_enemy
— 是否是敌对关系
is_in_fog
(method) Player:is_in_fog(point: Point)
-> is_point_in_fog: boolean
某个位置是否处于玩家的迷雾中
@param point
— 点
@return is_point_in_fog
— 点在迷雾中
is_in_group
(method) Player:is_in_group(player_group: PlayerGroup)
-> is_in_group: boolean
玩家在玩家组中
@param player_group
— 玩家组
@return is_in_group
— 玩家在玩家组中
is_in_shadow
(method) Player:is_in_shadow(point: Point)
-> is_point_in_shadow: boolean
某个位置是否处于玩家的黑色阴影中
@param point
— 点
@return is_point_in_shadow
— 点在黑色阴影中
is_key_pressed
(method) Player:is_key_pressed(key: y3.Const.KeyboardKey|y3.Const.MouseKey)
-> 是否被按下: boolean
玩家的按键是否被按下
@param key
— 按键
is_middle_join
(method) Player:is_middle_join()
-> is_middle_join: boolean
玩家是否中途加入
@return is_middle_join
— 是否中途加入
is_operation_key_occupied
(method) Player:is_operation_key_occupied(key: py.NormalKey, assist_key: py.RecordKey)
-> is_conf: boolean
玩家基础操作快捷键是否被占用 TODO:功能键lua层表示需要处理
@param key
— 键名
@param assist_key
— 辅助键名
@return is_conf
— 是否被占用
is_visible
(method) Player:is_visible(point: Point)
-> visible: boolean
玩家是否可以看到某个位置
@param point
— 点
@return visible
— 点对于玩家可见
key
integer?
kick
(method) Player:kick(reason: string)
强制踢出
@param reason
— 踢出原因
kv_has
(method) KV:kv_has(key: string)
-> boolean
是否拥有指定键值对。可以与ECA互通。
kv_key
string?
kv_load
(method) KV:kv_load(key: string, lua_type: 'boolean'|'integer'|'number'|'string'|'table'...(+1))
-> any
lua_type:
| 'boolean'
| 'number'
| 'integer'
| 'string'
| 'table'
kv_remove
(method) KV:kv_remove(key: any)
kv_save
(method) KV:kv_save(key: string, value: KV.SupportType)
保存自定义键值对。可以与ECA互通。
object_event_manager
EventManager?
open_platform_shop
(method) Player:open_platform_shop(id: py.StoreKey)
请求购买平台道具
@param id
— 平台道具id
phandle
py.Role
玩家
ref_manager
unknown
request_random_pool
(method) Player:request_random_pool(id: integer, callback: fun(code: 0|1|2|999, result: { [integer]: integer }))
请求执行随机池掉落 执行完毕后调用回调函数,返回的参数如下:
code
: 结果代码0
: 成功1
: 不满足触发间隔2
: 不满足每日限制999
: 服务器无法连接,必须在平台上才能测试
result
: 结果表,key
表示影响的存档编号,value
表示改变的值
@param id
— 随机池的编号
@param callback
— 执行完毕后的回调函数
select_unit
(method) Player:select_unit(unit_or_group: Unit|UnitGroup)
选中单位/单位组
@param unit_or_group
— 单位/单位组
set
(method) Player:set(key: string|y3.Const.PlayerAttr, value: number)
设置属性值
@param key
— 属性名
@param value
— 值
set_all_operation_key
(method) Player:set_all_operation_key(operation: py.AllGameFunc, is_enable: boolean)
设置玩家的基础操作开关(包含所有基础操作) TODO:operation在lua层的表示方式待整理 方法名英文待确认
@param operation
— 可编辑操作
@param is_enable
— 是否开
set_color_grading
(method) Player:set_color_grading(value: integer)
设置滤镜
@param value
— 滤镜
set_exp_rate
(method) Player:set_exp_rate(rate: number)
设置经验获得率
@param rate
— 经验获得率
set_follow_distance
(method) Player:set_follow_distance(distance: number)
设置跟随距离
@param distance
— 距离
set_hostility
(method) Player:set_hostility(player: Player, is_hostile: boolean)
设置敌对关系
@param player
— 玩家
@param is_hostile
— 是否敌视
set_local_terrain_visible
(method) Player:set_local_terrain_visible(is_visible: boolean)
显示/隐藏玩家地表纹理
@param is_visible
— 显示/隐藏
set_mouse_click_selection
(method) Player:set_mouse_click_selection(is_enable: boolean)
为玩家开/关鼠标点选
@param is_enable
— 是否开鼠标点选
set_mouse_drag_selection
(method) Player:set_mouse_drag_selection(is_enable: boolean)
为玩家开/关鼠标框选
@param is_enable
— 是否开鼠标框选
set_mouse_wheel
(method) Player:set_mouse_wheel(is_enable: boolean)
为玩家开/关鼠标滚轮
@param is_enable
— 是否开鼠标滚轮
set_name
(method) Player:set_name(name: string)
设置名字
@param name
— 名字
set_operation_key
(method) Player:set_operation_key(operation: py.EditableGameFunc, key: py.NormalKey, assist_key: py.RecordKey)
设置玩家的基础操作快捷键(过滤掉禁止设置的) TODO:operation在lua层的表示方式待整理 方法名英文待确认
@param operation
— 可编辑操作
@param key
— 功能按键
@param assist_key
— 辅助按键
set_role_vignetting_breath_rate
(method) Player:set_role_vignetting_breath_rate(circle_time: number)
设置暗角呼吸周期
@param circle_time
— 呼吸周期
set_strict_group_navigation
(method) Player:set_strict_group_navigation(is_strict: boolean)
设置群体寻路严格模式
@param is_strict
— 是否严格
set_team
(method) Player:set_team(id: py.Camp)
设置队伍ID
set_tech_level
(method) Player:set_tech_level(tech_type: py.TechKey, level: integer)
设置科技等级
@param tech_type
— 科技等级
@param level
— 等级
set_vignetting_change_range
(method) Player:set_vignetting_change_range(range: number)
设置暗角变化幅度
@param range
— 幅度
set_vignetting_color
(method) Player:set_vignetting_color(red: number, green: number, blue: number, time: number)
设置暗角颜色
@param red
— 颜色r
@param green
— 颜色g
@param blue
— 颜色b
@param time
— 过渡时间
set_vignetting_size
(method) Player:set_vignetting_size(size: number)
设置暗角大小
@param size
— 大小
share_vision_of_unit
(method) Player:share_vision_of_unit(unit: Unit, share: boolean)
获取单位的视野
@param unit
— 单位
share_vision_with_player
(method) Player:share_vision_with_player(target_player: Player, share: boolean)
对玩家开放视野
@param target_player
— 玩家
storage_all
(method) Storage:storage_all()
-> table
获取存储数据的容器
storage_get
(method) Storage:storage_get(key: any)
-> any
获取存储的值
storage_set
(method) Storage:storage_set(key: any, value: any)
存储任意值
storage_table
table
subscribe_event
(method) ObjectEvent:subscribe_event(event_name: string, ...any)
-> any[]?
2. Trigger.CallBack
3. Unsubscribe: function
type
string
upload_save_data
(method) Player:upload_save_data()
上传存档
upload_tracking_data
(method) Player:upload_tracking_data(key: string, cnt: integer)
上传埋点数据
use_store_item
(method) Player:use_store_item(count: integer, item_id: py.StoreKey)
消耗玩家平台道具
@param count
— 个数
@param item_id
— 平台道具id
with_local
function Player.with_local(callback: fun(local_player: Player))
在本地玩家环境中执行代码。
在开发模式中会阻止这些代码修改上值、修改全局变量、调用同步函数,因此也会产生额外的开销。(暂时失效)
在平台上不会检测,也不会有额外开销。
y3.player.with_local(function (local_player)
-- 在此回调函数中修改上值、修改全局变量、调用同步函数会给出警告
print(local_player)
end)