跳到主要内容

combat

简介

战斗引擎

组件接口

combat.gs

函数原型函数作用
void init_inner_combat()初始化内部战斗消息
void clear_inner_combat()清除内部战斗消息
void inner_message(string cmd, ...)发送内部消息
void flush()处理消息队列
void on_msg(array payload)解析内部消息
map get_combats()获取所有战斗对象
object create_combat_by_class_id(int class_id, map param = , domain d = nil)根据配置创建战斗对象
object create_combat(string ob_name = nil, map param = , domain d = nil)创建战斗对象
object get_combat(string rid)根据RID获取战斗对象
void remove_combat(string rid)移除战斗
int get_combat_count()获取战斗数
map get_infos()获取所有战斗信息
void set_time_scale(mixed speed_rate = 1.0)统一设置战斗时间流速
float calc_distance(mixed ob_or_pos1, mixed ob_or_pos2)计算两位置或对象之间的直线(欧式)距离
int point_angle(float startx, float starty, float endx, float endy)计算两个点之间的夹角

FCombatRule.gs

战斗规则组件

函数原型函数作用
void start(array roles = [], int lifetime = 0, int readytime = 0, int curtime = 0)战斗开始
void end(map result = )战斗结束
void update(int curtime = 0)循环更新
void do_exec(int curtime)循环执行
bool is_on_combat()是否正在比赛
int start_time()获得游戏开始时间
int combat_time()获得当前游戏时间
int end_time()获得游戏结束时间

FRoleAction.gs

行为组件

函数原型函数作用
void operates(map ops = )批量操作
void operate(string cmd, array args = [])战斗操作

FRoleBuff.gs

角色buff组件

函数原型函数作用
void add_buff(int buff_id, int angle = 0)添加buff
void del_buff(int buff_id)删除buff
void clear_buff()删除所有buff
bool is_ctrl()是否被控制
bool is_nodmg()是否无敌
bool is_laugh()是否受到嘲讽
bool is_reback()是否反伤
int get_reback_count()获取反伤比例
array get_reback_buff()获取反伤buff
bool is_gethp()是否吸血
int get_gethp_count()获取吸血比例
bool is_guard()是否霸体
bool is_armor()是否护盾
array get_multi()获取多重攻击信息
bool is_show_multi()是否是分身
bool is_stun()是否是眩晕
bool is_ice()是否是冰冻等无法进行行为的状态
bool is_action()是否有动作
bool is_help_status()是否被霸体护盾等状态导致无法切换受击动作
void del_stun()删除眩晕BUFF
void cost_guard_hp(int cost_hp)消耗霸体护盾
int cost_armor_hp(int cost_hp)消耗护盾值
int get_buff_att(string att)获得buff属性
void buff_update(int curtime)buff效果

FRoleFilter.gs

战斗角色筛选组件

函数原型函数作用
array nearest_roles(int camp = 0, int count = 1, int range = 0)找到最近的单位
array nearest_no_camp_roles(int camp = 0, int count = 1, int range = 0)找到最近的非该阵营单位
array nearest_no_camp_enemies(int camp = 0, int count = 1, int range = 0)找到最近的非该阵营的敌人
array nearest_enemies(int count = 1, int range = 0)找最近的敌方
array nearest_friends(int count = 1, int range = 0)找最近的友方
array nearest_neutrals(int count = 1, int range = 0)找最近的中立方
array nearest_enemy_or_neutrals(int count = 1, int range = 0)找最近的中立方或者敌方
object random_no_camp_roles(int camp = 0, int range = 0)随机非阵营单位
object random_another(int range = 0)找随机非己方单位

FRoleItem.gs

道具组件

函数原型函数作用
bool add_item(int class_id, int amount = 1, map param = )添加道具
bool cost_item(string rid, int amount = 1)消耗道具
bool cost_item_by_class_id(int class_id, int amount = 1)消耗道具
bool add_items(array items)批量添加道具
bool cost_items(array items)批量扣除道具
bool cost_items_by_class_id(array items)批量扣除道具
bool check_item_enough(int class_id, int amount)检测某个数量是否充足
bool check_items_enough(array items)批量检测道具是否充足
void item_sell(int class_id, int amount = 1)出售道具
void item_use(int class_id, int amount = 1, array args = [])使用道具

