Graal Forums

Graal Forums (https://forums.graalonline.com/forums/index.php)
-   NPC Scripting (https://forums.graalonline.com/forums/forumdisplay.php?f=8)
-   -   Shared functions pack (https://forums.graalonline.com/forums/showthread.php?t=81277)

Skyld 08-17-2008 12:56 AM

Shared functions pack
 
I'm happy to introduce the new clientside shared functions pack. It's a clientside script added to players when they log into Graal, providing new public functions that are available for all servers to use. These are general functions that you might just find handy to speed the scripting process up. It also enables us to provide some new functions quickly without client updates.

Currently the pack just provides a few odd functions, however more will become available in due course. If you have some clientside functions or amendments to existing functions (for instance, new encryption algorithms) that you feel people may benefit from and don't mind sharing, send me them in a forum PM and I'll check them over. If suitable, they might find themselves in this function pack. :) Similarly if you have any ideas, suggestions or bug reports, just let me know or post them here.

Functions

shared.getfontzoom(size) (contributed by Xzirox)
Returns the font zoom depending upon the text size that is set in the player's F3 options.

shared.hextorgb(string) (contributed by Tig)
Converts the RGB-format hex string into an array of {red, green, blue} values. For instance, "#FF0000" comes out as {1, 0, 0}.
PHP Code:

shared.hextorgb("#FA32BF"); 

shared.rgbtohex(red, green, blue) (contributed by Tig)
Converts the RGB into an RGB-format hex string. Essentially the reverse of the above function.
PHP Code:

shared.rgbtohex(10.40.7); 

shared.encrypt(algorithm, string, key)
Encrypts the string with the given key. There are two algorithms available: ENC_SIMPLE and ENC_SIMPLE_NOBASE64. The first is basically the simple encryption algorithm that I posted a while ago, while the second is the same algorithm but without the base64 conversion (so you get less overhead but stranger output characters at times).
PHP Code:

temp.encrypted shared.encrypt(ENC_SIMPLE"test""foo"); 

shared.decrypt(algorithm, string, key)
Decrypts in exactly the same way that the encryption function above works. Provide the encrypted data as the "string", and use the same key to decrypt.
PHP Code:

temp.encrypted shared.encrypt(ENC_SIMPLE"test""foo");
temp.decrypted shared.decrypt(ENC_SIMPLEtemp.encrypted"foo"); 

shared.chat(chat text)
Sets the player's chat text using the privileged setchat function. This means that the chat text works exactly like the chatbar. It interprets things like "showscriptstats" but is set to strip out toalls and toguilds.
PHP Code:

shared.chat("showscriptstats"); 

shared.tan(a)
Provides the missing trigonometry tan() function.

shared.getimgcenter(image name)
Returns an array of {x, y} where the X and Y values correspond to the center of the image relative from the top left of the image.
PHP Code:

shared.getimgcenter("block.png"); 

shared.getdisplayname()
Returns a friendly way of referring to the player on-screen. Guest users will see "Guest User", otherwise the community name/account name are returned instead.

shared.pmswaiting()
Returns an array of player objects from whom there is a PM waiting to be read. This includes external players from other servers.
PHP Code:

for (temp.plshared.pmswaiting())
{
  
//


shared.roundto(value, places)
Rounds the value to the given number of places.
PHP Code:

shared.roundto(3.140.1); 

Functions as of 20080826

shared.stringmerge(string, chars[])
Returns a reformatted string stripping whitespaces and any other single characters provided in the chars array.
PHP Code:

shared.stringmerge("One, two!", {",""!"}); 

shared.setconstants_showstats()
Sets globally scoped variables clientside for showstats to replace 0x? values for easier script comprehension (STATS_ASD, STATS_ICONS, STATS_RUPEES, STATS_BOMBS, STATS_ARROWS, STATS_HEARTS, STATS_AP, STATS_MP, STATS_MINIMAP, STATS_INVENTORYNPCS, STATS_PLAYERS, STATS_RIGHTCLICK_PROFILE).
PHP Code:

shared.setconstants_showstats();
showstats(allstats STATS_BOMBS STATS_ARROWS); 

A script only needs to run shared.setconstants_showstats() once on the clientside for this to be effective.

shared.setconstants_enablefeatures()
Sets globally scoped variables clientside for enablefeatures to replace 0x? values for easier script comprehension (EF_KEY_M, EF_KEY_P, EF_KEY_Q, EF_KEY_R, EF_KEY_SA, EF_KEY_SD, EF_KEY_TAB, EF_CHATTEXT, EF_HEARTSDISPLAY, EF_NICKNAMES, EF_MINIMAP_PMICONS, EF_RIGHTCLICK_PROFILE, EF_EMOTICONS, EF_KEY_ALT5, EF_KEY_ALT89, EF_F2OUTPUT).
PHP Code:

shared.setconstants_enablefeatures();
enablefeatures(allfeatures EF_CHATTEXT EF_NICKNAMES); 

A script only needs to run shared.setconstants_enablefeatures() once on the clientside for this to be effective.

Functions as of 20090530

shared.getAlignmentColor(ap)
Returns an array of {red, green, blue} for the given AP color, allowing you to recreate the default nickname colors.
PHP Code:

shared.getAlignmentColor(player.ap); 

shared.getAlignmentShadowColor(red, green, blue)
Returns an array of {red, green, blue} for the shadow of the given color, allowing you to recreate the default nickname shadows.
PHP Code:

shared.getAlignmentShadowColor(0.750.10.3); 

shared.replacetext(string, search, replace) (contributed by Dusty)
Returns a string. Searches string for search and replaces it with replace.

shared.getSharedFunctions
Returns an array of functions provided by the shared function pack.

Function added Jan 05, 2010

shared.adminMessage(text)
Opens an admin message window that will stay on the player's screen even after serverwarping until the player closes the window.
See: http://forums.graalonline.com/forums...98#post1548498
PHP Code:

shared.adminMessage("You have been disconnected by Tig"); 


Tigairius 08-17-2008 01:05 AM

Awesome. Thank you for this (shared.chat)!

DrakilorP2P 08-17-2008 01:24 AM

Good stuff.

xXziroXx 08-17-2008 01:34 AM

getfontzoom <3

Programmer 08-17-2008 01:56 AM

Thank you!

I've been looking for this kind of (native) support for a long time.

Perhaps you could also implement some of the functions in our (Chompy and I) thread: http://forums.graalonline.com/forums...ad.php?t=79473

Crow 08-17-2008 02:00 AM

I love you. I need somebody to spread rep, I want to rep Skyld for 3 times now D:

cbk1994 08-17-2008 02:00 AM

Very nice! Thank you, Skyld!

Quote:

Originally Posted by Tigairius (Post 1415011)
Awesome. Thank you for this (shared.chat)!

I agree, though Stefan finally added a setChat(chat) function to -Serverlist.

Skyld 08-17-2008 02:03 AM

Quote:

Originally Posted by cbk1994 (Post 1415024)
I agree, though Stefan finally added a setChat(chat) function to -Serverlist.

Not sure whether this will stay (or whether it'll just be changed to call shared.chat()) since I don't think the serverlist is doing as many checks with it for security.
Quote:

Originally Posted by Programmer
Perhaps you could also implement some of the functions in our (Chompy and I) thread: http://forums.graalonline.com/forums...ad.php?t=79473

Sure can look at it. :)

Frankie 08-17-2008 02:23 AM

neato!

cbk1994 08-17-2008 02:34 AM

Quote:

Originally Posted by Skyld (Post 1415025)
Not sure whether this will stay (or whether it'll just be changed to call shared.chat()) since I don't think the serverlist is doing as many checks with it for security.

I'll change it on Vesporia (am glad I decided to put it in the player class as opposed to calling it each time!)

TheStan 08-17-2008 02:58 AM

Skyld, Stefan, I applaud you. And I applaud those who contributed functions. :p

Chompy 08-17-2008 10:23 AM

Might take a look at this? :p http://forums.graalonline.com/forums...ad.php?t=79594
It's an encryption algorithm I made some months ago

And, really nice Skyld :]
Can't wait for more functions to be added

Inverness 08-17-2008 10:37 PM

So why isn't it on login server yet?

Kristi 08-18-2008 05:14 PM

Quote:

Originally Posted by Programmer (Post 1415022)
Thank you!

I've been looking for this kind of (native) support for a long time.

Perhaps you could also implement some of the functions in our (Chompy and I) thread: http://forums.graalonline.com/forums...ad.php?t=79473

I made these ages ago (well, one function that handles all of that optimized for graal), JUST WAITING FOR ACCESS TO THE SHARED FUNCTIONS :cry:

Tigairius 08-18-2008 05:16 PM

Quote:

Originally Posted by Kristi (Post 1415511)
JUST WAITING FOR ACCESS TO THE SHARED FUNCTIONS :cry:

I don't see why Skyld can't upload it for you if they're already made.. ?


All times are GMT +2. The time now is 11:24 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Copyright (C) 1998-2019 Toonslab All Rights Reserved.