Server Emulator : Change Log

A place where the developers will submit any work done to the somadev server or client.

Server Emulator : Change Log

Postby Finito » Fri Feb 27, 2009 10:12 pm

This topic will be kept locked (to keep it clean, discussion can go in the sever emulator topic) and will be updated with changes made to the server emulator.
The below is a big post and has logs going back to january (don't realy have much logs before this wish i did lol).
Further changes will be added in a new post in this topic (for now).


Revision: 116
Date: 01:55:53, 27 February 2009
Message:
More work for guilds!
Implemented: Loading of guild user data from the guild user table in database.

Implemented: Add guild user function in the guild class.

Added: Defines for hsoma and dsoma guild level requirement.

Implement: Event Command GUILD_OPEN (e.g. guild master NPC, the menu).

Added: Missing error messages for some of the server data loading failures.

Implemented: Loading of guild number and guild name for characters. This also involved putting the guild name in the user data packets.

Implemented: GuildList function that gives the client the name of all guilds currently created. ('Apply to Guild' option on guild master npc's).

Implementing: Started working on the GuildUserList function. ('Guild' option on guild master npc's).

All the above has been tested apart from the GuildUserList because have not yet finished implementing it.
Bugs Found:
- Forgetting that the guild numbers start at 0 (thought it was 1)
- GetGuildData was adding the guild to the container (array) twice causing numerous problems.
- Forgetting to zero the memory for the user guild name. Caused random ASCII to appear as the guild name.

Any bugs found during the testing are fixed in this revision.

Revision: 115
Date: 23:34:36, 25 February 2009
Message:
Implement: Started working on guilds.
- Loading of guild data from the guild table in database. (Needs testing).
- Some Basic Guild functions and classes added Guild and GuildUser.

Revision: 114
Date: 16:20:57, 22 February 2009
Message:
Implemented: Trader Exchange (E.g. Devil Exchange Type Shops etc.)

Bug Fix: EXEC had incorrect maximum ExecInt was 5 and there was commands that used 10.

Revision: 113
Date: 19:29:17, 20 February 2009
Message:
Bug Fix: Devil soma character unable to revive when dead. This was because SetBeLiveInPKZone didn't have an implementation for warping the character to a location when died via RvR (Human versus Devil) or during the war of the worlds.

Revision: 112
Date: 22:49:45, 19 February 2009
Message:
These are all bug fixes for emulator testing 19-02-2009 21:50 (see '1p1 Emu Testing 19-02-09(2).docx' in Emu testing documents folder).

Bug Fix: Assertion error when hitting a character or getting hit. (Forgot to properly validate the item pointers in DecreaseArmorItemDura).

Bug Fix: Losing race not being warped to their town after class war has needed. (Incorrect IsMapRange area number used in ClassWarEnd, Incorrect zone number used for the LinkToOtherZone function calls for devil soma characters.)
Went through the rest of code checking all the LinkToOtherZone to make sure they was correctly implemented. (Automatically fixed any found problems and they are included in this revision (update)).

Bug Fix: Assertion error when getting charisma INC value. (Missing calls to charisma INC value table loading functions).

Found Bug: Devil soma character unable to revive when dead!. (This is because SetBeLiveInPKZone isn't fully implemented and does not contain the code to handle the RvR. !!MAKE THIS A PRIORITY TO BE FIXED!!

Revision: 111
Date: 21:22:20, 19 February 2009
Message:
These are all bug fixes for emulator testing 19-02-2009 20:00 (see '1p1 Emu Testing 19-02-09(1).docx' in Emu testing documents folder).
Bug Fix: Throne room door showing name as iiiiiiiiiiiiiiiiiiiiiii.

Bug Fix: Incorrect X and Y server co ordinate conversion for stone locations. (Forgot to convert zone number in ConvertToServer to zone index because need a zone index to lookup in g_Zones array).

Bug Fix: Incorrect users or no users being returned for stone locations. (Forgot to convert zone number in GetUid to zone index because need a zone index to lookup in g_Zones array).

Bug Fix: Wrong user pointer being given after call to GetUser with uid of a user on a stone. (Forgot to do - USER_BAND on the uid).

Revision: 110
Date: 21:18:45, 19 February 2009
Message:
These are all bug fixes for emulator testing 19-02-2009 20:00 (see '1p1 Emu Testing 19-02-09(1).docx' in Emu testing documents folder).
Bug Fix: Throne room door showing name as iiiiiiiiiiiiiiiiiiiiiii.

Bug Fix: Incorrect X and Y server co ordinate conversion for stone locations. (Forgot to convert zone number in ConvertToServer to zone index because need a zone index to lookup in g_Zones array).

Bug Fix: Incorrect users or no users being returned for stone locations. (Forgot to convert zone number in GetUid to zone index because need a zone index to lookup in g_Zones array).

Bug Fix: Wrong user pointer being given after call to GetUser with uid of a user on a stone. (Forgot to do - USER_BAND on the uid).

Revision: 109
Date: 01:31:39, 19 February 2009
Message:
Bug Fix: NPC does not have monster set id variable and was assigning and checking against the sSid of monster table instead of sSid of monsterset table.

Bug Fix: Spawns for continental army map npcs was incorrectly implemented.

Altered: g_bClassWar not being sent in PKT_USERMODIFY packet.

Bug Fix: FindRandPointInRect_C was change the m_iZoneIndex when it need not be and this was causing it to muck up post calls to other functions where m_iZoneIndex was being used.

Bug Fix: LinkToOtherZone would fail if the user was never at the old X and Y location on map. Changed it so it still does what it was doing but will not fail, because it is possible that user is being moved elsewhere because they can't be put onto the other location etc.

Bug Fix: Forgot to take away -1 from iArmorItemCount on DecreaseArmorItemDura. (Was causing a access violation because invalid index was given into the m_InvItem and was then assigned to a pointer which then gave an invalid pointer etc.)

Revision: 108
Date: 00:05:10, 19 February 2009
Message:
Implemented: CheckClassPoint (Does the giving and removing of pos)

Bug Fix: Memory leaking for g_arStore. (Forgot to delete it when server is closing).

Bug Fix: Memory leaking for m_Com Throw Item Array. (Was being initialised twice and deleted once, should only be initialised once anyway).

Implemented: Code to spawn npcs for continental maps (WotW). (Spawns correct npcs for the class who owns the area).

Altered: GetUid to include a 'z' parameter for the zone has default value of -1 and then uses the zone index so don't have to pass in zone index all time.

Altered: ConvertToServer to include a 'z' parameter for the zone has default value of -1 and then uses the zone index so don't have to pass in zone index all time.

Implemented: /classstart server command.

Implemented: /classend server command.

Implemented: The class war aka War of the Worlds. (Needs testing but hopefully is ok, but i know currently IsMapRange lacks code to detect the WotW maps etc).

Altered: Added the class who owns wotw to packets in various functions where it was missing.

Revision: 107
Date: 00:11:54, 18 February 2009
Message:
Added define for lowest possible class point (pos) CLASS_POINT_LOWEST.

Implemented: EVT Logic command LOGIC_CHECK_CLASS_TOWN.

Implemented: EVT Logic command LOGIC_CHECK_CLASS_TOWN_WAR.

Implemented: CanTradeItem function. To be used to check if an item can be traded.

Implemented: 10% stat + skill exp increase for when in a party and near a member if leader and near leader if not. GetInc now completed.

Revision: 106
Date: 21:18:40, 11 February 2009
Message:
Nothing: Just added a todo comment thats all...

Revision: 105
Date: 21:39:14, 10 February 2009
Message:
Implement: More of the Death Type stuff for revival code etc. This included a check for detecter type npc on the npc attack function and setting death type to guard for the user.

Implement: Added m_bInGuildWar and m_iGuildWar for identifying user in guild war.

Altered: Dead function to included a class parameter so can perform a class check for detecting DEATH_TYPE_CLASS.

Bug Fix: Incorrect moral lower band for Virtuous was >= 30 in some places and should have been >= 31.

Implement: Guild War checks for CheckCanPK (this now makes the function complete).

Implement: Added more setting of death type checks in Dead function.

Implement Guild War checks and setting of DEATH_TYPE_GUILDWAR in CheckPK function.

Bug Fix: Incorrect usage of the m_iDeathType in SetBeLiveInPKZone. (Was checking wrong using == instead of &).

Implement Magic skill reduction for SetBeLiveByDetecter and SetBeLive.

Bug Fix: SetBeLive not removing a death type flag from m_iDeathType. (Forgot to do m_iDeathType ^= DEATH_TYPE_XXXXX).

Bug Fix: Revive and Warp to town would still decrease stats when revive in arena or guild war.

Revision: 104
Date: 22:22:39, 09 February 2009
Message:
Bug Fix: Missing Buy and Sell rates. (Taken from EVT file when store is opened and also implemented the cap as 500% for both)

Bug Fix: Checks for untradeable items missing on sell item. (Still need to implement the IsItemDroppable function but atleast its now checking for bType 15(TYPE_UNTRADABLE))

Bug Fix: Item dura not having any effect on the price of item when selling. (Implemented the correct formula for items with bType < 8(TYPE_ACC) basicly all items that can have durability (Not usage e.g. consumable)).

Revision: 103
Date: 20:28:09, 09 February 2009
Message:
Implement: MAgic skill cap by reducing the amount of exp on the lowest skill magic.

Revision: 102
Date: 14:28:07, 08 February 2009
Message:
Bug Fix: Incorrect values used on GetMoralName for the moral bands.

Implement: Increase of stat exp taken upon revival from death when the player has got a low moral e.g. Human with Wicked moral or Devil with Virtuous will get more exp taken.

Implement: Weapon skill cap by reducing the amount of exp on the lowest skill weapon.

Bug Fix: Special Gem decreases item dura by two. Was removing a item when right clicking, this should not happen with this type of item. Added a bItemUsed to the SpecialItemUse that can be used to tell it to not remove the item.

Revision: 101
Date: 16:58:13, 07 February 2009
Message:
Bug Fix: Devil soma stat gains incorrect. The multiplier values for the plus in calcplusvalue got wrongly calculated and therefore returned incorrect inc value causing incorrect stat gains.
Bug Fix: Incorrect divider used on CON stat for both devil and human soma.

Revision: 100
Date: 19:39:57, 26 January 2009
Message:
Added a FillMagicData function for use in the upcoming UpdateUserData.
Implemented UpdateUserData and added a call on /save command and logout. (Now something is being saved YaY!)

Revision: 99
Date: 17:48:29, 24 January 2009
Message:
Corrected minimum stat in the Plus stat functions. Was only checking if stat was < 10.0 instead of checking it against the starting stat value.

Revision: 98
Date: 21:03:53, 20 January 2009
Message:
Implemented some more GM commands. e.g. /monster /zmonster /notice etc...

Revision: 97
Date: 23:54:08, 18 January 2009
Message:
Added: IsServerRank ready for adding permissions for commands etc.

Revision: 96
Date: 21:17:51, 18 January 2009
Message:
Bug Fix: Not gaining any moral exp. (Caused by table being implemented incorrectly)
Bug Fix: Not gaining any magic skill exp for magic arrow type magic. (Caused by missing call to SetMagicExp).
Added: Defines for player server ranks. (Refer to PlayerRank.xls in Documents)

Revision: 95
Date: 16:29:24, 18 January 2009
Message:
Added warps to LoginReq for WotW map check.
Added SetMagicExp and PlusMagicExp. Now magic skill can be gained.
Added a missed InitUser(0) on LogOut.
Added the POS change update to ClassStoreBuyReq.
Added check on SetBeLive for warp to town that will eventually call the DeathThrowItem and DeathThrowMoney once implemented.

Revision: 94
Date: 01:41:43, 18 January 2009
Message:
Added SetMoral and PlusMoralByNpc now moral can be gained and lost.
Added MAP_AREA_WOTW_MAP MapRange check to LinkToOtherZone to inform client of who owns a wotw map.

Revision: 93
Date: 19:47:28, 17 January 2009
Message:
Bug Fix: Missing CheckPlusType 6 on MagicArrow for NPC target handling.

Revision: 92
Date: 17:55:53, 17 January 2009
Message:
Bug Fix: AreaNumber on map was implemented wrong therefore causing the server to crash because position of player was outside of the map.

Bug Fix: Exp Gained calculations all returning 0 because the casting to double was wrongly done.

Added more GM messages for Attack and Defense mostly to do with magic. (Outputs exp gained, damage, defense)

Bug Fix: The server would throw a runtime error when attempting a login when running the server outside of a debug environment and in a release build.
Found out that m_sRemainMagic was not being initailised properly because forgot to call the InitRemainMagic in the InitUser function.
Corrected this and also checked that all user data is being initialised correctly.
Also noticed that sMagicNo was being checked by a < 0 when realy it needed a <= 0 so corrected this also.

Revision: 91
Date: 03:45:23, 17 January 2009
Message:
Implemented EXEC_MAGIC.
Found a bug with map code todo with IMF file will be investigating further.

Revision: 90
Date: 01:46:29, 17 January 2009
Message:
Implemented BBS functions, Open, Read, Write, Next, Edit and Delete (Still needs the permission side of things doing)

Altered EXEC_LINK to check if zone being warped to is same as current zone therefore do a LinkToSameZone instead of LinkToOtherZone.

Added call to BBSOpen on EXEC_BBS_OpenChangeOtherItem

Added bExact = true on LOGIC_CHECK_POSITION (For now until it is implemented need the check to pass by default)

Revision: 89
Date: 17:53:54, 16 January 2009
Message:
Implemented damage reduction and defense reduction todo with other race and wotw. (includes reading of classwar options in the soma.ini)

Revision: 88
Date: 16:40:56, 16 January 2009
Message:
Defines added for warp death magic skill inc.
Completed more of the implementation of GetInc.

Revision: 87
Date: 20:52:32, 15 January 2009
Message:
Added an empty (contains a return 0) CheckRemainSpecialAttack and added some calls from various stuff.

Added MagicSkill checks to CheckRevive and noted that Calculations need checking and the MageType implementation needs checking.

Added code for MagicSkill INC and RDMagicSkill INC to GetInc

Added concussion and paralyze checks to Movement

Revision: 86
Date: 18:02:15, 15 January 2009
Message:
Added more define for MagicTarget

Revision: 85
Date: 17:57:32, 15 January 2009
Message:
Added defines for MagicTarget types

MagicCircle Attack Implementation (Not 100% complete but useable)

Moved code that handles MagicEffect for User targets into its own function (No point having the same code in like 3 different places)

Revision: 84
Date: 23:16:58, 14 January 2009
Message:
Added MagicRail Magic Attack Implementation (Not 100% finished but its a start).

Direction defines added (Fed up of using ordinals >.<)

Moved the code that handles Magic Effect for Npc Targets into its own function (No point having the same code in like 3 different places)

Added MagicCircle Magic Attack Implementation (Currently is just a copy of MagicRail will need altering because it will not even work yet)

Revision: 83
Date: 18:29:54, 13 January 2009
Message:
Tidy: Minor code tidy up changing m_LiveDetecter to m_LiveGray.
Add: Death Function - Arena check to sets DeathType to DEATH_TYPE_DUEL
Add: Death Function - Remove remaining magic and gray.

Revision: 82
Date: 00:02:21, 05 January 2009
Message:
Bug Fix: Was using BELT_ITEM_NUM instead of INV_ITEM_NUM causing a slot check to fail before allowing it to be used as index into item inventory.

Revision: 81
Date: 14:10:33, 04 January 2009
Message:
Buf Fix: Wrong table being used for change other item

Revision: 80
Date: 14:08:46, 04 January 2009
Message:
Add: Set Magic Belt
Add: Special / Alternate Gem
Finito
SomaDev Staff
 
Posts: 425
Joined: Fri Jan 11, 2008 6:25 pm

Re: Server Emulator : Change Log

Postby Finito » Sun Mar 01, 2009 11:45 pm

Revision: 117
Author: finito
Date: 22:42:04, 01 March 2009
Message:
Implemented: Finished the GuildUserList function. ('Guild' option on guild master npc's).

Implemented: Creation of new guilds. ('Make Guild' option on guild master npc's).

Implemented: Editing of guild information via clicking of guild name in the guild window (Available to guild leaders only).

Implemented: Editing of guild position names (Available to guild leaders only).

Implemented: Guild applying. Can now apply using the 'Apply to Guild' option (was just a list of guilds before).

Implementing: Guild application list function that gives the guild management the name of all players currently applying to the guild. ('Application option on guild master npc's).
Needs a bit more work:
- Currently cannot accept or decline.
- The player information upon click of a name is broken.
- Basicly its just a list of player names atm.
Finito
SomaDev Staff
 
Posts: 425
Joined: Fri Jan 11, 2008 6:25 pm

Re: Server Emulator : Change Log

Postby Finito » Thu Mar 05, 2009 1:01 am

Revision: 118
Author: finito
Date: 23:59:38, 04 March 2009
Message:
Implement: Guild user application reject.

Implement: Guild user application accept (Joined Guild).
Finito
SomaDev Staff
 
Posts: 425
Joined: Fri Jan 11, 2008 6:25 pm

Re: Server Emulator : Change Log

Postby Finito » Sun Mar 08, 2009 2:30 pm

Revision: 119
Author: finito
Date: 13:28:11, 08 March 2009
Message:
Implement: Guild user 'Cancel Apply' option on guild master npc's.

Implement: Guild Rank Change.

Implement: Guild Contribution (Giving and taking of the guild barr).

Implementing: Started work on guild member removing (member leaving or being kicked from the guild).
Finito
SomaDev Staff
 
Posts: 425
Joined: Fri Jan 11, 2008 6:25 pm

Re: Server Emulator : Change Log

Postby Finito » Tue Mar 10, 2009 12:52 am

Revision: 120
Author: finito
Date: 23:51:51, 09 March 2009
Message:
Implemented: Guild member removing (member leaving or being kicked from the guild).
Finito
SomaDev Staff
 
Posts: 425
Joined: Fri Jan 11, 2008 6:25 pm

Re: Server Emulator : Change Log

Postby Finito » Sun Apr 05, 2009 10:58 pm

Revision: 121
Author: finito
Date: 22:56:04, 05 April 2009
Message:
Implemented: Guild Disband.

Fixed: Guild database functions returning true even when the result was a failure.

Fixed: Wrongly identifying the rank of a guild members in some of the currently implemented guild functions because of a code change (No longer using the index into guild member array to identify the rank).

Fixed: Memory leak found in code that creates the drop lists for NPC (monsters) when they get spawned.
Finito
SomaDev Staff
 
Posts: 425
Joined: Fri Jan 11, 2008 6:25 pm

Re: Server Emulator : Change Log

Postby Finito » Thu May 28, 2009 3:48 am

Revision: 122
Author: finito
Date: 21:23:37, 09 April 2009
Message:
Implemented: EVT command LOGIC_CHECK_GUILD_RANK.

Implemented: CheckGuildBossDead, will eventually be used for guild wars.

Implemented: Stopping guild leader from running when in a guild war.

Implemented: Logout will now do guild war checks for setting name to black and checking if the guild boss is dead.

Implemented: Removing from guild when deleting character.

Implementing: SpecialAttackArrow (Auras for single targets).
Done so far:
- Validation including requirement checks.
- USER targets only
- Effects are not yet handled e.g. they do nothing but show the client graphic
- Random thing...the following special attacks can be used when within a safe zone such as the one at WotW (All others can't be used):
SPECIAL_EFFECT_HPREGEN
SPECIAL_EFFECT_INCREASEATTACK
SPECIAL_EFFECT_DEFENSE
SPECIAL_EFFECT_SPEED
SPECIAL_EFFECT_DODGE
SPECIAL_EFFECT_MPREGEN
SPECIAL_EFFECT_RAPIDCAST
SPECIAL_EFFECT_MPSAVE:
SPECIAL_EFFECT_TRACE
SPECIAL_EFFECT_MASTERTRACE

Implemented: UserItemToStr for converting item data structure into a format ready to be saved to database.

Implemented: Saving to database of Inventory, Belt and Storage.
- Currently only calls these save functions upon logout.

Added: Added a temporary call to SetBeLive in the Logout function that is called when player logs out and they are currently dead. (basically does a 'warp to town').

Fixed: Storage not showing items when opening (Don't know how missed this...). Caused by setting an integer in packet for the maximum storage items when it should have been a short.
Finito
SomaDev Staff
 
Posts: 425
Joined: Fri Jan 11, 2008 6:25 pm

Re: Server Emulator : Change Log

Postby Finito » Thu May 28, 2009 3:48 am

Revision: 123
Author: finito
Date: 02:31:08, 10 April 2009
Message:
Fixed: Zone shout not checking for shout scroll items or changing text colour to that of the scroll.

Fixed: Buying equipment items from a shop resulted in the item having 1 durability.

Implemented: Repairing of items at the blacksmith.
Finito
SomaDev Staff
 
Posts: 425
Joined: Fri Jan 11, 2008 6:25 pm

Re: Server Emulator : Change Log

Postby Finito » Thu May 28, 2009 3:48 am

Revision: 124
Author: finito
Date: 19:50:16, 10 April 2009
Message:
Implemented: More validation for preventing unauthorised access to characters.

Fixed: Can't take item out of storage because says bag weight is full when it isn't.
Caused by incorrect calculation in server was doing
StorageItem.Wgt*StorageItem.Amount instead of StorageItem.Wgt*ItemAmountTakeOut.
Finito
SomaDev Staff
 
Posts: 425
Joined: Fri Jan 11, 2008 6:25 pm

Re: Server Emulator : Change Log

Postby Finito » Thu May 28, 2009 3:48 am

Revision: 125
Author: finito
Date: 01:55:08, 12 April 2009
Message:
Fixed: Euro Soma client incompatible with the server emulator.

Fixed: New characters with balanced stats getting given a male shirt instead of training sword.

Fixed: Client crashes when a NPC attacks you (Only happened with the Euro Soma client).

Add: Message saying item received for trader exchange.

Fixed: Magic data not saving to database.

Fixed: Event data not saving to database.

Fixed: Weight not being recalculated when loading items from database. Was sometimes causing the weight to be incorrect.
Finito
SomaDev Staff
 
Posts: 425
Joined: Fri Jan 11, 2008 6:25 pm

Next

Return to Development blog

Who is online

Users browsing this forum: No registered users and 1 guest

cron