Skip to content

ao-org/argentum-online-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,419 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

⚔️ Support Us on Patreon

Please consider supporting our work on Patreon. Your support helps us continue developing and maintaining projects like this one. Every contribution makes a significant impact!

🐲 Argentum Online Client 🧙‍♂️

Welcome to the source code repository for the Argentum Online Client. To fully utilize this client, you will need the corresponding server and assets:

Important: Do not download the code using the "Download as ZIP" button on GitHub, as this can cause issues with file encoding and may corrupt some files.

To download the code correctly, use a Git client. The command to clone the repository from the command line is:

git clone https://www.github.com/ao-org/argentum-online-client

🐛 Report bugs

  • Please report the bugs in the Server repository to maintain all of the tickets in one place: Link

🛡️ Contributing via Pull Requests

We encourage contributions to the project! However, to maintain code quality and readability, please adhere to our guidelines, especially when dealing with the peculiarities of Visual Basic 6 IDE, which tends to change variable names, complicating the review process for Pull Requests.

🏠 Localindex.dat

The localindex.dat file is generated by the following program: argentum20-creador-indices. It is used to facilitate the reading of resource data on the client-side.

🪝 Setting Up Pre-commit Hooks

We utilize a pre-commit hook to minimize issues with variable name changes and other potential conflicts. Follow these steps to set up your environment correctly:

  1. Open git bash or your preferred git client.
  2. Execute the following commands:
chmod +x .githooks/pre-commit
git config core.hooksPath .githooks

Basically the pre-commit hook runs when you make a git commit and it will run the file git_ignore_case.sh to avoid false changes in the Pull Request. Is not perfect but it helps a lot. Please send the Pull Requests with only the neccesary code to be reviewed.

In case you have problems setting locally your pre-commit hook you can run the file git_ignore_case.sh by just doing double click.

Precommit-hook

This pre-commit hook executes the git_ignore_case.sh script during a git commit, helping to avoid false changes in Pull Requests. While it's not a perfect solution, it significantly aids in keeping our project clean and review-friendly.

If You Encounter Issues

If you have any trouble setting up the pre-commit hook locally, you can manually run the git_ignore_case.sh script by double-clicking on it. This step ensures that your contributions are as clean and straightforward as possible.

Contribution Guidelines

We appreciate your interest in contributing to the AO20 Client. By following these guidelines, you help us maintain a high standard of code quality and ensure that your contributions can be efficiently reviewed and integrated.

Cryptography

CryptoSys is used in Argentum Online to cipher sensitive data.

Please note this is not free software and you will have to buy your own license to use CryptoSys

🧪 Unit Testing

The client includes a built-in unit test suite that validates core modules. There are currently 17 registered suites covering Math, Bitmask, Color, MD5, Locale, ArrayList, Encrypt, ValidNumber, QuickSort, IniManager, WorldTime, JSON, NetRoundTrip, Cooldown, and Group.

When compiled with UNIT_TEST = 1, the client runs all test suites on startup, writes results to test_results.txt, and exits immediately.

Test suites

# Suite Module under test Notes
1 Unit_Math Matematicas.bas
2 Unit_Bitmask Bitmask helpers
3 Unit_Color Graficos_Color.bas
4 Unit_ElapsedTime modElapsedTime.bas
5 Unit_Locale Locale.bas
6 Unit_MD5 MD5 hashing
7 Unit_MathExt Extended math
8 Unit_ArrayList ArrayList class
9 Unit_Encrypt AO20CryptoSys
10 Unit_ValidNumber Number validation
11 Unit_QuickSort QuickSort algorithm
12 Unit_IniManager clsIniManager.cls
13 Unit_WorldTime modWorldTime.bas
14 Unit_JSON VBJson/JSON.bas Property tests: numeric preservation, invalid input
15 Unit_NetRoundTrip clsNetWriter/clsNetReader Requires DIRECT_PLAY=1. Property tests: typed round-trip, sequential ordering
16 Unit_Cooldown clsCooldown/ModCooldown Property test: initialization stores values
17 Unit_Group Group.bas Group membership tracking

Compile and run tests from CLI

# Compile with tests enabled
"C:\Program Files (x86)\Microsoft Visual Studio\VB98\VB6.EXE" /make Argentum20.vbp /d UNIT_TEST=1 /out vb6build.log

# Run tests (writes test_results.txt and exits)
.\Argentum.exe

# Check results
type test_results.txt

The /d UNIT_TEST=1 flag overrides the project setting at compile time — no need to edit the .vbp file.

Test report format

=== AO20 CLIENT TEST REPORT ===
Total: 60
Passed: 60
Failed: 0
Elapsed: 0.000s
RESULT: PASS

Audio backend (BASS)

The client supports the BASS audio library for OGG music and compressed sound playback.

BASS is a third-party library developed by Un4seen Developments.

  • Free for non-commercial use
  • Commercial use requires a paid licence
  • Licences are per-platform and royalty-free

If you plan to distribute this client commercially, you must obtain a valid BASS licence.
See the official website for details: https://www.un4seen.com/

Enabling / disabling BASS

BASS support is controlled via a compile-time flag in the client:

#Const ENABLE_BASS = 1
  • Set to 1 to enable BASS
  • Set to 0 to disable BASS

After changing the flag, rebuild the client.

Runtime requirements

When BASS is enabled, the following file must be present at runtime:

  • bass.dll

If bass.dll is missing, OGG audio playback will not work.

Current usage

BASS is currently used for:

  • OGG music playback
  • Compressed OGG sound effects

Legacy audio paths such as DirectSound and DirectMusic are still used for compatibility where applicable.

Repo Activity

Alt

Star History

Star History Chart

Thank you

A big thank you ❤️ to these amazing people for contributing to this project!

About

Código fuente del cliente de Argentum Online

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

Contributors