Opublikowano 26 Marca 202526 Mar @Aktualizacja do Python3 https://test.sharegon.pl/topic/1833-event-admin-panel-zarz%C4%85dzania-eventami/#findComment-17010 Cześć. Wrzucam panel do zarządzania eventami na podstawie kalendarza od dracarys. W paczke "Emoji" i "Smooth_Scroll" potrzebne do prawidlowego dzialania. Panel początkowo pisany na plikach arezzo i przeniesiony na martysame5.8. #Poprawione LS#Edycja odbywa się na zasadzie wyboru dnia do modyfikacji, więc musilem zmienic "def onclick" na "def example" do obslugi kliknięcia ikony przez graczyTrochę tam trzeba jeszcze poprawić, ale jak ktoś potrzebuje tego to sobie ogarnie.Jakby ktoś potrzebowal pomocy przy dodaniu to śmialo pisać w czym problem i pomogę.@edit, mała aktualizacja, brakująca klasa BorderA//Dodaj do ui.pyclass BorderA(Window):CORNER_WIDTH = 16CORNER_HEIGHT = 16LINE_WIDTH = 16LINE_HEIGHT = 16BOARD_COLOR = grp.GenerateColor(0.17, 0.027, 0.0, 0.70)LT = 0LB = 1RT = 2RB = 3L = 0R = 1T = 2B = 3def init(self, layer = "UI"):Window.__init__(self, layer)CornerFileNames = [ "d:/ymir work/ui/pattern/border_a/border_a_"+dir+".tga" for dir in ["Left_Top","Left_Bottom","Right_Top","Right_Bottom"] ]LineFileNames = [ "d:/ymir work/ui/pattern/border_a/border_a_"+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]#BaseFileName = "d:/ymir work/ui/pattern/border_a/border_center.tga"self.Corners = []for fileName in CornerFileNames:Corner = ExpandedImageBox()Corner.AddFlag("not_pick")Corner.LoadImage(fileName)Corner.SetParent(self)Corner.SetPosition(0, 0)Corner.Show()self.Corners.append(Corner)self.Lines = []for fileName in LineFileNames:Line = ExpandedImageBox()Line.AddFlag("not_pick")Line.LoadImage(fileName)Line.SetParent(self)Line.SetPosition(0, 0)Line.Show()self.Lines.append(Line)self.Base = ExpandedImageBox()self.Base.AddFlag("not_pick")self.Base.LoadImage("d:/ymir work/ui/pattern/border_a/border_a_center.tga")self.Base.SetParent(self)self.Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)self.Base.Show()self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)def del(self):Window.__del__(self)def SetSize(self, width, height):width = max(self.CORNER_WIDTH*2, width)height = max(self.CORNER_HEIGHT*2, height)Window.SetSize(self, width, height)self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHThorizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTHself.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)if self.Base:self.Base.SetRenderingRect(0, 0, horizontalShowingPercentage, verticalShowingPercentage)def ShowInternal(self):self.Base.Show()for wnd in self.Lines:wnd.Show()for wnd in self.Corners:wnd.Show()def HideInternal(self):self.Base.Hide()for wnd in self.Lines:wnd.Hide()for wnd in self.Corners:wnd.Hide()Dodaj za innymi "elif"elif Type == "border_a":parent.Children[Index] = BorderA()parent.Children[Index].SetParent(parent)self.LoadElementBorderA(parent.Children[Index], ElementValue, parent)#Dodaj zadef LoadElementBoardWithTitleBar(self, window, value, parentWindow):if False == self.CheckKeyList(value["name"], value, self.BOARD_WITH_TITLEBAR_KEY_LIST):return Falsewindow.SetSize(int(value["width"]), int(value["height"]))window.SetTitleName(value["title"])self.LoadDefaultData(window, value, parentWindow)return True//Todef LoadElementBorderA(self, window, value, parentWindow):if False == self.CheckKeyList(value["name"], value, self.BOARD_KEY_LIST):return Falsewindow.SetSize(int(value["width"]), int(value["height"]))self.LoadDefaultData(window, value, parentWindow)return TrueHaslo do archiwum:sharegon123 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Edytowane 28 Października 202528 Paź przez wojciech74
Opublikowano 24 Sierpnia 202524 Sie protip dla osób które mają starsze source typu tmp4, terenzo itp. Na starszych src żeby dodać będzie trochę zmieniany kodu (odpuściłem po 1/3 dodawania)
Opublikowano 25 Sierpnia 202525 Sie 15 godzin temu, ExoCarossa napisał(a):protip dla osób które mają starsze source typu tmp4, terenzo itp. Na starszych src żeby dodać będzie trochę zmieniany kodu (odpuściłem po 1/3 dodawania)Proszę nie odpuszczać i skończyć co Pan zaczął - pozdrawiam.
Opublikowano 26 Sierpnia 202526 Sie Autor W dniu 24.08.2025 o 18:04, ExoCarossa napisał(a):protip dla osób które mają starsze source typu tmp4, terenzo itp. Na starszych src żeby dodać będzie trochę zmieniany kodu (odpuściłem po 1/3 dodawania)Co dokładnie? Bo ja to na Martysamie robiłem i też musiałem pozmieniać parę rzeczy, za jakiś czas będę się przenosił na czyste src to wyłapię co i gdzie trzeba zrobić od zera.
Opublikowano 28 Października 202528 Paź Autor Aktualizacja(Python3)uieventmanager.py: - Konsolidacja 13 klas w 2 klasy : GenericListItem, GenericListWindow - Dynamiczne mapowanie pól wartości - pola wyświetlane od początku UI (pozycja 0,1,2,3) - DOUBLE_ eventy używają value3 z polem "Drop Lucky" na pierwszej pozycji UI - MOONLIGHT_EVENT używa value3 z polem "Drop Lucky" na pierwszej pozycji UI - Poprawka wartości DOUBLE_ event - wczytywanie selectedDropLucky z value3 - Naprawa błędu SetSelectedMapIndex - poprawna obsługa argumentów - Usunięcie ustawiania domyślnych czasów z metody Open() - Jeden UIScript dla list wyboru uieventcalendar.py: - Tooltip z wartościami DOUBLE_ event - wyświetlanie value3 (drop lucky) - Tooltip z wartością MOONLIGHT_EVENT - wyświetlanie value3 (drop lucky) - Formatowanie tooltip: "Event Name (X%)" dla eventów z drop lucky - MultiLine dla pływającej ikony(tekst w jednej lini wyjeżdżał poza okno gry, można przesunąć, ale niezbyt ładnie to wygląda) interfacemodule.py: - Naprawa synchronizacji czasów - użycie startRealTime/endRealTime zamiast sformatowanego tekstu z serwera - Konwersja timestampów na lokalny czas: time.strftime() z time.localtime() klientainterfacemodule.py def AppendEvent(self, dayIndex, eventID, eventIndex, startTime, endTime, empireFlag, channelFlag, value0, value1, value2, value3, startRealTime, endRealTime, isAlreadyStart): self.MakeEventCalendar() self.MakeEventIcon() if startRealTime != 0: startRealTime += app.GetGlobalTimeStamp() if endRealTime != 0: endRealTime += app.GetGlobalTimeStamp() import time if startRealTime != 0: correctStartTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(startRealTime)) else: correctStartTime = startTime if endRealTime != 0: correctEndTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(endRealTime)) else: correctEndTime = endTime uiEventCalendar.SetServerData(dayIndex, eventID, eventIndex, correctStartTime, correctEndTime, empireFlag, channelFlag, value0, value1, value2, value3, startRealTime, endRealTime, isAlreadyStart) uieventcalendar.py uieventmanager.py genericlistwindow.py
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto