From 3ed15e49ac85f1599355a8940daa200e8961c87e Mon Sep 17 00:00:00 2001 From: Simone Romano Date: Fri, 26 Dec 2025 00:37:31 +0100 Subject: [PATCH] Fix: Add dialog cancelation state and quest cancelation packet send --- .gitattributes | 2 ++ assets/root/uiquest.py | 30 ++++++++++++++++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..24cf3c65 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Korean (EUC-KR) +assets/root/*.py text working-tree-encoding=utf-8 \ No newline at end of file diff --git a/assets/root/uiquest.py b/assets/root/uiquest.py index 4c52973d..99ceba9f 100644 --- a/assets/root/uiquest.py +++ b/assets/root/uiquest.py @@ -309,6 +309,10 @@ class QuestDialog(ui.ScriptWindow): self.editLine = None # END_OF_QUEST_INPUT + # QUEST_CANCEL - Track if dialog was cancelled + self.bCancelled = False + # END_OF_QUEST_CANCEL + def __del__(self): ui.ScriptWindow.__del__(self) @@ -330,11 +334,16 @@ class QuestDialog(ui.ScriptWindow): # QUEST_CANCEL def OnCancel(self): + self.bCancelled = True self.nextCurtainMode = -1 self.CloseSelf() # END_OF_QUEST_CANCEL def CloseSelf(self): + if self.bCancelled: + net.SendQuestCancelPacket() + self.bCancelled = False + QuestDialog.QuestCurtain.CurtainMode = self.nextCurtainMode self.btnNext = None self.descWindow = None @@ -443,7 +452,7 @@ class QuestDialog(ui.ScriptWindow): import localeInfo if event.BUTTON_TYPE_CANCEL == button_type: - b.SetEvent(lambda s=self:event.SelectAnswer(s.descIndex, 254) or s.OnCancel()) + b.SetEvent(lambda s=self:(setattr(s, 'bCancelled', True) or None) or event.SelectAnswer(s.descIndex, 254) or s.OnCancel()) b.SetText(localeInfo.UI_CANCEL) elif event.BUTTON_TYPE_DONE == button_type: b.SetEvent(lambda s=self:s.CloseSelf()) @@ -457,7 +466,7 @@ class QuestDialog(ui.ScriptWindow): # END_OF_QUEST_CANCEL - def MakeQuestion(self, n): # n Ʈ ȭâ ư "ݱ" ü Ʈ ư . by ȣ + def MakeQuestion(self, n): # n은 모든 퀘스트 대화창의 마지막 버튼인 "닫기"를 포함한 전체 퀘스트 버튼 개수. by 김준호 global entire_questbutton_number global entire_questpage_number global cur_questpage_number @@ -548,7 +557,7 @@ class QuestDialog(ui.ScriptWindow): self.prevbutton = None self.CloseSelf() - def AppendQuestion(self, name, idx): # idx 0 . PythonEventManager.cpp line 881 . by ȣ + def AppendQuestion(self, name, idx): # idx는 0부터 시작함. PythonEventManager.cpp line 881 참고. by 김준호 if not self.btnAnswer: return @@ -595,7 +604,7 @@ class QuestDialog(ui.ScriptWindow): # QUEST_INPUT def OnKeyDown(self, key): if self.btnAnswer == None: - ## ù '', 'Ȯ' Ϲ ư ִ 쿡 ó + ## 선택문이 없고 '다음', '확인' 등의 일방 버튼만 있는 경우에 대한 처리 if None != self.btnNext: if app.DIK_RETURN == key: self.OnPressEscapeKey() @@ -640,21 +649,22 @@ class QuestDialog(ui.ScriptWindow): def OnPressEscapeKey(self): - # ESCŰ "" ư Ͱ ȿ . + # ESC키가 눌린 경우 "다음" 버튼을 누른 것과 같은 효과를 내도록 함. if None != self.btnNext: - ##Ʈڵ δ ESCư + ##퀘스트문자들이 전부다 나왔을경우의 ESC버튼 if event.BUTTON_TYPE_CANCEL == self.nextButtonType: - event.SelectAnswer(self.descIndex, 254) + self.bCancelled = True + event.SelectAnswer(self.descIndex, 254) self.CloseSelf() - ## ƹ ۾ + ## 아무 작업을 하지 않을때 elif event.BUTTON_TYPE_DONE == self.nextButtonType: self.CloseSelf() - ## ͳ ȭ Ѿ Ұ + ## 엔터나 다음화면으로 넘어가려고 할경우 elif event.BUTTON_TYPE_NEXT == self.nextButtonType: event.SelectAnswer(self.descIndex, 254) self.CloseSelf() else: - ## ߿ ų, ESCư + ## 도중에 꺼버리거나, ESC버튼이 나왓을경우 event.SelectAnswer(self.descIndex, entire_questbutton_number -1 ) self.nextbutton = None self.prevbutton = None