Jump to content

Kenny1337

Inactive Member
  • Posts

    32
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by Kenny1337

  1. Hi, i have one problem. When i wear costume weapon, then wear on invisible slot. :/

    i have sash and costume system only, my gametype.h:

    #ifdef ENABLE_COSTUME_SYSTEM
    	const DWORD c_Costume_Slot_Start = c_Equipment_Start + 19;
    	const DWORD	c_Costume_Slot_Body = c_Costume_Slot_Start + 0;
    	const DWORD	c_Costume_Slot_Hair = c_Costume_Slot_Start + 1;
    	//const DWORD	c_Costume_Slot_Acce = c_Costume_Slot_Start + 2;
    	const DWORD	c_Costume_Slot_Mount = c_Costume_Slot_Start + 3;
    	#ifdef ENABLE_COSTUME_WEAPON
    	const DWORD	c_Costume_Slot_Weapon = c_Costume_Slot_Start + 1;
    	const DWORD c_Costume_Slot_Count = 5;
    	#else
    	const DWORD c_Costume_Slot_Count = 4;
    	#endif
    	const DWORD c_Costume_Slot_End = c_Costume_Slot_Start + c_Costume_Slot_Count;
    #endif

    &

    #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
    	#ifdef ENABLE_COSTUME_WEAPON
    	const DWORD c_New_Equipment_Start = c_Equipment_Start + 23;
    	#else
    	const DWORD c_New_Equipment_Start = c_Equipment_Start + 23;
    	#endif
    	const DWORD c_New_Equipment_Count = 3;
    	const DWORD c_Equipment_Ring1 = c_New_Equipment_Start + 0;
    	const DWORD c_Equipment_Ring2 = c_New_Equipment_Start + 1;
    	const DWORD c_Equipment_Belt  = c_New_Equipment_Start + 2;
    #endif

     

    and lenght.h 

    	WEAR_BODY,		// 0
    	WEAR_HEAD,		// 1
    	WEAR_FOOTS,		// 2
    	WEAR_WRIST,		// 3
    	WEAR_WEAPON,	// 4
    	WEAR_NECK,		// 5
    	WEAR_EAR,		// 6
    	WEAR_UNIQUE1,	// 7
    	WEAR_UNIQUE2,	// 8
    	WEAR_ARROW,		// 9
    	WEAR_SHIELD,	// 10
        WEAR_ABILITY1,  // 11
        WEAR_ABILITY2,  // 12
        WEAR_ABILITY3,  // 13
        WEAR_ABILITY4,  // 14
        WEAR_ABILITY5,  // 15
        WEAR_ABILITY6,  // 16
        WEAR_ABILITY7,  // 17
        WEAR_ABILITY8,  // 18
    	WEAR_COSTUME_BODY,	// 19
    	WEAR_COSTUME_HAIR,	// 20
    	WEAR_COSTUME_ACCE, // 21
    #ifdef COSTUME_WEAPON
    	WEAR_COSTUME_WEAPON,//22
    #endif
    	WEAR_COSTUME_MOUNT, // 23
    	WEAR_RING1,			// 24	: 신규 반지슬롯1 (왼쪽)
    	WEAR_RING2,			// 25	: 신규 반지슬롯2 (오른쪽)
    
    	WEAR_BELT,			// 26	: 신규 벨트슬롯
    
    	WEAR_MAX = 32	// 

     

  2. core game

    #0  0x0849645d in CAttribute::Get ()
    #1  0x081fd64d in SECTREE::IsAttr (this=0x417c1140, x=17260863, y=17273216,
        dwFlag=129) at sectree.cpp:210
    #2  0x081ffaf2 in SECTREE_MANAGER::IsMovablePosition (this=0xffff98e8,
        lMapIndex=56, x=17260863, y=17273216) at sectree_manager.cpp:825
    #3  0x080d7e65 in CHARACTER::__StateIdle_Monster (this=0x6d253000)
        at char_state.cpp:714
    #4  0x08076328 in CHARACTER::UpdateStateMachine (this=0x6d253000,
        dwPulse=486299) at char.cpp:4138
    #5  0x080bdd04 in std::for_each<__gnu_cxx::__normal_iterator<CHARACTER**, std::v               ector<CHARACTER*, std::allocator<CHARACTER*> > >, std::binder2nd<std::mem_fun1_t               <void, CHARACTER, unsigned int> > > (__first={_M_current = 0x47fbb800}, __last=
          {_M_current = 0x47fbc840}, __f=
          {<std::unary_function<CHARACTER*,void>> = {<No data fields>}, op = {<std::               binary_function<CHARACTER*,unsigned int,void>> = {<No data fields>}, _M_f = {__p               fn = 0x80762d0 <CHARACTER::UpdateStateMachine(unsigned int)>, __delta = 0}}, val               ue = 486299}) at stl_function.h:656
    #6  0x080bd761 in CHARACTER_MANAGER::Update (this=0xffffb5fc, iPulse=486299)
        at char_manager.cpp:695
    #7  0x0826cf98 in idle () at main.cpp:931
    #8  0x0826e636 in main (argc=1, argv=0xffffcbfc) at main.cpp:603

     

  3. 24 minuty temu, Den napisał:

    Show your char.cpp line 5239. You probably killed a mob that respawns with 0hp.

    void CHARACTER::BroadcastTargetPacket()
    {
        if (m_set_pkChrTargetedBy.empty())
            return;

        TPacketGCTarget p;

        p.header = HEADER_GC_TARGET;
        p.dwVID = GetVID();

        if (IsPC())
            p.bHPPercent = 0;
        else
            p.bHPPercent = MINMAX(0, (GetHP() * 100) / GetMaxHP(), 100);    --- 5239 line

        CHARACTER_SET::iterator it = m_set_pkChrTargetedBy.begin();

        while (it != m_set_pkChrTargetedBy.end())
        {
            LPCHARACTER pkChr = *it++;

            if (!pkChr->GetDesc())
            {
                sys_err("%s %p does not have desc", pkChr->GetName(), get_pointer(pkChr));
                abort();
            }

            pkChr->GetDesc()->Packet(&p, sizeof(TPacketGCTarget));
        }
    }

     

     

    hmm, i checked mob_proto and have one monster with 0hp... vnum 0, no name etc. 

    i removed it and will check if the problem then appear again

  4.  

    sysser/syslog is clear

     

    core: 

     

    	#0  0x0807c84c in CHARACTER::BroadcastTargetPacket (this=0x301dc800)
        at char.cpp:5239
            p = {header = 63 '?', dwVID = 4672, bHPPercent = 0 '\0'}
            it = {<std::tr1::__detail::_Hashtable_iterator_base<CHARACTER*,false>> = {_M_cur_node = 0xbfbf9df8, _M_cur_bucket = 0x82355d9}, <No data fields>}
            __FUNCTION__ = "BroadcastTargetPacket"
    #1  0x08082ce8 in CHARACTER::PointChange (this=0x301dc800, type=5 '\005',
        amount=-2874, bAmount=false, bBroadcast=false) at char.cpp:3284
            prev_hp = 0
            val = -2874
            __FUNCTION__ = "PointChange"
    #2  0x08099011 in CHARACTER::Damage (this=0x301dc800, pAttacker=0x99101800,
        dam=2874, type=DAMAGE_TYPE_NORMAL) at char_battle.cpp:2293
            pkSk = <value optimized out>
            iCriticalPct = <value optimized out>
            iPenetratePct = <value optimized out>
            iCurHP = 0
            iCurSP = 0
            IsCritical = false
            IsPenetrate = true
            IsDeathBlow = false
    #3  0x08062f62 in battle_hit (pkAttacker=0x99101800, pkVictim=0x301dc800,
        iRetDam=@0xbfbfa034) at battle.cpp:690
    	            iDam = <value optimized out>
            pkWeapon = <value optimized out>
    #4  0x08063220 in battle_melee_attack (ch=0x99101800, victim=0x301dc800)
        at battle.cpp:165
            max = 300
            distance = 136
            dam = 1807
            ret = <value optimized out>
    #5  0x0809a449 in CHARACTER::Attack (this=0x99101800, pkVictim=0x301dc800,
        bType=0 '\0') at char_battle.cpp:227
            dwCurrentTime = 823674
            iRet = <value optimized out>
            __FUNCTION__ = "Attack"
    #6  0x081576e4 in CInputMain::Attack (this=0x4b3bf09c, ch=0x99101800,
        header=2 '\002', data=0x537dd000 "\002") at input_main.cpp:1837
            victim = 0x301dc800
    #7  0x0815dae5 in CInputMain::Analyze (this=0x4b3bf09c, d=0x4b3bf000,
        bHeader=<value optimized out>, c_pData=0x537dd000 "\002")
        at input_main.cpp:3219
            ch = 0x99101800
            iExtraLen = <value optimized out>
            __FUNCTION__ = "Analyze"
    #8  0x081466cb in CInputProcessor::Process (this=0x4b3bf09c,
     
    	
  5. 12 minut temu, Arkaico napisał:

    The name of the quest: https://metin2.download/picture/DTwSrqfmMJO04SXO6GH57F51Xxmqjb7h/.png

    Quest: https://metin2.download/picture/7p0kuqaNmpTws55KmvAgQBPPMDqUR2i5/.png

    Error: https://metin2.download/picture/08sE0WznDA6EcS7s353LXuEBAb2FKWA8/.png

    Quest complete:

     

      Odkryj ukrytą treść

     

    quest achievementsystem begin
        state start begin
            
            when login begin
                cmdchat("ACHIEVEMENTS QID#"..q.getcurrentquestindex())
                achievements.check_if_first()
                achievements.create_categorys()
                achievements.load_achievements()
                achievements.load_last_finished_achievements()
                achievements.set_achievementshop_categories()
                achievements.load_achievementshop_items()
                loop_timer('achievements_level_flogin_check', 5)
                loop_timer('achievementstime_achievements_flogin_check', 1)
            end
            
            when logout or disconnect begin
                cleartimer('time_achievements')
            end
            
            when button begin
                cmdchat('ACHIEVEMENTS INPUT#1')
                local ashop = split(input(cmdchat('ACHIEVEMENTS SEND#')), '#')
                cmdchat('ACHIEVEMENTS INPUT#0')
                if ashop[1] == 'BUY_ITEM' then
                    achievements.buy_achievementshop_item(tonumber(ashop[2]), tonumber(ashop[3]))
                end
            end
            
            when levelup begin
                local info_level = achievements.get_next_achievement("level", 'Level')
                if type(info_level) ~= 'table' then return end
                cmdchat(string.format('ACHIEVEMENTS UPDATE_ACHIEVEMENT#%d#%d', 1, pc.get_level()))
                cmdchat('ACHIEVEMENTS REFRESH_ACHIEVEMENTS#')
                if pc.get_level() >= info_level[1] then
                    achievements.set_finished(1, info_level[1], info_level[2], 0)
                    achievements.set_ap(info_level[2])
                    achievements.setf("level", achievements.getf("level")+1)
                end
            end    
            
            when kill with not npc.is_pc() and not npc.is_boss() and not npc.is_metin() begin
                local npcRace = npc.get_race()
                local achievementMobInfo,mobInfo,mobKills = achievements.getAchievementInfo(npcRace, 'Mobs'),achievements.getf(string.format("mob_info_%d", npcRace))+1,achievements.getf(string.format("mob_kills_%d", npcRace))+1
                if table.getn(achievementMobInfo) < mobInfo then return end
                cmdchat('ACHIEVEMENTS UPDATE_ACHIEVEMENT#2#'..mobKills..'#'..npcRace)
                cmdchat('ACHIEVEMENTS REFRESH_ACHIEVEMENTS#')
                achievementMobInfo = achievementMobInfo[mobInfo]
                achievements.setf(string.format("mob_kills_%d", npcRace), mobKills)
                if mobKills >= achievementMobInfo[1] then
                    achievements.set_finished(2, achievementMobInfo[1], achievementMobInfo[2], npcRace)
                    achievements.set_ap(achievementMobInfo[2])
                    achievements.setf(string.format("mob_info_%d", npcRace), mobInfo)
                end
            end
            
            when kill with npc.is_boss() begin
                local npcRace = npc.get_race()
                local achievementBossInfo,bossInfo,bossKills = achievements.getAchievementInfo(npcRace, 'Bosses'),achievements.getf(string.format("boss_info_%d", npcRace))+1,achievements.getf(string.format("boss_kills_%d", npcRace))+1
                if table.getn(achievementBossInfo) < bossInfo then return end
                cmdchat('ACHIEVEMENTS UPDATE_ACHIEVEMENT#3#'..bossKills..'#'..npcRace)
                cmdchat('ACHIEVEMENTS REFRESH_ACHIEVEMENTS#')
                achievementBossInfo = achievementBossInfo[bossInfo]
                achievements.setf(string.format("boss_kills_%d", npcRace), bossKills)
                if bossKills >= achievementBossInfo[1] then
                    achievements.set_finished(3, achievementBossInfo[1], achievementBossInfo[2], npcRace)
                    achievements.set_ap(achievementBossInfo[2])
                    achievements.setf(string.format("boss_info_%d", npcRace), bossInfo)
                end
            end
            
            when kill with npc.is_metin() begin
                local npcRace = npc.get_race()
                local achievementMetinInfo,metinInfo,metinKills = achievements.getAchievementInfo(npcRace, 'Metins'),achievements.getf(string.format("metin_info_%d", npcRace))+1,achievements.getf(string.format("metin_kills_%d", npcRace))+1
                if table.getn(achievementMetinInfo) < metinInfo then return end
                cmdchat('ACHIEVEMENTS UPDATE_ACHIEVEMENT#4#'..metinKills..'#'..npcRace)
                cmdchat('ACHIEVEMENTS REFRESH_ACHIEVEMENTS#')
                achievementMetinInfo = achievementMetinInfo[metinInfo]
                achievements.setf(string.format("metin_kills_%d", npcRace), metinKills)
                if metinKills >= achievementMetinInfo[1] then
                    achievements.set_finished(4, achievementMetinInfo[1], achievementMetinInfo[2], npcRace)
                    achievements.set_ap(achievementMetinInfo[2])
                    achievements.setf(string.format("metin_info_%d", npcRace), metinInfo)
                end
            end

            when kill with npc.is_pc() begin
                local pvp,info_pvp = achievements.getf("pc_kills")+1,achievements.get_next_achievement("pvp", 'Pvp')
                achievements.setf("pc_kills", pvp)
                if type(info_pvp) ~= 'table' then return end
                cmdchat(string.format('ACHIEVEMENTS UPDATE_ACHIEVEMENT#%d#%d', 6, pvp))
                cmdchat('ACHIEVEMENTS REFRESH_ACHIEVEMENTS#')
                if pvp >= info_pvp[1] then
                    achievements.set_finished(6, info_pvp[1], info_pvp[2], 0)
                    achievements.set_ap(info_pvp[2])
                    achievements.setf("pvp", achievements.getf("pvp")+1)
                end
            end

            when time_achievements.timer begin
                chat('time_achievements: 180sec')
                local info_time = achievements.get_next_achievement("time", 'PlayedTime')
                if type(info_time) ~= 'table' then return end
                cmdchat(string.format('ACHIEVEMENTS UPDATE_ACHIEVEMENT#%d#%d', 5, pc.get_playtime()))
                cmdchat('ACHIEVEMENTS REFRESH_ACHIEVEMENTS#')
                if pc.get_playtime() >= info_time[1] then
                    achievements.set_finished(5, info_time[1], info_time[2], 0)
                    achievements.set_ap(info_time[2])
                    achievements.setf("time", achievements.getf("time")+1)
                end
            end
            
            when achievementstime_achievements_flogin_check.timer begin
                cleartimer('achievementstime_achievements_flogin_check') loop_timer('achievementstime_achievements_flogin_check', 10)
                local info_time = achievements.get_next_achievement("time", 'PlayedTime')
                if type(info_time) ~= 'table' then cleartimer('achievementstime_achievements_flogin_check') loop_timer('time_achievements', 60*3) return end
                if pc.get_playtime() >= info_time[1] then
                    achievements.set_finished(5, info_time[1], info_time[2], 0)
                    achievements.set_ap(info_time[2])
                    achievements.setf("time", achievements.getf("time")+1)
                end
            end
            
            when achievements_level_flogin_check.timer begin
                local info_level = achievements.get_next_achievement("level", 'Level')
                if type(info_level) ~= 'table' then cleartimer('achievements_level_flogin_check') return end
                if pc.get_level() >= info_level[1] then
                    achievements.set_finished(1, info_level[1], info_level[2], 0)
                    achievements.set_ap(info_level[2])
                    achievements.setf("level", achievements.getf("level")+1)
                end
            end

        end
    end

     

     

     

    check name :D 

    ./qc achievementsystem.quest

    • Love 1
  6. 54 minutes ago, thespeedy said:

    how to remove fake edtion?

             First row -> Current hour | Second row -> Value added for players fake 
              Example: From 15:00 until 15:59:59 will be added on statics + 75 players online fake. Because -> { 15, 75 }
    		*/
            { 0, 190  },     { 1, 175  },    { 2, 160  },	{ 3, 140  },     { 4, 130  },    { 5, 100  },
            { 6, 80   },     { 7, 75   },    { 8, 60   },	{ 9, 55   },     { 10, 40  },    { 11, 30  },
            { 12, 50  },     { 13, 60  },    { 14, 70  },	{ 15, 75  },     { 16, 80  },    { 17, 90  },
            { 18, 105 },     { 19, 120 },    { 20, 135 },	{ 21, 155 },     { 22, 175 },    { 23, 180 }

     

     

    Edit like

     

    { 0, 0 }, { 1, 0 }, { 2, 0 },  

    • Love 1
  7. 23 hours ago, Matuszka said:

    @TreeN Nothing is his work. (I'm super sure these mounts are your works that why you replied to this topic) :D His "service" is about to sell Atreya stuff what is created by Mizune and maybe somebody else but not him. The sad thing i can't find the unpackable Atreya client in the internet. The topic with the unpacker does not have the full client just some files and just the root and maybe the locale is unpackable. So he was lucky he got the client and he can extract it and now he sell other people's work. Best service congrats :lol: Trey"Art"

    created by mizune?XD Nice joke 

  8. uitooltip.py

    search

    elif item.ITEM_TYPE_ARMOR == itemType:

     

    and add this

            elif item.ITEM_TYPE_RING == itemType:
                self.__AppendLimitInformation()
                self.__AppendAffectInformation()
                self.__AppendAttributeInformation(attrSlot)

     

     

    screen: https://metin2.download/picture/SmijjBtNePSzc9wMaboERNqdP4cFwn7Z/.png

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