Creation/Dev/Script/Client

From Graal Bible
Revision as of 19:18, 12 October 2006 by Stefan (talk | contribs) (→‎Vectors)

Client Supported Script Features

Settings

Name Type Description
$camera::movementspeed float
$pref::audio::choosenvoicecodec integer
$pref::audio::microactivatebyvolume boolean
$pref::audio::microactivationlevel integer
$pref::audio::microinputdevice integer
$pref::audio::microon boolean
$pref::audio::microvolumefactor integer
$pref::audio::midivolume integer
$pref::audio::mp3volume integer
$pref::audio::radiovolume integer
$pref::audio::reversestereo boolean
$pref::audio::sfxvolume integer
$pref::audio::voicevolume integer
$pref::graal::allowglobalpms boolean
$pref::graal::automapping boolean
$pref::graal::defaultfontsize integer Change showtext zoom: $pref::graal::defaultfontsize/24
$pref::graal::dontconnectlevels boolean
$pref::graal::dontloadlistheads boolean
$pref::graal::dontsavepasswords boolean
$pref::graal::dontsavepms boolean
$pref::graal::fixedport boolean
$pref::graal::fixedudpport integer
$pref::graal::language string
$pref::graal::limitnicknames boolean
$pref::graal::loadbuddylistfromserver boolean
$pref::graal::nicknamelimit integer
$pref::graal::nomassmessages boolean
$pref::graal::notoalls boolean
$pref::graal::noudp boolean
$pref::graal::showyourselfonbuddylists boolean
$pref::input::mousesensitivity float
$pref::interior::lockarrays boolean
$pref::terrain::enabledetails boolean
$pref::video::detailfactor float
$pref::video::fogdistance float
$pref::video::fullscreenmode string
$pref::video::screenshotformat string
$pref::video::visibledistance float
$pref::video::windowmode string
$scenelighting::lightingprogress float (read only)

Variables

Name Type Description
allfeatures integer (read only) for use with enablefeatures(), it's the default unless it is changed.
allplayerscount integer (read only) The size of the allplayers array.
allstats integer (read only) A bitflag of all stats currently enabled
canspin boolean (read only) True if the player has spin attack
carriesblackstone boolean (read only) True if the player is carrying a black stone
carriesbush boolean (read only) True if the player is carrying a bush
carriesnpc boolean (read only) True if the player is carrying an NPC.
carriessign boolean (read only) True if a player is carrying a sign.
carriesstone boolean (read only) True if a player is carrying a stone.
carriesvase boolean (read only) True if a player is carrying a vase.
downloadfile string (read only) Name of the file currently being downloaded
downloadpos integer (read only) Amount of download file already downloaded
downloadsize integer (read only) Size of the file being downloaded
editingmission boolean
emoticonchar string (read only) The letter of the emoticon being displayed by the player
focusx float (read only) X coordinate of the center of playing screen in the level, offset -1.5
focusy float (read only) Y coordinate of the center of playing screen in the level, offset -2
graalversion float (read only) Graal version
gravity float Downward acceleration for projectiles ejected with the shoot() function.
iscarrying boolean (read only) True if the player is carrying anything
isfocused boolean (read only)
isgraal3d boolean (read only) True if you are running graal 3D
isleader boolean (read only) signifies that the player is the first person in the level
isonmap boolean (read only) signifies that the player is on a map
lastdownloadfile string (read only)
leftmousebutton boolean (read only) True if the left mouse button is down
levelorgx float (read only) The x-value of the levels' origin (may deviate with attachplayertoobj)
levelorgy float (read only) The x-value of the levels' origin (may deviate with attachplayertoobj)
lighteffectsenabled boolean (read only) signifies that the player has enabled light effects
weathereffectsenabled boolean (read only) signifies that the player has enabled weather effects
particleeffectsenabled boolean (read only) signifies that the player has enabled particle effects
middlemousebutton boolean (read only) True if the middle mouse button is down
mousebuttons integer (read only) Counts the amount of mousebuttons pressed
mousescreenx integer X coordinate of the mouse on the GUI layer
mousescreeny integer Y coordinate of the mouse on the GUI layer
mousewheeldelta integer (read only) Amount that the mouse scroll wheel was scrolled [(-) is up, (+) is down]
mousex float X coordinate of the mouse on the tile layer
mousey float Y coordinate of the mouse on the tile layer
musiclen integer (read only) The duration of the playing sound file
musicpos integer (read only) The position in the file at which the sound file is
rightmousebutton boolean (read only) True if the right mouse button is down
screenheight integer (read only) Height of the Graal window
screenwidth integer (read only) Width of the Graal window
scriptedcontrols boolean (read only)
scriptedplayerlist boolean (read only)
selectedlistplayers object an array of players highlighted on the playerlist
selectedsword integer
selectedweapon integer Index of player.weapons that references the player's current weapon
servername string (read only) Name of the current server
serverstartconnect string
serverstartparams string
shotbybaddy boolean (read only) True if the player was shot by a baddy
shotbyplayer boolean (read only) True if the player was shot by another player
showterraingrid boolean
timevar integer (read only) A timer which is increased each 5 seconds and is snychronized between server and clients; The timer started exactly on 2001-02-01 at 18:33:34 Paris time (opening of Graal2001); on serverside the unixtime (timevar2) is around 981048814 + timevar*5
timevar2 float (read only) Unix-time with a very high precision, not synchronized between server and client
wasshooted boolean (read only)
waterheight float The height of water at the player's (x,y) on a terrain
weapons object (read only) An array of weapon objects
weaponsenabled boolean Are weapons enabled? (Player can trigger onWeaponFired...)
worldclockstopped boolean
worldhour integer
worldminute float
worldminutesofday float
worldrealsecondsperday float

