★ GiveAll ★ [1.8 - 1.12] [GUI] [100% customizable]

Script ★ GiveAll ★ [1.8 - 1.12] [GUI] [100% customizable] Beta 4.3

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

Contributors
noftaly
Supported Minecraft Versions
  1. 1.8
  2. 1.9
  3. 1.10
  4. 1.11
  5. 1.12
I’m french, so sorry for the errors. If in the configuration or in the description there is errors, please let me know (via PM) and I will correct them.

Betas 3.1 and before works perfectly on 1.8.x, 1.9.x, 1.10.x, 1.11.x, 1.12.x
(thanks to @gamingshow and @Mikioul for the test)

Betas 3.2 and over were not tested in 1.11.x, 1.10.x, 1.9.x, 1.8.x, but I think they will work


Une version française (description/configuration) est disponible ici

1515170022-banniere-ga.png


Description

GiveAll is a skript with allows you to create GiveAll, to give items to your players ! You can create events where your players win some stuff ! All the messages are customizable


Features

▶ Create as many GiveAll as you want
▶ Remove GiveAlls !
▶ Rename GiveAlls !
▶ The names/lore/enchants/NBT of the items are saved
▶ Customise the countdown before the GiveAll (In a GUI or not)
▶ Customize every messages !
▶ Duplicate GiveAlls
▶ Add/Remove/Edit a condition for receiving an item (15 are availables: perm, msg-contain, msg-same, in-region, not-in-region, minkills, maxkills, mindeath, maxdeath, minmoney, maxmoney, in-world, not-in-world, minplaytime, maxplaytime)
▶ Items are give every 1 to 3 seconds !
▶ Set or not and change when you want the duration of a GiveAll ! (In a GUI or with a command)
▶ Copy all the items of a GiveAll in another
▶ Multi-Page system
▶ Clear the content of a GiveAll
▶ You can see the list of all your GiveAll in a GUI wich allows you to delete/start-stop/modify them !
▶ Edits the items of a GiveAll by a GUI
▶ Give the items you’re holding to everybody, without having to create a GiveAll
▶ Messages of the /ga help are clickable !
▶ If your skript is not up to date, you will have a message with all the new feature, and if the update is important or not.


Commands and permissions

