Class Room#
-
class Room: (
AbstractRoom,
ServerRoomBase,
GameEventWrappers,
CompatAskFor
)# Room是fk游戏逻辑运行的主要场所,同时也提供了许多API函数供编写技能使用。
一个房间中只有一个Room实例,保存在RoomInstance全局变量中。
-
extra_turn_list:
table# 待执行的额外回合表
-
general_pile:
string[]# 武将牌堆,这是可用武将名的数组
-
current_cost_skill:
TriggerSkill?# AI用
-
getAllPlayers(self:
Room, sortBySeat?:boolean):ServerPlayer[]# 获得当前房间中的所有角色。
如果按照座位排序,返回的数组的第一个元素是当前回合角色,并且按行动顺序进行排序。
- Parameters:
sortBySeat? (
boolean) -- 是否按座位排序,默认是- Returns:
_1 (
ServerPlayer[]) -- 房间中角色的数组
-
getAlivePlayers(self:
Room, sortBySeat?:boolean):ServerPlayer[]# 获得所有存活角色,参看getAllPlayers
- Parameters:
sortBySeat? (
boolean) -- 是否按座位排序,默认是
-
getOtherPlayers(
self:Room,
player:ServerPlayer,
sortBySeat?:boolean,
include_dead?:boolean
):ServerPlayer[]# 获得除一名角色外的其他角色。
- Parameters:
player (
ServerPlayer) -- 要排除的角色sortBySeat? (
boolean) -- 是否按座位排序,默认是include_dead? (
boolean) -- 是否要把死人也算进去?
- Returns:
_1 (
ServerPlayer[]) -- 其他角色列表
-
getLord(self:
Room):ServerPlayer?# 获得当前房间中的主公。
由于某些游戏模式没有主公,该函数可能返回nil。
- Returns:
_1? (
ServerPlayer) -- 主公
-
getNCards(self:
Room, num:integer, from?:string):integer[]# 从摸牌堆中获取若干张牌。
如果牌堆中没有足够的牌可以获得,那么会触发洗牌;还是不够的话,游戏就平局。
- Parameters:
num (
integer) -- 要获得的牌的数量from? (
string) -- 获得牌的位置,可以是"top"或者"bottom",表示牌堆顶还是牌堆底
- Returns:
_1 (
integer[]) -- 得到的id
-
clearHandMark(self:
Room, player:ServerPlayer, name:string)# 清除一名角色手牌中的某种标记
- Parameters:
player (
ServerPlayer) -- 要清理标记的角色name (
string) -- 要清理的标记名
-
setCardMark(self:
Room, card:Card, mark:string, value:any)# 将一张卡牌的```mark```标记设置为```value```,并通知所有客户端更新。
通用的mark名称及后缀参见```mark_enum.lua```。
- Parameters:
card (
Card) -- 更新标记的牌mark (
string) -- 标记的名称value (
any) -- 设置的值,可以是数字、字符串、表、键值表等
-
addCardMark(self:
Room, card:Card, mark:string, count?:integer)# 将一张卡牌的```mark```标记增加```count```个,并通知所有客户端更新。
- Parameters:
card (
Card) -- 增加标记的牌mark (
string) -- 标记名称count? (
integer) -- 增加的数量,默认为1
-
removeCardMark(self:
Room, card:Card, mark:string, count?:integer)# 将一名玩家的```mark```标记减少```count```个,并通知所有客户端更新。
- Parameters:
card (
Card) -- 减少标记的牌mark (
string) -- 标记名称count? (
integer) -- 减少的数量,默认为1
-
prepareGeneral(
self:Room,
player:ServerPlayer,
general:string,
deputy?:string,
broadcast?:boolean
)# 为角色设置武将,并从武将池中抽出,若有隐匿技变为隐匿将。注意此时不会进行选择势力,请随后自行处理
- Parameters:
general (
string) -- 主将名deputy? (
string) -- 副将名broadcast? (
boolean) -- 是否公示,默认否
-
animDelay(self:
Room, sec:integer)# 延迟一段时间。界面上会显示所有人读条了。注意这个只能延迟多少秒。
- Parameters:
sec (
integer) -- 要延迟的秒数
-
sendFootnote(
self:Room,
ids:integer[],
log:LogMessage,
virtual?:boolean
)# 为一些牌设置脚注
- Parameters:
ids (
integer[]) -- 要设置虚拟牌名的牌的id列表log (
LogMessage) -- Log的实际内容virtual? (
boolean) -- 是否为虚拟牌
-
sendCardVirtName(
self:Room,
ids:integer[],
name:string,
virtual?:boolean
)# 为一些牌设置虚拟转化牌名(仅影响桌面上的牌,处理区/弃牌堆/虚空区)
- Parameters:
ids (
integer[]) -- 要设置虚拟牌名的牌的id列表name (
string) -- 虚拟牌名virtual? (
boolean) -- 是否为虚拟牌
-
setEmotion(self:
Room, player:ServerPlayer, name:string)# 在player脸上展示名为name的emotion动效。
这就是“杀”、“闪”之类的那个动画。
- Parameters:
player (
ServerPlayer) -- 被播放动画的那个角色name (
string) -- emotion名字,可以是一个路径
-
setCardEmotion(self:
Room, cid:integer, name:string)# 在一张card上播放一段emotion动效。
这张card必须在处理区里面,或者至少客户端觉得它在处理区。
- Parameters:
cid (
integer) -- 被播放动效的那个牌的idname (
string) -- emotion名字,可以是一个路径
-
doSuperLightBox(self:
Room, path:string, extra_data:any)# 播放一个全屏大动画。可以自己指定qml文件路径和额外的信息。
- Parameters:
path (
string) -- qml文件的路径,有默认值extra_data (
any) -- 要传递的额外信息
-
notifySkillInvoked(
self:Room,
player:ServerPlayer,
skill_name:string,
skill_type?:string| "big" | "control" | "defensive" | "drawcard"...(+6),
tos?:ServerPlayer[] |integer[]
)# 在player的脸上播放技能发动的特效。
与此同时,在战报里面发一条“xxx发动了xxx”
- Parameters:
player (
ServerPlayer) -- 发动技能的那个玩家skill_name (
string) -- 技能名skill_type? (
string| "big" | "control" | "defensive" | "drawcard"...(+6)) -- 技能的动画效果,默认是那个技能的anim_typetos? (
ServerPlayer[] |integer[]) -- 技能目标,填空则不声明
-
doIndicate(
self:Room,
source:integer|ServerPlayer,
targets:ServerPlayer[] |integer[]
)# 播放从source指到targets的指示线效果。
- Parameters:
source (
integer|ServerPlayer) -- 指示线开始的那个玩家targets (
ServerPlayer[] |integer[]) -- 指示线目标玩家的列表
-
askToUseActiveSkill(
self:Room,
player:ServerPlayer,
params:AskToUseActiveSkillParams
): (
boolean,
{cards:integer[], targets:ServerPlayer[], interaction:any}?
)# 询问player是否要发动一个主动技。
如果发动的话,那么会执行一下技能的onUse函数,然后返回选择的牌和目标等。
- Parameters:
player (
ServerPlayer) -- 询问目标params (
AskToUseActiveSkillParams) -- 各种变量
- Returns:
_1 (
boolean) -- 返回第一个值为是否成功发动,第二值为技能选牌、目标等数据_2? ({cards:
integer[], targets:ServerPlayer[], interaction:any}) -- 返回第一个值为是否成功发动,第二值为技能选牌、目标等数据
-
askToDiscard(
self:Room,
player:ServerPlayer,
params:AskToDiscardParams
):integer[]# 询问一名角色弃牌。
在这个函数里面牌已经被弃掉了(除非skipDiscard为true)。
- Parameters:
player (
ServerPlayer) -- 弃牌角色params (
AskToDiscardParams) -- 各种变量
- Returns:
_1 (
integer[]) -- 弃掉的牌的id列表,可能是空的
-
askToChoosePlayers(
self:Room,
player:ServerPlayer,
params:AskToChoosePlayersParams
):ServerPlayer[]# 询问一名玩家从targets中选择若干名玩家出来。
- Parameters:
player (
ServerPlayer) -- 要做选择的玩家params (
AskToChoosePlayersParams) -- 各种变量
- Returns:
_1 (
ServerPlayer[]) -- 选择的玩家列表,可能为空
-
askToCards(
self:Room,
player:ServerPlayer,
params:AskToCardsParams
):integer[]# 询问一名玩家选择自己的几张牌。
与askForDiscard类似,但是不对选择的牌进行操作就是了。
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToCardsParams) -- 各种变量
- Returns:
_1 (
integer[]) -- 选择的牌的id列表,可能是空的
-
viewCards(
self:Room,
player:ServerPlayer,
params:ViewCardsParams
)# 询问玩家观看一些牌(只有确定可用)
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
ViewCardsParams) -- 参数列表
-
askToViewCardsAndChoice(
self:Room,
player:ServerPlayer,
params:AskToViewCardsAndChoiceParams
):string# 询问玩家观看一些牌并做出选项,但是选项有额外的点亮标准
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToViewCardsAndChoiceParams) -- 参数列表
-
askToChooseCardsAndChoice(
self:Room,
player:ServerPlayer,
params:AskToChooseCardsAndChoiceParams
):integer[],string# 询问玩家选择牌和选项,但是选项有额外的点亮标准
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToChooseCardsAndChoiceParams) -- 参数列表
-
askToChooseCardsAndPlayers(
self:Room,
player:ServerPlayer,
params:AskToChooseCardsAndPlayersParams
):ServerPlayer[],integer[],boolean# 询问玩家选择X张牌和Y名角色。
返回两个值,第一个是选择目标列表,第二个是选择的牌id列表,第三个是否按了确定
默认可取消
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToChooseCardsAndPlayersParams) -- 各种变量
- Returns:
_1 (
ServerPlayer[]) -- 第一个是选择目标列表,第二个是选择的牌id列表,第三个是否按了确定_2 (
integer[]) -- 第一个是选择目标列表,第二个是选择的牌id列表,第三个是否按了确定_3 (
boolean) -- 第一个是选择目标列表,第二个是选择的牌id列表,第三个是否按了确定
-
askToYiji(
self:Room,
player:ServerPlayer,
params:AskToYijiParams
):table<integer,integer[]># 询问将卡牌分配给任意角色。
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToYijiParams) -- 各种变量
- Returns:
_1 (
table<integer,integer[]>) -- 返回一个表,键为角色id,值为分配给其的牌id数组
-
askToChooseGeneral(
self:Room,
player:ServerPlayer,
params:AskToChooseGeneralParams
):string|string[]# 询问玩家选择一名武将。
- Parameters:
player (
ServerPlayer) -- 询问目标params (
AskToChooseGeneralParams) -- 各种变量
- Returns:
_1 (
string|string[]) -- 选择的武将,一个是string,多个是string[]
-
askToChooseKingdom(self:
Room, players?:ServerPlayer[])# 询问玩家若为神将、双势力需选择一个势力。
- Parameters:
players? (
ServerPlayer[]) -- 询问目标
-
askToChooseCard(
self:Room,
player:ServerPlayer,
params:AskToChooseCardParams
):integer# 询问player,选择target的一张牌。
- Parameters:
player (
ServerPlayer) -- 要被询问的人params (
AskToChooseCardParams) -- 各种变量
- Returns:
_1 (
integer) -- 选择的卡牌id
-
askToPoxi(
self:Room,
player:ServerPlayer,
params:AskToPoxiParams
):integer[]# 谋askForCardsChosen,需使用```Fk:addPoxiMethod```定义好方法
选卡规则和返回值啥的全部自己想办法解决,
`data```填入所有卡的列表(类似```ui.card_data`)注意一定要返回一个表,毕竟本质上是选卡函数
- Parameters:
player (
ServerPlayer) -- 要被询问的人params (
AskToPoxiParams) -- 各种变量
- Returns:
_1 (
integer[]) -- 选择的牌ID数组
-
askToChooseCards(
self:Room,
player:ServerPlayer,
params:AskToChooseCardsParams
):integer[]# 完全类似askForCardChosen,但是可以选择多张牌。 相应的,返回的是id的数组而不是单个id。
- Parameters:
player (
ServerPlayer) -- 要被询问的人params (
AskToChooseCardsParams) -- 各种变量
- Returns:
_1 (
integer[]) -- 选择的id
-
askToChoice(
self:Room,
player:ServerPlayer,
params:AskToChoiceParams
):string# 询问一名玩家从众多选项中选择一个。
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToChoiceParams) -- 各种变量
- Returns:
_1 (
string) -- 选择的选项
-
askToChoices(
self:Room,
player:ServerPlayer,
params:AskToChoicesParams
):string[]# 询问一名玩家从众多选项中勾选任意项。
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToChoicesParams) -- 各种变量
- Returns:
_1 (
string[]) -- 选择的选项
-
askToJointChoice(
self:Room,
player:ServerPlayer,
params:askToJointChoiceParams
):table<Player,string># 同时询问多名玩家从众多选项中选择一个(要求所有玩家选项相同,不同的请自行构造request)
- Parameters:
player (
ServerPlayer) -- 发起者params (
askToJointChoiceParams) -- 各种变量
- Returns:
_1 (
table<Player,string>) -- 返回键值表,键为Player、值为选项
-
askToJointCards(
self:Room,
player:ServerPlayer,
params:askToJointCardsParams
):table<ServerPlayer,integer[]># 同时询问多名玩家选择一些牌(要求所有玩家选牌规则相同,不同的请自行构造request)
- Parameters:
player (
ServerPlayer) -- 发起者params (
askToJointCardsParams) -- 各种变量
- Returns:
_1 (
table<ServerPlayer,integer[]>) -- 返回键值表,键为Player、值为选择的牌id列表
-
askToSkillInvoke(
self:Room,
player:ServerPlayer,
params:AskToSkillInvokeParams
):boolean# 询问玩家是否发动技能。
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToSkillInvokeParams) -- 各种变量
- Returns:
_1 (
boolean) -- 是否发动
-
askToArrangeCards(
self:Room,
player:ServerPlayer,
params:AskToArrangeCardsParams
):table[]# 询问玩家在自定义大小的框中排列卡牌(观星、交换、拖拽选牌)
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToArrangeCardsParams) -- 各种变量
- Returns:
_1 (
table[]) -- 排列后的牌堆结果
-
askToGuanxing(
self:Room,
player:ServerPlayer,
params:AskToGuanxingParams
):table<"bottom" | "top",integer[]># 询问玩家对若干牌进行观星。
观星完成后,相关的牌会被置于牌堆顶或者牌堆底。所以这些cards最好不要来自牌堆,一般先用getNCards从牌堆拿出一些牌。
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToGuanxingParams) -- 各种变量
- Returns:
_1 (
table<"bottom" | "top",integer[]>) -- 观星后的牌堆结果
-
askToExchange(
self:Room,
player:ServerPlayer,
params:AskToExchangeParams
):integer[][]# 询问玩家任意交换几堆牌堆。
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToExchangeParams) -- 各种变量
- Returns:
_1 (
integer[][]) -- 交换后的结果
-
getNGenerals(self:
Room, n:number, position?:string):string[]# 抽个武将
同getNCards,抽出来就没有了,所以记得放回去。
- Parameters:
n (
number) -- 数量position? (
string) -- 位置,top/bottom,默认top
- Returns:
_1 (
string[]) -- 武将名数组
-
returnToGeneralPile(self:
Room, g:string[], position?:string):boolean# 把武将牌塞回去(……)
- Parameters:
g (
string[]) -- 武将名数组position? (
string) -- 位置,top/bottom/random,默认random
- Returns:
_1 (
boolean) -- 是否成功
-
findGeneral(self:
Room, name?:string):string?# 抽特定名字的武将(抽了就没了)
- Parameters:
name? (
string) -- 武将name,如找不到则查找truename,再找不到则返回nil- Returns:
_1? (
string) -- 抽出的武将名
-
findGenerals(self:
Room, func: fun(name:string):any, n?:integer):string[]# 自上而下抽符合特定情况的N个武将(抽了就没了)
- Parameters:
func (fun(name:
string):any) -- 武将筛选函数n? (
integer) -- 抽取数量,数量不足则直接抽干净
- Returns:
_1 (
string[]) -- 武将组合,可能为空
-
handleUseCardReply(
self:Room,
player:ServerPlayer,
data:any,
params?:handleUseCardParams
): (string|UseCardDataSpec)?# 将从Request获得的数据转化为UseCardData,或执行主动技的onUse部分 一般DIY用不到的内部函数
- Returns:
_1? (
string|UseCardDataSpec) -- 返回字符串则取消使用,若返回技能名,在当前询问中禁用此技能
-
askToUseRealCard(
self:Room,
player:ServerPlayer,
params:AskToUseRealCardParams
):UseCardDataSpec?# 询问玩家从一些实体牌中选一个使用。默认无次数限制,与askForUseCard主要区别是不能调用转化技
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToUseRealCardParams) -- 各种变量
- Returns:
_1? (
UseCardDataSpec) -- 返回卡牌使用框架。取消使用则返回空
-
askToUseVirtualCard(
self:Room,
player:ServerPlayer,
params:askToUseVirtualCardParams
):UseCardDataSpec?# 询问玩家使用一张虚拟卡,或从几种牌名中选择一种视为使用
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
askToUseVirtualCardParams) -- 各种变量
- Returns:
_1? (
UseCardDataSpec) -- 返回卡牌使用框架。取消使用则返回空
-
askToPlayCard(
self:Room,
player:ServerPlayer,
params:askToPlayCardParams
):UseCardDataSpec?# 询问玩家(如在空闲时间点一般)使用一张实体牌,支持转化技。
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
askToPlayCardParams) -- 各种变量
- Returns:
_1? (
UseCardDataSpec) -- 返回关于本次使用牌的数据,以便后续处理
-
askToNumber(
self:Room,
player:ServerPlayer,
params:askToNumberParams
):integer?# 询问玩家选择一个数字
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
askToNumberParams) -- 各种变量
- Returns:
_1? (
integer) -- 返回选择的数字。取消则返回空
-
askToUseCard(
self:Room,
player:ServerPlayer,
params:AskToUseCardParams
):UseCardDataSpec?# available extra_data: * must_targets: integer[] * exclusive_targets: integer[] * fix_targets: integer[] * bypass_distances: boolean * bypass_times: boolean
询问玩家使用一张牌。
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToUseCardParams) -- 各种变量
- Returns:
_1? (
UseCardDataSpec) -- 返回关于本次使用牌的数据,以便后续处理
-
askToResponse(
self:Room,
player:ServerPlayer,
params:AskToUseCardParams
):RespondCardDataSpec?# 询问一名玩家打出一张牌。
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToUseCardParams) -- 各种变量
- Returns:
_1? (
RespondCardDataSpec) -- 打出的事件
-
askToNullification(
self:Room,
players:ServerPlayer[],
params:AskToUseCardParams
):UseCardDataSpec?# 同时询问多名玩家是否使用某一张牌。
函数名字虽然是“询问无懈可击”,不过其实也可以给别的牌用就是了。
- Parameters:
players (
ServerPlayer[]) -- 要询问的玩家列表params (
AskToUseCardParams) -- 各种变量
- Returns:
_1? (
UseCardDataSpec) -- 最终决胜出的卡牌使用信息
-
askToAG(
self:Room,
player:ServerPlayer,
params:AskToAGParams
):integer# 询问玩家从AG中选择一张牌。
- Parameters:
player (
ServerPlayer) -- 要询问的玩家params (
AskToAGParams) -- 各种变量
- Returns:
_1 (
integer) -- 选择的卡牌
-
fillAG(
self:Room,
players:ServerPlayer|ServerPlayer[],
id_list:Card[] |integer[],
disable_ids?:Card[] |integer[]
)# 给player发一条消息,在他的窗口中用一系列卡牌填充一个AG。
- Parameters:
players (
ServerPlayer|ServerPlayer[]) -- 要通知的玩家id_list (
Card[] |integer[]) -- 要填充的卡牌disable_ids? (
Card[] |integer[]) -- 未使用 不能选择的牌
-
takeAG(
self:Room,
taker:ServerPlayer,
id:integer,
notify_list?:ServerPlayer[]
)# 告诉一些玩家,AG中的牌被taker取走了。
- Parameters:
taker (
ServerPlayer) -- 拿走牌的玩家id (
integer) -- 被拿走的牌notify_list? (
ServerPlayer[]) -- 要告知的玩家,默认为全员
-
closeAG(self:
Room, player?:ServerPlayer)# 关闭player那侧显示的AG。
若不传参(即player为nil),那么关闭所有玩家的AG。
- Parameters:
player? (
ServerPlayer) -- 要关闭AG的玩家
-
askToMiniGame(
self:Room,
players:ServerPlayer[],
params:AskToMiniGameParams
):Request# TODO: 重构request机制,不然这个还得手动拿client_reply
- Parameters:
players (
ServerPlayer[]) -- 需要参与这个框的角色params (
AskToMiniGameParams) -- 各种变量
-
askToCustomDialog(
self:Room,
player:ServerPlayer,
params:AskToCustomDialogParams
):any# 调用一个自定义对话框,须自备loadData方法
- Parameters:
player (
ServerPlayer) -- 询问的角色params (
AskToCustomDialogParams) -- 各种变量
- Returns:
_1 (
any) -- 返回qml的ClientInstance.replyToServer。注意0.5.12+版本不再需要json.decode
-
askToMoveCardInBoard(
self:Room,
player:ServerPlayer,
params:AskToMoveCardInBoardParams
): (
{card:Card, from:ServerPlayer, to:ServerPlayer}?
)# 询问移动场上的一张牌。不可取消
- Parameters:
player (
ServerPlayer) -- 移动的操作者params (
AskToMoveCardInBoardParams) -- 各种变量
- Returns:
_1? ({card:
Card, from:ServerPlayer, to:ServerPlayer}) -- 选择的卡牌、起点玩家id和终点玩家id列表
-
askToChooseToMoveCardInBoard(
self:Room,
player:ServerPlayer,
params:AskToChooseToMoveCardInBoardParams
):ServerPlayer[]# 询问一名玩家选择两名角色,在这两名角色之间移动场上一张牌
- Parameters:
player (
ServerPlayer) -- 要做选择的玩家params (
AskToChooseToMoveCardInBoardParams) -- 各种变量
- Returns:
_1 (
ServerPlayer[]) -- 选择的两个玩家的列表,若未选择,返回空表
-
changeShield(self:
Room, player:ServerPlayer, num:integer)# 改变玩家的护甲数
- Parameters:
num (
integer) -- 变化量
-
swapSeat(
self:Room,
a:ServerPlayer,
b:ServerPlayer,
arrange_turn?:boolean
)# 令两名玩家交换座位
- Parameters:
a (
ServerPlayer) -- 玩家1b (
ServerPlayer) -- 玩家2arrange_turn? (
boolean) -- 是否更新本轮额定回合,默认是
-
moveSeatTo(
self:Room,
player:ServerPlayer,
seat:integer,
arrange_turn?:boolean
)# 将一名玩家移动至指定座位
- Parameters:
player (
ServerPlayer) -- 被移动的玩家seat (
integer) -- 目标座位arrange_turn? (
boolean) -- 是否更新本轮额定回合,默认是
-
moveSeatToNext(
self:Room,
player:ServerPlayer,
target:ServerPlayer,
is_last?:boolean,
arrange_turn?:boolean
)# 将一名玩家移动至某人的下家/上家
- Parameters:
player (
ServerPlayer) -- 被移动的玩家target (
ServerPlayer) -- 目标玩家,移动成为这个玩家的下家(例如target为8号位,则移动后target为7号位,player为8号位)is_last? (
boolean) -- 是否移动成为这个玩家的上家,默认否arrange_turn? (
boolean) -- 是否更新本轮额定回合,默认是
-
arrangeTurn(self:
Room, players?:ServerPlayer[])# 按输入的角色表重新改变本轮额定回合。若无输入则更新本轮剩余额定回合
-
getGameSummary(self:
Room):table<integer,integer[]># 获取一局游戏的总结,包括每个玩家的回合数、回血、伤害、受伤、击杀
- Returns:
_1 (
table<integer,integer[]>) -- 玩家id到总结的映射
-
canMoveCardInBoard(
self:Room,
flag?: "e" | "ej" | "j",
players?:ServerPlayer[],
excludeIds?:integer[],
targets?:ServerPlayer[]
):ServerPlayer[]# 获取可以移动场上牌的第一对目标。用于判断场上是否可以移动的牌
- Parameters:
flag? ("e" | "ej" | "j") -- 判断移动的区域
players? (
ServerPlayer[]) -- 可被移动的玩家列表excludeIds? (
integer[]) -- 不能移动的卡牌idtargets? (
ServerPlayer[]) -- 可移动至的玩家列表,默认为```players```
- Returns:
_1 (
ServerPlayer[]) -- 第一对玩家列表,第一个是来源,第二个是目标 可能为空表
-
updateQuestSkillState(
self:Room,
player:ServerPlayer,
skillName:string,
failed?:boolean
)# 刷新使命技状态
-
updateAllLimitSkillUI(self:
Room, player:ServerPlayer)# 刷新所有武将脸旁边的技能图标状态
-
abortPlayerArea(
self:Room,
player:ServerPlayer,
playerSlots:string|string[]
)# 废除区域
- Parameters:
player (
ServerPlayer) -- 被废除区域的玩家playerSlots (
string|string[]) -- 被废除区域的名称
-
resumePlayerArea(
self:Room,
player:ServerPlayer,
playerSlots:string|string[]
)# 恢复区域
-
setPlayerRest(self:
Room, player:ServerPlayer, roundNum:integer)# 设置休整
-
cleanProcessingArea(self:
Room, cards?:integer[], skillName?:string)# 清理遗留在处理区的卡牌
- Parameters:
cards? (
integer[]) -- 待清理的卡牌。不填则清理处理区所有牌skillName? (
string) -- 技能名
-
addTableMark(
self:Room,
sth:Card|ServerPlayer,
mark:string,
value:any
)# 为角色或牌的表型标记添加值
- Parameters:
sth (
Card|ServerPlayer) -- 更新标记的玩家或卡牌mark (
string) -- 标记的名称value (
any) -- 要增加的值
-
addTableMarkIfNeed(
self:Room,
sth:Card|ServerPlayer,
mark:string,
value:any
):boolean# 为角色或牌的表型标记添加值,若已存在则不添加
- Parameters:
sth (
Card|ServerPlayer) -- 更新标记的玩家或卡牌mark (
string) -- 标记的名称value (
any) -- 要增加的值
- Returns:
_1 (
boolean) -- 是否添加成功
-
removeTableMark(
self:Room,
sth:Card|ServerPlayer,
mark:string,
value:any
):boolean# 为角色或牌的表型标记移除值,移为空表后重置标记值为0
- Parameters:
sth (
Card|ServerPlayer) -- 更新标记的玩家或卡牌mark (
string) -- 标记的名称value (
any) -- 要移除的值
- Returns:
_1 (
boolean) -- 是否移除成功(若标记中未含此值则移除失败)
-
invalidateSkill(
self:Room,
player:ServerPlayer,
skill_name:string,
temp?: "" | "-noclear" | "-phase" | "-round" | "-turn",
source_skill?:string
)# 无效化技能
- Parameters:
player (
ServerPlayer) -- 技能被无效的角色skill_name (
string) -- 被无效的技能temp? ("" | "-noclear" | "-phase" | "-round" | "-turn") -- 作用范围或其他后缀
source_skill? (
string) -- 控制失效与否的技能。(保证不会与其他控制技能互相干扰)
-
validateSkill(
self:Room,
player:ServerPlayer,
skill_name:string,
temp?: "" | "-noclear" | "-phase" | "-round" | "-turn",
source_skill?:string
)# 移除技能的无效化状态
- Parameters:
player (
ServerPlayer) -- 技能被有效的角色skill_name (
string) -- 被有效的技能temp? ("" | "-noclear" | "-phase" | "-round" | "-turn") -- 作用范围或其他后缀
source_skill? (
string) -- 控制生效与否的技能。(保证不会与其他控制技能互相干扰)
-
getPlayerClientCards(self:
Room, player:ServerPlayer):integer[]# 获得一名角色的客户端手牌顺序 本bug由玄蝶提供
- Parameters:
player (
ServerPlayer) -- 角色- Returns:
_1 (
integer[]) -- 卡牌ID,有元素检测就是了……
-
syncPlayerClientCards(self:
Room, player:ServerPlayer):integer[]# 同步一名角色的客户端手牌顺序
- Parameters:
player (
ServerPlayer) -- 角色- Returns:
_1 (
integer[]) -- 卡牌ID,有元素检测就是了……
-
banSortingHandcards(self:
Room, player:ServerPlayer, suffix?:string)# 禁止排序手牌,在此时点,客户端手牌顺序将应用于服务端手牌顺序
- Parameters:
player (
ServerPlayer) -- 角色suffix? (
string) -- 后缀,如“-turn”
-
unbanSortingHandcards(self:
Room, player:ServerPlayer, suffix?:string)# 解禁排序手牌,配合banSortingHandcards使用。
- Parameters:
player (
ServerPlayer) -- 角色suffix? (
string) -- 后缀,如“-turn”,一般是你用banSortingHandcards时填入的后缀
-
setPlayerPile(
self:Room,
player:ServerPlayer,
pile:string,
ids:integer[]
)# 将角色私人牌堆设置为指定牌(请确保这些牌已经在该角色的私人牌堆上)
- Parameters:
player (
ServerPlayer) -- 角色pile (
string) -- 牌堆名ids (
integer[]) -- 要设置的牌id表
-
showCards(
self:Room,
cards:integer|Card|Card[] |integer[],
from?:ServerPlayer
)# 展示一堆牌(注意,这样子是不会过锁视技的)
-
showVirtualCard(
self:Room,
card:Card|Card[],
player?:ServerPlayer,
footnote?:LogMessage,
event_id?:integer
)# 将虚拟牌展示到桌面(仅动画)
- Parameters:
player? (
ServerPlayer) -- 牌来自谁的手牌区footnote? (
LogMessage) -- 脚注event_id? (
integer) -- 当前事件的ID(用于清理UI处理区的卡)
-
extra_turn_list: