Jump to content

Search the Community

Showing results for tags 'skill'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Community
    • M2Dev
    • Offtopic
    • Games Talk
    • Music / Videos / Art
    • Member Representations
    • Services & Sales
  • Metin2
    • General
    • Questions and Answers
    • Frequently Asked Questions
    • Private Servers
    • Videos
  • Suggest a Tutorial / Release
    • Suggest a Tutorial / Release
    • Temporary forum
  • Releases
    • General
    • Guides & HowTo
    • Tools
    • Programming & Scripts / Systems
    • Maps
    • Quests
    • Binaries & Clients / ServerFiles
    • 3D Models
    • 2D Graphics
    • Operating Systems


There are no results to display.

There are no results to display.

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start







Steam ID













Found 40 results

  1. Hello everybody, I was trying to add the v17.5 Archer Skill, i followed this : link It works fine, the only problem is that the "bomb" is fixed to the pg body as tou can see HERE The player should drop the bomb to the ground and not carrying it himself. In the given code, HERE , i found out that the new skill is using the Aura War skill effect as a base code, so it attaches the effect to the body. I think the problem can be resolved in this portion of code: void CInstanceBase::__Assassin_SetGyeongGongAffect(bool isVisible) { if (isVisible) { if (IsWearingDress()) return; if (m_kAssassin.m_dwGyeongGongEffect) __DetachEffect(m_kAssassin.m_dwGyeongGongEffect); m_GraphicThingInstance.SetReachScale(1.5f); m_kAssassin.m_dwGyeongGongEffect = __AttachEffect(EFFECT_GYEONGGONG_BOOM); } else { m_GraphicThingInstance.SetReachScale(1.0f); __DetachEffect(m_kAssassin.m_dwGyeongGongEffect); m_kAssassin.m_dwGyeongGongEffect = 0; } } And more closely, this particular part m_kAssassin.m_dwGyeongGongEffect = __AttachEffect(EFFECT_GYEONGGONG_BOOM); I thought it should be replaced with something like m_GraphicThingInstance But I really don't know how t make it work. Thank you to everyone who will help Regards
  2. Hello devs Today I would like to present you a new solution that can make you feel more safe with your GMs. This is my first release and it's very simple to do, I'm just posting it here for the newbies and those who don't know how to start searching and other shit like that WHAT IS THIS SYSTEM? This system is a number of preventions for GameMaster characters about certain interractions with normal players in the game. The functions you are about to see are blocking GMs from: Trading items with normal players (and the opposite) Invite normal players to parties (and the opposite) Invite normal players to guilds (and the opposite) Adding normal players as friend contacts (I would say and the opposite but it already exists by default ) Drop items to the ground Build their own private shops with the Bundle item Buy items from a private shop Block a GM from buffing normal players Using the commands /set, /a and /setskillother to normal players WHO IS THIS SYSTEM FOR? I believe we can all agree that trust in partnership is a rare thing these days. This system is released from me for the Admins out there that cannot trust their GMs (and many times their self) so much. Imagine having a server and your GM just gives away items for free to everyone. Bad huh? I thought so... So with this system you are sure that your GMs will do their job properly and won't violate any game rules behind your backs. Your server has rules (as all games out there) and if you wanted people to have some items for free you can easily put those items for sale into the town vendors. People who do this kind of things behind your backs are not authorized by you to do it but I believe that it happened (if not happening yet) to the best of you guys, that's why I'm releasing it. It's time to set some things right in your servers, GMs exist to answer questions and not helping players cheat without any authorization from the administrators, so without further ado, let's get started. SORRY AGAIN, ONE MORE THING I BELIEVE THIS QUESTION IS IN THE MIND OF A DEVELOPER WHO READS THIS GUIDE: MIND RAPIST, WHY DO YOU USE THE IsGM() BOOLEAN TO CHECK IF A PLAYER IS A GM AND NOT USE THE TRADITIONAL CHECK GetGMLevel() > GM_PLAYER? In this tutorial, we will be using the bool IsGM() instead of the usual check because some of the guys who see this may have added @Alina's GM Elevation system. In that case, GetGMLevel() won't work before the character elevates, so our GMs will be able to bypass the check and just create a perfect item, relog and give it away before they elevate. We don't want that don't we? So who ever wants to use GetGMLevel() > GM_PLAYER instead of IsGM() there is no difference you can do that guys, except if you did the elevation system, then you need to use my function in order to work. So let's get the party started. PARTY INVITATION BLOCK In char.cpp search for the function "void CHARACTER::PartyInvite(LPCHARACTER pchInvitee)" and under add this: Done with party block, let's continue BUNDLE USAGE BLOCK FOR CREATING PRIVATE SHOPS In char_item.cpp search for the function "bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)" and under add this: Done, let's continue ITEM DROP BLOCK Still in char_item.cpp search for the function "bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)" and under add this: Done with that one, you can close char_item.cpp. Let's move on BUFF BLOCK In char_skill.cpp find this: and paste this under it: Done with that, next! /SET COMMAND BLOCK FOR PLAYERS In cmd_gm.cpp search for the function "ACMD(do_set)" and under add this: Done, but do not close, we have more commands to block! /A COMMAND BLOCK FOR PLAYERS Still in cmd_gm.cpp, search for the function "ACMD(do_advance)" and under add this: Do not close that file yet, one more command left to block /SETSKILLOTHER COMMAND BLOCK FOR PLAYERS Still in this file, search for the function "ACMD(do_setskillother)" and under add this: Done with the commands, you may close cmd_gm.cpp and move on EXCHANGE BLOCK In exchange.cpp search for the function "bool CHARACTER::ExchangeStart(LPCHARACTER victim)" and under (if you have sash system in your source, the top line may be "if ( IsOpenSafebox() || GetShopOwner() || GetMyShop() || IsCubeOpen() || IsAcceOpen() )") add this: Done with the exchange, moving on! GUILD INVITATION BLOCK In guild.cpp search for the function "void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )" and under add this: Here goes the guild invitation, let's move forward FRIEND LIST BLOCK In input_main.cpp search for the function "int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)" and find this line: change it like this: Still in the same function, find this line in "case MESSENGER_SUBHEADER_CG_ADD_BY_NAME:": and add this: Friends are done. Let's move on to the last one! BUYING ITEMS FROM PRIVATE SHOPS BLOCK In shop_manager.cpp search for the function "void CShopManager::Buy(LPCHARACTER ch, BYTE pos)" and under add this: Done It's not something hard to do, I just gathered everything in one place, you can now sleep at night knowing that your GMs cannot fraud you. I would like to give special thanks to @VegaS who wrote the blocks for buffs, party and guild invitation, thanks so much buddy Note: These will block any interraction between a GM and a normal player, but a GM will be able to interract with another GM (example trade GM with GM). And before someone asks yes I thought about a safebox block for GMs but there is no need for that since you can login to his account and create 3 players, then logout and delete them directly from their database, leaving 3 warriors with Level 0 that cannot login to the game. Let the poor GMs have their safebox it's the only thing left to them after that I think xD So I hope I helped some folks here the tutorial is done Kind regards ~ Mind Rapist
  3. hey guys, today i wanna introduce a cat based animation system for metin. it allows even 3ds max newbies to create some good content if you take your time :). basically it allows you to create a animations very fast with the adventage of human-like movements. i dont really think words can desribe it, so i've did a video to get you some taste of it. by the way, i saw a guy named phil3d created a system like that for maya a few years ago. however, take a look: Video:
  4. Hello, there is a common error/bug in Metin2 related to the taskbar and character skill window. This error occurs when the skill has the status of "TOGGLE" and somebody or something killed us. When we are killed the game client still thinks that the skill is active somehow not updating its status (right clicking on slot causes the packet to be sent to the server again). What's even more funny, when we kill our character by command or when we've been shot down at once this problem does not occur Here are some screenshots explaining the bug: If you are interested in fixing this error, please follow the instructions below: Clientside: Open UserInterface/PythonPlayerModule.cpp and search: { "ClearSkillDict", playerClearSkillDict, METH_VARARGS }, add below: { "DisableToggleSkill", playerDisableToggleSkill, METH_VARARGS }, scroll down and search for: PyObject * playerClearSkillDict(PyObject * poSelf, PyObject * poArgs) add under: PyObject * playerDisableToggleSkill(PyObject * poSelf, PyObject * poArgs) { int iSlotIndex; if (!PyTuple_GetInteger(poArgs, 0, &iSlotIndex)) return Py_BadArgument(); CPythonPlayer::Instance().Disable_Toggle_Skill(iSlotIndex); return Py_BuildNone(); } Now move on to the UserInterface/PythonPlayer.cpp and search for: void CPythonPlayer::ClearSkillDict() add below: void CPythonPlayer::Disable_Toggle_Skill(DWORD dwSlotIndex) { CInstanceBase * pkInstMain = NEW_GetMainActorPtr(); if (!pkInstMain) return; if (!pkInstMain->IsDead()) return; if (dwSlotIndex >= SKILL_MAX_NUM) return; for (dwSlotIndex; dwSlotIndex <= SKILL_MAX_NUM; ++dwSlotIndex) { if (IsSkillActive(dwSlotIndex)) { m_playerStatus.aSkill[dwSlotIndex].bActive = FALSE; PyCallClassMemberFunc(m_ppyGameWindow, "DeactivateSkillSlot", Py_BuildValue("(i)", dwSlotIndex)); } } } after that UserInterface/PythonPlayer.h search: void ClearSkillDict(); // ľřľîÁö°ĹłŞ ClearGame ÂĘŔ¸·Î Ć÷Ç﵃ ÇÔĽö add: void Disable_Toggle_Skill(DWORD dwSlotIndex); UserInterface/PythonPlayerSkill.cpp Search: void CPythonPlayer::ClickSkillSlot(DWORD dwSlotIndex) and under: if (pSkillData->IsStandingSkill()) { if (pSkillData->IsToggleSkill()) { if (IsSkillActive(dwSlotIndex)) { CInstanceBase * pkInstMain = NEW_GetMainActorPtr(); if (!pkInstMain) return; if (pkInstMain->IsUsingSkill()) return; add new if statement: if (pkInstMain->IsDead()) return; like that: Rebuild solution. Python part: root/uitaskbar.py Search in OnUpdate(self): if app.GetGlobalTime() - self.lastUpdateQuickSlot > 500: add at the end: player.DisableToggleSkill(0) Thanks to @filipw1 idea there's no need to use python part anymore. Back to client source: UserInterface/PythonPlayer.cpp: search: void CPythonPlayer::NotifyDeadMainCharacter() and change void to this: void CPythonPlayer::NotifyDeadMainCharacter() { __ClearAutoAttackTargetActorID(); Disable_Toggle_Skill(0); } Rebuild solution. If you want to execute it from python script: player.DisableToggleSkill(skill_startIndex) Final result: https://i.gyazo.com/fd82269ba8b5d6777cbc93eff2942f20.mp4 This is my way to solve this graphic problem. All suggestions are welcome. Have a nice day
  5. HI developers, my pet system skills are not working, I tried to search here, there is no solution Please give me some directions Thank you for your answer! Best wishes to you~
  6. Hello there. I wanted to make my skills to get from Normal to G1 (instead of M1) when reaching 15 skill points, and I have followed the following topic: Unfortunately it is not working. I'm currently using 40k and the skills are still mastered to M1 instead of G1, despite of following the suggestions in the topic. Here's my current script: case SKILL_NORMAL: // ¹ø¼·Àº ½ºÅ³ ¾÷±×·¹À̵å 17~20 »çÀÌ ·£´ý ¸¶½ºÅÍ ¼ö·Ã if (GetSkillLevel(pkSk->dwVnum) >= 17) { SetSkillLevel(pkSk->dwVnum, 40); } break; case SKILL_MASTER: if (GetSkillLevel(pkSk->dwVnum) >= 30) { if (number(1, 31 - MIN(30, GetSkillLevel(pkSk->dwVnum))) == 1) SetSkillLevel(pkSk->dwVnum, 30); } break; case SKILL_GRAND_MASTER: if (GetSkillLevel(pkSk->dwVnum) >= 40) { SetSkillLevel(pkSk->dwVnum, 40); } break; } And yes, I have tried both values for SetSkillLevel to 30 and 40, none of them worked. Can someone help me please? I would be grateful
  7. Hi, When I upgrade my skills on the Windows server, there is no change on the client side, but on the server side. No problem with FreeBSD. The problem is only on the Windows server. Sorry for my bad english
  8. My warrior, My ninja. The sixth skill, =1-16 is a good job, =M =G =P, not working But = S, he started working again!~ really magical, I hope you can help me point out, where is the problem?How can I solve it? Thank you!
  9. I want to understand how you can add a new skill and by seeing how to implement the wolfman I should get an idea, the thing is, in source there is nothing and as I understood the skills are defined somehow in skil.proto but I just don't understand how, for example, where does it say that ninja is invisible when using camouflaje until he attacks? I would expect that that should be defined using C++. What I am asking for is only the parts that are necessary to implement wolfman, not the whole files though so I can see what I modify.
  10. If I search for "GEOMKYUNG" (aura of the sword I think) I get this output: I looked up in those .cpp and .h files but did not find anything(you can see the lines in the output,only lines with RemoveAffect() etc). Where is the skill defined? If I want to create a new skill or modify this skill where do I actually need to look? Tried to look into that database and did not find anything,it's too big
  11. Hi, Does anyone know which side is the problem? Client or src?
  12. Hi everyone, I have a 7/8 skill bug. Tell me how to fix it, thank you in advance.
  13. Hi guys, can someone tell me where I can find a value of bonus of skill Fear on WP sura? Thanks for answers! Sincerely, ReFresh
  14. For who want in client-side: For who want in server-side:
  15. Hello I've a problem in my windows server files, the skills are not working, i cant upgrade, even if i use /setsk 80 59 or /skillup 80, but in the server console of the channel i'm in, i can see the command working, but in game nothing happens, the skill points are spend but the skill don't upgrade. In my freebsd VM everything works fine. Any suggestion to solve this problem? Other question, where are saved the skills states?
  16. Hey devs I want to change a specific skill's bMethod from SKILL_UP_BY_POINT to SKILL_UP_BY_BOOK before Master can anyone help me to do that? Thanks in advance
  17. Hello Com, i have a "little..." HP/MP/Skill?-Bug". When i use an auto-potion or summon my pet or deactivaded a skill or sura use skill-id 66 - the client have a little "lag" or when i use skill like (looks gif) - i lost hp/mp skill 66 - remove_good_affect - when sura use skill 66 - user have a lag look the gif's - look the hp/mp i use the "fix" by @VegaS : char.cpp and i changed HP/MP from short to long in game-source: tables.h but not worked How can i fix this "lag/HP/MP-bug" please help
  18. Hello devs, sorry for making you seeing another topic of mine at your home page What I need this time is a quick tutorial in the game source. I have 18 skills by vnums: 221, 222, 223, 224, 225, 226, 227, 228, 229, 236, 237, 238, 239, 240, 241, 242, 243, 244. Now those skills can be upgraded normally with skill points until reaching M1. What I need is to make them upgradable with skill points AND their book before M1 (not both just 1 skill point or 1 book from 1 -> 2 then from 2 -> 3 and so on). After M1 no skill points just books like default. Thank you in advance and sorry again for the so many questions of mine
  19. Hello devs, as you may have noticed I'm one of the noobiest devs around here so I need your help today don't worry it's something simple Alright so I need a simple LUA function. I have this array of skills and I want to check if some of them is Perfect Master and if it's not then say("You can't do this until one of these skills are Perfect Master and blah blah blah...") Just that So thank you in advance guys I appreciate every comment I get EDIT: I got it don't worry about it
  20. I Have a problem when i made my skill (p) then i reboot the server, the skill is reset auto to the original one (not saved as p) :/
  21. Anyone know how I can do that?I tried to modify the source but did not really please some advice any!
  22. Hallo, I import to my server and client Sash (acce) system and all is OK, but check video... https://youtu.be/xzbmBM0iBMw Thanks for any help
  23. Hello, anyone knows where i can see the attacks of lycan skills, to change the combo times? Thanks
  24. Hi metin2dev community. I have this issue which really bothers me. I got this item 50300 which is a skill book. Everytime i drop one from a metin stone i get a random skill book. My server had lycan before but i removed it. But it does have a chance of giving me a lycan skill book. How can i remove the lycan skill book from here ? Many thanks !
  25. Hello, I want to add a skill over Perfect Master. After you get the Perfect Master skill for example of Aura of sword you can increase this skill from P1 to P10 and after this you get a new skill. I started to edit the Serverside source and set this value of my new skill grade to 50. --> /setsk 3 50 --> is the new skill grade after Perfect master. I don't know how I can realize this in the client and where I can adjust this at serverside. I only add a title in the locale_game.txt and add a definition for this skill grade at uitooltip.py in the root directory. I hope someone can help me. Sorry for my bad english.
  • 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.