|
|
Line 1: |
Line 1: |
| ==2.121==
| |
|
| |
|
| fixed ghost movement on graal2002,
| |
| also ghosts can now see ganis with script
| |
| like the torch lamps
| |
|
| |
| ==2.12==
| |
|
| |
| compatibility of the clients for Graal2001 and Graal2002
| |
|
| |
| many new features for Graal2002, which will
| |
| be listed later when the game is public
| |
|
| |
| fixed updating images from the server
| |
|
| |
| fixed some linking problems
| |
|
| |
| new editor mode: it's now possible to do
| |
| multilevel-editing (when an npc called setmap);
| |
| also the drawing is using the correct npc
| |
| y-order; scrolling is different: click on the
| |
| player and move him around, or use the arrow
| |
| keys to move to the visible level part
| |
|
| |
| new script commands:
| |
| * wraptext linelength,delimiters,text;
| |
| Word-wraps a text into pieces each of length
| |
| 'linelength'; the result can be accessed by reading
| |
| #t(0..tokenscount-1)
| |
| * wraptext2 pixelwidth,zoomfactor,delimiters,text;
| |
| Wraps a text depending on the visible text width;
| |
| instead of the numbers of characters you give the
| |
| width of the text on the screen (in pixels);
| |
| the text can be like in showimg, e.g. @TimesRoman@b@text
| |
|
| |
| #f(index) gives you the image of the npc with the
| |
| specified index
| |
|
| |
|
| |
| ==2.103==
| |
|
| |
| baddys can't be hurt/killed again when they
| |
| are already hurt/killed
| |
|
| |
| the auto-mapping works even when you are on
| |
| a ship (attachplayertoobj)
| |
|
| |
| fixed arrows shooting position
| |
|
| |
| npcs are correctly deleted when a level
| |
| is deleted
| |
|
| |
|
| |
| ==2.102==
| |
|
| |
| fixed script command setminimap
| |
|
| |
|
| |
| ==2.101==
| |
|
| |
|
| |
| added the ghost icon to state.png
| |
| and ghostbody.png
| |
|
| |
| fixed bluelampani.mng
| |
|
| |
| fixed changing the body
| |
|
| |
| arrows cannot hurt ghosts anymore
| |
|
| |
|
| |
| ==2.1==
| |
|
| |
|
| |
| new standard tiles for trees and
| |
| houses and signs
| |
|
| |
| new interface for starting window and
| |
| serverlist, it shows informations about
| |
| your account;
| |
| if you are in the serverlist you can go
| |
| back to the starting window by pressing F8
| |
|
| |
| completely redone engine for holding the
| |
| images in the memory; this avoids using the
| |
| windows GDI (graphical interface) which caused
| |
| memory leaks and other problems;
| |
| with this new engine the game should take
| |
| much less resources and memory
| |
|
| |
| the editor opens a new empty level when
| |
| you press F4 while playing the tutorial levels
| |
| instead of showing the error message that
| |
| the tutorial level does not exist on the
| |
| hard drive (since it is encoded in the exe
| |
| and not meant to be editable)
| |
|
| |
| when you are in a level where playerkilling is
| |
| disabled then you see a little sign right to
| |
| the alignment bar which shows a red cross on
| |
| a sword
| |
|
| |
| the script variable timevar works in
| |
| offline mode too
| |
|
| |
| fixed problem with the % operator on big
| |
| values
| |
|
| |
| new script function ascii(c) to get the
| |
| ascii code of a character (ascii(A) is 65);
| |
| the other way (converting ascii code to
| |
| character) can still be done by using the
| |
| #K(num) message code (#K(65) is A)
| |
|
| |
| there shouldn't be 'Invalid floating point'
| |
| error messages any more on voodoo cards
| |
| (please disable the use of direct3D in the
| |
| Graal options if the effects are too slow for you)
| |
|
| |
| when a chat text or a nickname contains a line that is
| |
| too long for being displayed on the screen, then
| |
| only the visible part is drawn instead of
| |
| hiding it like in old Graal versions
| |
|
| |
| new script variable tiles[x,y] which can be
| |
| used as replacement for the board[index] variable;
| |
| it also works for tiles in near levels on overworlds
| |
| (tiles[-1,20] will read the tile at (63,20) of the
| |
| level left to the current level)
| |
|
| |
| in the editor there is a new option 'Predefined npcs';
| |
| there are all scripts (text files) listed where the
| |
| filename starts with 'defnpc' and ends with '.txt';
| |
| you can select the npc, then drag&drop it onto the level
| |
| by clicking on the npc outline icon left of the choice
| |
| box and moving it onto the level;
| |
| in the script file you can insert lines like
| |
| #COMMENTS This is a door
| |
| for changing the comments that are displayed under the
| |
| choice box, and
| |
| #EDIT redvalue 1
| |
| to let the user change a value in the script:
| |
| when you add the npc to the level then
| |
| all occurances of the variable ('redvalue') will
| |
| be replaced by the entered text (in this case '1'
| |
| if you don't change the text)
| |
|
| |
| some windows have been removed (sign message codes,
| |
| add-npc window) and the stuff from it is integrated into
| |
| other windows so the level editing is simplier;
| |
| the options window and add-showcharacter windows
| |
| use tabsheets
| |
|
| |
| snapshots levels made with Alt+5 handle lights correctly,
| |
| also fixed some other problems with snapshot levels
| |
|
| |
| support for smilies in PMs: some text like :D and :eek:
| |
| is automatically replaced by smilie-images when reading
| |
| a PM (and having html-pms turned on); you can change the
| |
| list of smilies by editing the file smiliesdef.txt in the
| |
| folder levels/smilies (add a line 'code,filename' for adding
| |
| a new smilie)
| |
|
| |
| fixed 'vibrations' when being on a moving ship
| |
|
| |
| switching to fullscreen and back to window mode should
| |
| work better instead of flashing the screen several times
| |
|
| |
| ganis can contain scripts, put it in a block:
| |
| SCRIPT
| |
| if (blabla)...
| |
| SCRIPTEND
| |
| It is restricted to this. variables and can only use
| |
| functions for playing music files and displaying showimgs
| |
|
| |
| new script function getangle(dx,dy)
| |
|
| |
| String arrays! they are saved in normal flags/string
| |
| variables and look like 'myarray=123,"45",67,"8,9"'
| |
| Commands/Functions:
| |
| addstring list,text;
| |
| insertstring list,index,text;
| |
| replacestring list,index,text;
| |
| removestring list,text;
| |
| deletestring list,index;
| |
| sarraylen(list)
| |
| lindexof(list,text)
| |
| #I(list,index) - gives you the string on place 'index'
| |
|
| |
| new script command play2 wavfile,x,y,volume;
| |
| x,y specifys from where the sound should come from;
| |
| volume must be between 0 and 1, if set to 1 then the
| |
| default volume will be used (depending on how far x,y
| |
| is away from the player)
| |
|
| |
| auto mapping: the Graal program now automatically
| |
| downloads map files and minimap images, and updates
| |
| the bigmap (M) by drawing the screen on the map when you
| |
| move 8 tiles; this options can be turned off in the
| |
| Graal options if wished; when you leave a level then it
| |
| saves the part of the map that belongs to that level on
| |
| hard disk into the maps/parts folder; next time you start
| |
| Graal it loads the map parts automatically, that way
| |
| you always have an up-to-date map;
| |
| the map and minimap is no longer set by the listserver,
| |
| its now done by the gserver itself, which means playerworld
| |
| owners can change the default map/minimap by adding lines
| |
| to the serveroptions.txt:
| |
| bigmap=bigmap.txt,map.png,12.2,8
| |
| minimap=minimap.txt,map2.png,5.2,7
| |
| it works exactly like the script commands setmap/setminimap
| |
|
| |
| new script variable 'graalversion' to detect the Graal
| |
| version the npc is running on
| |
|
| |
| ghost mode, which makes it possible to let new players see
| |
| Graal2001 for free; it will also be used to limit the
| |
| player count on 'free' servers (if you have not upgraded
| |
| then you will login as ghost and wait in a queue till you
| |
| are activated)
| |
|
| |
| important actions are logged in a new log window that you
| |
| can open by pressing Alt+0; it logs things like initializing
| |
| DirectX, Direct3D, but also the login/logout of players
| |
| and sending of explosions etc.; more stuff will be added in the
| |
| future
| |
|
| |
| script commands callweapon and callnpc doesn't allow the 'created'
| |
| flag anymore
| |
|
| |
| fixed showimg synchronization
| |
|
| |
| in the tiles panel in the editor you can select multiple tiles
| |
| at once: select a block of tiles by clicking on the upper lef
| |
| edge, then moving the mouse to the lower right edge and
| |
| releasing it, then pasting it on the level
| |
|
| |
| all default images included in Graal are now using the
| |
| image formats png or mng instead of gif
| |
|
| |
|
| |
| ==2.052==
| |
|
| |
| the script variable playerscount is fixed
| |
| (was not working for npc weapons)
| |
|
| |
| when you create a new level then the current
| |
| background tile is used for the background (instead
| |
| of a black tile)
| |
|
| |
| when switching to other servers then the correct
| |
| server name is displaying in the window title
| |
|
| |
| openurl2 works more than one time
| |
|
| |
| hidden npcs can use the command showimg
| |
|
| |
| when the map is changed (script command setmap) then
| |
| the new map is immediatelly applied
| |
|
| |
| the little yellow hint window that shows the names
| |
| of players on the minimap is hidden when you switch
| |
| to other applications
| |
|
| |
|
| |
| ==2.05==
| |
|
| |
| This time there are mainly bug fixes.
| |
|
| |
| removed the problem with memory error
| |
| 2.2 (an error window that sometimes popups)
| |
|
| |
| the graal window now shows the name of the
| |
| server in the title bar
| |
|
| |
| there is a new button in the script editor
| |
| window that lets you format a text, it makes
| |
| the script looking similar to the debugger
| |
| screen, but is also formatting comments lines;
| |
| it's not perfect but can help a little bit
| |
| for understanding scripts written by other
| |
| people
| |
|
| |
| setshape2 supports array variables for the tilestype
| |
| array instead of only static arrays
| |
|
| |
| when npcs do showimg (especially on the npcserver) then
| |
| showimgs will not be deleted when you leave the level,
| |
| so you still see it when reentering the level where
| |
| the npcs stands
| |
|
| |
| playing of sounds (playlooped) is stopped when switching a
| |
| server
| |
|
| |
| bombs don't destroy half bushes
| |
|
| |
| new file format (exists since beginning of 2000 but was
| |
| only available for newworld team):
| |
| The new level format is text based. If you want to edit it
| |
| outside of Graal, use a text editor which doesn't wrap lines.
| |
| You automatically produce a file in the new format when you
| |
| save to a file with ending .nw
| |
| Those files are bigger than .graal files, but because it is
| |
| text-based it is easier to edit parts of it (e.g. ncp script)
| |
| without opening the game, or to write tools that
| |
| do changes to the levels, like adding npcs to levels. The
| |
| graal servers support that file format too, the data sent to
| |
| the player is the same size like when using .graal files, so it
| |
| will not make the game laggier
| |
|
| |
| Format:
| |
| It begins with the signature GLEVNW01.
| |
| It can contain following data types:
| |
|
| |
| * board lines:
| |
|
| |
| BOARD x y width layerindex <tilesdata>
| |
|
| |
| This is one line of the background layer. 'tilesdata' has a length if w*2
| |
| characters; each tile is a 12bit-index into the tile list (pics1.png) and is
| |
| encoded in two base64 characters (upper 6 bit first)
| |
| base64: String = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
| |
| so AA is tile 0, AB is tile 1, AC is tile 2, // is tile 4095 (=0xFFF)
| |
|
| |
| * level links:
| |
|
| |
| LINK <destination-level> x y width height newx newy
| |
|
| |
| The link attributes are the same like in the link options window in Graal.
| |
| destination-level, newx and newy must not contain spaces.
| |
|
| |
| * signs:
| |
|
| |
| SIGN x y
| |
| text
| |
| ...
| |
| SIGNEND
| |
|
| |
| Signs may be empty, but SIGNEND must always be there.
| |
|
| |
| * npcs:
| |
|
| |
| NPC imagefilename x y
| |
| script
| |
| ...
| |
| NPCEND
| |
|
| |
| If the npc doesn't have a filename (invisible npc), then write '-' for imagefilename.
| |
| x and y may be floating point values. The npc script may be empty, but NPCEND
| |
| must always be there
| |
|
| |
| * baddies:
| |
|
| |
| BADDY x y type
| |
| attackverse
| |
| hurtverse
| |
| winverse
| |
| BADDYEND
| |
|
| |
| 'type' is the baddy name (graysoldier ... dragon ) or index (0...9). You don't need
| |
| to write all 3 verses, it's also possible to only write attackverse+hurtverse or only
| |
| attackverse, but BADDYEND must always be there.
| |
|
| |
| * chests:
| |
|
| |
| CHEST x y item signindex
| |
|
| |
| item is the item name (greenrupee ... spinattack) or item index (0...24)
| |
|
| |
|
| |
| ==2.04==
| |
| This version contains major improvements in the game engine.
| |
|
| |
| ===Sound===
| |
|
| |
| PARAM1 enabled for the PLAYSOUND command in gani files, also
| |
| message codes can be used with the script command play;
| |
|
| |
| You can make an animation that plays differnet sounds/tones,
| |
| so this makes it possible to create instruments
| |
|
| |
| ===Animations===
| |
|
| |
| replacegani aniname,newani;
| |
| Lets the player use a different animation for
| |
| walking, swimming etc. You can do things like
| |
| replacegani walk,mywalk; if you want the player
| |
| use mywalk.gani as walking animation (instead of
| |
| writing your own walking script); This takes only
| |
| effect till the player logs off, so you must put it
| |
| in a system npc or so; its not lagging;
| |
| The default animations are:
| |
| idle,walk,walkslow,kick,sword,ridesword,
| |
| spin,push,grab,pull,lift,carrystill,
| |
| hiddenstill,carry,hidden,shoot,ridestill,
| |
| ridefire,rideeat,ride,sit,sleep,hurt,
| |
| ridehurt,dead,maps1,maps2,maps3,swim,
| |
| lava,carried
| |
| To reset the default animation just do
| |
| replacegani walk,walk; etc.
| |
|
| |
| Using replacegani you can do things like
| |
| holding a torch while running (*olympic games*).
| |
| It's only allowed/enabled for upgraded servers.
| |
|
| |
| ===Tiles===
| |
|
| |
| addtiledef tilesimage,levelstart,type;
| |
| uses the file 'tilesimage' in replacement of
| |
| 'pics1.png' in all levels that start with 'levelstart';
| |
| type: 0-old graal, 1-new order(description later)
| |
|
| |
|
| |
| addtiledef2 tilesimage,levelstart,x,y;
| |
| this is similar to addtiledef, but only replaces
| |
| a part of the tiles image; its like putting an
| |
| image on top of the tiles image (normally pics1.png),
| |
| this is good for replacing the default chair or lamp
| |
| or so; this supports animated images, but keep in mind
| |
| that all tile replacements must be hold in memory
| |
| and be animated, so better only use it in the levels
| |
| you need it;
| |
| These two commands are very powerful and are only
| |
| enabled for upgraded servers.
| |
|
| |
|
| |
| removetiledefs levelstart;
| |
| removes tile definitions for levels that start with
| |
| 'levelstart'
| |
|
| |
| support for object sets, saved in the tileobjects folder and selectable
| |
| in the editor
| |
|
| |
| ===NPC layers===
| |
|
| |
| setshape type,pixelwidth,pixelheight
| |
| Sets the shape for an npc. It already existed on
| |
| the npcserver, but is usefull for client-side stuff to.
| |
| type is the the shape type, the only one supported
| |
| is 1 (=rectangle); it makes the npc behave like
| |
| a fixed rectangle, no matter how big the image is or
| |
| if its already loaded; to set it back to default
| |
| do setshape 0,0,0;
| |
|
| |
|
| |
| setshape2 width,height,{tiletypes,...}
| |
| Lets the npc behave like a level, which means you can set
| |
| what size it has (in tiles) and how the tiles behave;
| |
| e.g. do setshape2 2,2,{3,3,3,3}; to make an npc that behaves
| |
| like a chair. Following tile types are supported:
| |
| 0 nonblocking
| |
| 2 hurting underground
| |
| 3 chair
| |
| 4 bed upper side
| |
| 5 bed lower side
| |
| 6 swamp
| |
| 7 lava swamp
| |
| 8 near water
| |
| 9 near lava
| |
| 11 water
| |
| 12 lava
| |
| 20 throw-through (fences)
| |
| 21 jumping stone
| |
| 22 blocking tile
| |
|
| |
|
| |
| attachplayertoobj objecttype,id;
| |
| Attaches the player to an object, currently only npcs are
| |
| supported (objecttype=0); the id must be the id of the npc
| |
| you want to attach the player at
| |
| when the player is attached, you can do if (playerattached) to
| |
| check if he is attached; new player attributes playerattachid
| |
| and playerattachtype; new variables levelorgx,levelorgy for
| |
| getting the origin of the level/npc where the player is in
| |
|
| |
| This command is good for all kinds of layers or moving
| |
| objects, together with the setshape2 command you can do
| |
| levels-in-levels things. It can be used for bridges,
| |
| ships, baloons, platforms in quests. Don't forget to detach the
| |
| player when he should go back to the normal level. The
| |
| position of the player is not saved when he is on such
| |
| an npc.
| |
| This command is only allowed/enabled for upgraded servers
| |
|
| |
|
| |
| detachplayer
| |
| Puts the player back into the normal level
| |
|
| |
|
| |
|
| |
| ===Showimg/show text===
| |
|
| |
| showimg colors,layer, and zoom is sent to other players (even
| |
| when the layer is 4, then only values between 0 and 440 allowed)
| |
|
| |
| showing text with showimg
| |
| you can do showimg 1,@Hello!,x,y; do show text; setting
| |
| font and style is possible by doing showimg index,@font@style@text,x,y;
| |
| (style: characters from 'bicus', b-bold, i-italic, c-centered,u-underline,
| |
| s-strikeout); for change the view of the text use the commands
| |
| changeimgzoom,changeimgcolors
| |
|
| |
| showimg works now server-side, layer 4 works too
| |
|
| |
| weaponscount variable, #w(index) gives you the weapon names,
| |
| #W(index) the weapon images; you can assign values to selectedweapon
| |
| to change the selected weapon of the players; use
| |
| enable/disableselectweapons if you want to disable the weapon
| |
| select screen (Q)
| |
|
| |
| ===Other features/bug fixes===
| |
|
| |
| check for correct tiles when lifting/eating/slaying bushes
| |
|
| |
| faster search for files (lookup in the filename list)
| |
|
| |
| bombs and arrows go to near levels
| |
|
| |
| chat text is always displayed at least 3 seconds
| |
|
| |
| message codes possible in #K() (for inserting special characters
| |
| into text)
| |
|
| |
| the script command stopsound doesn't crash the game when sound
| |
| is turned off
| |
|
| |
|
| |
| ==2.03==
| |
|
| |
| New script command: triggeraction targetx,targety,action,params;
| |
| This is one of the commands that give you like 50% more scripting
| |
| power than before. It is like a combination of hitobjects and
| |
| callnpc, but better. With 'triggeraction' you invoke an event
| |
| to the object on positon (targetx,targety). If the object is
| |
| an npc, then the npc script is called with the flag
| |
| 'action<action>' set, when the object is a player then the
| |
| weapon scripts of the that player are called with the
| |
| 'action<action>' flag set.
| |
| 'params' can be one or more parameters, divided by commas;
| |
| the called script can read the paramters by accessing the
| |
| message code #p(paramindex).
| |
| Because this is hard to explain with words, here some
| |
| little examples:
| |
|
| |
| * trigger player weapons
| |
| You can easily do a weapon which freezes the other
| |
| player:
| |
|
| |
| if (playertouchsme) toweapons Freezing-Weapon;
| |
| if (weaponfired) {
| |
| triggeraction playerx+1.5+vecx(playerdir)*2,
| |
| playery+2+vecy(playerdir)*2,freeze,;
| |
| }
| |
| if (actionfreeze) {
| |
| freezeplayer 3;
| |
| setplayerprop #c,FREEZED;
| |
| }
| |
|
| |
| Both players must have this weapon for making it
| |
| working. Then use it on the other player, and he will
| |
| be freezed, because a 'freeze' action is sent to him
| |
| and his weapon script, called with flag 'actionfreeze',
| |
| will freeze him. You can also move the if (actionfreeze) ...
| |
| into an system npc so the weapon can be used on all
| |
| players.
| |
| Other nice things you could do with triggering actions
| |
| on players: a stealing weapon which lets the other player
| |
| loose gralats (if (actionsteal) lay2 greenrupee,... );
| |
| complex attacking weapons that use your own hitpoint
| |
| system instead of the default hearts thing
| |
|
| |
| * trigger npcs
| |
|
| |
| Until now npcs can only react to 'playertouchsme' and
| |
| 'washit', other things are very hard to do (e.g. the
| |
| mining on Graal2001 was made by checking periodically
| |
| what animation the player has and before which stone the
| |
| player stands). You could do callnpc, but this works only
| |
| client-side and you needed to pass parameters with
| |
| flags.
| |
| Using 'triggeraction' you can make those things much easier.
| |
| The mining axe could have the script
| |
| if (weaponfired) {
| |
| setani jaxe,hammergold0.png;
| |
| triggeraction playerx+1.5+vecx(playerdir)*2,
| |
| playery+2+vecy(playerdir)*2,mining,#v(axepower);
| |
| }
| |
| If you now use the weapon on a stone, the stone npc could
| |
| check this so:
| |
| if (actionmining) {
| |
| axepower = strtofloat(#p(0));
| |
| this.power -= axepower;
| |
| if (this.power<=0) {
| |
| setstring uncraftedgold,#v(strtofloat(#s(uncraftedgold))+1);
| |
| hide;
| |
| }
| |
| }
| |
| With this thing you can also easily do switches which are
| |
| activated with the hammer, or torch lamps which are turned on
| |
| by using a torch on it.
| |
|
| |
| * actionpushed, actionpulled
| |
| The game automatically triggers the actions 'pushed' and
| |
| 'pulled' on an npc, #p(0) is the direction of where to move;
| |
| so you can do different things when the player tries to
| |
| push/pull the npc, e.g. slower pulling, or opening
| |
| a door.
| |
|
| |
|
| |
| New script command: move dx,dy,time,options;
| |
| dx - delta x
| |
| dy - delta y
| |
| time - time in seconds
| |
| options - cachingmode (0,1 or 2) + blockcheck (4 or 0) +
| |
| informmewhendone (8 or 0) + applydirection (16 or 0)
| |
| This moves the npc without needing you to update the
| |
| position of the npc 'manually' by changing x and y.
| |
| To move an npc 10 tiles to the right, then 10 tiles to
| |
| the left and again, just do following:
| |
| if (created) {
| |
| while (true) {
| |
| move 10,0,4,0;
| |
| sleep 4;
| |
| move -10,0,4,0;
| |
| sleep 4;
| |
| }
| |
| }
| |
| This moves the npc 10 tiles to the right, then waits 4
| |
| seconds, then moves it 10 tiles to the left, then waits
| |
| 4 seconds, and repeats this endlessly.
| |
| The good thing is that this also works with server-side
| |
| npcs and makes them look like they are moved on client-side.
| |
| There are also nice options to makes things very simple:
| |
| * cachingmode:
| |
| * 0: previous movements will be finished immediatelly
| |
| * 1: movements will be cached, the previous movements
| |
| will only be finished when the cache is too large
| |
| (distance to go >5);
| |
| this caching can be used on server-side npcs to
| |
| make the movement look like non-laggy even when
| |
| there are little delays sometimes
| |
| * 2: the movement will just be appended to the movement
| |
| list; you can add up to 100 movements
| |
| * blockcheck: add 4 to the options when you want the
| |
| npc to stop when there is a wall blocking the npc
| |
| * informmewhendone: if you add 8 to the options then the
| |
| script will be called with a 'movementfinished' flag
| |
| when the the npc has stopped walking; catch this event
| |
| with
| |
| if (movementfinished) {...}
| |
| if you want to do something when the npc has stopped
| |
| (e.g. walking in a different direction)
| |
| * applydirection: add 16 to the options if you want the
| |
| game to automatically set the direction of the npc
| |
| depending on the movement direction (can be good
| |
| when using movement caching)
| |
|
| |
|
| |
| on remotecontrol and npccontrol you can use new
| |
| chat functions, commands start with /, you can get
| |
| a list of available functions with /help
| |
|
| |
| when you play on a game server with npcserver
| |
| and an npc leaves the current level, then it is
| |
| displayed in the new level instead of being hidden
| |
|
| |
| script functions vecx(dir) and vecy(dir) which
| |
| are a replacement for the 'dirgo' variables used
| |
| in many scripts;
| |
| e.g. for direction 2 (down) the functions vecx and
| |
| vecy give you 0 and 1;
| |
| normal npc movements can so simply made by
| |
| x += vecx(dir);
| |
| y += vecy(dir);
| |
|
| |
| script functions onmapx(levelname) and onmapy(levelname)
| |
| to get the position of a level on the currently set
| |
| map
| |
|
| |
| the game uses in-game code to compress/decompress again
| |
| instead of using zlib.dll because it has been abused
| |
|
| |
| if you press the shift key while clicking on Start
| |
| or Turorial in the starting window, then the game
| |
| will start in fullscreen mode
| |
|
| |
| new script flags 'playerreading' to check if the
| |
| player is reading a sign, and 'lighteffectsenabled'
| |
| for checking if the player can see the light
| |
| effects and day/night
| |
|
| |
| fixed bugs when using numbers for #P1
| |
|
| |
| fixed bug with reading animated interlaced gifs
| |
|
| |
|
| |
| ==2.021==
| |
|
| |
| the speed cheat protection shouldn't close the program
| |
| when there was no cheating
| |
|
| |
| when opening the history of someone you will not
| |
| see the web navigation bar
| |
|
| |
| better hacking protection
| |
|
| |
| the server knows the language of the client,
| |
| that way there can be translation of signs and what npcs
| |
| say (on servers with npcserver)
| |
|
| |
| ==2.02==
| |
|
| |
| Version v2.02 brings new things for customizing the
| |
| player (e.g. hats), making signs with images, and doing
| |
| string parsing in npc scripts. Of course there are also
| |
| bug fixes.
| |
|
| |
| Restrictions for free servers: Because we want players
| |
| to upgrade the accounts, we have put some limits on
| |
| free servers. This includes light effects (seteffect,
| |
| setcoloreffect etc.) and complex ganis. 'complex' means
| |
| ganis (animations) that are not default animations
| |
| and do more than just display an image. Things like
| |
| skip.gani are allowed, fishing.gani not.
| |
| Using the hat thing is not allowed.
| |
|
| |
|
| |
| support for hats and similar things:
| |
| When opening the gani editor (Graal Shop) you
| |
| will see new edit fields for 'Def. attr1', 'Def. attr2'
| |
| etc. These work similar to the PARAM1, PARAM2 etc. thing,
| |
| but they behave different in Graal: while the values for
| |
| PARAMx is taken from the parameters that you use in your
| |
| setani and setcharani script calls (setani shoot,wbow1.gif;
| |
| is setting PARAM1 to wbow1.gif), the ATTR1, ATTR2 etc. is
| |
| read from the players account. You can change it with
| |
| setplayerprop #P1,...; /setcharprop #P1,...;
| |
| You can currently use 5 gani attributes. Since it is saved
| |
| in the players account, it doesn't need to be sent to the
| |
| other players each time the animation is set which is causing
| |
| lag when used in a movement animations
| |
|
| |
| Here an example for setting the hat of the player:
| |
| setplayerprop #P1,hat0.png;
| |
|
| |
|
| |
| the guilds listed in the staff section of the
| |
| playerlist can now be changed by serverowners
| |
|
| |
| the HTML window now has a panel with navigation buttons
| |
| for back/forward/stop/refresh/home
| |
| you see that window when the server message of the day is
| |
| displayed or when a script calls the openurl or openurl2
| |
| functions
| |
|
| |
| when the options window is open then the game is not
| |
| freezed anymore (was used to cheat/block players)
| |
|
| |
| ===NPC scripting===
| |
|
| |
| you can display images in signs using the
| |
| message code #i: a sign with the text
| |
|
| |
| Touch this to enter: #i(door.gif)
| |
|
| |
| will display the door.gif at the end of the
| |
| line. It doesn't check if the image is larger
| |
| than one line, so you might need to add spaces
| |
| in the following lines so that the image doesn't
| |
| overlap the text. You can also only display
| |
| a part of the image:
| |
|
| |
| The nicest head ever - #i(head19.gif,0,64,32,32)
| |
|
| |
| This displays the part of head19.gif starting
| |
| at position (0,64) with a widht and height of 32
| |
| (ninji face looking at you)
| |
|
| |
| string parsing functions
| |
| There is a bunch of new functions and message codes
| |
| to support string parsing:
| |
| * strlen(str) - length of the string
| |
| * startswith(part,str) - tests if 'str' is starting with 'part'
| |
| * indexof(part,str) - gives the position of 'part' in 'str'
| |
| (-1: doesn't appear in 'str', 0: str starts with it)
| |
| * #e(startindex,length,str) - extracts a substring out of str;
| |
| when length is -1 then it takes everything after startindex
| |
| till the end of str
| |
| * #T(str) - removes the spaces at the beginning and at the end
| |
| * tokenize str; - divides the specified string into tokens,
| |
| e.g. tokenize I am happy!; will produce 3 tokens (I, am, happy!);
| |
| text inside " " is taken as one token,
| |
| so tokenize hello "Mr. Bear"; will produce 2 tokens (hello,Mr. Bear)
| |
| * tokenscount - gives you the count of tokens produced with tokenize
| |
| * #t(index) - gives you a token
| |
| * tokenize2 delimiter,str; - while tokenize always uses
| |
| spaces and commas, you can add more delimiters here,
| |
| e.g. tokenize2 o, Yoshi is cool; will give you (Y,shi,is,c,l)
| |
|
| |
| when doing setstring flagname,; then the deletion
| |
| of the string variable is sent to the server
| |
|
| |
| setting/unsetting/changing a flag that starts with 'local.'
| |
| is not sent to the server
| |
|
| |
| when using setplayerprop #5 to set a horse or
| |
| when having a horse from last login to the server,
| |
| then the bushes count is set correctly
| |
|
| |
| you can now set string variables that contain commas,
| |
| when you do setstring myflag,1,2,3; then you will
| |
| add a flag 'myflag=1,2,3' instead of getting a syntax
| |
| error
| |
|
| |
| commands that we forgot to mention:
| |
| * disabledefmovement: turns off the normal player movement
| |
| and behaviour; this is good for making new player races
| |
| or things like skis;
| |
| if you only want to temporary disable it then use
| |
| the freezeplayer command
| |
| * enabledefmovement: enables it again
| |
|
| |
| the script debugger (F6) gives you a list of the script
| |
| functions of the selected npc; you see it under the
| |
| drop down list for npcs; when selecting a function then
| |
| the script panel will scroll down to it
| |
| this is good for easier navigation through a script
| |
|
| |
| keydown(index) is always false when the player is paused
| |
|
| |
| new flags issparringzone and nopkzone
| |
|
| |
| ===Graal Shop (Gani editor)===
| |
|
| |
| correct detection for if the gani has been modified
| |
|
| |
| correct behaviour of the 'loop' and 'continuous' flags:
| |
| the animation is stopped when at the end and not looped,
| |
| and a continuous animation is started when not running
| |
| and clicking on 'Play'
| |
|
| |
| edit fields for the new gani player attributes
| |
| ('Def. attr1', 'Def. attr2' etc.)
| |
|
| |
| ===General bug fixes===
| |
|
| |
|
| |
| objects are drawn in correct y-order when near level borders
| |
|
| |
| the map viewing animations are set correctly (only
| |
| when you stand still or sit)
| |
|
| |
| when you play on a server with npcserver and you switch to
| |
| another server then you will be able to see npcs
| |
|
| |
| the texts 'Map' and 'Others:' that you see when viewing the
| |
| map can be changed in the languages/languageXXX.txt now too
| |
|
| |
| when pressing R to view the sparring ratings of players then
| |
| the rating is not displayed over npcs
| |
|
| |
|
| |
| ==2.01==
| |
|
| |
| levels are preloaded when you walk on the map
| |
|
| |
| when looking on the map then a special animation
| |
| is set so that other players can see that you are
| |
| reading the map
| |
|
| |
| showimg should work better, artefacts should be removed
| |
|
| |
| when you pause the game then things are still animated,
| |
| bombs explode
| |
|
| |
| when you change the chat text of the player with
| |
| the script command setplayerprop #c,text; then it
| |
| doesn't disappear immediatelly, it will be shown
| |
| for 3 seconds
| |
|
| |
| in scripts you can do if (playerdies) ... to do
| |
| stuff when the player dies (timeouts doesn't work
| |
| when you are dead)
| |
|
| |
| when the player is hurt then you can detect that in
| |
| scripts by doing if (playerhurt) ...
| |
| you can read the variable playerhurtpower to get
| |
| the amount of power that the player lost
| |
|
| |
| a bug with testnpc is removed
| |
|
| |
| new script commands:
| |
| * hitobjects power,x,y; hurts players/npcs/computer
| |
| opponents that are on the specified position;
| |
| this works exactly like the sword so this should
| |
| be used for weapons, instead of the hitplayer command
| |
| which gives the attacker to much advance;
| |
| we will probably need to wait with using it till all
| |
| people have v2.01, and v2.00 is disabled
| |
| * openurl2 url,width,height; opens an url in a window
| |
| but in a different way: it uses the same thing that is
| |
| used for the server MOTD and PM history, so it should
| |
| open faster, and you can set the size of the window;
| |
| remove the leading http:// from the url
| |
|
| |
|
| |
| ==2==
| |
|
| |
| no 2/3/4 player mode anymore; we want to
| |
| concentrate on the online mode; this will
| |
| also help in reducing the ressources needed
| |
| by the game and in removing some bugs;
| |
| with the 2/3/4 player we also removed the
| |
| support for save games (F2/F3), and you can't
| |
| select your character in the starting window,
| |
| servers will provide character selection
| |
| levels
| |
|
| |
| new tutorial levels
| |
|
| |
| in the controls window you can change the keys
| |
| and buttons, just click on it (right mouse
| |
| button deletes it)
| |
|
| |
| bush rupees and pot hearts are server-side
| |
|
| |
| you can do 'warpto <accountname>' (if you are
| |
| a GP)
| |
|
| |
| on the minimap / playerlist you see red bubbles for
| |
| admin messages, green bubbles for guild messages and
| |
| blue bubbles for mass messages
| |
|
| |
| in the editor you can do flood filling by pasting
| |
| a tile / an object onto the level and pressing the
| |
| right mouse button (shift+right mouse button: only
| |
| fill full objects); if you haven't selected something
| |
| then the right mouse button with fill the area with
| |
| the background tile
| |
|
| |
| there are new deep water tiles where you can't swim
| |
|
| |
| new script commands:
| |
| These commands are good for making a day/night thing
| |
| and showing lights (see the included light2.png which
| |
| can be used as corona (setcoloreffect)) They doesn't
| |
| cause lag, but you can only see it when you have a
| |
| 3D card (like Riva TNT).
| |
| * seteffect red,green,blue,alpha; (default 0,0,0,0)
| |
| This if for day/night, by increasing alpha to 0.5
| |
| or so you can make the game darker; changing the
| |
| values for red/green/blue will cause some nice effects
| |
| too
| |
| * setcoloreffect red,green,blue,alpha; (default 1,1,1,1)
| |
| If you change one of these values to something <1 then
| |
| the npc image will be drawn using alpha blending;
| |
| By changing red/green/blue you can change the color of
| |
| the image (so you can use light2.png for red lights,
| |
| green lights etc. without needing another image);
| |
| By changing alpha you can decrease the brightness of the
| |
| npc image
| |
| * setzoomeffect zoomfactor; (default 1)
| |
| Zooms the npc in or out. The npc will stay centered at
| |
| the same position and have the same blocking radius,
| |
| so this is only for effects
| |
| * drawaslight;
| |
| draws the npc above the daynight effects area
| |
| (between drawoverplayers and the stats)
| |
| * changeimgcolors index,red,green,blue,alpha; (default 1,1,1,1)
| |
| changes the alpha transparency / color for the image
| |
| (see setcoloreffect for more);
| |
| * changeimgzoom index,zoomfactor; (default 1)
| |
| changes the zoom factor for the image;
| |
| color and zoom effect are not transferred to other players
| |
| so changeimgcolors and changeimgzoom only work locally
| |
|
| |
|
| |
| new Graal animation system using *.gani files
| |
| * With setani and setcharani (script commands) you can change
| |
| the animation of the player or the npc, instead of only
| |
| using the default animations that are changed by accessing
| |
| the variable 'sprite'; that variable still exists but will
| |
| be mapped to def.gani which contains all of the old
| |
| animation steps (0..40); its also possible to still read
| |
| 'sprite', the game will then try to convert the current
| |
| animation to the old sprite number system, e.g. when the player
| |
| has the animation walk.gani then reading the 'sprite'
| |
| variable will result in values between 1 and 8 depending
| |
| on the current animation step; new animations will always
| |
| be mapped to 0, but you can get the current animation by
| |
| using the #m message code (if (strequals(#m,walk)) ...)
| |
| * There is an editor for gani files named 'GraalShop.exe',
| |
| you can set the file association in the windows explorer
| |
| to make it easier to open gani files; but you can also
| |
| edit gani files with text editor
| |
| * Syntax:
| |
| setani <aniname>,param1,param2,...;
| |
| setcharani <aniname>,param1,param2,...;
| |
| Example: setani walk,; sets the walking animation
| |
| defined in walk.gani. A gani contains informations
| |
| about sprites and where to put them in which frame.
| |
| The gani format:
| |
| 1. Starts with some control commands:
| |
|
| |
| * SPRITE 0 SPRITES 0 0 24 12 shadow
| |
| => sprite_index image_file x y w h description
| |
| this defines a sprite
| |
| * sprite index: is import for the animation part of
| |
| gani file which will be described later;
| |
| each sprite must have an unique sprite index
| |
| * image file: can be
| |
| * BODY HEAD HORSE SHIELD SPRITES PICS
| |
| (those images will taken from the current player),
| |
| * PARAM1, PARAM2, ... (are set with setani/setcharani),
| |
| * myimage.png (direct filename)
| |
| * x,y,width,height: describe which part of the image
| |
| should be drawn
| |
| * description: only for the gani editor
| |
| * DEFAULTPARAMxxx newsword.png - tells the gani editor
| |
| which image should be used for PARAMxxx (it can also
| |
| be a number when you want to use the parameter to
| |
| give a sprite number to animations)
| |
| * COLOREFFECT 20 1 1 0 0.99
| |
| => sprite_index red green blue alpha
| |
| sets the alpha transparency / colors for the sprite
| |
| * ZOOMEFFECT 20 5
| |
| => sprite_index zoom
| |
| sets the zoom factor for the sprite
| |
| * LOOP - loops the animation
| |
| * CONTINUOUS - doesn't restart the animation when you
| |
| call setani/setcharani again
| |
| * SINGLEDIRECTION - all four directions use the same
| |
| animation steps
| |
|
| |
| 2. It follows the animation in
| |
| ANI
| |
| ...
| |
| ANIEND
| |
| The animation normally contains 4 x animation_step_count lines
| |
| of sprite defintions. Each line contains of a list of
| |
| sprite positions:
| |
| sprite_index dx dy, sprite_index dx dy, ...
| |
| * sprite index: the defined sprite with the specified sprite
| |
| index should be drawn (can also be PARAM1, PARAM2 etc.)
| |
| * dx: horizontal difference to the player-x coordinate
| |
| * dy: vertical difference to the player-y coordinate
| |
| After each frame (which means 4 lines in normal animations
| |
| and 1 line in a SINGLEDIRECTION animation) you can add following
| |
| commands:
| |
| WAIT <waittime> - repeats the last frame <waittime> times
| |
| PLAYSOUND <soundfile> dx dy - plays a wav file from position
| |
| (playerx+dx,playery+dy) (that defines the posititon where it
| |
| sounds loudest); this actually works like the npc command 'play'
| |
| so you can theoretically play midis or avis but that is not
| |
| recommended
| |
|
| |
| * See the existing gani files for examples, e.g. idle.gani for
| |
| a very simple animation (it only contains one step)
| |
| * The gani format has a lot of advantages:
| |
| * it means less network traffic (because you can replace tons of
| |
| showimg with one call to setani/setcharani)
| |
| * you can do a lot more than with showimg
| |
| * it's easier to make complex animations with it
| |
| * in the online mode the player animations look less
| |
| laggy because the animation continues even if the
| |
| connection is slow
| |
| * you can hear what other people do like they were playing
| |
| on your computer because sound effects are included in
| |
| the gani file
| |
| * you can change the default player animations like dead.gani
| |
|
| |
|
| |
| files are now automatically downloaded again from the server when
| |
| they have been updated on the server
| |
|
| |
| wavs are downloaded from the server too
| |
|
| |
| when weapon names start with - then you can't see them
| |
| in the weapons list (might be good for system npcs)
| |
|
| |
| new npc script variables playerhurtdx and playerhurtdy when the
| |
| player is hurt (otherwise they are 0)
| |
|
| |
| new npc script commands 'setgender' and 'setchargender'
| |
| (paramters: male / female)
| |
|
| |
| new npc script command setmusicvolume left,right;
| |
| both values can be between 0 and 1
| |
|
| |
| signs are dynamic now, you can use message codes like #n in
| |
| the signs, unknown characters are drawn using a windows font;
| |
| there is a new message code #K(action) which tell you the
| |
| key names for the keys (0-up, 1-left, 2-down etc.)
| |
|
| |
| head,sword,shield and body images are saved in the right
| |
| folder (levels/heads, levels/swords etc.) instead of
| |
| levels/webgifs
| |
|
| |
| before you can drop items with S+A it checks if there is no
| |
| wall in front of you
| |
|
| |
| the npc script command 'stopsound filename;' works now
| |
|
| |
| there is no error message anymore when you
| |
| open a file by double-clicking on a .graal file
| |
| in the windows explorer (file association)
| |
|
| |
| the script command 'continue' works correctly
| |
| in while-loops now
| |
|
| |
| jumping into links shouldn't stuck you
| |
|
| |
| invisible npcs are non-blocking
| |
|
| |
| DirectSound and DirectDraw are dynamically loaded,
| |
| when there is a problem with DirectDraw then
| |
| the game gives you an error message and closes
| |
| correctly
| |
|
| |
| fixed a bug that happened when you do
| |
| if (playerenters) setlevel <currentlevel>;
| |
|
| |
| playerlist section 'Staff' instead of 'GPs',
| |
| there you can also see LATs and FAQs now
| |
|
| |
|
| |
| ==1.411==
| |
|
| |
| when right-clicking on yourself (online mode)
| |
| then you will see your own profile + stats
| |
|
| |
| you can not pause in sparring rooms anymore
| |
|
| |
| when entering a sparring level then the
| |
| restart position will be updated (so you
| |
| restart in the sparring level when you die)
| |
|
| |
| ad animations are stopped when not visible
| |
|
| |
| forgot to mention: there are script variables
| |
| screenwidth and screenheight (pixels) for the
| |
| visible area which is 640x456 by default;
| |
| those variables are read-only
| |
|
| |
| hidden players (script command hideplayer) are
| |
| now visible on the map again; we might re-enable
| |
| a real hideplayer thing again but not as long
| |
| as people can cheat with it
| |
|
| |
| Alt+1 now saves as png too (like Alt+2)
| |
|
| |
| when you press M in the editor then the
| |
| generated map will be saved as png; if you
| |
| want to use it as map for your playerworld or
| |
| for the setmap command then you need to convert
| |
| it to 8 bit colors before using it in the game
| |
|
| |
|
| |
| ==1.41==
| |
|
| |
| shooting arrows only takes half the time
| |
|
| |
| there is an ap bar under the ASD thing
| |
|
| |
| a rating system for fights in sparring rooms;
| |
| to make a sparring room you must add an npc
| |
| with the script 'sparringzone' (no end line
| |
| characters!) to the level;
| |
| then the server will see that it's a sparring
| |
| level and will not change your ap/money and
| |
| will rate your fighting skills depending on
| |
| who you kill and who kill you;
| |
| when you press R then you will see the current
| |
| ratings over the heads of the players; it shows
| |
| rating + rating deviation; the rating deviation
| |
| tells you if the player is fighting often, only
| |
| players < 80 rating deviation will be listed in
| |
| the graalonline.com top50; so if you see someone
| |
| with a rating of 2000 and a rating deviation with
| |
| 330 that means he only had one fight or so, so you
| |
| can't really trust that he is a good fighter
| |
| when you are in a sparring room you will see a
| |
| white 'sparring' on the ap bar
| |
|
| |
| new option in F1->General options: fullscreen mode;
| |
| you can switch to 800x600 and 1024x768;
| |
| you can get the screen size in npc scripts
| |
| by reading 'screenwidth','screenheight' (in
| |
| case you want to align a showimg stats image on
| |
| the right side of the screen)
| |
|
| |
| by right-clicking with the mouse on a player
| |
| you will open the profile of that player;
| |
| the profile now shows more stuff like the account name
| |
| and sword power
| |
|
| |
| the server message of the day can now be
| |
| HTML
| |
|
| |
| graal PMs and the server MOTD can contain
| |
| the new tag <graalmsg>Hallo #n!</graalmsg>
| |
| (the text inside the graalmsg tag works like
| |
| with the npc script command 'message');
| |
| it is good for making a message which looks
| |
| more personal
| |
|
| |
| new npc script command showstats, with this you
| |
| can show/hide parts of the status bar / game
| |
| showstats 1+2+4+8+16+32+64+128+256+512+1024; shows all
| |
| showstats 0; hides all
| |
| the argument is a bit-wise flag set
| |
| 1 - ASD
| |
| 2 - icons (for rupees, bombs, arrows)
| |
| 4 - rupees count
| |
| 8 - bombs count
| |
| 16 - arrows count
| |
| 32 - hearts
| |
| 64 - alignment (ap) bar
| |
| 128 - magicpoints (mp) bar
| |
| 256 - minimap (you can only hide it, you can't show it when the
| |
| player pressed Alt+3)
| |
| 512 - inventory npcs
| |
| 1024 - players
| |
|
| |
| npc weapons can't be deleted when their name starts with a *
| |
| (e.g. toweapons *Boomerang;)
| |
|
| |
| there is a new very good designed baddy image:
| |
| baddyninja.gif from Ulrich Galbraith (Zancrus)
| |
| (its the one who made some of the graphics for v1.0
| |
| like the frogs, baddies)
| |
|
| |
| there are some new tiles for hourse corners and
| |
| inside house corners
| |
|
| |
| fixed a bug with negative rupees when dropping
| |
| rupees while being in the bank
| |
|
| |
| in online mode the positions of showimgs are aligned the
| |
| same way like the player position; that way its easier to
| |
| use hideplayer+showimg because you can align it correctly
| |
| to the shadow of the player (which can't be hidden)
| |
|
| |
| in online mode when you do showimg+changeimgpart it also
| |
| works for bigger images now
| |
|
| |
| the playerlist is sorted again when your nickname
| |
| is changed (it needs to be updated because the guild
| |
| might have been changed)
| |
|
| |
| red gloves will be displayed correctly again
| |
|
| |
| the default keys will be set/displayed correctly; this
| |
| was a problem in older versions because e.g. in France
| |
| you have the A key on a different position on the keyboard;
| |
| in France it uses now QSD as the default keys for lifting/
| |
| sword/weapon
| |
|
| |
| when you start Graal for the first time then the game
| |
| will try to detect the local language automatically;
| |
| because some languagexxx.txt files needed to be renamed
| |
| you might need to change your language manually if you
| |
| have already played
| |
|
| |
| 'playersays' works correctly now, but keep in mind that
| |
| its not supported anymore, better use strequals(#c,...)
| |
|
| |
| fixed a little bug with head icon transparency in 32bit
| |
|
| |
| showname / ap changing doesn't delete your chat text anymore
| |
|
| |
|
| |
| ==1.4==
| |
|
| |
| new starting window
| |
| It should be simpler now, when you select 2/3/4 player mode
| |
| then you can choose the player to change by clicking on the
| |
| little head icon right to the character selection box;
| |
| You can also set the nickname separately for each character
| |
| in 2/3/4 player mode;
| |
| The account name/password thing was moved to the server list
| |
|
| |
| server list window
| |
| When you select 'One Player (online)' as game mode then
| |
| you will see a server list window that will load a server
| |
| list from www.graalonline.com and display it in a list;
| |
| When you click at an entry then it will show you some
| |
| informations about that server (language, version, homepage etc.);
| |
| On the lower part of the server list window you see
| |
| the edit fields for account name and password;
| |
| click on 'Connect' to connect to the selected server;
| |
| When you play then you can always open the server list
| |
| window again by pressing F8 (it will refresh the list
| |
| automatically)
| |
|
| |
| password are saved separately for each account name
| |
|
| |
| new option 'don't save passwords' in the options window
| |
| (F1->General Options)
| |
|
| |
| new pk tag system:
| |
| when having less than 40 alignment points (showap) then
| |
| you can't increase your power; when you die then you will
| |
| get 3 hearts back when ap<20, 5 hearts when ap<40 and
| |
| full power when you die while ap>=40;
| |
| when you kill someone then your power will decreased
| |
| by (yourap/20+1)*(otherap/20);
| |
| when ap<20 then your ap will increase every 30 seconds,
| |
| when ap<40 then every 2 minutes, ..., when >=80 then
| |
| every 30 minutes (no 90 ap limit anymore)
| |
|
| |
| There is better pk recognition:
| |
| When you kill someone with bomb/arrows/fire/bushes then
| |
| it will count as player-killing too
| |
|
| |
| New script stuff
| |
| * New command: changeimgvis index,drawingheight;
| |
| changes the drawing height of a showimg image;
| |
| possible values for 'drawingheight':
| |
| * 0: like drawunderplayer
| |
| * 1: like the player
| |
| * 2: like drawoverplayer (default)
| |
| * 4: on screen (the img will be drawn like the status bar,
| |
| it will be drawn on the image (x,y) position);
| |
| so you can make your own status bar thing with
| |
| this command
| |
| * When doing showimg with an image index not in 0..199 then
| |
| it will only be shown local
| |
| * setimg/setimgpart can be used instead of setgif/setgifpart
| |
| * The 'in' operator is enhanced. You can now do things like:
| |
| 1,2 in {1,2,3,4,5} - will check if 1 AND 2 are in specified array
| |
| x in |0,64| - is true when 0<=x<=64
| |
| x in <0,64> - is true when 0<x<64
| |
| You can also combine those things, e.g.
| |
| x,y in <0,10| - is true when 0<x<=10 AND 0<y<=10
| |
| * putexplosion2 bombpower,radius,x,y;
| |
| for producing jolt bomb explosions (set bombpower to 3)
| |
| * New command: setbody bodyimg;
| |
| This is a nice command: with this you can change
| |
| the body of the player, e.g. setbody body2.png
| |
| (body2.png is included in v1.4, its from Antago,
| |
| body3.png is from Loriel)
| |
| You can also use the #8 message code to change
| |
| the body img (setplayerprop #8,body2.png or
| |
| setcharprop #8,body2.png);
| |
| * npcs[index].attr and compus[index].attr can be changed
| |
|
| |
| better hacking protection
| |
|
| |
| explosion radius is limited to 15 (hack protection)
| |
|
| |
| script command setlevel2 works with floating point values for x/y
| |
|
| |
| you can lay down shields again
| |
|
| |
| Because many people had problems with the music thing
| |
| there are some things chanegd/optimized:
| |
| * dynamic loading of mediaplayer (so when you turn
| |
| off music support then it will not load it)
| |
| * winamp support -> option 'use winamp for music'
| |
|
| |
| ==1.392==
| |
|
| |
| removed bugs with caching levels on hard disk,
| |
| this version should work better with playerworld
| |
| servers running on different ports
| |
|
| |
| when someone is invisible (hideplayer) then you still
| |
| see his shadow and nickname
| |
|
| |
| npc script enhancements:
| |
| * functions
| |
| Example:
| |
|
| |
| if (playerenters) {
| |
| myfunc();
| |
| playerdarts += 50;
| |
| }
| |
| function myfunc() {
| |
| message Hello!;
| |
| if (playerrupees<50) return;
| |
| playerbombs += 50;
| |
| }
| |
|
| |
| With 'function' you define a function, with
| |
| funcname() you call it. It doesn't matter at what
| |
| place in the script you define the function. With
| |
| 'return' you immediatelly return to one line behind the
| |
| caller script position.
| |
| There are no function parameters yet and you cannot
| |
| use it in calculations. You can only call functions
| |
| from the same script.
| |
| With this new function thing it's much easier to
| |
| make scripts look simplier.
| |
|
| |
| * new npc script variables: signscount, signs[index].x/.y
| |
| * testsign(x,y)
| |
| * callnpc index,playertouchsme; you can use this for
| |
| calling the scripts of other npcs; calling that function
| |
| doesn't run the npc's script immediatelly, it might take
| |
| 0.05 till the script of the other npc is actually executed
| |
| * a function keydown(0..10) which tells you if a key is pressed
| |
| 0..3: movement, 4..6 A/S/D, 7 map, 8 tab, 9 Q, 10 P
| |
| * you can use break, continue inside of loops to
| |
| end a loop / continue with the next loop round
| |
| * you can do myvar = (timeout? 5 : 3);
| |
| * you can assign 'boolean' operation results to normal variables
| |
| like myvar = (timeout && myflag);
| |
| then myvar is 1 when the boolean expression 'timeout && myflag'
| |
| is true, 0 otherwise
| |
|
| |
|
| |
| ==1.391==
| |
|
| |
| fixed a bug with transparent heads when starting Graal in 32bit
| |
| video mode and switching to fullscreen
| |
|
| |
| when sending messages to more than 50 people then the message
| |
| will not be saved on hard disk (so it doesn't take a half minute till
| |
| you can play again)
| |
|
| |
| when viewing a profile of a player then you also see the
| |
| kills/deaths/onlinetime that the player has in the current world;
| |
| you only see it when the player already made a profile (pushed the
| |
| 'send' button in the profile window)
| |
|
| |
| <applet> tags in PMs doesn't work anymore
| |
|
| |
| ==1.39==
| |
|
| |
| completely different handling of head images, this should speed up
| |
| Graal and drastically reduce the resources needed by the game
| |
|
| |
| Profiles: In the player list click on 'profile' to change
| |
| your own profile or right-click on a nickname and select 'profile'
| |
| to see the profile of a player
| |
| (Antago suggested profiles in Dec 1999)
| |
|
| |
| there is a special option window for the player list: just
| |
| click on the 'options' button in the player list; there
| |
| is the option to turn off HTML in PMs, to ignore mass PMs
| |
| plus two new options:
| |
| * No images in HTML: deletes <img> tags out of PMs
| |
| * sort player list by nickname: sorts the playerlist in alphabetically order
| |
|
| |
| <script> and <object> tags in PMs doesn't work anymore
| |
|
| |
| New options in the Graal->F1->More options window:
| |
| * Ignore toalls: doesn't show 'toall:' messages anymore
| |
| * Don't load heads for the playerlist / map: the game will
| |
| not load the head image for the icon of a player for drawing
| |
| it on the playerlist / map; all players will have the head
| |
| of you except players which were in your level when they
| |
| connected to the server (so the head needs to be loaded anyway);
| |
| this reduces the login time / lag while the game because
| |
| the game doesn't need to load images so often
| |
|
| |
| When you type in chat text, then you can go back to
| |
| previous messages by pressing the UP key; you can navigate
| |
| through the last 100 chat lines by pressing UP and DOWN;
| |
| when you edit a line or press RETURN then it will became your
| |
| current chat line
| |
|
| |
| in the editor you can 'draw' with tiles - select a single
| |
| tile in the tiles panel, then click on the level, hold
| |
| the left mouse button down, move around; you will paste tiles
| |
| till you release the left mouse button
| |
|
| |
| In 2/3/4 player mode: when you open the weapons list and press the key 'Delete',
| |
| then the selected weapon of the currently 'focused' player will be deleted
| |
| instead of the selected weapon of the first player;
| |
| the focused player is that player who has the 'chat' icon near his status bar and
| |
| can be changed by clicking with the mouse on the visible screen area of a player
| |
|
| |
| you don't see 'failed' when warped between levels of a player world anymore
| |
|
| |
| faster sending of messages to the server
| |
|
| |
| removed some problems with floating point values in the npc scripts
| |
| (e.g. 0.1+0.1+0.1-0.1-0.1-0.1 is now 0)
| |
|
| |
| the M map shows a normal head for you too instead of a stretched
| |
| player which sometimes freezed Graal
| |
|
| |
| the M map is much faster (no drawing in the background anymore)
| |
|
| |
| dead people are non-blocking
| |
|
| |
| on the minimap PM-icons are drawn above toall-icons
| |
|
| |
| the filenames for PMs on the hard disk have been changed to
| |
| allow special characters like '\' or '/' in the account name;
| |
| you should delete the old PMs in the pms folder if you already
| |
| have a lot of files there, otherwise Windows could get
| |
| problems with it
| |
|
| |
| the weapon list (Q) is drawn using the function which also draws
| |
| signs and the Continue/End window, so it works correctly
| |
| with custom letters.gif (setletters); the background of
| |
| the selected weapon is still blue
| |
|
| |
| the weapon lists of player 3 / 4 are scrolled down too
| |
| when it gets too big
| |
|
| |
| by mouse-clicking on a weapon in the weapon list you can
| |
| directly select a weapon without needing to navigate with the
| |
| arrow keys
| |
|
| |
| added some tiles and corrected the tile type for the
| |
| dirty water; the futuric house tiles weren't added yet
| |
| (must find a way to get around the 2MB-image limit)
| |
|
| |
| you can directly drag image files (gif/png/mng) onto a level;
| |
| the game will automatically generate an npc with that image
| |
| at the mouse position
| |
|
| |
| ==1.38==
| |
|
| |
| there is the new option 'don't connect levels' in the option
| |
| window (Graal->F1->More options); if you enable that
| |
| option, then you only see one level when walking through
| |
| outside levels; this also means less data to send / receive,
| |
| so enable that option if you have problems with lag in regions
| |
| with many players like Graal city
| |
|
| |
| fixed the warping (was a problem with empty signs)
| |
|
| |
| the 'bombs' attribute of npcs works again
| |
|
| |
| fixed the alignment bug with npcs (were sometimes drawn
| |
| one pixel beside the real postition)
| |
|
| |
| normal animation speed when walking diagonally
| |
|
| |
| dragging a selection half out of the regular 64x64 area doesn't
| |
| mess it up
| |
|
| |
| the function to retrieve the message code doesn't
| |
| hang on some codes like the previous version
| |
| (e.g. when you say '#c' on the Mantara statue machine)
| |
|
| |
| your horse doesn't get a bush when it eats a bomb
| |
|
| |
| added caching of up to 50 toall-messages for each player;
| |
| when a player sends several toall-messages in short time
| |
| then you can see all of them by clicking several times
| |
| on the toall-bubble of that player;
| |
| this feature has been added to make future Graal extensions
| |
| like a separate chat client possible
| |
|
| |
| the new water tiles from v1.38 are now recognized as water tiles
| |
|
| |
| forgot to mention: there is a new flag 'isonmap' which tells you
| |
| if the player is currently in a level which is showed on the M map
| |
|
| |
| ==1.38==
| |
|
| |
| jailed people can write PMs to RCs
| |
|
| |
| 'setnick nickname' command on the server
| |
|
| |
| 'warpto x y levelname' or only 'warpto x y' - commands
| |
| for GPs on the server
| |
|
| |
| when logging in with the account name as nickname
| |
| then you get a * before your name which shows that you
| |
| are the owner of the account, other people can't have
| |
| have that name;
| |
| Example: You have the account name Stefan, setting
| |
| nick name to 'Stefan', then the server will change it
| |
| to '*Stefan'; other people can't have the nick name
| |
| '*Stefan'
| |
|
| |
| PMs are saved on hard disk with date and time; they are
| |
| saved to the 'pms' folder; when you click on the
| |
| 'history' button in the player list then the messages
| |
| will be loaded from that files; when you 'ignore' someone
| |
| then his messages will be deleted; you can also delete
| |
| them manually if you want (delete pms/messages_accountname.txt)
| |
|
| |
| you can't dupe items (rupees) anymore, because when
| |
| you get the item then the server increases your rupee
| |
| count (in case no one else has taken the item yet)
| |
|
| |
| with pressing Ctrl+A/B/D/E/F/G/H/L/M/O/P/R/S/T/W/X/Z you
| |
| can display an emotion icon, the icons for brb (B),
| |
| afk (A), zZ (Z) will be displayed till you move;
| |
| the emotion icons were made by Ibonic, MrHack and Linkson
| |
|
| |
| a gif2mng converter for command line use;
| |
| do 'gif2mng filename.gif', it will create an 8bit png
| |
| or mng (=png animation); the mngs are not optimized yet,
| |
| so they will be bigger than gif animations, but we are
| |
| working on it
| |
|
| |
| better support for mng files
| |
|
| |
| New npc script commands/functions:
| |
| * onwater(x,y) - tells you if (x,y) is water
| |
| * testcompu(x,y), testplayer(x,y), testnpc(x,y), testitem(x,y),
| |
| testbomb(x,y), testexplo(x,y), testhorse(x,y) tests if there is
| |
| and object on (x,y) and gives you the index of that object
| |
| in the object list, otherwise it returns -1 (except testplayer:
| |
| returns -2 because -1 means the current npc character);
| |
| Example:
| |
| i = testbomb(x,y);
| |
| if (i>=0) explodebomb i;
| |
| * you can do 'if (myvar in {1,2,3})' or 'if (array1==array2)'
| |
| * changeimgpart index,x,y,width,height - changes the
| |
| visible part of a 'showimg' image; it will be reset
| |
| to the whole image when calling showimg again
| |
| * you can access npcs[index].<attributename> variables (read/write):
| |
| x,y,width,height(fields not pixels),rupees,darts,bombs,
| |
| hearts,timeout,glovepower,swordpower,shieldpower,hurtdx,
| |
| hurtdy,id,save[],dir,sprite,ap
| |
| * new command 'hitnpc index,halfhearts,fromx,fromy'
| |
| * setlevel2 levelname,x,y
| |
| * some calculations of variables and boolean expressions are
| |
| optimized/precalculated, like '1==1' will be converted to
| |
| 'true'
| |
| * the 'Test' button gives you more error messages when
| |
| you type variable names wrong
| |
|
| |
| 'only' 1024 explosions will be displayed
| |
|
| |
| new color 'transparent'
| |
|
| |
| you can change the keys by editing graalconfig.txt, there
| |
| can be 3 different keys for each action, each key can only
| |
| be used one time; only some keys can be used:
| |
| A-Z,0-9,Tab,Enter,Shift,Space,P_Up (page up),P_Down (page down),
| |
| Up,Left,Down,Right,N0-N9 (numpad 0-9),Add,Sub,Mul,Div,Dec
| |
| (numpad +,-,*,/,.), F9-F15;
| |
| in future Graal versions there will be a special window where
| |
| you can change the keys and the joystick buttons
| |
|
| |
| when you lay your shield down then other people can see
| |
| that you don't have a shield anymore
| |
|
| |
| the M map is displayed in the vertical middle of the screen
| |
| when it is smaller than the screen
| |
|
| |
| better level linking when walking on outside levels (no
| |
| invisible walls)
| |
|
| |
| the F6 debugger shows bombscount, npcscount etc.
| |
|
| |
| when opening the maximized editor then the scrollbars will
| |
| be resized correctly
| |
|
| |
| empty lines at the end of signs will automatically be deleted
| |
|
| |
| In the editor: when moving the mouse then in the status bar
| |
| you see the mouse posiiton and the tile under the mouse
| |
|
| |
| In the editor: when double-clicking then the tile under the mouse
| |
| will be made to the background tile (like when double-clicking
| |
| in the tiles panel)
| |
|
| |
| in the starting window: the languages in the languages combo box
| |
| are sorted alphabetically
| |
|
| |
| when pressing F5 in the online mode and loading a non-
| |
| existing level then the game shows an error message and closes
| |
| instead of letting you play the level that you was in
| |
|
| |
| you can lift an npc that is carried by another player
| |
|
| |
| when you eat a bush with the horse then you will only get a the
| |
| bush count increased when you have finished eating
| |
|
| |
| the flags 'gotbow','gotsword' etc. aren't supported anymore
| |
|
| |
| in the offline mode the baddies doesn't follow you to other levels
| |
| anymore
| |
|
| |
| in the npc script window the font name is now 'courier new'
| |
|
| |
| when pressing 'Test' in the npc script window then it doesn't
| |
| jump back to the beginning of the script
| |
|
| |
| in the online mode other people doesn't look like
| |
| they are jumping randomly around when going to another level
| |
|
| |
| using the sword on an npc / calling the hitplayer command doesn't
| |
| change the timeout variable of the npc, the sprite will only be
| |
| set to 39 if hearts>0, the hearts will only be decreased if
| |
| the sprite is not 39 or 40
| |
|
| |
| the editor doesn't produce errors when you drag a selection
| |
| outside the regular 64x64 area
| |
|
| |
| some new tiles in pics1.png
| |
|
| |
| a lot more (little bug fixes)
| |
|
| |
| ==1.371==
| |
|
| |
| only for GPs: the remotecontrol has been updated,
| |
| you can write PMs / toalls, players can see you in the
| |
| player list with a (RC) guild tag
| |
|
| |
| fixed the hide/show command for 'showcharacter' npcs
| |
|
| |
| fixed a problem with invisible bodies when changing the window
| |
| mode
| |
|
| |
| the npc baddies are more intelligent when hunting the player
| |
|
| |
| when moving the mouse over the minimap then the
| |
| nicknames (displayed in a yellow hint window) doesn't
| |
| hide the toalls anymore
| |
|
| |
| in the debugger 'else if' is displayed correctly (green)
| |
|
| |
| when pressing F6 in fullscreen then the debugger will be
| |
| resized to screen size
| |
|
| |
| with Alt+8/Alt+9 you can zoom in/out; this is only
| |
| a feature just for fun
| |
|
| |
| when a gif image doesn't have a transparent color, then
| |
| black is taken as transparent color again; I have only
| |
| re-added for compability with older levels;
| |
| pngs are still only drawn transparent when a transparent
| |
| color is specified (the first color index with full transparency)
| |
|
| |
| ==1.37==
| |
|
| |
| many small bug fixes and improvements (e.g. support for
| |
| non-transparent pngs, support for 4bit-pngs with odd width,
| |
| the tiles list is resized to the window size,
| |
| when using the sword while riding on a horse then the
| |
| horse is animated instead of looking like standing still)
| |
|
| |
| no crash when editing an npc which has an 'if ()' in the
| |
| script (empty boolean expression)
| |
|
| |
| throwing tons of bombs doesn't crash the game anymore
| |
| (it crashed when two of your bombs were flying at the same
| |
| time)
| |
|
| |
| the sound effects system has been changed: the sound effects
| |
| are played with different volumes depending on the distance to
| |
| the player
| |
|
| |
| the script command 'showimg' works for normal npcs too;
| |
| but only the current player can see it
| |
|
| |
| new npc commands:
| |
| * carryobject - carries an object, only works for 'showcharacter' npcs;
| |
| see commands.rtf for a complete list of possible object names
| |
| * throwcarry - throws the object
| |
| * playlooped - plays a wav file looped
| |
| * stopsound - stops playing a (looped) wav file
| |
|
| |
| message codes can finally use ALL variables, so it's now
| |
| possible to do message #v(rupees) #v(this.myvar);
| |
|
| |
| when doing setarray on a variable which is already an array
| |
| variable, then the array will only be resized and the previous content
| |
| copied to the new array
| |
|
| |
| you can initialize arrays by doing 'myarr = {var1,var2,..,varN};'
| |
|
| |
| there are now built-in flags 'true' and 'false'
| |
|
| |
| with 'hasweapon(weaponname)' you can check if the player has
| |
| a special weapon
| |
|
| |
| when you get a fullheart then the flag 'gotheart_currentlevelname'
| |
| is set; so you don't need to set such a flag manually in your npc scripts
| |
|
| |
| ==1.36==
| |
|
| |
| the server can now hold up to 28000 players instead of 220
| |
|
| |
| you can limit the lenght of nicknames in the option window
| |
| (Graal->F1->More options)
| |
|
| |
| fixed a bomb-dropping bug
| |
|
| |
| there is no error message anymore when there is no sound card
| |
|
| |
| the TWebBrowser class (for HTML PMs) is loaded dynamically,
| |
| so people who don't have Internet Explorer can PM again
| |
|
| |
| when you select a player in the player list then you see his
| |
| nickname displayed on the M map
| |
|
| |
| in the editor you cannot select fields which are outside the level anymore
| |
|
| |
| when you press F4 while the debugger frame is open then the game
| |
| doesn't crash when you press F6 again
| |
|
| |
| showtimer works for 'showcharacter' npcs too; the amount of money
| |
| is shown over the npc's head when it got some
| |
|
| |
| there are a lot of new variables and script functions that let you access
| |
| objects in the current level; the variables can only be read, not changed;
| |
| if you think changing the variables would be good for some effects then
| |
| let me know which variables you want to access (bomber@graalonline.com);
| |
| here a short list of the new stuff (for more read npcprogramming.doc):
| |
| bombs[index].x/y/power/time
| |
| arrows[index].x/y/dir/dx/dy/type/from
| |
| items[index].x/y/type/time
| |
| explos[index].x/y/power/time/dir
| |
| horses[index].x/y/dir/bushes/bombs/bombpower/type
| |
| removebomb index;
| |
| removearrow index;
| |
| removeitem index;
| |
| removeexplo index;
| |
| removehorse index;
| |
| explodebomb index;
| |
| reflectarrow index;
| |
| takehorse index;
| |
| take2 index;
| |
| lay2 itemname,x,y;
| |
| takeplayerhorse;
| |
| In future Graal versions there will be also ways to access the attributes
| |
| of other npcs
| |
|
| |
| the script editor shows an error message when a command
| |
| gets too many parameters
| |
|
| |
| message codes can be used with the setstring command and inside
| |
| #s()/#v() codes; here a little example:
| |
| i = 3;
| |
| setstring testvar#v(i)yeah, 5;
| |
| j = strtofloat(#s(testvar#v(i)yeah));
| |
| You get j=3. You see that you can simulate arrays of
| |
| string variables by appending a number to the string variable.
| |
| A second example:
| |
| var3 = 7;
| |
| k = strtofloat(#v(var#v(i)));
| |
| You get k=7. That way you can access nomal variables like they
| |
| were array variables, although it might be a lot slower than
| |
| accessing normal arrays.
| |
|
| |
| you can use message codes for filenames; you already could
| |
| do that in previous versions, but now the editor doesn't check for
| |
| the file when the filename contains a # (and doesn't show an
| |
| error message when the file doesn't exist)
| |
|
| |
| ==1.35==
| |
|
| |
| removed the screenshot-bug (Alt+2)
| |
|
| |
| you can drag text files onto the editor again (to place npcs);
| |
| it crashed Graal in v1.34
| |
|
| |
| you can have two characters with the same head image in headsconfig.txt
| |
|
| |
| the server startup message is only displayed once; it's saved to
| |
| servermessage.rtf
| |
|
| |
| you can see toalls when in pause mode
| |
|
| |
| PMs are now displayed with HTML; links are automatically added
| |
| when you write 'www...';
| |
| if you have problems with this new feature, then you can turn
| |
| HTML off in the options window (Graal->F1->More Options)
| |
|
| |
| the default joystick selection for player 2/3/4 is '(none)'
| |
|
| |
| ==1.341==
| |
|
| |
| the player list works similar to v1.33 again; there is now a special
| |
| 'buddy' part in the player list; to move players to that section right-click
| |
| on a name and click on 'buddy'; the account names of the buddies are
| |
| saved in the file buddyaccounts.txt in the Graal folder
| |
|
| |
| when you are hit by a healing sword or similar 'hurting' device then your horse
| |
| doesn't loose power (bushes)
| |
|
| |
| you can use message codes when doing setplayerprop #Cx and
| |
| setcharprop #Cx
| |
|
| |
| when sending player positions the x/y positions will be rounded
| |
| instead of truncated; this solves some problems in sparring fights where
| |
| players coming from down/right cannot hurt other players easier anymore
| |
|
| |
| super bombs will be displayed correctly when carried
| |
|
| |
| in the editor you can press 'M' to make a map of the current bigmap levels
| |
|
| |
| if you carry a player in the two-player mode then he doesn't disappear
| |
| when an npc does 'hideplayer' on you
| |
|
| |
| removed a little memory leak that has to do with npc scripts (else statement)
| |
|
| |
| modal message windows (e.g. error windows) doesn't disappear behind the
| |
| main Graal window when you switch between tasks
| |
|
| |
| when pressing D when riding on horse then the script event 'firedonhorse'
| |
| is fired
| |
|
| |
| ==1.34==
| |
|
| |
| the debugger (F6) works now; you can select npcs and set break points
| |
| by clicking left to a command in the list; the debugger is disabled in
| |
| online mode
| |
|
| |
| new npc commands: showlocal, hidelocal, dontblocklocal, blockagainlocal
| |
|
| |
| when saving screenshots with Alt+2 then the image format PNG is
| |
| used, that means: 24bit, loss-less, better compression than GIF
| |
|
| |
| in 2/3/4 player mode you can now change the focused player by clicking
| |
| on the players view rectangle; if the player is focused, then you see a little
| |
| 'CHAT' right to the D icon; when you type in text, then it will be displayed
| |
| over the focused player.
| |
|
| |
| sound effects are now limited to only one sound effect of the same type
| |
| in the same frame; so when 100 bombs explode at the same moment, then
| |
| you only hear 1 sound effect; max 8 sound effects are played at the same time;
| |
| that mass-sfxs messed up many computers.
| |
|
| |
| midis only loop when they are longer than 10 seconds; actually this should
| |
| solve some problems with sound cards which doesn't play the file but
| |
| producing a loop event which then freeze the game
| |
|
| |
| when you hit someone who is on a horse then his horse looses 1 energy
| |
| point (1 bush); when it only has 0, then the player will be pushed away
| |
| from the horse; so you need to eat more bushes to keep your horse fast and
| |
| healthy
| |
|
| |
| when you ignore players in the player list then the account name will be saved
| |
| into ignoredaccounts.txt; when you restart Graal then the other player is
| |
| still ignored
| |
|
| |
| when someone ignores your messages then his name turns red in the player list
| |
|
| |
| you can push/pull npcs which use the showcharacter thing
| |
|
| |
| you can only pull npcs which did the canbepulled command (instead of canbepushed)
| |
|
| |
| there is a new script flag 'isweapon' which is true when the npc is an npc weapon
| |
|
| |
| in offline mode there can ride two players on the same horse; the horse must have
| |
| 5 bushes to be able to carry two players; I plan to enable that feature in the online mode
| |
| if you like it
| |
|
| |
| removed a big bug that had to do with loading images from the server
| |
|
| |
| ==1.331==
| |
|
| |
| fixed problems with the script command 'destroy'
| |
|
| |
| removed the old 'seteffect' command
| |
|
| |
| less memory use (png buffers are freed)
| |
|
| |
| removed a memory leak caused by explosions
| |
|
| |
| when message windows are minimized then new message
| |
| windows will not automatically be minimized
| |
|
| |
| when other players are carrying an exploding bomb
| |
| then it will be displayed correctly
| |
|
| |
| collision detection for flying objects (bushes etc.) uses
| |
| the right y-coordinate of the object
| |
|
| |
| in 2/3/4-player mode: when throwing another player into
| |
| water then he doesn't disappear
| |
|
| |
| npc characters can swim
| |
|
| |
| ==1.33==
| |
|
| |
| the player list (F7) has now 4 sections (GPs,Guild,Normal,Ignore)
| |
|
| |
| there is a history button in the message window and player list
| |
| popup menu; it shows the last 50 messages received from/sent to
| |
| the other player; the messages will not be saved on hard disk yet
| |
|
| |
| added PNG support, but only for 16 color /256 color palette images;
| |
| no support for alpha channel and interlaced images
| |
|
| |
| removed many memory leaks / ressource leaks
| |
|
| |
| removed a bug that disconnected the client often at startup
| |
|
| |
| ==1.324==
| |
|
| |
| added an option to handle DINPUT.DLL problems (see DINPUTDLLbug.txt for more)
| |
|
| |
| reconnect works better
| |
|
| |
| ==1.323==
| |
|
| |
| when you unpause then the server start message window will automatically
| |
| be closed
| |
|
| |
| objects (extras, bombs, etc.) will only be displayed in the right level,
| |
| not in the nearby levels too
| |
|
| |
| ==1.322==
| |
|
| |
| the npc command 'putnpc' doesn't crash the game anymore
| |
|
| |
| npcs will only be displayed in their levels
| |
|
| |
| custom letter.gifs look correctly now
| |
|
| |
| sending PMs doesn't cause problems
| |
|
| |
| while sending PMs the server will not diconnect you for no movement
| |
|
| |
| ==1.32==
| |
|
| |
| in no-playerkilling levels you can walk through unpaused players
| |
|
| |
| Alt+1 works correctly without drawing npcs from other levels onto the
| |
| screenshot
| |
|
| |
| removed a bug with the backtile (in the editor); when you specify a backtile
| |
| and press 'New' then a level will be created which has that backtile as background
| |
|
| |
| npc weapons cannot do 'hide' anymore (caused a freezing bug with the Q window)
| |
|
| |
| you cannot cheat by editing bigmap.txt anymore
| |
|
| |
| when you double-click on the Graal window then the game goes to fullscreen
| |
|
| |
| in the options window (Graal->F1->More options) you will find the new
| |
| option 'Ignore mass messages'
| |
|
| |
| when reading signs you can scroll back by pressing 'up'
| |
|
| |
| in the npc script window: when a command has more than one parameter
| |
| and one of that parameters is wrong, then the right paramter will be highlighted
| |
|
| |
| you can directly drop an npc script onto the editor: to test it make a text file with
| |
| the content 'if (playerenters) setgif brother1.gif'; drop it from the windows explorer
| |
| onto a level in the editor and you will see a new npc
| |
|
| |
| in the offline mode there is a new start level that explains how to use the controls
| |
|
| |
| the server sends a 'message of the day' when you login
| |
|
| |
| the function 'strcontains' doesn't care about capitalization anymore
| |
|
| |
| F6 doesn't work on the graalonline.com server anymore
| |
|
| |
| when resizing the editor then npcs on the right side of the screen will be displayed
| |