Jump to content

[TiTAN]

Member
  • Posts

    48
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by [TiTAN]

  1. While apparently this resolve the issue you've showed in the video, it's not the real fix as it will erase every skill slot you have including support, horse and guild witch Refresh Character won't handle.

     

    The real problem relays in this block of code from CPythonPlayer::NEW_ClearSkillData:

    	for (it = m_skillSlotDict.begin(); it != m_skillSlotDict.end();)
    	{
    		if (bAll || __GetSkillType(it->first) == CPythonSkill::SKILL_TYPE_ACTIVE)
    			it = m_skillSlotDict.erase(it);
    		else
    			++it;
    	}

    Long story short, somewhere in the code you have a map in witch you insert the skill index first and the associated slot second. Fucking ymir is sending the skill index to CPythonPlayer::__GetSkillType(DWORD dwSkillSlotIndex) witch expects the skill slot to find the skill index to retrive skill data! Funny, no?

     

    The fix:

    Replace 

    if (bAll || __GetSkillType(it->first) == CPythonSkill::SKILL_TYPE_ACTIVE)

    With

    if (bAll || __GetSkillType(it->second) == CPythonSkill::SKILL_TYPE_ACTIVE)

     

  2. 2 minutes ago, Amsterdam said:

    ahh, I love these ego-filled Romanian answers 

    i fix it, I forgot that I changed something in the damage design

    Maybe you are right 🤣 i'm glad that you've fixed your issue, also sry for off-topic but i felt the need to apologieze

    • Love 1
  3. 1 hour ago, Amsterdam said:

    i fix the problem with horse but now i don't see the damage XD

    Because you have another effect registered with the same number of damage... It is really so hard to work by your own and discover how things are working?

     

    Edit: to spare some minutes from your life, because this seems to be the only thing you want just comment these as you are not using them anyways

              {pkBase.EFFECT_REFINED + 21, "Bip01", "D:/ymir work/pc/common/effect/armor/armor-5-1.mse"},
              {pkBase.EFFECT_REFINED + 22, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_7th_01.mse"},

     

  4. For 1. Textures blurring out when prompting any UAC check. :

    Problem is indeed the device reset on UAC how Trial stated, but even if we reapply anisotropic the outcome will be the same! (blurry textures and shadows) The reason for that is (at least in my case) the path and shadow textures will be sampled using D3DTEXF_LINEAR wich we are only using for MIP not for MAG nor MIN! The fix?

    Get rid of that statements:

    	if (d3dCaps.TextureFilterCaps & D3DPTFILTERCAPS_MAGFANISOTROPIC)
    		m_dwBestMagFilter = D3DTEXF_ANISOTROPIC;
    	else
    		m_dwBestMagFilter = D3DTEXF_LINEAR;
    
    	if (d3dCaps.TextureFilterCaps & D3DPTFILTERCAPS_MINFANISOTROPIC)
    		m_dwBestMinFilter = D3DTEXF_ANISOTROPIC;
    	else
    		m_dwBestMinFilter = D3DTEXF_LINEAR;

    And initialize m_dwBestMinFilter and m_dwBestMagFilter directly with D3DTEXF_ANISOTROPIC like:

    CStateManager::CStateManager(LPDIRECT3DDEVICE9 lpDevice) : m_lpD3DDev(NULL)
    {
    	m_bScene = false;
    	m_dwBestMinFilter = D3DTEXF_ANISOTROPIC;
    	m_dwBestMagFilter = D3DTEXF_ANISOTROPIC;
    	SetDevice(lpDevice);
    }

     

    Late Merry Christmas to everyone!

    • Metin2 Dev 3
  5. Your approach is wrong...

    I've fixed it by changing case POINT_MOV_SPEED from ::PointChange like:

    		case POINT_MOV_SPEED:
    			if (FindAffect(AFFECT_WAR_FLAG))
    				SetPoint(type, FindAffect(AFFECT_WAR_FLAG)->lApplyValue);
    			else
    				SetPoint(type, GetPoint(type) + amount);
    			val = GetPoint(type);
    			break;

    Ofc there should exist a better way, but i'll stick with that.

    Don't forget to change 50 - f.m_pkChrFind->GetPoint(POINT_MOV_SPEED) part as if your movment speed is greater than 50 will become negative, for me a fixed value works the best, you can use std::min or smth but i guess all players should have the same speed with the flag.

  6. As vegas fix is not complete, i quickly made up this shit that at least works, i will rewrite it when i have some time:

    	def __SelectSkillGroup(self, pageIndex):
    		for pageButton in self.skillGroupButton:
    			pageButton.SetUp()
    
    		self.skillGroupButton[pageIndex].Down()
    
    		if self.__CanUseHorseSkill():
    			if 0 == pageIndex:
    				pageIndex = net.GetMainActorSkillGroup()-1
    			elif 1 == pageIndex:
    				pageIndex = self.PAGE_HORSE
    		else:
    			skillGroupIndex = net.GetMainActorSkillGroup()
    			if bool(skillGroupIndex):
    				(tmpCurSkillGroup, tmpSkillGroup) = (skillGroupIndex - 1, skillGroupIndex)
    			else:
    				(tmpCurSkillGroup, tmpSkillGroup) = (pageIndex, pageIndex + 1)
    
    		if self.__CanUseHorseSkill():
    			self.curSelectedSkillGroup = pageIndex
    			self.__SetSkillSlotData(net.GetMainActorRace(), pageIndex+1, net.GetMainActorEmpire())
    		else:
    			self.curSelectedSkillGroup = tmpCurSkillGroup
    			self.__SetSkillSlotData(net.GetMainActorRace(), tmpSkillGroup, net.GetMainActorEmpire())
    
    		self.RefreshSkill()

     

    LE: We maybe need 3rd button because you will not be able to use horse skills if you have them when no skill group selected

  7. void CInputDB::LoginSuccess(DWORD dwHandle, const char *data)
    {
    	sys_log(0, "LoginSuccess");
    
    	TAccountTable * pTab = (TAccountTable *) data;
    
    	LPDESC d = DESC_MANAGER::instance().FindByHandle(dwHandle);
    
    	if (!d)
    	{
    		sys_log(0, "CInputDB::LoginSuccess - cannot find handle [%s]", pTab->login);
    
    		TLogoutPacket pack;
    
    		strlcpy(pack.login, pTab->login, sizeof(pack.login));
    		db_clientdesc->DBPacket(HEADER_GD_LOGOUT, dwHandle, &pack, sizeof(pack));
    		return;
    	}
    
    	if (strcmp(pTab->status, "OK")) // if not ok
    	{
    		sys_log(0, "CInputDB::LoginSuccess - status[%s] is not OK [%s]", pTab->status, pTab->login);
    
    		TLogoutPacket pack;
    
    		strlcpy(pack.login, pTab->login, sizeof(pack.login));
    		db_clientdesc->DBPacket(HEADER_GD_LOGOUT, dwHandle, &pack, sizeof(pack));
    
    		LoginFailure(d, pTab->status);
    		return;
    	}
    
    	const bool bFound{ GetServerLocation(*pTab, pTab->bEmpire) };
    
    	d->BindAccountTable(pTab);
    
    	if (bFound)
    	{
    		TPacketGCEmpire pe;
    		pe.bHeader = HEADER_GC_EMPIRE;
    		pe.bEmpire = d->GetEmpire();
    		d->Packet(&pe, sizeof(pe));
    	}
    
    	d->SendLoginSuccessPacket();
    	d->SetPhase(PHASE_SELECT);
    
    	sys_log(0, "InputDB::LoginSucces: account.login: %s", pTab->login);
    }

     

    With this if you don't have an assigned empire on your account, at login you will be prompted directly to empire select. (use it with empire reselect feature disabled, with it enabled you will trigger double empire selection on an account with all slots free)

  8. Idk if it's ok, but for me this way is more convenient:

    PythonPlayer.h
    under
    DWORD					m_dwAutoAttackTargetVID;
    add
    bool					m_bIsAutoAttack;
    
    PythonPlayerInput.cpp
    Modify if (rkInstMain.IsAttackableInstance(rkInstVictim)) from __OnPressActor like:
    if (rkInstMain.IsAttackableInstance(rkInstVictim))
    {
      __SetAutoAttackTargetActorID(rkInstVictim.GetVirtualID());
      m_bIsAutoAttack = true;
    }
    
    PythonPlayerInputKeyboard.cpp
    add
    if (m_bIsAutoAttack)
    {
      __ClearAutoAttackTargetActorID();
      m_bIsAutoAttack = false;
    }
    
    under
    void CPythonPlayer::NEW_SetMultiDirKeyState(bool isLeft, bool isRight, bool isUp, bool isDown)
    {

    This way you can cancel your auto attacks using keyboard w a s d keys

    • Metin2 Dev 1
    • Good 1
  9. This is the hidden content, please

     

    ChatGPT Say :

    Quote

    The error message you mentioned, "Plugin 'InnoDB' registration as a STORAGE ENGINE failed," typically occurs in database systems that use the InnoDB storage engine. The InnoDB engine is widely used in database management systems like MySQL.

    There are a few potential causes and solutions for this error:

    Missing or disabled plugin: The InnoDB storage engine may not be installed or enabled in your database system. You can verify this by checking the list of installed plugins or running a command to enable the InnoDB plugin if it's already installed.

    Incompatible version: The version of the InnoDB storage engine you have installed might be incompatible with your database management system. In such cases, you might need to upgrade or downgrade either the InnoDB plugin or the database system itself to ensure compatibility.

    Configuration issues: There could be configuration problems related to the InnoDB storage engine. Check your database configuration files (e.g., my.cnf for MySQL) to ensure that the necessary settings for InnoDB are correctly specified.

    File system or disk space issues: If the underlying file system where your database resides has issues or if there is insufficient disk space, it can cause problems with the InnoDB storage engine. Ensure that your file system is healthy and has enough free space for the database to operate.

    Corrupted installation: It's also possible that your InnoDB installation is corrupted or damaged. In such cases, you may need to reinstall or repair the InnoDB storage engine.

    To troubleshoot and resolve this error, it's recommended to consult the documentation specific to your database management system, such as MySQL, and follow the guidelines provided there. Additionally, searching for the exact error message along with the name of your database system can often lead to forum threads or articles where others have encountered and resolved similar issues.

     

    • Metin2 Dev 8
    • Good 4
    • muscle 1
    • Love 5
×
×
  • 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.