@@ -17,15 +17,9 @@ public static void Initialize()
1717
1818 // Init Commands
1919 TShockAPI . Commands . ChatCommands . Add ( new Command ( Permissions . Rank , Rank , "rank" , "level" )
20- {
21- AllowServer = false ,
22- HelpText = "Rank commands:\n up - Rank up to the next level\n down - Rank down to the previous level"
23- } ) ;
24-
25- TShockAPI . Commands . ChatCommands . Add ( new Command ( Permissions . RankUtils , RankUtils , "rankutils" )
2620 {
2721 AllowServer = true ,
28- HelpText = "Rank Utils commands:\n info <rank> - Get information about a rank\n list - List all available ranks"
22+ HelpText = "Rank commands:\n up - Rank up to the next level \n down - Rank down to the previous level \ n info <rank name > - Get information about a rank\n list - List all available ranks"
2923 } ) ;
3024
3125 TShockAPI . Commands . ChatCommands . Add ( new Command ( Permissions . ResetRank , ResetRank , "resetrank" )
@@ -51,14 +45,21 @@ private static void Rank(CommandArgs args)
5145 {
5246 try
5347 {
54- string usage = "Usage: /rank <up/down>" ;
48+ string usage = "Usage: /rank <up/down/info/list >" ;
5549
5650 if ( args . Parameters . Count == 0 )
5751 {
5852 args . Player . SendErrorMessage ( usage ) ;
5953 return ;
6054 }
6155
56+ // Check if the player is from rank group
57+ if ( ( args . Parameters [ 0 ] == "up" || args . Parameters [ 0 ] == "down" ) && ! args . Player . Group . Name . StartsWith ( "rank_" ) && args . Player . Group . Name != TShock . Config . Settings . DefaultRegistrationGroupName )
58+ {
59+ args . Player . SendErrorMessage ( "You are not in a rank group." ) ;
60+ return ;
61+ }
62+
6263 if ( args . Parameters [ 0 ] == "up" )
6364 {
6465 if ( ! Utils . Util . CheckPermission ( Permissions . RankUp , args ) ) return ;
@@ -80,7 +81,7 @@ private static void Rank(CommandArgs args)
8081
8182 // Check user balance
8283 long balance = database . GetBalance ( args . Player . Name ) ;
83- int rankCost = rankConfig . Ranks [ nextRank ] . Cost ;
84+ long rankCost = rankConfig . Ranks [ nextRank ] . Cost ;
8485
8586 if ( balance < rankCost )
8687 {
@@ -147,7 +148,7 @@ private static void Rank(CommandArgs args)
147148 {
148149 string nextRank = GetRankByIndex ( nextIndex ) ;
149150
150- int rankCost = rankConfig . Ranks [ GetRankByIndex ( nextIndex ) ] . Cost ;
151+ long rankCost = rankConfig . Ranks [ GetRankByIndex ( nextIndex ) ] . Cost ;
151152
152153 database . AddBalance ( args . Player . Name , rankCost ) ;
153154 Skynomi . Database . CacheManager . Cache . GetCache < Database . TRank > ( "Ranks" ) . Modify ( args . Player . Name , e =>
@@ -163,33 +164,10 @@ private static void Rank(CommandArgs args)
163164 args . Player . SendErrorMessage ( "You are already at the lowest rank." ) ;
164165 }
165166 }
166- else
167- {
168- args . Player . SendErrorMessage ( usage ) ;
169- }
170- }
171- catch ( Exception ex )
172- {
173- Utils . Log . Error ( ex . ToString ( ) ) ;
174- }
175-
176- }
177-
178- private static void RankUtils ( CommandArgs args )
179- {
180- try
181- {
182- string usage = "Usage: /rankutils <info/list>" ;
183- if ( args . Parameters . Count == 0 )
184- {
185- args . Player . SendErrorMessage ( usage ) ;
186- return ;
187- }
188-
189- if ( args . Parameters [ 0 ] == "info" )
167+ else if ( args . Parameters [ 0 ] == "info" )
190168 {
191169 if ( ! Utils . Util . CheckPermission ( Permissions . RankInfo , args ) ) return ;
192- string infoUsage = "Usage: /rankutils info <rank>" ;
170+ string infoUsage = "Usage: /rank info <rank name >" ;
193171
194172 if ( args . Parameters . Count < 2 )
195173 {
@@ -201,16 +179,42 @@ private static void RankUtils(CommandArgs args)
201179 if ( rankConfig . Ranks . ContainsKey ( rank ) )
202180 {
203181 string rankPrefix = rankConfig . Ranks [ rank ] . Prefix ;
182+ if ( string . IsNullOrEmpty ( rankPrefix ) )
183+ {
184+ rankPrefix = "-" ;
185+ }
186+
204187 string rankSuffix = rankConfig . Ranks [ rank ] . Suffix ;
188+ if ( string . IsNullOrEmpty ( rankSuffix ) )
189+ {
190+ rankSuffix = "-" ;
191+ }
192+
205193 int [ ] ChatColor = rankConfig . Ranks [ rank ] . ChatColor ;
194+
206195 string hex = $ "{ ChatColor [ 0 ] : X2} { ChatColor [ 1 ] : X2} { ChatColor [ 2 ] : X2} ";
196+
207197 string formattedColor = $ "[c/{ hex } :Hello]";
208- int rankCost = rankConfig . Ranks [ rank ] . Cost ;
198+
199+ long rankCost = rankConfig . Ranks [ rank ] . Cost ;
200+
209201 string rankPermission = rankConfig . Ranks [ rank ] . Permission ;
202+ if ( string . IsNullOrEmpty ( rankPermission ) )
203+ {
204+ rankPermission = "-" ;
205+ }
206+
210207 string rankReward = "" ;
211- foreach ( var item in rankConfig . Ranks [ rank ] . Rewards )
208+ if ( rankConfig . Ranks [ rank ] . Rewards . Count == 0 )
212209 {
213- rankReward += $ "[i/s{ item . Value } :{ item . Key } ] ";
210+ rankReward = "-" ;
211+ }
212+ else
213+ {
214+ foreach ( var item in rankConfig . Ranks [ rank ] . Rewards )
215+ {
216+ rankReward += $ "[i/s{ item . Value } :{ item . Key } ] ";
217+ }
214218 }
215219
216220 string detail = $ "[c/00FF00:=== Rank Details ===]\n " +
@@ -219,7 +223,7 @@ private static void RankUtils(CommandArgs args)
219223 $ "[c/0000FF:Suffix:] { rankSuffix } \n " +
220224 $ "[c/0000FF:Chat Color:] { formattedColor } ([c/{ hex } :#{ hex } ])\n " +
221225 $ "[c/0000FF:Cost:] { Utils . Util . CurrencyFormat ( rankCost ) } \n " +
222- $ "[c/0000FF:Permissioon :] { rankPermission } \n " +
226+ $ "[c/0000FF:Permission :] { rankPermission } \n " +
223227 $ "[c/0000FF:Reward:] { rankReward } ";
224228
225229 args . Player . SendMessage ( detail , Color . White ) ;
@@ -232,15 +236,23 @@ private static void RankUtils(CommandArgs args)
232236 else if ( args . Parameters [ 0 ] == "list" )
233237 {
234238 if ( ! Utils . Util . CheckPermission ( Permissions . RankList , args ) ) return ;
239+ if ( rankConfig . Ranks . Count == 0 )
240+ {
241+ args . Player . SendErrorMessage ( "No ranks available." ) ;
242+ return ;
243+ }
235244
236- string text = "Rank List:" ;
237- args . Player . SendSuccessMessage ( text ) ;
238- text = "" ;
245+ string text = "[c/00FF00:=== Rank List ===]" ;
246+ int counter = 1 ;
239247 foreach ( var rank in rankConfig . Ranks )
240248 {
241- text += $ "\" { rank . Key } \" ";
249+ int [ ] ChatColor = rank . Value . ChatColor ;
250+ string hex = $ "{ ChatColor [ 0 ] : X2} { ChatColor [ 1 ] : X2} { ChatColor [ 2 ] : X2} ";
251+
252+ text += $ "\n { counter } . [c/{ hex } :{ rank . Key } ]";
253+ counter ++ ;
242254 }
243- args . Player . SendInfoMessage ( text ) ;
255+ args . Player . SendMessage ( text , Color . White ) ;
244256 }
245257 else
246258 {
@@ -251,6 +263,7 @@ private static void RankUtils(CommandArgs args)
251263 {
252264 Utils . Log . Error ( ex . ToString ( ) ) ;
253265 }
266+
254267 }
255268
256269 private static void ResetRank ( CommandArgs args )
@@ -288,7 +301,7 @@ private static void ResetRank(CommandArgs args)
288301 args . Player . SendSuccessMessage ( "All players rank has been reset." ) ;
289302 return ;
290303 }
291-
304+
292305 var player = TSPlayer . FindByNameOrID ( who ) . FirstOrDefault ( x => x != null && x . Name . Equals ( who , StringComparison . OrdinalIgnoreCase ) ) ;
293306 if ( player != null )
294307 {
0 commit comments