Coder Social home page Coder Social logo

sphereserver / source-x Goto Github PK

View Code? Open in Web Editor NEW
52.0 18.0 40.0 136.68 MB

Ultima Online server emulator written in C++

License: Apache License 2.0

CMake 0.55% C++ 36.67% C 62.78% Batchfile 0.01% Shell 0.01%
c-plus-plus emulator mmo mmorpg mmorpg-server multiplatform rpg sphereserver spheresvr ultima

source-x's Introduction

SphereServer

Game server for Ultima Online

Coverity Scan Build Status Gitter

Download

Automatic builds

Building

Project can be compiled on Windows (Visual Studio) and Linux (GCC)

Windows (Visual Studio)

  • Open the project file SphereSvr.vcxproj using Visual Studio
  • On top menu, select the build configuration (Debug/Local/Nightly/Release), platform (x86/x64), and click on Build > Build Solution to compile

NOTES:

  • Required version: VS2015 or later (VS Code is not supported)
  • When using VS >= 2017:
    • When opening SphereSvr.vcxproj for the first time it will request an update on project file, just click OK to update (if update request doesn't get opened automatically, just open it on Project > Retarget solution)
    • Newest VS have an modular installation which comes with just basic components, and extra components must be installed as needed. To compile Sphere you must open Visual Studio Installer to install Desktop Development with C++ workload

Linux (Ubuntu)

Add architecture support

  • To compile 32bit build on 32bit OS or 64bit build on 64bit OS:
    # Skip this step (architecture is already supported by OS)
    
  • To compile 32bit build on 64bit OS:
    sudo dpkg --add-architecture i386
    sudo apt-get update
    sudo apt-get dist-upgrade
    

Install MySQL 5.7 client

  • Ubuntu 14.10 or older:

    • Default package repository only have support up to MySQL 5.6, so add MySQL 5.7 support
      sudo add-apt-repository 'deb http://repo.mysql.com/apt/ubuntu/ precise mysql-5.7'
      sudo apt-get update
      
    • Install MySQL
      • To compile 32bit build on 32bit OS or 64bit build on 64bit OS:
        sudo apt-get install libmysqlclient-dev
        
      • To compile 32bit build on 64bit OS:
        sudo apt-get install libmysqlclient-dev:i386
        
  • Ubuntu 15.04 to 19.04:

    • Install MySQL
      • To compile 32bit build on 32bit OS or 64bit build on 64bit OS:
        sudo apt-get install libmysqlclient-dev
        
      • To compile 32bit build on 64bit OS:
        sudo apt-get install libmysqlclient-dev:i386
        
  • Ubuntu 19.10 or later:

    • Default package repository dropped support for MySQL 5.7, so add it back
      sudo add-apt-repository 'deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-5.7'
      sudo apt-get update --allow-insecure-repositories
      
    • Install MySQL
      • To compile 32bit build on 32bit OS or 64bit build on 64bit OS:
        sudo apt-get install libmysqlclient-dev=5.7*
        
      • To compile 32bit build on 64bit OS:
        sudo apt-get install libmysqlclient-dev:i386=5.7*
        

Install required packages

  • To compile 32bit build on 32bit OS or 64bit build on 64bit OS:
    sudo apt-get install git
    sudo apt-get install gcc
    sudo apt-get install g++
    sudo apt-get install make
    
  • To compile 32bit build on 64bit OS:
    sudo apt-get install git
    sudo apt-get install gcc-multilib
    sudo apt-get install g++-multilib
    sudo apt-get install make
    

Linux (CentOS / Red Hat)

Add MySQL 5.7 support

  • Add MySQL support on package repository

    • CentOS 6 / Red Hat 6:
      sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el6-9.noarch.rpm
      
    • CentOS 7 / Red Hat 7:
      sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-10.noarch.rpm
      
    • CentOS 8 / Red Hat 8:
      sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el8-8.noarch.rpm
      
    • CentOS 9 / Red Hat 9:
      sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el9-4.noarch.rpm
      
  • Configure MySQL version on package repository

    sudo yum-config-manager --disable mysql80-community
    sudo yum-config-manager --enable mysql57-community
    

Install required packages

  • To compile 32bit build on 32bit OS or 64bit build on 64bit OS:
    sudo yum install git
    sudo yum install gcc-c++
    sudo yum install glibc-devel
    sudo yum install mysql-community-devel mysql-community-libs
    
  • To compile 32bit build on 64bit OS:
    sudo yum install git
    sudo yum install gcc-c++
    sudo yum install glibc-devel.i686
    sudo yum install mysql-community-devel.i686 mysql-community-libs.i686
    

Get the source code

git clone https://github.com/SphereServer/Source.git
cd Source

Compile the source code

  • To compile 32bit build:
make NIGHTLY=1 x86=1
  • To compile 64bit build:
make NIGHTLY=1

Coding notes for new contributors

  • Make sure you can compile and run the program before pushing a commit.
  • Rebasing instead of pulling the project is a better practice to avoid unnecessary "merge branch master" commits.
  • Adding/removing/changing anything that was working in one way for years should be followed by an ini setting when the changes can't be replicated on scripts to keep backwards compatibility.

Licensing

Copyright 2023 SphereServer development team

Licensed under the Apache License, Version 2.0 (the "License").
You may not use any file of this project except in compliance with the License.
You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0

source-x's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

source-x's Issues

Move CComponents to a new folder.

Adding /game/components folder
New CComponents naming standard: CCName (ClassComponentName)
Update current Components CSpawn, CFaction and CChampion to new standard (CCSpawn, CCFaction and CCChampion)
Change GetLink() inheritance to pure virtual, so each CComponent can manage it's own link types.

Gold has 65k limitation.

Tried adding gold via .gold command or by dropping gold on the bank.
It gets limited to 65k (after 65k starts counting from 0).

[PORT]72ff09966548b27829fcf2ed7608207ae6862d26, Fixed: Resurrect, Reveal, Meteor Swarm and Lightning spells showing effect animation

To be tested more and eventually ported.
Revision: Sphereserver/Source@72ff099
Author: Coruja [email protected]
Date: 12/11/2016 20:41:49
Message:
Fixed: Resurrect, Reveal, Meteor Swarm and Lightning spells showing effect animation even when EFFECT_ID=0 is set
[sphereCrypt.ini]: Added crypt key for classic clients 7.0.54 ~ 7.0.55 and enhanced clients 4.0.54 ~ 4.0.55

[PORT]f26b39b9b40fba76660c36d57baa8387d3613272, Fixed: Security issue setting on account login

Revision: Sphereserver/Source@f26b39b
Author: Coruja [email protected]
Date: 22/07/2016 22:52:03
Message:
Fixed: Security issue setting account login as chat name when newest clients try to setup the chat window for the first time and the char name is not available
Fixed: Invisible chars being incorrectly revealed by REVEALF_LOOTINGOTHERS reveal flag when picking items from the ground
Fixed: Return 0/1 on spell triggers not working correctly
Fixed: Function MOVENEAR not working correctly

itemunequip trigger doesnt return correct armor value

Example : i_agapite_platemail_arms armor value: 37
under player events:
on @itemunequip
say //this one show not updated armor value like if u have 5 armor while wearing armor and it become 0 when u equip it but it say "5" even i tried with "timerf 5,say " its still saying "5"

Change how hitpoints for items with an health bar work.

  • Add a typedef which has to be added to the item to enable this behaviour.
  • Add a new ECS Component for damageable items and component properties holding the hits and maxhits. Make the keywords HITS, HITPOINTS and MAXHITS redirect to this property.
    This is a more convenient way to add and manage damageable items, and a way to free MORE1L/MORE1H for the player to use.

CSTypedArray

CSTypedArray needs to be redone from scratch. The problems of the current implementation are:

  1. SetCount allocates the memory for the object, zero initializing it. There's no way of checking if an element of the array is a valid (constructed or copied) object. This is a major problem when the stored object is a virtual class and calling a method from a yet invalid class makes sphere crash: this happens because, to resolve the right virtual method to call, the binary wants to look up the virtual table, but the pointer to the virtual table was zero initialized so it will try to access to the memory address 0x0.
  2. When SetCount shrinks the array, the memory buffer won't be shrinked. After the array was shrinked, a new call to SetCount to increment the size of the array won't use the old allocated memory but instead allocate a new buffer, leaving the memory discarded by the shrinking SetCount call unused, allocated and without any pointers to reference to it.
  3. When an element of the array is overridden or removed (or when the whole array is cleared), no destructors are called on the old element.

Port new features or bugfixes from Source

In the discussion below we can talk about commits to add to this to-port list.

Paste the whole commit text even if you intend to port only a part of its code.
When a commit is ported, reference to this issue in the commit message and add a comment to this issue specifying which functionality was ported from which commit.
This message will be edited and the text made strikedthrough.

  1. To be tested more and eventually port.
    Revision: a622737b2be9495d264091d7632af4987bfbfcfd
    Author: Coruja [email protected]
    Date: 13/06/2016 22:58:50
    Message:
    Fixed: Boat/ship parts resetting TYPE after use 'turn' commands.
  2. To be tested more and eventually port.
    Revision: acc1eb61d49e9c8d898027f64eafb8ee9076d343
    Author: Coruja [email protected]
    Date: 17/06/2016 09:11:42
    Message:
    Fixed: Paralyze / Paralyze Field making NPCs flood too many attack actions
    Fixed: Console error when for some reason an NPC got created/moved to an invalid region
  3. To be tested more and eventually port.
    Revision: ffc3a52226fa3fa65ac40b3bf5476e5aa2e4f571
    Author: Coruja [email protected]
    Date: 22/06/2016 18:24:07
    Message:
    Added: Support for colored multis on target functions (only compatible with HS clients 7.0.9.0+)
  4. Revision: aada1eb2fcb12b5b3564be6aa5a7b23e5d91a9e8
    Author: Coruja [email protected]
    Date: 27/06/2016 23:44:21
    Message:
    Fixed: Function f_onchar_delete not being called if the player char get deleted in any other way different from client Character Selecion menu
  5. To be tested more and eventually ported.
    Revision: a79d64ef2bee889a3a63ac0a7d96f5defc0e0459
    Author: Coruja [email protected]
    Date: 27/06/2016 23:57:49
    Message:
    Fixed: Multi dynamic regions getting replaced by script static regions on server resync
  6. Revision: 3066341740896269766206db690f76a3785290b1
    Author: Coruja [email protected]
    Date: 30/06/2016 00:41:34
    Message:
    Fixed: Attack/Kill command on pets allowing select the pet itself as target, making it attack his owner
  7. Revision: f26b39b9b40fba76660c36d57baa8387d3613272
    Author: Coruja [email protected]
    Date: 22/07/2016 22:52:03
    Message:
    Fixed: Security issue setting account login as chat name when newest clients try to setup the chat window for the first time and the char name is not available
    Fixed: Invisible chars being incorrectly revealed by REVEALF_LOOTINGOTHERS reveal flag when picking items from the ground
    Fixed: Return 0/1 on spell triggers not working correctly
    Fixed: Function MOVENEAR not working correctly
  8. To be discussed and eventually ported.
    Revision: dd7a59b451e9d4d8d99c3bec15b330cf60dded2f
    Author: Coruja [email protected]
    Date: 02/08/2016 07:07:12
    Message:
    Fixed: Items inside trade window not firing @DropOn_Item trigger when the trade move the item to player bacpkack
  9. Revision: 1fa0504b39e9df1074fb29121da2446926eb56b6
    Author: Coruja [email protected]
    Date: 03/08/2016 08:59:17
    Message:
    Changed: Max item capacity on containers changed from 255 to 125
    This is required to make containers works properly on Enhanced Clients, because containers on these clients have hardcoded capacity of 125 items (OSI already uses this value since many years ago, even before enhanced client)
  10. Revision: 5586c3db3ff6940a6d93c6d8062ccca1e195cbc2
    Author: Coruja [email protected]
    Date: 07/08/2016 06:54:07
    Message:
    Fixed: ARGN1 on char trigger @SkillPreStart not working correctly
  11. Revision: 48ba5dc6e0e8be27b06208b31d128400eda47dd1
    Author: Coruja [email protected]
    Date: 12/08/2016 08:30:13
    Message:
    Fixed: Client war mode flag not being removed on death
  12. To be tested more and eventually port.
    Revision: 210563f9d22c4374e4faecdf92cd78ccd7114661
    Author: Coruja [email protected]
    Date: 13/08/2016 07:24:17
    Message:
    Fixed: Multi regions not reloading correctly after server resync
    Also added a smart check to only reload it when needed (eg: AREADEF/ROOMDEF get changed on scripts)
  13. To be tested more and eventually port.
    Revision: c8223f203bbeb753ff0e1d3388db13e4df0b4d4a
    Author: Coruja [email protected]
    Date: 21/08/2016 05:29:13
    Message:
    Fixed: Internal check to prevent drop items inside walls preventing the item drop even when the wall is on another floor
    Fixed: Message "Too many items here!" not showing correctly when items are dropped on areas with too many items
  14. Revision: 30364c13a309452fe5fa2d28f264766c67b34e5d
    Author: Coruja [email protected]
    Date: 27/09/2016 02:07:55
    Message:
    Fixed: HTTP server not working correctly
  15. Revision: 8fd75922705cbf38eda5130a65bbc91c020e418e
    Author: ares [email protected]
    Date: 06/10/2016 22:31:42
    Message:
    As we have experienced at Alathair, exporting chars is nearly always meant to export other chars but not the own char, a flag here would be neccessary to control that. The default case should be not to export SRC itself. but it could be optionally turned on using the bitflag 0100. So if you want to export chars including yourself use flag 6. If it should include items use flag 7. Otherwise 1 2 and 3 will not include SRC.
    ...Continues...
  16. To be tested more and eventually ported.
    Revision: d66893bfe79e5e359f1d01465f24bdabbd515a6f
    Author: ares [email protected]
    Date: 08/10/2016 20:10:14
    Message:
    Fixed a critical bug in background save mechanism where an unsaved offline player character disappears from worldsave when moved to an already saved sector.
  17. Revision: 003321948c4694b5575c6072dec2d72db4a2e576
    Author: Coruja [email protected]
    Date: 17/10/2016 21:23:34
    Message:
    Fixed: NPCs losing 'statf_spawned' flag after server restart
  18. To be tested more and eventually ported.
    Revision: 72ff09966548b27829fcf2ed7608207ae6862d26
    Author: Coruja [email protected]
    Date: 12/11/2016 20:41:49
    Message:
    Fixed: Resurrect, Reveal, Meteor Swarm and Lightning spells showing effect animation even when EFFECT_ID=0 is set
    [sphereCrypt.ini]: Added crypt key for classic clients 7.0.54 ~ 7.0.55 and enhanced clients 4.0.54 ~ 4.0.55
  19. Revision: b054cd3277f26789ee2fbdd1cb7f96aa21d38127
    Author: Coruja [email protected]
    Date: 22/12/2016 19:09:09
    Message:
    Added: Missing buff icon for Criminal flag
    I found this on ServUO repo, thanks for the help :P
  20. Revision: bdc53e3cd70755a5add1c4b57819a2fef00d0245
    Author: Coruja [email protected]
    Date: 08/01/2017 19:23:28
    Message:
    Fixed: Function 'CRIMINAL 0' not updating char notoriety/buff when removing criminal flag
  21. To be tested more and eventually ported.
    Revision: 6e0f90f61fdd81d522143e35b6d968137c3d39ab
    Author: Coruja [email protected]
    Date: 25/01/2017 17:44:31
    Message:
    Fixed: Client encryption not being decrypted correctly on login process
    Also reverted changes on packet 0BF 018 accidentally sent some commits ago
  22. Revision: f1b5cffa0081d12aecf6600447ccae32cb752925
    Author: Coruja [email protected]
    Date: 21/12/2016 06:52:38
    Message:
    Fixed: Mass Curse spell not working correctly
  23. Revision: 28b644628e76d3b837ecc960f5fb40d9bc920a40
    Author: Coruja [email protected]
    Date: 07/02/2017 21:59:56
    Message:
    Fixed: Char flag 'statf_hovering' (gargoyle fly ability) not clearing when gargoyle chars polymorph into non-gargoyle char ID

Probably more to add in the next days (i'm not done checking Source's changelog).

[PORT]c8223f203bbeb753ff0e1d3388db13e4df0b4d4a, Fixed: Internal check to prevent drop items inside walls preventing the item drop even when the wall is on another floor

To be tested more and eventually port.
Revision: Sphereserver/Source@c8223f2
Author: Coruja [email protected]
Date: 21/08/2016 05:29:13
Message:
Fixed: Internal check to prevent drop items inside walls preventing the item drop even when the wall is on another floor
Fixed: Message "Too many items here!" not showing correctly when items are dropped on areas with too many items

Client crash when gm char die at the same screen with plvl 1 char

To duplicate this :
1 x plevel 7 char
1 x plevel 1 char
login both of them and kill plevel 7 char they should be in same screen. plevel 1 char's client will crash. i tried it with 7.0.61 client , 7.0.18, 7.0.20 , 6x client still all of them crashed. and console gave this :
Client crashed at 0,0,0,0: 0xC0000005 CRASH @ 0x7546900E (client_7.0.18.0_HS.exe, 7.0.18.0)

plevel 7 char's client is not crashing.

DEBUG messages when player got killed

15:26:P'Azuleta' was killed by N'skeleton'
15:26:DEBUG:Printing STACK TRACE for debugging.
15:26:DEBUG:__ thread (3680) _ | # | _____________ function _____________ | ticks passed from previous function start
15:26:DEBUG:>> 3680 | 0 | CWorld::OnTick | +0
15:26:DEBUG:>> 3680 | 1 | CSector::OnTick | +0
15:26:DEBUG:>> 3680 | 2 | CChar::OnTick | +0 <-- exception catch point (below is guessed and could be incorrect!)
15:26:DEBUG:>> 3680 | 3 | CChar::Death | +0
15:26:DEBUG:>> 3680 | 4 | CChar::LayerAdd | +31
15:26:DEBUG:>> 3680 | 5 | CItem::Update | +0
15:26:DEBUG:>> 3680 | 6 | CClient::CanSee | +0
15:26:DEBUG:>> 3680 | 7 | CChar::CanSee | +0
15:26:DEBUG:>> 3680 | 8 | CPointBase::GetDistSight | +0
15:26:CRITICAL:Error Pri=2, Code=0xc0000005, Desc='Exception', in CChar::Tick() #1 "death"

Mage bug

This bug allow you to land spell after fizzle and sometimes without delay and few at same time, it is just moving in LOS and out and spamming the spell you want.
https://puu.sh/zCQsC/77ef73f214.mp4

https://streamable.com/4bao0 (in this video show message about scrolls, is a custom system, the bug work with default script pack and default source)

I think the main problem is here:
https://puu.sh/zCOuD/fbf17d2daf.mp4
If you try cast to someone that is not in LOS, it should not be able to cast, but onw it show few messages.
First spellfizzle(should not fizzle, because it was not casted)
2 times, the target is not in los
1 time, you stop cast the spell

cant move items

It is like get cancelled when try move any item in bakcpack / and cant equip it also
https://puu.sh/zDqsO/64d85328f0.mp4

Also we are using an ethereal rides system, now when you use it, the ride is summoned instead of mount directly, maybe is related ( using Xun eth system )

Vendor´s stock on external container.

This is another help request

I need to let open the chance to overwritte the layer_sell and _extra via script.

For example. If I add to a vendor an specific tag that holds a container´s UID, the vendor should use this container as source of his stock instead normal layers no matter how far it is.
or anything else that can be checked by script.

I dont have much time to work on this so, It would be so nice if you give me some information and I dont have to waste much time diving in the source to find it. (Im soo noob with c++ and I dont know the source yet)

1-What does Sphere when an item is sold? Will it move the item to player´s backpack? or will it dupe the item and remove the old one?

2-Where does sphere decide where is the sell_layer and extra_layer?

3-Any advice or fact that you think I should have in mind?

ty

Player´s vendors system (help)

This is not an issue. Sorry if its not the best place to put it.

Hi.

Adding 4 lines to the source. I have been able to use normal vendor system in players custom vendors. So a player vendor and a server´s vendor will use same old trade menu.

What this code really do is to overwritte the item value so custom values can be displayed on vendors dialog. This happens just when u add <tag.customvalue> to any item a vendor have or will have on stock layer.
Rest of the system is done by .scp Its quite einfach to do.

Now I got 2 vendors system. The normal and this new one, and I have to decide which one should I use.

The thing is, I am a little bit afraid. Why nobody did this before?
Is there any sustancial Lack that I´m not able to see??

THe only lack I see is that players should not be able to sell containers because clients will no be able to open it from vendors menu.
But It also give me features I was looking for, for example. I can give 2 or 3 items to a normal vendor in Cove so he will sell it for me in exchange of a % of the value I told him to sell at.

So, What do u think?
1)Is there any good reason to not use this system?
2)Do you have any idea about how to fix or surround the Container´s lack without modding client?

Add queue classes

Add 6 queue classes:

  • fixedqueue: Queue of fixed size.
  • fixedgrowingqueue: Queue of fixed size with growing capacity.
  • dynamicqueue: Queue built over dynamic memory.
  • tsfixedqueue: thread secure fixedqueue.
  • tsfixedgrowingqueue: thread secure fixedgrowingqueue.
  • tsdynamicqueue: thread secure dynamic queue.

Add stack classes

Add 6 stack classes:

  • fixedstack: Stack of fixed size.
  • fixedgrowingstack: Stack of fixed size with growing capacity.
  • dynamicstack: Stack built over dynamic memory.
  • tsfixedstack: thread secure fixedstack.
  • tsfixedgrowingstack: thread secure fixedgrowingstack.
  • tsdynamicstack: thread secure dynamic stack.

Players cant call guards even GuardsOnMurderers=1 at sphere.ini

I could call guards if i hit once with my murderer char to blue char but otherwise i cant call guards. Npc's can call guards when they are near the murderer and also i can call guards if they are near me but if there are no guard at the screen u cant call them and @callguards not triggering.

Criminal issue

Player A and player B is blue. A hit B. A become criminal only for B. A and B have memory_irritatedby,memory_sawcrime,memory_harmedby but even i remove all of them A still criminal to B. I think B should have memory_aggreived but he doesnt.

[PORT] 1fa0504b39e9df1074fb29121da2446926eb56b6,Changed: Max item capacity on containers changed from 255 to 125

Revision: Sphereserver/Source@1fa0504
Author: Coruja [email protected]
Date: 03/08/2016 08:59:17
Message:
Changed: Max item capacity on containers changed from 255 to 125
This is required to make containers works properly on Enhanced Clients, because containers on these clients have hardcoded capacity of 125 items (OSI already uses this value since many years ago, even before enhanced client)

Add map classes

Add 4 map classes:

  • staticmap: Map implemented with a vector as storage.
  • dynamicmap: Map implemented with a binary tree as storage.
  • tsstaticmap: Thread secure static map.
  • tsdynamicmap: Thread secure dynamic map.

Crash: Vendor Sell

When sell dialog show ups, few second later server crash.
Even if you dont sell anything.
It happen lot of time but not always. Its little bit random.

Compiling

Hi there, I've been trying to compile this source for about... 48 hours...

I just can't figure out how to "create the project structure" or even use the CMake configurations available, everytime it starts to actually "compile" it outputs thousands of errors...

I've tried:

Windows 10 - Visual Studio
Windows 10 - Code Blocks
Ubuntu 17.10 - GCC/TDM

Can you guys please help me start to run the code?
Thanks

Creating new char

When u creating new char some starting items not placing correctly and after save console removing them. For example if u give 1000gp to chars they take 999gp and 1gp not placing world and after save server removing them. I tried it with fresh install.

[PORT]8fd75922705cbf38eda5130a65bbc91c020e418e, Fixed/Updated chars imports and exports

Revision: Sphereserver/Source@8fd7592
Author: ares [email protected]
Date: 06/10/2016 22:31:42
Message:
As we have experienced at Alathair, exporting chars is nearly always meant to export other chars but not the own char, a flag here would be neccessary to control that. The default case should be not to export SRC itself. but it could be optionally turned on using the bitflag 0100. So if you want to export chars including yourself use flag 6. If it should include items use flag 7. Otherwise 1 2 and 3 will not include SRC.
...Continues...

[PORT]d66893bfe79e5e359f1d01465f24bdabbd515a6f, Fixed a critical bug in background save mechanism where an unsaved offline player character disappears from worldsave when moved to an already saved sector.

To be tested more and eventually ported.
Revision: Sphereserver/Source@d66893b
Author: ares [email protected]
Date: 08/10/2016 20:10:14
Message:
Fixed a critical bug in background save mechanism where an unsaved offline player character disappears from worldsave when moved to an already saved sector.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.