Jump to content

Search the Community

Showing results for tags 'alignment'.

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 8 results

  1. Hi all.Today i work and tested how to add new alignments Now i finish it and create instructions for you. Now how do it: 1. edit game source open char_battle.cpp and find: int iAlignIndex; and edit for example: if (GetRealAlignment() == 300000) iAlignIndex = 0; else if (GetRealAlignment() >= 200000) iAlignIndex = 1; else if (GetRealAlignment() >= 120000) iAlignIndex = 2; else if (GetRealAlignment() >= 80000) iAlignIndex = 3; else if (GetRealAlignment() >= 40000) iAlignIndex = 4; else if (GetRealAlignment() >= 10000) iAlignIndex = 5; else if (GetRealAlignment() >= 0) iAlignIndex = 6; else if (GetRealAlignment() > -40000) iAlignIndex = 7; else if (GetRealAlignment() > -80000) iAlignIndex = 8; else if (GetRealAlignment() > -120000) iAlignIndex = 9; else if (GetRealAlignment() > -200000) iAlignIndex = 10; else if (GetRealAlignment() > -250000) iAlignIndex = 11; else iAlignIndex = 12; now find FPartyAlignmentCompute f(-20000, pkKiller->GetX(), pkKiller->GetY()); pkKiller->GetParty()->ForEachOnlineMember(f); if (f.m_iCount == 0) pkKiller->UpdateAlignment(-20000); else { sys_log(0, "ALIGNMENT PARTY count %d amount %d", f.m_iCount, f.m_iAmount); f.m_iStep = 1; pkKiller->GetParty()->ForEachOnlineMember(f); } } else pkKiller->UpdateAlignment(-20000); and replace with this: FPartyAlignmentCompute f(-30000, pkKiller->GetX(), pkKiller->GetY()); pkKiller->GetParty()->ForEachOnlineMember(f); if (f.m_iCount == 0) pkKiller->UpdateAlignment(-30000); else { sys_log(0, "ALIGNMENT PARTY count %d amount %d", f.m_iCount, f.m_iAmount); f.m_iStep = 1; pkKiller->GetParty()->ForEachOnlineMember(f); } } else pkKiller->UpdateAlignment(-30000); now find m_iRealAlignment = MINMAX(-200000, m_iRealAlignment + iAmount, 200000); and replace with this: m_iRealAlignment = MINMAX(-300000, m_iRealAlignment + iAmount, 300000); now you can compile game! 2. edit binary: open InstanceBase.h and find: TITLE_NUM = 9, TITLE_NONE = 4, and replace this: TITLE_NUM = 13, TITLE_NUM = 6, Now you can save and close InstanceBase.h. Now open InstanceBase.cpp and find: UINT CInstanceBase::GetAlignmentGrade() and edit for example this: UINT CInstanceBase::GetAlignmentGrade() { if (m_sAlignment == 30000) return 0; else if (m_sAlignment >= 20000) return 1; else if (m_sAlignment >= 12000) return 2; else if (m_sAlignment >= 8000) return 3; else if (m_sAlignment >= 4000) return 4; else if (m_sAlignment >= 1000) return 5; else if (m_sAlignment >= 0) return 6; else if (m_sAlignment > -4000) return 7; else if (m_sAlignment > -8000) return 8; else if (m_sAlignment > -12000) return 9; else if (m_sAlignment > -20000) return 10; else if (m_sAlignment > -25000) return 11; return 12; } now find int CInstanceBase::GetAlignmentType() and edit for example this: int CInstanceBase::GetAlignmentType() { switch (GetAlignmentGrade()) { case 0: case 1: case 2: case 3: case 4: case 5: { return ALIGNMENT_TYPE_WHITE; break; } case 7: case 8: case 9: case 10: case 11: case 12: { return ALIGNMENT_TYPE_DARK; break; } case 6: { return ALIGNMENT_TYPE_NORMAL; break; } } } now you can save and close InstanceBase.cpp and Build binari. 3. edit client Extract root files and open locale.py now find this: TITLE_NAME_LIST = ( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, ) and replace with this: TITLE_NAME_LIST = ( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, PVP_LEVEL9, PVP_LEVEL10, PVP_LEVEL11, PVP_LEVEL12, ) now you can save locale.py and open introloading.py find this: TITLE_COLOR_DICT and edit this: TITLE_COLOR_DICT = ( colorInfo.TITLE_RGB_GOOD_6, colorInfo.TITLE_RGB_GOOD_5, colorInfo.TITLE_RGB_GOOD_4, colorInfo.TITLE_RGB_GOOD_3, colorInfo.TITLE_RGB_GOOD_2, colorInfo.TITLE_RGB_GOOD_1, colorInfo.TITLE_RGB_NORMAL, colorInfo.TITLE_RGB_EVIL_1, colorInfo.TITLE_RGB_EVIL_2, colorInfo.TITLE_RGB_EVIL_3, colorInfo.TITLE_RGB_EVIL_4, colorInfo.TITLE_RGB_EVIL_5, colorInfo.TITLE_RGB_EVIL_6, ) now you can save introloading.py and open uicharacter.py find this: COLOR_DICT and edit this: COLOR_DICT = { 0 : colorInfo.TITLE_RGB_GOOD_6, 1 : colorInfo.TITLE_RGB_GOOD_5, 2 : colorInfo.TITLE_RGB_GOOD_4, 3 : colorInfo.TITLE_RGB_GOOD_3, 4 : colorInfo.TITLE_RGB_GOOD_2, 5 : colorInfo.TITLE_RGB_GOOD_1, 6 : colorInfo.TITLE_RGB_NORMAL, 7 : colorInfo.TITLE_RGB_EVIL_1, 8 : colorInfo.TITLE_RGB_EVIL_2, 9 : colorInfo.TITLE_RGB_EVIL_3, 10 : colorInfo.TITLE_RGB_EVIL_4, 11 : colorInfo.TITLE_RGB_EVIL_5, 12 : colorInfo.TITLE_RGB_EVIL_6, } now you can save uicharacter.py and open colorinfo.py and add this: TITLE_RGB_GOOD_6 = (255, 215, 0) TITLE_RGB_GOOD_5 = ( 0, 159, 0) TITLE_RGB_EVIL_5 = (127, 32, 0) TITLE_RGB_EVIL_6 = ( 48, 0, 0) save and you can compile root. now you extract locale and open locale_game.txt find: PVP_LEVEL0 and edit PVP levels for example this: PVP_LEVEL0 King PVP_LEVEL1 Machr PVP_LEVEL2 Rytířský PVP_LEVEL3 Vznešený PVP_LEVEL4 Dobrý PVP_LEVEL5 Přátelský PVP_LEVEL6 Neutrální PVP_LEVEL7 Agresivní PVP_LEVEL8 Úskočný PVP_LEVEL9 Zlomyslný PVP_LEVEL10 Krutý PVP_LEVEL11 Chudák PVP_LEVEL12 Ubožák save and compile locale. This is all. GOOD LUCK! PS: sorry for my bad english.
  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. Hello! Developers... When I am a normal player, my alignment=-20000, I become a red name, but when I am killed, I will not drop weapons and armor and anything, this is not normal, how can I modify it? Thank you for your answer The best wishes for you~
  4. Players alignments are resetting when i reboot server.in player database alignments are randomaly values bigger 400k.i reset with query then players skill_groups are reset. screenshot like: how to fix it? i have source.
  5. Hi devs, can someone explain me how the alignment system works on the database? For example I have a player with 1257 alignment on the database and in-game the alignment is 108. How can I convert the database alignment to the in-game alignment? For example I want to do this while I'm getting information from the player.player table: Can someone explain me this logic please? How 1257 = 108? Thanks in advance
  6. Hello guys im searching for a quest that trains a skill from M1 > M2 M2 > M3 and going untill G10 > P. No reducing alignment 100% success just like that... If someone has a quest like this please share
  7. Hi dev's , How can i stop aligment to increase? or decrease when i am on pvp mode?
  8. Hello. Does someone know what I can make to set off the alignment from the source? I would like to do something to can't get/lose alignment points in game. Does someone know from what file i can do this? I would be glad if you caould help me with this.
  • 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.