mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-25 05:57:45 +00:00
Contributing.md
This commit is contained in:
parent
fe48f33aaf
commit
169c2c421b
1 changed files with 63 additions and 0 deletions
63
CONTRIBUTING.md
Normal file
63
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
Thanks for contributing to Sapphire!
|
||||||
|
|
||||||
|
First, we'd like to mention that a lot of discussion regarding the project happens in our Discord server.
|
||||||
|
We value research and discussion as to how we should tackle our issues as well as improving what is already in.
|
||||||
|
Of course we also value testing - many things tend to break due to patches, or mistakes/edge cases.
|
||||||
|
|
||||||
|
Regardless of how you plan on contributing, your thoughts are appreciated and you're welcome to join our Discord (link in README.md).
|
||||||
|
|
||||||
|
## Research
|
||||||
|
|
||||||
|
Care in implementating features should be taken. It tends to be end up weird, and replicating the expected behavior
|
||||||
|
is always preferred. Avoid assumptions and guesswork whenever possible.
|
||||||
|
|
||||||
|
As much research possible should be done before writing it out - on game data, testing with retail,
|
||||||
|
and even common practices in server development (emulators or not).
|
||||||
|
|
||||||
|
## Pull Requests
|
||||||
|
|
||||||
|
When making a PR, please make sure that it follows our style guidelines and good practices.
|
||||||
|
|
||||||
|
### Coding style
|
||||||
|
|
||||||
|
Indentations are Allman-style based, 4-space, no tabs.
|
||||||
|
Space between arguments in function calls, as well as for types.
|
||||||
|
|
||||||
|
Example (shortened from ActionHandler.cpp):
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
switch( commandId )
|
||||||
|
{
|
||||||
|
case 0x01: // Toggle sheathe
|
||||||
|
{
|
||||||
|
if ( param11 == 1 )
|
||||||
|
pPlayer->setStance( Entity::Actor::Stance::Active );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pPlayer->setStance( Entity::Actor::Stance::Passive );
|
||||||
|
pPlayer->setAutoattack( false );
|
||||||
|
}
|
||||||
|
|
||||||
|
pPlayer->sendToInRangeSet( ActorControlPacket142( pPlayer->getId(), 0, param11, 1 ) );
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 0x03: // Change target
|
||||||
|
{
|
||||||
|
uint64_t targetId = inPacket.getValAt< uint64_t >( 0x24 );
|
||||||
|
pPlayer->changeTarget( targetId );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Feature implementation
|
||||||
|
|
||||||
|
Please make sure edge cases have been tested, behavior is aligned with retail and (if applicable) your queries make sense.
|
||||||
|
Any changes to the SQL base should be noted (and reflected in the update.sql file in rootDirectory/sql).
|
Loading…
Add table
Reference in a new issue