The new beta is finished! I'm proud to present r71480.
This time a few things have changed. And in this revision, we have a lot of new stuff.
In the following I'll provide the download link along with the things I'd love you to test.
*** DISCLAIMER ***
The core is marked as stable. Anyway, I'll make it clear that I'm not responsible if you use this core since I can't give a warranty that I fixed every single security breach that potentially could happen - that's totally impossible. But we all together made the source great and secure so every public issue is fixed by now. You can use it in production environments now.
So... What's new?
boot-trigger for quests
With this you can execute commands, timers, and all the stuff you'd like to have just on boot-time!
revisioning of the 'unique class' (+ a ton of posibilities)
added the functionality to create unique-groups
temp-Variables for quests
upgraded all libs
moved completely to the newest clang version
fixed some big security issues in the source code
fixed the ingame ban and unban commands
unified tables and gave them a new way: unify!
revisioned the makefiles
gave the source a new, easier structure
removed all external dependencies
just install them by ports.. No external-folder necessary!
removed 'boost' dependency (no boost lib needed yay)
partial implementation of the wolfman (claws etc. are added, needs review)
And basically everything that has been offered in the earlier versions of the vanilla core. Nothing should be missing.
And if you miss something, just feel free to tell me!
What needs testing?
There are few things I'd love you to test out:
Please check if the core is vulnerable to any security breaches you may know (also the public ones, don't know if I missed something)
Please test out the new features! I'd really love to know if the new unique-functions and the boot-trigger does the job.
Explanation to new features:
Unique with container support
Unique has evolved! This time you have a few new possibilities. Don't know what unique is? Here's a short explanation:
With the unique-questfunctions you can spawn or set mobs, npcs and now even players to have a unique name. This name is
stored into a unique-container. You can access this container and get all the vid's by their unique name (also called: the key)
So for example you can spawn a boss with a key. Later on you can check if this specific mob has been killed or not. Or you can
set his hp on-the-fly. There's basically no limits!
And now with the revised system you'll have even more options. The new unique system works with containers. By default there are
two containers reserved: __DEFAULT__ and __CHARACTER__. The first one is for all the basic stuff. And the second one is reserved for players. Now, as you may have noticed, there's a default one which means that the container-stuff is optional. If you just use the unique functions without specifying a container, it'll just use the default stuff. But you CAN use your own containers just
as you want to. You can create, delete and list all the containers running. There is a list with all the quest-functions down below.
This is pretty self-explanatory. With this release you can use "when boot begin" to specify a block of code that will be executed
once the core has been booted.
With the new temp-variables you can set and remove player-specific variables. They are stored in the core and not written
to disk or database. So be careful because they might get dropped once the core shutdowns. It's just a quick storage for people
who want to have something like a cache for quick access.
new quest functions
nil unique.spawn_unique(string key, int vnum, string pos=unused, string container=optional)
nil unique.set_unique(string key, int vid, string container=optional)
nil unique.purge_unique(string key, string container=optional)
nil unique.kill_unique(string key, string container=optional)
bool unique.is_unique_dead(string key, string container=optional)
int unique.get_hp_perc(string key, string container=optional)
nil unique.set_def_grade(string key, int def, string container=optional)
nil unique.set_hp(string key, int hp, string container=optional)
nil unique.set_max_hp(string key, int maxhp, string container=optional)
int unique.get_vid(string key, string container=optional)
bool unique.exists(string key, string container=optional)
this prints out all the unique containers
table unique.get_container_list(string key)
this prints out all the vids in the unique-container "key"
nil unique.remove_container(string key)
removes a whole container (flushes it when called on standard containers)
nil pc.temp_var_set(string key, string value)
string pc.temp_var_get(string key)
nil pc.temp_var_delete(string key)
Thanks a lot for participating!
If there are any questions, this is the topic related to it. Further releases will be made public here too!
If you'd like to contribute, just post code additions here.
Useful information: All necessary libs are included. If you're building your own vanilla binary you'll first have to move into every project of the Internal directory and rebuild the libs. The main makefile is not adapted yet, I was too lazy (ps: Still too lazy!)
see this post:
Password for the archive is: vanilla Password for older source archives: vanillamt2
Best Regards Vanilla