Version July 14, 2020

FIXED Crash when other player shooting arrow/bolts

Version 0.1.8 June 28, 2020

Rewritten animation synchronization
Added new client-side function: switchInterpolation(int type) for switching interpolation methods

New constants especially for this funtion:
DEFAULT_INTERPOLATION (this method is used by default, good for most cases)
OLD_INTERPOLATION (old interpolation method, better than default for DeathMatch servers, can't handle more than 70 players without problem with undoing player position)
NO_INTERPOLATION (it's also good for DeathMatch server, may cause player teleportations in some cases)

Version 0.1.7 May 10, 2020

FIXED Position interpolation (Previously, there was a problem with undoing player position when there were more than 70 people on the server)
FIXED The most common cause of unexpected crashes (probably)
FIXED ItemsGround (previously they were not created sometimes)
FIXED Problem with unexpected starting turning animation
FIXED Fighting animations (now they're much more smooth)
FIXED error squirrel function (previously it wasn't printing message in console under tilde)
FIXED getPlayerScale (client-side, previously it was returning integer value instead of floating point)
FIXED Spawning nameless hero on 0,0,0 position when another player used mob
FIXED Console isn't scale after change resolution
UPDATED httpLib (this can solve problem with "Cannot connect to http server!")
ADDED Full combos sync
ADDED New client-side class for line3d drawing:
Line3d(float x1, float y1, float z1, float x2, float y2, float z2)
bool Line3d.visible
Line3d.setBegin(float x, float y, float z)
Line3d.setEnd(float x, float y, float z)
Line3d.setColor(int r, int g, int b)
table {x, y, z} Line3d.getBegin()
table {x, y, z} Line3d.getEnd()
table {r, g, b} Line3d.getColor()
ADDED New client-side class for line2d drawing:
Line2d(int x1, int y1, int x2, int y2)
bool Line2d.visible
Line2d.setBegin(int x, int y)
Line2d.setEnd(int x, int y)
Line2d.setColor(int r, int g, int b)
table {x, y} Line2d.getBegin()
table {x, y} Line2d.getEnd()
table {r, g, b} Line2d.getColor()
ADDED New client-side class for item rendering:
ItemRender(int x, int y, int width, int height, string itemInstance)
ItemRender.setPosition(int x, int y)
ItemRender.setPositionPx(int x, int y)
ItemRender.setSize(int width, int height)
ItemRender.setSizePx(int width, int height)
table {x, y} ItemRender.getPosition()
table {x, y} ItemRender.getPositionPx()
table {width, height} ItemRender.getSize()
table {width, height} ItemRender.getSizePx()
int ItemRender.rotX
int ItemRender.rotY
int ItemRender.rotZ
int ItemRender.zbias
bool ItemRender.lightingswell
bool ItemRender.visible
ADDED New server-side function:
equipSpell(int pid, int itemId[, int slot])

Version 0.1.6 April 11, 2020

ADDED New server-side functions:
setPlayerInvisible(int pid, bool toogle);
bool getPlayerInvisible(int pid);
ADDED New client-side functions:
setBloodMode(int 0-4); // 0 - none, 1 - particles, 2 - decals, 3 - trails, 4 - amplification
ADDED Loading game settings from gothic.ini on game startup
FIXED Assertion failed crash
FIXED getfloat causes crash in modules

Version / March 15, 2020

ADDED Draw3d.distance property (default value: 1000)
ADDED Static Sky class (for sky manipulation):
Sky.setWeather(int type)
int Sky.getWeather()
Sky.setDontRain(bool flag)
bool Sky.isDontRain()
Sky.setDarkSky(bool flag)
bool Sky.isDarkSky
Sky.setFogColor(int nr, int r, int g, int b)
Sky.setCloudsColor(int r, int g, int b)
Sky.setPlanetSize(int planet, float x)
Sky.setPlanetColor(int planet, int r, int g, int b)
Sky.setLightingColor(int r, int g, int b)
FIXED GetTimerExecuteTimes causes segmentation fault (server update is required, but not necessary)
UPDATED Launcher - now it's loading public server list automatically, can show more than 127 avaiable players/slots and I also did some desing corrections

Version December 16, 2019

UPDATED Launcher

Version October 01, 2019

FIXED Problem with "Cannot load generated ids!" error, when you're using linux-based server application(server update is necessary)

Version September 30, 2019

ADDED New client-side functions:
bool startFaceAni(int pid, string aniName);
bool stopFaceAni(int pid);
string getFaceAniName(int pid);
ADDED New server-side function:
abort(); (do i have to explain?)
ADDED New property in Vob class:
float farClipZScale (it's responsible for render distance of Visual Objects)
bool cdStatic (it's responsible for static collision)
bool cdDynamic (it's responsible for dynamic collison)
ADDED New command in console under tilde (~): onscreendebug ;-)
ADDED Freeze character when you activate console under tilde
FIXED Camera.getRotation() (previously it's return correctly values only if camera was disabled)
FIXED ClientSide modules with .dll extension in linux server application (witch wasn't work)
FIXED Problem with extremely frequent client crashes
FIXED CapsLock (previously if you have pressed capslock before start the game, in game capslock was unpressed)
REMOVED collision property from vob class

Version August 23, 2019

FIXED Torches (which you couldn't use)
FIXED DX11 (which didn't work)
FIXED Segmentation Fault error in server application
FIXED Gesticulation
ADDED Scroll by keys in new console under ~
ADDED Functions for get/set magic level client-side:
setPlayerMagicLevel(int pid, int mlvl);
int getPlayerMagicLevel(int pid);

and also server-side missing function:
int getPlayerMagicLevel(int pid);
REMOVED Functions for invisibility (temporarily)

And also some general code improvments, have a nice game!

Version August 08, 2019

FIXED A lot of randomly crashes

Version 0.1.5 August 07, 2019

FIXED AutoPatcher
FIXED German keyboard layout
FIXED Function for ping limitation
ADDED IPV6 protocol support
ADDED Moving head sync
ADDED New console under ~
ADDED FaceANI sync
ADDED Animation progress sync
ADDED New methods for enter world
ADDED Sync for mob state for all connected players
ADDED BodyState sync
ADDED New functions:
setPlayerInvisible(int pid, bool toogle);
bool getPlayerInvisible(int pid);
setPlayerInvisibleChannel(int pid, int channel);
bool getPlayerInvisibleChannel(int pid);

Version February 09, 2019

ADDED New clientside function: float getLastHitAniFrame(int pid)
ADDED New clientside function: float getActFrame(int pid)
ADDED New clientside functions for PFX effects: bool addEffect(int pid, string effectName) bool removeEffect(int pid, string effectName)
ADDED New console command (console is available under tilde (~) ) : [ fps INTEGER_VALUE ] for limitation fps
FIXED 'V' letter, have fun ;V
FIXED Two causes of 'randomly' crash

Version November 18, 2018

ADDED New clientside function: int getCurrentInventorySlot();
ADDED New clientside callback: onInventorySlotChange(int from, int to);
ADDED Fast backspace delete and delete(KEY_DELETE) in input
ADDED ctrl+v in input
ADDED New clientside callback: onPaste();
ADDED New clientside functions: setClipboardText(text)
FIXED Mana sync i.e. getPlayerMana, getPlayerMaxMana server-side
FIXED getVisual for vobs
FIXED Character Vibrations
FIXED getItemName, Info, Description and Value crash after type nonexist instance
FIXED attackPlayerRange (crossbow becomes invisible)
FIXED attackPlayerMagic - possible crash
FIXED camera functions crashing after world change
FIXED Backspace in input
UPDATED We're decided to delete collision property from camera class.

Version November 06, 2018

FIXED Changing world
FIXED Crash when other players in stream interact with frying pan

Version November 01, 2018

UPDATED  Newer code version merged and used (from Sative's branch)
UPDATED  Higher items limit on server

Version October 17, 2018

ADDED New client-side callback: onShoot()
ADDED New client-side function: getItemInfo(string instance)
FIXED Spellbok, now you can open it and mark the spell over the character
FIXED  serialban
FIXED  onEquip callback (before it doesn't react to belt, amulette, spells)
FIXED Full stacking, everything is stacking from now
FIXED  All equip functions (before it doesn't mark item in equipment, if you have at least one copy of this item in equipment)
FIXED  Server save system for logs, bans

Version March 05, 2018

FIXED  Runes behaviour
FIXED  "Random" crash
FIXED  Fighting after death
FIXED  Running animations

Version 0.1.4 March 01, 2018

FIXED  Talents
ADDED  Splash screen
FIXED  Animations (experimental)
FIXED  Crash on world change
FIXED  0hp bug
FIXED  Invisibility (streamer) bug
UPDATED  Stacking items as in 0.1.2
ADDED  Missing squirrel functions releated with magic
FIXED  UnequipItem for runes bug
ADDED  New in-game splash screen
ADDED  Gothic Online logo on every loadscreen
ADDED  Load screens are now different on game launch
ADDED  Weapon trail
ADDED  Mobs sync
UPDATED  All doors are opened
ADDED  Waypoints
ADDED  Client functions:
table {x,y,z} getWaypoint(string name)
table {name, x, y, z} getNearestWaypoint()
bool isInWater()
string getItemName(string instance)
string getItemDescription(string instance)
int getItemValue(string instance)
setGuild(int id)
int getGuildId()
string getGuildName()

class Way(string StartWP, string EndWP)
string Way:Confusedtart //Read only
string Way::end //Read only
int Way::getCountWaypoints()
array Way::getWaypoints()

ADDED  Client events:
onMobInteract(pointer, from, to)

ADDED  Server functions:
table {x,y,z} getWaypoint(string world, string wp_name)
class Way(string StartWP, string EndWP)
string Way:Confusedtart //Read only
string Way::end //Read only
int Way::getCountWaypoints()
array Way::getWaypoints()

Version 0.1.3 December 28, 2017

ADDED  Magic synchronization
ADDED  Synchronisation of the items in hand
FIXED  errors with arrows/bolts
ADDED  static class Camera to the camera operation (client-side)
ADDED  client-side function attackPlayer(pid, id, combination)
ADDED  client-side function attackPlayerRanged(pid, id)
ADDED  client-side function attackPlayerMagic(pid, id, itemId)
ADDED  client-side event onSpellCast(itemId)
ADDED  server-side function setPlayerMana(pid, value)
ADDED  server-side function setPlayerMaxMana(pid, value)
ADDED  server-side function getPlayerMana()
ADDED  server-side function getPlayerMaxMana()
ADDED  server-side function setPlayerMagicLevel(pid, value[1-6])
ADDED  server-side event onPlayerEquipHandItem(pid, hand, itemId)
ADDED  server-side event onPlayerSpellSetup(pid, itemId)
ADDED  server-side event onPlayerSpellCast(pid, itemId)

Version September 25, 2017

FIXED  Bug with getPlayerSkillWeapon and setPlayerSkillWeapon, thoose functions only works for one handed weapons.
FIXED  Bug with client crashes, when client have high ping.

Version September 06, 2017

FIXED  Bug with multiple arrows (probably).
FIXED  Bug with no arrow in player hand.
FIXED  Bug with unfreezing player after dead, while was freezed with setFreeze function.
FIXED  Bug with rotation animation, that were looped over and over.

Version September 03, 2017

FIXED  Bug with wrong ids of skill weapon on the client-side.
FIXED  Bug, with not working damage from local NPCs, after hero respawn.
FIXED  Fixed crashes in queue container, while operating on empty queue.
UPDATED  Damage taken from players on the client-side will trigger onPlayerHit, but won't cause any health changes.
ADDED  Added client-side callback onPlayerDead(int playerid), works only on local NPC and local player.
UPDATED  Event onHit was renamed to onPlayerHit on the client-side.

Version 0.1.2 October 18, 2015

UPDATED  Disabled taking damage for local NPC from other players.
FIXED  Bug in fileMd5, when the file did not exist, the game stopped.
FIXED  Bug with working marvin mode.
FIXED  Bug with destroyNpc. NPC wasn't destroyed at all.
ADDED  Sound (2d/3d) management.
ADDED  Virtual worlds for players and items.
ADDED  Date to the server logs.
ADDED  Possibility of controlling ping limit in fight.
ADDED  Functions:
Client: isConsoleOpen, getPingLimit, setPingLimit
Server: getPlayerVirtualWorld, setPlayerVirtualWorld
ADDED  Classes:
Client: Sound, Sound3d
Current version: 0.1.8
Next version: 0.1.9