FRoleStatus.gs

角色状态组件

函数原型函数作用
map get_status()获取角色状态
map get_last_status()获取角色上次状态
map get_last_cmd_status(string cmd)获取角色上次同命令状态
void switch_status(map role_status)切换角色状态
bool can_switch(map role_status)是否能切换角色状态
bool is_moving()是否在移动
bool can_action()是否可以行动
bool is_dead()是否处于死亡状态
void status_run(int curtime)状态运行
void sync_state(map pos, map data)同步位置等信息,位置必须同步,允许携带其他信息
void move_start(int angle, float speed = 0.0f, string state = "move", map dest = nil, mixed last_pos = nil)移动开始
void move_end()移动结束

FRoleTask.gs

任务组件

函数原型函数作用
void add_task_by_lv(int lv)根据角色等级添加任务
void add_task(int task_id)添加任务
void refresh_daily()刷新每日任务
void refresh_task(int task_id)刷新任务
bool finish_task(int task_id)完成任务
void task_exec(string target_type, int target_value = 1, array target = nil, bool is_count = true)任务执行

FRoleUp.gs

养成组件

函数原型函数作用
bool add_exp(int add_exp = 0)添加经验

FSceneFilter.gs

战斗角色筛选组件

函数原型函数作用
array get_combat_roles()获取战斗单位
object get_user_role(string rid = nil)获取某个玩家的角色
array get_roles(object who, int camp = 0, string rid = nil)获取某阵营所有单位
array get_no_camp_roles(object who, int camp = 0, string rid = nil)获取非某阵营所有单位
array get_no_camp_enemies(object who, int camp = 0, string rid = nil)获取非某阵营所有敌人

status.gs

角色状态管理器

函数原型函数作用
bool can_switch(object role, map cur_status, map target_status)是否可以切换状态
void play(object role, int curtime, map cur_status)状态执行

CombatBase.gs

战斗基础对象

函数原型函数作用
bool is_combat()是否是战斗对象
int get_lifetime()获取生命周期ms
void set_lifetime(int lifetime)设置生命周期
void clear_lifetime()清除生命周期
void FEntity.heartbeat()心跳
void combat_destruct()销毁战斗
object create_entity_by_class_id(int class_id, map param = , bool is_sync = true)通过配置表创建实体
object create_entity(string obname, map param = , bool is_sync = true)创建实体
map get_combat_info()获取战斗信息
object get_scene(string rid)根据rid获取战斗场景
object get_scene_by_class_id(int class_id)根据class_id获取战斗场景
array get_scenes()获取所有战斗场景
string get_scene_rid()获取场景rid
void set_scene_rid(string scene_rid)设置场景rid

CombatRole.gs

战斗角色

函数原型函数作用
bool is_combat_role()是否是战斗角色
void do_exec(int curtime)角色循环执行
object get_combat()获取所在战斗对象
void bind_user(object user)绑定玩家
void unbind_user()取消绑定玩家
object user()获得绑定玩家
object get_ent(string rid)获取前场景某个战斗实体
array get_ents()获取当前场景所有战斗实体
int start_time()获取战斗开始时间
int end_time()获取战斗结束时间
int combat_time()获取战斗时间
int camp()阵营
int hp()当前血量
int hp_max()最大血量
float speed()速度
float atk_speed()速度
int atk()攻击
map get_pos()获得位置
void set_pos(map dest, bool is_sync = false)设置位置
int lv()等级
int exp()经验
int exp_max()经验上限
float calc_distance(mixed ob_or_pos)计算任意位置或实体到自己的距离
bool FRoleUp.add_exp(int add_exp = 0)添加经验

CombatScene.gs

战斗场景基础对象

函数原型函数作用
bool is_scene()是否是场景对象
void do_exec(int curtime)循环执行
object create_entity_by_class_id(int class_id, map param = )通过配置表创建实体
object create_entity(string obname, map param = )创建实体
map get_scene_info()获取场景信息
object get_ent(string rid)根据rid获取实体
array get_ents()获取所有战斗实体