From d351a79aae0e22040a1a1f601ddc0fceca2a6d40 Mon Sep 17 00:00:00 2001 From: SuntrustDev <19979417+SunTrustDev@users.noreply.github.com> Date: Mon, 16 Feb 2026 01:25:14 +0100 Subject: [PATCH] Fix entirely guild member removal: - Add target menu "Remove from guild" button - Proper confirm modal with translations - Fix confirm modal when deleting user from Guilds section of Friends List - Fix leader removal from Guild section of Friends list --- assets/locale/locale/ae/locale_game.txt | 2 + assets/locale/locale/br/locale_game.txt | 6 ++- assets/locale/locale/cz/locale_game.txt | 2 + assets/locale/locale/de/locale_game.txt | 2 + assets/locale/locale/dk/locale_game.txt | 2 + assets/locale/locale/en/locale_game.txt | 2 + assets/locale/locale/es/locale_game.txt | 2 + assets/locale/locale/fr/locale_game.txt | 2 + assets/locale/locale/gr/locale_game.txt | 2 + assets/locale/locale/hu/locale_game.txt | 2 + assets/locale/locale/it/locale_game.txt | 2 + assets/locale/locale/nl/locale_game.txt | 2 + assets/locale/locale/pl/locale_game.txt | 2 + assets/locale/locale/pt/locale_game.txt | 2 + assets/locale/locale/ro/locale_game.txt | 2 + assets/locale/locale/ru/locale_game.txt | 2 + assets/locale/locale/tr/locale_game.txt | 2 + assets/root/uimessenger.py | 16 ++++++-- assets/root/uitarget.py | 49 +++++++++++++++++++++++-- 19 files changed, 94 insertions(+), 9 deletions(-) diff --git a/assets/locale/locale/ae/locale_game.txt b/assets/locale/locale/ae/locale_game.txt index fa8454c8..b4b9fa4c 100644 --- a/assets/locale/locale/ae/locale_game.txt +++ b/assets/locale/locale/ae/locale_game.txt @@ -261,6 +261,7 @@ GUILD_TILE_GRADE إدارة الحقوق GUILD_TILE_INFO معلومات الرابطة GUILD_TILE_MEMBER الأعضاء GUILD_TILE_SKILL مهارات الروابط +GUILD_REMOVE_MEMBER_QUESTION هل تريد إزالة هذا العضو؟ GUILD_VILLAGE_01 ميريانغ GUILD_VILLAGE_02 سونغبا GUILD_VILLAGE_03 دايامي @@ -675,6 +676,7 @@ TARGET_BUTTON_FRIEND صديق TARGET_BUTTON_INVITE_GUILD دعوة الرابطة. TARGET_BUTTON_INVITE_PARTY دعوة ج. TARGET_BUTTON_LEAVE_PARTY غادر المجموعة +TARGET_BUTTON_REMOVE_GUILD إبعاده عن الرابطة TARGET_BUTTON_REQUEST_ENTER_PARTY الانضمام إلى المجموعة TARGET_BUTTON_VIEW_EQUIPMENT دروع TARGET_BUTTON_WHISPER همس diff --git a/assets/locale/locale/br/locale_game.txt b/assets/locale/locale/br/locale_game.txt index fe1670d0..bf9d18af 100644 --- a/assets/locale/locale/br/locale_game.txt +++ b/assets/locale/locale/br/locale_game.txt @@ -178,6 +178,7 @@ GUILD_TILE_GRADE Títulos e Permissões GUILD_TILE_INFO Informações da Guilda GUILD_TILE_MEMBER Membros da Guilda GUILD_TILE_SKILL Skills da Guilda +GUILD_REMOVE_MEMBER_QUESTION Queres remover este membro? GUILD_VILLAGE_01 Miryang GUILD_VILLAGE_02 Songpa GUILD_VILLAGE_03 Daeyami @@ -582,8 +583,9 @@ TARGET_BUTTON_FIGHT Duelo TARGET_BUTTON_FRIEND Contato TARGET_BUTTON_INVITE_GUILD Guilda TARGET_BUTTON_INVITE_PARTY Grupo -TARGET_BUTTON_LEAVE_PARTY Sair -TARGET_BUTTON_REQUEST_ENTER_PARTY Participar +TARGET_BUTTON_LEAVE_PARTY Sair +TARGET_BUTTON_REMOVE_GUILD Remover da Guild +TARGET_BUTTON_REQUEST_ENTER_PARTY Participar TARGET_BUTTON_VIEW_EQUIPMENT Equipamento TARGET_BUTTON_WHISPER Mensagem TARGET_LEVEL_BOSS Mestre diff --git a/assets/locale/locale/cz/locale_game.txt b/assets/locale/locale/cz/locale_game.txt index 95a4b4b5..b6dafe1e 100644 --- a/assets/locale/locale/cz/locale_game.txt +++ b/assets/locale/locale/cz/locale_game.txt @@ -178,6 +178,7 @@ GUILD_TILE_GRADE Administrace práv GUILD_TILE_INFO Informace o cechu GUILD_TILE_MEMBER Členové cechu GUILD_TILE_SKILL Schopnosti cechu +GUILD_REMOVE_MEMBER_QUESTION Chceš odebrat tohoto člena? GUILD_WAR_LIMIT_30MIN Čas: 30 minut GUILD_VILLAGE_01 Miryang GUILD_VILLAGE_02 Songpa @@ -583,6 +584,7 @@ TARGET_BUTTON_FRIEND Přítel TARGET_BUTTON_INVITE_GUILD Pozvánka od cechu TARGET_BUTTON_INVITE_PARTY Pozvánka od skupiny TARGET_BUTTON_LEAVE_PARTY Opustit skupinu +TARGET_BUTTON_REMOVE_GUILD Odebrat z cechu TARGET_BUTTON_REQUEST_ENTER_PARTY Přistoupit ke skupině TARGET_BUTTON_VIEW_EQUIPMENT Výzbroj TARGET_BUTTON_WHISPER Šeptat diff --git a/assets/locale/locale/de/locale_game.txt b/assets/locale/locale/de/locale_game.txt index 994cf83d..42dc141f 100644 --- a/assets/locale/locale/de/locale_game.txt +++ b/assets/locale/locale/de/locale_game.txt @@ -177,6 +177,7 @@ GUILD_TILE_GRADE Rechteverwaltung GUILD_TILE_INFO Gildeninformationen GUILD_TILE_MEMBER Gildenmitglieder GUILD_TILE_SKILL Gildenfertigkeiten +GUILD_REMOVE_MEMBER_QUESTION Möchtest du dieses Mitglied entfernen? GUILD_WAR_LIMIT_30MIN Zeit: 30 Minuten GUILD_WAR_REWARD_POTION Belohnung: Sieger erhält Tränke GUILD_WAR_USE_BATTLE_MAP Ort: Gildenkriegsarena @@ -581,6 +582,7 @@ TARGET_BUTTON_FRIEND Freund TARGET_BUTTON_INVITE_GUILD Gildeneinlad. TARGET_BUTTON_INVITE_PARTY Gruppeneinlad. TARGET_BUTTON_LEAVE_PARTY Gruppe verlassen +TARGET_BUTTON_REMOVE_GUILD Aus Gilde entfernen TARGET_BUTTON_REQUEST_ENTER_PARTY Gruppe beitreten TARGET_BUTTON_VIEW_EQUIPMENT Ausrüstung TARGET_BUTTON_WHISPER Flüstern diff --git a/assets/locale/locale/dk/locale_game.txt b/assets/locale/locale/dk/locale_game.txt index b6b4bcd1..4e423a1f 100644 --- a/assets/locale/locale/dk/locale_game.txt +++ b/assets/locale/locale/dk/locale_game.txt @@ -178,6 +178,7 @@ GUILD_TILE_GRADE Forvaltning af rettigheder GUILD_TILE_INFO Ordensinformationer GUILD_TILE_MEMBER Ordensmedlemmer GUILD_TILE_SKILL Ordensfærdigheder +GUILD_REMOVE_MEMBER_QUESTION Ønsker du at fjerne dette medlem? GUILD_WAR_LIMIT_30MIN Tid: 30 Minutter GUILD_VILLAGE_01 Miryang GUILD_VILLAGE_02 Songpa @@ -583,6 +584,7 @@ TARGET_BUTTON_FRIEND Ven TARGET_BUTTON_INVITE_GUILD Ordens invitation TARGET_BUTTON_INVITE_PARTY Gruppe invitation TARGET_BUTTON_LEAVE_PARTY Forlad gruppe +TARGET_BUTTON_REMOVE_GUILD Fjern fra Orden TARGET_BUTTON_REQUEST_ENTER_PARTY Join gruppen TARGET_BUTTON_VIEW_EQUIPMENT Udrystning TARGET_BUTTON_WHISPER Hviske diff --git a/assets/locale/locale/en/locale_game.txt b/assets/locale/locale/en/locale_game.txt index b0926ed4..66ddb0b7 100644 --- a/assets/locale/locale/en/locale_game.txt +++ b/assets/locale/locale/en/locale_game.txt @@ -177,6 +177,7 @@ GUILD_TILE_GRADE Rights Administration GUILD_TILE_INFO Guild Information GUILD_TILE_MEMBER Guild Members GUILD_TILE_SKILL Guild Skills +GUILD_REMOVE_MEMBER_QUESTION Do you want to remove this member? GUILD_WAR_LIMIT_30MIN Time: 30 Minutes GUILD_VILLAGE_01 Miryang GUILD_VILLAGE_02 Songpa @@ -581,6 +582,7 @@ TARGET_BUTTON_FRIEND Friend TARGET_BUTTON_INVITE_GUILD Guild Invitation TARGET_BUTTON_INVITE_PARTY Group Invitation TARGET_BUTTON_LEAVE_PARTY Leave Group +TARGET_BUTTON_REMOVE_GUILD Remove from guild TARGET_BUTTON_REQUEST_ENTER_PARTY Join Group TARGET_BUTTON_VIEW_EQUIPMENT Equipment TARGET_BUTTON_WHISPER Whispering diff --git a/assets/locale/locale/es/locale_game.txt b/assets/locale/locale/es/locale_game.txt index 2ba4f242..8d0344d4 100644 --- a/assets/locale/locale/es/locale_game.txt +++ b/assets/locale/locale/es/locale_game.txt @@ -178,6 +178,7 @@ GUILD_TILE_GRADE Administración Derechos GUILD_TILE_INFO Información de Gremio GUILD_TILE_MEMBER Miembros del Gremio GUILD_TILE_SKILL Habilidades del Gremio +GUILD_REMOVE_MEMBER_QUESTION ¿Quieres expulsar al miembro? GUILD_WAR_LIMIT_30MIN Tiempo: 30 minutos GUILD_VILLAGE_01 Miryang GUILD_VILLAGE_02 Songpa @@ -583,6 +584,7 @@ TARGET_BUTTON_FRIEND Amigo TARGET_BUTTON_INVITE_GUILD Invitación de Gremio TARGET_BUTTON_INVITE_PARTY Invitación de Grupo TARGET_BUTTON_LEAVE_PARTY Salir del Grupo +TARGET_BUTTON_REMOVE_GUILD Expulsar del gremio TARGET_BUTTON_REQUEST_ENTER_PARTY Entrar en grupo TARGET_BUTTON_VIEW_EQUIPMENT Equipamiento TARGET_BUTTON_WHISPER Conversación diff --git a/assets/locale/locale/fr/locale_game.txt b/assets/locale/locale/fr/locale_game.txt index b6f9bec7..cff4e739 100644 --- a/assets/locale/locale/fr/locale_game.txt +++ b/assets/locale/locale/fr/locale_game.txt @@ -177,6 +177,7 @@ GUILD_TILE_GRADE Gestion des droits GUILD_TILE_INFO Informations sur la Guilde GUILD_TILE_MEMBER Membres de la Guilde GUILD_TILE_SKILL Compétence de Guilde +GUILD_REMOVE_MEMBER_QUESTION Souhaitez-vous supprimer ce membre? GUILD_WAR_LIMIT_30MIN Temps : 30 Minutes GUILD_VILLAGE_01 Miryang GUILD_VILLAGE_02 Songpa @@ -581,6 +582,7 @@ TARGET_BUTTON_FRIEND Ami TARGET_BUTTON_INVITE_GUILD Invitation Guilde TARGET_BUTTON_INVITE_PARTY Invitation gr. TARGET_BUTTON_LEAVE_PARTY Quitter Groupe +TARGET_BUTTON_REMOVE_GUILD Bannir de la guilde TARGET_BUTTON_REQUEST_ENTER_PARTY Rejoindre Groupe TARGET_BUTTON_VIEW_EQUIPMENT Armure TARGET_BUTTON_WHISPER PM diff --git a/assets/locale/locale/gr/locale_game.txt b/assets/locale/locale/gr/locale_game.txt index 0e23d7c2..b987eaba 100644 --- a/assets/locale/locale/gr/locale_game.txt +++ b/assets/locale/locale/gr/locale_game.txt @@ -178,6 +178,7 @@ GUILD_TILE_GRADE Διαχείριση δικαιωμάτων GUILD_TILE_INFO Πληροφορίες Συντεχνίας GUILD_TILE_MEMBER Μέλη Συντεχνίας GUILD_TILE_SKILL Ικανότητα Συντεχνίας +GUILD_REMOVE_MEMBER_QUESTION Θέλεις να αφαιρέσεις αυτό το μέλος; GUILD_WAR4 Περιοχή πολέμων συντεχνίας GUILD_WAR3 Περιοχή πολέμων συντεχνίας GUILD_WAR2 Περιοχή πολέμων συντεχνίας @@ -583,6 +584,7 @@ TARGET_BUTTON_FRIEND Φίλος TARGET_BUTTON_INVITE_GUILD Πρόσκληση Συντεχνίας TARGET_BUTTON_INVITE_PARTY Πρόσκληση Ομάδας TARGET_BUTTON_LEAVE_PARTY Εγκατάλειψη Ομάδας +TARGET_BUTTON_REMOVE_GUILD Αφαίρεση από τη συντεχνία TARGET_BUTTON_REQUEST_ENTER_PARTY Μπες στην Ομάδα TARGET_BUTTON_VIEW_EQUIPMENT Πανοπλία TARGET_BUTTON_WHISPER Ψίθυρος diff --git a/assets/locale/locale/hu/locale_game.txt b/assets/locale/locale/hu/locale_game.txt index 9ae0ac82..81a356d2 100644 --- a/assets/locale/locale/hu/locale_game.txt +++ b/assets/locale/locale/hu/locale_game.txt @@ -177,6 +177,7 @@ GUILD_TILE_GRADE Jogok Kezelése GUILD_TILE_INFO Céh információ GUILD_TILE_MEMBER Céhtag GUILD_TILE_SKILL Céh készség +GUILD_REMOVE_MEMBER_QUESTION Szeretnéd kirúgni ezt a tagot? GUILD_WAR4 Céhháború terület GUILD_WAR3 Céhháború terület GUILD_WAR2 Céhháború terület @@ -581,6 +582,7 @@ TARGET_BUTTON_FRIEND Barát TARGET_BUTTON_INVITE_GUILD Céh meghívás TARGET_BUTTON_INVITE_PARTY Csoport meghívás TARGET_BUTTON_LEAVE_PARTY Csoport elhagyása +TARGET_BUTTON_REMOVE_GUILD Eltávolítás a céhből TARGET_BUTTON_REQUEST_ENTER_PARTY Belépés a csoportba TARGET_BUTTON_VIEW_EQUIPMENT Felszerelés TARGET_BUTTON_WHISPER Suttogni diff --git a/assets/locale/locale/it/locale_game.txt b/assets/locale/locale/it/locale_game.txt index 25e28d30..796bf9da 100644 --- a/assets/locale/locale/it/locale_game.txt +++ b/assets/locale/locale/it/locale_game.txt @@ -178,6 +178,7 @@ GUILD_TILE_GRADE Amministra diritti GUILD_TILE_INFO Informazioni della Gilda GUILD_TILE_MEMBER Membro della Gilda GUILD_TILE_SKILL Abilità della Gilda +GUILD_REMOVE_MEMBER_QUESTION Vuoi espellere questo componente dalla gilda? GUILD_WAR4 Area della Guerra tra Gilde GUILD_WAR3 Area della Guerra tra Gilde GUILD_WAR2 Area della Guerra tra Gilde @@ -583,6 +584,7 @@ TARGET_BUTTON_FRIEND Amico TARGET_BUTTON_INVITE_GUILD Invito Gilda. TARGET_BUTTON_INVITE_PARTY Invito Gruppo. TARGET_BUTTON_LEAVE_PARTY Lascia gruppo +TARGET_BUTTON_REMOVE_GUILD Espelli dalla gilda TARGET_BUTTON_REQUEST_ENTER_PARTY Entra nel gruppo TARGET_BUTTON_VIEW_EQUIPMENT Armatura TARGET_BUTTON_WHISPER Chat privata diff --git a/assets/locale/locale/nl/locale_game.txt b/assets/locale/locale/nl/locale_game.txt index cdd5d729..dd0fb148 100644 --- a/assets/locale/locale/nl/locale_game.txt +++ b/assets/locale/locale/nl/locale_game.txt @@ -178,6 +178,7 @@ GUILD_TILE_GRADE Rechten Beheer GUILD_TILE_INFO Gilde Informatie GUILD_TILE_MEMBER Gilde Leden GUILD_TILE_SKILL Gilde Vaardigheden +GUILD_REMOVE_MEMBER_QUESTION Wil je dit lid verwijderen? GUILD_WAR4 Gilde Oorlog Gebied GUILD_WAR3 Gilde Oorlog Gebied GUILD_WAR2 Gilde Oorlog Gebied @@ -583,6 +584,7 @@ TARGET_BUTTON_FRIEND Vriend TARGET_BUTTON_INVITE_GUILD Gilde Uitnodiging TARGET_BUTTON_INVITE_PARTY Groeps Uitnodiging TARGET_BUTTON_LEAVE_PARTY Verlaat Groep +TARGET_BUTTON_REMOVE_GUILD Verwijderen uit gilde TARGET_BUTTON_REQUEST_ENTER_PARTY Aansluiten bij Groep TARGET_BUTTON_VIEW_EQUIPMENT Pantser TARGET_BUTTON_WHISPER Fluisteren diff --git a/assets/locale/locale/pl/locale_game.txt b/assets/locale/locale/pl/locale_game.txt index 4efc2f73..dbfad3f4 100644 --- a/assets/locale/locale/pl/locale_game.txt +++ b/assets/locale/locale/pl/locale_game.txt @@ -178,6 +178,7 @@ GUILD_TILE_GRADE Zarządzanie Prawami GUILD_TILE_INFO Informacje o Gildii GUILD_TILE_MEMBER Członkowie Gildii GUILD_TILE_SKILL Umiejętności Gildii +GUILD_REMOVE_MEMBER_QUESTION Czy chcesz usunąć tego członka gildii? GUILD_WAR4 Obszar Wojny Gildii GUILD_WAR3 Obszar Wojny Gildii GUILD_WAR2 Obszar Wojny Gildii @@ -583,6 +584,7 @@ TARGET_BUTTON_FRIEND Przyjaciel TARGET_BUTTON_INVITE_GUILD Zapr. Gildii TARGET_BUTTON_INVITE_PARTY Zapr. Grupy TARGET_BUTTON_LEAVE_PARTY Opuść Grupę +TARGET_BUTTON_REMOVE_GUILD Usuń z gildii TARGET_BUTTON_REQUEST_ENTER_PARTY Dołącz do Grupy TARGET_BUTTON_VIEW_EQUIPMENT Zbroja TARGET_BUTTON_WHISPER Szept diff --git a/assets/locale/locale/pt/locale_game.txt b/assets/locale/locale/pt/locale_game.txt index f04b8139..75e93bfb 100644 --- a/assets/locale/locale/pt/locale_game.txt +++ b/assets/locale/locale/pt/locale_game.txt @@ -178,6 +178,7 @@ GUILD_TILE_GRADE Administração de Permissões GUILD_TILE_INFO Informação da Guild GUILD_TILE_MEMBER Membros da Guild GUILD_TILE_SKILL Habilidades de Guild +GUILD_REMOVE_MEMBER_QUESTION Queres remover este membro? GUILD_VILLAGE_01 Miryang GUILD_VILLAGE_02 Songpa GUILD_VILLAGE_03 Daeyami @@ -595,6 +596,7 @@ TARGET_BUTTON_FRIEND Amigo TARGET_BUTTON_INVITE_GUILD Convite Guild TARGET_BUTTON_INVITE_PARTY Convite Grupo TARGET_BUTTON_LEAVE_PARTY Abandonar Grupo +TARGET_BUTTON_REMOVE_GUILD Remover da Guild TARGET_BUTTON_REQUEST_ENTER_PARTY Entrar no Grupo TARGET_BUTTON_VIEW_EQUIPMENT Armadura TARGET_BUTTON_WHISPER Segredo diff --git a/assets/locale/locale/ro/locale_game.txt b/assets/locale/locale/ro/locale_game.txt index 7f7c3604..efb6b869 100644 --- a/assets/locale/locale/ro/locale_game.txt +++ b/assets/locale/locale/ro/locale_game.txt @@ -171,6 +171,7 @@ GUILD_NOT_ENOUGH_MONEY Nu deții destul Yang pentru această clădire. GUILD_NO_NOTICE_PERMISSION Nu îți este permis să faci un anunț. GUILD_OBJECT Obiecte GUILD_OFFER_EXP Investește Experiență +GUILD_REMOVE_MEMBER_QUESTION Doreşti să elimini acest membru? GUILD_SHORT_EXP Nu ai destule puncte de experiență. GUILD_TILE_BASEINFO Informații de bază GUILD_TILE_BOARD Tablă @@ -584,6 +585,7 @@ TARGET_BUTTON_INVITE_GUILD Invitația breslei TARGET_BUTTON_INVITE_PARTY Invitația grupei TARGET_BUTTON_LEAVE_PARTY Părăsește grupa TARGET_BUTTON_REQUEST_ENTER_PARTY Alătură-te grupei +TARGET_BUTTON_REMOVE_GUILD Înlătură din breaslă TARGET_BUTTON_VIEW_EQUIPMENT Armament TARGET_BUTTON_WHISPER Șoaptă TARGET_LEVEL_BOSS Boss diff --git a/assets/locale/locale/ru/locale_game.txt b/assets/locale/locale/ru/locale_game.txt index aa797a66..cbae6751 100644 --- a/assets/locale/locale/ru/locale_game.txt +++ b/assets/locale/locale/ru/locale_game.txt @@ -178,6 +178,7 @@ GUILD_TILE_GRADE Управление позицией GUILD_TILE_INFO Гильдия-инфо GUILD_TILE_MEMBER Члены гильдии GUILD_TILE_SKILL Навыки гильдии +GUILD_REMOVE_MEMBER_QUESTION Вы хотите удалить этого участника? GUILD_VILLAGE_01 Мирйанг GUILD_VILLAGE_02 Сонгпа GUILD_VILLAGE_03 Даэйами @@ -583,6 +584,7 @@ TARGET_BUTTON_FRIEND Друг TARGET_BUTTON_INVITE_GUILD Приглашение гильдии TARGET_BUTTON_INVITE_PARTY Пригласить TARGET_BUTTON_LEAVE_PARTY Покинуть группу +TARGET_BUTTON_REMOVE_GUILD Исключить из гильдии TARGET_BUTTON_REQUEST_ENTER_PARTY Вступить в группу TARGET_BUTTON_VIEW_EQUIPMENT Снаряжение TARGET_BUTTON_WHISPER Шептание diff --git a/assets/locale/locale/tr/locale_game.txt b/assets/locale/locale/tr/locale_game.txt index 7127923b..58aaea52 100644 --- a/assets/locale/locale/tr/locale_game.txt +++ b/assets/locale/locale/tr/locale_game.txt @@ -178,6 +178,7 @@ GUILD_TILE_GRADE Yönetici Pozisyonu GUILD_TILE_INFO Lonca bilgileri GUILD_TILE_MEMBER Lonca üyeleri GUILD_TILE_SKILL Lonca becerisi +GUILD_REMOVE_MEMBER_QUESTION Bu üyeyi kaldırmak mı istiyorsun? GUILD_VILLAGE_01 Miryang GUILD_VILLAGE_02 Songpa GUILD_VILLAGE_03 Daeyami @@ -583,6 +584,7 @@ TARGET_BUTTON_FRIEND Dost TARGET_BUTTON_INVITE_GUILD Lonca daveti TARGET_BUTTON_INVITE_PARTY Grup daveti TARGET_BUTTON_LEAVE_PARTY Grubu terket +TARGET_BUTTON_REMOVE_GUILD Loncadan çıkar TARGET_BUTTON_REQUEST_ENTER_PARTY Gruba katıl TARGET_BUTTON_VIEW_EQUIPMENT Zırh TARGET_BUTTON_WHISPER Fısıldama diff --git a/assets/root/uimessenger.py b/assets/root/uimessenger.py index 16fd9db6..9dbbc2d8 100644 --- a/assets/root/uimessenger.py +++ b/assets/root/uimessenger.py @@ -113,7 +113,7 @@ class MessengerItem(ui.Window): grp.RenderBar(x + 16, y, self.GetWidth() - 16, self.GetHeight()) class MessengerMemberItem(MessengerItem): - + STATE_OFFLINE = 0 STATE_ONLINE = 1 @@ -126,6 +126,10 @@ class MessengerMemberItem(MessengerItem): self.state = self.STATE_OFFLINE self.Offline() + @property + def RemoveMessage(self): + return localeInfo.MESSENGER_DO_YOU_DELETE + def GetStepWidth(self): return 15 @@ -245,6 +249,10 @@ class MessengerGuildItem(MessengerMemberItem): def OnWarp(self): net.SendGuildUseSkillPacket(155, self.key) + + @property + def RemoveMessage(self): + return localeInfo.GUILD_REMOVE_MEMBER_QUESTION def CanRemove(self): for i in range(guild.ENEMY_GUILD_SLOT_MAX_COUNT): @@ -252,7 +260,9 @@ class MessengerGuildItem(MessengerMemberItem): return False if guild.MainPlayerHasAuthority(guild.AUTH_REMOVE_MEMBER): - if guild.IsMemberByName(self.name): + guildMasterName = guild.GetGuildMasterName() + isTargetGuildMaster = guildMasterName == self.name + if guild.IsMemberByName(self.name) and not isTargetGuildMaster: return True return False @@ -529,7 +539,7 @@ class MessengerWindow(ui.ScriptWindow): if self.selectedItem: if self.selectedItem.CanRemove(): self.questionDialog = uiCommon.QuestionDialog() - self.questionDialog.SetText(localeInfo.MESSENGER_DO_YOU_DELETE) + self.questionDialog.SetText(self.selectedItem.RemoveMessage) self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnRemove)) self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog)) self.questionDialog.Open() diff --git a/assets/root/uitarget.py b/assets/root/uitarget.py index a4a8512d..38be7ce8 100644 --- a/assets/root/uitarget.py +++ b/assets/root/uitarget.py @@ -9,6 +9,7 @@ import chr import nonplayer import localeInfo import constInfo +import uiCommon class TargetBoard(ui.ThinBoard): @@ -23,6 +24,7 @@ class TargetBoard(ui.ThinBoard): localeInfo.TARGET_BUTTON_LEAVE_PARTY, localeInfo.TARGET_BUTTON_EXCLUDE, localeInfo.TARGET_BUTTON_INVITE_GUILD, + localeInfo.TARGET_BUTTON_REMOVE_GUILD, localeInfo.TARGET_BUTTON_DISMOUNT, localeInfo.TARGET_BUTTON_EXIT_OBSERVER, localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT, @@ -109,6 +111,7 @@ class TargetBoard(ui.ThinBoard): self.buttonDict[localeInfo.TARGET_BUTTON_EXCLUDE].SetEvent(ui.__mem_func__(self.OnPartyRemove)) self.buttonDict[localeInfo.TARGET_BUTTON_INVITE_GUILD].SAFE_SetEvent(self.__OnGuildAddMember) + self.buttonDict[localeInfo.TARGET_BUTTON_REMOVE_GUILD].SAFE_SetEvent(self.__OnGuildRemoveMember) self.buttonDict[localeInfo.TARGET_BUTTON_DISMOUNT].SAFE_SetEvent(self.__OnDismount) self.buttonDict[localeInfo.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver) self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT].SAFE_SetEvent(self.__OnViewEquipment) @@ -347,6 +350,22 @@ class TargetBoard(ui.ThinBoard): def __OnGuildAddMember(self): net.SendGuildAddMemberPacket(self.vid) + def __OnGuildRemoveMember(self): + self.questionDialog = uiCommon.QuestionDialog() + self.questionDialog.SetText(localeInfo.GUILD_REMOVE_MEMBER_QUESTION) + self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__OnGuildRemoveMemberAccept)) + self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__OnGuildRemoveMemberClose)) + self.questionDialog.Open() + + def __OnGuildRemoveMemberAccept(self): + net.SendGuildRemoveMemberPacket(self.nameString) + self.__OnGuildRemoveMemberClose() + + def __OnGuildRemoveMemberClose(self): + self.questionDialog.Close() + self.questionDialog = None + return True + def __OnDismount(self): net.SendChatPacket("/unmount") @@ -393,10 +412,32 @@ class TargetBoard(ui.ThinBoard): self.ShowDefaultButton() - if guild.MainPlayerHasAuthority(guild.AUTH_ADD_MEMBER): - if not guild.IsMemberByName(self.nameString): - if 0 == chr.GetGuildID(self.vid): - self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_GUILD) + def isGuildMaster(name): + guildMasterName = guild.GetGuildMasterName() + return guildMasterName == name + + def isGuildMember(name, vid): + return guild.IsMemberByName(name) and chr.GetGuildID(vid) != 0 + + def isNotGuildMember(name, vid): + return not guild.IsMemberByName(name) and chr.GetGuildID(vid) == 0 + + guildAuthorityButtons = { + guild.AUTH_ADD_MEMBER: { + "text": localeInfo.TARGET_BUTTON_INVITE_GUILD, + "condition": lambda: isNotGuildMember(self.nameString, self.vid), + }, + guild.AUTH_REMOVE_MEMBER: { + "text": localeInfo.TARGET_BUTTON_REMOVE_GUILD, + "condition": lambda: isGuildMember(self.nameString, self.vid) and not isGuildMaster(self.nameString), + }, + } + + for guildAuthority, guildButton in guildAuthorityButtons.items(): + hasAuthority = guild.MainPlayerHasAuthority(guildAuthority) + satisfiesCondition = guildButton["condition"]() + if hasAuthority and satisfiesCondition: + self.__ShowButton(guildButton["text"]) if not messenger.IsFriendByName(self.nameString): self.__ShowButton(localeInfo.TARGET_BUTTON_FRIEND)