Command : /giveall (or /ga)
<> : obligatory
[] : optional
Code:
∙ giveall create <GiveAll’s name> [Duration] → Create a GiveAll, and set its duration (in seconds)
∙ giveall start <GiveAll’s name> [i] → Start a GiveAll (If "i" is set, the GiveAll will start instantly (without the countdown)
∙ giveall stop → Stop the current GiveAll
∙ giveall add <GiveAll’s name> → Add the held’s item to the GiveAll
∙ giveall edit[item] → Open the GUI to modify items gf the GivAll
∙ giveall delete <GiveAll’s name> → Delete a GiveAll
∙ giveall list [gui] → See the GiveAll’s list (if "gui" is set, the list will be in a GUI)
∙ giveall givehand → Give to everybody the held’s item
∙ giveall rename <GiveAll’s name> <new name> → rename a GiveAll
∙ giveall clear <GiveAll’s name> → Delete all the items of a GiveAll
∙ giveall copy <GiveAll 1> <GiveAll2> → Copy the items of GiveAll1 into GiveAll2
∙ giveall duplicate <GiveAll's name> → Duplicate a GiveAll
∙ giveall settime <GiveAll’s name> <time> → (or "changetime") Modify the duration of a GiveAll. 0 = infinite
∙ giveall setcountdown <GiveAll’s name> <time> → (or "setcd", "scd", "changecountdown", "changecd", "ccd") Modify the countdown of a GiveAll. Must be over than or equal to 10
∙ giveall modify <GiveAll’s name> → Modify a GiveAll (with GUI) (time, countdown, rename…)
∙ giveall condition <set/clear/see> <GiveAll's name> [condition] [value] → Modify a GiveAll's condition
∙ giveall update → Check if an update is available
∙ giveall help → Print the help page
∙ giveall reload → Reload the script

Configuration


Code:
    #-----------------------------------------------------#
    #                     Prefixes                          #
    #-----------------------------------------------------#
    Prefix: &b[&aGiveAll&b]&r
    ErrorPrefix: &cError :&c

    #-----------------------------------------------------#
    #                     Error-messages                     #
    #-----------------------------------------------------#
    #Mesage when we don't have the permission to do something. There is no prefix before the message, so put them.
    NoPermission: &b[&aGiveAll&b] &cError : You don't have the permission to do this !

    #Message when the Giveall doesn't exist
    GADoesntExist: &cThis GiveAll doesn't exist

    #Message when the GiveAll already exist
    GaAlreadyExists: &cThis GiveAll already exists

    #Message when we want to start a Giveall wich is empty
    GAIsEmpty: &cAn error occurred while attempting to start this GiveAll : it is empty !

    #Message when we want to start a GiveAll, while a GiveAll is already in progress
    GAIsAlreadyStarted: &cThere is already a GiveAll in progress ! GiveAll: &c&o%{_ga}%

    #Message when we want to stop a Giveall, but there is not GiveAll in progress
    NoGAInProgress: &cThere isn't any GiveAll in progress

    #Message when we want to add/give an item but we have nothing in our hand
    TakeAnItem: &cPlease, take an item in your hand

    #Message when we want to delete/rename a GiveAll wich is in progress
    CantModifyBecauseGAIsInProgress: &cImpossible de faire cette action : ce giveall est en cours !

    #Message when we want to give an item to everybody but there is nobody online
    Alone: &cThere is no one online.

    #Message when we want to delete a GiveAll wich is in progress
    CantDeleteBecauseGAIsInProgress: &cYou can't delete this GiveAll because it is in progress

    #Message when we want to create a GiveAll with a name already used
    NewGAAlreadyExists: &cThe name %{_newName}% is already used !

    #Message when we want enter a integer less than 10
    TimeForCDIsTooBig: &cPlease enter an integer witch is over than or equal to 10 !

    #-----------------------------------------------------#
    #                     Syntax-error messages              #
    #-----------------------------------------------------#
    #Message when we want to enter the GiveAll duration but the time we've enter is not an integer
    WrongSyntaxForTime: &cThe time you've set isn't correct. Make sure to put a whole number

    #Message when we do /giveall start wrongly. There is 2 messages
    WrongCommandSyntax_Start: &c/giveall start <name> [instant]
    WrongCommandSyntaxIndication_Start: &cIf 'instant' (or 'i') is set, the GiveAll will start instantly.

    #Message when we do /giveall create wrongly. There is 2 messages
    WrongCommandSyntax_Create: &c/giveall create <name> [time (in second)]
    WrongCommandSyntaxIndication_Create: &cthe GiveAll will last the indicated time. If the time is not set, you will have to stop it manually.

    #Message when we do /giveall add wrongly.
    WrongCommandSyntax_Add: &c/giveall add <name>

    #Message when we do /giveall edit wrongly.
    WrongCommandSyntax_EditItem: &c/giveall edit[item] <name>

    #Message when we do /giveall rename wrongly.
    WrongCommandSyntax_Rename: &c/giveall rename <old name> <new name>

    #Message when we do /giveall copy wrongly. There is 3 messages
    WrongCommandSyntax_CopyContent: &c/giveall copy <GiveAll 1> <GiveAll 2>
    WrongCommandSyntaxIndication_CopyContent: &cGiveAll 1 = Name of the Giveall whose items will be copied
    WrongCommandSyntaxIndication_CopyContent2: &cGiveAll 2 = Name of the Giveall where items will be copied

    #Message when we do /giveall clear wrongly.
    WrongCommandSyntax_Clear: &c/giveall clear <name>

    #Message when we do /giveall changetime wrongly.
    WrongCommandSyntax_ChangeTime: &c/giveall changetime <name> <time (in second)>

    #Message when we do /giveall modify wrongly.
    WrongCommandSyntax_Modify: &c/giveall modify <name>

    #Message when we do /giveall countdown wrongly.
    WrongCommandSyntax_ChangeCD: &c/giveall countdown <name> <time (in second)>

    #-----------------------------------------------------#
    #                         Messages                      #
    #-----------------------------------------------------#

    #Message of the countdown, when a GiveAll starts
    #PlaceHolders: %{_time.left}% : return the time left
    #PlaceHolders: %{_ga}% : return the GiveAll name
    GAStartsInXSeconds: &aThe givall starts in &b%{_time.left}% &asecond(s) ! &3&o(GiveAll: %{_ga}%)

    #Message when a GiveAll start
    #PlaceHolders: %{_ga}% : return the GiveAll name
    GAStarts: &aGiveAll is starting ! &3&o(GiveAll: %{_ga}%)

    #Message when the giveall is finished
    #PlaceHolders: %{_ga}% : return the GiveAll name
    GAIsFinished: &aGiveAll is finished ! Thank you for participating !

    #Message when the GiveAll is stopped by a player
    #PlaceHolders: %{_player}% : return the player's name
    #PlaceHolders: %{_ga}% : return the GiveAll name
    GAHasBeenStoppedByPlayer: &aThe GiveAll &b%{_ga}%&a has been stopped by %{_player}% !

    #Message when the GiveAll is stopped by the console
    #PlaceHolders: %{_ga}% : return the GiveAll name
    GAHasBeenStoppedByConsole: &aThe GiveAll &b%{_ga}%&a has been stopped !

    #Message when we do /ga givehand
    #PlaceHolders: %{_item}% : return the given item
    #PlaceHolders: %{_number}% : return the number of player
    GAHandHasBeenGiven: &aYou've successfully gave &b%{_item}%&a to &b%{_number}% player(s)

    #Broadcast when we do /ga givehand
    #PlaceHolders: %{_item}% : return the given item
    #PlaceHolders: %{_player}% : return the giver's name
    GAHandBroadcast: &b%{_player}%&a gave &b%{_item}% &ato everyone !

    #Small addition, wich will be put in place of "%{_stop}%" in the "GACreated" message, wich return the way that the GiveAll will be stopped
    #PlaceHolders: %{_seconds}% : return the duration of the GiveAll
    GAMustBeStoppedManually: &aIt will stop manually. #It will be put in place of "%{_stop}%"
    GAWillBeStoppedAutomatically: It will stop after %{_seconds}%&asec. #It will be put in place of "%{_stop}%"

    #Message when we create a GiveAll
    #PlaceHolders: %{_stop}% : return the way that the GiveAll will be stopped
    GACreated: &aThe GiveAll &b&l%{_ga}%&a has been created ! %{_stop}%

    #Message when we delete
    #PlaceHolders: %{_ga}% : return the GiveAll name
    GADeleted: &aYou've deleted the GiveAll &b&l%{_ga}%&a !

    #Message when we add an item to a giveall (with /giveall add <name>)
    #PlaceHolders: %{_ga}% : return the GiveAll name
    #PlaceHolders: %{_item}% : return the added item
    ItemAdded: &aYou've added &byour item &ain the &b%{_ga}%'s items &7&o(item added : %{_item}%)

    #Message when we rename a GiveAll
    #PlaceHolders: %{_ga}% : return the old name of the GiveAll
    #PlaceHolders: %{_newName}% : return the new name of the GiveAll
    RenamedSuccessfully: &aYou have successfully rename the GiveAll &b%{_ga}% &ain &b%{_newName}% &a!

    #Message when we copy the items of a giveall into another
    #PlaceHolders: %{_ga1}% : return the name of the Giveall whose items will be copied
    #PlaceHolders: %{_ga2}% : return the name of the Giveall where items will be copied
    SuccessfullyCopied: &aYou've successfully copied items of the giveall &b%{_ga1}% &ainto &b%{_ga2}%&a !

    #Message when we clear the items of a Giveall
    #PlaceHolders: %{_ga}% : return the GiveAll name
    SuccessfullyCleared: &aYou've successfully cleared the GiveAll &b%{_ga}%

    #Message when we change the duration of a GiveAll
    #PlaceHolders: %{_ga}% : return the GiveAll name
    #PlaceHolders: %{_time}% : return the duration
    SuccessfullyChangedTime: &aYou've successfully changed the duration of the GiveAll &b%{_ga}%&a (%{_time}%s)

    #Message when we change the countdown of a GiveAll
    #PlaceHolders: %{_ga}% : return the GiveAll name
    #PlaceHolders: %{_time}% : return the countdown
    SuccessfullyChangedCD: &aYou've successfully changed the countdown of the giveall &b%{_ga}% &a(%{_time}%s)

    #Message where we have to click to rename (MSG), and its tooltip (TTP)
    #PlaceHolders: %{_ga}% : return the GiveAll's name
    MSGClickForRename: &aClick-me to rename &b%{_ga}%&a !
    TTPClickForRename: &aClick to do /ga rename %{_ga}%

    #Message when the skript is Reloading
    Reloading: &aReloading...

    #-----------------------------------------------------#
    #              Configuration of the list              #
    #-----------------------------------------------------#
    #Color of the comma and of the "and" in the list
    ComaColorInList: &a
    #Color of the GiveAll's names in the list
    GAColorInList: &b
    #Message when the list is empty
    GAListIsEmpty: &aThere is no giveall !
    #Message before the list
    #PlaceHolders: %{_number}% : return the number of GiveAlls
    GAList: &aList of all GiveAlls &f&o(%{_number}%) &a:&b

    #-----------------------------------------------------#
    #                     Name of GUIs                      #
    #-----------------------------------------------------#
    #Name of the GUI when you have to confirm to delete a GiveAll
    #PlaceHolders: %{_ga}% : return the GiveAll name
    ConfirmDeleteGUI: &cRemove &c&o%{_ga}%

    #Name of the GUI to edit items of a GiveAll
    #PlaceHolders: %{_ga}% : return the GiveAll name
    EditItems: &b[&aGiveAll&b] &b%{_ga}%

    #Name of the list's GUI
    TitleGUIList: &b[&aGiveAll&b]

    #Name of the GUI to modify a giveall (/ga modify <name>)
    #PlaceHolders: %{_ga}% : return the GiveAll name
    ModifyGA: &aGiveAll &b%{_ga}%

    #-----------------------------------------------------#
    #             Name of the Items, in the GUI             #
    #-----------------------------------------------------#
    #Name of the book to indicate the name of the Giveall
    # (In the Delete GUI and the Modify GUI)
    #PlaceHolders: %{_ga}% : return the GiveAll name
    InfoGAName: &eGiveAll : %{_ga}%

    #Name of the button to cancel the delete of a GiveAll
    CancelDelete: &cCancel

    #Name of the button to confirm the delete of a GiveAll
    ConfirmDelete: &aRemove

    #Name of the button to close the GUI
    CloseGUIItem: &cQuit

    #Name of the button to go back to the list
    BackToGAList: &cBack to the list

    #Name of the button to go to the next page
    NextPage: &fNext page

    #Name of the button to go to the previous page
    PreviousPage: &fPrevious page

    #Name of the button to add an item
    AddItemToGA: &aAdd an item

    #Name of the book, in the GiveAll list
    #PlaceHolders: %{_ga}% : return the GiveAll name
    GAListItem: &aGiveAll &b%{_ga}%

    #Lore of the book, in the GiveAll list
    #PlaceHolders: %{_action}% : return what will happen when we will left click on the book (stop or start)
    #PlaceHolders: %{_satut}% : return the actual status of the GiveAll (I know, we write "status", and not "statut", but in french we write "statut" and I didn't change...)
    #PlaceHolders: %{_nbitem}% : return the amount of items in the GiveAll
    #PlaceHolders: %{_time}% : return the duration of the GiveALl
    LoreGAList: ||&7&m--------------------||&cMiddle click: modify items||&cRight click: delete||&cLeft click: &c%{_action}%||&cShift left click: modify the GiveAll||&r||&7&m--------------------||&e&oInformations||&aNumber of items: &b%{_nbitem}%||&aDuration: &b%{_time}%||&aCountdown: &b%{_cd}%||&aStatus: &b%{_statut}%

    #Name if the item between the two button to go to the next/previous page
    SeveralPageItem: &e&oSoon: Several pages #The item between 'next page' and 'previous page'. In the future, it will be replaced by a Several-page system

    #The action that will be executed (when we click while it is not in progress)
    LeftClickActionStart: &cstart

    #The action that will be executed (when we click while it is in progress)
    LeftClickActionStop: &cstop

    #The status of the GiveAll (when it is in progress)
    StatusInProgress: In progress...

    #The status of the GiveAll (when it is not in progress)
    StatusStop: stopped

    #Name of the items to clear items of a Giveall
    ClearGA: &cClear the items of the GiveAll

    #When a GiveAll is infinite (in the Giveall list)
    InifiteTimeForGUIList: Infinite

    #Name of the items to rename a Giveall, in the "modify" GUI
    GAModifyRename: &eRename

    #Name of the button to modify items of a Giveall, in the "modify" GUI
    GAEditItems: &eModify items

    #Name of the button to delete a Giveall, in the "modify" GUI
    DeleteInModifyGUI: &cDelete

    #Name of buttons to modify the duration of a Giveall, in the "modify" GUI
    AddTimeByGUI: &aAdd %{_time}%&as to the duration of the GiveAll
    RemoveTimeByGUI: &cRemove %{_time}%&cs from the duration of the GiveAll
    SeeTimeByGUI: &aDuration of the GiveAll : &b%{_time}%&as
    LoreSeeTimeByGUI: &r||&b0 &a= Infinite

    #Name of buttons to modify the countdown of a Giveall, in the "modify" GUI
    AddCDByGUI: &aAdd %{_time}%&as to the countdown
    RemoveCDByGUI: &cRemove %{_time}%&cs from the countdown
    SeeCDByGUI: &aCountdown: &b%{_time}%&as


    #-----------------------------------------------------#
    #                         Commands                      #
    #-----------------------------------------------------#
    #Name of the mains command
    MainCommand: GiveAll #we don't care about uppercases/lowercases

    #Name of aliases
    AliasesCommands: ga, givea, gall, give-all #Separate with a coma

    #-----------------------------------------------------#
    #                         Permissions                     #
    #-----------------------------------------------------#
    #Permissions.
    PermissionAll: giveall.*
    PermissionCreate: giveall.create
    PermissionStart: giveall.start
    PermissionReload: giveall.reload
    PermissionStop: giveall.stop
    PermissionGiveHand: giveall.givehand
    PermissionDelete: giveall.delete
    PermissionAddItem: giveall.additem
    PermissionEditItem: giveall.edititem
    PermissionChatList: giveall.list.chat
    PermissionGUIList: giveall.list.gui
    PermissionRename: giveall.rename
    PermissionHelp: giveall.help
    PermissionUpdateCheck: giveall.updatecheck
    PermissionCopyContent: giveall.copycontent
    PermissionClearGA: giveall.clear
    PermissionModify: giveall.modify
    PermissionChangeTime: giveall.settime
    PermissionChangeCountDown: giveall.setcountdown


Images and videos

1515170876-capture-d-ecran-2018-01-05-a-17-47-07.png

1515170876-capture-d-ecran-2018-01-05-a-17-47-22.png

Help page (/ga help)

1515171000-capture-d-ecran-2018-01-05-a-17-49-47.png

List of all the GiveAlls,

1515171134-capture-d-ecran-2018-01-05-a-17-51-54.png

The "Edit" GUI (to add/remove items) (/ga edit <nom>)
(Add items: drag-and-drop it on the gold-block
remove all the items: click on the redstone dust
remove an items: right click on it)

1515171257-capture-d-ecran-2018-01-05-a-17-54-07.png

The "Modify" GUI, to modify a loads of parameter of your GiveAll, such as CountDown, Duration, Rename, Edit Items, delete, start/stop... (/ga modify <nom>)

1515171659-capture-d-ecran-2018-01-05-a-18-00-46.png

Countdown when a GiveAll starts

1515171694-capture-d-ecran-2018-01-05-a-18-01-22.png

List of all the GIveAll (/ga list)

1515171729-capture-d-ecran-2018-01-05-a-18-01-57.png

Message when a GiveAll is stop (/ga stop <name>)

Videos:
If you want to do a video, you can !
But don't forget to say my name (noftaly), and to put the download link in the description. I will add the video on the ressource page


Add-ons and version

Must:

Java 8
Spigot
TuSKe
Skript 2.2
SkQuery

Developed and tested with:

Java 8
Spigot 1.12.2
Skript 2.2-dev31c
TuSKe 1.8.2-dev7
SkQuery 3.21.4

Changelog

Code:
Beta 1.0 : (private)
- Creation of the skript

Beta 2.0 : (public)
- Added: /ga update
- Added: Configuration
- Fix of some bugs
- Added Json in the /ga help
- Added permission

Beta 3.0 :
- Modification of the Configuration
- Added some link in the "update check"
- Code modification
- Ressource's page modification
- Added a Trello

Beta 3.2 :
- Added: /ga rename <ancien nom> <nouveau nom>
- Added: /ga copy <GiveAll> <GiveAll>
- Added: /ga clear <GiveAll>
- Added: /ga changetime <GiveAll> <time>
- Added an item to clear all the items in the "Edit" GUI
- Added some permissions
- Added the "Informations" part in the lore of the book, in the list
- Modification of the Configuration
- Modification of the code

Beta 3.2.1 :
- Modification of the configuration

Beta 3.2.2 :
- Modification of the code

Beta 4 :
- Added: /ver GiveAll
- Added: /ga modify
- Added: /ga setcountdown
- Fix of the « internal occurred while etc. » in the /list gui
- Modification of the configuration
- Modification of the items in the GUI list
- Modification of the /ga help
- Modification of the way that the countdown works
- Optimisation

Betas 4.1 ; 4.2 ; 4.3 :
- BugFix

Version 1.0 :
- Added /ga condition <set/clear/see> <GiveAll> [condition] [value]
- Added an item to modify the condition, in the /ga modify
- Added a GUI to modify the condition
- Added an information on the condition of a GiveAll and its value in te /ga list gui
- Modification of the configuration
- Modification of the way that some commands worked
- Modification of the way that the items are given
- Modification of an item in a GUI (the "Back to the list" item become "Back", to be used in other GUIs)

Version 1.0.1 :
- Added a permission for the /ga condition
- Deleted a message with was 2 times in the configuration

Version 1.0.2 :
- Added an error message if we put an integer smaller than 0 in the /ga settime
- Fixing a bug wich allows us to define a negative duration
- Modification of the configuration

Version 1.1.0 :
- Added 6 conditions: max-kill, min-kill, max-death, min-death, max-money, min-money
- Added /ga duplicate <GiveAll> with allows you to duplicate a GiveAll. It will create an other giveall wich will be name like this: <nom_du_giveall>-copy. If this name already exist, it will be "copy2" or "copy3" or "copy4" etc.
- Added some items to modify the condition in the condition's configuration panel
- Modification of the clock's item in the /ga modify: right click on it now reset the time or the countdown
- Modification of the configuration
- Modification of the /ga help

Version 1.2.0, 1.2.1 et 1.2.2 :
- Added 4 conditions: min-playtime, max-playtime, in-region, not-in-region
- Optimisation of the code
- Modification of the 'launch' line in the gui of the list
- Modification of the configuration
- Modification of the /ga delete/create/duplicate
- Deleting API (still available here if you want)

Version 1.3.0 :
- Added a MultiPage system (Thanks @McLincoln2 for the help)
- Added the version in the file name
- Added log in a log file (plugins/giveall/actions.log)
- Fix of the Ghost Item's bug
- Improve of some GUI (nicer)
- Modification with conditions
- Changing some items
- Remake of the Condition's GUI
- Updated video tutorial (still in french)
- Modification of the configuration
- Optimisation of the code
- Deleting the old GUI's system (to replace them with MultiPage)
- Merging the 2 pages in the /ga help in only one


To-Do and bugs


▶ Add a .yml
✔ Add Several-Page system
✔ /ga rename <Old name> <new name>
✔ Add a log file

✔ Add other language, as english
▶ Let-me know your ideas !



Known Bugs:

✔ Sometimes, when we add an item that already exist, by the "edit" GUI, the old one become ghost
↪ Fixed (in the next updated. Let me some time to translate all the 700 lines of configuration...)

▶ Say-me if you found a bug !


Servers using the skript

Let-me know if you use the skript, and i will add you're IP and your TeamSpeak/discord/site... here !

Servers using the skript:
- ...
- ...


Informations

Thanks a lot for downloading this skript !

A trello with all the things about the skript is available here ! (in french) : https://trello.com/b/Fid0us18/skript-giveall

You're not alow to claim this skript, or any of its parts as yours.
You're not alow to post this skript on a forum, without my permission.

You can do videos on it !
But don't forget to say my name (noftaly), and to put the download link in the description. I will add the video on the ressource page

The skript has ★★★★★ (15 reviews) on skript-mc !
Author
noftaly
Downloads
1,061
Views
1,061
First release
Last update
Rating
0.00 star(s) 0 ratings