Variable Prefixes

Prefix Description
object.var accesses the variables of the object. The object can be retrieved by using the case-sensitive name of the object or a variable pointing to the object.
this.var variables that belong to the current script object, on the server-side they are saved to file when the object is a database npc
thiso.var refer to the this. variables of the executing npc ('o' stands for original) when you use the with () command: with (findnpc("npc2")) thiso.temp = this.temp; will copy 'this.temp' from npc2 to the current npc
player.var variables of the current player object, when the event was invoked by a player (e.g. playertouchsme), or you do with (findplayer(accountname))
playero.var variables of the original player object, in generally the player who has invoked the event (e.g. playertouchsme)
client.var short for player.client.var, variables that can be changed on server-side and client-side
clientr.var short for player.clientr.var, variables that can only be changed on server-side but can be read on client-side
server.var variables that only exists on server-side and can be accessed by all npcs
serverr.var variables that can only be changed on server-side and is server wide, but can also be read by all clients, so it can be used for storing the state of global activities that need client-side actions like displaying weather; like server. vars they can also be changed with remotecontrol.exe by administrators that have the right to change server. variables
level.var variables of the current level, which is the level the executing npc stands in (on server-side) or the player is in (on client-side)

Functions

Note: Currently this doesn't list the functions which are optimized at compile time, see Starting Guide: Standard functions for those.

Common

  • aindexof(float, obj) - returns integer
  • echo(str text)
  • getbasepackage() - returns object
  • getdisplaydevicelist() - returns string
  • getdownloadedupdatepackagesize() - returns integer
  • getdownloadingpackage() - returns object
  • getdownloadingpackagescount() - returns integer
  • gethttprequest(str, int, str) - returns THTTPRequest object
  • getkeycode(str keyname) - returns integer
  • getpackagesdownloadcomplete() - returns boolean
  • getpackagesdownloaded() - returns boolean
  • getplatform() - returns string
  • getresolutionlist(str) - returns string
  • getservername() - returns string
  • gettotalupdatepackagesize() - returns integer
  • getupdatepackage(str) - returns object
  • isadminguild(str guildname) - returns boolean
  • isdevicefullscreenonly(str devicename) - returns boolean
  • isobject(str objectname) - returns boolean
  • keydown(int keynumber) - returns if the specified key is pressed (0..10: up, left, down, right, S, A, D, M, tab, Q, P)
  • keydown2(int keycode, bool ignorecase) - returns boolean
  • keyname(int keycode) - returns string
  • opengraalurl(str url)
  • openurl(str url)
  • openurl2(str url, int width, int height)
  • requesthttp(str, int, str) - returns THTTPRequest object
  • requestmysql(str, str, str, str, str) - returns object
  • requesttext(str, str)
  • requesturl(str url) - returns THTTPRequest object
  • savelog(str text)
  • sendrpgmessage(str text)
  • sendtext(str, str, params...)
  • sendtorc(str text)
  • serverwarp(str serverunixname)
  • synctimeofday(float, float)

