Jump to content
metin2dev

Vanilla

Developer
  • Content count

    328
  • Joined

  • Last visited

Everything posted by Vanilla

  1. Greetings! 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! file clean-up 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. boot-trigger 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. temp-variables 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) table unique.get_container_list() 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. Changelog older changelogs Download 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!) rev 71480 see this post: rev 70220 STABLE Core Sourcecode rev 70140 BETA Core Sourcecode Password for the archive is: vanilla Password for older source archives: vanillamt2 Best Regards Vanilla
  2. https://mega.nz/#!VCx32B4I!7glE1H5RzUSYdKaZUsqylMtsA72cDmlL0X92f8_RX-c 4 inventories, pass is still vanilla Note that you should not use the dbcache provided in this package since it's the same as in 2 inventory which is broken. I still included it, don't ask me why. As soon as the new build is ready I'll upload both of them working.
  3. Try using the older rev. I'll drop dbcache and revert back to an older version. I'll also reimplement the changes I've made asap and bump a new rev. Expect some small treatments as my apologize, I didn't notice the changes until you started reporting them which I truely thank you for For the moment, please continue using the old rev for dbcache, you can still use the new game.
  4. yes, that was my bad. I implemented a 'fix' for mysql libraries >= 20. With more recent libraries I got some strange errors telling me that column names are ambiguous. So I went on and encapsulated every column name. Obviously, this turned out to be not working. The changes are still in db and somewhat causing trouble. As I said, this is only on the most recent version of the dbcache, every older rev should work and do it's job even with the more recent gamecore. I'll still support this new rev db and fix those errors if you keep feeding me with reports
  5. does this work? https://mega.nz/#!JKYnkSQL!QW2o0REhinOmUzUkEryKCdQ6xVANf1YuhtGQ_EQaV5k
  6. Okay, everybody. I found the problem and it's related to a change I tried when moving to higher mysql libraries. Therefore the dbcache is marked as probably unstable. I fixed it, but it's not sure if anything else may cause a crash. Please use the new dbcache only for debugging purposes. The new revision is backwards-compatible with earlier revs of our dbcache, so you don't need to worry about that. It could be that everything works now but I can't make a clear statement about this since more testing needs to be done. I reverted all the changes for character login, creation and fetching. New download links: source prebuilt I tested the login and char creation, it'd work now. Sorry for the inconvenience. Gamecore should work without any flaws since I didn't merge the test changes there. Only db is affected.
  7. can you provide logs? Without them I can't see what's going wrong. This is the most recent source, there's no reason to downgrade to lower revs
  8. New source and prebuild package online! I updated the links. They'd work now. same pass. prebuilt source
  9. first one is just a warning. The new unified mode should be used. This is not an error. The second one: Yes, I'm on it. dbcache is doing weird stuff and I already located the problem. Fix will be uploaded very soon.
  10. Vanilla core is coded with clang as our toolset in mind. There's literally no testing or adapting to gcc, so it's no reason why you had to change some lines. Thanks for stating it here so people who wish to use gcc can use it. Everyone compiling with clang won't need those changes.
  11. Vanilla Core r71480 is released! A few words about this release: This release brings a lot of unifying and more security options. I'm sorry that the development wasn't as fast as I wanted it to be. RL and stuff. And with that little time it's hard to test and as you may know I've had no options to debug or even test the code I was writing. But this is now gone since I have a working compile station. Also I have great news for those who really want to work with Windows. I'm working on a windows-working port for the source. Of course this won't be another branch or something. It'll be part of the main source. But please, don't expect it to be done ASAP since I have other things in my mind which I consider more important. As you may have noted most changes are about security. I want server-owners to have the option to add as much security as possible. It was the main goal in the earlierst revisions and will still be. This time we'll have a few things thanks to contributors from all over the world. I tried to mention them when it's fitting, if I missed someone, please immediately send me a pm and I'll add it! This release should help to reduce the problems that could occur when leaking databases and other stuff. I hope you enjoy it! Oh, and additionally I returned to include the qc-program into my bundled pre-built package. This way people without compiling vanilla core from source are able to use it at it's full extent. Note that this release still uses boost. Next release will drop boost entirely and declares it's implementation as deprecated. We don't need a library if everything we need is already supplied by newer c++ revisions. CHANGES from 70220 -> 71480 ~general stuff~ * fixed a bug with cancelling servertimers (thanks to Socialized and Yiv) * fixed crashes due to wrong Compiler flags under release mode (thanks to Damn) * cleaned a few code lines and rewrote some stuff + added unifying stuff to the core Unify-mode is a new mode which forces the encoding to be utf8. Note that this does NOT break backwards-compatibility and your locale is still set to the region you chose to have. So if you're running on locale/euckr (example) before, the core will still fetch it's files from that place like it did before. It only changes how the server core processes data internally and sends it to client/db. The advantages of utf-8 can be looked up, it'd be obvious. But since it affects the core in one way or another, I moved it to a CONFIG flag. ~Database changes (optional for you)~ + If you want to use utf-8 mode it's recommended to convert your whole database to utf-8 (you can use the utf_general_ci collate) + If you want to use the /su command with a customized passphrase per player you'll have to add a new column called 'passphrase' as varchar(45) and add the passphrase of the user as a mysql-Password (just like you'd add a Password to an account). ~CONFIG options~ + elevation_enable (bool, default false) Enables the elevation mode. This way you have to use the /su command along with the passphrase in order to get superuser access. The session ends with teleporting or relogging. Note that using the master-passphrase is only allowed in testserver unless elevation_use_key (see below) is enabled. + elevation_key (string, default 'vanilla') Sets the default passphrase if you want to use it. It's like a master-password for the su-system and works only + elevation_use_key (bool, default false) If enabled, it allows you to use the masterkey even without testserver being enabled. + interrupt_interval (int, max 32767) sets the time how long the player must wait until he can execute another command. This way you can prevent command spamming since all players/gms have to wait until the timer is over. Note that this does not count for admins, so GM_IMPLEMENTOR will not be affected by this! + pepper_key (string, default "peppertest12345") If you set this to anything else than "peppertest12345" it'll automaticall enable the pepper system. This way all passwords will be hashed with an additional phrase appended. This further enhances security. Note that all passwords should be encoded with the new pepper phrase. It works just like this: Instead of calling PASSWORD(userpass) it appends the pepper-phrase which results in this: PASSWORD(userpass + pepper_phrase). So be careful if you change this since your database must have valid entries, otherwise users will fail to log in. + MYSQL_PASSWORD_FUNCTION (string, default 'PASSWORD') this variable sets the name of the password-function that will be called when dealing with passwords. You can further enhance security this way if you define your own function to your database. You can for example first encode the passwords and then hash it. Note that if you change this value, your database must have a proper function that returns the encoded/hashed/whatever password out from plain text. If the function doesn't exist or your passwords aren't adapted to work with your custom function, login will fail! + unify_enable (bool, default false) Enables the unify-mode. This way the server forces utf-8 as it's encoding standard. Note: If you enable this, you'd change your database etc. to use utf-8 too! ~commands~ + su passphrase(string) Tries to elevate the player and grants him the permissions stored in gmlist after successfully elevating. Minimum rank: GM_PLAYER + promote user(string) gm_level(string, optional) First the command elevates the player. So if no gm_level is given, the player will receive the permissions he'd have if he elevates normally. If a gm_level is given (just type it like it's labeled, so if you want to give him high-wizard, type GM_HIGH_WIZARD) it'll overwrite the gm level for the current session (relog/teleport will remove it). Download Download (prebuilt): r71480 Download (source): r71480_source pass (for both): vanilla
  12. Sorry for the delay. The new build is ready. I'm looking for volunteers that want to test the new core. Just drop me a pm please, I just need someone to test a few things and we're ready to go for the next rev.
  13. Searching for someone who knows python

    pm me with the error and as many details as possible, I might be able to help you. No need to pay.
  14. This weekend I'll release the next rev. Expect some great additions like I mentioned before. Also thanks to the community this new build will have a lot of minor bugs fixed. Going open source was the best decision in my opinion, I'd never have found them since some of them require a special setup which I'd never do. So yeah, I'd like to thank the community for it's suggestions and fixes. Even though I have very limited spare time to work with the core these days I was able to make big steps with the core and that's all thanks to the community. So yep: Thank you.
  15. The error appears when you compile with -Ofast. Try lowering it to -O3 and if that doesn't hit it, then go with -O2. IT happens only on game, not db I recommend not removing -Wl,-rpath,/usr/local/lib32/metin2 since this specifies the path where libraries are loaded. Of course, that's a typo of mine in the public release (which will be fixed in next version too). It'd be -rpath and not just rpath, which is why you get the error.
  16. at first CFLAGS += -stdlib=libc++ is not needed anymore since FreeBSD already uses libc++ with the most recent versions since.. well, clang is the default compiler and libc++ is now a part of the base system There's no need in adding this variable. Next you need makedepend. It'd be located in devel in the portstree. Also you'd check if your portstree is up to date. To do so, try portsnap fetch update. If this doesn't work (which mostly happens if you install a clean freeBSD [and it's not a wonder ;D]) then just go ahead and use portsnap fetch extract. I recommend rebuilding every port after updating the ports tree. Your warnings were because you used an outdated portstree and the ports are marked as a security risk since.. yeah, they're outdated and maybe have security flaws. After all this you'd be ready to go. Ah, and don't use gmake depend. The instruction is declared as gmake dep and not gmake depend
  17. There's no need to install libcxxrt and libc++ in recent FreeBSD distributions since it's now part of the base system and already included. You don't need to install it manually.
  18. Hey everybody! I've got some news on the upcoming release. Thanks to people sending me code snippets I'm able to crush some bugs that I wasn't able to notice (due to not using the functions as my daily driver). Additionally further vanilla revs will no longer use different locale-files depending on the country. What I mean with this is that it will always read locale.lua in your quest-folder instead of anything else. Though the countries still does count, since it will still be used when moving to the quest directory (for example locale/de or locale/gb). Only the locale.lua is a unified way of reading this file. Next is a total conversion into utf8. This means that also the database will be read with utf8 encoding. If you go ahead and convert your client to utf8 too, you'll be able to send and receive messages with characters you may not be able to use before. utf8 is a unified way of handling charsets and the future vanilla revs will only run with this charset. Of course this may or may not break backwards compatibility. I've chosen to go this route since it fixes a few things I'm also planning for the future and is less error-prone if you only have to deal with one charset. Also it's more simple since the database can (and should!!!) be changed to utf8 and this way represent all the needed characters. Ultimately, if you want to upgrade to higher python versions, utf8 will be needed since it's the only charset more recent python versions will use. And thus, having a server set up for exactly this charset is just perfect. One important note on this - I will not break the easiness of installing the core. This means that I don't want you to have to follow steps just to use the core. I will only turn these features on when you specify it in your CONFIG file. So expect a new option. But I will print a warning if you don't activate the option since it's more or less the future and some day I will just merge in the changes and remove the ability to opt-out.
  19. open Bin compile error

    try it with this: Taken from working sources. No one knows what you did with your client source, how are we supposed to know the details? There's literally nothing we can do but throw working codes from our sources at you and hope they do work.
  20. News to the current state: Game & db are both in final testing. If it works without any kinks I'll ship. Expect it very soon!
  21. 2 problems

    1.) What's the bug about this? You're most likely got a gold rush, that happens rarely or from specific bosses. So either you raised the rate or you just got that, which of course doesn't get affected by your third hand. 2.) What's wrong with the attack? You have tons of options how to boost your attack in polymorph, even in the source you'd do that.
  22. open done

    Sorry, but our crystal ball is in cleansing today. If you have a bug with someone's stuff you'd ask him. Not everyone here on this board bought his source so it's the wrong place to ask for support.
  23. This is a thread for the vanilla source, so please send a PM if you're interested in help with other topics. I do not have your source and therefore I am unable to help you with this error unless you give me a proper bug report. Please refrain from error reports which are not related to the vanilla source published here. If you modify anything on the source I can't help you with this especially since people will think the source would be buggy. Please send a Pm for such concerns.
  24. News about the update - yep, I have some. I'm currently figuring out what's going on with the newer mysql libs. I'll tell you a long story and a tl;dr for everyone who is lazy to read. It's a really strange occurance. The game and db boot fine but I tried to upgrade to more recent mysql libraries. As soon as I'm using the new libraries, the connection values (host, etc.) have really weird characters. It looks like an encoding issue to me but it really does not make any sense since the characters occur even when I print debug messages long before any function from the library is called. I therefore decided to fix a warning that's been bugged me for a while and go for the all-utf8 stuff. Now every source and header file is converted into utf-8 with all the characters still remaining (except for one occurance where I had to short a function in empire_text_convert.cpp. So the core will still be stable but the conversion may need further testing, but I guess it'd work like before). The error with the weird characters still appeared but only at the first boot with the changes. Every new boot now seems to work fine, game and db connects perfectly. But since the error had occured at least once I'm not ready to ship. tl;dr: Weird bug with libmysqlclient that seems to be fixed, but needs further testing, then I'll ship For editing CONFIG and all the stuff you need to visit one of the basic tutorials about server configuring. You need to understand the parts of your serverfiles. You can think of the gamefile as the kernel of your server (though of course It's not a kernel, just for your imagination). While the serverfiles in it's whole is the system (with using scripts like quests and all that stuff) the core itself is the first thing your client will come in touch (of course only after the OS, etc..) when connecting to the server. It delegates and of course does the main job. That's why it's called a core. The dbcache does support the core and handles all the mysql stuff and does the caching job. Vanilla is NOT a serverfiles replacement, it's a core-replacement. It also is NOT a client modification at all. It only affects the core and is backward compatible with serverfiles and clients beginning from r34k (recommended: r40k). As soon as you understand the parts of your serverfiles and get a view on it's structure you're also able to adjust the CONFIG to your needs and fully unlock the possibilites vanilla core holds. But even without utilizing the CONFIG files you're having a lot of fixes and stuff that's not in the 40k source.
  25. Everything mentioned in here: and everything I mentioned in this thread. There ar lots of source changes, some minor and some major. It has a unique system, new quest triggers, a mysql class for quests, new quest functions and is fully customizable, not only via CONFIG and txt's but also via source since it's fully open source. You can use very client compatible with r34k and above. No need to adapt anything, vanilla core is a drop-in replacement for your game and db file being backward-compatible with official server setups.
×