run sql <statement>since 1.7.23Run a statement that changes something: INSERT, UPDATE, DELETE, CREATE TABLE
on load:
run sql "CREATE TABLE IF NOT EXISTS visits (player VARCHAR(16), day VARCHAR(10))"Try it← All of the Docs Data and the outside
run sql <statement>since 1.7.23Run a statement that changes something: INSERT, UPDATE, DELETE, CREATE TABLE
on load:
run sql "CREATE TABLE IF NOT EXISTS visits (player VARCHAR(16), day VARCHAR(10))"Try itsql rows of <query>since 1.7.23Run a SELECT. The result is a list with a table for each row, its columns by their names in lower case. Up to 10,000 rows
command /visits:
trigger:
async:
set {_rows} to sql rows of "SELECT day FROM visits WHERE player = ?" with player.name
send "&7You have visited on %size of {_rows}% day(s)."Try itwith <value>, <value>since 1.7.23After either: the values for the question marks in the statement, in order
on player join:
run sql "INSERT INTO visits (player, day) VALUES (?, ?)" with player.name, server.dateTry itWhen HyperScript keeps its variables in a database (storage.type is sqlite, h2 or mysql), scripts can ask that database questions of their own: read what a website or another plugin wrote, or keep a table that is theirs.
on load:
run sql "CREATE TABLE IF NOT EXISTS purchases (player VARCHAR(16), item VARCHAR(40), day VARCHAR(10))"
command /bought:
players only: true
trigger:
async:
set {_rows} to sql rows of "SELECT item, day FROM purchases WHERE player = ?" with player.name
send "&7You have bought %size of {_rows}% thing(s)."
| Syntax | Meaning |
|---|---|
run sql <statement> | Run a statement that changes something: INSERT, UPDATE, DELETE, CREATE TABLE |
sql rows of <query> | Run a SELECT. The result is a list with a table for each row, its columns by their names in lower case. Up to 10,000 rows |
with <value>, <value> | After either: the values for the question marks in the statement, in order |
with, never into the statement itself. ... WHERE name = ? with arg.1 is safe whatever arg.1 is; gluing arg.1 into the text lets a player rewrite your question.async: block, as above.hyperscript_variables and hyperscript_shared. Leave those two to HyperScript.storage.type: json or csv there is no database, and these two say so when they run.Variables several servers have in common. With storage.shared-variables: true and every server using the same database, a variable whose name starts with shared. is the same on all of them: set {shared.event} to "double coins" on one server is what {shared.event} gives on the others a couple of seconds later (storage.shared-refresh). Every other variable stays each server's own. A shared variable is written the moment it changes; two servers changing the same one at the same moment do not add up, the later one wins, so add 1 to {shared.votes} from several servers at once can lose a count. A player's shared value is written with their name or id in it: {shared.coins.%player.uuid%}.