Jump to content

ReFresh

Active Member
  • Posts

    1797
  • Joined

  • Last visited

  • Days Won

    4
  • Feedback

    0%

Posts posted by ReFresh

  1. Hey guys,

    I just noticed that the description of leadership skill spacer.png is not displaying party group bonuses values correctly.

    This is the hidden content, please

    And you're done. Now you can go into the game and check, if the bonuses values in the leadership skill description are displayed correctly.

    Good luck!

    • Metin2 Dev 87
    • kekw 1
    • Eyes 1
    • Scream 1
    • Lmao 1
    • Good 21
    • Love 1
    • Love 13
  • Hey guys,

    I just noticed there's a bug in group member role updating. Button, which have to remove group member role is not removing set group member bonus and leaving group is not removing set bonus too (not depend on who left the group).

    Many of us have this problem, so would be really nice, if someone can find the solution for that.

    Thanks for possible answers!

    Sincerely,

    ReFresh

  • I had this tool on my disc in the past. I'll try to find it, but it won't be updated. So you won't be able to copy and paste the mysql queries and item_proto, if you aren't using very old item_proto and very old mysql.

    Here you are:

    This is the hidden content, please

    Or there is a newer one:

    This is the hidden content, please

    • Metin2 Dev 20
    • Eyes 6
    • Good 6
    • Love 2
    • Love 16
  • Hey guys,

    when you are in the game with character, who have admin rights (GM) and who is in invisible mode (/inv) and you have GM logo & effects on that character, effects and GM logo aren't hidden when someone (player) appear (login, spawn) somewhere on the same map (or somewhere around you). Only AFF_YMIR_GM (AFF_YMIR - originally) works correctly. In other cases (AFF_YMIR_SA, //42 AFF_YMIR_GA, //43, AFF_YMIR_TGM, //44 ) it will cause the problem mentioned. I have no idea, where could be the problem. I tried to change almost everything and nothing worked.

    I just noticed that's the problem caused by one system, which was on this forum in the past (GM AFFECTS) and I believe it's caused by a little mistake, but I don't know where it could be.

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Below you can see file changes, which I did:

    Server/char.cpp:

    Spoiler
    void CHARACTER::SetPlayerProto(const TPlayerTable * t)
    {
      ...
    		if (GetGMLevel() == GM_GOD)
    		{
    			m_afAffectFlag.Set(AFF_YMIR_GM);
    		}
    
    		else if (GetGMLevel() == GM_IMPLEMENTOR)
    		{
    			m_afAffectFlag.Set(AFF_YMIR_SA);
    		}
    
    		else if (GetGMLevel() == GM_HIGH_WIZARD)
    		{
    			m_afAffectFlag.Set(AFF_YMIR_GA);
    		}
    
    		else if (GetGMLevel() == GM_LOW_WIZARD)
    		{
    			m_afAffectFlag.Set(AFF_YMIR_TGM);
    		}
      ...
    }

     

    Server/affects.h:

    Spoiler
    enum EAffectBits
    {
    	AFF_YMIR_GM, //0
      ...
    	AFF_YMIR_SA, //42
    	AFF_YMIR_GA, //43
    	AFF_YMIR_TGM, //44
      ...
    }

     

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Client/InstanceBase.h:

    Spoiler
    public:
    		typedef DWORD TType;
    enum
    {
      			AFFECT_YMIR_GM, //0
      ...
    			AFFECT_YMIR_SA, //42
    			AFFECT_YMIR_GA, //43
    			AFFECT_YMIR_TGM, //44
      ...
    }

     

    Client/InstanceBaseEffect.cpp:

    Spoiler
    void CInstanceBase::__SetAffect(UINT eAffect, bool isVisible)
      
     		case AFFECT_YMIR_GM:
    		case AFFECT_YMIR_SA:
    		case AFFECT_YMIR_GA:
    		case AFFECT_YMIR_TGM:
    			if (IsAffect(AFFECT_INVISIBILITY))
    				return;
    			break;

    Client/InstanceBase.cpp:

    Spoiler
    BOOL CInstanceBase::IsGameMaster()
    {	
    	if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR_GM))
    		return true;
    
    	if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR_SA))
    		return true;
    
    	if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR_GA))
    		return true;
    
    	if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR_TGM))
    		return true;
    
    	return false;
    }

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Pack/root:

    localeInfo.py:

    Spoiler
    FN_GM_MARK = "%s/effect/gm_mark.mse" % app.GetLocalePath()
    FN_SA_MARK = "%s/effect/sa_mark.mse" % app.GetLocalePath()
    FN_GA_MARK = "%s/effect/ga_mark.mse" % app.GetLocalePath()
    FN_TGM_MARK = "%s/effect/tga_mark.mse" % app.GetLocalePath()

    playersettingmodule.py:

    Spoiler
    		chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+0, "Bip01", localeInfo.FN_GM_MARK)
      		chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+42, "Bip01", localeInfo.FN_SA_MARK)
    		chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+43, "Bip01", localeInfo.FN_GA_MARK)
    		chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+44, "Bip01", localeInfo.FN_TGM_MARK)

    I would be really glad, if someone can tell me where could be the problem.

    Thanks for possible answers!

    Sincerely,

    ReFresh

    • Metin2 Dev 1
    • Eyes 2
  • Hey guys,

    I'm wondering how to prevent from loading the cursor when you're in loading phase. The cursor will load in loading phase in specific situation, which is: When you're in loading phase click on Windows taskbar and then click back on to the game screen. The cursor will be loaded before the game is loaded.

    There aren't any erros in sysser. I believe it's python problem, but I have no idea,  how can I find the source of the problem.

    I'll be really glad, if someone got an idea how it could be solved.

    spacer.png

    Sincerely,

    ReFresh

  • This are the coordinates of the map from Setting.txt:

    Spoiler

    204800    307200

    And these are the coordinates of add_goto_info:

    Spoiler

    add_goto_info("map_forest", 0, 89, 2132, 4283)

    As you can see, they're different. You can try to teleport to the coordinates you wrote in the Settings.txt by using command /warp 9728 11264 and you will see that you will be on 0x0, because of default coordinates, so you must edit them, to make them teleport you on the place you need.

  • But it still isn't what I'm searching.

    In ItemData.cpp (Client) exist this (this is blocking item unequip when shopping or exchanging):

    Spoiler
    BOOL CItemData::IsEquipment() const
    {
    	switch (GetType())
    	{
    		//BLOCK ITEM UNEQUIP WHEN SHOPPING
    		case ITEM_TYPE_WEAPON:
    		case ITEM_TYPE_ARMOR:
    
    			return TRUE;
    			break;
    	}
    
    	return FALSE;
    }

    I need to find the same function, but for equipping the specific item types.

  • Two more methods:

    char_item.cpp:

    Spoiler
    bool CHARACTER::CanHandleItem(bool bSkipCheckRefine, bool bSkipObserver)
    {
    	if (GetMyShop() || GetShop() || GetExchange())
    		return false;
    }

    uiinventory.py:

    Spoiler
    def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
    		if uiPrivateShopBuilder.IsBuildingPrivateShop() or exchange.isTrading() or shop.IsOpen():
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
    			return
    
    		net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
    
    	def __SendUseItemPacket(self, slotPos):
    		if uiPrivateShopBuilder.IsBuildingPrivateShop() or exchange.isTrading() or shop.IsOpen():
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
    			return
    
    		net.SendItemUsePacket(slotPos)

     

  • Hey guys,

    I just found empire flag visual bug. How can you trigger it? Just go with one character to another empire where you are waiting with character (on the second client window) from that empire, then unequip your amor with one character and then switch to the second character (on the second client window). The empire flag will disappear and if you unequip armor on the second character too, you won't see the other character empire flag until warp or relog.

    If someone got an idea for solution, I will be really glad!

    Thanks for possible answers!

    Sincerely,

    ReFresh

  • It wouldn't be an easy, but here is example of which variables should be edited.

    Spoiler
    battle_hit
    battle_melee_attack
    GetMobAttackRange (it has damage base)
    CalcBattleDamage
    CalcMagicDamageWithValue
    CalcMagicDamage
    iERSrc
    iARSrc
    attacker_dx
    victim_dx
    CalcAttBonus
    iReduceDamagePct
    point bonuses increased by iatk
    Item_GetDamage
    pdamMin
    pdamMax
    CalcMeleeDamage
    iDam
    iAtk
    iDamMin
    iDamMax
    iPureAtk
    iPureDam
    iDist
    iGap
    iPercent
    fAR
    iDef
    battle_hit
    CalcArrowDamage
    BlueDragon_Damage
    blue dragon idam stuff
    iPower
    ProfileDamage
    Damage
    UpdateAggrPointEx
    ChangeVictimByAggro
    GetSkillPower
    SendDamagePacket
    iRet
    total_dam
    dam
    reflectDamage
    iCriticalPct
    iPenetratePct
    pct
    iCurHP
    iDamageToSP
    iDamageSPPart
    add_dam
    iMostDam
    FuncSplashDamage
    packet_damage_info
    and min max utilities
    in libthecore

     

    PS: It was posted to discord. This is not my list.

  • @ASIKOONice idea! Would be nice, if you can do little improvement to that: 

    When you click on do_emotion_allow button, allowed emotions will be set to 1 for that character and after the teleport or relog it will be resetted to 0. It will prevent the spamming ChatPacket. I know you did a prevention for that already, but solution from my idea should be little bit better.

    And you can add a chat packet information for that player who sent a request to allow emotions:

    Spoiler
    	LPCHARACTER tch = CHARACTER_MANAGER::instance().Find(val);
    	
    	if (ch)
    	{
    		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Emotions from %s were allowed."), tch->GetName());
    	}
    	
    	if (tch)
    	{
    		tch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s wants to share emotions with you."), ch->GetName());
    	}

     

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