Files

  • extractfilebase(str filepath) - returns string, '/an/example/path/and/file' would return '/an/example/path/and/'
  • extractfileext(str filepath) - returns string, 'filename.ext' would return '.ext'
  • extractfilename(str filepath) - returns string, '/an/example/path/and/file' would return 'file'
  • extractfilepath(str filepath) - returns string, '/an/example/path/and/file' would return '/an/example/path/and/'
  • fileexists(str filepath) - returns boolean, checks if a file exists
  • filesize(str filepath) - returns integer, returns the size of a file
  • fileupdate(str filepath) - returns boolean
  • findfiles(str, int) - returns object
  • findfirstfile(str) - returns string
  • findnextfile(str) - returns string
  • getextension(str filepath) - returns string, 'filename.ext' would return '.ext'
  • reloadfile(str filepath)
  • requestfiledeletion(str filepath), requests a file to be deleted on the server
  • requestfilerename(str filepath, str newfilepath), requests a file to be renamed on the server
  • requestfilesmove(str filepath, str newfilepath), requests a file to be moved on the server
  • selectfilefordownload(str filter)
  • selectfileforupload()

Watch the TGraalVar object for loading and saving of files (loadlines etc.)

Math

  • degtorad(float value) - returns float
  • radtodeg(float value) - returns float
Matrices
  • matrixcreate(str, str) - returns string
  • matrixcreatefromeuler(str) - returns string
  • matrixmulpoint(str, str) - returns string
  • matrixmultiply(str, str) - returns string
  • matrixmulvector(str, str) - returns string
Vectors

Each vector is basicly an array of format {x,y,z} but is passed as string for simplicity.

  • vectoradd(str, str) - returns string
  • vectorcross(str, str) - returns string
  • vectordist(str, str) - returns float
  • vectordot(str, str) - returns float
  • vectorlen(str) - returns float
  • vectornormalize(str) - returns string
  • vectororthobasis(str) - returns string
  • vectorscale(str, float) - returns string
  • vectorsub(str, str) - returns string

Strings

  • base64decode(str text) - returns decoded string
  • base64encode(str text) - returns encoded string
  • checksum(str text) - returns checksum float
  • contains(str haystack, str needle) - returns boolean, you should probably do haystack.contains(needle) instead
  • getascii(str character) - returns ascii value integer
  • getstringkeys(str leading) - searchs for variables which start with the specified string and returns and array of their ending
  • lowercase(str text) - returns lowercased string, it is recommended to use string.lower() though
  • md5(str text) - returns md5 hash string
  • randomstring(array of strings) - returns string
  • strcmp(str text1, str text2) - returns integer
  • strequals(str text1, str text2) - returns boolean, you probably should do text1.equals(text2) instead
  • uppercase(str text) - returns uppercased string, it is recommended to use string.upper() though

GUI

  • addcontrol(obj)
  • cursoroff()
  • cursoron()
  • iscursoron() - returns boolean
  • popdialog()
  • pushdialog(obj)
  • setcontentcontrol(obj)
  • setcursor2(str imagefilename)

Graal 2D

Name Type Description
addtiledef(str tilesetimage, str prefix, int tilesettype) Sets the tileset image for levels beginning with the specified prefix.

