diff --git a/build.gradle.kts b/build.gradle.kts
index 90335a7..c184219 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -41,8 +41,8 @@
implementation("org.jsoup:jsoup:1.18.1")
implementation("org.mariadb.jdbc:mariadb-java-client:3.4.1")
implementation("org.python:jython-standalone:2.7.3")
- implementation("org.seleniumhq.selenium:selenium-edge-driver:4.23.0")
- implementation("org.seleniumhq.selenium:selenium-java:4.23.0")
+ implementation("org.seleniumhq.selenium:selenium-edge-driver:4.23.1")
+ implementation("org.seleniumhq.selenium:selenium-java:4.23.1")
implementation("org.tukaani:xz:1.10")
testImplementation(kotlin("test"))
}
diff --git a/src/main/java/EventOuterClass.java b/src/main/java/EventOuterClass.java
index 4b1f9b2..1b8414f 100644
--- a/src/main/java/EventOuterClass.java
+++ b/src/main/java/EventOuterClass.java
@@ -866,6 +866,10 @@
* ABILITY_CLASS_UP = 87;
*/
ABILITY_CLASS_UP(87),
+ /**
+ * NOTIFY_PASS = 88;
+ */
+ NOTIFY_PASS(88),
UNRECOGNIZED(-1),
;
@@ -1230,6 +1234,10 @@
* ABILITY_CLASS_UP = 87;
*/
public static final int ABILITY_CLASS_UP_VALUE = 87;
+ /**
+ * NOTIFY_PASS = 88;
+ */
+ public static final int NOTIFY_PASS_VALUE = 88;
public final int getNumber() {
@@ -1344,6 +1352,7 @@
case 85: return SET_ALLOWED_POSTABLE_ITEMS;
case 86: return SET_POSTABLE_ITEM_BAND;
case 87: return ABILITY_CLASS_UP;
+ case 88: return NOTIFY_PASS;
default: return null;
}
}
@@ -27473,7 +27482,7 @@
descriptor;
static {
java.lang.String[] descriptorData = {
- "\n\013Event.proto\"\2321\n\005Event\022\016\n\006millis\030\001 \001(\003\022" +
+ "\n\013Event.proto\"\2531\n\005Event\022\016\n\006millis\030\001 \001(\003\022" +
"\020\n\010avatarID\030\002 \001(\t\022\037\n\007eventID\030\003 \001(\0162\016.Eve" +
"nt.EventID\022\014\n\004text\030\004 \001(\t\022\014\n\004data\030\005 \003(\014\0221" +
"\n\017qwilightCallNet\030\006 \001(\0132\026.Event.Qwilight" +
@@ -27587,7 +27596,7 @@
"ghtPostItem\022\021\n\thandlerID\030\001 \001(\t\022\022\n\nposted" +
"Item\030\002 \001(\005\022\022\n\navatarName\030\003 \001(\t\022\014\n\004wait\030\004" +
" \001(\001\"5\n\017AvatarNetStatus\022\013\n\007Default\020\000\022\t\n\005" +
- "Clear\020\001\022\n\n\006Failed\020\002\"\270\r\n\007EventID\022\n\n\006LOG_I" +
+ "Clear\020\001\022\n\n\006Failed\020\002\"\311\r\n\007EventID\022\n\n\006LOG_I" +
"N\020\000\022\016\n\nNOT_LOG_IN\020\001\022\n\n\006NOTIFY\020\002\022\r\n\tSITE_" +
"YELL\020\003\022\017\n\013CALL_BUNDLE\020\004\022\022\n\016SAVE_AS_BUNDL" +
"E\020\005\022\021\n\rSAVING_BUNDLE\020\006\022\017\n\013WIPE_BUNDLE\020\007\022" +
@@ -27630,8 +27639,8 @@
"\024\n\020SET_AVATAR_GROUP\020R\022\r\n\tPOST_ITEM\020S\022\026\n\022" +
"SET_VALID_NET_MODE\020T\022\036\n\032SET_ALLOWED_POST" +
"ABLE_ITEMS\020U\022\032\n\026SET_POSTABLE_ITEM_BAND\020V" +
- "\022\024\n\020ABILITY_CLASS_UP\020WB\n\n\010fastTextb\006prot" +
- "o3"
+ "\022\024\n\020ABILITY_CLASS_UP\020W\022\017\n\013NOTIFY_PASS\020XB" +
+ "\n\n\010fastTextb\006proto3"
};
descriptor = com.google.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData,
diff --git a/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt b/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt
index 2d772c9..cc31bfe 100644
--- a/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt
+++ b/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt
@@ -555,9 +555,10 @@
val bundleLength = fileChannel.size()
})
val toNotifySaveBundle = DB.getNotifySaveBundle(targetAvatarID)
- if (toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_CALLABLE || toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_AVATAR && isLoggedIn || toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_UBUNTU && DB.isCrossUbuntu(
- avatarID, targetAvatarID
- )
+ if (toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_CALLABLE || (toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_AVATAR && isLoggedIn) || (toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_UBUNTU && DB.isCrossUbuntu(
+ avatarID,
+ targetAvatarID
+ ))
) {
AvatarHandler.getAvatar(
targetAvatarID
@@ -913,24 +914,25 @@
PlatformSystem.setAbilityName(avatarID)
}
- DB.getBetweenAvatars(targetComputing.noteID, avatarID, standBefore, stand)
+ DB.getBetweenAvatarIDs(targetComputing.noteID, avatarID, standBefore, stand)
.forEach {
val toNotifyPass = DB.getNotifyPass(it)
- if (toNotifyPass == NOTIFY_PASS_AVATAR || toNotifyPass == NOTIFY_PASS_UBUNTU && DB.isCrossUbuntu(
- avatarID, it
- )
+ if (toNotifyPass == NOTIFY_PASS_AVATAR || (toNotifyPass == NOTIFY_PASS_UBUNTU && DB.isCrossUbuntu(
+ avatarID,
+ it
+ ))
) {
val avatar = AvatarHandler.getAvatar(it)
if (avatar != null) {
- avatar.send(EventOuterClass.Event.EventID.NOTIFY, object {
- val text = String.format(
- avatar.translateLanguage("passNotify"),
- "${targetComputing.artist} - ${targetComputing.title}",
- avatarName
- )
- val isUrgent = false
- val v = 3
+ avatar.send(EventOuterClass.Event.EventID.NOTIFY_PASS, object {
+ val title = targetComputing.title
+ val artist = targetComputing.artist
+ val genre = targetComputing.genre
+ val levelText = targetComputing.levelText
+ val avatarName = this@QwilightAvatar.avatarName
+ val noteID = targetComputing.noteID
})
+ } else {
}
}
}
@@ -1177,9 +1179,7 @@
})
} else {
AvatarHandler.getAvatar(text.avatarID)?.let { ioAvatar ->
- DB.getIOCompetence(
- targetAvatarID
- ).thenAccept {
+ DB.getIOCompetence(targetAvatarID).thenAccept {
if (it == IO_CALLABLE || it == IO_AVATAR && isLoggedIn || it == IO_UBUNTU && DB.isCrossUbuntu(
avatarID, targetAvatarID
)
diff --git a/src/main/kotlin/net/taehui/twilight/system/DB.kt b/src/main/kotlin/net/taehui/twilight/system/DB.kt
index fb4e37f..fadb896 100644
--- a/src/main/kotlin/net/taehui/twilight/system/DB.kt
+++ b/src/main/kotlin/net/taehui/twilight/system/DB.kt
@@ -2233,13 +2233,12 @@
return Pair(commentID, standBefore)
}
- fun getBetweenAvatars(noteID: String, avatarID: String, standBefore: Int, stand: Int): Collection {
+ fun getBetweenAvatarIDs(noteID: String, avatarID: String, standBefore: Int, stand: Int): Collection {
return pool.connection.use {
it.prepareStatement(
"""
- SELECT Avatar_Name
+ SELECT Avatar
FROM tw_comment
- INNER JOIN tn_avatar ON tw_comment.Avatar = tn_avatar.Avatar_ID
WHERE Note_ID = ? AND Avatar != ? AND ? <= Stand AND Stand < ? AND Is_Max = true
""".trimIndent()
).use { dbStatement ->
@@ -2248,11 +2247,11 @@
dbStatement.setInt(3, standBefore)
dbStatement.setInt(4, stand)
dbStatement.executeQuery().use { rows ->
- val avatarNames = mutableListOf()
+ val avatarIDs = mutableListOf()
while (rows.next()) {
- avatarNames.add(rows.getString("Avatar_Name"))
+ avatarIDs.add(rows.getString("Avatar"))
}
- avatarNames
+ avatarIDs
}
}
}
diff --git a/src/main/resources/Language.json b/src/main/resources/Language.json
index 034d286..049d07c 100644
--- a/src/main/resources/Language.json
+++ b/src/main/resources/Language.json
@@ -59,10 +59,6 @@
"ko-KR": "게임 결과가 아직 존재하지 않습니다.",
"en-US": "Game results do not yet exist."
},
- "passNotify": {
- "ko-KR": "%s의 기록을 %s님이 추월함",
- "en-US": "%s has overtaken the record of %s"
- },
"pause": {
"ko-KR": "서버 점검중입니다.",
"en-US": "Checking the server."