Jump to content

arlinamid

Inactive Member
  • Posts

    76
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by arlinamid

  1. 5 hours ago, Abel(Tiger) said:
    // Search:
    			if (40.0f < fabs(modelMatrix[3][1]))
    				bIsAccumulationMotion = true;
    
    // Add this line before that if:
    			modelMatrix[3][1] = animation->TrackGroups[trackIndex]->LoopTranslation[1];

    Thanks,  You made my day, yesterday I spend a 3 hour for browsing granny.h and try to find out why isnt working.

  2. For acce:

    You have to do

    Instancebase.h

    Add this two line:

    Search this :        void    __ClearArmorShiningEffect(bool detaching = true);

    Add after:

    		void	__ClearAcceShiningEffect(bool detaching = true);
    		void	__AttachAcceShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");

    after that search this one :         DWORD                    m_armorShiningEffects[CItemData::ITEM_SHINING_MAX_COUNT];

    add after this:

    		DWORD					m_acceShiningEffects[CItemData::ITEM_SHINING_MAX_COUNT];

    In InstanceBase.cpp

    Search this in     ClearAcceEffect(); in void SetAcce

    add after this

    #ifdef ENABLE_SHINING_SYSTEM
    	__ClearAcceShiningEffect();
    #endif

    search this     CItemData * pItemData = NULL;
        CItemManager::Instance().GetItemDataPointer(dwAcce, &pItemData); in void SetAcce

    #ifdef ENABLE_SHINING_SYSTEM
    	if (pItemData)
    		__GetShiningEffect(pItemData);
    #endif

    Replace the whole void __GetShiningEffect with this it will fix costume weapon effect too.

    void CInstanceBase::__GetShiningEffect(CItemData* pItem)
    {
    	bool removeRefineEffect = true;
    
    	CItemData::TItemShiningTable shiningTable = pItem->GetItemShiningTable();
    
    	if (pItem->GetType() == CItemData::ITEM_TYPE_WEAPON)
    	{
    		__ClearWeaponShiningEffect();
    		if (removeRefineEffect)
    		{
    			__ClearWeaponRefineEffect();
    		}
    
    		for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
    		{
    			if (strcmp(shiningTable.szShinings[i], ""))
    			{
    				bool twoSidedWeapon = pItem->GetSubType() == CItemData::WEAPON_DAGGER || (IsMountingHorse() && pItem->GetSubType() == CItemData::WEAPON_FAN);
    				if (twoSidedWeapon)
    				{
    					__AttachWeaponShiningEffect(i, shiningTable.szShinings[i], "PART_WEAPON_LEFT");
    				}
    
    				if (pItem->GetSubType() == CItemData::WEAPON_BOW)
    					__AttachWeaponShiningEffect(i, shiningTable.szShinings[i], "PART_WEAPON_LEFT");
    				else
    					__AttachWeaponShiningEffect(i, shiningTable.szShinings[i], "PART_WEAPON");
    			}
    		}
    	}
    #ifdef ENABLE_COSTUME_SYSTEM
    	else if (pItem->GetType() == CItemData::ITEM_TYPE_COSTUME)
    	{
    #ifdef ENABLE_ACCE_COSTUME_SYSTEM
    		if (pItem->GetSubType() == CItemData::COSTUME_ACCE)
    		{
    			for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
    			{
    				if (strcmp(shiningTable.szShinings[i], ""))
    				{
    					__AttachAcceShiningEffect(i, shiningTable.szShinings[i], "Bip01");
    				}
    			}
    		}
    #endif
    		else if (pItem->GetSubType() == CItemData::COSTUME_BODY)
    		{
    			if (removeRefineEffect)
    			{
    				__ClearArmorRefineEffect();
    			}
    
    			for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
    			{
    				if (strcmp(shiningTable.szShinings[i], ""))
    				{
    					__AttachArmorShiningEffect(i, shiningTable.szShinings[i]);
    				}
    			}
    		}
    #ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    		else if (pItem->GetSubType() == CItemData::COSTUME_WEAPON)
    		{
    			__ClearWeaponShiningEffect();
    			if (removeRefineEffect)
    			{
    				__ClearWeaponRefineEffect();
    			}
    
    			for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
    			{
    				if (strcmp(shiningTable.szShinings[i], ""))
    				{
    					bool twoSidedWeapon = pItem->GetValue(3) == CItemData::WEAPON_DAGGER || (IsMountingHorse() && pItem->GetValue(3) == CItemData::WEAPON_FAN);
    					if (twoSidedWeapon)
    					{
    						__AttachWeaponShiningEffect(i, shiningTable.szShinings[i], "PART_WEAPON_LEFT");
    					}
    
    					if (pItem->GetValue(3) == CItemData::WEAPON_BOW)
    						__AttachWeaponShiningEffect(i, shiningTable.szShinings[i], "PART_WEAPON_LEFT");
    					else
    						__AttachWeaponShiningEffect(i, shiningTable.szShinings[i], "PART_WEAPON");
    				}
    			}
    		}
    #endif
    	}
    #endif
    	else
    	{
    		if (removeRefineEffect)
    		{
    			__ClearArmorRefineEffect();
    		}
    
    		for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
    		{
    			if (strcmp(shiningTable.szShinings[i], ""))
    			{
    				__AttachArmorShiningEffect(i, shiningTable.szShinings[i]);
    			}
    		}
    	}
    }

    paste this to end of the file:

    #ifdef ENABLE_SHINING_SYSTEM
    #ifdef ENABLE_ACCE_COSTUME_SYSTEM
    void CInstanceBase::__AttachAcceShiningEffect(int effectIndex, const char* effectFileName, const char* boneName)
    {
    	if (IsAffect(AFFECT_INVISIBILITY))
    	{
    		return;
    	}
    
    	if (effectIndex >= CItemData::ITEM_SHINING_MAX_COUNT)
    	{
    		return;
    	}
    
    	if (!strcmp(boneName, ""))
    	{
    		Tracef("Empty bone name for attaching armor shining. Effect Index: %i, EffectFileName: %s", effectIndex, effectFileName);
    		return;
    	}
    
    	CEffectManager::Instance().RegisterEffect(effectFileName, false, false);
    	m_acceShiningEffects[effectIndex] = m_GraphicThingInstance.AttachEffectByName(0, boneName, effectFileName);
    }
    #ifdef ENABLE_ACCE_COSTUME_SYSTEM
    void CInstanceBase::__ClearAcceShiningEffect(bool detaching)
    {
    	for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
    	{
    		if (detaching)
    		{
    			__DetachEffect(m_acceShiningEffects[i]);
    		}
    
    		m_acceShiningEffects[i] = 0;
    	}
    }
    #endif
    #endif

     

    Take care about #defines may I use different. Enjoy it. Cheers.

    • Metin2 Dev 1
  3. 20 hours ago, V0lvox said:

    Dont comment the fix!

    Okay i found a solution for my problem ?

    In grpRenderTargetTexture.h

    void Render() const;
    
    replace with
    
    void Render();

    in grpRenderTargetTexture.cpp

    void CGraphicRenderTargetTexture::Render() const
    {
    	D3DSURFACE_DESC desc;
    	m_lpd3dRenderTargetSurface->GetDesc(&desc);
    
    
    replace with
    
    void CGraphicRenderTargetTexture::Render()
    {
    	D3DSURFACE_DESC desc;
    	if (m_lpd3dRenderTargetSurface == nullptr)
    	{
    		CreateTextures();
    	}
    	m_lpd3dRenderTargetSurface->GetDesc(&desc);

    Somewhere it lose a Texture pointer, so I reinitalize.

     

    1 hour ago, Karbust said:

    It is working but not on everything, somehow some mounts don't get the effect:

    May thoose using relativ path and searching from current directory, check with Debug.

    • Think 1
    • Love 1
  4. Hi guys. I got a little wierd problem with rendertarget system, everything works fine till I open Itemshop

    after that client is crashing.

    After debug 

    void CGraphicRenderTargetTexture::Render() const
    {
    	D3DSURFACE_DESC desc;
    	if (m_lpd3dRenderTargetSurface == nullptr)
    		return;
    	m_lpd3dRenderTargetSurface->GetDesc(&desc);

    m_lpd3dRenderTargetSurface is came null, any idea how to fix that? Some where it lose window handle pointer.

  5. On 8/18/2019 at 5:42 PM, weryoliveira said:

    this sistem give game.core when i kill stones, why?

    I get same error, I looking for solution.

    GDB give me this.

     

    #0  0x080a87f0 in CHARACTER::Dead (this=this@entry=0x3e691000,
        pkKiller=<optimized out>, pkKiller@entry=0x0,
        bImmediateDead=bImmediateDead@entry=true) at entity.h:54
            isAgreedPVP = <optimized out>
            isUnderGuildWar = <optimized out>
            isDuel = <optimized out>
            isForked = <optimized out>
            pack = {header = 0 '\000', vid = 268435456}
            __FUNCTION__ = {<optimized out>, <optimized out>, <optimized out>,
              <optimized out>, <optimized out>}
    #1  0x080a957c in CHARACTER::Dead (this=0x3e691000, pkKiller=0x0,
        bImmediateDead=true) at char_battle.cpp:1562
            isAgreedPVP = <optimized out>
            isUnderGuildWar = <optimized out>
            isDuel = <optimized out>
            isForked = <optimized out>
            pack = {header = <optimized out>, vid = <optimized out>}
            __FUNCTION__ = {<optimized out>, <optimized out>, <optimized out>,
              <optimized out>, <optimized out>}
            g1 = <optimized out>
            g2 = <optimized out>
            iEP = <optimized out>
            buf = {<optimized out> <repeats 256 times>}
    --Type <RET> for more, q to quit, c to continue without paging--
            buf = {<optimized out> <repeats 256 times>}
            iNoPenaltyProb = <optimized out>
            f = {m_iAmount = <optimized out>, m_iCount = <optimized out>,
              m_iStep = <optimized out>, m_iKillerX = <optimized out>,
              m_iKillerY = <optimized out>}
            chResurrect = <optimized out>
            buf = {<optimized out> <repeats 51 times>}
            it = {_M_node = <optimized out>}
            pEventInfo = <optimized out>
    #2  0x08090f80 in FuncDeadSpawnedByStone::operator() (ch=0x3e691000,
        this=<synthetic pointer>) at char.cpp:5139
    No locals.
    #3  std::for_each<std::__detail::_Node_iterator<CHARACTER*, true, false>, FuncDe          adSpawnedByStone> (__f=..., __last=..., __first=...)
        at /usr/local/lib/gcc10/include/c++/bits/stl_algo.h:3844
    No locals.
    #4  CHARACTER::ClearStone (this=0x3e547000) at char.cpp:5149
            f = {<No data fields>}
    #5  0x080a9269 in CHARACTER::Dead (this=this@entry=0x3e547000,
        pkKiller=<optimized out>, pkKiller@entry=0x3e66f000,
        bImmediateDead=bImmediateDead@entry=true) at char_battle.cpp:1507
            pEventInfo = <optimized out>
            isAgreedPVP = <optimized out>
    --Type <RET> for more, q to quit, c to continue without paging--
            isUnderGuildWar = <optimized out>
            isDuel = <optimized out>
            isForked = <optimized out>
            pack = {header = 14 '\016', vid = 21572}
            __FUNCTION__ = {<optimized out>, <optimized out>, <optimized out>,
              <optimized out>, <optimized out>}
    #6  0x080aa5ea in CHARACTER::Dead (bImmediateDead=true, pkKiller=0x3e66f000,
        this=0x3e547000) at char_battle.cpp:517
            isUnderGuildWar = <optimized out>
            isDuel = <optimized out>
            isAgreedPVP = <optimized out>
            isForked = <optimized out>
            pack = {header = <optimized out>, vid = <optimized out>}
            isAgreedPVP = <optimized out>
            isUnderGuildWar = <optimized out>
            isDuel = <optimized out>
            isForked = <optimized out>
            pack = {header = <optimized out>, vid = <optimized out>}
            __FUNCTION__ = {<optimized out>, <optimized out>, <optimized out>,
              <optimized out>, <optimized out>}
            g1 = <optimized out>
            g2 = <optimized out>
            iEP = <optimized out>
    --Type <RET> for more, q to quit, c to continue without paging--
            buf = {<optimized out> <repeats 256 times>}
            buf = {<optimized out> <repeats 256 times>}
            iNoPenaltyProb = <optimized out>
            f = {m_iAmount = <optimized out>, m_iCount = <optimized out>,
              m_iStep = <optimized out>, m_iKillerX = <optimized out>,
              m_iKillerY = <optimized out>}
            chResurrect = <optimized out>
            buf = {<optimized out> <repeats 51 times>}
            it = {_M_node = <optimized out>}
            pEventInfo = <optimized out>
    #7  CHARACTER::Damage (this=<optimized out>, pAttacker=<optimized out>,
        dam=<optimized out>, type=<optimized out>) at char_battle.cpp:2177
            iCurHP = <optimized out>
            iCurSP = <optimized out>
            IsCritical = <optimized out>
            IsPenetrate = <optimized out>
            IsDeathBlow = false

     

    • Metin2 Dev 1
  6. I seen some forum, some Amd series had problem with Dx9, and they fixed with other version driver. I dont know its working for you. Other option you have upgrade to dx11. Or google it for other solution.

    Problem is transparency, amd using other dds format, for fixing this. But I think better for make two version compile one with dx8 other with  dx9 if somebody has problem with dx9.

  7. 32 minutes ago, martysama0134 said:

    https://metin2.download/picture/LTP4REmmHb3W7VT30DhnC2YuybcoB3qv/.gif

    I've loaded those languages but I can't trigger this bug.

    Check the logs\ folder if you got any .dmp, and send it to me.

    Sorry it my fault, the worleditor works perfectly, previously i changed icons with Resource hacker and its makes trouble. The orginal working with all the plugins, with my Hungarian plugin too.

    • Lmao 1
  8. On 8/24/2021 at 5:03 PM, arlinamid said:

    @martysama0134

    . I modified everywhere in the program when you can load a file from windows system and click cancel on loading windows the program crashing if you didnt select a file, just click Cancel.

    I checked it only happens if translate plugin was used.

    I checked with French and Hungarian plugin.

    giphy.gif?cid=790b7611ed603eeb102460359e

  9. Hi guys, 

    I  make a hungarian translate for WorldEditor_Remix, you can access the file here

    Spoiler

    This is the hidden content, please

    If you wanna use it in  change this line in WorldEditorRemix.ini

    LOCALE = "HU"

    If you find any mistranslated things send a message to me, I correct it. I will upload to github the whole project.

    I change some icons, Enjoy it.

     

    Hungarian translate:

    Sziasztok srácok.

    Megcsináltam a WorldEditor_remix magyarítását, az alábbi címen elérhetitek

    Spoiler

    This is the hidden content, please

    Ha használni akarjátok a WorldEditorRemix.ini -ben át kell írni az alábbi sort "EN" -ről

    LOCALE = "HU"

    Ha bármilyen félrefordítást csináltam jellezd, és javítom.

    Kicseréltem pár icont,  Használd egészséggel.

    253605WorldEditorRemix-MfcRelease-v43-sR253605WorldEditorRemix-MfcRelease-v43-Ak

    PS. For icons credits to @Tatsumaru

    • Metin2 Dev 6
    • Good 3
    • Love 2
  10. @martysama0134

    1. I found a little bug in version v43 on Fly tab if you open a load dialog and didnt choose a msf file and click cancel, the program crashing and closing automaticly.

    2. Same if you click on File tab Save collision and didnt write a file name, just click on Cancel the program crashing with file io error.

    3. I modified everywhere in the program when you can load a file from windows system and click cancel on loading windows the program crashing if you didnt select a file, just click Cancel.

  11. 1 hour ago, Tatsumaru said:

    I didn't send the PSD because it contained a lot of shit and miscellaneous (it's hard to find yourself without cleaning).
    I saved the icons in different settings and this was the only way I could get quality and smooth transitions to transparency.
    giphy.gif?cid=790b76118494bad511a58d1fb7

    This way, you get an image without a background, which you can then save in the format of your choice:
    4ssFIir.gif

     

    @Tatsumaru upload  psd to public we waiting your icons  ?

  12. 58 minutes ago, martysama0134 said:

    I was waiting for his psd for kinda 1 year ? 

    That .bmp has been saved in the wrong format. This is how you do it:

    fTlNEsv.png

    The application accepts colorscale 8bit bitmaps. The transparency is handled via c++ (very old MFC app) using the #ff00ff color.

    The size of the .bmp is 9140 bytes and should look like this:

    SW7S2Ag.png

    If you were to use this one, it will look like this:

    https://metin2.download/picture/4cN6ES4VEznwnNe1XmND92FGkT1vtlOd/.gif 

    (with so much white)

    I dont make any changes it works fine.

     231721WorldEditorRemix-MfcRelease-v43-Z6

    But, I have a question for you can I make a Hungarian translate, for Worldeditor via Resource hacker or you had something for I can translate and compile?

    And other question I working now on NavMesh(Recast/Detour) for Metin2 , I'm think it will be easily implemented into the Worldeditor, and createing navmesh files for Detour can you help me in this project.

     

  13. It looks nice, but only a begining what I expecting. Thanks for the release. 

    I am think about the collisions and its only client side, so i'm true way only  getting navmesh from client side and  checking collisions when mob moving, yes I know its hard to implement, but we look into future.?

     

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