Tileset type 0 is for pics1.png style tilesets. Tileset type 1 is for the new tileset format (Era's tiles for example)

addtiledef2(str tilesetimage, str prefix, int x, int y) Replaces a section of the tileset (x, y) image for levels beginning with the specified prefix.
attachplayertoobj(int objtype, int id) Attaches a player to the specified object. Using attachpayertoobj(0, id); the player will be attached to the current NPC.
callnpc(int npcindex, params...) Calls an npc function with name "on" @ params[0] in npc with index npcindex without moving from serverside to clientside or vise-versa.
callweapon(int weaponindex, params...) Calls an weapon function with name "on" @ params[0] in player weapon with index weaponindex without moving from serverside to clientside or vise-versa.
commandtoserver(str text) Graal 3D Command
detachplayer() Puts the player back on the level (after using attachplayertoobj).
disabledefmovement() Disables the default movement.
disablemap() Disables the default map
disablepause() Disables pausing.
disableselectweapons() Disables the default Q menu.
disableweapons() Disables weapons.
enabledefmovement() Enables default movement
enablefeatures(int flags) Enable/disable client features

Flags can consist of:

Value Description
1 M key (map)
2 P key (pause)
4 Q key (weapon select)
8 R key (show ratings)
0x10 S+A key combination for dropping items
0x20 S+D key combination for switching weapons
0x40 TAB key (if disabled then you cannot switch to the chat field with TAB)
0x80 Display of chat text
0x100 Display of the hearts over player heads
0x200 Display of nicknames
0x400 Toall/PM-icons on the minimap
0x800 Right-click on players opens their profile
0x1000 Emoticons (disable it if you want to do other stuff with control+keys)
0x2000 Alt+5 for making snapshots (deprecated)
0x4000 Alt+8/9 for zooming (deprecated)
0x8000 The logframe where savelog stuff is added
allfeatures All of the previously stated feature flags enabled
enablemap() Enables default map.
enablepause() Enables pausing.
enableselectweapons() Enables default Q menu.
enableweapons() Enables weapons.
explodebomb(int bombindex) Explodes a bomb with the specified index.
findani(str) TGraalAni object
findlevel(str levelfilename) TServerLevel object
findplayer(str accountname) TServerPlayer object Returns player object of Account specified. Player must be online.
findplayerbyid(int playerid) TServerPlayer object Returns player object of id specified. If id isn't available, returns false.
findweapon(str weaponname) TServerWeapon object Returns weapon object of name specified. Returns false if weapon doesn't exist.
freezeplayer(float seconds) Freezes player for a specific amount of time.
getimgheight(str imagefilename) integer Returns the height (in pixels) of an image.
getimgwidth(str imagefilename) integer Returns the width (in pixels) of an image.
getmapx(str levelname) integer X coordinate of the level on a map (top-left level is 0)
getmapy(str levelname) integer Y coordinate of the level on a map (top-left level is 0)
gettextheight(float, str, str) integer Returns the height of the font. Format:
 gettextheight(zoom, font, style)
gettextwidth(float, str, str, str) integer Returns the width of a specified text in a certain font. Format:
 gettextwidth(zoom, font, style, text)
getz(float x, float y) float Returns the z value of a terrain at (x,y).
hideplayer(float seconds) Hides the player for seconds seconds.
hidesword(float seconds) Hides the player's sword for seconds seconds.
hitnpc(int, float, float, float)
hitobjects(float, float, float)
hitplayer(int, float, float, float)
lay2(str extraname, float x, float y)
loadmap(str mapfilename)
noplayerkilling() Disables killing of other players.
onwall(float x, float y) boolean Returns true if the specified x and y is a blocking tile.
onwall2(float x, float y, float width, float height) boolean Returns true if a blocking tile exists in the specified area.
onwater(float x, float y) boolean Returns true if the specified x and y is water.
onwater2(float x, float y, float width, float height) boolean Returns true if water exists in the specified area.
play(str soundfilename) Plays the specified sound file.
play2(str soundfilename, float x, float y, float volume) Plays the specified sound file at location x, y with the specified volume. Volume should be between 0 and 1, if volume is set to 1 default volume is used (depending on how far away the player is).
playlooped(str soundfilename) Plays the specified sound file in a loop until stopsound() is called.
playlooped2(str soundfile, float x, float y, float volume) Plays the specified sound file at location x, y with the specified volume in a loop until stopsound() is called. Volume should be between 0 and 1, if volume is set to 1 default volume is used (depending on how far away the player is).
putleaps(int leapstype, float x, float y)
removetiledefs(str prefix) Remove tile definitions set by addtiledef and addtiledef2 for the specified prefix.
replaceani(str defaultaniname, str newaniname) replaces the player's default ani with the new ani.
resetfocus() Sets the screen focus to the player.
say(int signindex)
say2(str text)
screenx(float x, float y) integer returns the x of the screen layer for a location on the tiles layer.
screeny(float x, float y) integer returns the y of the screen layer for a location on the tiles layer.
worldx(float x, float y) float returns the x of the tiles layer for a location on the screen layer.
worldy(float x, float y) float returns the y of the tiles layer for a location on the screen layer.
setani(str aniname, str aniparams) Sets the gani of a player.
setbeltcolor(str color)
setcoatcolor(str color)
seteffect(float r, float g, float b, float a)
setfocus(float x, float y) Sets the screen focus to the specified x and y.
setgender(str gendername) Sets the gender of a player.
sethead(str imagefilename) Sets the head of a player
setletters(str imagefilename) Sets the image to use for sign background and text.
setmap(str, str, float, float)
setminimap(str, str, float, float)
setmusicvolume(float, float)
setplayerdir(str)
setshield(str imagefilename, int shieldpower)
setshoecolor(str color)
setshootparams(str params)
setskincolor(str color)
setsleevecolor(str color)
setsword(str imagefilename, int swordpower)
showstats(int statsflag) With this you can show/hide parts of the status bar / game

Examples:

// Shows all
showstats(allstats);

// Enable everything except minimap
showstats(allstats & ~0x100);

// Enable everything except AP and MP bars
showstats(allstats & ~(0x40 | 0x80));

// Enable only players and right-click profile
showstats(0x400 | 0x800);

// Hides all
showstats(0);

Flags can consist of:

Value Description
1 ASD
2 Icons (for rupees, bombs, arrows)
4 Rupees count
8 Bombs count
0x10 Arrows count
0x20 Hearts
0x40 Alignment (ap) bar
0x80 Magic points (mp) bar
0x100 Minimap (you can only hide it, you can't show it when the player pressed Alt+3)
0x200 Inventory NPCs
0x400 Players
0x800 Right-click on players opens their profile
allstats All of the previously stated stats flags enabled
spyfire(int length, int power) Shoots a line of fire in the direction of the player with the specified tile length, and fire power (1 - bomb, 2 - super bomb, 3 - jolt bomb).
stopmidi()
stopsound(str soundfilename) Stop playing a sound started by playlooped
takeplayercarry()
takeplayerhorse()
testplayer(float x, float y) integer
triggeraction(float x, float y, str dest, params...)
triggerserver(str dest, str params)
updateboard(int x, int y, int width, int height)
updateratings(obj) object Updates an array of {rating1,ratingdeviation1, rating2,ratingdeviation2, ...}, init them at 1500 and 350.

Example:

newratings = updateratings({winner.rating,winner.ratingd,loser.rating,loser.ratingd});
winner.rating = newratings[0];
winner.ratingd = newratings[1];
loser.rating = newratings[2];
loser.ratingd = newratings[3];
wraptext(int fontsize, str format, str text) array of strings
wraptext2(int pixelwidth, float zoom, str delimiters, str text) array of strings wraps the text so that it fits in the specified number of pixels and returns an array of text lines

Graal 3D

  • addmaterialmapping(str, str) - returns boolean
  • getboxcenter(str) - returns string
  • getdatablocktypes() - returns object
  • getobjectat(float, float) - returns object
  • getobjectatmouse() - returns object
  • getobjectbyray(str, str) - returns object
  • getsurfacetype(float, float) - returns string
  • lightscene() - returns boolean
  • mapshapeanimation(str, str, str, float) - returns boolean
  • setfogcolors(obj)
  • setinteriorrendermode(int)
  • setshadowdetaillevel(float)
  • setskybandcolors(obj)
  • setskybandsizes(obj)
  • setsuncolors(obj)
  • setterrainrendermode(int)
  • updateterrain()
  • updatevisibledistance()

Other

  • adventure_installgraal(str, bool, bool)
  • adventure_openexternaloptions() - returns boolean
  • adventure_openexternalpm(obj) - returns boolean
  • adventure_openserverlist()
  • adventure_quit()
  • adventure_savegraaloptions()
  • adventure_selectpath(str) - returns object
  • adventure_setaccountname(str)
  • adventure_setchat(str)
  • adventure_setnickname(str)
  • adventure_setpassword(str)
  • adventure_startofflinemode()
  • adventure_updateaccountfield()
  • adventure_updatemicroactivationlevel()
  • adventure_updatemidivolume()
  • adventure_updatemp3volume()
  • adventure_updateplayermuted()
  • adventure_updateplayerprofile(bool, str, str, int, str, str, str, str, str, str)
  • adventure_updateradiovolume()

(these functions are only available to privileged scripts from the Login server)

Classes / Object Types