Homework
{if;==;help;{lower;{args;0}};
**__Variable backup and restore system:__**
**1.** You must run this tag in an `{lb}exec{rb}`
**2.** The arguments used are {lb}exec{semi}<varlist|backup|restore|delete> var_name [-o] [description|backup_name]{rb}
**2.1.** {lb}exec{semi}backup var_name [-o] description{rb}
**2.2.** {lb}exec{semi}restore var_name backup_name{rb}
**2.3.** {lb}exec{semi}delete backup_name{rb}
**2.4.** {lb}exec{semi}varlist{rb}
**3.** The variable type you're using must be specified if there's any.
**4.** The `-o` flag specifies if the latest backup gets overwritten instead.
**5.** `backup_name` __will only be__ used when restoring. backups are automatically named.
**6.** `description` __will only be__ used when making a backup. This is only optional.
**7.** The tag will always output messages. If you don't want a message outputted when you do a backup (like a regular backup system), do a {lb}void{rb}.
{return}
}
{if;{get;@exec};
{if;!=;1;{get;@{userid}admin};
:x: Please run this tag in an `{lb}exec{rb}`. Do `{prefix}t backup help` for more help.
{return}
}
}
{if;==;;{args};
:x: Please provide enough arguments! Do `{prefix}t backup help` for more help.
{return}
}
{switch;{lower;{args;0}};
varlist;
```js
{if;==;;{get;@varlist};Empty;{get;@varlistname}}```
backup;
{if;<;{argslength};2;
:x: Please provide enough arguments! Do `{prefix}t backup help` for more help.
{return}
}
{if;==;;{get;{args;1}};
:x: Variable is empty! Terminating...
{return};
{set;~var;{args;1}}
}
{if;==;-o;{lower;{args;2}};
{if;==;;{get;@latestbak#{get;~var}};
{set;~name;{base;{time;x};16}}
{set;@bak#{get;~name};{get;{get;~var}}}
{set;~desc;
{if;<;{argslength};4;
Empty;
{regexreplace;{args;3;n};/`/gm;`}
}
}
{if;==;;{get;@varlistname};
{set;@varlistnamecnt;1}
{set;@varlistname;
{pad;right;{space;4};{get;@varlistnamecount}.} {pad;right;{space;16};{get;~name}} | {get;~desc}
};
{void;{increment;{get;@varlistnamecnt}}}
{set;@varlistname;
{get;@varlistname}{newline}{pad;right;{space;4};{get;@varlistnamecount}.} {pad;right;{space;15};{get;~name}} | {get;~desc}
}
}
**Made a backup named `{get;~name}` from `{get;~var}`.**;
{set;@bak#{get;@latestbak#{get;~var}};{get;{get;~var}}}
**Overwritten the backup named `{get;@latestbak#{get;~var}}` from `{get;~var}`.**
};
{set;~name;{base;{time;x};16}}
{set;@bak#{get;~name};{get;{get;~var}}}
{set;~desc;
{if;<;{argslength};3;
Empty;
{regexreplace;{args;2;n};/`/gm;`}
}
}
{set;@latestbak#{get;~var};{get;~name}}
{if;==;;{get;@varlistname};
{set;@varlistnamecnt;1}
{set;@varlistname;
{pad;right;{space;4};{get;@varlistnamecount}.} {pad;right;{space;16};{get;~name}} | {get;~desc}
};
{void;{increment;{get;@varlistnamecnt}}}
{set;@varlistname;
{get;@varlistname}{newline}{pad;right;{space;4};{get;@varlistnamecount}.} {pad;right;{space;15};{get;~name}} | {get;~desc}
}
}
**Made a backup named `{get;~name}` from `{get;~var}`.**
}
restore;
{if;<;{argslength};3;
{switch;{argslength};
0;:x: Please provide enough arguments! Do `{prefix}t backup help` for more help.;
1;:x: Please provide a var_name! Do `{prefix}t backup help` for more help.;
2;:x: Please provide a backup_name! Do `{prefix}t backup help` for more help.
}
{return}
}
{if;==;;{get;@bak#{args;2}};
:x: Backup is empty!
{return}
}
{set;{args;1};{get;@bak#{args;2}}}
Restored backup `{args;2}` to `{args;1}`.;
Wrong arguments! Do `{prefix}t backup help` for more help.
{return}
}
{if;==;help;{lower;{args;0}};
**__Leaderboards System Module:__**
**1.** You must run this tag in an `{lb}exec{rb}`
**2.** The arguments used are: ```js
{lb}set{semi}var_name{semi}`name`{rb}
{lb}set{semi}leaderboard_name{semi}`name`{rb}
{lb}set{semi}id{semi}true|false{rb}
{lb}set{semi}d{semi}true|false{rb}
{lb}set{semi}crlength{semi}21{rb}
{fallback;}
{lb}exec{semi}[page_no]{rb}```
**3.** The `var_name` is the variable name of your credits such as `{userid}credits`
**4.** The `leaderderboard_name` is the name of the leaderboard variable that will be used.
**5.** The `-d` flag specifies if debugging is turned on, and will always output a message.
**6.** The `-id` flat specitied if the user ID is included in the leaderboards.
**7.** The page_no is optional, it defaults to 1.
**8.** You must do `{prefix}t test {lb}set{semi}crlength{semi}21{rb}` or the number in which your variable length goes. If it's `5` and user has `600` credits, it becomes `00600`. If it's not specified, it turns to 21 by default.
{return}
}
{if;{get;@exec};
{if;!=;1;{get;@{userid}admin};
:x: Please run this tag in an `{lb}exec{rb}`. Do `{prefix}t ldmodule help` for more help.
{return}
}
}
{void;
{if;!=;{get;o{get;var_name};{get;{get;var_name}};
{set;o{var_name};{get;{get;{var_name}}}}
{set;@0;{regexreplace;{get;@ldboard};/(\d+#)(\d{1,18})/g;$2}}
{if;==;-1;{indexof;{get;@0};{userid}};{push;@ldboard;{get;@{userid}credits}#{userid}}}{if;>;{length;{get;@{userid}credits}};{get;@crlength};{set;@crlength;{length;{get;@{userid}credits}}}}{set;nw;{pad;left;{repeat;0;{get;@crlength}};0{get;@{userid}credits}}}{inject;{lb}set{semi}@ldboard{semi}{lb}regexreplace{semi}{lb}get{semi}@ldboard{rb}{semi}/\d+(?=#{userid})/g{semi}{get;nw}{rb}{rb}}
{sort;{get;@ldboard};descending}
{set;@{userid}ocredits;{get;@{userid}credits}}}{set;~mx;{length;{get;@0}}}{set;~maxpg;{ceil;{math;/;{get;~mx};10}}}{set;~pg;
{if;==;0;{argslength};1;
{if;==;NaN;{parseint;{args;0}};1;
{if;>;{args;0};{get;~maxpg};{get;~maxpg};
{if;==;0;{floor;{args;0}};1;
{abs;{floor;{args;0}}}
}}}}}{set;~mg;{math;*;10;{math;-;{get;~pg};1}}}
{set;@0;{slice;{regexreplace;{get;@ldboard};/\d+#(\d{1,18})/g;$1};{get;~mg};{math;+;10;{get;~mg}}}}
{set;@1;{slice;{get;@0};{math;+;0;{get;mg}};{math;+;1;{get;mg}}}}
{set;@2;{slice;{get;@0};{math;+;1;{get;mg}};{math;+;2;{get;mg}}}}
{set;@3;{slice;{get;@0};{math;+;2;{get;mg}};{math;+;3;{get;mg}}}}
{set;@4;{slice;{get;@0};{math;+;3;{get;mg}};{math;+;4;{get;mg}}}}
{set;@5;{slice;{get;@0};{math;+;4;{get;mg}};{math;+;5;{get;mg}}}}
{set;@6;{slice;{get;@0};{math;+;5;{get;mg}};{math;+;6;{get;mg}}}}
{set;@7;{slice;{get;@0};{math;+;6;{get;mg}};{math;+;7;{get;mg}}}}
{set;@8;{slice;{get;@0};{math;+;7;{get;mg}};{math;+;8;{get;mg}}}}
{set;@9;{slice;{get;@0};{math;+;8;{get;mg}};{math;+;9;{get;mg}}}}
{set;@10;{slice;{get;@0};{math;+;9;{get;mg}};{math;+;10;{get;mg}}}}{set;@id;{if;==;1;{get;@{userid}admin};1;0}}}```py
📋 Rank | Name
{trim;{if;==;1;{length;{get;@1}};{if;>=;17;{length;{get;@1}};{pad;right;{space;9};[{math;+;1;{get;mg}}]}> #{username;{get;@1}} {if;==;1;{get;@id};({get;@1})}
{space;2}Credits: {get;@{get;@1}credits}}}
{if;==;1;{length;{get;@2}};{if;>=;17;{length;{get;@2}};{pad;right;{space;9};[{math;+;2;{get;mg}}]}> #{username;{get;@2}} {if;==;1;{get;@id};({get;@2})}
{space;2}Credits: {get;@{get;@2}credits}}}
{if;==;1;{length;{get;@3}};{if;>=;17;{length;{get;@3}};{pad;right;{space;9};[{math;+;3;{get;mg}}]}> #{username;{get;@3}} {if;==;1;{get;@id};({get;@3})}
{space;2}Credits: {get;@{get;@3}credits}}}
{if;==;1;{length;{get;@4}};{if;>=;17;{length;{get;@4}};{pad;right;{space;9};[{math;+;4;{get;mg}}]}> #{username;{get;@4}} {if;==;1;{get;@id};({get;@4})}
{space;2}Credits: {get;@{get;@4}credits}}}
{if;==;1;{length;{get;@5}};{if;>=;17;{length;{get;@5}};{pad;right;{space;9};[{math;+;5;{get;mg}}]}> #{username;{get;@5}} {if;==;1;{get;@id};({get;@5})}
{space;2}Credits: {get;@{get;@5}credits}}}
{if;==;1;{length;{get;@6}};{if;>=;17;{length;{get;@6}};{pad;right;{space;9};[{math;+;6;{get;mg}}]}> #{username;{get;@6}} {if;==;1;{get;@id};({get;@6})}
{space;2}Credits: {get;@{get;@6}credits}}}
{if;==;1;{length;{get;@7}};{if;>=;17;{length;{get;@7}};{pad;right;{space;9};[{math;+;7;{get;mg}}]}> #{username;{get;@7}} {if;==;1;{get;@id};({get;@7})}
{space;2}Credits: {get;@{get;@7}credits}}}
{if;==;1;{length;{get;@8}};{if;>=;17;{length;{get;@8}};{pad;right;{space;9};[{math;+;8;{get;mg}}]}> #{username;{get;@8}} {if;==;1;{get;@id};({get;@8})}
{space;2}Credits: {get;@{get;@8}credits}}}
{if;==;1;{length;{get;@9}};{if;>=;17;{length;{get;@9}};{pad;right;{space;9};[{math;+;9;{get;mg}}]}> #{username;{get;@9}} {if;==;1;{get;@id};({get;@9})}
{space;2}Credits: {get;@{get;@9}credits}}}
{if;==;1;{length;{get;@10}};{if;>=;17;{length;{get;@10}};{pad;right;{space;9};[{math;+;10;{get;mg}}]{space;5}> #{username;{get;@10}} {if;==;1;{get;@id};({get;@10})}
{space;2}Credits: {get;@{get;@10}credits}}}}
-------------------------------------
# Your Credits: {get;@{userid}credits}
😐 Rank: {math;+;1;{indexof;{get;@0};{userid}}}/{get;~mx}```