Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/17/19 in all areas

  1. M2 Download Center Download ( Latest Version ) 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 M2D Storage Password for the archive is: vanilla Password for older source archives: vanillamt2 Best Regards Vanilla
    1 point
  2. M2 Download Center Download Here ( Internal ) Description: Today's New Year's eve, and I felt that I should help the people who can't compile the gamecore/db on FreeBSD, because of the library mess that's usually going on - most people compile DevIL, mysqlclient etc from the ports collection, as this takes a lot of time, hardware resources, and even knowledge for some. Given this situation, I've decided to compile from the official sources of all the required libraries, and tidy a bit up the all lib-includes files, by putting them all into the Extern folder (link below). This allows to brush away some stuff from the Server folder: (Yay, it's so clean and shiny ) [Hidden Content] I've also changed the makefiles according to the needs (link also below). This pre-done stuff should easy the process of compilation a lot for others, not to mention that it should work on all branches (I'm gonna test this next year lol ) Usage: Decompress your Server folder from your favourite branch, and upload it to a FreeBSD machine, which has gmake, makedepend and python installed. Nothing more is needed (except for gcc/g++ ofc). Upload the Extern.tgz archive into the same folder where you put the Server folder, and extract it. Patch the Makefiles in the Server folder with the ones from Makefiles.zip. Compile using gmake / gmake all / gmake game / gmake db from within the Server folder. Video (da n00b prooph part): Note: my English pronounciation isn't that great; I'll be adding subtitles asap. Downloads: Extern.tgz: [Hidden Content] Makefiles.zip: [Hidden Content] Happy New Year!
    1 point
  3. Ahh gotcha . im english that's why
    1 point
  4. It's for example purposes. You can change it for a lot of things and pretty much whatever you want. This system is really usefull as it changes alignment name based on the sex of the player, which is not especially useful in english but it is in a lot of languages. For example in French "Agressif / Agressive" "Cruel / Cruelle" "Chevalier / Chevaleresse".
    1 point
  5. Exactly. Might seem a small system at first, but if you think about it many languages could use this to develop systems for better dialogs or information. GJ man
    1 point
  6. Hey, welcome to the fourm. First of, you need to know the basics. Metin2 Server and Client source were released a few years back, when Dragonsoul system and Belts where a thing. Server The server source creates the 2 core files in your system. They are called game and db (most often - you may see them renamed at some serverfiles). The game is usually located at /game/share and db is usually located in the same directory or /game/db,Datenbank,etc.. (the database channel, where txt protos are). Client The client source compiles the launcher (metin2.exe, metin2launcher.exe, etc...). This topic will help you have an image of what compiling the server source (game & db) means: This video will help you have an image of what compiling the client source means: Next thing you need to know about sources is the Extern folder. It is nessecarry to all sources as it contains libs such as boost, cryptopp and others. Every source needs this folder, except the one and only case: Vanilla Core revision 71480, which highly depends on pre-built linux libs. Written in C++17 (c++1z) it's the only source out there that compiles with clang++-devel instead of g++. If you want the latest thing on software dependencies and builds and at the same time, you do not mind experimenting, this is your source. You can view the topic in the link below: Errors: You can view source errors, as well at server/client system errors at the txt files called syserr. The client syserr is in the main client directory. The source syserr(s) are located in each of the Serverfiles channels, auth/login channel, game/channel 99 and db, each one showing the errors affected the corresponding core. Note that if your channels use multiple cores, each core will have its own syserr. Core files: If your game/db core crashes, a game.core or db.core respectively will be created in the directories mentioned above, where syserr files are located. If you haven't stripped your game/dbfile, you can traceback errors by installing gdb and running it as follows #gdb /path/to/gamefile /path/to/game.core More information: Next thing you need to know about the serverfiles is that it uses txt as configuration and lua as the quest language. Everything you change in a quest takes effect once you recompile the quests using QC. In your /game/share/locale/country/quest directory, where all the quests live, there is usually a python file which must be run to compile all the quests. Once that happens, reload the quest by restarting the server, or running /reload q with a GM character in the game. Any new quests must exist in quest_list or any similar list located in the quest folder in order to be compiled. About the client now, besides the source there are the packs. In order to open/close them you will need a tool called Etermanager/Eter Nexus/Eter Tool, you get the idea. I'm not gonna get in a lot details but the important things are: locale_xx: Contains all the strings and messages (client-sided). Also contains protos (item_proto, mob_proto) which are compiled by item/mob_names.txt and item/mob_proto.txt, located in your server's db core directory (if using txts). The tool to compile them is called DumpProto and it's source code is available along with the rest of the sources, so you can add new types and definitions. root: All the functionality of the client lives here, everything you see in the client goes from the launcher (c++) to the root files (python). Your server's IP must be in serverinfo.py in order to connect to your server. uiscript: Here you can find python files about the windows you see in the game (shop, options menu, inventory, everything). Other packs contain only images and models and character configuration files (walking, running, skills). All character models and configuration files including NPCs and mobs must exist in your server's directory as well in /game/share/data. Opening the server: Once your FreeBSD system is ready, upload the Serverfiles. The SF include 2 compressed folders (usually game.tar.gz -> goes in /usr/ and mysql.tar.gz -> goes in /var/db/mysql). Once you move them in their respected directories, untar them and give them 0777 permissions. Give permissions to gamefile, dbfile, protos and everything in mysql. To run the server, locate the *.sh file in /game directory of your SF. You can also edit this file to do more than just open and close your channels (for example running the QC). I hope those information gave you a place to start. Best regards
    1 point
  7. Admin page APi lol really hard hack
    1 point
  8. You're the real MVP! Thanks a bunch mate, most appreciated!
    1 point
  9. Ok.Its an old topic but if its dont closed its better and maybe now people find it util.I have 4 solutio for making great effects: 1.With 3dmax+fumefx+krakatoa+(mde tool by ricky)+world editor.(hard method)---Tested method 2.Cryengine particle editor+cry sdk plugin for 3dmax+ 3dmax+mde tool by ricky+world editor.(medium method)---Tested method 3.Cry engine,some animated objects+warp tool+mde tool by ricky.(easy)----Tested method 4.World editor(maybe its great for editing but for creations idk.)(unknow)----Undested I will make some new tutorial about how to do it.
    1 point
  10. Hi, I've made a costume weapon system, but I have a little problem with it. The bow is attached on bad bone and the knives are visible only in one hand. Have someone any idea how to fix it?
    1 point
  11. Why is this not working, im tryingto get a letter at he beginning of the game only. i get the letter but when i open it nothing happens quest start begin state start begin when login begin if pc.getqf("starter1") == 0 then pc.setqf("starter1",1) send_letter_ex("Hello", "ex,blink", "scroll_open.tga") set_state( starter ) else return end end end state starter begin when button or info begin say("blabla") end end end
    0 points
  12. Nope, still the same. I tried but im suing send_letter_ex for every other quest i have and it works fine
    0 points
  13. send_letter_ex bug If you use send_letter() works?
    0 points
  14. Thanks for the quick reply! For some reason still the message doesnt pop up. The letter does come but when i click the letter the message doesnt pop up. Do you maybe know the reason why? No error while installing the quest +edit Also the i am receiving the letter everytime i relog.
    0 points
  15. You don't need to set a new state to read the letter... Bad quest name, bad indentation, bad idea to block letter send. quest change_quest_name begin state start begin when login with pc.getqf("starter1") == 0 begin send_letter_ex("Hello", "ex,blink", "scroll_open.tga") ---IF DOESN'T WORK USE send_letter("Hello") end when button or info begin pc.setqf("starter1", 1) --BETTER TO BLOCK WHEN THEY READ say("blabla") end end end
    0 points
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.