Opublikowano 27 Maja 20241 r Cześć, ✋ Zaktualizowana klasa 'QuestionDialogWithTimeLimit' 🕒 teraz wyświetla okno zaproszeń z limitem czasowym. Po upływie tego czasu ⏰ zaproszenie zostanie automatycznie anulowane ❌, a gracz, do którego wysłano zaproszenie, otrzyma informację na czacie 💬. Prezentacja Implementacja 📂Lokalizacja pliku: 'root -> uicommon.py' 🔎Szukaj Tylko zalogowani Zaloguj się, aby wyświetlić chronioną treść Ten post zawiera treści dostępne tylko dla członków. Zaloguj się lub utwórz konto, aby odblokować całą zawartość tego posta. Zaloguj się Utwórz konto ♻️Zamień 📂Lokalizacja pliku: 'root -> game.py' 🔎Szukaj ♻️Zamień 🔎Szukaj ♻️Zamień 🔎Szukaj ♻️Zamień Jeśli chcesz dodać nazwę gracza w komunikacie zaproszenia do gildii zapraszam do odwiedzenia tego tematu. 📂Lokalizacja pliku: 'locale -> locale_game.txt' ➕Dodaj 🔎Szukaj ♻️Zamień
Opublikowano 8 Stycznia 20251 r @SevenceNormalnie Tobie działa wiadomość po skończeniu się czasu z gildiami? U mnie jej brak nie wazne, znowu nacpany zgubilem 1 linijke 🧓 Edytowane 8 Stycznia 20251 r przez Dex666
Opublikowano 17 Sierpnia 202517 Sie @Sevence Zauważyłem jeden problem przy łączeniu dwóch tematów: tego i < kliknij >mamy do podmiany funkcje:Czysta funkcja z game.pyPythonKod został skopiowany def RecvGuildInviteQuestion(self, guildID, guildName): guildInviteQuestionDialog = uiCommon.QuestionDialog() guildInviteQuestionDialog.SetText(guildName + localeInfo.GUILD_DO_YOU_JOIN) guildInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.Open() guildInviteQuestionDialog.guildID = guildID self.guildInviteQuestionDialog = guildInviteQuestionDialogna te dwie razem ( z dwóch tematów )Automatyczne anulowanie zaproszeń po przekroczeniu czasuPythonKod został skopiowany def RecvGuildInviteQuestion(self, guildID, guildName): guildInviteQuestionDialog = uiCommon.QuestionDialogWithTimeLimit() guildInviteQuestionDialog.SetText(guildName + localeInfo.GUILD_DO_YOU_JOIN) guildInviteQuestionDialog.SetTimeOverMsg(localeInfo.GUILD_ADD_FRIEND_ANSWER_TIMEOVER) guildInviteQuestionDialog.SetTimeOverEvent(self.AnswerGuildInvite, False) guildInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.Open(10) guildInviteQuestionDialog.guildID = guildID self.guildInviteQuestionDialog = guildInviteQuestionDialogRozbudowany komunikat zapraszania do gildii o nazwę graczaPythonKod został skopiowany def RecvGuildInviteQuestion(self, guildID, guildName, inviterName): guildInviteQuestionDialog = uiCommon.QuestionDialog2() guildInviteQuestionDialog.SetText1(localeInfo.GUILD_INVITE_QUESTION % (inviterName, guildName)) guildInviteQuestionDialog.SetText2(localeInfo.GUILD_DO_YOU_JOIN) guildInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.Open() guildInviteQuestionDialog.guildID = guildID self.guildInviteQuestionDialog = guildInviteQuestionDialogW rezultacie wychodzi problem z przesunięciem tekstu o jedną linijkę w dół. W funkcji od znajomych i gildii jest ten sam problem."Czy chcesz przyjąć zaproszenie??" ; "zaakceptować?", Zapytanie zamiast być pomiędzy informacja o dodaniu do znajomych a pozostałym czasem na zaakceptowanie znajduje się dalej w pierwszej linijce tekstu.Jeżeli ustawie funkcje w ten sposób, to nie mam zapytania czy chce dołączyć.połączenie dwóch tematów w jedenPythonKod został skopiowany def RecvGuildInviteQuestion(self, guildID, guildName, inviterName): guildInviteQuestionDialog = uiCommon.QuestionDialogWithTimeLimit() guildInviteQuestionDialog.SetText1(localeInfo.GUILD_INVITE_QUESTION % (inviterName, guildName)) guildInviteQuestionDialog.SetText2(localeInfo.GUILD_DO_YOU_JOIN) guildInviteQuestionDialog.SetTimeOverMsg(localeInfo.GUILD_ADD_FRIEND_ANSWER_TIMEOVER) guildInviteQuestionDialog.SetTimeOverEvent(self.AnswerGuildInvite, False) guildInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.Open(10) guildInviteQuestionDialog.guildID = guildID self.guildInviteQuestionDialog = guildInviteQuestionDialog⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️Poprawka funkcji zaproszeń do grupy: (w złym miejscu odczytuje nick postaci)zamień:def RecvPartyInviteQuestion(self, leaderVID, leaderName):PythonKod został skopiowanypartyInviteQuestionDialog.SetText(localeInfo.PARTY_DO_YOU_JOIN + leaderName + "?")na to:def RecvPartyInviteQuestion(self, leaderVID, leaderName):PythonKod został skopiowanypartyInviteQuestionDialog.SetText1(leaderName + localeInfo.PARTY_DO_YOU_JOIN + "?") -- możemy usunąć + "?" jeżeli w locale_game mamy: PARTY_DO_YOU_JOIN Zaprasza Cię do swojej grupy. Czy chcesz przyjąć zaproszenie?fChciałbym uzyskać taki efekt na każdej z trzech opcji: grupa, znajomi, gildia
Opublikowano 19 Sierpnia 202519 Sie game.pyPythonKod został skopiowany###GILDIA###def RecvGuildInviteQuestion(self, guildID, guildName, inviterName): guildInviteQuestionDialog = uiCommon.QuestionDialogWithTimeLimit() #emoji #guildInviteQuestionDialog.SetText1("{}".format(Emoji("icon/emoji/add_friend.tga")) + " " + localeInfo.GUILD_INVITE_QUESTION % (inviterName,guildName)) guildInviteQuestionDialog.SetText1(localeInfo.GUILD_INVITE_QUESTION % (inviterName,guildName)) guildInviteQuestionDialog.SetText2(localeInfo.GUILD_DO_YOU_JOIN) guildInviteQuestionDialog.SetTimeOverMsg("{}{}".format(Emoji("icon/emoji/klepsydra.png"), " " + localeInfo.GUILD_ADD_FRIEND_ANSWER_TIMEOVER)) guildInviteQuestionDialog.SetTimeOverEvent(self.AnswerGuildInvite, False) guildInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.open(10) guildInviteQuestionDialog.guildID = guildID self.guildInviteQuestionDialog = guildInviteQuestionDialog ###GRUPA###def RecvPartyInviteQuestion(self, leaderVID, leaderName): partyInviteQuestionDialog = uiCommon.QuestionDialogWithTimeLimit() partyInviteQuestionDialog.SetText1(leaderName + localeInfo.PARTY_DO_YOU_JOIN) partyInviteQuestionDialog.SetText2(localeInfo.GUILD_DO_YOU_JOIN + " {}".format(Emoji("icon/emoji/party.png"))) partyInviteQuestionDialog.SetTimeOverMsg("{} {}".format(Emoji("icon/emoji/klepsydra.png"), localeInfo.PARTY_ANSWER_TIMEOVER)) partyInviteQuestionDialog.SetTimeOverEvent(lambda arg=False: self.AnswerPartyInvite(arg)) partyInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerPartyInvite(arg)) partyInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerPartyInvite(arg)) partyInviteQuestionDialog.open(10) partyInviteQuestionDialog.partyLeaderVID = leaderVID self.partyInviteQuestionDialog = partyInviteQuestionDialog ###MESS###def OnMessengerAddFriendQuestion(self, name): messengerAddFriendQuestion = uiCommon.QuestionDialogWithTimeLimit() messengerAddFriendQuestion.SetText1(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND % (name)) messengerAddFriendQuestion.SetText2(localeInfo.GUILD_DO_YOU_JOIN + " {}".format(Emoji("icon/emoji/add_friend.png"))) messengerAddFriendQuestion.SetTimeOverMsg("{} {}".format(Emoji("icon/emoji/klepsydra.png"), localeInfo.MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER)) messengerAddFriendQuestion.SetTimeOverEvent(ui.__mem_func__(self.OnDenyAddFriend)) messengerAddFriendQuestion.SetAcceptEvent(ui.__mem_func__(self.OnAcceptAddFriend)) messengerAddFriendQuestion.SetCancelEvent(ui.__mem_func__(self.OnDenyAddFriend)) messengerAddFriendQuestion.open(10) messengerAddFriendQuestion.name = name self.messengerAddFriendQuestion = messengerAddFriendQuestionuicommon.pyPythonKod został skopiowanyclass QuestionDialog2(QuestionDialog): def __init__(self): QuestionDialog.__init__(self) self.__CreateDialog() def __del__(self): QuestionDialog.__del__(self) def __CreateDialog(self): pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog2.py") self.board = self.GetChild("board") self.textLine1 = self.GetChild("message1") self.textLine2 = self.GetChild("message2") self.textLine3 = self.GetChild("message3") self.acceptButton = self.GetChild("accept") self.cancelButton = self.GetChild("cancel") def SetText1(self, text): self.textLine1.SetText(text) def SetText2(self, text): self.textLine2.SetText(text) def SetText3(self, text): self.textLine3.SetText(text) class QuestionDialogWithTimeLimit(QuestionDialog2): def __init__(self): ui.ScriptWindow.__init__(self) self.__CreateDialog() self.endTime = 0 self.timeOverMsg = 0 self.timeOverEvent = None self.timeOverEventArgs = None self.timerEmoji = "icon/emoji/klepsydra.png" def __del__(self): QuestionDialog2.__del__(self) def __CreateDialog(self): pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog2.py") self.board = self.GetChild("board") self.textLine1 = self.GetChild("message1") self.textLine2 = self.GetChild("message2") self.textLine3 = self.GetChild("message3") self.acceptButton = self.GetChild("accept") self.cancelButton = self.GetChild("cancel") def open(self, timeout): #def Open(self, msg, timeout): self.SetCenterPosition() self.SetTop() self.Show() #self.SetText1(msg) self.endTime = app.GetTime() + timeout def SetTimeOverEvent(self, event, *args): self.timeOverEvent = event self.timeOverEventArgs = args def SetTimeOverMsg(self, msg): self.timeOverMsg = msg def OnTimeOver(self): if self.timeOverEvent: apply(self.timeOverEvent, self.timeOverEventArgs) if self.timeOverMsg: chat.AppendChat(chat.CHAT_TYPE_INFO, self.timeOverMsg) def OnUpdate(self): leftTime = max(0, self.endTime - app.GetTime()) self.SetText3("{}".format(Emoji(self.timerEmoji)) + " " + localeInfo.UI_LEFT_TIME % (leftTime)) if leftTime <= 0: self.OnTimeOver()questiondialog2.pyPythonKod został skopiowanyimport uiScriptLocale window = { "name" : "QuestionDialog", "style" : ("movable", "float",), "x" : SCREEN_WIDTH/2 - 125, "y" : SCREEN_HEIGHT/2 - 52, "width" : 280, "height" : 115, "children" : ( { "name" : "board", "type" : "board", "x" : 0, "y" : 0, "width" : 280, "height" : 115, "children" : ( { "name" : "message1", "type" : "text", "x" : 0, "y" : 15, "text" : uiScriptLocale.MESSAGE, "horizontal_align" : "center", "text_horizontal_align" : "center", "text_vertical_align" : "center", }, { "name" : "message2", "type" : "text", "x" : 0, "y" : 40, "text" : uiScriptLocale.MESSAGE, "horizontal_align" : "center", "text_horizontal_align" : "center", "text_vertical_align" : "center", }, { "name" : "message3", "type" : "text", "x" : 0, "y" : 65, "text" : uiScriptLocale.MESSAGE, "horizontal_align" : "center", "text_horizontal_align" : "center", "text_vertical_align" : "center", }, { "name" : "accept", "type" : "button", "x" : -40, "y" : 83, "width" : 61, "height" : 21, "horizontal_align" : "center", "text" : uiScriptLocale.YES, "default_image" : "d:/ymir work/ui/public/middle_button_01.sub", "over_image" : "d:/ymir work/ui/public/middle_button_02.sub", "down_image" : "d:/ymir work/ui/public/middle_button_03.sub", }, { "name" : "cancel", "type" : "button", "x" : +40, "y" : 83, "width" : 61, "height" : 21, "horizontal_align" : "center", "text" : uiScriptLocale.NO, "default_image" : "d:/ymir work/ui/public/middle_button_01.sub", "over_image" : "d:/ymir work/ui/public/middle_button_02.sub", "down_image" : "d:/ymir work/ui/public/middle_button_03.sub", }, ), }, ),}locale_game.txtTextKod został skopiowanyGUILD_DO_YOU_JOIN Czy chcesz przyj¹æ zaproszenie?GUILD_INVITE_QUESTION Gracz %s zaprasza Cie do gildii: %sGUILD_ADD_FRIEND_ANSWER_TIMEOVER Zaproszenie do gildii zostalo anulowane.MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER Zaproszenie do znajomych zostalo anulowane.PARTY_ANSWER_TIMEOVER Zaproszenie do grupy zostalo anulowane.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND %s dodal Cie jako przyjaciela!PARTY_DO_YOU_JOIN zaprasza Ciê do grupy!Jak ktoś nie ma emoji to usuwa:1. "{}".format(Emoji("icon/emoji/klepsydra.png")) + " " + 2. + " " + "{}".format(Emoji("icon/emoji/party.png"))3. + " " + "{}".format(Emoji("icon/emoji/add_friend.png"))4. "{}".format(Emoji(self.timerEmoji)) + " " + z def OnUpdate(QuestionDialogWithTimeLimit)5. self.timerEmoji = "icon/emoji/klepsydra.png" z def__init__(QuestionDialogWithTimeLimit
Opublikowano 24 Sierpnia 202524 Sie W dniu 19.08.2025 o 21:23, wojciech74 napisał(a):game.py📋PythonKod został skopiowany###GILDIA###def RecvGuildInviteQuestion(self, guildID, guildName, inviterName): guildInviteQuestionDialog = uiCommon.QuestionDialogWithTimeLimit() #emoji #guildInviteQuestionDialog.SetText1("{}".format(Emoji("icon/emoji/add_friend.tga")) + " " + localeInfo.GUILD_INVITE_QUESTION % (inviterName,guildName)) guildInviteQuestionDialog.SetText1(localeInfo.GUILD_INVITE_QUESTION % (inviterName,guildName)) guildInviteQuestionDialog.SetText2(localeInfo.GUILD_DO_YOU_JOIN) guildInviteQuestionDialog.SetTimeOverMsg("{}{}".format(Emoji("icon/emoji/klepsydra.png"), " " + localeInfo.GUILD_ADD_FRIEND_ANSWER_TIMEOVER)) guildInviteQuestionDialog.SetTimeOverEvent(self.AnswerGuildInvite, False) guildInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerGuildInvite(arg)) guildInviteQuestionDialog.open(10) guildInviteQuestionDialog.guildID = guildID self.guildInviteQuestionDialog = guildInviteQuestionDialog ###GRUPA###def RecvPartyInviteQuestion(self, leaderVID, leaderName): partyInviteQuestionDialog = uiCommon.QuestionDialogWithTimeLimit() partyInviteQuestionDialog.SetText1(leaderName + localeInfo.PARTY_DO_YOU_JOIN) partyInviteQuestionDialog.SetText2(localeInfo.GUILD_DO_YOU_JOIN + " {}".format(Emoji("icon/emoji/party.png"))) partyInviteQuestionDialog.SetTimeOverMsg("{} {}".format(Emoji("icon/emoji/klepsydra.png"), localeInfo.PARTY_ANSWER_TIMEOVER)) partyInviteQuestionDialog.SetTimeOverEvent(lambda arg=False: self.AnswerPartyInvite(arg)) partyInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerPartyInvite(arg)) partyInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerPartyInvite(arg)) partyInviteQuestionDialog.open(10) partyInviteQuestionDialog.partyLeaderVID = leaderVID self.partyInviteQuestionDialog = partyInviteQuestionDialog ###MESS###def OnMessengerAddFriendQuestion(self, name): messengerAddFriendQuestion = uiCommon.QuestionDialogWithTimeLimit() messengerAddFriendQuestion.SetText1(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND % (name)) messengerAddFriendQuestion.SetText2(localeInfo.GUILD_DO_YOU_JOIN + " {}".format(Emoji("icon/emoji/add_friend.png"))) messengerAddFriendQuestion.SetTimeOverMsg("{} {}".format(Emoji("icon/emoji/klepsydra.png"), localeInfo.MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER)) messengerAddFriendQuestion.SetTimeOverEvent(ui.__mem_func__(self.OnDenyAddFriend)) messengerAddFriendQuestion.SetAcceptEvent(ui.__mem_func__(self.OnAcceptAddFriend)) messengerAddFriendQuestion.SetCancelEvent(ui.__mem_func__(self.OnDenyAddFriend)) messengerAddFriendQuestion.open(10) messengerAddFriendQuestion.name = name self.messengerAddFriendQuestion = messengerAddFriendQuestionuicommon.py📋PythonKod został skopiowanyclass QuestionDialog2(QuestionDialog): def __init__(self): QuestionDialog.__init__(self) self.__CreateDialog() def __del__(self): QuestionDialog.__del__(self) def __CreateDialog(self): pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog2.py") self.board = self.GetChild("board") self.textLine1 = self.GetChild("message1") self.textLine2 = self.GetChild("message2") self.textLine3 = self.GetChild("message3") self.acceptButton = self.GetChild("accept") self.cancelButton = self.GetChild("cancel") def SetText1(self, text): self.textLine1.SetText(text) def SetText2(self, text): self.textLine2.SetText(text) def SetText3(self, text): self.textLine3.SetText(text) class QuestionDialogWithTimeLimit(QuestionDialog2): def __init__(self): ui.ScriptWindow.__init__(self) self.__CreateDialog() self.endTime = 0 self.timeOverMsg = 0 self.timeOverEvent = None self.timeOverEventArgs = None self.timerEmoji = "icon/emoji/klepsydra.png" def __del__(self): QuestionDialog2.__del__(self) def __CreateDialog(self): pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog2.py") self.board = self.GetChild("board") self.textLine1 = self.GetChild("message1") self.textLine2 = self.GetChild("message2") self.textLine3 = self.GetChild("message3") self.acceptButton = self.GetChild("accept") self.cancelButton = self.GetChild("cancel") def open(self, timeout): #def Open(self, msg, timeout): self.SetCenterPosition() self.SetTop() self.Show() #self.SetText1(msg) self.endTime = app.GetTime() + timeout def SetTimeOverEvent(self, event, *args): self.timeOverEvent = event self.timeOverEventArgs = args def SetTimeOverMsg(self, msg): self.timeOverMsg = msg def OnTimeOver(self): if self.timeOverEvent: apply(self.timeOverEvent, self.timeOverEventArgs) if self.timeOverMsg: chat.AppendChat(chat.CHAT_TYPE_INFO, self.timeOverMsg) def OnUpdate(self): leftTime = max(0, self.endTime - app.GetTime()) self.SetText3("{}".format(Emoji(self.timerEmoji)) + " " + localeInfo.UI_LEFT_TIME % (leftTime)) if leftTime <= 0: self.OnTimeOver()questiondialog2.py📋PythonKod został skopiowanyimport uiScriptLocale window = { "name" : "QuestionDialog", "style" : ("movable", "float",), "x" : SCREEN_WIDTH/2 - 125, "y" : SCREEN_HEIGHT/2 - 52, "width" : 280, "height" : 115, "children" : ( { "name" : "board", "type" : "board", "x" : 0, "y" : 0, "width" : 280, "height" : 115, "children" : ( { "name" : "message1", "type" : "text", "x" : 0, "y" : 15, "text" : uiScriptLocale.MESSAGE, "horizontal_align" : "center", "text_horizontal_align" : "center", "text_vertical_align" : "center", }, { "name" : "message2", "type" : "text", "x" : 0, "y" : 40, "text" : uiScriptLocale.MESSAGE, "horizontal_align" : "center", "text_horizontal_align" : "center", "text_vertical_align" : "center", }, { "name" : "message3", "type" : "text", "x" : 0, "y" : 65, "text" : uiScriptLocale.MESSAGE, "horizontal_align" : "center", "text_horizontal_align" : "center", "text_vertical_align" : "center", }, { "name" : "accept", "type" : "button", "x" : -40, "y" : 83, "width" : 61, "height" : 21, "horizontal_align" : "center", "text" : uiScriptLocale.YES, "default_image" : "d:/ymir work/ui/public/middle_button_01.sub", "over_image" : "d:/ymir work/ui/public/middle_button_02.sub", "down_image" : "d:/ymir work/ui/public/middle_button_03.sub", }, { "name" : "cancel", "type" : "button", "x" : +40, "y" : 83, "width" : 61, "height" : 21, "horizontal_align" : "center", "text" : uiScriptLocale.NO, "default_image" : "d:/ymir work/ui/public/middle_button_01.sub", "over_image" : "d:/ymir work/ui/public/middle_button_02.sub", "down_image" : "d:/ymir work/ui/public/middle_button_03.sub", }, ), }, ),}locale_game.txt📋TextKod został skopiowanyGUILD_DO_YOU_JOIN Czy chcesz przyj¹æ zaproszenie?GUILD_INVITE_QUESTION Gracz %s zaprasza Cie do gildii: %sGUILD_ADD_FRIEND_ANSWER_TIMEOVER Zaproszenie do gildii zostalo anulowane.MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER Zaproszenie do znajomych zostalo anulowane.PARTY_ANSWER_TIMEOVER Zaproszenie do grupy zostalo anulowane.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND %s dodal Cie jako przyjaciela!PARTY_DO_YOU_JOIN zaprasza Ciê do grupy!Jak ktoś nie ma emoji to usuwa:1. "{}".format(Emoji("icon/emoji/klepsydra.png")) + " " + 2. + " " + "{}".format(Emoji("icon/emoji/party.png"))3. + " " + "{}".format(Emoji("icon/emoji/add_friend.png"))4. "{}".format(Emoji(self.timerEmoji)) + " " + z def OnUpdate(QuestionDialogWithTimeLimit)5. self.timerEmoji = "icon/emoji/klepsydra.png" z def__init__(QuestionDialogWithTimeLimitRozwińDziała świetnie dziękuję pięknie, jedynie co znalazłem problematycznego w Twojej paczce z emoji:do uicommon.py & game.py dodaćPythonKod został skopiowanyfrom constInfo import Emojiw bince GrpTextInstance.cpppod tym:C++Kod został skopiowanyint ReadToken(const char* token)dodajemy:C++Kod został skopiowanybool CGraphicTextInstance::EmojiPathProcess(const std::wstring& emojiBuffer, SEmoji& kEmoji, int& x, CGraphicFontTexture::TCharacterInfomation*& pSpaceInfo, CGraphicFontTexture*& pFontTexture, const UINT& dataCodePage, const DWORD& dwColor){ char retBuf[1024]; const int retLen = Ymir_WideCharToMultiByte(GetDefaultCodePage(), 0, emojiBuffer.c_str(), emojiBuffer.length(), retBuf, sizeof(retBuf) - 1, nullptr, nullptr); retBuf[retLen] = '\0'; // list of available paths (they should end with /) const static std::array pathList{ "icon/", "icon/emoji/", "" }; // list of available extensions (they should start with .) const static std::array extList{ ".png", ".tga" }; // get extension path and if it has one const auto extPath = std::filesystem::path(retBuf).extension(); const auto hasExt = std::find(std::begin(extList), std::end(extList), extPath) != std::end(extList); // process for paths std::string emojiPath; for (const auto& pathElem : pathList) { if (hasExt) // process for known ext { const auto& tmpPath = fmt::format("{}{}", pathElem, retBuf); if (!CResourceManager::Instance().IsFileExist(tmpPath.c_str())) continue; emojiPath = tmpPath; } else // otherwise for available extensions { for (const auto& extElem : extList) { const auto& tmpPath = fmt::format("{}{}{}", pathElem, retBuf, extElem); if (!CResourceManager::Instance().IsFileExist(tmpPath.c_str())) continue; emojiPath = tmpPath; } } // skip if no path is found if (emojiPath.empty()) continue; { auto pImage = (CGraphicImage*)CResourceManager::Instance().GetResourcePointer(emojiPath.c_str()); kEmoji.pInstance = CGraphicImageInstance::New(); kEmoji.pInstance->SetImagePointer(pImage); m_emojiVector.push_back(kEmoji); memset(&kEmoji, 0, sizeof(SEmoji)); for (int i = 0; i < pImage->GetWidth() / (pSpaceInfo->width - 1); ++i) x += __DrawCharacter(pFontTexture, dataCodePage, ' ', dwColor); if (pImage->GetWidth() % (pSpaceInfo->width - 1) > 1) x += __DrawCharacter(pFontTexture, dataCodePage, ' ', dwColor); break; } } return true;}Teraz w temacie wkradł się błąd z kodowaniem oraz ucięcie enterów.TextKod został skopiowanyGUILD_DO_YOU_JOIN Czy chcesz przyj¹æ zaproszenie?PARTY_ANSWER_TIMEOVER Zaproszenie do grupy zostalo anulowane.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND %s dodal Cie jako przyjaciela!PARTY_DO_YOU_JOIN zaprasza Ciê do grupy!PythonKod został skopiowanyGUILD_DO_YOU_JOIN Czy chcesz przyjąć zaproszenie?GUILD_INVITE_QUESTION Gracz %s zaprasza Cie do gildii: %sGUILD_ADD_FRIEND_ANSWER_TIMEOVER Zaproszenie do gildii zostało anulowane.MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER Zaproszenie do znajomych zostało anulowane.PARTY_ANSWER_TIMEOVER Zaproszenie do grupy zostalo anulowane.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND %s dodał Cię jako przyjaciela!PARTY_DO_YOU_JOIN Zaprasza Cię do swojej grupy!
Opublikowano 24 Sierpnia 202524 Sie Programista W dniu 24.08.2025 o 20:46, ExoCarossa napisał(a):Działa świetnie dziękuję pięknie, jedynie co znalazłem problematycznego w Twojej paczce z emoji:do uicommon.py & game.py dodać📋PythonKod został skopiowanyfrom constInfo import Emojiw bince GrpTextInstance.cpppod tym:📋C++Kod został skopiowanyint ReadToken(const char* token)dodajemy:📋C++Kod został skopiowanybool CGraphicTextInstance::EmojiPathProcess(const std::wstring& emojiBuffer, SEmoji& kEmoji, int& x, CGraphicFontTexture::TCharacterInfomation*& pSpaceInfo, CGraphicFontTexture*& pFontTexture, const UINT& dataCodePage, const DWORD& dwColor){ char retBuf[1024]; const int retLen = Ymir_WideCharToMultiByte(GetDefaultCodePage(), 0, emojiBuffer.c_str(), emojiBuffer.length(), retBuf, sizeof(retBuf) - 1, nullptr, nullptr); retBuf[retLen] = '\0'; // list of available paths (they should end with /) const static std::array pathList{ "icon/", "icon/emoji/", "" }; // list of available extensions (they should start with .) const static std::array extList{ ".png", ".tga" }; // get extension path and if it has one const auto extPath = std::filesystem::path(retBuf).extension(); const auto hasExt = std::find(std::begin(extList), std::end(extList), extPath) != std::end(extList); // process for paths std::string emojiPath; for (const auto& pathElem : pathList) { if (hasExt) // process for known ext { const auto& tmpPath = fmt::format("{}{}", pathElem, retBuf); if (!CResourceManager::Instance().IsFileExist(tmpPath.c_str())) continue; emojiPath = tmpPath; } else // otherwise for available extensions { for (const auto& extElem : extList) { const auto& tmpPath = fmt::format("{}{}{}", pathElem, retBuf, extElem); if (!CResourceManager::Instance().IsFileExist(tmpPath.c_str())) continue; emojiPath = tmpPath; } } // skip if no path is foundif (emojiPath.empty()) continue; { auto pImage = (CGraphicImage*)CResourceManager::Instance().GetResourcePointer(emojiPath.c_str()); kEmoji.pInstance = CGraphicImageInstance::New(); kEmoji.pInstance->SetImagePointer(pImage); m_emojiVector.push_back(kEmoji); memset(&kEmoji, 0, sizeof(SEmoji)); for (int i = 0; i < pImage->GetWidth() / (pSpaceInfo->width - 1); ++i) x += __DrawCharacter(pFontTexture, dataCodePage, ' ', dwColor); if (pImage->GetWidth() % (pSpaceInfo->width - 1) > 1) x += __DrawCharacter(pFontTexture, dataCodePage, ' ', dwColor); break; } } return true;}Teraz w temacie wkradł się błąd z kodowaniem oraz ucięcie enterów.📋TextKod został skopiowanyGUILD_DO_YOU_JOIN Czy chcesz przyj¹æ zaproszenie?PARTY_ANSWER_TIMEOVER Zaproszenie do grupy zostalo anulowane.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND %s dodal Cie jako przyjaciela!PARTY_DO_YOU_JOIN zaprasza Ciê do grupy!📋PythonKod został skopiowanyGUILD_DO_YOU_JOIN Czy chcesz przyjąć zaproszenie?GUILD_INVITE_QUESTION Gracz %s zaprasza Cie do gildii: %sGUILD_ADD_FRIEND_ANSWER_TIMEOVER Zaproszenie do gildii zostało anulowane.MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER Zaproszenie do znajomych zostało anulowane.PARTY_ANSWER_TIMEOVER Zaproszenie do grupy zostalo anulowane.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND %s dodał Cię jako przyjaciela!PARTY_DO_YOU_JOIN Zaprasza Cię do swojej grupy!RozwińNigdy w życiu memset na strukturze, no chyba, że chcecie mieć crashe albo heap corruption.C++Kod został skopiowanykEmoji = {};To protip Edytowane 24 Sierpnia 202524 Sie przez Thorek
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto