Client Upload Part 1

RD Core / Commit #4

Commit Client Upload Part 1

Alex Alex committed 19/10/2026 00:04 main Patch
4,149 files +18,091 -7
A RD_Client/layouts/retro/images/ui/window_headlesss.png +0-0 View file
Binary file not shown.
A RD_Client/layouts/retro/styles/10-checkboxes.otui +66-0 View file
@@ -0,0 +1,66 @@
1+CheckBox < UICheckBox
2+ size: 12 12
3+ text-align: left
4+ text-offset: 18 -1
5+ color: #dfdfdf
6+ image-color: #dfdfdfff
7+ image-rect: 0 0 12 12
8+ image-source: /images/ui/checkbox
9+ change-cursor-image: true
10+ cursor: pointer
11+
12+ $hover !disabled:
13+ color: #ffffff
14+
15+ $!checked:
16+ image-clip: 0 0 12 12
17+
18+ $checked:
19+ image-clip: 0 12 12 12
20+
21+ $disabled:
22+ image-color: #dfdfdf88
23+ color: #dfdfdf88
24+ opacity: 0.8
25+ change-cursor-image: false
26+
27+ColorBox < UICheckBox
28+ size: 16 16
29+ image-color: #dfdfdfff
30+ image-source: /images/ui/colorbox
31+
32+ $checked:
33+ image-clip: 16 0 16 16
34+
35+ $!checked:
36+ image-clip: 0 0 16 16
37+
38+ButtonBox < UICheckBox
39+ font: verdana-11px-antialised
40+ color: white
41+ size: 106 23
42+ text-offset: 0 0
43+ text-align: center
44+ image-source: /images/ui/button
45+ image-color: #dfdfdf
46+ image-clip: 0 0 22 23
47+ image-border: 3
48+ change-cursor-image: true
49+ cursor: pointer
50+
51+ $hover !disabled:
52+ image-clip: 0 23 22 23
53+
54+ $checked:
55+ image-clip: 0 46 22 23
56+ color: white
57+ text-offset: 2 2
58+ change-cursor-image: false
59+
60+ $disabled:
61+ color: #dfdfdf88
62+ image-color: #dfdfdf88
63+ change-cursor-image: false
64+
65+ButtonBoxRounded < ButtonBox
66+ image-source: /images/ui/button_rounded
A RD_Client/layouts/retro/styles/10-comboboxes.otui +106-0 View file
@@ -0,0 +1,106 @@
1+ComboBoxPopupScrollMenuButton < UIButton
2+ height: 23
3+ font: verdana-11px-antialised
4+ text-align: left
5+ text-offset: 4 0
6+ color: #BFBFBF
7+ background-color: alpha
8+ margin: 1
9+
10+ $hover !disabled:
11+ color: #dfdfdf
12+ background-color: #595959
13+
14+ $disabled:
15+ color: #dfdfdf88
16+
17+ComboBoxPopupScrollMenu < UIPopupScrollMenu
18+ image-source: /images/ui/combobox_square
19+ image-clip: 0 69 91 23
20+ image-border: 1
21+
22+ComboBoxPopupMenuButton < UIButton
23+ height: 23
24+ font: verdana-11px-antialised
25+ text-align: left
26+ text-offset: 5 2
27+ color: #dfdfdf
28+ background-color: alpha
29+ margin: 1
30+
31+ $hover !disabled:
32+ color: #dfdfdf
33+ background-color: #355d89
34+
35+ $disabled:
36+ color: #dfdfdf88
37+
38+ComboBoxPopupMenu < UIPopupMenu
39+ image-source: /images/ui/combobox_square
40+ image-clip: 0 69 91 23
41+ image-border: 1
42+
43+ComboBox < UIComboBox
44+ font: verdana-11px-antialised
45+ color: #dfdfdf
46+ size: 91 23
47+ text-offset: 5 2
48+ text-align: left
49+ image-source: /images/ui/combobox_square
50+ image-border: 3
51+ image-border-right: 19
52+ image-clip: 0 0 91 23
53+
54+ $hover !disabled:
55+ image-clip: 0 23 91 23
56+
57+ $on:
58+ image-clip: 0 46 91 23
59+
60+ $disabled:
61+ color: #dfdfdf88
62+ opacity: 0.8
63+
64+ComboBoxRoundedPopupScrollMenuButton < UIButton
65+ height: 23
66+ font: verdana-11px-antialised
67+ text-align: left
68+ text-offset: 5 2
69+ color: #dfdfdf
70+ background-color: alpha
71+
72+ $hover !disabled:
73+ color: #ffffff
74+ background-color: #355d89
75+
76+ $disabled:
77+ color: #dfdfdf88
78+
79+ComboBoxRoundedPopupScrollMenu < UIPopupScrollMenu
80+ image-source: /images/ui/combobox_rounded
81+ image-clip: 0 69 91 23
82+ image-border: 3
83+
84+ComboBoxRoundedPopupMenuButton < UIButton
85+ height: 23
86+ font: verdana-11px-antialised
87+ text-align: left
88+ text-offset: 5 2
89+ color: #dfdfdf
90+ background-color: alpha
91+
92+ $hover !disabled:
93+ color: #ffffff
94+ background-color: #355d89
95+
96+ $disabled:
97+ color: #dfdfdf88
98+
99+ComboBoxRoundedPopupMenu < UIPopupMenu
100+ image-source: /images/ui/combobox_rounded
101+ image-clip: 0 69 91 23
102+ image-border: 3
103+
104+ComboBoxRounded < ComboBox
105+ image-source: /images/ui/combobox_rounded
106+ image-border: 3
A RD_Client/layouts/retro/styles/10-panels.otui +19-0 View file
@@ -0,0 +1,19 @@
1+Panel < UIWidget
2+ phantom: true
3+ auto-focus: first
4+
5+ScrollablePanel < UIScrollArea
6+ phantom: true
7+ auto-focus: first
8+
9+FlatPanel < Panel
10+ image-source: /images/ui/panel_flat
11+ image-border: 1
12+
13+ScrollableFlatPanel < ScrollablePanel
14+ image-source: /images/ui/panel_flat
15+ image-border: 1
16+
17+LightFlatPanel < Panel
18+ image-source: /images/ui/panel_lightflat
19+ image-border: 1
A RD_Client/layouts/retro/styles/10-progressbars.otui +38-0 View file
@@ -0,0 +1,38 @@
1+ProgressBar < UIProgressBar
2+ height: 16
3+ background-color: red
4+ image-source: /images/ui/progressbar
5+ image-border: 2
6+ font: verdana-11px-rounded
7+ text-offset: 0 2
8+
9+ $!on:
10+ visible: false
11+ margin-top: 0
12+ margin-bottom: 0
13+ height: 0
14+
15+LifeProgressBar < UIProgressBar
16+ height: 16
17+ background-color: green
18+ border: 1 black
19+ font: verdana-11px-rounded
20+ text-offset: 0 2
21+ margin: 2
22+
23+ProgressRect < UIProgressRect
24+ anchors.fill: parent
25+ phantom: true
26+ color: white
27+ background-color: #00000088
28+ font: verdana-11px-rounded
29+
30+HealthBar < ProgressBar
31+ image-source: /images/ui/progressbarhpmana
32+ image-border: 3
33+ background-color: #ff4444
34+
35+ManaBar < ProgressBar
36+ image-source: /images/ui/progressbarhpmana
37+ image-border: 4
38+ background-color: #4444ff
A RD_Client/layouts/retro/styles/10-textedits.otui +22-0 View file
@@ -0,0 +1,22 @@
1+TextEdit < UITextEdit
2+ font: verdana-11px-antialised
3+ color: white
4+ size: 86 22
5+ text-offset: 0 4
6+ opacity: 1
7+ padding: 4
8+ image-source: /images/ui/textedit
9+ image-border: 1
10+ selection-color: #272727
11+ selection-background-color: #cccccc
12+ change-cursor-image: true
13+ $disabled:
14+ color: #27272788
15+ opacity: 0.5
16+ change-cursor-image: false
17+
18+PasswordTextEdit < TextEdit
19+ text-hidden: true
20+
21+MultilineTextEdit < TextEdit
22+ multiline: true
A RD_Client/layouts/retro/styles/10-windows.otui +32-0 View file
@@ -0,0 +1,32 @@
1+Window < UIWindow
2+ font: verdana-11px-antialised
3+ size: 236 207
4+ opacity: 1
5+ color: #AFAFAF
6+ text-offset: 0 2
7+ text-align: top
8+ image-source: /images/ui/window
9+ image-border: 4
10+ image-border-top: 17
11+ padding-top: 25
12+ padding-left: 16
13+ padding-right: 16
14+ padding-bottom: 16
15+
16+ $disabled:
17+ color: #dfdfdf
18+
19+HeadlessWindow < UIWindow
20+ image-source: /images/ui/window_headless
21+ image-border: 5
22+ padding: 5
23+
24+MainWindow < Window
25+ anchors.centerIn: parent
26+
27+StaticWindow < Window
28+ &static: true
29+
30+StaticMainWindow < StaticWindow
31+ anchors.centerIn: parent
32+
A RD_Client/layouts/retro/styles/20-popupmenus.otui +83-0 View file
@@ -0,0 +1,83 @@
1+PopupMenuButton < UIButton
2+ height: 18
3+ size: 0 21
4+ text-offset: 4 2
5+ text-align: left
6+ font: verdana-11px-antialised
7+
8+ color: white
9+ background-color: alpha
10+
11+ $hover !disabled:
12+ color: #ffffff
13+ background-color: #ffffff44
14+ image-clip: 0 40 20 20
15+
16+ $disabled:
17+ color: #555555
18+
19+PopupMenuShortcutLabel < Label
20+ font: verdana-11px-antialised
21+ text-align: right
22+ anchors.fill: parent
23+ margin-right: 2
24+ margin-left: 5
25+
26+PopupMenuSeparator < UIWidget
27+ margin-left: 2
28+ margin-right: 2
29+ margin-bottom: 1
30+ image-source: /images/ui/separator_horizontal
31+ image-border-left: 1
32+ image-border-right: 1
33+ image-clip: 0 0 32 2
34+ height: 2
35+ phantom: true
36+
37+PopupMenu < UIPopupMenu
38+ width: 120
39+ image-source: /images/ui/menubox
40+ image-border: 3
41+ padding: 5
42+
43+PopupScrollMenuButton < UIButton
44+ height: 18
45+ size: 0 21
46+ text-offset: 4 0
47+ text-align: left
48+ font: verdana-11px-antialised
49+
50+ color: #aaaaaa
51+ background-color: alpha
52+
53+ $hover !disabled:
54+ color: #ffffff
55+ background-color: #ffffff44
56+ image-clip: 0 40 20 20
57+
58+ $disabled:
59+ color: #555555
60+
61+PopupScrollMenuShortcutLabel < Label
62+ font: verdana-11px-antialised
63+ text-align: right
64+ anchors.fill: parent
65+ margin-right: 2
66+ margin-left: 5
67+
68+PopupScrollMenuSeparator < UIWidget
69+ margin-left: 2
70+ margin-right: 2
71+ margin-bottom: 1
72+ image-source: /images/ui/menubox
73+ image-border-left: 1
74+ image-border-right: 1
75+ image-clip: 0 0 32 2
76+ height: 2
77+ phantom: true
78+
79+PopupScrollMenu < UIPopupScrollMenu
80+ width: 50
81+ image-source: /images/ui/menubox
82+ image-border: 3
83+ padding: 3
A RD_Client/layouts/retro/styles/20-tabbars.otui +113-0 View file
@@ -0,0 +1,113 @@
1+MoveableTabBar < UIMoveableTabBar
2+ size: 80 21
3+MoveableTabBarPanel < Panel
4+MoveableTabBarButton < UIButton
5+ size: 96 18
6+ image-source: /images/ui/tabbutton_square
7+ image-clip: 0 0 96 22
8+ image-border: 3
9+ image-border-bottom: 0
10+ color: #7F7F7F
11+ anchors.top: parent.top
12+ anchors.left: parent.left
13+ margin-top: 2
14+ padding: 3
15+
16+ $checked:
17+ image-clip: 0 36 96 22
18+ color: #dfdfdf
19+
20+ $on !checked:
21+ color: #F75F5F
22+
23+TabBar < UITabBar
24+ size: 80 21
25+ Panel
26+ id: buttonsPanel
27+ anchors.fill: parent
28+TabBarPanel < Panel
29+TabBarButton < UIButton
30+ size: 17 18
31+ image-source: /images/ui/tabbutton_square
32+ image-color: #dfdfdf
33+ image-clip: 0 0 98 18
34+ image-border: 3
35+ icon-color: #dfdfdf
36+ color: #dfdfdf
37+ anchors.top: parent.top
38+ padding: 5
39+
40+ $first:
41+ anchors.left: parent.left
42+
43+ $!first:
44+ anchors.left: prev.right
45+ margin-left: 5
46+
47+ $hover !checked:
48+ image-clip: 0 18 98 18
49+ color: #dfdfdf
50+
51+ $disabled:
52+ image-color: #dfdfdf88
53+ icon-color: #dfdfdf
54+
55+ $checked:
56+ image-clip: 0 36 98 18
57+ color: #dfdfdf
58+
59+ $on !checked:
60+ color: #de6f6f
61+
62+TabBarRounded < TabBar
63+TabBarRoundedPanel < TabBarPanel
64+TabBarRoundedButton < TabBarButton
65+ image-source: /images/ui/tabbutton_rounded
66+
67+TabBarVertical < UITabBar
68+ width: 96
69+ ScrollableFlatPanel
70+ id: buttonsPanel
71+ anchors.top: parent.top
72+ anchors.left: parent.left
73+ anchors.right: scrollBar.left
74+ anchors.bottom: parent.bottom
75+ vertical-scrollbar: scrollBar
76+ margin-right: 1
77+ padding-top: 10
78+
79+ VerticalScrollBar
80+ id: scrollBar
81+ anchors.top: parent.top
82+ anchors.bottom: parent.bottom
83+ anchors.right: parent.right
84+ step: 16
85+ pixels-scroll: true
86+ $!on:
87+ width: 0
88+
89+TabBarVerticalPanel < Panel
90+TabBarVerticalButton < UIButton
91+ size: 48 48
92+ color: #aaaaaa
93+ anchors.left: parent.left
94+ anchors.right: parent.right
95+ text-align: bottom
96+ icon-align: top
97+ icon-offset-y: 2
98+ icon-color: #888888
99+ $first:
100+ anchors.top: parent.top
101+ $!first:
102+ anchors.top: prev.bottom
103+ margin-top: 10
104+ $hover !checked:
105+ color: white
106+ icon-color: #dfdfdf
107+ $disabled:
108+ icon-color: #333333
109+ $checked:
110+ icon-color: #ffffff
111+ color: #80c7f8
112+ $on !checked:
113+ color: #F55E5E
A RD_Client/layouts/retro/styles/20-topmenu.otui +131-0 View file
@@ -0,0 +1,131 @@
1+TopButton < UIButton
2+ size: 26 26
3+ image-source: /images/ui/button_top
4+ image-clip: 0 0 26 26
5+ image-border: 3
6+ image-color: #ffffffff
7+ icon-color: #ffffffff
8+ icon-clip: 0 0 20 20
9+
10+ $on:
11+ image-source: /images/ui/button_top_blink
12+ icon-clip: 0 20 20 20
13+
14+ $hover !disabled:
15+ image-color: #ffffff99
16+ image-clip: 26 0 26 26
17+
18+ $pressed:
19+ image-clip: 52 0 26 26
20+ icon-clip: 0 20 20 20
21+
22+ $disabled:
23+ image-color: #ffffff44
24+ icon-color: #ffffff44
25+
26+TopToggleButton < UIButton
27+ size: 20 20
28+ image-source: /images/ui/button_top
29+ image-clip: 0 0 26 26
30+ image-color: #ffffffff
31+ image-border: 3
32+ icon-clip: 0 0 20 20
33+ icon-color: #ffffffff
34+
35+ $on:
36+ icon-clip: 0 20 20 20
37+
38+ $hover !disabled:
39+ image-color: #ffffff99
40+ image-clip: 26 0 26 26
41+
42+ $pressed:
43+ image-clip: 52 0 26 26
44+ icon-clip: 0 20 20 20
45+
46+ $disabled:
47+ image-color: #ffffff44
48+ icon-color: #ffffff44
49+
50+TopMenuButtonsPanel < Panel
51+ layout:
52+ type: horizontalBox
53+ spacing: 4
54+ fit-children: true
55+ padding: 6 4
56+
57+TopMenuPanel < Panel
58+ height: 36
59+ image-source: /images/ui/panel_top
60+ image-repeated: true
61+ image-border: 3
62+ image-border-top: 0
63+ focusable: false
64+
65+TopMenuFrameCounterLabel < Label
66+ font: verdana-11px-rounded
67+ color: white
68+ margin-top: 4
69+ margin-left: 5
70+
71+TopMenuPingLabel < Label
72+ font: verdana-11px-rounded
73+
74+TopMenu < TopMenuPanel
75+ id: topMenu
76+ width: 800
77+ anchors.horizontalCenter: parent.horizontalCenter
78+ anchors.top: parent.top
79+ &hideIngame: true
80+ &reverseButtons: true
81+
82+ UIWidget
83+ id: discord
84+ anchors.top: parent.top
85+ anchors.left: parent.left
86+ margin-top: 3
87+ margin-left: 5
88+ image-source: /images/ui/discord
89+
90+ Label
91+ id: discordLabel
92+ anchors.top: parent.top
93+ anchors.bottom: parent.bottom
94+ anchors.left: prev.right
95+ text-align: center
96+ margin-left: 2
97+ text-auto-resize: true
98+
99+ TopMenuButtonsPanel
100+ id: rightButtonsPanel
101+ anchors.top: parent.top
102+ anchors.bottom: parent.bottom
103+ anchors.left: prev.right
104+
105+ TopMenuButtonsPanel
106+ id: rightGameButtonsPanel
107+ anchors.top: parent.top
108+ anchors.bottom: parent.bottom
109+ anchors.left: prev.right
110+ visible: false
111+
112+ Label
113+ id: onlineLabel
114+ anchors.top: parent.top
115+ anchors.bottom: parent.bottom
116+ anchors.horizontalCenter: parent.horizontalCenter
117+ text-align: center
118+ text-auto-resize: true
119+
120+ TopMenuButtonsPanel
121+ id: leftButtonsPanel
122+ anchors.top: parent.top
123+ anchors.bottom: parent.bottom
124+ anchors.right: parent.right
125+
126+ TopMenuButtonsPanel
127+ id: leftGameButtonsPanel
128+ anchors.top: parent.top
129+ anchors.bottom: parent.bottom
130+ anchors.right: prev.left
131+ visible: false
A RD_Client/layouts/retro/styles/30-miniwindow.otui +215-0 View file
@@ -0,0 +1,215 @@
1+MiniWindow < UIMiniWindow
2+ font: verdana-11px-antialised
3+ icon-rect: 4 2 13 13
4+ icon-clip: 0 0 20 20
5+ color: #9F9F9F
6+ width: 190
7+ height: 200
8+ text-offset: 24 2
9+ text-align: topLeft
10+ image-source: /images/ui/miniwindow
11+ image-border: 4
12+ image-border-top: 20
13+ image-border-bottom: 4
14+ focusable: false
15+ &minimizedHeight: 20
16+
17+ $on:
18+ image-border-bottom: 2
19+
20+ UIWidget
21+ id: miniwindowTopBar
22+ anchors.top: parent.top
23+ anchors.right: parent.right
24+ anchors.left: parent.left
25+ margin-right: 3
26+ margin-left: 3
27+ margin-top: 3
28+ size: 258 14
29+ phantom: true
30+
31+ UIButton
32+ id: closeButton
33+ anchors.top: parent.top
34+ anchors.right: parent.right
35+ margin-top: 2
36+ margin-right: 4
37+ size: 14 14
38+ image-source: /images/ui/miniwindow_buttons
39+ image-clip: 28 0 14 14
40+
41+ $hover:
42+ image-clip: 28 14 14 14
43+
44+ $pressed:
45+ image-clip: 28 28 14 14
46+
47+ UIButton
48+ id: minimizeButton
49+ anchors.top: closeButton.top
50+ anchors.right: closeButton.left
51+ margin-right: 3
52+ size: 14 14
53+ image-source: /images/ui/miniwindow_buttons
54+ image-clip: 0 0 14 14
55+
56+ $hover:
57+ image-clip: 0 14 14 14
58+
59+ $pressed:
60+ image-clip: 0 28 14 14
61+
62+ $on:
63+ image-clip: 14 0 14 14
64+
65+ $on hover:
66+ image-clip: 14 14 14 14
67+
68+ $on pressed:
69+ image-clip: 14 28 14 14
70+
71+ UIButton
72+ id: lockButton
73+ anchors.top: minimizeButton.top
74+ anchors.right: minimizeButton.left
75+ margin-right: 2
76+ size: 14 14
77+ image-source: /images/ui/miniwindow_buttons
78+ image-clip: 98 0 14 14
79+
80+ $hover:
81+ image-clip: 98 14 14 14
82+
83+ $pressed:
84+ image-clip: 98 28 14 14
85+
86+ $on:
87+ image-clip: 84 0 14 14
88+
89+ $on hover:
90+ image-clip: 84 14 14 14
91+
92+ $on pressed:
93+ image-clip: 84 28 14 14
94+
95+ VerticalScrollBar
96+ id: miniwindowScrollBar
97+ anchors.top: parent.top
98+ anchors.bottom: parent.bottom
99+ anchors.right: parent.right
100+ step: 14
101+ margin-top: 18
102+ margin-right: 4
103+ margin-bottom: 3
104+ pixels-scroll: true
105+
106+ $!on:
107+ width: 0
108+
109+ ResizeBorder
110+ id: bottomResizeBorder
111+ anchors.bottom: parent.bottom
112+ anchors.left: parent.left
113+ anchors.right: parent.right
114+ height: 3
115+ minimum: 48
116+ margin-left: 3
117+ margin-right: 3
118+ background: #ffffff88
119+
120+MiniWindowContents < ScrollablePanel
121+ id: contentsPanel
122+ anchors.fill: parent
123+ anchors.right: miniwindowScrollBar.left
124+ margin-left: 3
125+ margin-bottom: 3
126+ margin-top: 18
127+ margin-right: 1
128+ vertical-scrollbar: miniwindowScrollBar
129+
130+HeadlessMiniWindow < UIMiniWindow
131+ font: verdana-11px-antialised
132+ icon-rect: 4 2 13 12
133+ icon-clip: 0 0 20 20
134+ color: #8F8F8F
135+ width: 190
136+ height: 200
137+ focusable: false
138+ &minimizedHeight: 20
139+
140+ $on:
141+ image-border-bottom: 2
142+
143+ $!on:
144+ text:
145+ icon:
146+
147+ UIButton
148+ id: minimizeButton
149+ anchors.top: parent.top
150+ anchors.right: parent.right
151+ margin-right: 10
152+ margin-top: 1
153+ size: 14 14
154+ image-source: /images/ui/miniwindow_buttons
155+ image-clip: 0 0 14 14
156+
157+ $hover:
158+ image-clip: 0 14 14 14
159+
160+ $pressed:
161+ image-clip: 0 28 14 14
162+
163+ $on:
164+ image-clip: 14 0 14 14
165+
166+ $on hover:
167+ image-clip: 14 14 14 14
168+
169+ $on pressed:
170+ image-clip: 14 28 14 14
171+
172+ $!on:
173+ size: 0 0
174+
175+ UIWidget
176+ id: miniwindowTopBar
177+ anchors.top: parent.top
178+ anchors.right: parent.right
179+ anchors.left: parent.left
180+ margin-right: 3
181+ margin-left: 3
182+ margin-top: 3
183+ size: 258 14
184+ phantom: true
185+
186+ UIButton
187+ id: closeButton
188+ anchors.top: parent.top
189+ anchors.right: parent.right
190+ hidden: true
191+
192+ VerticalScrollBar
193+ id: miniwindowScrollBar
194+ anchors.top: parent.top
195+ anchors.bottom: parent.bottom
196+ anchors.right: parent.right
197+ step: 14
198+ margin-top: 16
199+ margin-right: 4
200+ margin-bottom: 3
201+ pixels-scroll: true
202+
203+ $!on:
204+ width: 0
205+
206+ ResizeBorder
207+ id: bottomResizeBorder
208+ anchors.bottom: parent.bottom
209+ anchors.left: parent.left
210+ anchors.right: parent.right
211+ height: 3
212+ minimum: 48
213+ margin-left: 3
214+ margin-right: 3
215+ background: #ffffff88
A RD_Client/layouts/retro/styles/40-console.otui +219-0 View file
@@ -0,0 +1,219 @@
1+ConsoleLabel < UITextEdit
2+ font: verdana-11px-antialised
3+ height: 14
4+ color: yellow
5+ margin-left: 1
6+ text-wrap: true
7+ text-auto-resize: true
8+ selection-color: #111416
9+ selection-background-color: #808080
10+ change-cursor-image: false
11+ cursor-visible: false
12+ editable: false
13+ draggable: true
14+ selectable: false
15+ focusable: false
16+
17+ConsolePhantomLabel < UILabel
18+ font: verdana-11px-antialised
19+ height: 14
20+ color: yellow
21+ text-wrap: true
22+ text-auto-resize: true
23+ selection-color: #111416
24+ selection-background-color: #999999
25+
26+ConsoleTabBar < MoveableTabBar
27+ height: 16
28+
29+ConsoleTabBarPanel < MoveableTabBarPanel
30+ id: consoleTab
31+
32+ ScrollablePanel
33+ id: consoleBuffer
34+ anchors.fill: parent
35+ margin-right: 12
36+ vertical-scrollbar: consoleScrollBar
37+ layout:
38+ type: verticalBox
39+ align-bottom: true
40+ border-width: 1
41+ border-color: #202327
42+ background: #00000066
43+ inverted-scroll: true
44+ padding: 1
45+
46+ VerticalScrollBar
47+ id: consoleScrollBar
48+ anchors.top: parent.top
49+ anchors.bottom: parent.bottom
50+ anchors.right: parent.right
51+ step: 14
52+ pixels-scroll: true
53+
54+ConsoleTabBarButton < MoveableTabBarButton
55+ height: 16
56+ padding: 15
57+
58+ConsolePanel < Panel
59+ image-source: /images/ui/panel_bottom
60+ image-border: 7
61+ image-border-top: 29
62+
63+ $first:
64+ anchors.fill: parent
65+
66+ $!first:
67+ anchors.top: prev.bottom
68+ anchors.bottom: parent.bottom
69+ anchors.left: parent.left
70+ anchors.right: parent.right
71+
72+ CheckBox
73+ id: toggleChat
74+ !tooltip: tr('Disable chat mode, allow to walk using ASDW')
75+ anchors.left: parent.left
76+ anchors.top: parent.top
77+ margin-left: 6
78+ margin-top: 3
79+ @onCheckChange: toggleChat()
80+
81+ TabButton
82+ id: prevChannelButton
83+ icon: /images/game/console/leftarrow
84+ anchors.left: toggleChat.right
85+ anchors.top: parent.top
86+ margin-top: 1
87+ size: 16 16
88+
89+ ConsoleTabBar
90+ id: consoleTabBar
91+ anchors.left: prev.right
92+ anchors.top: parent.top
93+ anchors.right: next.left
94+ margin-top: 0
95+ tab-spacing: 2
96+ movable: true
97+
98+ TabButton
99+ id: nextChannelButton
100+ icon: /images/game/console/rightarrow
101+ anchors.right: next.left
102+ anchors.top: parent.top
103+ margin-top: 1
104+ size: 16 16
105+ margin-right: 5
106+
107+ TabButton
108+ id: closeChannelButton
109+ !tooltip: tr('Close this channel') .. ' (Ctrl+E)'
110+ icon: /images/game/console/closechannel
111+ anchors.right: next.left
112+ anchors.top: parent.top
113+ enabled: false
114+ margin-right: 5
115+ margin-top: 1
116+ size: 16 16
117+ icon-clip: 0 0 16 16
118+
119+ $pressed:
120+ icon-clip: 0 16 16 16
121+
122+ @onClick: removeCurrentTab()
123+
124+ TabButton
125+ id: clearChannelButton
126+ !tooltip: tr('Clear current message window')
127+ icon: /images/game/console/clearchannel
128+ anchors.right: next.left
129+ anchors.top: parent.top
130+ margin-right: 5
131+ margin-top: 1
132+ size: 16 16
133+ icon-clip: 0 0 16 16
134+
135+ $pressed:
136+ icon-clip: 0 16 16 16
137+
138+ @onClick: |
139+ local consoleTabBar = self:getParent():getChildById('consoleTabBar')
140+ clearChannel(consoleTabBar)
141+
142+ TabButton
143+ id: channelsButton
144+ !tooltip: tr('Open new channel') .. ' (Ctrl+O)'
145+ icon: /images/game/console/channels
146+ anchors.right: next.left
147+ anchors.top: parent.top
148+ margin-right: 5
149+ margin-top: 1
150+ size: 16 16
151+ icon-clip: 0 0 16 16
152+
153+ $pressed:
154+ icon-clip: 0 16 16 16
155+
156+ @onClick: g_game.requestChannels()
157+
158+ TabButton
159+ id: ignoreButton
160+ !tooltip: tr('Ignore players')
161+ icon: /images/game/console/ignore
162+ anchors.right: parent.right
163+ anchors.top: parent.top
164+ margin-right: 5
165+ margin-top: 1
166+ size: 16 16
167+ icon-clip: 0 0 16 16
168+
169+ $pressed:
170+ icon-clip: 0 16 16 16
171+
172+ @onClick: onClickIgnoreButton()
173+
174+ Panel
175+ id: consoleContentPanel
176+ anchors.top: consoleTabBar.bottom
177+ anchors.left: parent.left
178+ anchors.right: parent.right
179+ anchors.bottom: consoleTextEdit.top
180+ margin-left: 6
181+ margin-right: 6
182+ margin-bottom: 2
183+ margin-top: 6
184+ padding: 1
185+ focusable: false
186+ phantom: true
187+
188+ TabButton
189+ id: sayModeButton
190+ icon: /images/game/console/say
191+ !tooltip: tr('Adjust volume')
192+ &sayMode: 2
193+ size: 18 18
194+ anchors.left: parent.left
195+ anchors.bottom: parent.bottom
196+ margin-left: 8
197+ margin-bottom: 4
198+ @onClick: sayModeChange()
199+
200+ HorizontalSeparator
201+ id: separator
202+ anchors.left: parent.left
203+ anchors.right: parent.right
204+ anchors.bottom: prev.top
205+ margin-bottom: 3
206+ margin-left: 7
207+ margin-right: 7
208+
209+ TextEdit
210+ id: consoleTextEdit
211+ anchors.left: sayModeButton.right
212+ anchors.right: parent.right
213+ anchors.bottom: parent.bottom
214+ margin-right: 7
215+ margin-left: 2
216+ margin-bottom: 2
217+ shift-navigation: true
218+ max-length: 255
219+ text-auto-submit: true
A RD_Client/layouts/retro/styles/40-entergame.otui +3-0 View file
@@ -0,0 +1,3 @@
1+EnterGameWindow < StaticMainWindow
2+ !text: tr('Enter Game')
3+ size: 260 340
A RD_Client/layouts/retro/styles/40-gamebuttons.otui +16-0 View file
@@ -0,0 +1,16 @@
1+GameButtonsWindow < HeadlessMiniWindow
2+ height: 26
3+ &forceOpen: true
4+ &autoOpen: 4
5+
6+ MiniWindowContents
7+ margin-top: 2
8+
9+ Panel
10+ id: buttons
11+ anchors.fill: parent
12+ layout:
13+ type: grid
14+ cell-spacing: 3
15+ cell-size: 20 20
16+ flow: true
A RD_Client/layouts/retro/styles/40-healthinfo.otui +154-0 View file
@@ -0,0 +1,154 @@
1+ExperienceBar < ProgressBar
2+ id: experienceBar
3+ background-color: #B6E866
4+ anchors.top: prev.bottom
5+ anchors.left: parent.left
6+ anchors.right: parent.right
7+ margin: 1
8+ margin-top: 3
9+
10+SoulLabel < GameLabel
11+ id: soulLabel
12+ text-align: right
13+ color: white
14+ font: verdana-11px-rounded
15+ anchors.bottom: parent.bottom
16+ anchors.right: parent.right
17+ anchors.left: parent.horizontalCenter
18+ margin-top: 5
19+ margin-right: 3
20+ on: true
21+
22+ $!on:
23+ visible: false
24+ margin-top: 0
25+ height: 0
26+
27+CapLabel < GameLabel
28+ id: capLabel
29+ color: white
30+ font: verdana-11px-rounded
31+ anchors.bottom: parent.bottom
32+ anchors.left: parent.left
33+ anchors.right: parent.horizontalCenter
34+ margin-top: 5
35+ margin-left: 3
36+ on: true
37+
38+ $!on:
39+ visible: false
40+ margin-top: 0
41+ height: 0
42+
43+ConditionWidget < UIWidget
44+ size: 18 18
45+
46+ $!first:
47+ margin-left: 2
48+
49+HealthOverlay < UIWidget
50+ id: healthOverlay
51+ anchors.fill: parent
52+ phantom: true
53+
54+ HealthBar
55+ id: topHealthBar
56+ anchors.top: parent.top
57+ anchors.left: parent.left
58+ anchors.right: parent.horizontalCenter
59+ phantom: true
60+
61+ ManaBar
62+ id: topManaBar
63+ anchors.top: parent.top
64+ anchors.right: parent.right
65+ anchors.left: parent.horizontalCenter
66+ phantom: true
67+
68+ UIProgressBar
69+ id: healthCircle
70+ anchors.horizontalCenter: parent.horizontalCenter
71+ anchors.verticalCenter: parent.verticalCenter
72+ image-source: /images/game/circle/1left_empty
73+ margin-right: 169
74+ margin-bottom: 16
75+ opacity: 0.5
76+ phantom: true
77+
78+ UIProgressBar
79+ id: healthCircleFront
80+ anchors.horizontalCenter: parent.horizontalCenter
81+ anchors.verticalCenter: parent.verticalCenter
82+ image-source: /images/game/circle/left_full
83+ margin-right: 169
84+ margin-bottom: 16
85+ opacity: 0.5
86+ phantom: true
87+
88+ UIProgressBar
89+ id: manaCircle
90+ anchors.horizontalCenter: parent.horizontalCenter
91+ anchors.verticalCenter: parent.verticalCenter
92+ image-source: /images/game/circle/1right_empty
93+ margin-left: 130
94+ margin-bottom: 16
95+ opacity: 0.5
96+ phantom: true
97+
98+ UIProgressBar
99+ id: manaCircleFront
100+ anchors.horizontalCenter: parent.horizontalCenter
101+ anchors.verticalCenter: parent.verticalCenter
102+ image-source: /images/game/circle/right_full
103+ margin-left: 130
104+ margin-bottom: 16
105+ opacity: 0.4
106+ image-color: #0000FFFF
107+ phantom: true
108+
109+HealthInfoWindow < HeadlessMiniWindow
110+ icon:
111+ text:
112+ height: 100
113+ &forceOpen: true
114+ icon: /images/topbuttons/healthinfo
115+ !text: tr('Health Info')
116+
117+ MiniWindowContents
118+ margin-top: 2
119+
120+ HealthBar
121+ id: healthBar
122+ anchors.top: parent.top
123+ anchors.left: parent.left
124+ anchors.right: parent.right
125+ margin: 2
126+ margin-top: 0
127+ phantom: true
128+
129+ ManaBar
130+ id: manaBar
131+ anchors.top: prev.bottom
132+ anchors.left: parent.left
133+ anchors.right: parent.right
134+ margin: 2
135+ margin-bottom: 0
136+ phantom: true
137+
138+ ExperienceBar
139+ Panel
140+ id: conditionPanel
141+ layout:
142+ type: horizontalBox
143+ height: 22
144+ margin-top: 4
145+ padding: 2
146+ anchors.top: prev.bottom
147+ anchors.left: parent.left
148+ anchors.right: parent.right
149+ border-width: 1
150+ border-color: #00000077
151+ background-color: #ffffff11
152+ SoulLabel
153+ CapLabel
154+
A RD_Client/layouts/retro/styles/40-inventory.otui +333-0 View file
@@ -0,0 +1,333 @@
1+InventoryItem < Item
2+ $on:
3+ image-source: /images/ui/item-blessed
4+
5+HeadSlot < InventoryItem
6+ id: slot1
7+ image-source: /images/game/slots/head
8+ &position: {x=65535, y=1, z=0}
9+ $on:
10+ image-source: /images/game/slots/head-blessed
11+
12+BodySlot < InventoryItem
13+ id: slot4
14+ image-source: /images/game/slots/body
15+ &position: {x=65535, y=4, z=0}
16+ $on:
17+ image-source: /images/game/slots/body-blessed
18+
19+LegSlot < InventoryItem
20+ id: slot7
21+ image-source: /images/game/slots/legs
22+ &position: {x=65535, y=7, z=0}
23+ $on:
24+ image-source: /images/game/slots/legs-blessed
25+
26+FeetSlot < InventoryItem
27+ id: slot8
28+ image-source: /images/game/slots/feet
29+ &position: {x=65535, y=8, z=0}
30+ $on:
31+ image-source: /images/game/slots/feet-blessed
32+
33+NeckSlot < InventoryItem
34+ id: slot2
35+ image-source: /images/game/slots/neck
36+ &position: {x=65535, y=2, z=0}
37+ $on:
38+ image-source: /images/game/slots/neck-blessed
39+
40+LeftSlot < InventoryItem
41+ id: slot6
42+ image-source: /images/game/slots/left-hand
43+ &position: {x=65535, y=6, z=0}
44+ $on:
45+ image-source: /images/game/slots/left-hand-blessed
46+
47+FingerSlot < InventoryItem
48+ id: slot9
49+ image-source: /images/game/slots/finger
50+ &position: {x=65535, y=9, z=0}
51+ $on:
52+ image-source: /images/game/slots/finger-blessed
53+
54+BackSlot < InventoryItem
55+ id: slot3
56+ image-source: /images/game/slots/back
57+ &position: {x=65535, y=3, z=0}
58+ $on:
59+ image-source: /images/game/slots/back-blessed
60+
61+RightSlot < InventoryItem
62+ id: slot5
63+ image-source: /images/game/slots/right-hand
64+ &position: {x=65535, y=5, z=0}
65+ $on:
66+ image-source: /images/game/slots/right-hand-blessed
67+
68+AmmoSlot < InventoryItem
69+ id: slot10
70+ image-source: /images/game/slots/ammo
71+ &position: {x=65535, y=10, z=0}
72+ $on:
73+ image-source: /images/game/slots/ammo-blessed
74+
75+PurseButton < UIButton
76+ id: purseButton
77+ size: 34 12
78+ !tooltip: tr('Open purse')
79+ icon-source: /images/game/slots/purse
80+ icon-clip: 0 0 34 12
81+
82+ $on:
83+ icon-clip: 0 12 34 12
84+
85+ $pressed:
86+ icon-clip: 0 12 34 12
87+
88+CombatBox < UICheckBox
89+ size: 20 20
90+ image-clip: 0 0 20 20
91+ margin-left: 4
92+
93+ $checked:
94+ image-clip: 0 20 20 20
95+
96+
97+InventoryButton < Button
98+ height: 18
99+ margin-top: 2
100+ text-align: center
101+ font: cipsoftFont
102+ color: white
103+ size: 45 18
104+ text-offset: 2 2
105+
106+SoulCapLabel < GameLabel
107+ text-align: center
108+ color: #FFFFFF
109+ font: cipsoftFont
110+ margin-top: 4
111+ text-offset: 0 3
112+ width: 36
113+ height: 20
114+ icon-source: /images/game/slots/soulcap
115+
116+FightOffensiveBox < CombatBox
117+ image-source: /images/game/combatmodes/fightoffensive
118+FightBalancedBox < CombatBox
119+ image-source: /images/game/combatmodes/fightbalanced
120+FightDefensiveBox < CombatBox
121+ image-source: /images/game/combatmodes/fightdefensive
122+ChaseModeBox < CombatBox
123+ image-source: /images/game/combatmodes/chasemode
124+SafeFightBox < CombatBox
125+ image-source: /images/game/combatmodes/safefight
126+
127+MountButton < CombatBox
128+ image-source: /images/game/combatmodes/mount
129+
130+InventoryWindow < HeadlessMiniWindow
131+ icon: /images/topbuttons/inventory
132+ height: 178
133+ id: inventoryWindow
134+ @onClose: modules.game_inventory.onMiniWindowClose()
135+ &save: true
136+ &autoOpen: 3
137+ &forceOpen: true
138+
139+ MiniWindowContents
140+ anchors.left: parent.left
141+ margin-top: 0
142+
143+ UIButton
144+ id: minimizeButton
145+ anchors.top: parent.top
146+ anchors.left: parent.left
147+ size: 14 14
148+ image-source: /images/ui/miniwindow_buttons
149+ image-clip: 0 0 14 14
150+ margin-top: 3
151+ margin-left: 4
152+
153+ $hover:
154+ image-clip: 0 14 14 14
155+
156+ $pressed:
157+ image-clip: 0 28 14 14
158+
159+ $on:
160+ image-clip: 14 0 14 14
161+
162+ $on hover:
163+ image-clip: 14 14 14 14
164+
165+ $on pressed:
166+ image-clip: 14 28 14 14
167+
168+ @onClick: |
169+ self:getParent():getParent().minimizeButton:onClick()
170+
171+ Panel
172+ id: inventoryPanel
173+ margin-right: 63
174+ margin-top: 2
175+ anchors.fill: parent
176+
177+ HeadSlot
178+ anchors.top: parent.top
179+ anchors.horizontalCenter: parent.horizontalCenter
180+ margin-top: 3
181+
182+ BodySlot
183+ anchors.top: prev.bottom
184+ anchors.horizontalCenter: prev.horizontalCenter
185+ margin-top: 3
186+
187+ LegSlot
188+ anchors.top: prev.bottom
189+ anchors.horizontalCenter: prev.horizontalCenter
190+ margin-top: 3
191+
192+ FeetSlot
193+ anchors.top: prev.bottom
194+ anchors.horizontalCenter: prev.horizontalCenter
195+ margin-top: 3
196+
197+ NeckSlot
198+ anchors.top: slot1.top
199+ anchors.right: slot1.left
200+ margin-top: 13
201+ margin-right: 5
202+
203+ LeftSlot
204+ anchors.top: prev.bottom
205+ anchors.horizontalCenter: prev.horizontalCenter
206+ margin-top: 3
207+
208+ FingerSlot
209+ anchors.top: prev.bottom
210+ anchors.horizontalCenter: prev.horizontalCenter
211+ margin-top: 3
212+
213+ BackSlot
214+ anchors.top: slot1.top
215+ anchors.left: slot1.right
216+ margin-top: 13
217+ margin-left: 5
218+
219+ RightSlot
220+ anchors.top: prev.bottom
221+ anchors.horizontalCenter: prev.horizontalCenter
222+ margin-top: 3
223+
224+ AmmoSlot
225+ anchors.top: prev.bottom
226+ anchors.horizontalCenter: prev.horizontalCenter
227+ margin-top: 3
228+
229+ SoulCapLabel
230+ id: soulLabel
231+ anchors.top: slot10.bottom
232+ anchors.horizontalCenter: slot10.horizontalCenter
233+
234+ SoulCapLabel
235+ id: capLabel
236+ anchors.top: slot9.bottom
237+ anchors.horizontalCenter: slot9.horizontalCenter
238+
239+ PurseButton
240+ anchors.left: slot3.left
241+ anchors.bottom: slot3.top
242+ margin-bottom: 3
243+
244+ Panel
245+ id: conditionPanel
246+ layout:
247+ type: horizontalBox
248+ height: 22
249+ padding: 2
250+ anchors.top: slot8.bottom
251+ anchors.left: slot6.left
252+ anchors.right: slot5.right
253+ margin-top: 4
254+ border-width: 1
255+ border-color: #00000077
256+ background-color: #ffffff22
257+
258+ Panel
259+ margin-top: 5
260+ anchors.fill: parent
261+ anchors.left: prev.right
262+
263+ FightOffensiveBox
264+ id: fightOffensiveBox
265+ anchors.left: parent.left
266+ anchors.top: parent.top
267+ margin-left: 8
268+
269+ ChaseModeBox
270+ id: chaseModeBox
271+ anchors.left: prev.right
272+ anchors.top: parent.top
273+
274+ FightBalancedBox
275+ id: fightBalancedBox
276+ margin-top: 22
277+ anchors.left: parent.left
278+ anchors.top: parent.top
279+ margin-left: 8
280+
281+ SafeFightBox
282+ id: safeFightBox
283+ margin-top: 22
284+ anchors.left: prev.right
285+ anchors.top: parent.top
286+
287+ FightDefensiveBox
288+ id: fightDefensiveBox
289+ margin-top: 44
290+ anchors.left: parent.left
291+ anchors.top: parent.top
292+ margin-left: 8
293+
294+ MountButton
295+ id: mountButton
296+ margin-top: 44
297+ anchors.left: prev.right
298+ anchors.top: parent.top
299+
300+ Panel
301+ id: buttonsPanel
302+ margin-top: 4
303+ margin-right: 5
304+ anchors.fill: parent
305+ anchors.top: prev.bottom
306+ layout:
307+ type: verticalBox
308+
309+ UIButton
310+ id: buttonPvp
311+ height: 20
312+ icon: /images/game/combatmodes/pvp
313+ icon-clip: 0 0 42 20
314+
315+ $on:
316+ icon-clip: 0 20 42 20
317+
318+ InventoryButton
319+ !text: tr('Stop')
320+ @onClick: g_game.stop(); g_game.cancelAttackAndFollow()
321+
322+ InventoryButton
323+ !text: tr('Options')
324+ @onClick: modules.client_options.toggle()
325+
326+ InventoryButton
327+ !text: tr('Hotkeys')
328+ @onClick: modules.game_hotkeys.toggle()
329+
330+ InventoryButton
331+ !text: tr('Logout')
332+ @onClick: modules.game_interface.tryLogout()
333+
A RD_Client/layouts/retro/styles/40-minimap.otui +261-0 View file
@@ -0,0 +1,261 @@
1+MinimapFlag < UIWidget
2+ size: 11 11
3+ focusable: false
4+
5+MinimapCross < UIWidget
6+ focusable: false
7+ phantom: true
8+ image: /images/game/minimap/cross
9+ size: 16 16
10+
11+MinimapFloorUpButton < Button
12+ size: 20 20
13+ margin-right: 28
14+ margin-bottom: 28
15+ anchors.right: parent.right
16+ anchors.bottom: parent.bottom
17+ icon-source: /images/game/minimap/floor_up
18+ icon-clip: 0 32 16 16
19+ $pressed:
20+ icon-clip: 0 0 16 16
21+ $hover !pressed:
22+ icon-clip: 0 16 16 16
23+
24+MinimapFloorDownButton < Button
25+ size: 20 20
26+ margin-right: 28
27+ margin-bottom: 4
28+ anchors.right: parent.right
29+ anchors.bottom: parent.bottom
30+ icon-source: /images/game/minimap/floor_down
31+ icon-clip: 0 32 16 16
32+ $pressed:
33+ icon-clip: 0 0 16 16
34+ $hover !pressed:
35+ icon-clip: 0 16 16 16
36+
37+MinimapZoomInButton < Button
38+ text: +
39+ size: 20 20
40+ margin-right: 4
41+ margin-bottom: 28
42+ anchors.right: parent.right
43+ anchors.bottom: parent.bottom
44+ //icon-source: /images/game/minimap/zoom_in
45+
46+MinimapZoomOutButton < Button
47+ text: -
48+ size: 20 20
49+ margin-right: 4
50+ margin-bottom: 4
51+ anchors.right: parent.right
52+ anchors.bottom: parent.bottom
53+ //icon-source: /images/game/minimap/zoom_out
54+
55+MinimapResetButton < Button
56+ !text: tr('Center')
57+ size: 44 20
58+ anchors.left: parent.left
59+ anchors.top: parent.top
60+ margin: 4
61+
62+Minimap < UIMinimap
63+ draggable: true
64+ focusable: false
65+ cross: true
66+ color: black
67+
68+ MinimapFloorUpButton
69+ id: floorUpWidget
70+ @onClick: self:getParent():floorUp(1)
71+
72+ MinimapFloorDownButton
73+ id: floorDownWidget
74+ @onClick: self:getParent():floorDown(1)
75+
76+ MinimapZoomInButton
77+ id: zoomInWidget
78+ @onClick: self:getParent():zoomIn()
79+
80+ MinimapZoomOutButton
81+ id: zoomOutWidget
82+ @onClick: self:getParent():zoomOut()
83+
84+ MinimapResetButton
85+ id: resetWidget
86+ @onClick: self:getParent():reset()
87+
88+
89+// Minimap Flag Create Window
90+
91+
92+MinimapFlagCheckBox < CheckBox
93+ size: 15 15
94+ margin-left: 2
95+ image-source: /images/game/minimap/flagcheckbox
96+ image-size: 15 15
97+ image-border: 3
98+ icon-source: /images/game/minimap/mapflags
99+ icon-size: 11 11
100+ icon-offset: 2 4
101+ anchors.left: prev.right
102+ anchors.top: prev.top
103+ $!checked:
104+ image-clip: 26 0 26 26
105+ $hover !checked:
106+ image-clip: 78 0 26 26
107+ $checked:
108+ image-clip: 0 0 26 26
109+ $hover checked:
110+ image-clip: 52 0 26 26
111+
112+MinimapFlagWindow < MainWindow
113+ !text: tr('Create Map Mark')
114+ size: 196 185
115+
116+ Label
117+ !text: tr('Position') .. ':'
118+ text-auto-resize: true
119+ anchors.top: parent.top
120+ anchors.left: parent.left
121+ margin-top: 2
122+
123+ Label
124+ id: position
125+ text-auto-resize: true
126+ anchors.top: parent.top
127+ anchors.right: parent.right
128+ margin-top: 2
129+
130+ Label
131+ !text: tr('Description') .. ':'
132+ anchors.left: parent.left
133+ anchors.top: prev.bottom
134+ margin-top: 7
135+
136+ TextEdit
137+ id: description
138+ margin-top: 3
139+ anchors.left: parent.left
140+ anchors.top: prev.bottom
141+ anchors.right: parent.right
142+
143+ MinimapFlagCheckBox
144+ id: flag0
145+ icon-source: /images/game/minimap/flag0
146+ anchors.left: parent.left
147+ anchors.top: prev.bottom
148+ margin-top: 6
149+ margin-left: 0
150+
151+ MinimapFlagCheckBox
152+ id: flag1
153+ icon-source: /images/game/minimap/flag1
154+
155+ MinimapFlagCheckBox
156+ id: flag2
157+ icon-source: /images/game/minimap/flag2
158+
159+ MinimapFlagCheckBox
160+ id: flag3
161+ icon-source: /images/game/minimap/flag3
162+
163+ MinimapFlagCheckBox
164+ id: flag4
165+ icon-source: /images/game/minimap/flag4
166+
167+ MinimapFlagCheckBox
168+ id: flag5
169+ icon-source: /images/game/minimap/flag5
170+
171+ MinimapFlagCheckBox
172+ id: flag6
173+ icon-source: /images/game/minimap/flag6
174+
175+ MinimapFlagCheckBox
176+ id: flag7
177+ icon-source: /images/game/minimap/flag7
178+
179+ MinimapFlagCheckBox
180+ id: flag8
181+ icon-source: /images/game/minimap/flag8
182+
183+ MinimapFlagCheckBox
184+ id: flag9
185+ icon-source: /images/game/minimap/flag9
186+
187+ MinimapFlagCheckBox
188+ id: flag10
189+ icon-source: /images/game/minimap/flag10
190+ anchors.left: parent.left
191+ anchors.top: prev.bottom
192+ margin-top: 6
193+ margin-left: 0
194+
195+ MinimapFlagCheckBox
196+ id: flag11
197+ icon-source: /images/game/minimap/flag11
198+
199+ MinimapFlagCheckBox
200+ id: flag12
201+ icon-source: /images/game/minimap/flag12
202+
203+ MinimapFlagCheckBox
204+ id: flag13
205+ icon-source: /images/game/minimap/flag13
206+
207+ MinimapFlagCheckBox
208+ id: flag14
209+ icon-source: /images/game/minimap/flag14
210+
211+ MinimapFlagCheckBox
212+ id: flag15
213+ icon-source: /images/game/minimap/flag15
214+
215+ MinimapFlagCheckBox
216+ id: flag16
217+ icon-source: /images/game/minimap/flag16
218+
219+ MinimapFlagCheckBox
220+ id: flag17
221+ icon-source: /images/game/minimap/flag17
222+
223+ MinimapFlagCheckBox
224+ id: flag18
225+ icon-source: /images/game/minimap/flag18
226+
227+ MinimapFlagCheckBox
228+ id: flag19
229+ icon-source: /images/game/minimap/flag19
230+
231+ Button
232+ id: okButton
233+ !text: tr('Ok')
234+ width: 64
235+ anchors.right: next.left
236+ anchors.bottom: parent.bottom
237+ margin-right: 10
238+
239+ Button
240+ id: cancelButton
241+ !text: tr('Cancel')
242+ width: 64
243+ anchors.right: parent.right
244+ anchors.bottom: parent.bottom
245+
246+MinimapWindow < HeadlessMiniWindow
247+ height: 150
248+ &forceOpen: true
249+
250+ MiniWindowContents
251+ margin: 5
252+
253+ Minimap
254+ id: minimap
255+ anchors.fill: parent
256+
257+ ResizeBorder
258+ anchors.right: parent.right
259+ anchors.top: parent.top
260+ anchors.bottom: parent.bottom
261+ enabled: true
A RD_Client/mods/game_partyIcons/icons.lua +94-0 View file
@@ -0,0 +1,94 @@
1+local OPCODE_PARTY = 160
2+
3+local minimap = modules.game_minimap
4+local minimapWidget = nil
5+
6+-- Table for storing party members widgets
7+local partyMembers = {}
8+
9+function init()
10+ print("Party Icons Loaded")
11+ g_ui.displayUI('icons')
12+ minimapWidget = minimap.minimapWindow:recursiveGetChildById('minimap')
13+ ProtocolGame.registerExtendedOpcode(OPCODE_PARTY, onPartyUpdate)
14+end
15+
16+function terminate()
17+ ProtocolGame.unregisterExtendedOpcode(OPCODE_PARTY, onPartyUpdate)
18+end
19+
20+function getIconByVocation(vocation)
21+ if vocation == 0 then
22+ return "icons/None"
23+ elseif vocation == 1 then
24+ return "icons/Knight"
25+ elseif vocation == 2 then
26+ return "icons/Paladin"
27+ elseif vocation == 3 then
28+ return "icons/Druid"
29+ elseif vocation == 4 then
30+ return "icons/Sorcerer"
31+ else
32+ return "icons/None"
33+ end
34+end
35+
36+function onPartyUpdate(protocol, opcode, buffer)
37+ print("OnPartyUpdate Called")
38+ local status, data =
39+ pcall(
40+ function()
41+ return json.decode(buffer)
42+ end
43+ )
44+
45+ if not status then
46+ return false
47+ end
48+
49+ if (data.type == "join") then
50+ for _, member in pairs(data.members) do
51+ print(member.name)
52+ if (member.name ~= g_game.getLocalPlayer():getName()) then
53+ if not partyMembers[member.name] then
54+ local widget = g_ui.createWidget("PlayerIcon", minimapWidget)
55+ widget:setImageSource(getIconByVocation(member.vocation))
56+ widget.name:setText(member.name)
57+ partyMembers[member.name] = widget
58+ minimapWidget:centerInPosition(widget, member.pos)
59+ widget.name:setMarginTop(-15)
60+ minimapWidget:centerInPosition(widget.name, member.pos)
61+ end
62+ end
63+ end
64+ return
65+ end
66+
67+
68+ if (data.type == "update") then
69+ if partyMembers[data.player.name] then
70+ local widget = partyMembers[data.player.name]
71+ local pos = data.player.pos
72+ pos.z = minimapWidget:getCameraPosition().z
73+ minimapWidget:centerInPosition(widget, data.player.pos)
74+ widget.name:setMarginTop(-15)
75+ minimapWidget:centerInPosition(widget.name, data.player.pos)
76+ end
77+ return
78+ end
79+
80+ if (data.type == "leave") then
81+ if (data.name == g_game.getLocalPlayer():getName()) then
82+ for _, member in pairs(partyMembers) do
83+ member:destroy()
84+ end
85+ partyMembers = {}
86+ end
87+ else
88+ if partyMembers[data.name] then
89+ partyMembers[data.name]:destroy()
90+ partyMembers[data.name] = nil
91+ end
92+ end
93+ return
94+end
A RD_Client/mods/game_partyIcons/Icons.otmod +11-0 View file
@@ -0,0 +1,11 @@
1+Module
2+ name: partyIcons
3+ description: Displays the name and an icon of party members on your minimap
4+ author: Rekzai
5+ website: none
6+ sandboxed: true
7+ autoload: true
8+ autoload-priority: 1001
9+ scripts: [ icons.lua ]
10+ @onLoad: init()
11+ @onUnload: terminate()
A RD_Client/mods/game_partyIcons/icons.otui +13-0 View file
@@ -0,0 +1,13 @@
1+PlayerIcon < UIWidget
2+ id: icon
3+ focusable: false
4+ phantom: true
5+ size: 21 21
6+
7+ Label
8+ id: name
9+ width: 80
10+ color: #6176ff
11+ font: verdana-11px-rounded
12+ text-align: center
13+ text: Rekzai
A RD_Client/mods/game_partyIcons/icons/Druid.png +0-0 View file
Binary file not shown.
A RD_Client/mods/game_partyIcons/icons/Knight.png +0-0 View file
Binary file not shown.
A RD_Client/mods/game_partyIcons/icons/None.png +0-0 View file
Binary file not shown.
A RD_Client/mods/game_partyIcons/icons/Paladin.png +0-0 View file
Binary file not shown.
Top