forked from Cleako/Single-Player
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Open-RSC.cmd
253 lines (221 loc) · 6.85 KB
/
Open-RSC.cmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
@echo off
:# Open RSC: A replica RSC private server framework
:# Variable paths:
SET required="Required\"
SET mariadbpath="Required\mariadb10.3.8\bin\"
:<------------Begin Start------------>
REM Initial menu displayed to the user
:start
cls
echo:
echo What would you like to do?
echo:
echo Choices:
echo %RED%1%NC% - Run Game
echo %RED%2%NC% - Rank a player
echo %RED%3%NC% - Backup database
echo %RED%4%NC% - Restore database
echo %RED%5%NC% - Reset entire database
echo %RED%6%NC% - Exit
echo:
SET /P action=Please enter a number choice from above:
echo:
if /i "%action%"=="1" goto run
if /i "%action%"=="2" goto rank
if /i "%action%"=="3" goto backup
if /i "%action%"=="4" goto import
if /i "%action%"=="5" goto reset
if /i "%action%"=="6" goto exit
echo Error! %action% is not a valid option. Press enter to try again.
echo:
SET /P action=""
goto start
:<------------End Start------------>
:<------------Begin Exit------------>
:exit
REM Shuts down existing processes
taskkill /F /IM Java*
taskkill /F /IM mysqld*
exit
:<------------End Exit------------>
:<------------Begin Run------------>
:run
cls
echo:
echo Starting Open RSC.
echo:
cd Required && call START "" run.cmd && cd ..
echo:
goto start
:<------------End Run------------>
:<------------Begin Rank------------>
:rank
cls
echo:
echo What would you like rank a player as?
echo:
echo Choices:
echo %RED%1%NC% - Admin
echo %RED%2%NC% - Mod
echo %RED%3%NC% - Regular Player
echo %RED%4%NC% - Return
echo:
SET /P rank=Please enter a number choice from above:
echo:
if /i "%rank%"=="1" goto admin
if /i "%rank%"=="2" goto mod
if /i "%rank%"=="3" goto regular
if /i "%rank%"=="4" goto start
echo Error! %rank% is not a valid option. Press enter to try again.
echo:
SET /P rank=""
goto start
:admin
echo:
echo Make sure you are logged out first!
echo Type the username of the player you wish to set as an admin and press enter.
echo:
SET /P username=""
call START "" %mariadbpath%mysqld.exe --console
echo Player update will occur in 5 seconds (gives time to start the database server on slow PCs)
PING localhost -n 6 >NUL
call %mariadbpath%mysql.exe -uroot -proot -D openrsc -e "USE openrsc; UPDATE `openrsc_players` SET `group_id` = '1' WHERE `openrsc_players`.`username` = '%username%';"
echo:
echo %username% has been made an admin!
echo:
pause
goto start
:mod
echo:
echo Make sure you are logged out first!
echo Type the username of the player you wish to set as a mod and press enter.
echo:
SET /P username=""
call START "" %mariadbpath%mysqld.exe --console
echo Player update will occur in 5 seconds (gives time to start the database server on slow PCs)
PING localhost -n 6 >NUL
call %mariadbpath%mysql.exe -uroot -proot -D openrsc -e "USE openrsc; UPDATE `openrsc_players` SET `group_id` = '2' WHERE `openrsc_players`.`username` = '%username%';"
echo:
echo %username% has been made a mod!
echo:
pause
goto start
:regular
echo:
echo Make sure you are logged out first!
echo Type the username of the player you wish to set as a regular player and press enter.
echo:
SET /P username=""
call START "" %mariadbpath%mysqld.exe --console
echo Player update will occur in 5 seconds (gives time to start the database server on slow PCs)
PING localhost -n 6 >NUL
call %mariadbpath%mysql.exe -uroot -proot -D openrsc -e "USE openrsc; UPDATE `openrsc_players` SET `group_id` = '10' WHERE `openrsc_players`.`username` = '%username%';"
echo:
echo %username% has been made a regular player!
echo:
pause
goto start
:<------------End Rank------------>
:<------------Begin Backup------------>
:backup
REM Shuts down existing processes
taskkill /F /IM Java*
REM Performs a full database export
cls
echo:
echo What do you want to name your player database backup? (Avoid spaces and symbols for the filename)
echo:
SET /P filename=""
call START "" %mariadbpath%mysqld.exe --console
call START "" %mariadbpath%mysqldump.exe -uroot -proot --database openrsc --result-file="%filename%.sql"
echo:
echo Player database backup complete.
echo:
pause
goto start
:<------------End Backup------------>
:<------------Begin Import------------>
:import
REM Shuts down existing processes
taskkill /F /IM Java*
cls
REM Performs a full database import
echo:
dir /B *.sql
echo:
echo Which player database listed above do you wish to restore?
echo:
SET /P filename=""
call START "" %mariadbpath%mysqld.exe --console
call %mariadbpath%mysql.exe -uroot -proot openrsc < %filename%
echo:
echo Player database restore complete.
echo:
pause
goto start
:<------------End Import------------>
:<------------Begin Reset------------>
:reset
REM Shuts down existing processes
taskkill /F /IM Java*
REM Verifies the user wishes to clear existing player data
cls
echo:
echo Are you ABSOLUTELY SURE that you want to reset the player database?
echo:
echo To confirm the database reset, type yes and press enter.
echo:
SET /P confirmwipe=""
echo:
if /i "%confirmwipe%"=="yes" goto wipe
echo Error! %confirmwipe% is not a valid option.
pause
goto start
:wipe
REM Starts up the database server and imports both server and player database files to replace anything previousy existing
cls
echo:
call START "" %mariadbpath%mysqld.exe --console
echo Database wipe will occur in 5 seconds (gives time to start the database server on slow PCs)
PING localhost -n 6 >NUL
call %mariadbpath%mysql.exe -uroot -proot openrsc < Required\openrsc_game_server.sql
call %mariadbpath%mysql.exe -uroot -proot openrsc < Required\openrsc_game_players.sql
echo:
echo The player database has been reset!
echo:
pause
goto start
:<------------End Reset------------>
:<------------Begin Upgrade------------>
:upgrade
REM Shuts down existing processes
taskkill /F /IM Java*
taskkill /F /IM mysqld*
REM Fetches the most recent release version
echo:
call Required\curl -sL https://gitlab.openrsc.com/api/v4/projects/open-rsc%2Fsingle-player/releases | Required\grep "tag_name" | Required\egrep -o (ORSC-).[0-9].[0-9].[0-9] | Required\head -1 > version.txt
set /P version=<version.txt
echo %version%
REM Downloads the most recent release archive and copies the contents into "Single-Player"
cd ..
call Single-Player\Required\wget https://gitlab.openrsc.com/open-rsc/Single-Player/-/archive/%version%/Single-Player-%version%.zip
call Single-Player\Required\7za.exe x Single-Player-%version%.zip -aoa
cd Single-Player-%version%
call xcopy "*.*" "../Single-Player\" /K /D /H /Y
REM Cleans up files that are no longer needed
cd ..
call del Single-Player-%version%.zip
call rd /s /q Single-Player
call del Single-Player\version.txt
REM Launches the database server and imports only the server data, leaving player data safely alone
cd Single-Player
call START "" %mariadbpath%mysqld.exe --console
echo Database wipe will occur in 5 seconds (gives time to start the database server on slow PCs)
PING localhost -n 6 >NUL
call %mariadbpath%mysql.exe -uroot -proot < Required\openrsc_game_server.sql
echo:
echo Upgrade complete.
echo:
pause
goto start
:<------------End Upgrade------------>