mirror of
https://github.com/Qsgs-Fans/FreeKill.git
synced 2024-11-16 03:32:34 +08:00
parent
d11bf58cb4
commit
bdfcf805e4
|
@ -1,5 +1,12 @@
|
||||||
# ChangeLog
|
# ChangeLog
|
||||||
|
|
||||||
|
## v0.4.18
|
||||||
|
|
||||||
|
- 修复掉线仍在读条的bug
|
||||||
|
- 修复国战单亮副将导致UI失常的bug
|
||||||
|
|
||||||
|
___
|
||||||
|
|
||||||
## v0.4.16 & v0.4.17
|
## v0.4.16 & v0.4.17
|
||||||
|
|
||||||
在引入freekill-core之后的第一次版本更新,甚至无法保证这次更新是否正常
|
在引入freekill-core之后的第一次版本更新,甚至无法保证这次更新是否正常
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
project(FreeKill VERSION 0.4.17)
|
project(FreeKill VERSION 0.4.18)
|
||||||
add_definitions(-DFK_VERSION=\"${CMAKE_PROJECT_VERSION}\")
|
add_definitions(-DFK_VERSION=\"${CMAKE_PROJECT_VERSION}\")
|
||||||
|
|
||||||
find_package(Qt6 REQUIRED COMPONENTS
|
find_package(Qt6 REQUIRED COMPONENTS
|
||||||
|
|
|
@ -522,7 +522,7 @@ function doIndicate(from, tos) {
|
||||||
|
|
||||||
function getPlayerStr(playerid) {
|
function getPlayerStr(playerid) {
|
||||||
const photo = getPhoto(playerid);
|
const photo = getPhoto(playerid);
|
||||||
if (photo.general === "anjiang" && (photo.deputyGeneral === "anjiang" || !p.deputyGeneral)) {
|
if (photo.general === "anjiang" && (photo.deputyGeneral === "anjiang" || !photo.deputyGeneral)) {
|
||||||
return luatr("seat#" + photo.seatNumber);
|
return luatr("seat#" + photo.seatNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -755,7 +755,7 @@ function updateSelectedTargets(playerid, selected) {
|
||||||
roomScene.resetPrompt(); // update prompt due to selected_targets
|
roomScene.resetPrompt(); // update prompt due to selected_targets
|
||||||
const prompt = lcall("ActiveSkillPrompt",
|
const prompt = lcall("ActiveSkillPrompt",
|
||||||
dashboard.pending_skill !== "" ? dashboard.pending_skill: lcall("GetCardSkill", card),
|
dashboard.pending_skill !== "" ? dashboard.pending_skill: lcall("GetCardSkill", card),
|
||||||
dashboard.pending_skill !== "" ? dashboard.pendings : [card],
|
dashboard.pending_skill !== "" ? dashboard.pendings : card,
|
||||||
selected_targets);
|
selected_targets);
|
||||||
if (prompt !== "") {
|
if (prompt !== "") {
|
||||||
roomScene.setPrompt(Util.processPrompt(prompt));
|
roomScene.setPrompt(Util.processPrompt(prompt));
|
||||||
|
|
|
@ -14,7 +14,7 @@ function convertNumber(number) {
|
||||||
|
|
||||||
function getPlayerStr(playerid) {
|
function getPlayerStr(playerid) {
|
||||||
const photo = getPhoto(playerid);
|
const photo = getPhoto(playerid);
|
||||||
if (photo.general === "anjiang" && (photo.deputyGeneral === "anjiang" || !p.deputyGeneral)) {
|
if (photo.general === "anjiang" && (photo.deputyGeneral === "anjiang" || !photo.deputyGeneral)) {
|
||||||
return luatr("seat#" + photo.seatNumber);
|
return luatr("seat#" + photo.seatNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="org.notify.FreeKill"
|
package="org.notify.FreeKill"
|
||||||
android:installLocation="preferExternal"
|
android:installLocation="preferExternal"
|
||||||
android:versionCode="417"
|
android:versionCode="418"
|
||||||
android:versionName="0.4.17">
|
android:versionName="0.4.18">
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
|
|
|
@ -94,7 +94,7 @@ end
|
||||||
---@return boolean
|
---@return boolean
|
||||||
function Skill:isEquipmentSkill(player)
|
function Skill:isEquipmentSkill(player)
|
||||||
if player then
|
if player then
|
||||||
local filterSkills = Fk:currentRoom().status_skills[FilterSkill]
|
local filterSkills = Fk:currentRoom().status_skills[FilterSkill] or Util.DummyTable
|
||||||
for _, filter in ipairs(filterSkills) do
|
for _, filter in ipairs(filterSkills) do
|
||||||
local result = filter:equipSkillFilter(self, player)
|
local result = filter:equipSkillFilter(self, player)
|
||||||
if result then
|
if result then
|
||||||
|
|
|
@ -355,9 +355,8 @@ function CardEffect:main()
|
||||||
local logic = room.logic
|
local logic = room.logic
|
||||||
|
|
||||||
for _, event in ipairs({ fk.PreCardEffect, fk.BeforeCardEffect, fk.CardEffecting, fk.CardEffectFinished }) do
|
for _, event in ipairs({ fk.PreCardEffect, fk.BeforeCardEffect, fk.CardEffecting, fk.CardEffectFinished }) do
|
||||||
local user = cardEffectEvent.from and room:getPlayerById(cardEffectEvent.from) or nil
|
|
||||||
if cardEffectEvent.isCancellOut then
|
if cardEffectEvent.isCancellOut then
|
||||||
if logic:trigger(fk.CardEffectCancelledOut, user, cardEffectEvent) then
|
if logic:trigger(fk.CardEffectCancelledOut, room:getPlayerById(cardEffectEvent.from), cardEffectEvent) then
|
||||||
cardEffectEvent.isCancellOut = false
|
cardEffectEvent.isCancellOut = false
|
||||||
else
|
else
|
||||||
logic:breakEvent()
|
logic:breakEvent()
|
||||||
|
@ -379,7 +378,7 @@ function CardEffect:main()
|
||||||
end
|
end
|
||||||
|
|
||||||
if event == fk.PreCardEffect then
|
if event == fk.PreCardEffect then
|
||||||
if cardEffectEvent.from and logic:trigger(event, room:getPlayerById(cardEffectEvent.from), cardEffectEvent) then
|
if logic:trigger(event, room:getPlayerById(cardEffectEvent.from), cardEffectEvent) then
|
||||||
if cardEffectEvent.to then
|
if cardEffectEvent.to then
|
||||||
cardEffectEvent.nullifiedTargets = cardEffectEvent.nullifiedTargets or {}
|
cardEffectEvent.nullifiedTargets = cardEffectEvent.nullifiedTargets or {}
|
||||||
table.insert(cardEffectEvent.nullifiedTargets, cardEffectEvent.to)
|
table.insert(cardEffectEvent.nullifiedTargets, cardEffectEvent.to)
|
||||||
|
|
|
@ -160,6 +160,25 @@ function Room:makeGeneralPile()
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- 因为现在已经不是轮询了,加上有点难分析
|
||||||
|
-- 选择开摆
|
||||||
|
function Room:isReady()
|
||||||
|
-- 因为delay函数而延时:判断延时是否已经结束。
|
||||||
|
-- 注意整个delay函数的实现都搬到这来了,delay本身只负责挂起协程了。
|
||||||
|
--[[
|
||||||
|
if self.in_delay then
|
||||||
|
local rest = self.delay_duration - (os.getms() - self.delay_start) / 1000
|
||||||
|
if rest <= 50 then
|
||||||
|
self.in_delay = false
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false, rest
|
||||||
|
end
|
||||||
|
--]]
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
--[[
|
||||||
-- 供调度器使用的函数,用来指示房间是否就绪。
|
-- 供调度器使用的函数,用来指示房间是否就绪。
|
||||||
-- 如果没有就绪的话,可能会返回第二个值来告诉调度器自己还有多久就绪。
|
-- 如果没有就绪的话,可能会返回第二个值来告诉调度器自己还有多久就绪。
|
||||||
function Room:isReady()
|
function Room:isReady()
|
||||||
|
@ -197,6 +216,7 @@ function Room:isReady()
|
||||||
end
|
end
|
||||||
return ret, (rest and rest > 1) and rest or nil
|
return ret, (rest and rest > 1) and rest or nil
|
||||||
end
|
end
|
||||||
|
--]]
|
||||||
|
|
||||||
function Room:checkNoHuman(chkOnly)
|
function Room:checkNoHuman(chkOnly)
|
||||||
if #self.players == 0 then return end
|
if #self.players == 0 then return end
|
||||||
|
@ -920,6 +940,10 @@ end
|
||||||
--- 延迟一段时间。
|
--- 延迟一段时间。
|
||||||
---@param ms integer @ 要延迟的毫秒数
|
---@param ms integer @ 要延迟的毫秒数
|
||||||
function Room:delay(ms)
|
function Room:delay(ms)
|
||||||
|
local start = os.getms()
|
||||||
|
self.delay_start = start
|
||||||
|
self.delay_duration = ms
|
||||||
|
self.in_delay = true
|
||||||
self.room:delay(ms)
|
self.room:delay(ms)
|
||||||
coroutine.yield("__handleRequest", ms)
|
coroutine.yield("__handleRequest", ms)
|
||||||
end
|
end
|
||||||
|
@ -2115,9 +2139,14 @@ function Room:askForGuanxing(player, cards, top_limit, bottom_limit, customNotif
|
||||||
local command = "AskForGuanxing"
|
local command = "AskForGuanxing"
|
||||||
self:notifyMoveFocus(player, customNotify or command)
|
self:notifyMoveFocus(player, customNotify or command)
|
||||||
local max_top = top_limit and top_limit[2] or #cards
|
local max_top = top_limit and top_limit[2] or #cards
|
||||||
local card_map = {table.slice(cards, 1, max_top + 1)}
|
local card_map = {}
|
||||||
|
if max_top > 0 then
|
||||||
|
table.insert(card_map, table.slice(cards, 1, max_top + 1))
|
||||||
|
else
|
||||||
|
table.insert(card_map, {})
|
||||||
|
end
|
||||||
if max_top < #cards then
|
if max_top < #cards then
|
||||||
table.insert(card_map, table.slice(cards, max_top))
|
table.insert(card_map, table.slice(cards, max_top + 1))
|
||||||
end
|
end
|
||||||
local data = {
|
local data = {
|
||||||
prompt = "",
|
prompt = "",
|
||||||
|
|
|
@ -199,6 +199,10 @@ void ServerPlayer::onDisconnected() {
|
||||||
deleteLater();
|
deleteLater();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (room->getThread()) {
|
||||||
|
// && thinking()) {
|
||||||
|
room->getThread()->wakeUp(room->getId());
|
||||||
|
}
|
||||||
setState(Player::Offline);
|
setState(Player::Offline);
|
||||||
setSocket(nullptr);
|
setSocket(nullptr);
|
||||||
// TODO: add a robot
|
// TODO: add a robot
|
||||||
|
|
Loading…
Reference in New Issue
Block a user