Jump to content

Infinity dungeon (TUTORIAL) by caanmasu


caanmasu

Recommended Posts

Hello everyone

 

I bring you my second quest tutorial where you can improve your quest/lua skills (a bit of SQL too) until you become a real expert.

 

Note: in the attached file is the first and second tutorial (Spanish and English language)

 

This tutorial is about an infinity Dungeon.

The dynamic of my tutorials is to make a quest where I show point by point how I would do it, and I explain it in detail.

If you want to skip the tutorial and just use the quest, you are free to do so, I left a folder with the files to install.

I must warn that I only provide code, not models. I use already existing models from the game, specifically, demon tower map, Reaper as boss, dogs as monsters to destroy, etc. You can use the dungeon with the models you want, this way you improve the user experience. The dungeon is customizable, you only have to change numbers.

I must also warn that the dungeon has not been tested with several players, although I did good tests with several of my characters, the best tests are done with real players. In case you find bugs, report them to my Discord.

Another important note, if you don't read the tutorial, there are additional data that you can't miss, they are really mandatory. You must go to the tutorial and at the end you will find a section called 'Additional data:'. Really, you can't miss it.

 

The content of this tutorial is as follows:

1. Show a button on the NPC
2. Show the NPC button only when we are in the map outside the dungeon.
3. Create the first dungeon jump
4. Create group mode
5. Add some restrictions for entry
6. Create two room mechanics and run them so that they are chosen randomly.
7. Take the character out of the dungeon when player die.
8. Create the ranking log
9. Add dungeon rejoin
10. Display the ranking
11. Add an announcement when someone breaks a floor record.
12. Create spectator mode
13. Increase the difficulty for each floor
14. Add logs
15. Create rewards
16. Create 5 dungeon mechanics
17. Dynamize the base coordinates
18. Add remaining time on each floor
19. Facilitate entry into GMs characters
20. Convert texts to variables

 

Some gifs:

Spectator mode

Dugeon ranking

Rejoin

Announcement when someone breaks a floor record

Mission 1: killAllMonsters

Mission 2: killBossWithMonsters

Mission 3: killAllStones

Mission 4: purgePillarsRightOrder

Mission 5: findRightKey


Number of lines of code:

translate.lua: 48
questlib.lua: 76
quest_infinity_dungeon.sql: 9
infinity_dungeon.quest: 167
infinity_dungeon_lib.lua: 408
infinity_dungeon_mission_lib.lua: 287
infinity_dungeon_rewards.lua: 26

Total: 1021 lines


If you liked the intention of this post you can help me with a reaction, so you can give more popularity to this post and make it more visited so that more people can access to the knowledge of free quest/lua of the highest quality ever seen.

Once an acquaintance told me that there was not enough quest documentation for Metin2 and I agreed with him. At that time I knew a little about quest/lua but I said to myself 'knowledge should be free but someone should provide it, not for profit' and I didn't expect that I was going to do it. I didn't want to be left alone with what I knew, I had the need to share it for everyone.

 

About my knowledge of quest/lua:
When I first learned quest/lua, I already had base experience of programming in general. I learned quest/lua empirically by watching other people's quest, the LUA source code in C++ about functions and the binary source code related to RAW TEXT tokens, in that order. I could say that I have seen and reviewed thousands of quests written by German, Spanish, English, Romanian, Turkish and other nationalities. I have also seen all levels of quests written by others. I have created many quests for clients, of all kinds of nationalities for all kinds of servers.
In total I have accumulated more than 10 thousand hours of quest/lua programming. I have dedicated a lot of time of my life to this. I am a person who does not stay with what he knows, but wants to extend himself more, so I researched for a long time how to improve the quality of my code and to this day I put it into practice and it is the most important pillar of all my programming: code quality.
I learned many code structures from many quest until I created my own structure and also my own libraries. When quest/lua is limited to what I need, I have no difficulty in modifying or creating LUA functions in C++ as this is also part of quest.

There is much more about this but I think it is enough in this post.

The day I leave, there will be forever (or until Metin2 dies completely) this knowledge that will be useful to improve the experience of players in Metin2 private servers. If they are shit server or not, I don't care.

If you need any help you can contact me. My Discord is 'caanmasu'.

Greetings to all.

Download: https://acortar.link/bBp1hk or 

This is the hidden content, please

Edited by Metin2 Dev International
Core X - External 2 Internal
  • Metin2 Dev 48
  • Eyes 1
  • Good 8
  • Love 4
  • Love 36
Link to comment
Share on other sites

3 hours ago, Deiklo said:

This is a great contribution bro, thank you very much.

Can this infinity dungeon quest be implemented on other maps? I have that doubt

Btw, until now you are the person who knows the most about this language and above all, you share it with modesty. keep it up! 🥳

Hi @Deiklo!
 

The coding is designed to be customized. You can assign the dungeon map you want, including monsters, rewards, required level, among others.

To change the map you must modify the infinity_dungeon_lib.data table. It is very easy to do it since the variables are very telling, and in case they are not, I left comments that detail it.

map_index, map_index_out, base_cords, outside_pos and in each jump of each mission.


Regarding the compliment, thank you friend, a pleasure to serve you. 🙂

Link to comment
Share on other sites

  • 8 months later...

Announcements



×
×
  • 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.