Zmiany

Version 0.1.10 beta 1

October 21, 2021

Compatibility changes

Client

  • disableControls function argument must be inverted (false to true, true, to false).
  • Now by default vobs aren't added to world after constructing an object. In order to add vob to world you have to call Vob::addToWorld method.
  • onMobInteract event was updated, removed scemename and name from event args. Usage: onMobInteract(ptr, mobType, from, to).
  • UI draw order will now strictly correspond to order in which element was shown, not in which elements were created.
    You have to update the order in which you show the elements (setting visible field to true, the last shown element is on top).

Server

  • Every <module> tag inside config required specifying md5 attribute.
    This also means, that having optional modules isn't supported from now on (at least in this release).

Changelog

Launcher

Added

  • Support server sorting using the selected column.
  • Possibility to add server to favorite in Launcher using context menu on the internet server list.

Updated

  • By default launcher will sort servers by numbers of players.

Client

Fixed

  • Crash when rebinding spells in inventory
  • Crash when casting spells with aoe, caused by respawn. Other player wasn't spawned before hero took damage from aoe spell.
  • Crash when calling Sky::setLightingColor in onInit event.
  • Many crashes caused by world change. Due to invalid memory managment in previous versions.
  • Many crashes related to Vob classes.
  • Memory leak in getItemInfo function.
  • Memory leak in getItemName function.
  • Memory leak in getItemDescription function.
  • Memory leak in getItemValue function.
  • Multiplayer exit menu will now handle keys only when it's visible.
  • Rare bug, when the player was twitching on curved surfaces.
  • Playing GAMESTART music while opening ingame menu.
  • Death animation in semi human creatues like zombie. Animation wasn't played at all.
  • Bug when player could still kill someone even after death.
  • Rare bug with learning weapon skills, sometimes learning was impossible due Gothic bug.
  • Bug that lead to reloading assets over and over, while creating new NPCs.
  • onOpenInventory event (now it will be only called when player successfully opens up eq).
  • onEquip event (wasn't always called and couldn't be cancelled).
  • onUnequip event (wasn't always called and couldn't be cancelled).
  • enableHud function (HUD_ALL wasn't working properly).
  • attackPlayerRanged function (previously it was a only dummy function).
  • attackPlayerMagic function (previously it was a only dummy function).
  • getPlayerArmor function was returning random item id.
  • getPlayerMeleeWeapon function was returning random item id.
  • getPlayerRangedWeapon function was returning random item id.
  • getPlayerHelmet function was returning random item id.
  • getPlayerShield function was returning random item id.
  • disableMusicSystem function wasn't reenabling music.
  • disableControls function, given argument was unnecessary inverted.
  • Draw3d::getText method (it was returning n^2 elements, instead of n elements).
  • Sound::play method won't play the sound, if it's currently playing.
  • Most of the Sound class fields can now be updated while sound is currently playing.
  • Sound3d::play method won't play the sound, if it's currently playing.
  • Sound3d::setTargetVob method wasn't updating vob pointer when sound was played.
  • Sound3d::setTargetPlayer method wasn't updating vob pointer when sound was played.
  • Most of the Sound3d class fields can now be updated while sound is currently playing.
  • Camera::getRotation returns incorrect rotation (restored old behaviour, rotation can only be get when you're manipulating camera in squirrel scripts).
  • Vob classes constructors, constructors with userpointer (previously those constructors couldn't be even called).
  • Mob.name field doesn't require specifying daedalus constans, text can be setted directly.

Added

  • More debug statistics for scripts in onscreendebug interface. So scripters can better keep track of resources used.
  • onMobOpen event.
  • onMobClose event.
  • Two new entries in function getItemInfo mainflag and flags
  • equipItem function.
  • unequipItem function.
  • getPlayersCount function.
  • getPlayerProtection function.
  • getDayLength function, which returns the day length in miliseconds.
  • setDayLength function, which sets day length in miliseconds.
  • letterHeight function for getting font height (all letters in font have always the same height).
  • letterHeightPx function for getting font height (all letters in font have always the same height).
  • textGetFont function.
  • getAvailableResolutions function.
  • setResolution function.
  • getFocusNpc function.
  • getPlayerVisualAlpha function.
  • setPlayerVisualAlpha function.
  • Vob::addToWorld method.
  • Vob::removeFromWorld method.
  • Sound::isPlaying method.
  • Sound3d::isPlaying method.
  • Draw::getPivotPoint method.
  • Draw::getPivotPointPx method.
  • Draw::setPivotPoint method.
  • Draw::setPivotPointPx method.
  • Draw::getScale method.
  • Draw::setScale method.
  • Draw::getRotation method.
  • Draw::setRotation method.
  • Texture::getPivotPoint method.
  • Texture::getPivotPointPx method.
  • Texture::setPivotPoint method.
  • Texture::setPivotPointPx method.
  • Texture::getRotation method.
  • Texture::setRotation method.
  • Texture::getUV method.
  • Texture::setUV method.
  • ItemRender.instance field, for setting up item visual using script instance.
  • Vob.visual field.
  • Vob.visualAlpha field.
  • Mob.scemeName readonly field.
  • Mob.focusOverride field.
  • MobLockable.keyInstance field.
  • MobLockable.pickLockStr field.
  • Draw.alpha field.
  • Draw3d.alpha field.
  • Texture.alpha field.
  • Camera.mode field.
  • Camera.movementEnabled field.
  • Sky.weather field.
  • Sky.dontRain field.
  • Sky.darkSky field.
  • MobDoor class.

Updated

  • All scripts errors are save into Multiplayer/mp.log.
  • Default player spawn is zCVobStartPoint (or {0, 150, 0} position if it doesn't exists).
  • onMobInteract event will now be called when player interacts with every type of Mob object (no filtering).
  • changeWorld function now has second optional argument, startPointName (default value is empty string).
  • getResolution function, returns also bpp (bits per pixel).
  • spawnNpc function now has second optional argument instance (default value is "PC_HERO") to prevent unnecessary npc reallocation.
  • hasItem function, previously it was returning null when hero didn't have the item, now it's returning 0.
  • Draw.text field, now it supports multi-line by adding \n symbol to text.
  • Sound.volume field, deprecation of this field was reverted and it's working as expected.
  • Sound3d.radius field is now type of float instead of int.
  • Vob.ptr field is now readonly.

Removed

  • Sound3d.balance field.

Deprecated

  • showPlayerStatus function is deprecated, use enableHud instead.
  • Vob::getVisual method is deprecated, use Vob.visual field instead.
  • Vob::setVisual method is deprecated, use Vob.visual field instead.
  • Draw::getAlpha method is deprecated, use Draw.alpha field instead.
  • Draw::setAlpha method is deprecated, use Draw.alpha field instead.
  • Draw3d::getAlpha method is deprecated, use Draw3d.alpha field instead.
  • Draw3d::setAlpha method is deprecated, use Draw3d.alpha field instead.
  • Texture::getAlpha method is deprecated, use Texture.alpha field instead.
  • Texture::setAlpha method is deprecated, use Texture.alpha field instead.
  • Camera::getMode method is deprecated, use Camera.mode field instead.
  • Camera::setMode method is deprecated, use Camera.mode field instead.
  • Camera::enableMovement method is deprecated, use Camera.movementEnabled field instead.
  • Sky::getWeather method is deprecated, use Sky.weather field instead.
  • Sky::setWeather method is deprecated, use Sky.weather field instead.
  • Sky::isDontRain method is deprecated, use Sky.dontRain field instead.
  • Sky::setDontRain method is deprecated, use Sky.dontRain field instead.
  • Sky::isDarkSky method is deprecated, use Sky.darkSKy field instead.
  • Sky::setDarkSky method is deprecated, use Sky.darkSKy field instead.

Server

Fixed

  • Streamer bug, after players changed world in the same time, they couldn't see each other.
  • Race conditions in packets, so sometimes player didn't have equipped item or setted skills.
  • Bug with invalid player instance, sometimes even after death instance wasn't reseted.
  • Crashes in packet, while reading string with special characters.
  • Most of the crashes caused by waypoints.

Added

  • TALENT_REGENERATE constant.
  • TALENT_FIREMASTER constant.
  • TALENT_PICKPOCKET_UNUSED constant.
  • TALENT_A constant.
  • TALENT_B constant.
  • TALENT_C constant.
  • TALENT_D constant.
  • TALENT_E constant.
  • md5 attribute in module tag (config.xml) (required).
  • getHostname function.
  • enableEvent_onTick function.
  • onTick event (by default it's disabled).
  • onPlayerEquipAmulet event.
  • onPlayerEquipRing event.
  • onPlayerEquipBelt event.
  • onPlayerEquipSpell event.

Updated

  • getPlayerTalent function will now work with newly added talent constants.
  • setPlayerTalent function will now work with newly added talent constants.
  • setPlayerWorld function now has third optional argument, startPointName (default value is empty string)

Shared

Fixed

  • cancelEvent function will now work properly with nested event calls.
  • isEventCancelled function will now work properly with nested event calls.
  • getNearestWaypoint function (it could crash when waypoint wasn't found).
  • Way::getWaypoints method (however, client & server paths can still be different when path is more complex, maybe this problem will be addressed in the future).

Added

  • Missing functions inside HSQAPI (now module can use any squirrel function without the need to link against squirrel).
  • CLIENT_SIDE constant.
  • SERVER_SIDE constant.
  • removeEventHandler function.
  • isEventCancelled function.
  • getPlayerAmulet function.
  • getPlayerRing function.
  • getPlayerBelt function.
  • getPlayerSpell function.

Updated

  • callEvent function will now return true when event was cancelled or false otherwise.

Deprecated

  • equipArmor function is deprecated, use equipItem and getPlayerArmor instead.
  • unequipArmor function is deprecated, use unequipItem and getPlayerArmor instead.
  • equipMeleeWeapon function is deprecated, use equipItem and getPlayerMeleeWeapon instead.
  • unequipMeleeWeapon function is deprecated, use unequipItem and getPlayerMeleeWeapon instead.
  • equipRangedWeapon function is deprecated, use equipItem and getPlayerRangedWeapon instead.
  • unequipRangedWeapon function is deprecated, use unequipItem and getPlayerRangedWeapon instead.
  • equipHelmet function is deprecated, use equipItem and getPlayerHelmet instead.
  • unequipHelmet function is deprecated, use unequipItem and getPlayerHelmet instead.
  • equipShield function is deprecated, use equipItem and getPlayerShield instead.
  • unequipShield function is deprecated, use unequipItem and getPlayerShield instead.

Version 0.1.9.5

September 01, 2021

FIXED crash during game startup (some script packets could arrive too soon, now this issue is resolved)

Version 0.1.9.3

March 28, 2021

UPDATED setPlayerTalent function - added TALENT_ACTOBATIC

Version 0.1.9.2

March 22, 2021

FIXED Fixed invisible arrows and bolts, while other players were shooting.
 

Version 0.1.9.1

March 22, 2021

FIXED Fixed function enable_DamageAnims. Even if damage animations was disabled, hit animation was played when hitted from arrow or bolt.
FIXED Fixed function setPlayerSkillWeapon, that wasn't setting properly fight style when setting value over 100%.
 

Version 0.1.9

December 31, 2020

UPDATED Set limit on ground items to 65565.
UPDATED ItemRender now have option to render model.
usage ItemRender.visual = "MODEL.3DS";
UPDATED  Add name, mobType parameteres on onMobInteract.
usage onMobInteract(mob, name, type, from, to)


FIXED Equip functions now will check if item exists in player equipment.
FIXED getFont() in Draw class works proper.


ADDED Function to use item by player.
usage useItem(int player, string itemInstance)
ADDED Function to use closest mob.
usage useClosestMob(int player, string mobName, int state)
ADDED Function to attack player visual effect.
usage attackPlayerWithEffect(int playerId, int killerId, int damageType, int damage, bool projectile, int effect, string effectName)
ADDED Function to display video.
usage playVideo(string name)
ADDED SFX/music sound manipulation.
disableMusicSystem(bool)
bool isMusicSystemDisabled()
setMusicVolume(float volume) // 0.0 - 1.0
float getMusicVolume()
setSoundVolume(float volume) // 0.0 - 1.0
float getSoundVolume()
 

Version 0.1.8.2

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.top()
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.top()
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.top()
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])