Jump to content

razor93

Member
  • Posts

    22
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by razor93

  1. ch1 syserr:

    SYSERR: Mar 12 21:16:02.94489 :: SyncPosition: Too many SyncPosition Count(19) from Name(DDR5)
    SYSERR: Mar 12 21:16:02.414394 :: SyncPosition: Too many SyncPosition Count(20) from Name(DDR5)

    imput_main.cpp :

    	if( iCount > nCountLimit )
    	{
    		//LogManager::instance().HackLog( "SYNC_POSITION_HACK", ch );
    		sys_err( "Too many SyncPosition Count(%d) from Name(%s)", iCount, ch->GetName() );
    		//ch->GetDesc()->SetPhase(PHASE_CLOSE);
    		//return -1;
    		iCount = nCountLimit;
    	}

    any fix? please.

    Thanx for answers 🙂

    spacer.png

    • Metin2 Dev 1
  2. On 11/15/2022 at 3:42 PM, PetePeter said:

    questlua_dungeon.cpp
     

    	ALUA(dungeon_give_item)
    	{
    		if (!lua_tonumber(L, 1))
    			return 0;
    		
    		int count = 1;
    		
    		if (lua_tonumber(L, 2) > 1)
    			count = lua_tonumber(L, 2);
    		
    		CQuestManager& q = CQuestManager::instance();
    		
    		LPDUNGEON pDungeon = q.GetCurrentDungeon();
    
    		if (pDungeon)
    			pDungeon->GiveItem(lua_tonumber(L, 1), count);
    
    		return 0;
    	}
    	
    
    --------------------------------------------------
    			{"give_item2", dungeon_give_item},

     

    dungeon.cpp
     

    namespace
    {
    	struct FGiveItem
    	{
    		FGiveItem(int vnum, int count) : m_vnum(vnum), m_count(count)
    		{
    		}
    
    		void operator() (LPENTITY ent)
    		{
    			if (ent->IsType(ENTITY_CHARACTER))
    			{
    				LPCHARACTER ch = (LPCHARACTER) ent;
    				if (ch && ch->IsPC())
    				{
    					int iCount = m_count;
    					//ch->ChatPacket(CHAT_TYPE_COMMAND, "%s", m_psz);
    					const auto& item = ITEM_MANAGER::instance().CreateItem(m_vnum, m_count, 0, true);
    					if (item->IsStackable())
    					{
    						ch->AutoGiveItem(m_vnum, m_count);
    					}
    					else
    					{
    						while (iCount > 0) {
    							ch->AutoGiveItem(m_vnum, 1);
    							iCount -= 1;
    						}
    					}
    					ITEM_MANAGER::instance().DestroyItem(item);
    				}
    			}
    		}
    
    		int m_vnum;
    		int m_count;
    	};
    }
    
    void CDungeon::GiveItem(int vnum, int count)
    {
    	sys_log(0, "XXX Dungeon GiveItem %p %d %d", this, vnum, count);
    	LPSECTREE_MAP pMap = SECTREE_MANAGER::instance().GetMap(m_lMapIndex);
    
    	if (!pMap)
    	{
    		sys_err("cannot find map by index %d", m_lMapIndex);
    		return;
    	}
    	
    	FGiveItem f(vnum, count);
    	pMap->for_each(f);
    }

    dungeon.h

    	public:
    		void	GiveItem(int vnum, int count);


    quest_function

    d.give_item2

    And finally in your quest

    d.give_item2(vnum, count)

     

    I need this. Thank you

  3. On 11/12/2022 at 6:50 PM, Syreldar said:
    when 24930.kill with pc.in_dungeon() and pc.get_map_index() >= 40000 and pc.get_map_index() < 40000+10 begin -- ?????

    This check means that if there are more than 10 active instances of that specific dungeon, it'll stop working. I'd start by fixing that.

    Regarding your question, you can write this:

    d.kill_all()
    d.clear_regen()
    
    if (party.is_party()) then
    	for _, pid in ipairs({party.get_member_pids()}) do
    		q.begin_other_pc_block(pid);
    		--
    		pc.give_item2(71084, 50)
    		pc.give_item2(71085, 50)
    		pc.give_item2(70024, 5)
    		pc.give_item2(50300, 2)
    		pc.give_exp2(200000)
    		--
    		q.end_other_pc_block();
    	end -- for
    else
    	pc.give_item2(71084, 50)
    	pc.give_item2(71085, 50)
    	pc.give_item2(70024, 5)
    	pc.give_item2(50300, 2)
    	pc.give_exp2(200000)
    end -- if/else

    Although I'd write a function.

    Thank you so much 

  4.         when 24930.kill with pc.in_dungeon() and pc.get_map_index() >= 40000 and pc.get_map_index() < 40000+10 begin
                d.kill_all()
                d.clear_regen()
                pc.give_item2(71084, 50)
                pc.give_item2(71085, 50)
                pc.give_item2(70024, 5)
                pc.give_item2(50300, 2)
                pc.give_exp2(200000)
            end

     

    how can i doit? I want , how the quest give items to all player on the map.

    Thank You 
     

  5. 				GetDeltaByDegree(degree, fCrushSlidingLength, &fx, &fy);
    				sys_log(0, "CRUSH! %s -> %s (%d %d) -> (%d %d)", m_pkChr->GetName(), pkChrVictim->GetName(), pkChrVictim->GetX(), pkChrVictim->GetY(), (long)(pkChrVictim->GetX()+fx), (long)(pkChrVictim->GetY()+fy));
    				long tx = (long)(pkChrVictim->GetX()+fx);
    				long ty = (long)(pkChrVictim->GetY()+fy);

    syserr ch1

    Nov 3 19:15:52.533721 :: CRUSH! DEV -> Fekete ork óriás (740253 320337) -> (740384 320185) Nov 3 19:15:52.533799 :: CRUSH! DEV -> Fekete ork (740064 320370) -> (739864 320363) Nov 3 19:15:52.533861 :: CRUSH! DEV -> Bátor fekete ork óriás (740106 320257) -> (739967 320113) Nov 3 19:15:52.533921 :: CRUSH! DEV -> Fekete ork óriás (740085 320297) -> (739911 320196) Nov 3 19:15:52.533954 :: AddAffect Fekete ork óriás type 20 apply 0 0 flag 6 duration 4 Nov 3 19:15:52.534022 :: CRUSH! DEV -> Fekete ork (740090 320465) -> (739925 320578) Nov 3 19:15:52.534118 :: CRUSH! DEV -> Fekete ork óriás (740063 320390) -> (739863 320409) Nov 3 19:15:52.534181 :: CRUSH! DEV -> Fekete ork (740156 320353) -> (739966 320287) Nov 3 19:15:52.534228 :: CRUSH! DEV -> Fekete ork óriás (740091 320465) -> (739926 320579) Nov 3 19:15:53.813474 :: DEV: USE_SKILL: 18 pkVictim 0x0

    https://www.youtube.com/watch?v=lH-HJ8NoLeA

     

     

    • Metin2 Dev 1
  6. On 11/30/2020 at 7:47 PM, Distraught said:
    if (CGrannyLODController* pLODController = m_LODControllerVector[dwPartIndex])
    {
        if (CGrannyModelInstance* pWeaponModelInstance = pLODController->GetModelInstance())
        {
    		CGraphicThing* pItemGraphicThing = pItemData->GetModelThing();
    		if (CGrannyMotion* pItemMotion = pItemGraphicThing->GetMotionPointer(0))
    		{
    			pWeaponModelInstance->SetMotionPointer(pItemMotion);
    		}
        }
    }

    Add the code above to the end of

    void CActorInstance::AttachWeapon(DWORD dwParentPartIndex, DWORD dwPartIndex, CItemData * pItemData)

    function in ActorInstanceAttach.cpp

     

    and ThingInstance.cpp in the function 

    bool CGraphicThingInstance::SetMotion(DWORD dwMotionKey, float blendTime, int loopCount, float speedRatio)

    modify 

    std::for_each(m_LODControllerVector.begin(), m_LODControllerVector.end(), SetMotionPointer);

    to

    for (int i = 0; i < m_LODControllerVector.size(); ++i)
    {
    	switch (i)
    	{
    		case CRaceData::PART_WEAPON:
    		case CRaceData::PART_WEAPON_LEFT:
    			break;
    
    		default:
    			SetMotionPointer(m_LODControllerVector[i]);
    			break;
    	}
    }

    and add these to the includes

    #include "../GameLib/GameType.h"
    #include "../GameLib/RaceData.h"

    to make it work when the weapon is equipped. 💁‍♂️💁‍♂️

     

    anim-weap-just-flexin-its-for-next-chris

     

    its working. Thank you so munch

    • Metin2 Dev 1
    • Angry 1
  7. On 3/26/2021 at 8:55 AM, arlinamid said:

    For Acce you have to enabled in motion in 2  files.

    ActorInstanceAttach.cpp in function  CActorInstance::AttachAcce insert this code at the end of the function.

    	if (CGrannyLODController* pLODController = m_LODControllerVector[CRaceData::PART_ACCE])
    	{
    		if (CGrannyModelInstance* pWeaponModelInstance = pLODController->GetModelInstance())
    		{
    			CGraphicThing* pItemGraphicThing = pItemData->GetModelThing();
    			if (std::shared_ptr<CGrannyMotion> pItemMotion = pItemGraphicThing->GetMotionPointer(0))
    			{
    				pWeaponModelInstance->SetMotionPointer(pItemMotion);
    			}
    		}
    	}

    https://metin2.download/picture/gQvc4889g7IDu1d4mkKV439kWUkEPC5p/.png

    and the  ThingInstance.cpp in function CGraphicThingInstance::SetMotion you have to add 

    case CRaceData::PART_ACCE:

    https://metin2.download/picture/HB3r8PlsvrJj2Jd5Q722hhwSPV3788gG/.png

    I hope i can help, before this you have to add all of the tutorial part. 

     

    no working for me

    26 minutes ago, razor93 said:

     

    no working for me

    sloved :

     

     ActorInstanceAttach.cpp:

    if (std::shared_ptr<CGrannyMotion> pItemMotion = pItemGraphicThing->GetMotionPointer(0))

    change:

    if (CGrannyMotion* pItemMotion = pItemGraphicThing->GetMotionPointer(0))

    Spoiler

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