Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #------ VERSION 0.9 ------#
- options:
- # IP Base de données
- IpBDD: ****
- # Nom de la base de données
- NomBDD: ****
- # Identifiant base de données
- IdBDD: ****
- # Mot de passe base de données
- MdpBDD: ****
- # Au bout de combien de jour l'offres est supprimées
- DaysSupr: 3
- # Nom du GUI listant les offres (/hde) | [page] = numéro de la page des offres
- NomMenuHDE: "Hôtel des échanges (Page [page])"
- # Lorsque le joueur clique sur "vendre"
- VendreMenu: "&aPour vendre prenez ce que vous voulez vendre en main puis faites /vendre"
- # Lorsqu'un joueur essaye d'échanger avec rien dans la main
- NoItemEchange: "&cVous n'avez pas d'objet dans votre main à échanger !"
- # Lorsque le joueur doit choisir l'item en échange du sien
- ChooseItemEchange: "&aMaintenant l'item contre lequel vous voulez échanger en le mettant dans votre main et en refaisant /vendre, vous pourrez ensuite sélectionner le nombre."
- # Lorsque le joueur à pris trop de temps pour choisir l'item d'échange
- AnnuleItemEchange: "&cEchange annulé, pour cause d'attente trop longue pour choisir l'item d'échange, recommencez avec /vendre."
- # Lorsqu'un joueur essaye de mettre le prix mais qu'il n'a rien dans la main
- NoItemPrix: "&cVous n'avez pas d'objet dans votre main pour mettre le prix, refaites /vendre !"
- # Lorsque le joueur annule l'échange après avoir mis le prix
- AnnuleEchangePrix: "&cVous avez annulé la mise en échange, /vendre pour recommencer."
- # Lorsque l'objet est mis en échange
- MisEnEchange: "&aVotre item à bien été mis en échange, vous serez payez si l'on vous l'achète sinon il vous sera rendu dans un certain nombre de jours et l'offre sera supprimée."
- # Lorsqu'il faut choisir le nombre d'item prix
- NombreItemPrix: "&cRentrez dans chat le nombre d'item que voulez mettre comme prix ou entrez STOP pour arrêter:"
- # Lorsque le joueur entre STOP quand on demande le nombre
- StopChat: "Vous avez annulé l'échange, vous reparlez dans le chat normalement."
- # Impossible de mettre moins de 1 pour choisir le prix
- MoinsUnItemPrix: "&cVous ne pouvez pas mettre comme prix moins de 1 item !"
- # Message rentré pas un nombre lors de la sélection du prix | [message] prix rentré par le joueur
- PasNombre: "&c&o[message] &r&cn'est pas un nombre."
- # Lors de la mise en échange si le joueur ne possède plus l'item dans son inventaire
- NoItemInv: "&cVous n'avez plus l'item à mettre en échange dans votre inventaire ! L'échange est annulé, recommencez avec /vendre"
- # Pas suffisamment d'items pour acheter | [prix] correspond au prix de l'offre que le joueur a essayé d'acheter
- NoSuffItems: "&cVous ne possédez pas suffisamment d'item pour acheter cette offre, recommencez avec /hde. Il vous fallait: &o[prix]"
- # Lorsque l'échange s'est réalisé
- SuccEchange: "&aFélicitations ! Votre échange s'est déroulé avec succès !"
- # Demande de confirmation pour /hdeclear
- ConfirmHdeClear: "&cÊtes vous sur de vouloir supprimer toutes les offres et de reset les ID ? Si oui, refaites /hdeclear"
- # Lorsque la commande /hdeclear a clear la BDD
- HdeCleared: "&aLa base de données stockant les offres a été vidée, il n'y a donc plus d'offres, les ID ont été reset."
- # Délai d'attente dépassé pour la confirmation de /hdeclear
- DelayHdeClear: "&cSuppression annulée pour trop d'attente."
- # Lorsqu'une offre à été vendu le vendeur est prévenu et gagne le rapport de la vente | [offre] = item offre / [rapport] = objets rapportés / [acheteur] = acheteur de l'offre
- OffreVendue: "&aVotre offre: &o[offre] &aa été vendue à &o[acheteur] &acontre &o[rapport]"
- # Une offre est mise pour un certain temps en vente, quand ce temps est dépassé elle est supprimée | [offre] = item offre / [delay] = la limite en nombre de jours
- OffreTriee: "&cVotre offre: &o[offre] &ca été mise en vente il y a plus de &o[delay] &cjour(s), elle a été supprimée, l'objet mis en vente vous a été rendu."
- script options:
- $ init com.mysql.jdbc.Driver
- $ db url jdbc:mysql://{@IpBDD}:3306/{@NomBDD}
- $ db username {@IdBDD}
- $ db password {@MdpBDD}
- on skript enable:
- add objects in column "pseudo_vendeur" from result of query "SELECT pseudo_vendeur FROM ventes_hde" and close to {_vendeurs::*}
- update "CREATE TABLE IF NOT EXISTS offres_hde (id int(11) NOT NULL AUTO_INCREMENT, pseudo_vendeur varchar(32) NOT NULL, miseenechange date NOT NULL, item_vente text NOT NULL, echange_item text NOT NULL, echange_id string NOT NULL, echange_nombre int(11) NOT NULL, echange_enchantements text NOT NULL, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;"
- update "CREATE TABLE IF NOT EXISTS ventes_hde (id int(11) NOT NULL AUTO_INCREMENT, datevendu datetime NOT NULL, id_offre int(11) NOT NULL, pseudo_vendeur varchar(32) NOT NULL, pseudo_acheteur varchar(32) NOT NULL, item_rendre text NOT NULL, item_vendu text NOT NULL, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;"
- loop {_vendeurs::*}:
- if {rendreVendeurs::*} contains "%loop-value%":
- exit
- else:
- add "%loop-value%" to {rendreVendeurs::*}
- function dayTri(t: integer) :: integer:
- add objects in column "id" from result of query "SELECT id FROM offres_hde" and close to {_id::*}
- add objects in column "jour" from result of query "SELECT DAY(miseenechange) AS jour FROM offres_hde" and close to {_datesD::*}
- add objects in column "mois" from result of query "SELECT MONTH(miseenechange) AS mois FROM offres_hde" and close to {_datesM::*}
- add objects in column "annee" from result of query "SELECT YEAR(miseenechange) AS annee FROM offres_hde" and close to {_datesY::*}
- add objects in column "pseudo_vendeur" from result of query "SELECT pseudo_vendeur FROM offres_hde" and close to {_vendeur::*}
- add objects in column "item_vente" from result of query "SELECT item_vente FROM offres_hde" and close to {_itemV::*}
- set {_now} to "%now%"
- set {_nombreDel} to 0
- set {_split::*} to {_now} split at "/"
- set {_split::1} to {_split::1} parsed as integer
- set {_split::2} to {_split::2} parsed as integer
- set {_split2::*} to {_split::3} split at " "
- set {_split2::1} to {_split2::1} parsed as integer
- set {_now} to {_split::1}+{_split::2}+2000+{_split2::1}
- set {_count} to 1
- loop size of {_id::*} times:
- set {_datesM::%{_count}%} to "%{_datesM::%{_count}%}%" parsed as integer
- set {_datesD::%{_count}%} to "%{_datesD::%{_count}%}%" parsed as integer
- set {_datesY::%{_count}%} to "%{_datesY::%{_count}%}%" parsed as integer
- set {_miseenechange} to {_datesM::%{_count}%}+{_datesD::%{_count}%}+{_datesY::%{_count}%}
- if {_now}-{_miseenechange} >= {_t}:
- update "DELETE FROM offres_hde WHERE id = '%{_id::%{_count}%}%'"
- set {_vendeur} to "%{_vendeur::%{_count}%}%" parsed as player
- set {_itemV} to "%{_itemV::%{_count}%}%" parsed as item type
- if "%{_vendeur}%" is "<none>":
- update "INSERT INTO ventes_hde (datevendu, id_offre, pseudo_vendeur, pseudo_acheteur, item_rendre, item_vendu) VALUES (NOW(), '%{_id::%{_count}%}%', '%{_vendeur::%{_count}%}%', '%{_t}%', '%{_itemV}%', 'DELAY REMOVED') ;"
- if "%{rendreVendeurs::*}%" doesn't contain "%{_vendeur::%{_count}%}%":
- add "%{_vendeur::%{_count}%}%" to {rendreVendeurs::*}
- else:
- set {_OffreTriee} to {@OffreTriee}
- replace all "[offre]" in {_OffreTriee} with "%{_itemV}%"
- replace all "[delay]" in {_OffreTriee} with "%{_t}%"
- send {_OffreTriee} to {_vendeur}
- give {_itemV} to {_vendeur}
- add 1 to {_nombreDel}
- add 1 to {_count}
- set {_nombreDel} to "%{_nombreDel}%" parsed as integer
- return {_nombreDel}
- function annuler(pla: player, msg: text):
- delete {echange.%{_pla}%::*}
- delete {echangeItem.%{_pla}%}
- delete {echangeGui.%{_pla}%}
- delete {echangeNumbPrix.%{_pla}%}
- send {_msg} to {_pla}
- function actuHde(t: integer):
- wait 3 tick
- loop all players:
- if "%inventory name of current inventory of loop-player%" is {@NomMenuHDE}:
- close loop-player's inventory
- wait 1 tick
- make loop-player execute command "/hde"
- function miseEnEchange(pla: player):
- if number of {echange.%{_pla}%::itemV} in {_pla}'s inventory < {echange.%{_pla}%::numbV}:
- annuler({_pla}, {@NoItemInv})
- stop
- remove {echange.%{_pla}%::itemV} from {_pla}'s inventory
- update "INSERT INTO offres_hde (pseudo_vendeur, miseenechange, item_vente, echange_item, echange_id, echange_nombre, echange_enchantements) VALUES ('%{_pla}%', NOW(), '%{echange.%{_pla}%::itemV}%', '%{echange.%{_pla}%::itemP}%', '%{echange.%{_pla}%::idP}%', '%{echange.%{_pla}%::numbP}%', '%{echange.%{_pla}%::enchantementsP}%') ;"
- annuler({_pla}, {@MisEnEchange})
- every day:
- dayTri({@DaysSupr})
- command /pchde <player> <integer>:
- executable by: console
- trigger:
- wait 2 tick
- make arg 1 execute "hde %arg 2%"
- command /cIthde <player> <integer>:
- executable by: console
- trigger:
- set {_itemP} to the first element out of objects in column "echange_item" from result of query "SELECT echange_item FROM offres_hde WHERE id = '%arg 2%'" and close
- set {_vendeur} to the first element out of objects in column "pseudo_vendeur" from result of query "SELECT pseudo_vendeur FROM offres_hde WHERE id = '%arg 2%'" and close
- set {_vendeurP} to "%{_vendeur}%" parsed as player
- set {_itemPi} to "%{_itemP}%" parsed as item type
- set {_numbP} to the first element out of objects in column "echange_nombre" from result of query "SELECT echange_nombre FROM offres_hde WHERE id = '%arg 2%'" and close parsed as integer
- set {_itemV} to the first element out of objects in column "item_vente" from result of query "SELECT item_vente FROM offres_hde WHERE id = '%arg 2%'" and close
- set {_itemVi} to "%{_itemV}%" parsed as item type
- if number of {_itemPi} in arg 1's inventory < {_numbP}:
- set {_msgAnnul} to {@NoSuffItems}
- replace all "[prix]" in {_msgAnnul} with {_itemP}
- annuler(arg 1, {_msgAnnul})
- stop
- remove {_itemPi} from arg 1's inventory
- give {_itemVi} to arg 1
- annuler(arg 1, {@SuccEchange})
- update "DELETE FROM offres_hde WHERE id = '%arg 2%'"
- actuHde(1)
- if "%{_vendeurP}%" is "<none>":
- update "INSERT INTO ventes_hde (datevendu, id_offre, pseudo_vendeur, pseudo_acheteur, item_rendre, item_vendu) VALUES (NOW(), '%arg 2%', '%{_vendeur}%', '%arg 1%', '%{_itemPi}%', '%{_itemVi}%') ;"
- if "%{rendreVendeurs::*}%" doesn't contain "%{_vendeur}%":
- add "%{_vendeur}%" to {rendreVendeurs::*}
- stop
- else:
- set {_OffreVendue} to {@OffreVendue}
- replace all "[offre]" in {_OffreVendue} with "%{_itemV}%"
- replace all "[rapport]" in {_OffreVendue} with "%{_itemP}%"
- replace all "[acheteur]" in {_OffreVendue} with "%arg 1%"
- send {_OffreVendue} to {_vendeurP}
- give {_itemPi} to {_vendeurP}
- command /annulhde <integer>:
- usage: /annulhde [<jours tri>]
- executable by: player
- trigger:
- if arg 1 < 1:
- send "&cVous ne pouvez pas retirer les offres datant de moins de 1 jour !"
- stop
- set {_offresSupr} to dayTri(arg 1)
- send "&a%{_offresSupr}% offres dataient de plus de &o%arg 1% &ajour(s), elles ont été retirées et le stuff rendu à leur vendeur"
- command /hde [<integer=1>]:
- usage: /hde [<page>]
- executable by: player
- trigger:
- add objects in column "id" from result of query "SELECT id FROM offres_hde" and close to {_countOffres::*}
- add objects in column "id" from result of query "SELECT id FROM offres_hde LIMIT %45*(arg 1-1)%,45" and close to {_ID::*}
- add objects in column "pseudo_vendeur" from result of query "SELECT pseudo_vendeur FROM offres_hde LIMIT %45*(arg 1-1)%,45" and close to {_vendeur::*}
- add objects in column "item_vente" from result of query "SELECT item_vente FROM offres_hde LIMIT %45*(arg 1-1)%,45" and close to {_itemV::*}
- add objects in column "echange_item" from result of query "SELECT echange_item FROM offres_hde LIMIT %45*(arg 1-1)%,45" and close to {_itemP::*}
- add objects in column "echange_id" from result of query "SELECT echange_id FROM offres_hde LIMIT %45*(arg 1-1)%,45" and close to {_idP::*}
- add objects in column "echange_nombre" from result of query "SELECT echange_nombre FROM offres_hde LIMIT %45*(arg 1-1)%,45" and close to {_numbP::*}
- add objects in column "echange_enchantements" from result of query "SELECT echange_enchantements FROM offres_hde LIMIT %45*(arg 1-1)%,45" and close to {_enchantP::*}
- set {_NomMenuHDE} to {@NomMenuHDE}
- replace all "[page]" in {_NomMenuHDE} with "%arg 1%"
- send "&cIl se peut que des problèmes arrivent lors d'achat ! L'HDE est en Beta Test ! Nous ne serez pas remboursé ! Bug connu: un item non enchanté comme prix pourra prendre un item enchanté" #BETA TEST
- wait 2 seconds #BETA TEST
- wait 1 tick
- open chest with 6 rows named {_NomMenuHDE} to player
- format slot 48 of player with egg named "&bVendre" to close then run [send {@VendreMenu}]
- format slot 50 of player with stick named "&r%size of {_countOffres::*}% offres en ventes actuellement" to be unstealable
- if arg 1 > 1:
- format slot 45 of player with (arg 1)-1 of arrows named "&rPage &a%arg 1-1%" to close then run "pchde %player% %(arg 1)-1%"
- if size of {_ID::*} >= 45:
- format slot 53 of player with (arg 1)+1 of arrows named "&rPage &a%arg 1+1%" to close then run "pchde %player% %(arg 1)+1%"
- set {_count} to 0
- set {_count1} to 1
- loop 45 times:
- if {_itemV::%{_count1}%} is not set:
- stop
- set {_itemV} to "%{_itemV::%{_count1}%}%" parsed as item type
- set {_itemP} to "%{_idP::%{_count1}%}%" parsed as item type
- if {_enchantP::%{_count1}%} is "NULL":
- set {_enchantsP} to ""
- else:
- replace all "/" in {_enchantP::%{_count1}%} with "||&7"
- set {_enchantsP} to " &7echanté(e)(s)||&7%{_enchantP::%{_count1}%}%"
- format slot {_count} of player with {_itemV} with lore "||&eVendu par: &7%{_vendeur::%{_count1}%}%||&eContre: &7%{_numbP::%{_count1}%}% %{_itemP}%%{_enchantsP}%||&8&o##%{_ID::%{_count1}%}%" to close then run "cIthde %player% %{_ID::%{_count1}%}%"
- add 1 to {_count}
- add 1 to {_count1}
- command /vendre:
- executable by: player
- trigger:
- if {echangeItem.%player%} is set:
- delete {echangeItem.%player%}
- if "%player's tool%" is "air":
- message {@NoItemEchange}
- stop
- set {echange.%player%::itemP} to player's tool
- set {echange.%player%::idP} to "%id of player's tool%:%data value of player's tool%"
- send "%id of player's tool%:%data value of player's tool%"
- if "%player's tool%" contains "enchanted":
- set {_itemEnchantements::*} to groups 1 of "%player's tool%" matched to "of (.*) named"
- else:
- set {_itemEnchantements::*} to groups 1 of "%player's tool%" matched to "of (.*)"
- replace all "," in {_itemEnchantements::1} with " "
- replace all "and" in {_itemEnchantements::1} with ""
- replace all " " in {_itemEnchantements::1} with "/"
- if {_itemEnchantements::1} is not set:
- set {_itemEnchantements::1} to "NULL"
- set {echange.%player%::enchantementsP} to {_itemEnchantements::1}
- set {echangeNumbPrix.%player%} to "%{echange.%player%::idP}%" parsed as item type
- message {@NombreItemPrix}
- set {_decount} to 0
- while {echange.%player%::numbP} is not set:
- wait 0.5 seconds
- add 1 to {_decount}
- if {_decount} == 15:
- annuler(player, {@AnnuleItemEchange})
- stop
- set {_echangeitemV} to "%{echange.%player%::itemV}%" parsed as item type
- set {_echangeidP} to "%{echange.%player%::idP}%" parsed as item type
- set {echange.%player%::itemP} to {echange.%player%::itemP} parsed as item type
- set {echangeGui.%player%} to true
- wait 1 tick
- open chest with 1 row named "Confirmer" to player
- format slot 0 of player with light green glass named "&aConfirmer et mettre en échange" to close then run [miseEnEchange(player)]
- format slot 3 of player with {echange.%player%::itemV} with lore "||&aItem mis en échange" to be unstealable
- format slot 5 of player with {echange.%player%::numbP} of {echange.%player%::itemP} with lore "||&aPrix en échange||||x%{echange.%player%::numbP}% %{_echangeidP}%" to be unstealable
- format slot 8 of player with red stained glass named "&cTout annuler" to close then run [annuler(player, {@AnnuleEchangePrix})]
- else:
- send "&cL'HDE est en Beta Test ! Un item perdu ne sera pas remboursé ! Vous êtes prévenu ! (Rapportez les bugs !)" #BETA TEST
- wait 2 seconds #BETA TEST
- if "%player's tool%" is "air":
- message {@NoItemEchange}
- stop
- set {echange.%player%::itemV} to player's tool
- send {@ChooseItemEchange}
- set {echangeItem.%player%} to false
- wait 15 seconds
- if {echangeItem.%player%} is set:
- annuler(player, {@AnnuleItemEchange})
- stop
- command /hdeclear:
- description: &cUne commande pour vider tout l'HDE actuel et reset les ID
- permission: hde.admin.clear
- trigger:
- if {hdeclear.%player%} is true:
- update "TRUNCATE offres_hde"
- send {@HdeCleared}
- delete {hdeclear.%player%}
- else:
- send {@ConfirmHdeClear}
- set {hdeclear.%player%} to true
- wait 5 seconds
- if {hdeclear.%player%} is set:
- send {@DelayHdeClear}
- delete {hdeclear.%player%}
- on quit:
- annuler(player, {@StopChat})
- on chat:
- if {echangeNumbPrix.%player%} is set:
- cancel event
- send "&o%message%" to player
- set {_test} to message parsed as number
- set {_nombreprix} to {@NombreItemPrix}
- set {_notnumber} to {@PasNombre}
- replace all "[message]" in {_notnumber} with "%message%"
- if {_test} is a number:
- if {_test} > 0:
- delete {echangeNumbPrix.%player%}
- set {echange.%player%::itemP} to "%{echange.%player%::itemP}%"
- set {_eE::*} to {echange.%player%::itemP} split at " "
- set {_count} to {_eE::1} parsed as integer
- if "%{_count}%" is "<none>":
- set {echange.%player%::itemP} to "%{_test}% %{echange.%player%::itemP}%"
- else:
- replace all "%{_count}%" in {echange.%player%::itemP} with "%{_test}%"
- set {echange.%player%::numbP} to {_test}
- else:
- send {@MoinsUnItemPrix}
- send {_nombreprix}
- else if message is "stop":
- annuler(player, {@StopChat})
- else:
- send {_notnumber}
- send {_nombreprix}
- on join:
- if "%{rendreVendeurs::*}%" contains "%player%":
- add objects in column "item_rendre" from result of query "SELECT item_rendre FROM ventes_hde WHERE pseudo_vendeur = '%player%'" and close to {_rapporteVentes::*}
- add objects in column "pseudo_acheteur" from result of query "SELECT pseudo_acheteur FROM ventes_hde WHERE pseudo_vendeur = '%player%'" and close to {_acheteurs::*}
- add objects in column "item_vendu" from result of query "SELECT item_vendu FROM ventes_hde WHERE pseudo_vendeur = '%player%'" and close to {_itemsVendus::*}
- set {_count} to 1
- loop size of {_rapporteVentes::*} times:
- if "%{_itemsVendus::%{_count}%}%" is "DELAY REMOVED":
- set {_OffreTriee} to {@OffreTriee}
- replace all "[offre]" in {_OffreTriee} with "%{_rapporteVentes::%{_count}%}%"
- replace all "[delay]" in {_OffreTriee} with "%{_acheteurs::%{_count}%}%"
- send {_OffreTriee} to player
- else:
- set {_OffreVendue} to {@OffreVendue}
- replace all "[offre]" in {_OffreVendue} with "%{_itemsVendus::%{_count}%}%"
- replace all "[rapport]" in {_OffreVendue} with "%{_rapporteVentes::%{_count}%}%"
- replace all "[acheteur]" in {_OffreVendue} with "%{_acheteurs::%{_count}%}%"
- send {_OffreVendue}
- set {_rapporteVentes::%{_count}%} to "%{_rapporteVentes::%{_count}%}%" parsed as item type
- give {_rapporteVentes::%{_count}%} to player
- add 1 to {_count}
- update "DELETE FROM ventes_hde WHERE pseudo_vendeur = '%player%'"
- remove "%player%" from {rendreVendeurs::*}
- on command:
- if {echangeNumbPrix.%player%} is set:
- cancel event
- send "&o/%command%" to player
- set {_notnumber} to {@PasNombre}
- replace all "[message]" in {_notnumber} with "/%command%"
- send {_notnumber}
- send {@NombreItemPrix}
- on skript enable:
- dayTri({@DaysSupr})
- on inventory click:
- if "%inventory name of current inventory of player%" is {@NomMenuHDE}:
- cancel event
- else if "%inventory name of current inventory of player%" is "Confirmer":
- cancel event
- on inventory close:
- if "%inventory name of current inventory of player%" is "Confirmer":
- if {echangeGui.%player%} is set:
- annuler(player, {@AnnuleEchangePrix})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement