Commit Graph

900 Commits

Author SHA1 Message Date
Jett
9e08bb20d2
Implement proper bounds checks across the codebase (#681)
* Implement proper bounds checks across the codebase

* Implement strnlen_s for cross platform
2022-07-26 20:52:04 -05:00
Daniel Seiler
9813c3ed2c
Better Unicode support in GeneralUtils (#658)
* ASCIIToUTF16: output replacement character instead of failing assert

* Add GeneralUtils::_NextUTF8Char

* Implement GeneralUtils::UTF8ToUTF16

* use string_view everywhere

* use string_view::front instead of begin

* Add PushUTF16CodePoint
2022-07-25 21:11:30 -07:00
Aaron Kimbrell
e97ae92624
Make logger automatically put a newline (#675)
at the end of the line
remove all the newlines in log calls
2022-07-24 21:26:51 -05:00
Aaron Kimbrell
a7fb6eb3f3
make LoadFromXml usage consistent across comps (#673) 2022-07-24 21:03:22 -05:00
Aaron Kimbrell
9ed4a4f47f
Remove uneeded include (#674) 2022-07-24 16:17:01 -05:00
Aaron Kimbrell
b57cacc676
Player forced movement component (#672)
* Split out Level progression component
from Character Component
This is to get to the Player forced movement Comp in a sane way

* move XML to component insted of abusing charComp

* use overrides
should probably make everything that calls that call it correctly

* fix linking issue

* Add proper Player Force movement component
Not used, yet
2022-07-24 13:25:10 -05:00
Aaron Kimbrell
f2d1c5d26d
Split out Level progression component (#671)
* Split out Level progression component
from Character Component
This is to get to the Player forced movement Comp in a sane way

* move XML to component insted of abusing charComp

* use overrides
should probably make everything that calls that call it correctly

* fix linking issue
2022-07-24 13:04:02 -05:00
David Markowitz
ef0a3c6d0b
Add Hot Properties struct and address some whitespace (no functionality change) (#667)
* Add GameMessages

* General AMF cleanup

Proper memory management as well as style cleanup

* General AMF cleanup

Proper memory management as well as style cleanup

* General optimizations

Fix AMFArray so values are properly deleted when you leave the scope it was created in.
Add bounds check for deletion so you don't double delete.
Remove all AMFdeletions that are contained in an array since the array now manages its own memory and deletes it when it is no longer needed.

* Better tests and fix de-serialize

Fix de-serialize to be correct and implement a test to check this

* Update AMFDeserializeTests.cpp

* Update GameMessages.h

* Add GM

* Comment out function

* Spacing

* eof
2022-07-22 19:58:20 -07:00
David Markowitz
6a38b67ed5
General AMF cleanup (#663)
* General AMF cleanup

Proper memory management as well as style cleanup

* General optimizations

Fix AMFArray so values are properly deleted when you leave the scope it was created in.
Add bounds check for deletion so you don't double delete.
Remove all AMFdeletions that are contained in an array since the array now manages its own memory and deletes it when it is no longer needed.

* Better tests and fix de-serialize

Fix de-serialize to be correct and implement a test to check this

* Update AMFDeserializeTests.cpp

* Update AMFFormat.cpp
2022-07-21 22:26:09 -07:00
Aaron Kimbrell
5523b6aafc
Refactor UpdateEntities to not lose items if we add them while processing (#664)
* if we are deleting entities, and we add an entity
to delete, dont throw it out

* made it all uniform

* change update back to how it was
since it's an unordere map and
wouldn't be guaranteed to update even in this secnario
2022-07-21 21:09:25 -05:00
David Markowitz
40a9aefb5b
Aggro radius (#665) 2022-07-20 20:26:52 -07:00
Jett
91f2cebcc7
Merge pull request #661 from EmosewaMC/bons-fixes
Use Aggro and Tether radii settings from Entity Settings
2022-07-20 10:10:57 +01:00
David Markowitz
45a7dbdadd
Add Unimplemented GameMessages (#662) 2022-07-20 01:28:57 -07:00
Daniel Seiler
74bca38253
MSVC: set source / target encoding (#659) 2022-07-20 01:23:53 -07:00
EmosewaMC
082a2a418f Use radii from settings
Override the DB aggro and tether radii from the settings if they are present.
2022-07-19 23:25:50 -07:00
David Markowitz
835cf2b794
Add an AMF Deserializer as well as corresponding Unit Tests (#599)
* Add AMFDeserializer

Add an AMFDeserializer

Reverted unrelated changes

Add unit tests for AMFDeserializer

Added unit tests for the AMFDeserializer

Finish tests

Finish the AMF deserializer tests.  This commit finishes the positive test case and implements a load test case that is expected to take less than 1.5 seconds to process.

Modularized tests

Made tests a bit modular and split into more methods

Specified binary read from file

Specified that on the IO stream we are reading a binary file otherwise windows will terminate reading the binary file on seeing a 1A byte.

Added more tests

Added tests for unimplemented values and edited a test file to be more modular

Updated test text

Fix spacing

Update AMFDeserializeTests.cpp

* Update CMakeLists.txt

* Update AMFDeserializeTests.cpp

f

Actually follow the AMF spec

Update AMFDeserializeTests.cpp

tabs

Add in commented tests

* Follow spec

formatting

Add Integer Tests

Follow Spec more

Follow spec

* Use unique_ptr

* Update AMFDeserialize.cpp

Semantics

Update AMFDeserialize.cpp

Add new lines to EOF

CMake fix

* Add better std string read

Co-authored-by: Daniel Seiler <xiphoseer@mailbox.org>

* make not static

Co-authored-by: Daniel Seiler <xiphoseer@mailbox.org>
2022-07-19 21:51:05 -07:00
David Markowitz
74343be871
Enable _dynamic by default (#656) 2022-07-19 16:52:39 -05:00
David Markowitz
ed5ced0bed
Fix Model Component Serialization (#655)
* Fix model component serialization

* Update ModelComponent.h
2022-07-19 16:51:35 -05:00
Aaron Kimbrell
3dfe363a6b
Added Aronwk and Simon to the readme (#657)
* Added myself and Simon to the readme

Me, since I've started to work on implementing mounts again.
Simon for his work in Reverse engineering the client which has been helping over the years.
Venture Vision and moving platforms/simple movers being two recent things that his RE has helped fix.

moved the special thanks out a header at the suggestion of Xipho and Max, since these people have not directly contributed to the DLU codebase.
made a section under the DLU team recognizing Blaster for the Logo that DLU uses
bumped up the credits header to make formatting make more sense

* Update based on feedback

Credit Blaster builder as they requested.
Remove duplicate entries for under DLU Team as requested
2022-07-19 09:29:26 -05:00
Jett
8e5da2cf1f
Merge pull request #652 from DarkflameUniverse/blacklist-and-chat-changes
Blacklist and chat changes
2022-07-19 10:40:44 +01:00
Demetri Van Sickle
ec4ed8fa7e
Adding migration command to build script (updated) (#653)
* Added checks for migration runner

* Added migration command to build script
2022-07-18 18:44:21 -05:00
David Markowitz
b55606d41e
Fix the issue where we would create new worlds on ports that were still being used (#625)
* Wait for world to shutdown

We need to wait for the message that the world has shutdown before shutting it down.

* Dont sent people to dead instances

* Added shutting down check

Added check for isShuttingDown

* Update when we remove from master
2022-07-18 18:08:33 -05:00
Jett
69a0d5a50b Efficiency and naming changes. 2022-07-18 10:01:43 +01:00
Jett
945e572493 Add best friend check and complete blacklist 2022-07-17 09:40:34 +01:00
Aaron Kimbrell
ef8c2a40f3
Framework for GM's and helpers for mounts (#651)
* Framework for GM's and helpers for mounts

* docs and spacing

* whitespace
2022-07-17 02:35:11 -05:00
Jett
fab8a1e982 Implement new chat features 2022-07-17 07:54:36 +01:00
Jett
0d4f86b20b
Resolve missing RakNet replacement (#650)
Repair issue from PR earlier, crucial fix.
2022-07-17 06:57:00 +01:00
David Markowitz
c689b3d3d1
Parent and Child Deletion Improvements (#649)
* Fix timers

* Update Entity.cpp

* Fix timers

Fix timers

Remove debug logs

remove _dynamic

* I like to move it move it

* Child Deletion Improvements

* Check bounds
2022-07-16 21:39:13 -07:00
Jett
77d35019cc
Replace the usage of RakString (#648) 2022-07-17 04:40:46 +01:00
Aaron Kimbrell
9287e5bc4b
Split itemType enum into it's own header (#647)
* Split itemType enum into it's own header
add mount item type

* fix whitespace
2022-07-16 20:36:09 -05:00
David Markowitz
f5ae5aa13e
Address timers being iterated through poorly (#646)
* Fix timers

* Update Entity.cpp

* Fix timers

Fix timers

Remove debug logs

remove _dynamic

* I like to move it move it
2022-07-16 20:21:35 -05:00
Jett
df0f11c95b
Update CMake configuration for easier maintenance (#642)
* Update CMake configuration for easier maintenance

* Incorrect casing fix

* Move package requirement

* Update CTest linking

* Add logs to the CMake

* Add linking for common libraries

Added linking for common libraries in tests subdirectory.

* Move test subdirectory higher up for some reason

* Whitespace a log removal

Missed new line

* Add dCommon to dChatFilter

* Update library output dir

* Correct libBcrypt

* Further refactor CMake behaviour

* Repair bad comments and update library defines

* Revert to old include directory method

* Implement platform defines

* Add missing include

Mac needs a specific include for defining platform.  Does not compile without this.

Co-authored-by: EmosewaMC <39972741+EmosewaMC@users.noreply.github.com>
2022-07-17 00:24:16 +01:00
Jett
9c0819de4f
Add MacOS building to the Github Actions (#643)
* Add MacOS to CMakePresets.json

* Update workflow to run MacOS builds

* Update test and build presets

* Add libssl install to integration

* Update workflow to install libssl and openssl

* Prevent brew running as super user
2022-07-16 22:55:54 +01:00
David Markowitz
3d46d703b2
Remove memory leak in player container and warning in Behavior (#640)
* Add friends list migration

* Change friends to use charID

Update friends table to use charID and not LWOOBJID variant.

* Fix remove friend

Fix remove friend and make the query more readable at a glance.

* Add and remove friends in the container

Properly add and remove friends in the player container

* add enums

* Add best friends and basic GM support V1

* Add more features

* not online / doesnt exist implementation

Implements the not online and invalid character response codes

* Address players not being removed

Fix an issue where players would not be marked as offline in the friends list due to the message not being sent in all circumstances.

Tested changes on 3 clients, switching characters, logging out from character select, switching characters, world transfer and my friends list looked as it was supposed to.

* Implement proper friends system

Remove debug logs

Track count of best friends

Add best friends list cap of 5

Add config option and best friend update

Add a config option and implement the last missing best friend serialization

Added comments and fixed remove best friend bug

Added some comments and addressed an issue where removing best friends would not remove them from your internal count of friends.

properties and logs fixes

whoops, had an issue

send reply if already BFFs

Send the correct objectID

I really need to rename these

Fix white space

goon

* Replace queries with unique ptrs

* remove user from player container on deletion

Remove the user from the player container when they delete their character.

* Bump patch version

* Improvements to PlayerContainer

Resolved a memory leak in the player container, removed commented out code and resolved a warning in Behavior.cpp

* Make it a unique ptr

* Improvements to PlayerContainer

Resolved a memory leak in the player container, removed commented out code and resolved a warning in Behavior.cpp

Make it a unique ptr

* Update PlayerContainer.cpp
2022-07-13 09:11:24 -07:00
David Markowitz
9ba297dd2e
Add code to complete hidden property mission (#641) 2022-07-13 09:10:02 -07:00
David Markowitz
ccb9f7c499
Move instruction for database
Move the instruction for running the MasterServer migration down to where the command will actually work as well as use a more syntactically correct statement
2022-07-12 20:45:25 -07:00
David Markowitz
24dbd3944d
Friends List Overhaul (#630) v103
* Add friends list migration

* Change friends to use charID

Update friends table to use charID and not LWOOBJID variant.

* Fix remove friend

Fix remove friend and make the query more readable at a glance.

* Add and remove friends in the container

Properly add and remove friends in the player container

* add enums

* Add best friends and basic GM support V1

* Add more features

* not online / doesnt exist implementation

Implements the not online and invalid character response codes

* Address players not being removed

Fix an issue where players would not be marked as offline in the friends list due to the message not being sent in all circumstances.

Tested changes on 3 clients, switching characters, logging out from character select, switching characters, world transfer and my friends list looked as it was supposed to.

* Implement proper friends system

Remove debug logs

Track count of best friends

Add best friends list cap of 5

Add config option and best friend update

Add a config option and implement the last missing best friend serialization

Added comments and fixed remove best friend bug

Added some comments and addressed an issue where removing best friends would not remove them from your internal count of friends.

properties and logs fixes

whoops, had an issue

send reply if already BFFs

Send the correct objectID

I really need to rename these

Fix white space

goon

* Replace queries with unique ptrs

* remove user from player container on deletion

Remove the user from the player container when they delete their character.
2022-07-12 20:36:06 -07:00
Jett
5888c9f468
Merge pull request #635 from DarkflameUniverse/improve-cpplinq-min-max-checks
Improve cpplinq checks
2022-07-12 11:17:59 +01:00
Jett
c9cd7a200a
Merge pull request #634 from DarkflameUniverse/migration-runner
Add a argument to the MasterServer for running migrations
2022-07-12 11:17:42 +01:00
David Markowitz
b7497a47e4
Lower memory usage of Behavior Parameter Table by 10MB (#627)
* Added caching for table

Added caching for table

Add more caching

Update MasterServer.cpp

grds

Update CDBehaviorParameterTable.cpp

Update CDBehaviorParameterTable.h

Update CDBehaviorTemplateTable.cpp

Update Behavior.cpp

Update Behavior.cpp

change to map

Remove redundant query

* Remove include

* change to enum

* Update Behavior.cpp

* Use already cached table

* Update Behavior.cpp

* Reduce memory usage

Reduces the memory usage for the BehaviorParameter table by 10MB in memory.

* Update CDBehaviorTemplateTable.cpp
2022-07-11 20:43:09 -07:00
Jett
bfa1f57158 Improve cpplinq checks
On certain Windows header versions defining NOMINMAX doesn't work for some odd reason.
2022-07-12 03:06:54 +01:00
Jett
d642de9462 Implement a migration runner 2022-07-12 02:16:08 +01:00
David Markowitz
06217ad5e3
Address friends list IDs and removal of friends (#628)
* Add friends list migration

* Change friends to use charID

Update friends table to use charID and not LWOOBJID variant.

* Fix remove friend

Fix remove friend and make the query more readable at a glance.

* Add and remove friends in the container

Properly add and remove friends in the player container
2022-07-10 17:59:07 -07:00
David Markowitz
325dc5a571
Revert "Wait for world to shutdown (#624)" (#626)
This reverts commit 66edf57b02.
2022-07-09 15:57:45 -07:00
David Markowitz
66edf57b02
Wait for world to shutdown (#624)
We need to wait for the message that the world has shutdown before shutting it down.
2022-07-09 15:27:20 -07:00
David Markowitz
485de6173a
Added caching for behavior parameter table (#621)
* Added caching for table

Added caching for table

Add more caching

Update MasterServer.cpp

grds

Update CDBehaviorParameterTable.cpp

Update CDBehaviorParameterTable.h

Update CDBehaviorTemplateTable.cpp

Update Behavior.cpp

Update Behavior.cpp

change to map

Remove redundant query

* Remove include

* change to enum

* Update Behavior.cpp

* Use already cached table

* Update Behavior.cpp
2022-07-08 23:07:52 -07:00
Aaron Kimbrell
dddc33607b
remove unused code and callbacktimers in testmap (#620) 2022-07-08 22:25:44 -05:00
Aaron Kimbrell
3865a186a7
Possessor and possessable additions (#619)
* possessor-fixup and possessable additions

* comment and docstring fixes

* fix possessable initialization

* split animation flags into it's own header
remove unnecessary checks
2022-07-08 22:25:15 -05:00
David Markowitz
22b2516107
Fix nested preconditions not evaluating costs (#618)
Fixed an issue with some builds that had preconditions not taking items from the players due to the evaluate costs parameter not being passed to nested conditions.

Tested the build in Avant Gardens and it now correctly takes items from the player upon completion.
2022-07-06 19:29:15 -07:00
David Markowitz
0734760d42
Add openssl to list of package requirements
I forgot to add this to the list of needed packages.
2022-07-06 12:05:42 -07:00